[gnoduino] Update hardware to Arduino SDK 1.0.3
- From: Lucian Langa <lucilanga src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnoduino] Update hardware to Arduino SDK 1.0.3
- Date: Thu, 3 Jan 2013 00:40:40 +0000 (UTC)
commit c80fa85bf2acc3d7ccb546a66604456970e652df
Author: Pascal de Bruijn <pmjdebruijn pcode nl>
Date: Thu Jan 3 01:36:05 2013 +0100
Update hardware to Arduino SDK 1.0.3
hardware/arduino/boards.txt | 67 +-
.../ATmegaBOOT-prod-firmware-2009-11-07.hex | 66 +
hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c | 2 +-
.../arduino/bootloaders/atmega8/ATmegaBOOT.hex | 122 +-
.../arduino/bootloaders/atmega8/ATmegaBOOT.txt | 4 +
hardware/arduino/bootloaders/atmega8/Makefile | 2 +-
.../caterina-LilyPadUSB/Caterina-LilyPadUSB.hex | 259 +
.../bootloaders/caterina-LilyPadUSB/Caterina.c | 780 +
.../bootloaders/caterina-LilyPadUSB/Caterina.h | 99 +
.../bootloaders/caterina-LilyPadUSB/Descriptors.c | 260 +
.../bootloaders/caterina-LilyPadUSB/Descriptors.h | 139 +
.../bootloaders/caterina-LilyPadUSB/Makefile | 716 +
.../bootloaders/caterina-LilyPadUSB/Readme.txt | 11 +
.../bootloaders/caterina/Caterina-Esplora.hex | 1024 ++
.../bootloaders/caterina/Caterina-Esplora.txt | 6 +
.../bootloaders/caterina/Caterina-Leonardo.hex | 390 +-
.../bootloaders/caterina/Caterina-Leonardo.txt | 11 +
.../bootloaders/caterina/Caterina-Micro.hex | 1024 ++
.../bootloaders/caterina/Caterina-Micro.txt | 11 +
hardware/arduino/bootloaders/caterina/Caterina.c | 4 +-
hardware/arduino/bootloaders/caterina/Caterina.h | 15 +-
.../arduino/bootloaders/caterina/Descriptors.c | 4 +
.../caterina/Esplora-prod-firmware-2012-12-10.hex | 1024 ++
.../caterina/Esplora-prod-firmware-2012-12-10.txt | 6 +
.../caterina/Leonardo-prod-firmware-2012-04-26.hex | 1024 ++
.../caterina/Leonardo-prod-firmware-2012-04-26.txt | 11 +
.../caterina/Leonardo-prod-firmware-2012-12-10.hex | 1024 ++
.../caterina/Leonardo-prod-firmware-2012-12-10.txt | 11 +
hardware/arduino/bootloaders/caterina/Makefile | 8 +-
.../caterina/Micro-prod-firmware-2012-11-23.hex | 1024 ++
.../caterina/Micro-prod-firmware-2012-11-23.txt | 11 +
.../caterina/Micro-prod-firmware-2012-12-10.hex | 1024 ++
.../caterina/Micro-prod-firmware-2012-12-10.txt | 11 +
hardware/arduino/cores/arduino/Arduino.h | 2 +-
hardware/arduino/cores/arduino/CDC.cpp | 10 +-
hardware/arduino/cores/arduino/HardwareSerial.cpp | 125 +-
hardware/arduino/cores/arduino/HardwareSerial.h | 36 +-
hardware/arduino/cores/arduino/Tone.cpp | 31 +-
hardware/arduino/cores/arduino/USBCore.cpp | 14 +-
hardware/arduino/cores/arduino/WString.h | 2 +-
hardware/arduino/cores/arduino/wiring_analog.c | 2 +-
hardware/arduino/cores/arduino/wiring_private.h | 2 +-
...INED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex | 467 +
...BINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex | 467 +
...-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex | 467 +
.../atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex | 234 +
hardware/arduino/firmwares/atmegaxxu2/README.txt | 33 +
.../atmegaxxu2/UNO-dfu_and_usbserial_combined.hex | 234 +
.../atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c | 728 +
.../atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h | 220 +
.../atmegaxxu2/arduino-usbdfu/Board/LEDs.h | 110 +
.../atmegaxxu2/arduino-usbdfu/Descriptors.c | 189 +
.../atmegaxxu2/arduino-usbdfu/Descriptors.h | 177 +
.../firmwares/atmegaxxu2/arduino-usbdfu/makefile | 710 +
.../firmwares/atmegaxxu2/arduino-usbdfu/readme.txt | 7 +
.../Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex | 254 +
.../Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex | 254 +
.../Arduino-usbserial-atmega16u2-Uno-Rev3.hex | 254 +
.../arduino-usbserial/Arduino-usbserial-mega.hex | 256 +
.../arduino-usbserial/Arduino-usbserial-uno.hex | 256 +
.../arduino-usbserial/Arduino-usbserial.c | 242 +
.../arduino-usbserial/Arduino-usbserial.h | 79 +
.../atmegaxxu2/arduino-usbserial/Board/LEDs.h | 110 +
.../atmegaxxu2/arduino-usbserial/Descriptors.c | 277 +
.../atmegaxxu2/arduino-usbserial/Descriptors.h | 88 +
.../arduino-usbserial/Lib/LightweightRingBuff.h | 197 +
.../atmegaxxu2/arduino-usbserial/makefile | 776 +
.../atmegaxxu2/arduino-usbserial/readme.txt | 13 +
.../arduino/firmwares/wifishield/binary/wifiHD.elf | Bin 0 -> 397640 bytes
.../arduino/firmwares/wifishield/binary/wifiHD.hex |16109 ++++++++++++++++
.../firmwares/wifishield/binary/wifiHD_2_1.elf | Bin 0 -> 1308530 bytes
.../firmwares/wifishield/binary/wifi_dnld.elf | Bin 0 -> 182489 bytes
.../firmwares/wifishield/binary/wifi_dnld.hex |10470 +++++++++++
.../firmwares/wifishield/binary/wifi_dnld_2_1.elf | Bin 0 -> 182264 bytes
.../scripts/ArduinoWifiShield_upgrade.sh | 96 +
.../scripts/ArduinoWifiShield_upgrade_mac.sh | 96 +
.../arduino/firmwares/wifishield/wifiHD/.cproject | 4045 ++++
.../arduino/firmwares/wifishield/wifiHD/.project | 77 +
.../firmwares/wifishield/wifiHD/Release/wifiHD.elf | Bin 0 -> 397640 bytes
.../wifishield/wifiHD/src/CONFIG/conf_access.h | 170 +
.../wifishield/wifiHD/src/CONFIG/conf_at45dbx.h | 83 +
.../wifishield/wifiHD/src/CONFIG/conf_ebi.h | 108 +
.../wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h | 73 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x | 74 +
.../SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h | 236 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c | 346 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h | 191 +
.../SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h | 433 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c | 346 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h | 187 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h | 120 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my | 120 +
.../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c | 653 +
.../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h | 270 +
.../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c | 234 +
.../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h | 164 +
.../HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a | Bin 0 -> 11978 bytes
.../HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a | Bin 0 -> 13134 bytes
.../UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a | Bin 0 -> 1007102 bytes
.../HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a | Bin 0 -> 11946 bytes
.../HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a | Bin 0 -> 13110 bytes
.../UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a | Bin 0 -> 1004426 bytes
.../COMPONENTS/WIFI/HD/v2.7.0/revision.txt | 1 +
.../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h | 1687 ++
.../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h |19287 ++++++++++++++++++++
.../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h | 35 +
.../COMPONENTS/WIFI/HD/wl_sdio.h | 172 +
.../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h | 185 +
.../COMPONENTS/WIFI/HD/wlap_api.h | 154 +
.../DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h | 309 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c | 995 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h | 68 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c | 183 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h | 275 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c | 1117 ++
.../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h | 1002 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c | 458 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h | 583 +
.../SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x | 239 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c | 214 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h | 100 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c | 296 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h | 251 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c | 546 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h | 493 +
.../SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c | 268 +
.../DRIVERS/PM/power_clocks_lib.c | 566 +
.../DRIVERS/PM/power_clocks_lib.h | 379 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c | 213 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h | 191 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c | 443 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h | 342 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c | 314 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h | 591 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c | 914 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h | 889 +
.../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c | 87 +
.../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h | 80 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c | 1724 ++
.../SERVICES/LWIP/lwip-1.3.2/src/core/dns.c | 982 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/init.c | 276 +
.../LWIP/lwip-1.3.2/src/core/ipv4/autoip.c | 499 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c | 333 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c | 759 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c | 280 +
.../LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c | 440 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c | 725 +
.../LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c | 86 +
.../LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c | 794 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/mem.c | 635 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/memp.c | 388 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/netif.c | 683 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c | 931 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/raw.c | 355 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/stats.c | 151 +
.../SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c | 1463 ++
.../SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c | 1508 ++
.../SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c | 1071 ++
.../SERVICES/LWIP/lwip-1.3.2/src/core/udp.c | 843 +
.../LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h | 118 +
.../LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h | 113 +
.../LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h | 164 +
.../LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h | 105 +
.../lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h | 62 +
.../LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h | 200 +
.../lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h | 175 +
.../lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h | 78 +
.../LWIP/lwip-1.3.2/src/include/lwip/api.h | 224 +
.../LWIP/lwip-1.3.2/src/include/lwip/api_msg.h | 164 +
.../LWIP/lwip-1.3.2/src/include/lwip/arch.h | 235 +
.../LWIP/lwip-1.3.2/src/include/lwip/debug.h | 100 +
.../LWIP/lwip-1.3.2/src/include/lwip/def.h | 49 +
.../LWIP/lwip-1.3.2/src/include/lwip/dhcp.h | 248 +
.../LWIP/lwip-1.3.2/src/include/lwip/dns.h | 99 +
.../LWIP/lwip-1.3.2/src/include/lwip/err.h | 89 +
.../LWIP/lwip-1.3.2/src/include/lwip/init.h | 74 +
.../LWIP/lwip-1.3.2/src/include/lwip/mem.h | 109 +
.../LWIP/lwip-1.3.2/src/include/lwip/memp.h | 118 +
.../LWIP/lwip-1.3.2/src/include/lwip/memp_std.h | 104 +
.../LWIP/lwip-1.3.2/src/include/lwip/netbuf.h | 88 +
.../LWIP/lwip-1.3.2/src/include/lwip/netdb.h | 113 +
.../LWIP/lwip-1.3.2/src/include/lwip/netif.h | 265 +
.../LWIP/lwip-1.3.2/src/include/lwip/netifapi.h | 107 +
.../LWIP/lwip-1.3.2/src/include/lwip/opt.h | 1842 ++
.../LWIP/lwip-1.3.2/src/include/lwip/pbuf.h | 122 +
.../LWIP/lwip-1.3.2/src/include/lwip/raw.h | 99 +
.../LWIP/lwip-1.3.2/src/include/lwip/sio.h | 143 +
.../LWIP/lwip-1.3.2/src/include/lwip/snmp.h | 366 +
.../LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h | 103 +
.../LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h | 313 +
.../lwip-1.3.2/src/include/lwip/snmp_structs.h | 264 +
.../LWIP/lwip-1.3.2/src/include/lwip/sockets.h | 359 +
.../LWIP/lwip-1.3.2/src/include/lwip/stats.h | 285 +
.../LWIP/lwip-1.3.2/src/include/lwip/sys.h | 245 +
.../LWIP/lwip-1.3.2/src/include/lwip/tcp.h | 709 +
.../LWIP/lwip-1.3.2/src/include/lwip/tcpip.h | 143 +
.../LWIP/lwip-1.3.2/src/include/lwip/udp.h | 155 +
.../LWIP/lwip-1.3.2/src/include/netif/etharp.h | 194 +
.../LWIP/lwip-1.3.2/src/include/netif/loopif.h | 55 +
.../LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h | 163 +
.../LWIP/lwip-1.3.2/src/include/netif/slipif.h | 53 +
.../SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c | 1224 ++
.../SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c | 68 +
.../LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h | 79 +
.../LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h | 7 +
.../LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h | 426 +
.../lwip-port-1.3.2/HD/if/include/netif/wlif.h | 10 +
.../LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c | 386 +
.../SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt | 1 +
.../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c | 571 +
.../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h | 369 +
.../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c | 119 +
.../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h | 116 +
.../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c | 215 +
.../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h | 294 +
.../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h | 63 +
.../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h | 120 +
.../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h | 82 +
.../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h | 174 +
.../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h | 208 +
.../libnewlib_addons-at32ucr2-speed_opt.a | Bin 0 -> 25540 bytes
.../AT32UC3A/0512/GCC/link_uc3a0512.lds | 266 +
.../AT32UC3A/1256/GCC/link_uc3a1256.lds | 266 +
.../UTILS/PREPROCESSOR/mrepeat.h | 328 +
.../UTILS/PREPROCESSOR/preprocessor.h | 55 +
.../UTILS/PREPROCESSOR/stringz.h | 75 +
.../SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h | 95 +
.../UTILS/STARTUP_FILES/GCC/crt0.x | 121 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h | 1145 ++
.../wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h | 136 +
.../wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h | 203 +
.../firmwares/wifishield/wifiHD/src/ard_spi.c | 1750 ++
.../firmwares/wifishield/wifiHD/src/ard_spi.h | 70 +
.../firmwares/wifishield/wifiHD/src/ard_tcp.c | 905 +
.../firmwares/wifishield/wifiHD/src/ard_tcp.h | 71 +
.../firmwares/wifishield/wifiHD/src/ard_utils.c | 196 +
.../firmwares/wifishield/wifiHD/src/ard_utils.h | 267 +
.../firmwares/wifishield/wifiHD/src/avr32_spi.c | 394 +
.../firmwares/wifishield/wifiHD/src/board_init.c | 297 +
.../firmwares/wifishield/wifiHD/src/board_init.h | 313 +
.../firmwares/wifishield/wifiHD/src/cmd_wl.c | 635 +
.../firmwares/wifishield/wifiHD/src/cmd_wl.h | 63 +
.../firmwares/wifishield/wifiHD/src/console.c | 212 +
.../firmwares/wifishield/wifiHD/src/console.h | 46 +
.../firmwares/wifishield/wifiHD/src/debug.h | 109 +
.../firmwares/wifishield/wifiHD/src/fw_download.h | 38 +
.../wifishield/wifiHD/src/fw_download_extflash.c | 82 +
.../firmwares/wifishield/wifiHD/src/license.txt | 42 +
.../firmwares/wifishield/wifiHD/src/lwip_setup.c | 145 +
.../firmwares/wifishield/wifiHD/src/lwip_setup.h | 21 +
.../firmwares/wifishield/wifiHD/src/lwipopts.h | 450 +
.../arduino/firmwares/wifishield/wifiHD/src/main.c | 455 +
.../firmwares/wifishield/wifiHD/src/nvram.c | 153 +
.../firmwares/wifishield/wifiHD/src/nvram.h | 10 +
.../firmwares/wifishield/wifiHD/src/owl_os.c | 140 +
.../arduino/firmwares/wifishield/wifiHD/src/ping.c | 340 +
.../arduino/firmwares/wifishield/wifiHD/src/ping.h | 45 +
.../wifishield/wifiHD/src/printf-stdarg.c | 323 +
.../wifishield/wifiHD/src/printf-stdarg.h | 34 +
.../firmwares/wifishield/wifiHD/src/timer.c | 232 +
.../firmwares/wifishield/wifiHD/src/timer.h | 51 +
.../firmwares/wifishield/wifiHD/src/top_defs.h | 120 +
.../firmwares/wifishield/wifiHD/src/trace.h | 44 +
.../arduino/firmwares/wifishield/wifiHD/src/util.c | 260 +
.../arduino/firmwares/wifishield/wifiHD/src/util.h | 71 +
.../firmwares/wifishield/wifiHD/src/wifi_spi.h | 152 +
.../firmwares/wifishield/wifiHD/src/wl_cm.c | 437 +
.../firmwares/wifishield/wifiHD/src/wl_cm.h | 51 +
.../wifishield/wifiHD/src/wl_definitions.h | 39 +
.../firmwares/wifishield/wifi_dnld/.cproject | 1281 ++
.../firmwares/wifishield/wifi_dnld/.project | 70 +
.../wifishield/wifi_dnld/Release/wifi_dnld.elf | Bin 0 -> 182489 bytes
.../wifishield/wifi_dnld/src/CONFIG/conf_access.h | 170 +
.../wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h | 83 +
.../wifi_dnld/src/Doc/SPB104 product brief.pdf | Bin 0 -> 760252 bytes
.../wifi_dnld/src/Doc/gettingstarted.pdf | Bin 0 -> 701930 bytes
.../src/SOFTWARE_FRAMEWORK/ASM/trampoline.x | 74 +
.../SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h | 234 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c | 346 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h | 191 +
.../SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h | 433 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c | 346 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h | 187 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/board.h | 120 +
.../src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori | 121 +
.../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c | 672 +
.../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h | 269 +
.../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c | 234 +
.../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h | 164 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c | 1117 ++
.../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h | 1002 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c | 458 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h | 583 +
.../SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x | 239 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c | 214 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h | 100 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c | 546 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h | 493 +
.../SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c | 268 +
.../DRIVERS/PM/power_clocks_lib.c | 566 +
.../DRIVERS/PM/power_clocks_lib.h | 379 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c | 443 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h | 342 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c | 914 +
.../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h | 889 +
.../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c | 571 +
.../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h | 369 +
.../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c | 119 +
.../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h | 116 +
.../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c | 215 +
.../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h | 294 +
.../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h | 63 +
.../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h | 120 +
.../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h | 82 +
.../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h | 174 +
.../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h | 208 +
.../libnewlib_addons-at32ucr2-speed_opt.a | Bin 0 -> 25540 bytes
.../AT32UC3A/0512/GCC/link_uc3a0512.lds | 266 +
.../AT32UC3A/1256/GCC/link_uc3a1256.lds | 266 +
.../UTILS/PREPROCESSOR/mrepeat.h | 328 +
.../UTILS/PREPROCESSOR/preprocessor.h | 55 +
.../UTILS/PREPROCESSOR/stringz.h | 75 +
.../SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h | 95 +
.../UTILS/STARTUP_FILES/GCC/crt0.x | 121 +
.../src/SOFTWARE_FRAMEWORK/UTILS/compiler.h | 1145 ++
.../src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h | 136 +
.../wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h | 203 +
.../firmwares/wifishield/wifi_dnld/src/clocks.c | 101 +
.../firmwares/wifishield/wifi_dnld/src/clocks.h | 78 +
.../firmwares/wifishield/wifi_dnld/src/flash_fw.c | 125 +
.../firmwares/wifishield/wifi_dnld/src/license.txt | 42 +
.../firmwares/wifishield/wifi_dnld/src/nor_flash.c | 99 +
.../firmwares/wifishield/wifi_dnld/src/nor_flash.h | 41 +
.../wifishield/wifi_dnld/src/printf-stdarg.c | 323 +
.../wifishield/wifi_dnld/src/printf-stdarg.h | 36 +
.../firmwares/wifishield/wifi_dnld/src/startup.c | 75 +
.../firmwares/wifishield/wifi_dnld/src/startup.h | 35 +
.../firmwares/wifishield/wifi_dnld/src/wl_fw.h |19287 ++++++++++++++++++++
hardware/arduino/programmers.txt | 5 -
hardware/arduino/variants/leonardo/pins_arduino.h | 89 +-
hardware/arduino/variants/micro/pins_arduino.h | 37 +
341 files changed, 164800 insertions(+), 312 deletions(-)
---
diff --git a/hardware/arduino/boards.txt b/hardware/arduino/boards.txt
index 638eb4a..145d551 100644
--- a/hardware/arduino/boards.txt
+++ b/hardware/arduino/boards.txt
@@ -106,7 +106,7 @@ nano.build.variant=eightanaloginputs
mega2560.name=Arduino Mega 2560 or Mega ADK
-mega2560.upload.protocol=stk500v2
+mega2560.upload.protocol=wiring
mega2560.upload.maximum_size=258048
mega2560.upload.speed=115200
@@ -167,6 +167,48 @@ leonardo.build.variant=leonardo
##############################################################
+esplora.name=Arduino Esplora
+esplora.upload.protocol=avr109
+esplora.upload.maximum_size=28672
+esplora.upload.speed=57600
+esplora.upload.disable_flushing=true
+esplora.bootloader.low_fuses=0xff
+esplora.bootloader.high_fuses=0xd8
+esplora.bootloader.extended_fuses=0xcb
+esplora.bootloader.path=caterina
+esplora.bootloader.file=Caterina-Esplora.hex
+esplora.bootloader.unlock_bits=0x3F
+esplora.bootloader.lock_bits=0x2F
+esplora.build.mcu=atmega32u4
+esplora.build.f_cpu=16000000L
+esplora.build.vid=0x2341
+esplora.build.pid=0x803C
+esplora.build.core=arduino
+esplora.build.variant=leonardo
+
+##############################################################
+
+micro.name=Arduino Micro
+micro.upload.protocol=avr109
+micro.upload.maximum_size=28672
+micro.upload.speed=57600
+micro.upload.disable_flushing=true
+micro.bootloader.low_fuses=0xff
+micro.bootloader.high_fuses=0xd8
+micro.bootloader.extended_fuses=0xcb
+micro.bootloader.path=caterina
+micro.bootloader.file=Caterina-Micro.hex
+micro.bootloader.unlock_bits=0x3F
+micro.bootloader.lock_bits=0x2F
+micro.build.mcu=atmega32u4
+micro.build.f_cpu=16000000L
+micro.build.vid=0x2341
+micro.build.pid=0x8037
+micro.build.core=arduino
+micro.build.variant=micro
+
+##############################################################
+
mini328.name=Arduino Mini w/ ATmega328
mini328.upload.protocol=arduino
@@ -295,6 +337,27 @@ bt.build.variant=eightanaloginputs
##############################################################
+LilyPadUSB.name=LilyPad Arduino USB
+LilyPadUSB.upload.protocol=avr109
+LilyPadUSB.upload.maximum_size=28672
+LilyPadUSB.upload.speed=57600
+LilyPadUSB.upload.disable_flushing=true
+LilyPadUSB.bootloader.low_fuses=0xff
+LilyPadUSB.bootloader.high_fuses=0xd8
+LilyPadUSB.bootloader.extended_fuses=0xce
+LilyPadUSB.bootloader.path=caterina-LilyPadUSB
+LilyPadUSB.bootloader.file=Caterina-LilyPadUSB.hex
+LilyPadUSB.bootloader.unlock_bits=0x3F
+LilyPadUSB.bootloader.lock_bits=0x2F
+LilyPadUSB.build.mcu=atmega32u4
+LilyPadUSB.build.f_cpu=8000000L
+LilyPadUSB.build.vid=0x1B4F
+LilyPadUSB.build.pid=0x9208
+LilyPadUSB.build.core=arduino
+LilyPadUSB.build.variant=leonardo
+
+##############################################################
+
lilypad328.name=LilyPad Arduino w/ ATmega328
lilypad328.upload.protocol=arduino
@@ -451,7 +514,7 @@ atmega8.upload.speed=19200
atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca
atmega8.bootloader.path=atmega8
-atmega8.bootloader.file=ATmegaBOOT.hex
+atmega8.bootloader.file=ATmegaBOOT-prod-firmware-2009-11-07.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F
diff --git a/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c b/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/atmega/Makefile b/hardware/arduino/bootloaders/atmega/Makefile
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex
new file mode 100644
index 0000000..6190d48
--- /dev/null
+++ b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex
@@ -0,0 +1,66 @@
+:101C000012C02BC02AC029C028C027C026C025C0AA
+:101C100024C023C022C021C020C01FC01EC01DC0C0
+:101C20001CC01BC01AC011241FBECFE5D4E0DEBF0C
+:101C3000CDBF10E0A0E6B0E0E8EEFFE102C0059005
+:101C40000D92A236B107D9F711E0A2E6B0E001C0CB
+:101C50001D92AA36B107E1F74FC0D2CFEF92FF92A3
+:101C60000F931F93EE24FF24870113C00894E11CF7
+:101C7000F11C011D111D81E0E81682E1F8068AE7DA
+:101C8000080780E0180728F0E0916200F0916300F7
+:101C900009955F9BEBCF8CB1992787FD90951F919C
+:101CA0000F91FF90EF9008955D9BFECF8CB9089542
+:101CB000D5DF803221F484E1F7DF80E1F5DF08959C
+:101CC0001F93182FCBDF803231F484E1EDDF812FB9
+:101CD000EBDF80E1E9DF1F9108951F93CF93DF933E
+:101CE000182FC0E0D0E002C0B9DF2196C117E0F3A1
+:101CF000DF91CF911F910895CFE5D4E0DEBFCDBF36
+:101D0000000010BC83E389B988E18AB986E880BD08
+:101D1000BD9A1092680130E2E0E0F0E02FE088B375
+:101D2000832788BBCF010197F1F7215027FFF7CF19
+:101D300020E12093680192DF803381F1813399F4AF
+:101D40008DDF8032C1F784E1AFDF81E4ADDF86E56E
+:101D5000ABDF82E5A9DF80E2A7DF89E4A5DF83E5C9
+:101D6000A3DF80E5C7C0803429F478DF8638B0F07F
+:101D700075DF14C0813471F471DF803811F482E0B2
+:101D80001DC1813811F481E019C1823809F015C1F3
+:101D900082E114C1823421F484E19FDF89DFCBCF5B
+:101DA000853411F485E0F9CF8035C1F38135B1F385
+:101DB0008235A1F3853539F451DF809364004EDF1D
+:101DC00080936500EBCF863519F484E086DFF5C09B
+:101DD000843609F093C042DF809367013FDF809330
+:101DE0006601809169018E7F8093690137DF8534B8
+:101DF00029F480916901816080936901C0E0D0E09D
+:101E000006E610E005C02ADFF80181938F012196D4
+:101E10008091660190916701C817D907A0F31EDF72
+:101E2000803209F088CF8091690180FF1FC020E0D7
+:101E300030E0E6E6F0E012C0A0916400B0916500E9
+:101E40008191082EC5D08091640090916500019623
+:101E500090936500809364002F5F3F4F80916601EF
+:101E6000909167012817390738F343C0F894E19936
+:101E7000FECF1127E0916400F0916500EE0FFF1F87
+:101E8000C6E6D0E0809166019091670180FF01C0B5
+:101E90000196103051F422D003E000935700E895EA
+:101EA0001DD001E100935700E8950990199016D0D4
+:101EB00001E000935700E8951395103258F0112770
+:101EC0000DD005E000935700E89508D001E100939C
+:101ED0005700E8953296029739F0DBCF0091570012
+:101EE00001700130D9F30895103011F00296E7CF58
+:101EF000112484E1D9DE80E1D7DE1DCF843709F0DB
+:101F00004BC0ACDE80936701A9DE80936601A6DE3C
+:101F100090916901853421F49160909369010DC01D
+:101F20009E7F909369018091640090916500880F75
+:101F3000991F909365008093640090DE803209F0D1
+:101F4000FACE84E1B1DEC0E0D0E01EC0809169012C
+:101F500080FF07C0A0916400B091650031D0802D52
+:101F600008C081FD07C0E0916400F0916500E49134
+:101F70008E2F9ADE80916400909165000196909377
+:101F800065008093640021968091660190916701BD
+:101F9000C817D907D8F2AFCF853761F45FDE80323A
+:101FA00009F0C9CE84E180DE8EE17EDE83E97CDE4D
+:101FB00087E0A0CF863709F0BECE80E081DEBBCEC1
+:101FC000E199FECFBFBBAEBBE09A11960DB208956A
+:101FD000E199FECFBFBBAEBB0DBA11960FB6F89418
+:081FE000E29AE19A0FBE089598
+:021FE800800077
+:0400000300001C00DD
+:00000001FF
diff --git a/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c
old mode 100755
new mode 100644
index 17977e6..8c8d22a
--- a/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c
+++ b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c
@@ -36,7 +36,7 @@
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
-#include <avr/delay.h>
+#include <util/delay.h>
//#define F_CPU 16000000
diff --git a/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.hex b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.hex
index 6190d48..9182267 100644
--- a/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.hex
+++ b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.hex
@@ -1,66 +1,62 @@
-:101C000012C02BC02AC029C028C027C026C025C0AA
-:101C100024C023C022C021C020C01FC01EC01DC0C0
-:101C20001CC01BC01AC011241FBECFE5D4E0DEBF0C
-:101C3000CDBF10E0A0E6B0E0E8EEFFE102C0059005
+:101C000012C02CC02BC02AC029C028C027C026C0A3
+:101C100025C024C023C022C021C020C01FC01EC0B8
+:101C20001DC01CC01BC011241FBECFE5D4E0DEBF09
+:101C3000CDBF10E0A0E6B0E0E6EAFFE102C005900B
:101C40000D92A236B107D9F711E0A2E6B0E001C0CB
-:101C50001D92AA36B107E1F74FC0D2CFEF92FF92A3
-:101C60000F931F93EE24FF24870113C00894E11CF7
-:101C7000F11C011D111D81E0E81682E1F8068AE7DA
-:101C8000080780E0180728F0E0916200F0916300F7
-:101C900009955F9BEBCF8CB1992787FD90951F919C
-:101CA0000F91FF90EF9008955D9BFECF8CB9089542
-:101CB000D5DF803221F484E1F7DF80E1F5DF08959C
-:101CC0001F93182FCBDF803231F484E1EDDF812FB9
-:101CD000EBDF80E1E9DF1F9108951F93CF93DF933E
-:101CE000182FC0E0D0E002C0B9DF2196C117E0F3A1
-:101CF000DF91CF911F910895CFE5D4E0DEBFCDBF36
-:101D0000000010BC83E389B988E18AB986E880BD08
-:101D1000BD9A1092680130E2E0E0F0E02FE088B375
-:101D2000832788BBCF010197F1F7215027FFF7CF19
-:101D300020E12093680192DF803381F1813399F4AF
-:101D40008DDF8032C1F784E1AFDF81E4ADDF86E56E
-:101D5000ABDF82E5A9DF80E2A7DF89E4A5DF83E5C9
-:101D6000A3DF80E5C7C0803429F478DF8638B0F07F
-:101D700075DF14C0813471F471DF803811F482E0B2
-:101D80001DC1813811F481E019C1823809F015C1F3
-:101D900082E114C1823421F484E19FDF89DFCBCF5B
-:101DA000853411F485E0F9CF8035C1F38135B1F385
-:101DB0008235A1F3853539F451DF809364004EDF1D
-:101DC00080936500EBCF863519F484E086DFF5C09B
-:101DD000843609F093C042DF809367013FDF809330
-:101DE0006601809169018E7F8093690137DF8534B8
-:101DF00029F480916901816080936901C0E0D0E09D
-:101E000006E610E005C02ADFF80181938F012196D4
-:101E10008091660190916701C817D907A0F31EDF72
-:101E2000803209F088CF8091690180FF1FC020E0D7
-:101E300030E0E6E6F0E012C0A0916400B0916500E9
-:101E40008191082EC5D08091640090916500019623
-:101E500090936500809364002F5F3F4F80916601EF
-:101E6000909167012817390738F343C0F894E19936
-:101E7000FECF1127E0916400F0916500EE0FFF1F87
-:101E8000C6E6D0E0809166019091670180FF01C0B5
-:101E90000196103051F422D003E000935700E895EA
-:101EA0001DD001E100935700E8950990199016D0D4
-:101EB00001E000935700E8951395103258F0112770
-:101EC0000DD005E000935700E89508D001E100939C
-:101ED0005700E8953296029739F0DBCF0091570012
-:101EE00001700130D9F30895103011F00296E7CF58
-:101EF000112484E1D9DE80E1D7DE1DCF843709F0DB
-:101F00004BC0ACDE80936701A9DE80936601A6DE3C
-:101F100090916901853421F49160909369010DC01D
-:101F20009E7F909369018091640090916500880F75
-:101F3000991F909365008093640090DE803209F0D1
-:101F4000FACE84E1B1DEC0E0D0E01EC0809169012C
-:101F500080FF07C0A0916400B091650031D0802D52
-:101F600008C081FD07C0E0916400F0916500E49134
-:101F70008E2F9ADE80916400909165000196909377
-:101F800065008093640021968091660190916701BD
-:101F9000C817D907D8F2AFCF853761F45FDE80323A
-:101FA00009F0C9CE84E180DE8EE17EDE83E97CDE4D
-:101FB00087E0A0CF863709F0BECE80E081DEBBCEC1
-:101FC000E199FECFBFBBAEBBE09A11960DB208956A
-:101FD000E199FECFBFBBAEBB0DBA11960FB6F89418
-:081FE000E29AE19A0FBE089598
-:021FE800800077
+:101C50001D92AA36B107E1F72BD0A3C1D1CF5D9B6E
+:101C6000FECF8CB908955F9BFECF8CB108950F9382
+:101C70001F93082F10E002C0F6DF1F5F1017E0F37C
+:101C80001F910F9108951F93182FEDDF803231F4CB
+:101C900084E1E5DF812FE3DF80E1E1DF1F9108953B
+:101CA000E2DF803221F484E1DADF80E1D8DF0895D9
+:101CB0000F931F93CF93DF93000010BC83E389B988
+:101CC00088E18AB986E880BDBD9A1092680120E05B
+:101CD00030E240E050E007C088B3832788BBCA01E8
+:101CE0000197F1F72F5F2031B8F320936801BBDF34
+:101CF000803381F1813399F4B6DF8032C1F784E11A
+:101D0000AEDF81E4ACDF86E5AADF82E5A8DF80E212
+:101D1000A6DF89E4A4DF83E5A2DF80E523C1803468
+:101D200029F4A1DF8638B0F09EDF14C0813471F44D
+:101D30009ADF803811F482E01DC1813811F481E00E
+:101D400019C1823809F015C182E114C1823421F42D
+:101D500084E18DDFA5DFCBCF853411F485E0F9CFA9
+:101D60008035C1F38135B1F38235A1F3853539F47E
+:101D70007ADF8093640077DF80936500EBCF863550
+:101D800019F484E074DFF5C0843609F090C06BDF8D
+:101D90008093670168DF80936601809169018E7F7F
+:101DA0008093690160DF853429F480916901816045
+:101DB0008093690100E010E007C055DFF801EA599F
+:101DC000FF4F80830F5F1F4F8091660190916701E5
+:101DD0000817190790F347DF803209F088CF809108
+:101DE000690180FF1FC000E010E014C0F801EA594B
+:101DF000FF4F80916400909165006081C5D0809113
+:101E00006400909165000196909365008093640052
+:101E10000F5F1F4F809166019091670108171907A6
+:101E200028F343C0F894E199FECF1127E0916400B4
+:101E3000F0916500EE0FFF1FC6E6D0E080916601CD
+:101E40009091670180FF01C00196103051F422D0BB
+:101E500003E000935700E8951DD001E1009357007F
+:101E6000E8950990199016D001E000935700E89585
+:101E70001395103258F011270DD005E0009357004C
+:101E8000E89508D001E100935700E8953296029753
+:101E900039F0DBCF0091570001700130D9F308957C
+:101EA000103011F00296E7CF112484E15BC0843733
+:101EB00009F04BC0D8DE80936701D5DE80936601C0
+:101EC000D2DE90916901853421F49160909369018B
+:101ED0000DC09E7F90936901809164009091650090
+:101EE000880F991F9093650080936400BCDE803258
+:101EF00009F0FDCE84E1B3DE00E010E01EC0809169
+:101F0000690180FF06C0809164009091650034D023
+:101F100008C081FD07C0E0916400F0916500E49184
+:101F20008E2F9DDE809164009091650001969093C4
+:101F30006500809364000F5F1F4F80916601909150
+:101F4000670108171907D8F20EC0853779F48BDEC0
+:101F5000803209F0CCCE84E182DE8EE180DE83E93E
+:101F60007EDE87E07CDE80E17ADEC1CE863709F056
+:101F7000BECE80E088DEBBCEE199FECF9FBB8EBB9C
+:101F8000E09A99278DB30895262FE199FECF9FBB44
+:101F90008EBB2DBB0FB6F894E29AE19A0FBE019664
+:061FA0000895F894FFCF44
+:021FA6008000B9
:0400000300001C00DD
:00000001FF
diff --git a/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.txt b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.txt
new file mode 100644
index 0000000..b0e19b3
--- /dev/null
+++ b/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.txt
@@ -0,0 +1,4 @@
+Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-checking --disable-libssp --build=i686-linux-gnu --host=i686-linux-gnu --target=avr
+Thread model: single
+gcc version 4.3.5 (GCC)
+
diff --git a/hardware/arduino/bootloaders/atmega8/Makefile b/hardware/arduino/bootloaders/atmega8/Makefile
index 8c0edd3..9202b52 100644
--- a/hardware/arduino/bootloaders/atmega8/Makefile
+++ b/hardware/arduino/bootloaders/atmega8/Makefile
@@ -26,7 +26,7 @@ ISPFLASH = $(DIRAVRBIN)/uisp -dpart=ATmega8 $(ISPPARAMS) --erase --upload if=$
OBJ = $(PROGRAM).o
-OPTIMIZE = -Os
+OPTIMIZE = -Os -funsigned-char -funsigned-bitfields -fno-inline-small-functions
DEFS = -DF_CPU=16000000 -DBAUD_RATE=19200
LIBS =
diff --git a/hardware/arduino/bootloaders/bt/Makefile b/hardware/arduino/bootloaders/bt/Makefile
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina-LilyPadUSB.hex b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina-LilyPadUSB.hex
new file mode 100644
index 0000000..abc5ca8
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina-LilyPadUSB.hex
@@ -0,0 +1,259 @@
+:1070000055C000006EC000006CC000006AC00000E7
+:1070100068C0000066C0000064C0000062C00000DC
+:1070200060C000005EC00000FCC400005AC0000048
+:1070300058C0000056C0000054C0000052C00000FC
+:1070400050C000005DC000004CC000004AC00000FD
+:1070500048C0000046C0000044C0000042C000001C
+:1070600040C000003EC000003CC000003AC000002C
+:1070700038C0000036C0000034C0000032C000003C
+:1070800030C000002EC000002CC000002AC000004C
+:1070900028C0000026C0000024C0000022C000005C
+:1070A00020C000001EC000001CC0000011241FBE34
+:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0E2E467
+:1070C000FFE702C005900D92A83BB107D9F711E088
+:1070D000A8EBB1E001C01D92A13DB107E1F74FD38C
+:1070E0002EC78ECFF89410926F001092810081E02D
+:1070F00085BF15BE47985D9A289A0C9400000895A4
+:107100001F920F920FB60F9211242F938F939F937C
+:10711000EF93FF9310928500109284008091B80144
+:107120009091B901009741F001979093B901809334
+:10713000B801892B09F45D9A8091BA019091BB0145
+:10714000009741F001979093BB018093BA01892B7E
+:1071500009F4289A8091BE019091BF010196909305
+:10716000BF018093BE01E0E0F0E0859194918F5FD4
+:107170009F4F49F08091BC019091BD010196909381
+:10718000BD018093BC01FF91EF919F918F912F9151
+:107190000F900FBE0F901F90189584E08093E90028
+:1071A0000DC08091E8008B778093E80003C08EB318
+:1071B000882351F08091E80082FFF9CF8091E800A8
+:1071C00085FFEFCF8091F1000895982F83E08093A1
+:1071D000E9008091E80085FD0DC08091E8008E7780
+:1071E0008093E80003C08EB3882369F08091E800A3
+:1071F00080FFF9CF9093F1005D9884E690E0909342
+:10720000B9018093B80108954F925F926F927F9277
+:107210008F929F92AF92BF92CF92DF92EF92FF92A6
+:107220000F931F93CF93DF9384E08093E9008091C5
+:10723000E80082FF57C2289884E690E09093BB0153
+:107240008093BA01AADF182F853481F48CEA9DE07F
+:107250009093BD018093BC0107B600FCFDCFF99966
+:10726000FECF81E180935700E89503C0843519F47F
+:1072700094DF8DE00DC28C34E1F38035D1F3843797
+:1072800021F484E4A2DF80E003C2813611F489E5B1
+:10729000FFC18134B1F481DF182F7FDF90E0880FC8
+:1072A000991FAA2797FDA095BA2F312F330F20E001
+:1072B000442737FD4095542F822B932BA42BB52BBD
+:1072C000B8C1803711F483E5E3C1833549F4C0E0E8
+:1072D000D1E089917ADF21E0C730D207D1F7D9C157
+:1072E000863521F481E371DF80E3D2C1833731F445
+:1072F00087E86BDF85E969DF8EE1CAC18536B9F4BD
+:10730000E0E0F0E093E085E090935700E89507B661
+:1073100000FCFDCF80935700E89507B600FCFDCF39
+:10732000E058FF4FA0E7E030FA0771F7A2CF8237AD
+:1073300039F4E1E0F0E089E0809357008491A8C13E
+:10734000863439F4E0E0F0E089E0809357008491DE
+:107350009FC18E3439F4E3E0F0E089E08093570078
+:10736000849196C1813539F4E2E0F0E089E08093C0
+:10737000570084918DC1823631F489E526DF80E0A3
+:1073800024DF80E885C1823419F0873609F0E5C032
+:107390001092BD011092BC0100DF082FFEDEF82E16
+:1073A000FCDE682E8554823008F071C1902F80E099
+:1073B000CF2DD0E0C82BD92B10926F00173609F0D3
+:1073C0004BC081E180935700E895DD24CC24C39421
+:1073D0003FC0E090C101F090C2010091C301109143
+:1073E000C401B6E46B16D9F4ED2DF0E0EE29FF29C7
+:1073F000E4918E2FEADEDD2081F082E090E0A0E0D3
+:10740000B0E0E80EF91E0A1F1B1FE092C101F092C6
+:10741000C2010093C3011093C401DC2418C0D80139
+:10742000C701B695A7959795879573D5CEDE82E06F
+:1074300090E0A0E0B0E0E80EF91E0A1F1B1FE092EA
+:10744000C101F092C2010093C3011093C4012197BE
+:10745000209709F0BECF7DC08090C1019090C201FD
+:10746000A090C301B090C40196E4691609F05DC014
+:1074700083E0F40180935700E89507B600FCFDCF48
+:1074800054C0F6E46F1661F5772031F1E090C10148
+:10749000F090C2010091C3011091C4017EDED82E8C
+:1074A000CC24852D90E08C299D29F7010C01409278
+:1074B0005700E895112482E090E0A0E0B0E0E80EEB
+:1074C000F91E0A1F1B1FE092C101F092C201009336
+:1074D000C3011093C40102C060DE582E742423C07F
+:1074E000E090C101F090C2010091C3011091C4016C
+:1074F00016950795F794E79450DE682FC70111D5CC
+:107500008091C1019091C201A091C301B091C401C9
+:107510000296A11DB11D8093C1019093C201A09359
+:10752000C301B093C401219704C055247724442497
+:107530004394209709F0A5CF96E4691641F485E0BD
+:10754000F40180935700E89507B600FCFDCF8DE06D
+:107550003CDE82E080936F009CC0833471F4009124
+:10756000C1011091C20119DE90E021E0F8010C0187
+:1075700020935700E89511247CCE833619F5E090CE
+:10758000C101F090C2010091C3011091C40105DE58
+:10759000F701E16090E021E00C0120935700E895AD
+:1075A000112482E090E0A0E0B0E0E80EF91E0A1F8E
+:1075B0001B1FE092C101F092C2010093C30110931E
+:1075C000C40157CE8D3661F4E091C101F091C20142
+:1075D00085E080935700E89507B600FCFDCF49CEC3
+:1075E000823551F4E091C101F091C20105911491ED
+:1075F000812FEBDD802F4CC0843421F5E090C10158
+:10760000F090C2010091C3011091C4011695079535
+:10761000F794E794C2DD682FC70183D48091C1013C
+:107620009091C201A091C301B091C4010296A11D25
+:10763000B11D8093C1019093C201A093C301B09387
+:10764000C40117CE843609F5E090C101F090C20163
+:107650000091C3011091C401D801C701B695A79547
+:107660009795879556D4B1DD82E090E0A0E0B0E038
+:10767000E80EF91E0A1F1B1FE092C101F092C20121
+:107680000093C3011093C40104C08B3111F08FE348
+:107690009CDD83E08093E9009091E8008091E80010
+:1076A0008E778093E80095FF04C010C08EB38823C6
+:1076B000C9F08091E80080FFF9CF8091E8008E77D3
+:1076C0008093E80003C08EB3882361F08091E800C6
+:1076D00080FFF9CF84E08093E9008091E8008B7708
+:1076E0008093E800DF91CF911F910F91FF90EF9071
+:1076F000DF90CF90BF90AF909F908F907F906F90D2
+:107700005F904F9008959091C901892F8F778132B2
+:1077100049F58091CA018032A1F0813219F5913A80
+:1077200009F58091E800877F8093E8008CE091E084
+:1077300067E070E025D28091E8008B778093E800C5
+:107740000895913279F48091E800877F8093E80072
+:107750008CE091E067E070E077D28091E8008E776E
+:107760008093E800089582E061EC42E0D1D083E0AC
+:1077700061E842E1CDD084E060E842E1C9C01F93F6
+:10778000209100081092000844B714BE88E10FB69B
+:10779000F89480936000109260000FBE80E8E0E0F3
+:1077A000F0E00FB6F89480936100E09361000FBEA3
+:1077B00031E035BF92E095BF3F9A209A559A809369
+:1077C00061001092610047985D9A289A1092890092
+:1077D0008AEF8093880090936F0083E0809381000C
+:1077E000859194918F5F9F4F11F03093C001942F3A
+:1077F00041FF19C0809109012817A9F08093000862
+:10780000789480911301882339F08091BE01909182
+:10781000BF0188579140C8F310920008F89481E0A6
+:10782000809313010CC090FF04C08091C001882395
+:1078300051F493FF09C080910901281729F0809124
+:10784000C001882309F04EDCD4D078941092BD0199
+:107850001092BC011EEF20C0D7DC49D38091BC013F
+:107860009091BD01815A9F4010F0109213018091B8
+:10787000C5019091C60101969093C6018093C50100
+:10788000292F97FF03C0512F591B252F220F28178F
+:1078900010F4479801C0479A809113018823E1F6BC
+:1078A0008091E00081608093E0001CDC80E090E04B
+:1078B0001F910895FA01923049F0933061F09130B0
+:1078C000F9F484E191E022E130E01EC086E291E02B
+:1078D0002EE330E019C0882329F484E691E024E007
+:1078E00030E012C0813029F488E691E022E230E0F5
+:1078F0000BC0823029F48CE891E02AE230E004C029
+:1079000080E090E020E030E091838083C901089519
+:107910008093E9008091EB0081608093EB001092EE
+:10792000ED006093EC004093ED008091EE00881F25
+:107930008827881F08958091C90188238CF403C08B
+:107940008EB38823B1F08091E80082FFF9CF809157
+:10795000E8008B778093E80008958EB3882349F080
+:107960008091E80080FFF9CF8091E8008E778093C6
+:10797000E8000895EF92FF920F931F9345D04CD0EB
+:1079800008ED10E0F80180818F7780838081806826
+:10799000808380818F7D808319BC1EBA1092C701BD
+:1079A00080EEE82EF12CF70180818B7F8083F80137
+:1079B00080818160808380E060E042E0A9DFE1EEC9
+:1079C000F0E080818E7F8083E2EEF0E08081816054
+:1079D0008083808188608083F70180818E7F8083AF
+:1079E000F8018081806180831F910F91FF90EF905B
+:1079F0000895E7EDF0E08081816080838AE482BFB2
+:107A000081E08093C801B6CFE8EDF0E080818E7F01
+:107A100080831092E20008951092DA001092E10043
+:107A200008951F920F920FB60F9211242F933F9338
+:107A30004F935F936F937F938F939F93AF93BF9376
+:107A4000EF93FF938091DA0080FF1AC08091D800F5
+:107A500080FF16C08091DA008E7F8093DA008091DB
+:107A6000D90080FF0AC019BC82E089BD09B400FEBC
+:107A7000FDCF81E08EBB3AD203C019BC1EBA36D20C
+:107A80008091E10080FF17C08091E20080FF13C069
+:107A90008091E2008E7F8093E2008091E20080611D
+:107AA0008093E2008091D80080628093D80019BC56
+:107AB00085E08EBB1BD28091E10084FF2BC08091BA
+:107AC000E20084FF27C019BC82E089BD09B400FE32
+:107AD000FDCF8091D8008F7D8093D8008091E10008
+:107AE0008F7E8093E1008091E2008F7E8093E200A0
+:107AF0008091E20081608093E2008091C701882339
+:107B000031F48091E30087FD02C081E001C084E090
+:107B10008EBBECD18091E10083FF21C08091E20017
+:107B200083FF1DC08091E100877F8093E10082E0A8
+:107B30008EBB1092C7018091E1008E7F8093E1009F
+:107B40008091E2008E7F8093E2008091E20080616C
+:107B50008093E20080E060E042E0DADEC7D1FF918E
+:107B6000EF91BF91AF919F918F917F916F915F91B5
+:107B70004F913F912F910F900FBE0F901F9018952E
+:107B80009C014091CF015091D0014617570718F43E
+:107B9000F90190E044C06115710511F0AB01F8CF17
+:107BA0008091E8008E778093E80040E050E0F0CFCD
+:107BB0008EB3882309F444C0853009F443C0809112
+:107BC000E80083FF02C081E008958091E80082FD13
+:107BD00031C08091E80080FF22C08091F300909135
+:107BE000F200782F60E0292F30E0262B372B07C0DA
+:107BF00081918093F100415050402F5F3F4F4115DC
+:107C0000510519F02830310598F390E028303105FE
+:107C100009F491E08091E8008E778093E8004115A7
+:107C2000510531F6992321F605C08EB3882341F022
+:107C3000853041F08091E80082FFF7CF80E0089521
+:107C400082E0089583E008959C016115710529F48F
+:107C50008091E8008B778093E800F90126C08EB30D
+:107C6000882391F1853091F18091E80083FF02C073
+:107C700081E008958091E80082FFF1CF06C08091F5
+:107C8000F10081936150704059F02091F300809190
+:107C9000F200322F20E090E0822B932B892B79F792
+:107CA0008091E8008B778093E80061157105B9F643
+:107CB00005C08EB3882341F0853041F08091E80003
+:107CC00080FFF7CF80E0089582E0089583E0089573
+:107CD0000F931F93DF93CF9300D0CDB7DEB7E9ECBE
+:107CE000F1E08091F100819381E0E13DF807C9F76F
+:107CF0000ADD8091E80083FFE4C08091C901909182
+:107D0000CA01953009F46DC0963040F4913081F18C
+:107D1000913070F0933009F0D4C02AC0983009F443
+:107D2000A3C0993009F4B2C0963009F0CAC07CC033
+:107D3000803809F4C6C0823809F0C3C08091CD01F3
+:107D400087708093E9008091EB001092E900209108
+:107D5000E800277F2093E80090E025E0969587953E
+:107D60002A95E1F781708093F1001092F10087C0AD
+:107D7000882319F0823009F0A4C08F71823009F095
+:107D8000A0C08091CB01882331F52091CD012770CF
+:107D900009F497C02093E9008091EB0080FF1BC09D
+:107DA000933021F48091EB00806213C08091EB004E
+:107DB00080618093EB0081E090E002C0880F991F02
+:107DC0002A95E2F78093EA001092EA008091EB0096
+:107DD00088608093EB001092E9008091E800877F33
+:107DE00051C0882309F06DC01091CB011F770FB7E8
+:107DF000F8948091E800877F8093E8009CDD809173
+:107E0000E80080FFFCCF8091E3008078812B809395
+:107E1000E30080688093E300112311F482E001C045
+:107E200083E08EBB0FBF4DC08058823008F049C040
+:107E30008091CB019091CC016091CD01AE014F5F5B
+:107E40005F4F38DDBC01009709F43BC08091E8002A
+:107E5000877F8093E80089819A8192DE8091E80093
+:107E60008B778093E8002DC0803859F58091E80029
+:107E7000877F8093E8008091C7018093F100809113
+:107E8000E8008E778093E80056DD1BC08823C9F494
+:107E90009091CB019230A8F48091E800877F809385
+:107EA000E8009093C70147DD8091C701882331F432
+:107EB0008091E30087FD02C081E001C084E08EBBB9
+:107EC00052DC8091E80083FF0AC08091EB00806261
+:107ED0008093EB008091E800877F8093E8000F900B
+:107EE0000F90CF91DF911F910F91089508951F93E7
+:107EF0008EB3882361F01091E9001092E90080911F
+:107F0000E80083FF01C0E4DE17701093E9001F91C1
+:107F10000895F999FECF92BD81BDF89A992780B551
+:107F20000895262FF999FECF1FBA92BD81BD20BDBD
+:107F30000FB6F894FA9AF99A0FBE01960895F8943C
+:027F4000FFCF71
+:107F42004341544552494E41007700080000000069
+:107F52000000080112011001020000084F1B0792E5
+:107F620001000201000109023E0002010080320903
+:107F72000400000102020100052400100104240291
+:107F8200040524060001070582030800FF09040115
+:107F920000020A0000000705040210000107058321
+:107FA200021000010403090422034C0069006C0062
+:107FB2007900500061006400550053004200200027
+:107FC2002000200020002000200000002A0353008F
+:107FD2007000610072006B00460075006E002000A8
+:107FE20045006C0065006300740072006F006E0053
+:087FF200690063007300000048
+:040000030000700089
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina.c b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina.c
new file mode 100644
index 0000000..9a59081
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina.c
@@ -0,0 +1,780 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Main source file for the CDC class bootloader. This file contains the complete bootloader logic.
+ */
+
+#define INCLUDE_FROM_CATERINA_C
+#include "Caterina.h"
+
+/** Contains the current baud rate and other settings of the first virtual serial port. This must be retained as some
+ * operating systems will not open the port unless the settings can be set successfully.
+ */
+static CDC_LineEncoding_t LineEncoding = { .BaudRateBPS = 0,
+ .CharFormat = CDC_LINEENCODING_OneStopBit,
+ .ParityType = CDC_PARITY_None,
+ .DataBits = 8 };
+
+/** Current address counter. This stores the current address of the FLASH or EEPROM as set by the host,
+ * and is used when reading or writing to the AVRs memory (either FLASH or EEPROM depending on the issued
+ * command.)
+ */
+static uint32_t CurrAddress;
+
+/** Flag to indicate if the bootloader should be running, or should exit and allow the application code to run
+ * via a watchdog reset. When cleared the bootloader will exit, starting the watchdog and entering an infinite
+ * loop until the AVR restarts and the application runs.
+ */
+static bool RunBootloader = true;
+
+/* Pulse generation counters to keep track of the time remaining for each pulse type */
+#define TX_RX_LED_PULSE_PERIOD 100
+uint16_t TxLEDPulse = 0; // time remaining for Tx LED pulse
+uint16_t RxLEDPulse = 0; // time remaining for Rx LED pulse
+
+/* Bootloader timeout timer */
+// MAH 8/15/12- change so timeouts work properly when the chip is running at 8MHz instead of 16.
+#define TIMEOUT_PERIOD 4000
+#define EXT_RESET_TIMEOUT_PERIOD 375
+
+
+/*********************************************************************************************************
+LilyPadUSB bootloader code
+The LilyPadUSB bootloader has been changed to remove the 8-second delay after external reset which is in
+the Leonardo. To enter the bootloader, the user should execute TWO external resets within 750 ms; that is,
+press the reset button twice, quickly.\
+
+Some other changes were made to allow this code to compile tightly enough to fit in the alloted 4k of
+bootloader space.
+*/
+// MAH 8/15/12- added this flag to replace the bulky program memory reads to check for the presence of a sketch
+// at the top of the memory space.
+static bool sketchPresent = false;
+
+// MAH 8/15/12- make this volatile, since we modify it in one place and read it in another, we want to make
+// sure we're always working on the copy in memory and not an erroneous value stored in a cache somewhere.
+// This variable stores the length of time we've been in the bootloader when waiting for the 8 second delay.
+volatile uint16_t Timeout = 0;
+// MAH 8/15/12- added this for delay during startup. Did not use existing Timeout value b/c it only increments
+// when there's a sketch at the top of the memory.
+volatile uint16_t resetTimeout = 0;
+
+// MAH 8/15/12- let's make this an 8-bit value instead of 16- that saves on memory because 16-bit addition and
+// comparison compiles to bulkier code. Note that this does *not* require a change to the Arduino core- we're
+// just sort of ignoring the extra byte that the Arduino core puts at the next location.
+uint8_t bootKey = 0x77;
+volatile uint8_t *const bootKeyPtr = (volatile uint8_t *)0x0800;
+
+// StartSketch() is called to clean up our mess before passing execution to the sketch.
+void StartSketch(void)
+{
+ cli();
+
+ /* Undo TIMER1 setup and clear the count before running the sketch */
+ TIMSK1 = 0;
+ TCCR1B = 0;
+
+ /* Relocate the interrupt vector table to the application section */
+ MCUCR = (1 << IVCE);
+ MCUCR = 0;
+
+ L_LED_OFF();
+ TX_LED_OFF();
+ RX_LED_OFF();
+
+ /* jump to beginning of application space */
+ __asm__ volatile("jmp 0x0000");
+
+}
+
+uint16_t LLEDPulse;
+
+/** Main program entry point. This routine configures the hardware required by the bootloader, then continuously
+ * runs the bootloader processing routine until it times out or is instructed to exit.
+ */
+int main(void)
+{
+ /* Save the value of the boot key memory before it is overwritten */
+ uint8_t bootKeyPtrVal = *bootKeyPtr;
+ *bootKeyPtr = 0;
+
+ /* Check the reason for the reset so we can act accordingly */
+ uint8_t mcusr_state = MCUSR; // store the initial state of the Status register
+ MCUSR = 0; // clear all reset flags
+
+ /* Watchdog may be configured with a 15 ms period so must disable it before going any further */
+ // MAH 8/15/12- I removed this because wdt_disable() is the first thing SetupHardware() does- why
+ // do it twice right in a row?
+ //wdt_disable();
+
+ /* Setup hardware required for the bootloader */
+ // MAH 8/15/12- Moved this up to before the bootloader go/no-go decision tree so I could use the
+ // timer in that decision tree. Removed the USBInit() call from it; if I'm not going to stay in
+ // the bootloader, there's no point spending the time initializing the USB.
+ // SetupHardware();
+ wdt_disable();
+
+ // Disable clock division
+ clock_prescale_set(clock_div_1);
+
+ // Relocate the interrupt vector table to the bootloader section
+ MCUCR = (1 << IVCE);
+ MCUCR = (1 << IVSEL);
+
+ LED_SETUP();
+ CPU_PRESCALE(0);
+ L_LED_OFF();
+ TX_LED_OFF();
+ RX_LED_OFF();
+
+ // Initialize TIMER1 to handle bootloader timeout and LED tasks.
+ // With 16 MHz clock and 1/64 prescaler, timer 1 is clocked at 250 kHz
+ // Our chosen compare match generates an interrupt every 1 ms.
+ // This interrupt is disabled selectively when doing memory reading, erasing,
+ // or writing since SPM has tight timing requirements.
+
+ OCR1AH = 0;
+ OCR1AL = 250;
+ TIMSK1 = (1 << OCIE1A); // enable timer 1 output compare A match interrupt
+ TCCR1B = ((1 << CS11) | (1 << CS10)); // 1/64 prescaler on timer 1 input
+
+
+ // MAH 8/15/12- this replaces bulky pgm_read_word(0) calls later on, to save memory.
+ if (pgm_read_word(0) != 0xFFFF) sketchPresent = true;
+
+// MAH 26 Oct 2012- The "bootload or not?" section has been modified since the code released
+// with Arduino 1.0.1. The simplest modification is the replacement of equivalence checks on
+// the reset bits with masked checks, so if more than one reset occurs before the register is
+// checked, the check doesn't fail and fall through to the bootloader unnecessarily.
+
+// The second, more in depth modification addresses behavior after an external reset (i.e.,
+// user pushes the reset button). The Leonardo treats all external resets as requests to
+// re-enter the bootloader and wait for code to be loaded. It remains in bootloader mode for
+// 8 seconds before continuing on to the sketch (if one is present). By defining RESET_DELAY
+// equal to 1, this behavior will persist.
+
+// However, if RESET_DELAY is defined to 0, the reset timeout before loading the sketch drops
+// to 750ms. If, during that 750ms, another external reset occurs, THEN an 8-second delay
+// in the bootloader will occur.
+
+ // This is the "no-8-second-delay" code. If this is the first time through the loop, we
+ // don't expect to see the bootKey in memory.
+ if ( (mcusr_state & (1<<EXTRF)) && (bootKeyPtrVal != bootKey) ) {
+ *bootKeyPtr = bootKey; // Put the bootKey in memory so if we get back to this
+ // point again, we know to jump into the bootloader
+ sei(); // Enable interrupts, so we can use timer1 to track our time in the bootloader
+ while (RunBootloader)
+ {
+ if (resetTimeout > EXT_RESET_TIMEOUT_PERIOD) // resetTimeout is getting incremeted
+ RunBootloader = false; // in the timer1 ISR.
+ }
+ // If we make it past that while loop, it's sketch loading time!
+ *bootKeyPtr = 0; // clear out the bootKey; from now on, we want to treat a reset like
+ // a normal reset.
+ cli(); // Disable interrupts, in case no sketch is present.
+ RunBootloader = true; // We want to hang out in the bootloader if no sketch is present.
+ if (sketchPresent) StartSketch(); // If a sketch is present, go! Otherwise, wait around
+ // in the bootloader until one is uploaded.
+ }
+ // On a power-on reset, we ALWAYS want to go to the sketch. If there is one.
+ // This is a place where the old code had an equivalence and now there is a mask.
+ else if ( (mcusr_state & (1<<PORF)) && sketchPresent) {
+ StartSketch();
+ }
+ // On a watchdog reset, if the bootKey isn't set, and there's a sketch, we should just
+ // go straight to the sketch.
+ // This is a place where the old code had an equivalence and now there is a mask.
+ else if ( (mcusr_state & (1<<WDRF) ) && (bootKeyPtrVal != bootKey) && sketchPresent) {
+ // If it looks like an "accidental" watchdog reset then start the sketch.
+ StartSketch();
+ }
+
+ /* Initialize USB Subsystem */
+ USB_Init();
+
+ /* Enable global interrupts so that the USB stack can function */
+ sei();
+
+ Timeout = 0;
+
+ while (RunBootloader)
+ {
+ CDC_Task();
+ USB_USBTask();
+ /* Time out and start the sketch if one is present */
+ if (Timeout > TIMEOUT_PERIOD)
+ RunBootloader = false;
+
+ // MAH 8/15/12- This used to be a function call- inlining it saves a few bytes.
+ LLEDPulse++;
+ uint8_t p = LLEDPulse >> 8;
+ if (p > 127)
+ p = 254-p;
+ p += p;
+ if (((uint8_t)LLEDPulse) > p)
+ L_LED_OFF();
+ else
+ L_LED_ON();
+ }
+
+ /* Disconnect from the host - USB interface will be reset later along with the AVR */
+ USB_Detach();
+
+ /* Jump to beginning of application space to run the sketch - do not reset */
+ StartSketch();
+}
+
+// Timer1 is set up to provide periodic interrupts. This is used to flicker the LEDs during
+// programming as well as to generate the clock counts which determine how long the board should
+// remain in bootloading mode.
+
+ISR(TIMER1_COMPA_vect, ISR_BLOCK)
+{
+ /* Reset counter */
+ TCNT1H = 0;
+ TCNT1L = 0;
+
+ /* Check whether the TX or RX LED one-shot period has elapsed. if so, turn off the LED */
+ if (TxLEDPulse && !(--TxLEDPulse))
+ TX_LED_OFF();
+ if (RxLEDPulse && !(--RxLEDPulse))
+ RX_LED_OFF();
+ resetTimeout++; // Needed for the "short reset delay" mode- governs the time the board waits
+ // for a second reset before loading the sketch.
+ if (pgm_read_word(0) != 0xFFFF)
+ Timeout++;
+}
+
+// MAH 29 Oct 2012 Nothing below this point has to change for the LilyPadUSB support
+
+/** Event handler for the USB_ConfigurationChanged event. This configures the device's endpoints ready
+ * to relay data to and from the attached USB host.
+ */
+void EVENT_USB_Device_ConfigurationChanged(void)
+{
+ /* Setup CDC Notification, Rx and Tx Endpoints */
+ Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
+ ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
+ ENDPOINT_BANK_SINGLE);
+
+ Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,
+ ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
+ ENDPOINT_BANK_SINGLE);
+
+ Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK,
+ ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
+ ENDPOINT_BANK_SINGLE);
+}
+
+/** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to
+ * the device from the USB host before passing along unhandled control requests to the library for processing
+ * internally.
+ */
+void EVENT_USB_Device_ControlRequest(void)
+{
+ /* Ignore any requests that aren't directed to the CDC interface */
+ if ((USB_ControlRequest.bmRequestType & (CONTROL_REQTYPE_TYPE | CONTROL_REQTYPE_RECIPIENT)) !=
+ (REQTYPE_CLASS | REQREC_INTERFACE))
+ {
+ return;
+ }
+
+ /* Process CDC specific control requests */
+ switch (USB_ControlRequest.bRequest)
+ {
+ case CDC_REQ_GetLineEncoding:
+ if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
+ {
+ Endpoint_ClearSETUP();
+
+ /* Write the line coding data to the control endpoint */
+ Endpoint_Write_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t));
+ Endpoint_ClearOUT();
+ }
+
+ break;
+ case CDC_REQ_SetLineEncoding:
+ if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
+ {
+ Endpoint_ClearSETUP();
+
+ /* Read the line coding data in from the host into the global struct */
+ Endpoint_Read_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t));
+ Endpoint_ClearIN();
+ }
+
+ break;
+ }
+}
+
+#if !defined(NO_BLOCK_SUPPORT)
+/** Reads or writes a block of EEPROM or FLASH memory to or from the appropriate CDC data endpoint, depending
+ * on the AVR910 protocol command issued.
+ *
+ * \param[in] Command Single character AVR910 protocol command indicating what memory operation to perform
+ */
+static void ReadWriteMemoryBlock(const uint8_t Command)
+{
+ uint16_t BlockSize;
+ char MemoryType;
+
+ bool HighByte = false;
+ uint8_t LowByte = 0;
+
+ BlockSize = (FetchNextCommandByte() << 8);
+ BlockSize |= FetchNextCommandByte();
+
+ MemoryType = FetchNextCommandByte();
+
+ if ((MemoryType != 'E') && (MemoryType != 'F'))
+ {
+ /* Send error byte back to the host */
+ WriteNextResponseByte('?');
+
+ return;
+ }
+
+ /* Disable timer 1 interrupt - can't afford to process nonessential interrupts
+ * while doing SPM tasks */
+ TIMSK1 = 0;
+
+ /* Check if command is to read memory */
+ if (Command == 'g')
+ {
+ /* Re-enable RWW section */
+ boot_rww_enable();
+
+ while (BlockSize--)
+ {
+ if (MemoryType == 'F')
+ {
+ /* Read the next FLASH byte from the current FLASH page */
+ #if (FLASHEND > 0xFFFF)
+ WriteNextResponseByte(pgm_read_byte_far(CurrAddress | HighByte));
+ #else
+ WriteNextResponseByte(pgm_read_byte(CurrAddress | HighByte));
+ #endif
+
+ /* If both bytes in current word have been read, increment the address counter */
+ if (HighByte)
+ CurrAddress += 2;
+
+ HighByte = !HighByte;
+ }
+ else
+ {
+ /* Read the next EEPROM byte into the endpoint */
+ WriteNextResponseByte(eeprom_read_byte((uint8_t*)(intptr_t)(CurrAddress >> 1)));
+
+ /* Increment the address counter after use */
+ CurrAddress += 2;
+ }
+ }
+ }
+ else
+ {
+ uint32_t PageStartAddress = CurrAddress;
+
+ if (MemoryType == 'F')
+ {
+ boot_page_erase(PageStartAddress);
+ boot_spm_busy_wait();
+ }
+
+ while (BlockSize--)
+ {
+ if (MemoryType == 'F')
+ {
+ /* If both bytes in current word have been written, increment the address counter */
+ if (HighByte)
+ {
+ /* Write the next FLASH word to the current FLASH page */
+ boot_page_fill(CurrAddress, ((FetchNextCommandByte() << 8) | LowByte));
+
+ /* Increment the address counter after use */
+ CurrAddress += 2;
+ }
+ else
+ {
+ LowByte = FetchNextCommandByte();
+ }
+
+ HighByte = !HighByte;
+ }
+ else
+ {
+ /* Write the next EEPROM byte from the endpoint */
+ eeprom_write_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte());
+
+ /* Increment the address counter after use */
+ CurrAddress += 2;
+ }
+ }
+
+ /* If in FLASH programming mode, commit the page after writing */
+ if (MemoryType == 'F')
+ {
+ /* Commit the flash page to memory */
+ boot_page_write(PageStartAddress);
+
+ /* Wait until write operation has completed */
+ boot_spm_busy_wait();
+ }
+
+ /* Send response byte back to the host */
+ WriteNextResponseByte('\r');
+ }
+
+ /* Re-enable timer 1 interrupt disabled earlier in this routine */
+ TIMSK1 = (1 << OCIE1A);
+}
+#endif
+
+/** Retrieves the next byte from the host in the CDC data OUT endpoint, and clears the endpoint bank if needed
+ * to allow reception of the next data packet from the host.
+ *
+ * \return Next received byte from the host in the CDC data OUT endpoint
+ */
+static uint8_t FetchNextCommandByte(void)
+{
+ /* Select the OUT endpoint so that the next data byte can be read */
+ Endpoint_SelectEndpoint(CDC_RX_EPNUM);
+
+ /* If OUT endpoint empty, clear it and wait for the next packet from the host */
+ while (!(Endpoint_IsReadWriteAllowed()))
+ {
+ Endpoint_ClearOUT();
+
+ while (!(Endpoint_IsOUTReceived()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return 0;
+ }
+ }
+
+ /* Fetch the next byte from the OUT endpoint */
+ return Endpoint_Read_8();
+}
+
+/** Writes the next response byte to the CDC data IN endpoint, and sends the endpoint back if needed to free up the
+ * bank when full ready for the next byte in the packet to the host.
+ *
+ * \param[in] Response Next response byte to send to the host
+ */
+static void WriteNextResponseByte(const uint8_t Response)
+{
+ /* Select the IN endpoint so that the next data byte can be written */
+ Endpoint_SelectEndpoint(CDC_TX_EPNUM);
+
+ /* If IN endpoint full, clear it and wait until ready for the next packet to the host */
+ if (!(Endpoint_IsReadWriteAllowed()))
+ {
+ Endpoint_ClearIN();
+
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+ }
+
+ /* Write the next byte to the IN endpoint */
+ Endpoint_Write_8(Response);
+
+ TX_LED_ON();
+ TxLEDPulse = TX_RX_LED_PULSE_PERIOD;
+}
+
+#define STK_OK 0x10
+#define STK_INSYNC 0x14 // ' '
+#define CRC_EOP 0x20 // 'SPACE'
+#define STK_GET_SYNC 0x30 // '0'
+
+#define STK_GET_PARAMETER 0x41 // 'A'
+#define STK_SET_DEVICE 0x42 // 'B'
+#define STK_SET_DEVICE_EXT 0x45 // 'E'
+#define STK_LOAD_ADDRESS 0x55 // 'U'
+#define STK_UNIVERSAL 0x56 // 'V'
+#define STK_PROG_PAGE 0x64 // 'd'
+#define STK_READ_PAGE 0x74 // 't'
+#define STK_READ_SIGN 0x75 // 'u'
+
+/** Task to read in AVR910 commands from the CDC data OUT endpoint, process them, perform the required actions
+ * and send the appropriate response back to the host.
+ */
+void CDC_Task(void)
+{
+ /* Select the OUT endpoint */
+ Endpoint_SelectEndpoint(CDC_RX_EPNUM);
+
+ /* Check if endpoint has a command in it sent from the host */
+ if (!(Endpoint_IsOUTReceived()))
+ return;
+
+ RX_LED_ON();
+ RxLEDPulse = TX_RX_LED_PULSE_PERIOD;
+
+ /* Read in the bootloader command (first byte sent from host) */
+ uint8_t Command = FetchNextCommandByte();
+
+ if (Command == 'E')
+ {
+ /* We nearly run out the bootloader timeout clock,
+ * leaving just a few hundred milliseconds so the
+ * bootloder has time to respond and service any
+ * subsequent requests */
+ Timeout = TIMEOUT_PERIOD - 500;
+
+ /* Re-enable RWW section - must be done here in case
+ * user has disabled verification on upload. */
+ boot_rww_enable_safe();
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 'T')
+ {
+ FetchNextCommandByte();
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if ((Command == 'L') || (Command == 'P'))
+ {
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 't')
+ {
+ // Return ATMEGA128 part code - this is only to allow AVRProg to use the bootloader
+ WriteNextResponseByte(0x44);
+ WriteNextResponseByte(0x00);
+ }
+ else if (Command == 'a')
+ {
+ // Indicate auto-address increment is supported
+ WriteNextResponseByte('Y');
+ }
+ else if (Command == 'A')
+ {
+ // Set the current address to that given by the host
+ CurrAddress = (FetchNextCommandByte() << 9);
+ CurrAddress |= (FetchNextCommandByte() << 1);
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 'p')
+ {
+ // Indicate serial programmer back to the host
+ WriteNextResponseByte('S');
+ }
+ else if (Command == 'S')
+ {
+ // Write the 7-byte software identifier to the endpoint
+ for (uint8_t CurrByte = 0; CurrByte < 7; CurrByte++)
+ WriteNextResponseByte(SOFTWARE_IDENTIFIER[CurrByte]);
+ }
+ else if (Command == 'V')
+ {
+ WriteNextResponseByte('0' + BOOTLOADER_VERSION_MAJOR);
+ WriteNextResponseByte('0' + BOOTLOADER_VERSION_MINOR);
+ }
+ else if (Command == 's')
+ {
+ WriteNextResponseByte(AVR_SIGNATURE_3);
+ WriteNextResponseByte(AVR_SIGNATURE_2);
+ WriteNextResponseByte(AVR_SIGNATURE_1);
+ }
+ else if (Command == 'e')
+ {
+ // Clear the application section of flash
+ for (uint32_t CurrFlashAddress = 0; CurrFlashAddress < BOOT_START_ADDR; CurrFlashAddress += SPM_PAGESIZE)
+ {
+ boot_page_erase(CurrFlashAddress);
+ boot_spm_busy_wait();
+ boot_page_write(CurrFlashAddress);
+ boot_spm_busy_wait();
+ }
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ #if !defined(NO_LOCK_BYTE_WRITE_SUPPORT)
+ else if (Command == 'l')
+ {
+ // Set the lock bits to those given by the host
+ boot_lock_bits_set(FetchNextCommandByte());
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ #endif
+ else if (Command == 'r')
+ {
+ WriteNextResponseByte(boot_lock_fuse_bits_get(GET_LOCK_BITS));
+ }
+ else if (Command == 'F')
+ {
+ WriteNextResponseByte(boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS));
+ }
+ else if (Command == 'N')
+ {
+ WriteNextResponseByte(boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS));
+ }
+ else if (Command == 'Q')
+ {
+ WriteNextResponseByte(boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS));
+ }
+ #if !defined(NO_BLOCK_SUPPORT)
+ else if (Command == 'b')
+ {
+ WriteNextResponseByte('Y');
+
+ // Send block size to the host
+ WriteNextResponseByte(SPM_PAGESIZE >> 8);
+ WriteNextResponseByte(SPM_PAGESIZE & 0xFF);
+ }
+ else if ((Command == 'B') || (Command == 'g'))
+ {
+ // Keep resetting the timeout counter if we're receiving self-programming instructions
+ Timeout = 0;
+ // Delegate the block write/read to a separate function for clarity
+ ReadWriteMemoryBlock(Command);
+ }
+ #endif
+ #if !defined(NO_FLASH_BYTE_SUPPORT)
+ else if (Command == 'C')
+ {
+ // Write the high byte to the current flash page
+ boot_page_fill(CurrAddress, FetchNextCommandByte());
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 'c')
+ {
+ // Write the low byte to the current flash page
+ boot_page_fill(CurrAddress | 0x01, FetchNextCommandByte());
+
+ // Increment the address
+ CurrAddress += 2;
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 'm')
+ {
+ // Commit the flash page to memory
+ boot_page_write(CurrAddress);
+
+ // Wait until write operation has completed
+ boot_spm_busy_wait();
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 'R')
+ {
+ #if (FLASHEND > 0xFFFF)
+ uint16_t ProgramWord = pgm_read_word_far(CurrAddress);
+ #else
+ uint16_t ProgramWord = pgm_read_word(CurrAddress);
+ #endif
+
+ WriteNextResponseByte(ProgramWord >> 8);
+ WriteNextResponseByte(ProgramWord & 0xFF);
+ }
+ #endif
+ #if !defined(NO_EEPROM_BYTE_SUPPORT)
+ else if (Command == 'D')
+ {
+ // Read the byte from the endpoint and write it to the EEPROM
+ eeprom_write_byte((uint8_t*)((intptr_t)(CurrAddress >> 1)), FetchNextCommandByte());
+
+ // Increment the address after use
+ CurrAddress += 2;
+
+ // Send confirmation byte back to the host
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 'd')
+ {
+ // Read the EEPROM byte and write it to the endpoint
+ WriteNextResponseByte(eeprom_read_byte((uint8_t*)((intptr_t)(CurrAddress >> 1))));
+
+ // Increment the address after use
+ CurrAddress += 2;
+ }
+ #endif
+ else if (Command != 27)
+ {
+ // Unknown (non-sync) command, return fail code
+ WriteNextResponseByte('?');
+ }
+
+
+ /* Select the IN endpoint */
+ Endpoint_SelectEndpoint(CDC_TX_EPNUM);
+
+ /* Remember if the endpoint is completely full before clearing it */
+ bool IsEndpointFull = !(Endpoint_IsReadWriteAllowed());
+
+ /* Send the endpoint data to the host */
+ Endpoint_ClearIN();
+
+ /* If a full endpoint's worth of data was sent, we need to send an empty packet afterwards to signal end of transfer */
+ if (IsEndpointFull)
+ {
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+
+ Endpoint_ClearIN();
+ }
+
+ /* Wait until the data has been sent to the host */
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+
+ /* Select the OUT endpoint */
+ Endpoint_SelectEndpoint(CDC_RX_EPNUM);
+
+ /* Acknowledge the command from the host */
+ Endpoint_ClearOUT();
+}
+
diff --git a/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina.h b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina.h
new file mode 100644
index 0000000..f8251d4
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Caterina.h
@@ -0,0 +1,99 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Header file for BootloaderCDC.c.
+ */
+
+#ifndef _CDC_H_
+#define _CDC_H_
+
+ /* Includes: */
+ #include <avr/io.h>
+ #include <avr/wdt.h>
+ #include <avr/boot.h>
+ #include <avr/eeprom.h>
+ #include <avr/power.h>
+ #include <avr/interrupt.h>
+ #include <stdbool.h>
+
+ #include "Descriptors.h"
+
+ #include <LUFA/Drivers/USB/USB.h>
+ /* Macros: */
+ /** Version major of the CDC bootloader. */
+ #define BOOTLOADER_VERSION_MAJOR 0x01
+
+ /** Version minor of the CDC bootloader. */
+ #define BOOTLOADER_VERSION_MINOR 0x00
+
+ /** Hardware version major of the CDC bootloader. */
+ #define BOOTLOADER_HWVERSION_MAJOR 0x01
+
+ /** Hardware version minor of the CDC bootloader. */
+ #define BOOTLOADER_HWVERSION_MINOR 0x00
+
+ /** Eight character bootloader firmware identifier reported to the host when requested */
+ #define SOFTWARE_IDENTIFIER "CATERINA"
+
+ #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
+ #define LED_SETUP() DDRC |= (1<<7); DDRB |= (1<<0); DDRD |= (1<<5);
+ #define L_LED_OFF() PORTC &= ~(1<<7)
+ #define L_LED_ON() PORTC |= (1<<7)
+ #define L_LED_TOGGLE() PORTC ^= (1<<7)
+ #define TX_LED_OFF() PORTD |= (1<<5)
+ #define TX_LED_ON() PORTD &= ~(1<<5)
+ #define RX_LED_OFF() PORTB |= (1<<0)
+ #define RX_LED_ON() PORTB &= ~(1<<0)
+
+ /* Type Defines: */
+ /** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
+ typedef void (*AppPtr_t)(void) ATTR_NO_RETURN;
+
+ /* Function Prototypes: */
+ void StartSketch(void);
+ void LEDPulse(void);
+
+ void CDC_Task(void);
+ void SetupHardware(void);
+
+ void EVENT_USB_Device_ConfigurationChanged(void);
+
+ #if defined(INCLUDE_FROM_CATERINA_C) || defined(__DOXYGEN__)
+ #if !defined(NO_BLOCK_SUPPORT)
+ static void ReadWriteMemoryBlock(const uint8_t Command);
+ #endif
+ static uint8_t FetchNextCommandByte(void);
+ static void WriteNextResponseByte(const uint8_t Response);
+ #endif
+
+#endif
+
diff --git a/hardware/arduino/bootloaders/caterina-LilyPadUSB/Descriptors.c b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Descriptors.c
new file mode 100644
index 0000000..f58519f
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Descriptors.c
@@ -0,0 +1,260 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
+ * computer-readable structures which the host requests upon device enumeration, to determine
+ * the device's capabilities and functions.
+ */
+
+#include "Descriptors.h"
+
+/** Device descriptor structure. This descriptor, located in SRAM memory, describes the overall
+ * device characteristics, including the supported USB version, control endpoint size and the
+ * number of device configurations. The descriptor is read out by the USB host when the enumeration
+ * process begins.
+ */
+const USB_Descriptor_Device_t DeviceDescriptor =
+{
+ .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
+
+ .USBSpecification = VERSION_BCD(01.10),
+ .Class = CDC_CSCP_CDCClass,
+ .SubClass = CDC_CSCP_NoSpecificSubclass,
+ .Protocol = CDC_CSCP_NoSpecificProtocol,
+
+ .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
+
+ .VendorID = DEVICE_VID,
+ .ProductID = DEVICE_PID,
+ .ReleaseNumber = VERSION_BCD(00.01),
+
+ .ManufacturerStrIndex = 0x02,
+ .ProductStrIndex = 0x01,
+ .SerialNumStrIndex = NO_DESCRIPTOR,
+
+ .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
+};
+
+/** Configuration descriptor structure. This descriptor, located in SRAM memory, describes the usage
+ * of the device in one of its supported configurations, including information about any device interfaces
+ * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
+ * a configuration so that the host may correctly communicate with the USB device.
+ */
+const USB_Descriptor_Configuration_t ConfigurationDescriptor =
+{
+ .Config =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
+
+ .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
+ .TotalInterfaces = 2,
+
+ .ConfigurationNumber = 1,
+ .ConfigurationStrIndex = NO_DESCRIPTOR,
+
+ .ConfigAttributes = USB_CONFIG_ATTR_BUSPOWERED,
+
+ .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
+ },
+
+ .CDC_CCI_Interface =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
+
+ .InterfaceNumber = 0,
+ .AlternateSetting = 0,
+
+ .TotalEndpoints = 1,
+
+ .Class = CDC_CSCP_CDCClass,
+ .SubClass = CDC_CSCP_ACMSubclass,
+ .Protocol = CDC_CSCP_ATCommandProtocol,
+
+ .InterfaceStrIndex = NO_DESCRIPTOR
+ },
+
+ .CDC_Functional_Header =
+ {
+ .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
+ .Subtype = 0x00,
+
+ .CDCSpecification = VERSION_BCD(01.10),
+ },
+
+ .CDC_Functional_ACM =
+ {
+ .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
+ .Subtype = 0x02,
+
+ .Capabilities = 0x04,
+ },
+
+ .CDC_Functional_Union =
+ {
+ .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
+ .Subtype = 0x06,
+
+ .MasterInterfaceNumber = 0,
+ .SlaveInterfaceNumber = 1,
+ },
+
+ .CDC_NotificationEndpoint =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
+
+ .EndpointAddress = (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM),
+ .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
+ .EndpointSize = CDC_NOTIFICATION_EPSIZE,
+ .PollingIntervalMS = 0xFF
+ },
+
+ .CDC_DCI_Interface =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
+
+ .InterfaceNumber = 1,
+ .AlternateSetting = 0,
+
+ .TotalEndpoints = 2,
+
+ .Class = CDC_CSCP_CDCDataClass,
+ .SubClass = CDC_CSCP_NoDataSubclass,
+ .Protocol = CDC_CSCP_NoDataProtocol,
+
+ .InterfaceStrIndex = NO_DESCRIPTOR
+ },
+
+ .CDC_DataOutEndpoint =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
+
+ .EndpointAddress = (ENDPOINT_DIR_OUT | CDC_RX_EPNUM),
+ .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
+ .EndpointSize = CDC_TXRX_EPSIZE,
+ .PollingIntervalMS = 0x01
+ },
+
+ .CDC_DataInEndpoint =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
+
+ .EndpointAddress = (ENDPOINT_DIR_IN | CDC_TX_EPNUM),
+ .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
+ .EndpointSize = CDC_TXRX_EPSIZE,
+ .PollingIntervalMS = 0x01
+ }
+};
+
+/** Language descriptor structure. This descriptor, located in SRAM memory, is returned when the host requests
+ * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
+ * via the language ID table available at USB.org what languages the device supports for its string descriptors.
+ */
+const USB_Descriptor_String_t LanguageString =
+{
+ .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
+
+ .UnicodeString = {LANGUAGE_ID_ENG}
+};
+
+/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
+ * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
+ * Descriptor.
+ */
+const USB_Descriptor_String_t ProductString =
+{
+ .Header = {.Size = USB_STRING_LEN(16), .Type = DTYPE_String},
+ #if DEVICE_PID == 0x9207
+ .UnicodeString = L"LilyPadUSB "
+ #else
+ .UnicodeString = L"USB IO board "
+ #endif
+};
+
+const USB_Descriptor_String_t ManufNameString =
+{
+ .Header = {.Size = USB_STRING_LEN(20), .Type = DTYPE_String},
+ #if DEVICE_VID == 0x1B4F
+ .UnicodeString = L"SparkFun Electronics"
+ #else
+ .UnicodeString = L"Unknown "
+ #endif
+};
+
+/** This function is called by the library when in device mode, and must be overridden (see LUFA library "USB Descriptors"
+ * documentation) by the application code so that the address and size of a requested descriptor can be given
+ * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
+ * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
+ * USB host.
+ */
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
+ const uint8_t wIndex,
+ const void** const DescriptorAddress)
+{
+ const uint8_t DescriptorType = (wValue >> 8);
+ const uint8_t DescriptorNumber = (wValue & 0xFF);
+
+ const void* Address = NULL;
+ uint16_t Size = NO_DESCRIPTOR;
+
+ switch (DescriptorType)
+ {
+ case DTYPE_Device:
+ Address = &DeviceDescriptor;
+ Size = sizeof(USB_Descriptor_Device_t);
+ break;
+ case DTYPE_Configuration:
+ Address = &ConfigurationDescriptor;
+ Size = sizeof(USB_Descriptor_Configuration_t);
+ break;
+ case DTYPE_String:
+ if (!(DescriptorNumber))
+ {
+ Address = &LanguageString;
+ Size = LanguageString.Header.Size;
+ }
+ else if (DescriptorNumber == DeviceDescriptor.ProductStrIndex)
+ {
+ Address = &ProductString;
+ Size = ProductString.Header.Size;
+ } else if (DescriptorNumber == DeviceDescriptor.ManufacturerStrIndex)
+ {
+ Address = &ManufNameString;
+ Size = ManufNameString.Header.Size;
+ }
+
+ break;
+ }
+
+ *DescriptorAddress = Address;
+ return Size;
+}
+
diff --git a/hardware/arduino/bootloaders/caterina-LilyPadUSB/Descriptors.h b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Descriptors.h
new file mode 100644
index 0000000..94091ae
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Descriptors.h
@@ -0,0 +1,139 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Header file for Descriptors.c.
+ */
+
+#ifndef _DESCRIPTORS_H_
+#define _DESCRIPTORS_H_
+
+ /* Includes: */
+ #include <LUFA/Drivers/USB/USB.h>
+
+ /* Macros: */
+ #if defined(__AVR_AT90USB1287__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x97
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_AT90USB647__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x96
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_AT90USB1286__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x97
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_AT90USB646__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x96
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_ATmega32U6__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x95
+ #define AVR_SIGNATURE_3 0x88
+ #elif defined(__AVR_ATmega32U4__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x95
+ #define AVR_SIGNATURE_3 0x87
+ #elif defined(__AVR_ATmega16U4__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x94
+ #define AVR_SIGNATURE_3 0x88
+ #elif defined(__AVR_ATmega32U2__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x95
+ #define AVR_SIGNATURE_3 0x8A
+ #elif defined(__AVR_ATmega16U2__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x94
+ #define AVR_SIGNATURE_3 0x89
+ #elif defined(__AVR_AT90USB162__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x94
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_ATmega8U2__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x93
+ #define AVR_SIGNATURE_3 0x89
+ #elif defined(__AVR_AT90USB82__)
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x94
+ #define AVR_SIGNATURE_3 0x82
+ #else
+ #error The selected AVR part is not currently supported by this bootloader.
+ #endif
+
+ /** Endpoint number for the CDC control interface event notification endpoint. */
+ #define CDC_NOTIFICATION_EPNUM 2
+
+ /** Endpoint number for the CDC data interface TX (data IN) endpoint. */
+ #define CDC_TX_EPNUM 3
+
+ /** Endpoint number for the CDC data interface RX (data OUT) endpoint. */
+ #define CDC_RX_EPNUM 4
+
+ /** Size of the CDC data interface TX and RX data endpoint banks, in bytes. */
+ #define CDC_TXRX_EPSIZE 16
+
+ /** Size of the CDC control interface notification endpoint bank, in bytes. */
+ #define CDC_NOTIFICATION_EPSIZE 8
+
+ /* Type Defines: */
+ /** Type define for the device configuration descriptor structure. This must be defined in the
+ * application code, as the configuration descriptor contains several sub-descriptors which
+ * vary between devices, and which describe the device's usage to the host.
+ */
+ typedef struct
+ {
+ USB_Descriptor_Configuration_Header_t Config;
+
+ // CDC Control Interface
+ USB_Descriptor_Interface_t CDC_CCI_Interface;
+ USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header;
+ USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM;
+ USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union;
+ USB_Descriptor_Endpoint_t CDC_NotificationEndpoint;
+
+ // CDC Data Interface
+ USB_Descriptor_Interface_t CDC_DCI_Interface;
+ USB_Descriptor_Endpoint_t CDC_DataOutEndpoint;
+ USB_Descriptor_Endpoint_t CDC_DataInEndpoint;
+ } USB_Descriptor_Configuration_t;
+
+ /* Function Prototypes: */
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
+ const uint8_t wIndex,
+ const void** const DescriptorAddress)
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
+
+#endif
+
diff --git a/hardware/arduino/bootloaders/caterina-LilyPadUSB/Makefile b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Makefile
new file mode 100644
index 0000000..8443e14
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Makefile
@@ -0,0 +1,716 @@
+# Hey Emacs, this is a -*- makefile -*-
+#----------------------------------------------------------------------------
+# WinAVR Makefile Template written by Eric B. Weddington, JöWunsch, et al.
+# >> Modified for use with the LUFA project. <<
+#
+# Released to the Public Domain
+#
+# Additional material for this makefile was written by:
+# Peter Fleury
+# Tim Henigan
+# Colin O'Flynn
+# Reiner Patommel
+# Markus Pfaff
+# Sander Pool
+# Frederik Rouleau
+# Carlos Lamas
+# Dean Camera
+# Opendous Inc.
+# Denver Gingerich
+#
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device, using avrdude.
+# Please customize the avrdude settings below first!
+#
+# make doxygen = Generate DoxyGen documentation for the project (must have
+# DoxyGen installed)
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+# with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+# bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+# USB vendor ID (VID)
+# official Arduino LLC VID = 0x2341
+# SparkFun VID = 0x1B4F
+VID = 0x1B4F
+
+# USB product ID (PID)
+# official Leonardo PID = 0x0036
+# SparkFun LilyPadUSB PID = 0x9207
+PID = 0x9207
+
+# MCU name
+MCU = atmega32u4
+
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Target board (see library "Board Types" documentation, NONE for projects not requiring
+# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
+# "Board" inside the application directory.
+BOARD = USER
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 8000000
+
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+
+# Starting byte address of the bootloader, as a byte address - computed via the formula
+# BOOT_START = ((FLASH_SIZE_KB - BOOT_SECTION_SIZE_KB) * 1024)
+#
+# Note that the bootloader size and start address given in AVRStudio is in words and not
+# bytes, and so will need to be doubled to obtain the byte address needed by AVR-GCC.
+FLASH_SIZE_KB = 32
+BOOT_SECTION_SIZE_KB = 4
+BOOT_START = 0x$(shell echo "obase=16; ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024" | bc)
+
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+
+# Target file name (without extension).
+TARGET = Caterina
+
+
+# Object files directory
+# To put object files in current directory, use a dot (.), do NOT make
+# this an empty or blank macro!
+OBJDIR = .
+
+
+# Path to the LUFA library
+LUFA_PATH = LUFA-111009
+
+
+# LUFA library compile-time options and predefined tokens
+LUFA_OPTS = -D USB_DEVICE_ONLY
+LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
+LUFA_OPTS += -D ORDERED_EP_CONFIG
+LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
+LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
+LUFA_OPTS += -D USE_RAM_DESCRIPTORS
+LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
+LUFA_OPTS += -D NO_INTERNAL_SERIAL
+LUFA_OPTS += -D NO_DEVICE_SELF_POWER
+LUFA_OPTS += -D NO_DEVICE_REMOTE_WAKEUP
+LUFA_OPTS += -D NO_SOF_EVENTS
+
+#LUFA_OPTS += -D NO_BLOCK_SUPPORT
+#LUFA_OPTS += -D NO_EEPROM_BYTE_SUPPORT
+#LUFA_OPTS += -D NO_FLASH_BYTE_SUPPORT
+LUFA_OPTS += -D NO_LOCK_BYTE_WRITE_SUPPORT
+
+
+# Create the LUFA source path variables by including the LUFA root makefile
+include $(LUFA_PATH)/LUFA/makefile
+
+
+# List C source files here. (C dependencies are automatically generated.)
+SRC = $(TARGET).c \
+ Descriptors.c \
+ $(LUFA_SRC_USB) \
+
+
+# List C++ source files here. (C dependencies are automatically generated.)
+CPPSRC =
+
+
+# List Assembler source files here.
+# Make them always end in a capital .S. Files ending in a lowercase .s
+# will not be considered source files but generated files (assembler
+# output from the compiler), and will be deleted upon "make clean"!
+# Even though the DOS/Win* filesystem matches both .s and .S the same,
+# it will preserve the spelling of the filenames, and gcc itself does
+# care about how the name is spelled on its command-line.
+ASRC =
+
+
+# Optimization level, can be [0, 1, 2, 3, s].
+# 0 = turn off optimization. s = optimize for size.
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+
+
+# Debugging format.
+# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
+# AVR Studio 4.10 requires dwarf-2.
+# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
+DEBUG = dwarf-2
+
+
+# List any extra directories to look for include files here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRAINCDIRS = $(LUFA_PATH)/
+
+
+# Compiler flag to set the C Standard level.
+# c89 = "ANSI" C
+# gnu89 = c89 plus GCC extensions
+# c99 = ISO C99 standard (not yet fully implemented)
+# gnu99 = c99 plus GCC extensions
+CSTANDARD = -std=c99
+
+
+# Place -D or -U options here for C sources
+CDEFS = -DF_CPU=$(F_CPU)UL
+CDEFS += -DF_USB=$(F_USB)UL
+CDEFS += -DBOARD=BOARD_$(BOARD) -DARCH=ARCH_$(ARCH)
+CDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL
+CDEFS += -DDEVICE_VID=$(VID)UL
+CDEFS += -DDEVICE_PID=$(PID)UL
+CDEFS += $(LUFA_OPTS)
+
+
+# Place -D or -U options here for ASM sources
+ADEFS = -DF_CPU=$(F_CPU)
+ADEFS += -DF_USB=$(F_USB)UL
+ADEFS += -DBOARD=BOARD_$(BOARD)
+ADEFS += -DBOOT_START_ADDR=$(BOOT_START)UL
+ADEFS += $(LUFA_OPTS)
+
+
+# Place -D or -U options here for C++ sources
+CPPDEFS = -DF_CPU=$(F_CPU)UL
+CPPDEFS += -DF_USB=$(F_USB)UL
+CPPDEFS += -DBOARD=BOARD_$(BOARD)
+CPPDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL
+CPPDEFS += $(LUFA_OPTS)
+#CPPDEFS += -D__STDC_LIMIT_MACROS
+#CPPDEFS += -D__STDC_CONSTANT_MACROS
+
+
+
+#---------------- Compiler Options C ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CFLAGS = -g$(DEBUG)
+CFLAGS += $(CDEFS)
+CFLAGS += -O$(OPT)
+CFLAGS += -funsigned-char
+CFLAGS += -funsigned-bitfields
+CFLAGS += -ffunction-sections
+CFLAGS += -fno-inline-small-functions
+CFLAGS += -fpack-struct
+CFLAGS += -fshort-enums
+CFLAGS += -fno-strict-aliasing
+CFLAGS += -Wall
+CFLAGS += -Wstrict-prototypes
+#CFLAGS += -mshort-calls
+#CFLAGS += -fno-unit-at-a-time
+#CFLAGS += -Wundef
+#CFLAGS += -Wunreachable-code
+#CFLAGS += -Wsign-compare
+CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS += $(CSTANDARD)
+
+
+#---------------- Compiler Options C++ ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CPPFLAGS = -g$(DEBUG)
+CPPFLAGS += $(CPPDEFS)
+CPPFLAGS += -O$(OPT)
+CPPFLAGS += -funsigned-char
+CPPFLAGS += -funsigned-bitfields
+CPPFLAGS += -fpack-struct
+CPPFLAGS += -fshort-enums
+CPPFLAGS += -fno-exceptions
+CPPFLAGS += -Wall
+CPPFLAGS += -Wundef
+#CPPFLAGS += -mshort-calls
+#CPPFLAGS += -fno-unit-at-a-time
+#CPPFLAGS += -Wstrict-prototypes
+#CPPFLAGS += -Wunreachable-code
+#CPPFLAGS += -Wsign-compare
+CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
+CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+#CPPFLAGS += $(CSTANDARD)
+
+
+#---------------- Assembler Options ----------------
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns: create listing
+# -gstabs: have the assembler create line number information; note that
+# for use in COFF files, additional information about filenames
+# and function names needs to be present in the assembler source
+# files -- see avr-libc docs [FIXME: not yet described there]
+# -listing-cont-lines: Sets the maximum number of continuation lines of hex
+# dump that will be displayed for a given single line of source input.
+ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
+
+
+#---------------- Library Options ----------------
+# Minimalistic printf version
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
+
+# Floating point printf version (requires MATH_LIB = -lm below)
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
+
+# If this is left blank, then it will use the Standard printf version.
+PRINTF_LIB =
+#PRINTF_LIB = $(PRINTF_LIB_MIN)
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
+
+
+# Minimalistic scanf version
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
+
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
+
+# If this is left blank, then it will use the Standard scanf version.
+SCANF_LIB =
+#SCANF_LIB = $(SCANF_LIB_MIN)
+#SCANF_LIB = $(SCANF_LIB_FLOAT)
+
+
+MATH_LIB = -lm
+
+
+# List any extra directories to look for libraries here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRALIBDIRS =
+
+
+
+#---------------- External Memory Options ----------------
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# used for variables (.data/.bss) and heap (malloc()).
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# only used for heap (malloc()).
+#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
+
+EXTMEMOPTS =
+
+
+
+#---------------- Linker Options ----------------
+# -Wl,...: tell GCC to pass this to linker.
+# -Map: create map file
+# --cref: add cross reference to map file
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
+LDFLAGS += -Wl,--section-start=.text=$(BOOT_START)
+LDFLAGS += -Wl,--relax
+LDFLAGS += -Wl,--gc-sections
+LDFLAGS += $(EXTMEMOPTS)
+LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
+#LDFLAGS += -T linker_script.x
+
+
+
+#---------------- Programming Options (avrdude) ----------------
+
+# Programming hardware
+# Type: avrdude -c ?
+# to get a full listing.
+#
+AVRDUDE_PROGRAMMER = avrispmkII
+
+# com1 = serial port. Use lpt1 to connect to parallel port.
+AVRDUDE_PORT = usb
+
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+AVRDUDE_WRITE_FUSES = -U efuse:w:0xce:m
+AVRDUDE_WRITE_FUSES += -U hfuse:w:0xd8:m
+AVRDUDE_WRITE_FUSES += -U lfuse:w:0xff:m
+
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE_COUNTER = -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_NO_VERIFY = -V
+
+# Increase verbosity level. Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
+# to submit bug reports.
+#AVRDUDE_VERBOSE = -v -v
+
+AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
+
+
+
+#---------------- Debugging Options ----------------
+
+# For simulavr only - target MCU frequency.
+DEBUG_MFREQ = $(F_CPU)
+
+# Set the DEBUG_UI to either gdb or insight.
+# DEBUG_UI = gdb
+DEBUG_UI = insight
+
+# Set the debugging back-end to either avarice, simulavr.
+DEBUG_BACKEND = avarice
+#DEBUG_BACKEND = simulavr
+
+# GDB Init Filename.
+GDBINIT_FILE = __avr_gdbinit
+
+# When using avarice settings for the JTAG
+JTAG_DEV = /dev/com1
+
+# Debugging port used to communicate between GDB / avarice / simulavr.
+DEBUG_PORT = 4242
+
+# Debugging host used to communicate between GDB / avarice / simulavr, normally
+# just set to localhost unless doing some sort of crazy debugging when
+# avarice is running on a different computer.
+DEBUG_HOST = localhost
+
+
+
+#============================================================================
+
+
+# Define programs and commands.
+SHELL = sh
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+AR = avr-ar rcs
+NM = avr-nm
+AVRDUDE = avrdude -B 1
+REMOVE = rm -f
+REMOVEDIR = rm -rf
+COPY = cp
+WINSHELL = cmd
+
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_BEGIN = -------- begin --------
+MSG_END = -------- end --------
+MSG_SIZE_BEFORE = Size before:
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for Flash:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling C:
+MSG_COMPILING_CPP = Compiling C++:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+MSG_CREATING_LIBRARY = Creating library:
+
+
+
+
+# Define all object files.
+OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
+
+# Define all listing files.
+LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
+
+
+# Compiler flags to generate dependency files.
+GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
+
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
+ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+# Default target.
+all: begin gccversion sizebefore build sizeafter end
+
+# Change the build target to build a HEX file or a library.
+build: elf hex eep lss sym
+#build: lib
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lss: $(TARGET).lss
+sym: $(TARGET).sym
+LIBNAME=lib$(TARGET).a
+lib: $(LIBNAME)
+
+
+
+# Eye candy.
+# AVR Studio 3.x does not check make's exit code but relies on
+# the following magic strings to be generated by the compile job.
+begin:
+ @echo
+ @echo $(MSG_BEGIN)
+
+end:
+ @echo $(MSG_END)
+ @echo
+
+
+# Display size of file.
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
+ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
+MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
+FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
+
+
+sizebefore:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+sizeafter:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+
+
+# Display compiler version information.
+gccversion :
+ @$(CC) --version
+
+
+# Program the device.
+program: $(TARGET).hex $(TARGET).eep
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) $(AVRDUDE_WRITE_FUSES)
+
+
+# Generate avr-gdb config/init file which does the following:
+# define the reset signal, load the target file, connect to target, and set
+# a breakpoint at main().
+gdb-config:
+ @$(REMOVE) $(GDBINIT_FILE)
+ @echo define reset >> $(GDBINIT_FILE)
+ @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
+ @echo end >> $(GDBINIT_FILE)
+ @echo file $(TARGET).elf >> $(GDBINIT_FILE)
+ @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
+ifeq ($(DEBUG_BACKEND),simulavr)
+ @echo load >> $(GDBINIT_FILE)
+endif
+ @echo break main >> $(GDBINIT_FILE)
+
+debug: gdb-config $(TARGET).elf
+ifeq ($(DEBUG_BACKEND), avarice)
+ @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
+ @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
+ $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
+ @$(WINSHELL) /c pause
+
+else
+ @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
+ $(DEBUG_MFREQ) --port $(DEBUG_PORT)
+endif
+ @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
+
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
+COFFCONVERT = $(OBJCOPY) --debugging
+COFFCONVERT += --change-section-address .data-0x800000
+COFFCONVERT += --change-section-address .bss-0x800000
+COFFCONVERT += --change-section-address .noinit-0x800000
+COFFCONVERT += --change-section-address .eeprom-0x810000
+
+coff: $(TARGET).elf
+ @echo
+ @echo $(MSG_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
+
+extcoff: $(TARGET).elf
+ @echo
+ @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+ @echo
+ @echo $(MSG_FLASH) $@
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@
+
+%.eep: %.elf
+ @echo
+ @echo $(MSG_EEPROM) $@
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+ --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+ @echo
+ @echo $(MSG_EXTENDED_LISTING) $@
+ $(OBJDUMP) -h -S -z $< > $@
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+ @echo
+ @echo $(MSG_SYMBOL_TABLE) $@
+ $(NM) -n $< > $@
+
+
+
+# Create library from object files.
+.SECONDARY : $(TARGET).a
+.PRECIOUS : $(OBJ)
+%.a: $(OBJ)
+ @echo
+ @echo $(MSG_CREATING_LIBRARY) $@
+ $(AR) $@ $(OBJ)
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(TARGET).elf
+.PRECIOUS : $(OBJ)
+%.elf: $(OBJ)
+ @echo
+ @echo $(MSG_LINKING) $@
+ $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
+
+
+# Compile: create object files from C source files.
+$(OBJDIR)/%.o : %.c
+ @echo
+ @echo $(MSG_COMPILING) $<
+ $(CC) -c $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create object files from C++ source files.
+$(OBJDIR)/%.o : %.cpp
+ @echo
+ @echo $(MSG_COMPILING_CPP) $<
+ $(CC) -c $(ALL_CPPFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C source files.
+%.s : %.c
+ $(CC) -S $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C++ source files.
+%.s : %.cpp
+ $(CC) -S $(ALL_CPPFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files.
+$(OBJDIR)/%.o : %.S
+ @echo
+ @echo $(MSG_ASSEMBLING) $<
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+
+# Create preprocessed source for use in sending a bug report.
+%.i : %.c
+ $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
+
+
+# Target: clean project.
+clean: begin clean_list end
+
+clean_list :
+ @echo
+ @echo $(MSG_CLEANING)
+ $(REMOVE) $(TARGET).hex
+ $(REMOVE) $(TARGET).eep
+ $(REMOVE) $(TARGET).cof
+ $(REMOVE) $(TARGET).elf
+ $(REMOVE) $(TARGET).map
+ $(REMOVE) $(TARGET).sym
+ $(REMOVE) $(TARGET).lss
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
+ $(REMOVE) $(SRC:.c=.s)
+ $(REMOVE) $(SRC:.c=.d)
+ $(REMOVE) $(SRC:.c=.i)
+ $(REMOVEDIR) .dep
+
+doxygen:
+ @echo Generating Project Documentation \($(TARGET)\)...
+ @doxygen Doxygen.conf
+ @echo Documentation Generation Complete.
+
+clean_doxygen:
+ rm -rf Documentation
+
+checksource:
+ @for f in $(SRC) $(CPPSRC) $(ASRC); do \
+ if [ -f $$f ]; then \
+ echo "Found Source File: $$f" ; \
+ else \
+ echo "Source File Not Found: $$f" ; \
+ fi; done
+
+
+# Create object files directory
+$(shell mkdir $(OBJDIR) 2>/dev/null)
+
+
+# Include the dependency files.
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
+
+
+# Listing of phony targets.
+.PHONY : all begin finish end sizebefore sizeafter gccversion \
+build elf hex eep lss sym coff extcoff doxygen clean \
+clean_list clean_doxygen program debug gdb-config checksource
+
diff --git a/hardware/arduino/bootloaders/caterina-LilyPadUSB/Readme.txt b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Readme.txt
new file mode 100644
index 0000000..9656a6e
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina-LilyPadUSB/Readme.txt
@@ -0,0 +1,11 @@
+Building the bootloader for the LilyPadUSB
+1. Download the LUFA-111009 file (http://fourwalledcubicle.com/blog/2011/10/lufa-111009-released/).
+2. Extract that file directly to the Caterina-LilyPadUSB bootloader directory.
+3. Open a command prompt in the Caterina-LilyPadUSB bootloader directory.
+4. Type 'make'.
+5. Enjoy!
+
+Programming the bootloader for the LilyPadUSB
+1. Open a command prompt in the Caterina-LilyPadUSB folder.
+2. Connect your programmer- use a 2x3 .1" header, pressed against the programming vias.
+3. Type 'make program' into the command prompt.
\ No newline at end of file
diff --git a/hardware/arduino/bootloaders/caterina/Caterina-Esplora.hex b/hardware/arduino/bootloaders/caterina/Caterina-Esplora.hex
new file mode 100644
index 0000000..b1bfb27
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Caterina-Esplora.hex
@@ -0,0 +1,1024 @@
+:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
+:200020000C9496010C9496010C94F6040C947D050C9496010C9496010C9496010C949601BA
+:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
+:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
+:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
+:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4
+:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D
+:2000E0000202040302020202060606060606040402020204040802011040804010204080A8
+:200100004080080204018040201002011080102040400000000200080E0000030401000BB2
+:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD
+:200140006F0020004500730070006C006F007200610020001803410072006400750069000A
+:200160006E006F0020004C004C004300120100020000004041233C8000010102000112011A
+:2001800000020200004041233C8000010102000100C18081C1080B0002020201000904004C
+:2001A000000102020000052400100105240101010424020605240600010705810310004094
+:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186
+:2001E000008501050919012903150025019503750181029501750581030501093009310943
+:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D
+:20022000019508810295017508810395067508150025650507190029658100C0090402004C
+:2002400001030000000921010100012265000705840340000100000000000000002A2B2895
+:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
+:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
+:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041007150811241FBE85
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0EAF2E102C005900D92AC32B107D9F711E071
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944A09C63D07
+:20032000D107C9F70E946C030C944E090C9400008091000161E00E94390368EE73E080E043
+:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
+:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
+:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
+:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
+:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
+:2003E000B0932F01BF91AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB734
+:20040000F89480912C0190912D01A0912E01B0912F0166B5A89B05C06F3F19F00196A11DC3
+:20042000B11D7FBFBA2FA92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A9577
+:20044000D1F7BC012DC0FFB7F89480912C0190912D01A0912E01B0912F01E6B5A89B05C0E7
+:20046000EF3F19F00196A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880FFD
+:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
+:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
+:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
+:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
+:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
+:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
+:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
+:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
+:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
+:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
+:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
+:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
+:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
+:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
+:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
+:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
+:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
+:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
+:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
+:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
+:20070000809137018823C1F057FF1AC015C02898909336018091F1008193E217F307B9F75C
+:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
+:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
+:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
+:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
+:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
+:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
+:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
+:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
+:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289805
+:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
+:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
+:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
+:2008A00008955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93CF93DF93A8
+:2008C000E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72E67E0962EC4
+:2008E0009E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22ED12CC82259
+:20090000D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200252D281B3E
+:200920009FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD013BC0822F1E
+:2009400090E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F406C01092D2
+:20096000F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC010196E491FE
+:20098000E093F10031503323C1F706C081918093F10091509923D1F7020F111D8091E800EB
+:2009A00085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9884E68093F1
+:2009C0003501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF90BF90AF906D
+:2009E0009F908F907F906F905F9008951F920F920FB60F9211242F933F934F935F936F93B8
+:200A00007F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC01092E900B0
+:200A200081E08093EB001092EC0082E38093ED001092370188E08093F00092FF34C083E037
+:200A40008093E9008091F200882319F08AE38093E8008FB7F89492E09093E9009091F20018
+:200A60008FBF992321F082E891E00E94530780913501882351F080913501815080933501F0
+:200A800080913501882309F45D9A80913601882351F0809136018150809336018091360191
+:200AA000882309F4289AFF91EF91BF91AF919F918F917F916F915F914F913F912F910F90CD
+:200AC0000FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8019D
+:200AE0000E947907C8010E941209898190E00F90CF91DF911F910F9108951F920F920FB661
+:200B00000F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF9355
+:200B2000FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE01319679
+:200B40009E01275F3F4F03C08091F1008193E217F307D1F7289884E68093360182EF809356
+:200B6000E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C901807672
+:200B80009070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C08330A3
+:200BA00009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC019
+:200BC0001C81EF80F8841230C1F51092E900109239011092380110923B0110923A010E94F6
+:200BE000640599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF44
+:200C0000998B2091380130913901275F3F4F3C872B878D871092E9001092390110923801EC
+:200C2000F0923B01E0923A0180E0BF0149E050E00E94CC030E94640585C01092E9001092E2
+:200C4000390110923801F0923B01E0923A01123241F482E290E00E940A09892B09F476C02B
+:200C600071C0113079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE68D
+:200C8000F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C00A
+:200CA000813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F447C08830C6
+:200CC00021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E3A1
+:200CE0009093E9003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA00FA
+:200D00001092EA008B81809337011CC08F8198851092E900109239011092380190933B0146
+:200D200080933A018D81882329F4CE0101960E94850706C0823051F4CE0101960E94DB0754
+:200D4000882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBF37
+:200D6000CF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF9004
+:200D8000EF900F900FBE0F901F90189520917E0130917F018091800190918101281B390B40
+:200DA0002F733070C901089520917E0130917F0180918001909181012817390719F42FEF3A
+:200DC0003FEF09C0E0918001F0918101E25CFE4F8081282F30E0C901089520917E013091DC
+:200DE0007F0180918001909181012817390719F42FEF3FEF13C0E0918001F0918101E25C60
+:200E0000FE4F2081809180019091810101968F739070909381018093800130E0C901089566
+:200E2000109285011092840188EE93E0A0E0B0E08093860190938701A0938801B09389019C
+:200E400080E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838B
+:200E600080910901882369F083E0BE016F5F7F4F41E050E00E9451041816190614F49C015B
+:200E800007C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00D
+:200EA0000E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E0917E01F091B8
+:200EC0007F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73D070809154
+:200EE000800190918101C817D90701F7DF91CF910895FC0180818E5F808380E865E971E0B5
+:200F000042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E062E071E09A
+:200F200047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E00E9410042B
+:200F400036C0823209F035C08281809309018091020190910301A0910401B0910501805B48
+:200F60009440A040B04019F58091090180FD12C087E797E790930108809300082BE088E1AE
+:200F800090E00FB6F894A895809360000FBE209360000DC088E10FB6F89480936000109264
+:200FA00060000FBEA895109201081092000881E0089580E00895FC0191818081813A31F487
+:200FC000913089F080E0933089F40DC0813269F49B3021F4828180930A0105C09A3029F4AD
+:200FE000828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC01ED91FC91E5
+:201000000480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D09958F2D90E0E8
+:201020001F910F91FF90EF90089510929001109294011092930182E291E090939201809377
+:2010400091010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0184E0BE0137
+:201060006F5F7F4F41E050E00E94510484E4B801A7010E9451040F90CF91DF911F910F910D
+:20108000FF90EF90089582E048E050E00E9422080895FC01168217821086118612861386F6
+:2010A00014823496BF010E9443080895DC01683810F0685829C0E62FF0E067FF13C0E0580A
+:2010C000F04081E090E002C0880F991FEA95E2F7809514962C911497282314962C93149720
+:2010E00060E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9114978D7F29
+:2011000014968C9314976F77FD0190E0662321F08681861709F416829F5F31969630B1F701
+:20112000CD011496BD010E94430821E030E0C9010895CF93DF93DC01683810F0685825C01E
+:20114000E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F714962C911497BE
+:20116000282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C014968C91149780
+:20118000826014968C9314976F7716968C9116978617A9F117968C911797861781F1189631
+:2011A0008C911897861759F119968C911997861731F11A968C911A97861709F11B968C915E
+:2011C0001B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C09F5F31964E
+:2011E0002196E630F10591F7963049F481E090E013969C938E93129720E030E007C0CD0189
+:201200001496BD010E94430821E030E0C901DF91CF91089580E867ED71E045E650E00E9427
+:20122000CC030895FC0180818F5F808380E86CE372E049E150E00E94CC030895CF92DF9210
+:20124000EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D916D01D701A6
+:20126000ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7CE01DF91AB
+:20128000CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994F894FFCFEC
+:2012A0000D0000E100000000000001010000000027071E09C606ED06D4064F0753070000A0
+:2012C0000000F7071E09990856084908FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:20300000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20302000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20304000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20306000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20308000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:2030A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2030C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2030E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:20310000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20312000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20314000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20316000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20318000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:2031A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2031C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2031E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:20320000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20322000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20324000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20326000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20328000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:2032A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:20330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20334000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20336000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20338000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2033A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2033C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20344000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20346000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20348000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2034A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2034E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20350000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20352000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20354000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20356000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20358000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2035A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2035C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2035E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20360000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20362000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20364000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20366000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20368000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2036A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2036C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2036E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20372000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20374000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20376000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20378000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2037A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20380000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20382000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20384000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20386000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20388000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2038A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2038C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2038E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20390000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20392000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20394000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20396000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20398000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2039A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2039C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2039E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:203A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:203A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:203A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:203A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:203A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:203AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:203AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:203AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:203B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:203B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:203B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:203B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:203B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:203BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:203BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:203BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:203C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:203C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:203C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:203C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:203C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:203CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:203CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:203CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:203D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:203D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:203D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:203D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:203D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:203DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:203DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:203DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:203E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:203E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:203E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:203E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:203E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:203EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:203EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:203EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:203F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:203F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:203F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:203F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:203F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:203FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:203FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:203FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:20400000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20402000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20404000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20406000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20408000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2040A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2040C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2040E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20410000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20412000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20414000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20416000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20418000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2041A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2041C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2041E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20420000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20422000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20424000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20426000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20428000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2042A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2042C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2042E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20430000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20436000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2043A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2043C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2043E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20440000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20442000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20444000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20446000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20450000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20452000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20454000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20456000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20458000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2045A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2045C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2045E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20460000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20462000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20464000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20466000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20468000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2046A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2046C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2046E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20470000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20472000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20474000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20476000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20478000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2047A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2047C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20480000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20482000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20484000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20486000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20488000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2048A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2048C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2048E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20490000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20492000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20494000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20496000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20498000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2049A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2049C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2049E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:204A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:204A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:204A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:204A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:204A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:204AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:204AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:204AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:204B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:204B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:204B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:204B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:204B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:204BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:204BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:204BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:204C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:204C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:204C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:204C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:204C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:204CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:204CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:204CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:204D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:204D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:204D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:204D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:204D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:204DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:204DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:204DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:204E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:204E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:204E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:204E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:204E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:204EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:204EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:204EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:204F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:204F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:204F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:204F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:204F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:204FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:204FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:204FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:20500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20502000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20504000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20506000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:20508000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2050A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2050C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:2050E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20510000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20512000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20514000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20516000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:20518000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2051A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2051C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:2051E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20520000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20522000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20524000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20526000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:20528000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2052A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2052C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:2052E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20530000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20532000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20534000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20536000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:20538000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2053A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2053C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:2053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20540000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20542000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20544000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20546000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:20548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:2054E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20550000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20552000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20554000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20556000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:20558000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2055A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2055C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:2055E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20560000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20562000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20564000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20566000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:20568000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2056A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2056C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:2056E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20570000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20572000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20574000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20576000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:20578000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2057A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2057C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:2057E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20584000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:20588000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2058A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2058C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:2058E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20590000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20592000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20594000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20596000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:20598000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2059A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2059C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:2059E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:205A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:205A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:205A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:205A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:205A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:205AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:205AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:205AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:205B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:205B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:205B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:205B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:205B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:205BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:205BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:205BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:205C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:205C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:205C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:205C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:205C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:205CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:205CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:205CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:205D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:205D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:205D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:205D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:205D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:205DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:205DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:205DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:205E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:205E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:205E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:205E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:205E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:205EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:205EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:205EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:205F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:205F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:205F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:205F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:205F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:205FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:205FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:205FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:20600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20602000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20604000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20606000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:20608000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2060A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2060C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:2060E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20610000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20612000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20614000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20616000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:20618000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2061A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2061C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:2061E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20620000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20622000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20624000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20626000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:20628000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2062A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2062C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:2062E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20630000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20632000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20634000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20636000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:20638000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2063A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2063C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:2063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20646000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:20648000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2064A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2064C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:2064E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20650000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20652000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20654000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20656000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:20658000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2065A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2065C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:2065E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20660000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20662000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20664000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20666000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:20668000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2066C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:2066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:20678000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2067A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2067C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:2067E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20680000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20682000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20684000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20686000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:20688000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2068A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2068C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:2068E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:20698000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:2069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:206A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:206A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:206A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:206A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:206A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:206AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:206AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:206AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:206B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:206B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:206B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:206B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:206B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:206BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:206BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:206BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:206C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:206C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:206C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:206C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:206C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:206CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:206CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:206CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:206D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:206D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:206D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:206D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:206D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:206DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:206DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:206DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:206E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:206E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:206E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:206E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:206E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:206EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:206EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:206EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:206F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:206F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:206F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:206F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:206F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:206FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
+:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
+:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
+:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
+:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
+:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
+:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEB
+:20710000289A0C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA6
+:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
+:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
+:207160009093A9018093A801892B09F45D9A8091AA019091AB01009741F001979093AB0126
+:207180008093AA01892B09F4289AE0E0F0E0859194918F5F9F4F49F08091AC019091AD0151
+:2071A00001969093AD018093AC01FF91EF919F918F912F910F900FBE0F901F90189584E0BC
+:2071C0008093E9000DC08091E8008B778093E80003C08EB3882351F08091E80082FFF9CFBE
+:2071E0008091E80085FFEFCF8091F1000895982F83E08093E9008091E80085FD0DC0809136
+:20720000E8008E778093E80003C08EB3882369F08091E80080FFF9CF9093F1005D9884E6CB
+:2072200090E09093A9018093A80108954F925F926F927F928F929F92AF92BF92CF92DF921E
+:20724000EF92FF920F931F93CF93DF9384E08093E9008091E80082FF57C2289884E690E067
+:207260009093AB018093AA01AADF182F853481F48CE49DE19093AD018093AC0107B600FC4B
+:20728000FDCFF999FECF81E180935700E89503C0843519F494DF8DE00DC28C34E1F38035F9
+:2072A000D1F3843721F484E4A2DF80E003C2813611F489E5FFC18134B1F481DF182F7FDFE3
+:2072C00090E0880F991FAA2797FDA095BA2F312F330F20E0442737FD4095542F822B932B68
+:2072E000A42BB52BB8C1803711F483E5E3C1833549F4C0E0D1E089917ADF21E0C730D20714
+:20730000D1F7D9C1863521F481E371DF80E3D2C1833731F487E86BDF85E969DF8EE1CAC149
+:207320008536B9F4E0E0F0E093E085E090935700E89507B600FCFDCF80935700E89507B65D
+:2073400000FCFDCFE058FF4FA0E7E030FA0771F7A2CF823739F4E1E0F0E089E08093570024
+:207360008491A8C1863439F4E0E0F0E089E08093570084919FC18E3439F4E3E0F0E089E0E5
+:2073800080935700849196C1813539F4E2E0F0E089E08093570084918DC1823631F489E521
+:2073A00026DF80E024DF80E885C1823419F0873609F0E5C01092AD011092AC0100DF082FE8
+:2073C000FEDEF82EFCDE682E8554823008F071C1902F80E0CF2DD0E0C82BD92B10926F00B3
+:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
+:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
+:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
+:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
+:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
+:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
+:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
+:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
+:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
+:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
+:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
+:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
+:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
+:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
+:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C
+:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
+:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
+:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
+:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
+:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
+:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
+:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
+:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
+:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
+:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
+:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
+:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
+:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
+:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
+:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100F0C0409116
+:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
+:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
+:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
+:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
+:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
+:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
+:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
+:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
+:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
+:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
+:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
+:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
+:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
+:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
+:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
+:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
+:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
+:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
+:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
+:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
+:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
+:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
+:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
+:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
+:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
+:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
+:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
+:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
+:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
+:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
+:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
+:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
+:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
+:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
+:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
+:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
+:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
+:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
+:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
+:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
+:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
+:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
+:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
+:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
+:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
+:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
+:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
+:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
+:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
+:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
+:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
+:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
+:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
+:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
+:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
+:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
+:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
+:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
+:207F400000000000000801120110010200000841233C0001000201000109023E00020100F9
+:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
+:207F800009040100020A000000070504021000010705830210000104030904220341007216
+:207FA000006400750069006E006F0020004500730070006C006F0072006100200000001874
+:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Caterina-Esplora.txt b/hardware/arduino/bootloaders/caterina/Caterina-Esplora.txt
new file mode 100644
index 0000000..aef5df1
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Caterina-Esplora.txt
@@ -0,0 +1,6 @@
+LUFA: 111009
+make: 3.81
+avrdude: 5.11.1
+avr-libc: 1.6.7
+binutils-avr: 2.19
+gcc-avr 4.3.3
diff --git a/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex b/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex
index de7b53c..47053bc 100644
--- a/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex
+++ b/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex
@@ -1,5 +1,5 @@
:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
-:200020000C9496010C9496010C9410050C949B050C9496010C9496010C9496010C94960181
+:200020000C9496010C9496010C94F6040C947D050C9496010C9496010C9496010C949601BA
:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
@@ -20,12 +20,12 @@
:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
-:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B500004C042E072C0811241FBE36
-:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEECF2E102C005900D92AC32B107D9F711E061
-:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E946109C63DF0
-:20032000D107C9F70E9486030C9465090C9400008091000161E00E94530364E873E080E002
-:2003400090E00E94FD018091000160E00E9453036CE474E080E090E00E94FD010895809181
-:20036000000161E00E94B60208951F920F920FB60F9211242F933F938F939F93AF93BF93DB
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041007150811241FBE85
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0EAF2E102C005900D92AC32B107D9F711E071
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944A09C63D07
+:20032000D107C9F70E946C030C944E090C9400008091000161E00E94390368EE73E080E043
+:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
+:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
@@ -37,119 +37,119 @@
:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
-:2004E0008083E0E8F0E0808181608083E1EBF0E0808184608083E0EBF0E080818160808378
-:20050000E1E9F0E0808182608083808181608083E0E9F0E0808181608083E1ECF0E080815A
-:2005200084608083808182608083808181608083E3ECF0E0808181608083E0ECF0E08081E8
-:2005400082608083E2ECF0E0808181608083EAE7F0E08081846080838081826080838081C3
-:20056000816080838081806880830895CF93DF93482F50E0CA018C509F4FFC0134914A52A0
-:200580005F4FFA018491882369F190E0880F991FFC01E455FF4FA591B491FC01E654FF4F55
-:2005A000C591D491662351F42FB7F8948C91932F909589238C93888189230BC0623061F40A
-:2005C0002FB7F8948C91932F909589238C938881832B88832FBF06C09FB7F8948C91832BB7
-:2005E0008C939FBFDF91CF9108958730C1F1883080F48330F9F0843030F4813029F182308B
-:2006000009F050C024C08430C9F0863009F04AC022C08A3091F18B3030F4883031F1893037
-:2006200009F040C026C08C3091F18C3060F18E30C9F533C0809180008F7703C08091800036
-:200640008F7D80938000089584B58F7702C084B58F7D84BD08958091B0008F7703C080919F
-:20066000B0008F7D8093B0000895809190008F7707C0809190008F7D03C080919000877FD9
-:200680008093900008958091C0008F7703C08091C0008F7D8093C00008958091C200877F5A
-:2006A0008093C2000895FF920F931F93F62E482F50E0CA018E5E9E4FFC012491CA018C501B
-:2006C0009F4FFC0114914A525F4FFA0104910023C9F0222319F0822F0E94F502E02FF0E05D
-:2006E000EE0FFF1FE654FF4FA591B4919FB7F894FF2021F48C911095812302C08C91812BD5
-:200700008C939FBF1F910F91FF900895CF93DF930E9456028DE391E00E944D040E94AF01EC
-:20072000C0E0D0E00E9498012097E1F30E940000F9CF282F809137018823C1F057FF1AC00D
-:2007400015C02898909336018091F1008193E217F307B9F74115510539F08091F20088236E
-:2007600019F48BE68093E800AFBF02C04FEF5FEFCA010895AFB7F89427702093E9008091A6
-:20078000F200282F30E0241735070CF4A901FB019B01240F311D94E6DACFDF93CF930F922E
-:2007A000CDB7DEB7BE016F5F7F4F41E050E00E949903019719F02FEF3FEF03C08981282F25
-:2007C00030E0C9010F90CF91DF910895FF920F931F93F82E142F052F40913A0150913B0188
-:2007E000212F302FC901DC01FB016EEF29C0F7FE02C0949101C090812091380130913901CE
-:2008000024173507ACF48091E8008570E1F38091E80082FF03C02FEF3FEF17C09093F1008B
-:20082000C90101968F739070892B11F46093E8002F5F3F4F3093390120933801119731964D
-:200840001097A9F6812F902F9C01C9011F910F91FF9008959C018091E80082FFFCCFF90124
-:20086000260F311D03C08091F1008193E217F307D1F7289884E6809336018BEF8093E80078
-:20088000CB0108958093E9008091F200882319F08AE38093E800089508951092370181E05F
-:2008A0008093D70080EA8093D80082E189BD09B400FEFDCF61E070E080E090E00E94FD01C8
-:2008C00080E98093D8008CE08093E2001092E000559A209A08955F926F927F928F929F9246
-:2008E000AF92BF92CF92DF92EF92FF920F931F93CF93DF93E82E842E752E809137018823FB
-:2009000071F18B01242F352FC901EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E220
-:20092000A42EB12CA822B9223AE3632E20E4C22ED12CC822D92258C09FB7F8949092E900DA
-:200940008091E80085FD02C020E004C08091F200252D281B9FBF222361F4FA9419F42FEF4D
-:200960003FEF4DC061E070E080E090E00E94FD013BC0822F90E0C817D9070CF42C2FC21B28
-:20098000D1094FB7F8949092E900A114B10421F406C01092F10021502223D9F719C0E7FCC6
-:2009A00003C0F801922F10C0C801322F06C0FC010196E491E093F10031503323C1F706C038
-:2009C00081918093F10091509923D1F7020F111D8091E80085FF05C0209729F4C114D1049D
-:2009E00011F06092E8004FBF209709F0A5CF5D9884E680933501282D372DC9019C01C90158
-:200A0000DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F907F906F905F90089564
-:200A20001F920F920FB60F9211241F932F933F934F935F936F937F938F939F93AF93BF93B3
-:200A4000EF93FF938091E1001092E100982F83FF0FC01092E90081E08093EB001092EC007D
-:200A600082E38093ED001092370188E08093F00092FF36C083E08093E9008091F200882338
-:200A800049F08AE38093E80005C082E891E00E94710701C012E09FB7F8941093E9008091C9
-:200AA000F2009FBF882389F780913501882351F08091350181508093350180913501882335
-:200AC00009F45D9A80913601882351F08091360181508093360180913601882309F4289AD9
-:200AE000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F910F900FBE0F90DB
-:200B00001F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8010E9490078F
-:200B2000C8010E942909898190E00F90CF91DF911F910F9108951F920F920FB60F92112455
-:200B4000EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF93FF93DF93E7
-:200B6000CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE0131969E01275F18
-:200B80003F4F03C08091F1008193E217F307D1F7289884E68093360182EF8093E800998139
-:200BA00097FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C90180769070892B80
-:200BC00009F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C0833009F4D0C08A
-:200BE000853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC01C81EF805A
-:200C0000F8841230C1F51092E900109239011092380110923B0110923A010E94820599E0C1
-:200C2000FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF998B209110
-:200C4000380130913901275F3F4F3C872B878D871092E9001092390110923801F0923B01C3
-:200C6000E0923A0180E0BF0149E050E00E94E6030E94820585C01092E9001092390110924C
-:200C80003801F0923B01E0923A01123241F482E290E00E942109892B09F476C071C011303E
-:200CA00079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE6F1E013C01B
-:200CC000133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F0C4
-:200CE00053C0E4E5F1E0449180E8BF0150E00E94E60346C0873009F447C0883021F481E0A0
-:200D00008093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E39093E900CA
-:200D20003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA001092EA0039
-:200D40008B81809337011CC08F8198851092E900109239011092380190933B0180933A0144
-:200D60008D81882329F4CE0101960E949C0706C0823051F4CE0101960E94F207882321F078
-:200D80008EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91E3
-:200DA000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF90EF900F9076
-:200DC0000FBE0F901F90189520917E0130917F018091800190918101281B390B2F733070DC
-:200DE000C901089520917E0130917F0180918001909181012817390719F42FEF3FEF09C045
-:200E0000E0918001F0918101E25CFE4F8081282F30E0C901089520917E0130917F01809101
-:200E20008001909181012817390719F42FEF3FEF13C0E0918001F0918101E25CFE4F2081C2
-:200E4000809180019091810101968F739070909381018093800130E0C901089510928501EC
-:200E60001092840188EE93E0A0E0B0E08093860190938701A0938801B093890180E191E0B2
-:200E8000909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838091090102
-:200EA000882369F083E0BE016F5F7F4F41E050E00E946B041816190614F49C0107C081E0F4
-:200EC00090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00E9442040D
-:200EE000089582E00E94CD03482F20917E0130917F012F5F3F4F2F73307080918001909188
-:200F000081012817390759F0E0917E01F0917F01E25CFE4F408330937F0120937E01089536
-:200F2000FC0180818E5F808380E865E971E042E450E00E94E6030895FC0181819081913A63
-:200F400059F4813209F04CC080E062E071E047E050E00E94E60342C0913209F041C0803246
-:200F600039F482E091E067E070E00E942A0436C0823209F035C0828180930901809102013E
-:200F800090910301A0910401B0910501805B9440A040B04019F58091090180FD12C087E74A
-:200FA00097E790930108809300082BE088E190E00FB6F894A895809360000FBE20936000A7
-:200FC0000DC088E10FB6F89480936000109260000FBEA895109201081092000881E00895B8
-:200FE00080E00895FC0191818081813A31F4913089F080E0933089F40DC0813269F49B3082
-:2010000021F4828180930A0105C09A3029F4828180930B0181E0089580E00895EF92FF92BF
-:201020000F931F938C01E62EDC01ED91FC910480F581E02D0995F82ED801ED91FC9106809E
-:20104000F781E02DC8016E2D09958F2D90E01F910F91FF90EF900895109290011092940178
-:201060001092930182E291E090939201809391010895EF92FF920F931F93DF93CF930F9292
-:20108000CDB7DEB789838B017A0184E0BE016F5F7F4F41E050E00E946B0484E4B801A7013A
-:2010A0000E946B040F90CF91DF911F910F91FF90EF90089582E048E050E00E94390808957B
-:2010C000FC0116821782108611861286138614823496BF010E945A080895DC01683810F046
-:2010E000685829C0E62FF0E067FF13C0E058F04081E090E002C0880F991FEA95E2F7809572
-:2011000014962C911497282314962C93149760E012C0EB5AFD4F6491662319F420E030E020
-:201120001DC067FF08C014968C9114978D7F14968C9314976F77FD0190E0662321F08681BD
-:20114000861709F416829F5F31969630B1F7CD011496BD010E945A0821E030E0C901089578
-:20116000CF93DF93DC01683810F0685825C0E62FF0E067FF12C0E058F04081E090E002C061
-:20118000880F991FEA95E2F714962C911497282B14962C93149760E00FC0EB5AFD4F64919A
-:2011A0006623D9F167FF08C014968C911497826014968C9314976F7716968C9116978617ED
-:2011C000A9F117968C911797861781F118968C911897861759F119968C911997861731F152
-:2011E0001A968C911A97861709F11B968C911B978617E1F0ED01E0E0F0E09E2F8E818823E7
-:2012000021F4EA0FFB1F668306C09F5F31962196E630F10591F7963049F481E090E013966A
-:201220009C938E93129720E030E007C0CD011496BD010E945A0821E030E0C901DF91CF91F9
-:20124000089580E867ED71E045E650E00E94E6030895FC0180818F5F808380E86CE372E069
-:2012600049E150E00E94E6030895CF92DF92EF92FF920F931F93CF93DF937C016B018A016C
-:20128000C0E0D0E00FC0D6016D916D01D701ED91FC910190F081E02DC7010995C80FD91FC5
-:2012A000015010400115110571F7CE01DF91CF911F910F91FF90EF90DF90CF900895EE0F94
-:2012C000FF1F0590F491E02D0994F894FFCF0D0000E1000000000000010100000000450796
-:2012E0003509E4060B07F2066D077107000000000E083509B0086D086008FFFFFFFFFFFFED
+:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
+:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
+:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
+:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
+:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
+:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
+:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
+:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
+:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
+:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
+:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
+:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
+:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
+:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
+:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
+:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
+:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
+:20070000809137018823C1F057FF1AC015C02898909336018091F1008193E217F307B9F75C
+:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
+:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
+:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
+:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
+:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
+:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
+:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
+:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
+:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289805
+:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
+:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
+:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
+:2008A00008955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93CF93DF93A8
+:2008C000E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72E67E0962EC4
+:2008E0009E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22ED12CC82259
+:20090000D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200252D281B3E
+:200920009FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD013BC0822F1E
+:2009400090E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F406C01092D2
+:20096000F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC010196E491FE
+:20098000E093F10031503323C1F706C081918093F10091509923D1F7020F111D8091E800EB
+:2009A00085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9884E68093F1
+:2009C0003501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF90BF90AF906D
+:2009E0009F908F907F906F905F9008951F920F920FB60F9211242F933F934F935F936F93B8
+:200A00007F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC01092E900B0
+:200A200081E08093EB001092EC0082E38093ED001092370188E08093F00092FF34C083E037
+:200A40008093E9008091F200882319F08AE38093E8008FB7F89492E09093E9009091F20018
+:200A60008FBF992321F082E891E00E94530780913501882351F080913501815080933501F0
+:200A800080913501882309F45D9A80913601882351F0809136018150809336018091360191
+:200AA000882309F4289AFF91EF91BF91AF919F918F917F916F915F914F913F912F910F90CD
+:200AC0000FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8019D
+:200AE0000E947907C8010E941209898190E00F90CF91DF911F910F9108951F920F920FB661
+:200B00000F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF9355
+:200B2000FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE01319679
+:200B40009E01275F3F4F03C08091F1008193E217F307D1F7289884E68093360182EF809356
+:200B6000E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C901807672
+:200B80009070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C08330A3
+:200BA00009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC019
+:200BC0001C81EF80F8841230C1F51092E900109239011092380110923B0110923A010E94F6
+:200BE000640599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF44
+:200C0000998B2091380130913901275F3F4F3C872B878D871092E9001092390110923801EC
+:200C2000F0923B01E0923A0180E0BF0149E050E00E94CC030E94640585C01092E9001092E2
+:200C4000390110923801F0923B01E0923A01123241F482E290E00E940A09892B09F476C02B
+:200C600071C0113079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE68D
+:200C8000F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C00A
+:200CA000813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F447C08830C6
+:200CC00021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E3A1
+:200CE0009093E9003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA00FA
+:200D00001092EA008B81809337011CC08F8198851092E900109239011092380190933B0146
+:200D200080933A018D81882329F4CE0101960E94850706C0823051F4CE0101960E94DB0754
+:200D4000882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBF37
+:200D6000CF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF9004
+:200D8000EF900F900FBE0F901F90189520917E0130917F018091800190918101281B390B40
+:200DA0002F733070C901089520917E0130917F0180918001909181012817390719F42FEF3A
+:200DC0003FEF09C0E0918001F0918101E25CFE4F8081282F30E0C901089520917E013091DC
+:200DE0007F0180918001909181012817390719F42FEF3FEF13C0E0918001F0918101E25C60
+:200E0000FE4F2081809180019091810101968F739070909381018093800130E0C901089566
+:200E2000109285011092840188EE93E0A0E0B0E08093860190938701A0938801B09389019C
+:200E400080E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838B
+:200E600080910901882369F083E0BE016F5F7F4F41E050E00E9451041816190614F49C015B
+:200E800007C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00D
+:200EA0000E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E0917E01F091B8
+:200EC0007F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73D070809154
+:200EE000800190918101C817D90701F7DF91CF910895FC0180818E5F808380E865E971E0B5
+:200F000042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E062E071E09A
+:200F200047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E00E9410042B
+:200F400036C0823209F035C08281809309018091020190910301A0910401B0910501805B48
+:200F60009440A040B04019F58091090180FD12C087E797E790930108809300082BE088E1AE
+:200F800090E00FB6F894A895809360000FBE209360000DC088E10FB6F89480936000109264
+:200FA00060000FBEA895109201081092000881E0089580E00895FC0191818081813A31F487
+:200FC000913089F080E0933089F40DC0813269F49B3021F4828180930A0105C09A3029F4AD
+:200FE000828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC01ED91FC91E5
+:201000000480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D09958F2D90E0E8
+:201020001F910F91FF90EF90089510929001109294011092930182E291E090939201809377
+:2010400091010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0184E0BE0137
+:201060006F5F7F4F41E050E00E94510484E4B801A7010E9451040F90CF91DF911F910F910D
+:20108000FF90EF90089582E048E050E00E9422080895FC01168217821086118612861386F6
+:2010A00014823496BF010E9443080895DC01683810F0685829C0E62FF0E067FF13C0E0580A
+:2010C000F04081E090E002C0880F991FEA95E2F7809514962C911497282314962C93149720
+:2010E00060E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9114978D7F29
+:2011000014968C9314976F77FD0190E0662321F08681861709F416829F5F31969630B1F701
+:20112000CD011496BD010E94430821E030E0C9010895CF93DF93DC01683810F0685825C01E
+:20114000E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F714962C911497BE
+:20116000282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C014968C91149780
+:20118000826014968C9314976F7716968C9116978617A9F117968C911797861781F1189631
+:2011A0008C911897861759F119968C911997861731F11A968C911A97861709F11B968C915E
+:2011C0001B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C09F5F31964E
+:2011E0002196E630F10591F7963049F481E090E013969C938E93129720E030E007C0CD0189
+:201200001496BD010E94430821E030E0C901DF91CF91089580E867ED71E045E650E00E9427
+:20122000CC030895FC0180818F5F808380E86CE372E049E150E00E94CC030895CF92DF9210
+:20124000EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D916D01D701A6
+:20126000ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7CE01DF91AB
+:20128000CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994F894FFCFEC
+:2012A0000D0000E100000000000001010000000027071E09C606ED06D4064F0753070000A0
+:2012C0000000F7071E09990856084908FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
@@ -895,13 +895,13 @@
:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
-:2070200060C000005EC00000EEC400005AC0000058C0000056C0000054C0000052C00000F2
+:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
-:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0EAE2B5
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
-:2070E00022C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEF
+:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEB
:20710000289A0C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA6
:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
@@ -928,14 +928,14 @@
:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
-:2074400018C0D801C701B695A7959795879555D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF6
+:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
-:20752000C701F3D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934D
+:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
@@ -943,82 +943,82 @@
:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
-:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70165D4E2
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
-:20768000B695A7959795879538D4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010E
+:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
-:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E007D28091E8008B770F
-:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E059D2809196
-:20778000E8008E778093E800089582E061EC42E0B1D083E061E842E1ADD084E060E842E1F7
-:2077A000A9C084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB643
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
+:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
+:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
-:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100ECC040911A
-:20780000000850910108109201081092000824B714BE88E10FB6F894809360001092600045
-:207820000FBE822F90E0FC01E270F07021FD14C0213019F4859194910BC0283069F480918F
-:20784000090190910A014817590731F0859194918F5F9F4F09F046DCA4DF78941092AD0101
-:207860001092AC010CC0E2DC36D38091AC019091AD0181549F4110F01092140145DC8091FB
-:207880001401882381F78091E00081608093E00029DC80E090E00895FA01923049F09330C0
-:2078A00061F09130F9F485E191E022E130E01EC087E291E02EE330E019C0882329F485E6FA
-:2078C00091E024E030E012C0813029F489E691E022E230E00BC0823029F48DE891E028E106
-:2078E00030E004C080E090E020E030E091838083C90108958093E9008091EB00816080936A
-:20790000EB001092ED006093EC004093ED008091EE00881F8827881F08958091B601882342
-:207920008CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008958EB361
-:20794000882349F08091E80080FFF9CF8091E8008E778093E8000895EF92FF920F931F9307
-:2079600045D04CD008ED10E0F80180818F77808380818068808380818F7D808319BC1EBA45
-:207980001092B40180EEE82EF12CF70180818B7F8083F80180818160808380E060E042E049
-:2079A000A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188608083F701808125
-:2079C0008E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E080818160808335
-:2079E0008AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E20008951092DA00D6
-:207A00001092E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F9389
-:207A2000AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091DA008E7F80930F
-:207A4000DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E08EBB3BD203C0C7
-:207A600019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E2008E7F8093E200CE
-:207A80008091E20080618093E2008091D80080628093D80019BC85E08EBB1CD28091E10004
-:207AA00084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF8091D8008F7D2D
-:207AC0008093D8008091E1008F7E8093E1008091E2008F7E8093E2008091E20081608093EC
-:207AE000E2008091B401882331F48091E30087FD02C081E001C084E08EBBECD18091E10056
-:207B000083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB1092B4018091B1
-:207B2000E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E20080E060E005
-:207B400042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F90B6
-:207B60000FBE0F901F9018959C014091BC015091BD014617570718F4F90190E044C06115C8
-:207B8000710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3882309F444C006
-:207BA000853009F443C08091E80083FF02C081E008958091E80082FD31C08091E80080FFF4
-:207BC00022C08091F3009091F200782F60E0292F30E0262B372B07C081918093F10041503C
-:207BE00050402F5F3F4F4115510519F02830310598F390E02830310509F491E08091E800A6
-:207C00008E778093E8004115510531F6992321F605C08EB3882341F0853041F08091E800FD
-:207C200082FFF7CF80E0089582E0089583E008959C016115710529F48091E8008B7780934D
-:207C4000E800F90126C08EB3882391F1853091F18091E80083FF02C081E008958091E80083
-:207C600082FFF1CF06C08091F10081936150704059F02091F3008091F200322F20E090E0C5
-:207C8000822B932B892B79F78091E8008B778093E80061157105B9F605C08EB3882341F0E2
-:207CA000853041F08091E80080FFF7CF80E0089582E0089583E008950F931F93DF93CF937C
-:207CC00000D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F728DD8091E80083FF3A
-:207CE000E4C08091B6019091B701953009F46DC0963040F4913081F1913070F0933009F046
-:207D0000D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC0803809F4C6C082380B
-:207D200009F0C3C08091BA0187708093E9008091EB001092E9002091E800277F2093E800A7
-:207D400090E025E0969587952A95E1F781708093F1001092F10087C0882319F0823009F0A2
-:207D6000A4C08F71823009F0A0C08091B801882331F52091BA01277009F497C02093E90006
-:207D80008091EB0080FF1BC0933021F48091EB00806213C08091EB0080618093EB0081E0C8
-:207DA00090E002C0880F991F2A95E2F78093EA001092EA008091EB0088608093EB0010929D
-:207DC000E9008091E800877F51C0882309F06DC01091B8011F770FB7F8948091E800877F98
-:207DE0008093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30080688093E30062
-:207E0000112311F482E001C083E08EBB0FBF4DC08058823008F049C08091B8019091B9014F
-:207E20006091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F8093E800898128
-:207E40009A8192DE8091E8008B778093E8002DC0803859F58091E800877F8093E8008091A3
-:207E6000B4018093F1008091E8008E778093E80054DD1BC08823C9F49091B8019230A8F4A4
-:207E80008091E800877F8093E8009093B40145DD8091B401882331F48091E30087FD02C01E
-:207EA00081E001C084E08EBB70DC8091E80083FF0AC08091EB0080628093EB008091E8008D
-:207EC000877F8093E8000F900F90CF91DF911F910F91089508951F938EB3882361F0109179
-:207EE000E9001092E9008091E80083FF01C0E4DE17701093E9001F910895F999FECF92BD02
-:207F000081BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB6F894FA9AF99A90
-:207F20000FBE01960895F894FFCF4341544552494E4100777700080000000000000801128E
-:207F4000011001020000084123360001000201000109023E00020100803209040000010258
-:207F60000201000524001001042402040524060001070582030800FF09040100020A0000B4
-:207F8000000705040210000107058302100001040309042203410072006400750069006E80
-:207FA000006F0020004C0065006F006E006100720064006F00000018034100720064007557
-:127FC0000069006E006F0020004C004C0043000000006E
+:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100F0C0409116
+:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
+:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
+:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
+:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
+:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
+:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
+:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
+:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
+:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
+:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
+:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
+:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
+:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
+:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
+:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
+:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
+:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
+:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
+:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
+:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
+:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
+:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
+:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
+:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
+:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
+:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
+:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
+:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
+:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
+:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
+:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
+:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
+:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
+:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
+:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
+:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
+:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
+:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
+:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
+:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
+:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
+:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
+:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
+:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
+:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
+:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
+:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
+:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
+:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
+:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
+:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
+:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
+:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
+:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
+:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
+:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
+:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
+:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
+:207F40000000000000080112011001020000084123360001000201000109023E00020100FF
+:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
+:207F800009040100020A000000070504021000010705830210000104030904220341007216
+:207FA000006400750069006E006F0020004C0065006F006E006100720064006F0000001836
+:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.txt b/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.txt
new file mode 100644
index 0000000..5beb659
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.txt
@@ -0,0 +1,11 @@
+Builds against LUFA version 111009
+make version 3.81
+avrdude version 5.11
+
+All AVR tools except avrdude were installed by CrossPack 20100115:
+avr-gcc version 4.3.3 (GCC)
+Thread model: single
+Configured with: ../configure âprefix=/usr/local/CrossPack-AVR-20100115 âdisable-dependency-tracking âdisable-nls âdisable-werror âtarget=avr âenable-languages=c,c++ âdisable-nls âdisable-libssp âwith-dwarf2
+avr-libc version 1.6.7
+binutils version 2.19
+
diff --git a/hardware/arduino/bootloaders/caterina/Caterina-Micro.hex b/hardware/arduino/bootloaders/caterina/Caterina-Micro.hex
new file mode 100644
index 0000000..804dfd3
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Caterina-Micro.hex
@@ -0,0 +1,1024 @@
+:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
+:200020000C9496010C9496010C94F8040C947F050C9496010C9496010C9496010C949601B6
+:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
+:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
+:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
+:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4
+:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D
+:2000E0000202040302020202060606060606040402020204040802011040804010204080A8
+:200100004080080204018040201002011080102040400000000200080E0000030401000BB2
+:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD
+:200140006F0020004D006900630072006F00200020002000180341007200640075006900A6
+:200160006E006F0020004C004C00430012010002000000404123378000010102000112011F
+:200180000002020000404123378000010102000100C18081C1080B00020202010009040051
+:2001A000000102020000052400100105240101010424020605240600010705810310004094
+:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186
+:2001E000008501050919012903150025019503750181029501750581030501093009310943
+:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D
+:20022000019508810295017508810395067508150025650507190029658100C0090402004C
+:2002400001030000000921010100012265000705840340000100000000000000002A2B2895
+:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
+:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
+:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041207170811241FBE81
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EAF2E102C005900D92AC32B107D9F711E06D
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944C09C63D05
+:20032000D107C9F70E946C030C9450090C9400008091000161E00E94390368EE73E080E041
+:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
+:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
+:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
+:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
+:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
+:2003E000B0932F01BF91AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB734
+:20040000F89480912C0190912D01A0912E01B0912F0166B5A89B05C06F3F19F00196A11DC3
+:20042000B11D7FBFBA2FA92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A9577
+:20044000D1F7BC012DC0FFB7F89480912C0190912D01A0912E01B0912F01E6B5A89B05C0E7
+:20046000EF3F19F00196A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880FFD
+:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
+:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
+:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
+:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
+:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
+:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
+:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
+:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
+:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
+:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
+:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
+:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
+:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
+:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
+:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
+:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
+:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
+:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
+:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
+:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
+:20070000809137018823C1F057FF1AC015C0289A909336018091F1008193E217F307B9F75A
+:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
+:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
+:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
+:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
+:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
+:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
+:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
+:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
+:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289A03
+:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
+:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
+:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
+:2008A0005D98289808955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93C7
+:2008C000CF93DF93E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72EFB
+:2008E00067E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22E35
+:20090000D12CC822D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200EC
+:20092000252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD0135
+:200940003BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F48E
+:2009600006C01092F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC01A2
+:200980000196E491E093F10031503323C1F706C081918093F10091509923D1F7020F111DD8
+:2009A0008091E80085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9A73
+:2009C00084E680933501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF907E
+:2009E000BF90AF909F908F907F906F905F9008951F920F920FB60F9211242F933F934F931E
+:200A00005F936F937F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC047
+:200A20001092E90081E08093EB001092EC0082E38093ED001092370188E08093F00092FF03
+:200A400034C083E08093E9008091F200882319F08AE38093E8008FB7F89492E09093E900D4
+:200A60009091F2008FBF992321F082E891E00E94550780913501882351F080913501815024
+:200A80008093350180913501882309F45D9880913601882351F08091360181508093360192
+:200AA00080913601882309F42898FF91EF91BF91AF919F918F917F916F915F914F913F91E6
+:200AC0002F910F900FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F75
+:200AE0001F4FC8010E947B07C8010E941409898190E00F90CF91DF911F910F9108951F928C
+:200B00000F920FB60F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93C3
+:200B2000BF93EF93FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC16B
+:200B4000FE0131969E01275F3F4F03C08091F1008193E217F307D1F7289A84E68093360112
+:200B600082EF8093E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0AE
+:200B8000C90180769070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F429
+:200BA000D3C0833009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863008
+:200BC00009F07CC01C81EF80F8841230C1F51092E900109239011092380110923B0110929E
+:200BE0003A010E94660599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E811
+:200C0000988B9AEF998B2091380130913901275F3F4F3C872B878D871092E900109239011B
+:200C200010923801F0923B01E0923A0180E0BF0149E050E00E94CC030E94660585C0109290
+:200C4000E9001092390110923801F0923B01E0923A01123241F482E290E00E940C09892BD1
+:200C600009F476C071C0113079F488E0E816F10419F481E080933C0180913C01882309F057
+:200C80006BC0ECE6F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3A3
+:200CA000F1E005C0813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F4EF
+:200CC00047C0883021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E0FC
+:200CE00031E026E39093E9003093EB0084918093EC002093ED009F5F3196953099F78EE7DD
+:200D00008093EA001092EA008B81809337011CC08F8198851092E9001092390110923801A8
+:200D200090933B0180933A018D81882329F4CE0101960E94870706C0823051F4CE01019677
+:200D40000E94DD07882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DA
+:200D6000DEBFCDBFCF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911A
+:200D80001F91FF90EF900F900FBE0F901F90189520917E0130917F01809180019091810188
+:200DA000281B390B2F733070C901089520917E0130917F01809180019091810128173907DE
+:200DC00019F42FEF3FEF09C0E0918001F0918101E25CFE4F8081282F30E0C90108952091F1
+:200DE0007E0130917F0180918001909181012817390719F42FEF3FEF13C0E0918001F091E0
+:200E00008101E25CFE4F2081809180019091810101968F739070909381018093800130E00D
+:200E2000C9010895109285011092840188EE93E0A0E0B0E08093860190938701A093880102
+:200E4000B093890180E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB737
+:200E60008C01698380910901882369F083E0BE016F5F7F4F41E050E00E9453041816190685
+:200E800014F49C0107C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F9168
+:200EA000089583E00E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E091B8
+:200EC0007E01F0917F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73A5
+:200EE000D0708091800190918101C817D90701F7DF91CF910895FC0180818E5F808380E803
+:200F000065E971E042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E08E
+:200F200062E071E047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E04E
+:200F40000E94100436C0823209F035C08281809309018091020190910301A0910401B09173
+:200F60000501805B9440A040B04019F58091090180FD12C087E797E7909301088093000841
+:200F80002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093F2
+:200FA0006000109260000FBEA895109201081092000881E0089580E00895FC019181808165
+:200FC000813A31F4913089F080E0933089F40DC0813269F49B3021F4828180930A0105C0B4
+:200FE0009A3029F4828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC0109
+:20100000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D099509
+:201020008F2D90E01F910F91FF90EF90089510929001109294011092930182E291E09093F1
+:201040009201809391010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A01B4
+:2010600084E0BE016F5F7F4F41E050E00E94530484E4B801A7010E9453040F90CF91DF9136
+:201080001F910F91FF90EF90089582E048E050E00E9424080895FC011682178210861186D5
+:2010A0001286138614823496BF010E9445080895DC01683810F0685829C0E62FF0E067FFE2
+:2010C00013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314967F
+:2010E0002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9176
+:2011000014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F3196B8
+:201120009630B1F7CD011496BD010E94450821E030E0C9010895CF93DF93DC01683810F053
+:20114000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149681
+:201160002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496E0
+:201180008C911497826014968C9314976F7716968C9116978617A9F117968C911797861789
+:2011A00081F118968C911897861759F119968C911997861731F11A968C911A97861709F10C
+:2011C0001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C045
+:2011E0009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E059
+:2012000007C0CD011496BD010E94450821E030E0C901DF91CF91089580E867ED71E045E662
+:2012200050E00E94CC030895FC0180818F5F808380E86CE372E049E150E00E94CC03089510
+:20124000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D911A
+:201260006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7A4
+:20128000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D099407
+:2012A000F894FFCF0D0000E100000000000001010000000029072009C806EF06D606510794
+:2012C000550700000000F90720099B0858084B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:20300000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20302000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20304000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20306000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20308000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:2030A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2030C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2030E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:20310000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20312000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20314000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20316000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20318000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:2031A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2031C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2031E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:20320000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20322000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20324000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20326000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20328000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:2032A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:20330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20334000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20336000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20338000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2033A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2033C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20344000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20346000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20348000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2034A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2034E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20350000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20352000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20354000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20356000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20358000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2035A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2035C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2035E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20360000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20362000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20364000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20366000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20368000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2036A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2036C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2036E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20372000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20374000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20376000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20378000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2037A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20380000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20382000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20384000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20386000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20388000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2038A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2038C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2038E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20390000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20392000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20394000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20396000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20398000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2039A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2039C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2039E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:203A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:203A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:203A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:203A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:203A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:203AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:203AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:203AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:203B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:203B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:203B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:203B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:203B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:203BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:203BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:203BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:203C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:203C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:203C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:203C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:203C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:203CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:203CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:203CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:203D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:203D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:203D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:203D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:203D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:203DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:203DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:203DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:203E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:203E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:203E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:203E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:203E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:203EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:203EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:203EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:203F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:203F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:203F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:203F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:203F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:203FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:203FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:203FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:20400000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20402000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20404000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20406000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20408000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2040A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2040C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2040E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20410000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20412000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20414000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20416000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20418000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2041A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2041C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2041E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20420000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20422000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20424000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20426000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20428000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2042A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2042C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2042E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20430000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20436000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2043A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2043C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2043E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20440000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20442000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20444000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20446000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20450000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20452000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20454000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20456000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20458000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2045A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2045C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2045E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20460000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20462000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20464000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20466000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20468000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2046A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2046C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2046E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20470000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20472000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20474000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20476000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20478000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2047A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2047C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20480000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20482000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20484000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20486000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20488000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2048A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2048C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2048E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20490000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20492000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20494000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20496000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20498000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2049A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2049C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2049E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:204A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:204A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:204A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:204A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:204A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:204AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:204AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:204AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:204B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:204B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:204B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:204B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:204B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:204BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:204BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:204BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:204C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:204C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:204C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:204C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:204C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:204CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:204CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:204CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:204D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:204D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:204D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:204D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:204D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:204DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:204DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:204DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:204E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:204E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:204E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:204E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:204E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:204EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:204EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:204EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:204F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:204F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:204F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:204F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:204F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:204FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:204FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:204FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:20500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20502000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20504000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20506000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:20508000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2050A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2050C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:2050E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20510000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20512000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20514000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20516000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:20518000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2051A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2051C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:2051E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20520000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20522000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20524000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20526000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:20528000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2052A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2052C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:2052E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20530000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20532000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20534000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20536000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:20538000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2053A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2053C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:2053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20540000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20542000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20544000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20546000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:20548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:2054E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20550000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20552000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20554000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20556000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:20558000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2055A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2055C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:2055E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20560000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20562000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20564000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20566000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:20568000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2056A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2056C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:2056E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20570000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20572000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20574000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20576000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:20578000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2057A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2057C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:2057E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20584000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:20588000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2058A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2058C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:2058E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20590000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20592000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20594000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20596000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:20598000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2059A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2059C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:2059E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:205A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:205A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:205A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:205A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:205A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:205AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:205AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:205AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:205B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:205B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:205B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:205B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:205B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:205BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:205BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:205BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:205C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:205C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:205C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:205C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:205C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:205CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:205CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:205CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:205D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:205D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:205D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:205D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:205D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:205DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:205DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:205DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:205E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:205E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:205E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:205E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:205E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:205EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:205EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:205EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:205F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:205F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:205F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:205F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:205F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:205FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:205FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:205FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:20600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20602000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20604000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20606000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:20608000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2060A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2060C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:2060E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20610000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20612000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20614000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20616000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:20618000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2061A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2061C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:2061E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20620000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20622000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20624000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20626000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:20628000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2062A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2062C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:2062E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20630000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20632000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20634000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20636000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:20638000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2063A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2063C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:2063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20646000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:20648000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2064A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2064C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:2064E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20650000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20652000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20654000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20656000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:20658000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2065A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2065C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:2065E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20660000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20662000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20664000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20666000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:20668000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2066C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:2066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:20678000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2067A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2067C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:2067E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20680000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20682000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20684000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20686000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:20688000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2068A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2068C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:2068E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:20698000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:2069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:206A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:206A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:206A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:206A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:206A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:206AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:206AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:206AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:206B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:206B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:206B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:206B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:206B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:206BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:206BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:206BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:206C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:206C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:206C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:206C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:206C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:206CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:206CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:206CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:206D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:206D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:206D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:206D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:206D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:206DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:206DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:206DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:206E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:206E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:206E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:206E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:206E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:206EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:206EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:206EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:206F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:206F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:206F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:206F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:206F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:206FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
+:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
+:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
+:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
+:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
+:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
+:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D98ED
+:2071000028980C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA8
+:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
+:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
+:207160009093A9018093A801892B09F45D988091AA019091AB01009741F001979093AB0128
+:207180008093AA01892B09F42898E0E0F0E0859194918F5F9F4F49F08091AC019091AD0153
+:2071A00001969093AD018093AC01FF91EF919F918F912F910F900FBE0F901F90189584E0BC
+:2071C0008093E9000DC08091E8008B778093E80003C08EB3882351F08091E80082FFF9CFBE
+:2071E0008091E80085FFEFCF8091F1000895982F83E08093E9008091E80085FD0DC0809136
+:20720000E8008E778093E80003C08EB3882369F08091E80080FFF9CF9093F1005D9A84E6C9
+:2072200090E09093A9018093A80108954F925F926F927F928F929F92AF92BF92CF92DF921E
+:20724000EF92FF920F931F93CF93DF9384E08093E9008091E80082FF57C2289A84E690E065
+:207260009093AB018093AA01AADF182F853481F48CE49DE19093AD018093AC0107B600FC4B
+:20728000FDCFF999FECF81E180935700E89503C0843519F494DF8DE00DC28C34E1F38035F9
+:2072A000D1F3843721F484E4A2DF80E003C2813611F489E5FFC18134B1F481DF182F7FDFE3
+:2072C00090E0880F991FAA2797FDA095BA2F312F330F20E0442737FD4095542F822B932B68
+:2072E000A42BB52BB8C1803711F483E5E3C1833549F4C0E0D1E089917ADF21E0C730D20714
+:20730000D1F7D9C1863521F481E371DF80E3D2C1833731F487E86BDF85E969DF8EE1CAC149
+:207320008536B9F4E0E0F0E093E085E090935700E89507B600FCFDCF80935700E89507B65D
+:2073400000FCFDCFE058FF4FA0E7E030FA0771F7A2CF823739F4E1E0F0E089E08093570024
+:207360008491A8C1863439F4E0E0F0E089E08093570084919FC18E3439F4E3E0F0E089E0E5
+:2073800080935700849196C1813539F4E2E0F0E089E08093570084918DC1823631F489E521
+:2073A00026DF80E024DF80E885C1823419F0873609F0E5C01092AD011092AC0100DF082FE8
+:2073C000FEDEF82EFCDE682E8554823008F071C1902F80E0CF2DD0E0C82BD92B10926F00B3
+:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
+:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
+:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
+:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
+:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
+:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
+:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
+:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
+:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
+:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
+:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
+:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
+:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
+:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
+:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C
+:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
+:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
+:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
+:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
+:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
+:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
+:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
+:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
+:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
+:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
+:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
+:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
+:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
+:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
+:2077E000108247985D982898109289008AEF8093880090936F0083E080938100F0C040911A
+:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
+:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
+:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
+:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
+:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
+:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
+:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
+:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
+:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
+:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
+:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
+:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
+:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
+:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
+:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
+:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
+:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
+:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
+:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
+:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
+:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
+:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
+:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
+:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
+:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
+:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
+:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
+:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
+:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
+:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
+:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
+:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
+:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
+:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
+:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
+:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
+:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
+:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
+:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
+:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
+:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
+:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
+:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
+:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
+:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
+:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
+:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
+:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
+:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
+:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
+:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
+:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
+:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
+:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
+:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
+:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
+:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
+:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
+:207F40000000000000080112011001020000084123370001000201000109023E00020100FE
+:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
+:207F800009040100020A000000070504021000010705830210000104030904220341007216
+:207FA000006400750069006E006F0020004D006900630072006F0020002000200000001810
+:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Caterina-Micro.txt b/hardware/arduino/bootloaders/caterina/Caterina-Micro.txt
new file mode 100644
index 0000000..5beb659
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Caterina-Micro.txt
@@ -0,0 +1,11 @@
+Builds against LUFA version 111009
+make version 3.81
+avrdude version 5.11
+
+All AVR tools except avrdude were installed by CrossPack 20100115:
+avr-gcc version 4.3.3 (GCC)
+Thread model: single
+Configured with: ../configure âprefix=/usr/local/CrossPack-AVR-20100115 âdisable-dependency-tracking âdisable-nls âdisable-werror âtarget=avr âenable-languages=c,c++ âdisable-nls âdisable-libssp âwith-dwarf2
+avr-libc version 1.6.7
+binutils version 2.19
+
diff --git a/hardware/arduino/bootloaders/caterina/Caterina.c b/hardware/arduino/bootloaders/caterina/Caterina.c
old mode 100755
new mode 100644
index abcba2b..9860b3a
--- a/hardware/arduino/bootloaders/caterina/Caterina.c
+++ b/hardware/arduino/bootloaders/caterina/Caterina.c
@@ -123,11 +123,11 @@ int main(void)
if (mcusr_state & (1<<EXTRF)) {
// External reset - we should continue to self-programming mode.
- } else if (mcusr_state == (1<<PORF) && pgm_read_word(0) != 0xFFFF) {
+ } else if ((mcusr_state & (1<<PORF)) && (pgm_read_word(0) != 0xFFFF)) {
// After a power-on reset skip the bootloader and jump straight to sketch
// if one exists.
StartSketch();
- } else if ((mcusr_state == (1<<WDRF)) && (bootKeyPtrVal != bootKey) && (pgm_read_word(0) != 0xFFFF)) {
+ } else if ((mcusr_state & (1<<WDRF)) && (bootKeyPtrVal != bootKey) && (pgm_read_word(0) != 0xFFFF)) {
// If it looks like an "accidental" watchdog reset then start the sketch.
StartSketch();
}
diff --git a/hardware/arduino/bootloaders/caterina/Caterina.h b/hardware/arduino/bootloaders/caterina/Caterina.h
old mode 100755
new mode 100644
index f8251d4..5ce80fa
--- a/hardware/arduino/bootloaders/caterina/Caterina.h
+++ b/hardware/arduino/bootloaders/caterina/Caterina.h
@@ -69,10 +69,17 @@
#define L_LED_OFF() PORTC &= ~(1<<7)
#define L_LED_ON() PORTC |= (1<<7)
#define L_LED_TOGGLE() PORTC ^= (1<<7)
- #define TX_LED_OFF() PORTD |= (1<<5)
- #define TX_LED_ON() PORTD &= ~(1<<5)
- #define RX_LED_OFF() PORTB |= (1<<0)
- #define RX_LED_ON() PORTB &= ~(1<<0)
+ #if DEVICE_PID == 0x0037 // polarity of the RX and TX LEDs is reversed on the Micro
+ #define TX_LED_OFF() PORTD &= ~(1<<5)
+ #define TX_LED_ON() PORTD |= (1<<5)
+ #define RX_LED_OFF() PORTB &= ~(1<<0)
+ #define RX_LED_ON() PORTB |= (1<<0)
+ #else
+ #define TX_LED_OFF() PORTD |= (1<<5)
+ #define TX_LED_ON() PORTD &= ~(1<<5)
+ #define RX_LED_OFF() PORTB |= (1<<0)
+ #define RX_LED_ON() PORTB &= ~(1<<0)
+ #endif
/* Type Defines: */
/** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
diff --git a/hardware/arduino/bootloaders/caterina/Descriptors.c b/hardware/arduino/bootloaders/caterina/Descriptors.c
old mode 100755
new mode 100644
index c5feaf5..b5e5150
--- a/hardware/arduino/bootloaders/caterina/Descriptors.c
+++ b/hardware/arduino/bootloaders/caterina/Descriptors.c
@@ -195,6 +195,10 @@ const USB_Descriptor_String_t ProductString =
#if DEVICE_PID == 0x0036
.UnicodeString = L"Arduino Leonardo"
+ #elif DEVICE_PID == 0x0037
+ .UnicodeString = L"Arduino Micro "
+ #elif DEVICE_PID == 0x003C
+ .UnicodeString = L"Arduino Esplora "
#else
.UnicodeString = L"USB IO board "
#endif
diff --git a/hardware/arduino/bootloaders/caterina/Descriptors.h b/hardware/arduino/bootloaders/caterina/Descriptors.h
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/caterina/Esplora-prod-firmware-2012-12-10.hex b/hardware/arduino/bootloaders/caterina/Esplora-prod-firmware-2012-12-10.hex
new file mode 100644
index 0000000..b1bfb27
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Esplora-prod-firmware-2012-12-10.hex
@@ -0,0 +1,1024 @@
+:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
+:200020000C9496010C9496010C94F6040C947D050C9496010C9496010C9496010C949601BA
+:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
+:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
+:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
+:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4
+:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D
+:2000E0000202040302020202060606060606040402020204040802011040804010204080A8
+:200100004080080204018040201002011080102040400000000200080E0000030401000BB2
+:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD
+:200140006F0020004500730070006C006F007200610020001803410072006400750069000A
+:200160006E006F0020004C004C004300120100020000004041233C8000010102000112011A
+:2001800000020200004041233C8000010102000100C18081C1080B0002020201000904004C
+:2001A000000102020000052400100105240101010424020605240600010705810310004094
+:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186
+:2001E000008501050919012903150025019503750181029501750581030501093009310943
+:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D
+:20022000019508810295017508810395067508150025650507190029658100C0090402004C
+:2002400001030000000921010100012265000705840340000100000000000000002A2B2895
+:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
+:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
+:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041007150811241FBE85
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0EAF2E102C005900D92AC32B107D9F711E071
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944A09C63D07
+:20032000D107C9F70E946C030C944E090C9400008091000161E00E94390368EE73E080E043
+:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
+:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
+:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
+:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
+:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
+:2003E000B0932F01BF91AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB734
+:20040000F89480912C0190912D01A0912E01B0912F0166B5A89B05C06F3F19F00196A11DC3
+:20042000B11D7FBFBA2FA92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A9577
+:20044000D1F7BC012DC0FFB7F89480912C0190912D01A0912E01B0912F01E6B5A89B05C0E7
+:20046000EF3F19F00196A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880FFD
+:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
+:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
+:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
+:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
+:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
+:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
+:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
+:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
+:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
+:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
+:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
+:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
+:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
+:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
+:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
+:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
+:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
+:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
+:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
+:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
+:20070000809137018823C1F057FF1AC015C02898909336018091F1008193E217F307B9F75C
+:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
+:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
+:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
+:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
+:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
+:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
+:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
+:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
+:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289805
+:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
+:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
+:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
+:2008A00008955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93CF93DF93A8
+:2008C000E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72E67E0962EC4
+:2008E0009E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22ED12CC82259
+:20090000D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200252D281B3E
+:200920009FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD013BC0822F1E
+:2009400090E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F406C01092D2
+:20096000F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC010196E491FE
+:20098000E093F10031503323C1F706C081918093F10091509923D1F7020F111D8091E800EB
+:2009A00085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9884E68093F1
+:2009C0003501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF90BF90AF906D
+:2009E0009F908F907F906F905F9008951F920F920FB60F9211242F933F934F935F936F93B8
+:200A00007F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC01092E900B0
+:200A200081E08093EB001092EC0082E38093ED001092370188E08093F00092FF34C083E037
+:200A40008093E9008091F200882319F08AE38093E8008FB7F89492E09093E9009091F20018
+:200A60008FBF992321F082E891E00E94530780913501882351F080913501815080933501F0
+:200A800080913501882309F45D9A80913601882351F0809136018150809336018091360191
+:200AA000882309F4289AFF91EF91BF91AF919F918F917F916F915F914F913F912F910F90CD
+:200AC0000FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8019D
+:200AE0000E947907C8010E941209898190E00F90CF91DF911F910F9108951F920F920FB661
+:200B00000F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF9355
+:200B2000FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE01319679
+:200B40009E01275F3F4F03C08091F1008193E217F307D1F7289884E68093360182EF809356
+:200B6000E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C901807672
+:200B80009070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C08330A3
+:200BA00009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC019
+:200BC0001C81EF80F8841230C1F51092E900109239011092380110923B0110923A010E94F6
+:200BE000640599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF44
+:200C0000998B2091380130913901275F3F4F3C872B878D871092E9001092390110923801EC
+:200C2000F0923B01E0923A0180E0BF0149E050E00E94CC030E94640585C01092E9001092E2
+:200C4000390110923801F0923B01E0923A01123241F482E290E00E940A09892B09F476C02B
+:200C600071C0113079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE68D
+:200C8000F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C00A
+:200CA000813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F447C08830C6
+:200CC00021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E3A1
+:200CE0009093E9003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA00FA
+:200D00001092EA008B81809337011CC08F8198851092E900109239011092380190933B0146
+:200D200080933A018D81882329F4CE0101960E94850706C0823051F4CE0101960E94DB0754
+:200D4000882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBF37
+:200D6000CF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF9004
+:200D8000EF900F900FBE0F901F90189520917E0130917F018091800190918101281B390B40
+:200DA0002F733070C901089520917E0130917F0180918001909181012817390719F42FEF3A
+:200DC0003FEF09C0E0918001F0918101E25CFE4F8081282F30E0C901089520917E013091DC
+:200DE0007F0180918001909181012817390719F42FEF3FEF13C0E0918001F0918101E25C60
+:200E0000FE4F2081809180019091810101968F739070909381018093800130E0C901089566
+:200E2000109285011092840188EE93E0A0E0B0E08093860190938701A0938801B09389019C
+:200E400080E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838B
+:200E600080910901882369F083E0BE016F5F7F4F41E050E00E9451041816190614F49C015B
+:200E800007C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00D
+:200EA0000E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E0917E01F091B8
+:200EC0007F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73D070809154
+:200EE000800190918101C817D90701F7DF91CF910895FC0180818E5F808380E865E971E0B5
+:200F000042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E062E071E09A
+:200F200047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E00E9410042B
+:200F400036C0823209F035C08281809309018091020190910301A0910401B0910501805B48
+:200F60009440A040B04019F58091090180FD12C087E797E790930108809300082BE088E1AE
+:200F800090E00FB6F894A895809360000FBE209360000DC088E10FB6F89480936000109264
+:200FA00060000FBEA895109201081092000881E0089580E00895FC0191818081813A31F487
+:200FC000913089F080E0933089F40DC0813269F49B3021F4828180930A0105C09A3029F4AD
+:200FE000828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC01ED91FC91E5
+:201000000480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D09958F2D90E0E8
+:201020001F910F91FF90EF90089510929001109294011092930182E291E090939201809377
+:2010400091010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0184E0BE0137
+:201060006F5F7F4F41E050E00E94510484E4B801A7010E9451040F90CF91DF911F910F910D
+:20108000FF90EF90089582E048E050E00E9422080895FC01168217821086118612861386F6
+:2010A00014823496BF010E9443080895DC01683810F0685829C0E62FF0E067FF13C0E0580A
+:2010C000F04081E090E002C0880F991FEA95E2F7809514962C911497282314962C93149720
+:2010E00060E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9114978D7F29
+:2011000014968C9314976F77FD0190E0662321F08681861709F416829F5F31969630B1F701
+:20112000CD011496BD010E94430821E030E0C9010895CF93DF93DC01683810F0685825C01E
+:20114000E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F714962C911497BE
+:20116000282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C014968C91149780
+:20118000826014968C9314976F7716968C9116978617A9F117968C911797861781F1189631
+:2011A0008C911897861759F119968C911997861731F11A968C911A97861709F11B968C915E
+:2011C0001B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C09F5F31964E
+:2011E0002196E630F10591F7963049F481E090E013969C938E93129720E030E007C0CD0189
+:201200001496BD010E94430821E030E0C901DF91CF91089580E867ED71E045E650E00E9427
+:20122000CC030895FC0180818F5F808380E86CE372E049E150E00E94CC030895CF92DF9210
+:20124000EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D916D01D701A6
+:20126000ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7CE01DF91AB
+:20128000CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994F894FFCFEC
+:2012A0000D0000E100000000000001010000000027071E09C606ED06D4064F0753070000A0
+:2012C0000000F7071E09990856084908FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:20300000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20302000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20304000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20306000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20308000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:2030A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2030C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2030E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:20310000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20312000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20314000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20316000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20318000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:2031A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2031C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2031E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:20320000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20322000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20324000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20326000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20328000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:2032A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:20330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20334000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20336000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20338000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2033A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2033C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20344000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20346000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20348000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2034A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2034E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20350000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20352000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20354000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20356000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20358000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2035A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2035C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2035E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20360000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20362000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20364000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20366000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20368000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2036A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2036C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2036E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20372000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20374000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20376000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20378000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2037A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20380000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20382000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20384000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20386000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20388000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2038A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2038C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2038E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20390000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20392000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20394000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20396000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20398000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2039A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2039C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2039E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:203A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:203A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:203A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:203A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:203A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:203AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:203AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:203AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:203B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:203B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:203B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:203B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:203B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:203BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:203BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:203BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:203C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:203C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:203C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:203C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:203C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:203CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:203CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:203CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:203D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:203D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:203D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:203D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:203D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:203DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:203DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:203DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:203E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:203E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:203E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:203E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:203E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:203EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:203EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:203EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:203F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:203F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:203F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:203F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:203F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:203FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:203FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:203FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:20400000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20402000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20404000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20406000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20408000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2040A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2040C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2040E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20410000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20412000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20414000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20416000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20418000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2041A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2041C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2041E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20420000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20422000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20424000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20426000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20428000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2042A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2042C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2042E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20430000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20436000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2043A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2043C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2043E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20440000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20442000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20444000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20446000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20450000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20452000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20454000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20456000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20458000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2045A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2045C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2045E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20460000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20462000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20464000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20466000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20468000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2046A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2046C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2046E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20470000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20472000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20474000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20476000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20478000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2047A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2047C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20480000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20482000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20484000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20486000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20488000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2048A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2048C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2048E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20490000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20492000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20494000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20496000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20498000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2049A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2049C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2049E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:204A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:204A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:204A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:204A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:204A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:204AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:204AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:204AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:204B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:204B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:204B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:204B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:204B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:204BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:204BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:204BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:204C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:204C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:204C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:204C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:204C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:204CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:204CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:204CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:204D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:204D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:204D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:204D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:204D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:204DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:204DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:204DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:204E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:204E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:204E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:204E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:204E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:204EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:204EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:204EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:204F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:204F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:204F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:204F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:204F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:204FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:204FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:204FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:20500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20502000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20504000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20506000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:20508000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2050A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2050C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:2050E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20510000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20512000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20514000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20516000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:20518000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2051A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2051C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:2051E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20520000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20522000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20524000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20526000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:20528000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2052A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2052C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:2052E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20530000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20532000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20534000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20536000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:20538000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2053A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2053C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:2053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20540000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20542000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20544000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20546000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:20548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:2054E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20550000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20552000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20554000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20556000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:20558000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2055A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2055C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:2055E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20560000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20562000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20564000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20566000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:20568000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2056A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2056C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:2056E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20570000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20572000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20574000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20576000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:20578000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2057A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2057C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:2057E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20584000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:20588000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2058A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2058C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:2058E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20590000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20592000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20594000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20596000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:20598000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2059A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2059C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:2059E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:205A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:205A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:205A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:205A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:205A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:205AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:205AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:205AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:205B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:205B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:205B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:205B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:205B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:205BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:205BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:205BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:205C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:205C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:205C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:205C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:205C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:205CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:205CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:205CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:205D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:205D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:205D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:205D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:205D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:205DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:205DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:205DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:205E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:205E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:205E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:205E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:205E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:205EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:205EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:205EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:205F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:205F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:205F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:205F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:205F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:205FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:205FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:205FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:20600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20602000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20604000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20606000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:20608000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2060A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2060C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:2060E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20610000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20612000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20614000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20616000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:20618000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2061A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2061C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:2061E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20620000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20622000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20624000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20626000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:20628000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2062A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2062C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:2062E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20630000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20632000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20634000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20636000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:20638000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2063A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2063C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:2063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20646000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:20648000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2064A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2064C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:2064E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20650000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20652000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20654000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20656000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:20658000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2065A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2065C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:2065E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20660000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20662000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20664000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20666000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:20668000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2066C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:2066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:20678000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2067A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2067C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:2067E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20680000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20682000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20684000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20686000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:20688000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2068A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2068C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:2068E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:20698000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:2069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:206A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:206A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:206A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:206A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:206A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:206AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:206AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:206AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:206B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:206B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:206B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:206B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:206B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:206BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:206BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:206BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:206C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:206C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:206C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:206C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:206C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:206CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:206CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:206CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:206D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:206D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:206D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:206D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:206D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:206DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:206DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:206DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:206E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:206E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:206E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:206E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:206E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:206EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:206EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:206EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:206F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:206F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:206F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:206F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:206F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:206FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
+:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
+:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
+:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
+:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
+:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
+:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEB
+:20710000289A0C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA6
+:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
+:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
+:207160009093A9018093A801892B09F45D9A8091AA019091AB01009741F001979093AB0126
+:207180008093AA01892B09F4289AE0E0F0E0859194918F5F9F4F49F08091AC019091AD0151
+:2071A00001969093AD018093AC01FF91EF919F918F912F910F900FBE0F901F90189584E0BC
+:2071C0008093E9000DC08091E8008B778093E80003C08EB3882351F08091E80082FFF9CFBE
+:2071E0008091E80085FFEFCF8091F1000895982F83E08093E9008091E80085FD0DC0809136
+:20720000E8008E778093E80003C08EB3882369F08091E80080FFF9CF9093F1005D9884E6CB
+:2072200090E09093A9018093A80108954F925F926F927F928F929F92AF92BF92CF92DF921E
+:20724000EF92FF920F931F93CF93DF9384E08093E9008091E80082FF57C2289884E690E067
+:207260009093AB018093AA01AADF182F853481F48CE49DE19093AD018093AC0107B600FC4B
+:20728000FDCFF999FECF81E180935700E89503C0843519F494DF8DE00DC28C34E1F38035F9
+:2072A000D1F3843721F484E4A2DF80E003C2813611F489E5FFC18134B1F481DF182F7FDFE3
+:2072C00090E0880F991FAA2797FDA095BA2F312F330F20E0442737FD4095542F822B932B68
+:2072E000A42BB52BB8C1803711F483E5E3C1833549F4C0E0D1E089917ADF21E0C730D20714
+:20730000D1F7D9C1863521F481E371DF80E3D2C1833731F487E86BDF85E969DF8EE1CAC149
+:207320008536B9F4E0E0F0E093E085E090935700E89507B600FCFDCF80935700E89507B65D
+:2073400000FCFDCFE058FF4FA0E7E030FA0771F7A2CF823739F4E1E0F0E089E08093570024
+:207360008491A8C1863439F4E0E0F0E089E08093570084919FC18E3439F4E3E0F0E089E0E5
+:2073800080935700849196C1813539F4E2E0F0E089E08093570084918DC1823631F489E521
+:2073A00026DF80E024DF80E885C1823419F0873609F0E5C01092AD011092AC0100DF082FE8
+:2073C000FEDEF82EFCDE682E8554823008F071C1902F80E0CF2DD0E0C82BD92B10926F00B3
+:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
+:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
+:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
+:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
+:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
+:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
+:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
+:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
+:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
+:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
+:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
+:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
+:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
+:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
+:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C
+:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
+:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
+:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
+:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
+:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
+:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
+:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
+:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
+:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
+:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
+:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
+:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
+:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
+:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
+:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100F0C0409116
+:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
+:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
+:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
+:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
+:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
+:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
+:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
+:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
+:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
+:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
+:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
+:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
+:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
+:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
+:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
+:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
+:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
+:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
+:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
+:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
+:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
+:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
+:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
+:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
+:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
+:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
+:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
+:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
+:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
+:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
+:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
+:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
+:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
+:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
+:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
+:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
+:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
+:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
+:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
+:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
+:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
+:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
+:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
+:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
+:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
+:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
+:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
+:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
+:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
+:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
+:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
+:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
+:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
+:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
+:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
+:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
+:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
+:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
+:207F400000000000000801120110010200000841233C0001000201000109023E00020100F9
+:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
+:207F800009040100020A000000070504021000010705830210000104030904220341007216
+:207FA000006400750069006E006F0020004500730070006C006F0072006100200000001874
+:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Esplora-prod-firmware-2012-12-10.txt b/hardware/arduino/bootloaders/caterina/Esplora-prod-firmware-2012-12-10.txt
new file mode 100644
index 0000000..aef5df1
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Esplora-prod-firmware-2012-12-10.txt
@@ -0,0 +1,6 @@
+LUFA: 111009
+make: 3.81
+avrdude: 5.11.1
+avr-libc: 1.6.7
+binutils-avr: 2.19
+gcc-avr 4.3.3
diff --git a/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-04-26.hex b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-04-26.hex
new file mode 100644
index 0000000..de7b53c
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-04-26.hex
@@ -0,0 +1,1024 @@
+:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
+:200020000C9496010C9496010C9410050C949B050C9496010C9496010C9496010C94960181
+:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
+:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
+:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
+:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4
+:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D
+:2000E0000202040302020202060606060606040402020204040802011040804010204080A8
+:200100004080080204018040201002011080102040400000000200080E0000030401000BB2
+:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD
+:200140006F0020004C0065006F006E006100720064006F00180341007200640075006900CC
+:200160006E006F0020004C004C004300120100020000004041233680000101020001120120
+:200180000002020000404123368000010102000100C18081C1080B00020202010009040052
+:2001A000000102020000052400100105240101010424020605240600010705810310004094
+:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186
+:2001E000008501050919012903150025019503750181029501750581030501093009310943
+:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D
+:20022000019508810295017508810395067508150025650507190029658100C0090402004C
+:2002400001030000000921010100012265000705840340000100000000000000002A2B2895
+:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
+:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
+:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B500004C042E072C0811241FBE36
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEECF2E102C005900D92AC32B107D9F711E061
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E946109C63DF0
+:20032000D107C9F70E9486030C9465090C9400008091000161E00E94530364E873E080E002
+:2003400090E00E94FD018091000160E00E9453036CE474E080E090E00E94FD010895809181
+:20036000000161E00E94B60208951F920F920FB60F9211242F933F938F939F93AF93BF93DB
+:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
+:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
+:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
+:2003E000B0932F01BF91AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB734
+:20040000F89480912C0190912D01A0912E01B0912F0166B5A89B05C06F3F19F00196A11DC3
+:20042000B11D7FBFBA2FA92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A9577
+:20044000D1F7BC012DC0FFB7F89480912C0190912D01A0912E01B0912F01E6B5A89B05C0E7
+:20046000EF3F19F00196A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880FFD
+:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
+:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
+:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
+:2004E0008083E0E8F0E0808181608083E1EBF0E0808184608083E0EBF0E080818160808378
+:20050000E1E9F0E0808182608083808181608083E0E9F0E0808181608083E1ECF0E080815A
+:2005200084608083808182608083808181608083E3ECF0E0808181608083E0ECF0E08081E8
+:2005400082608083E2ECF0E0808181608083EAE7F0E08081846080838081826080838081C3
+:20056000816080838081806880830895CF93DF93482F50E0CA018C509F4FFC0134914A52A0
+:200580005F4FFA018491882369F190E0880F991FFC01E455FF4FA591B491FC01E654FF4F55
+:2005A000C591D491662351F42FB7F8948C91932F909589238C93888189230BC0623061F40A
+:2005C0002FB7F8948C91932F909589238C938881832B88832FBF06C09FB7F8948C91832BB7
+:2005E0008C939FBFDF91CF9108958730C1F1883080F48330F9F0843030F4813029F182308B
+:2006000009F050C024C08430C9F0863009F04AC022C08A3091F18B3030F4883031F1893037
+:2006200009F040C026C08C3091F18C3060F18E30C9F533C0809180008F7703C08091800036
+:200640008F7D80938000089584B58F7702C084B58F7D84BD08958091B0008F7703C080919F
+:20066000B0008F7D8093B0000895809190008F7707C0809190008F7D03C080919000877FD9
+:200680008093900008958091C0008F7703C08091C0008F7D8093C00008958091C200877F5A
+:2006A0008093C2000895FF920F931F93F62E482F50E0CA018E5E9E4FFC012491CA018C501B
+:2006C0009F4FFC0114914A525F4FFA0104910023C9F0222319F0822F0E94F502E02FF0E05D
+:2006E000EE0FFF1FE654FF4FA591B4919FB7F894FF2021F48C911095812302C08C91812BD5
+:200700008C939FBF1F910F91FF900895CF93DF930E9456028DE391E00E944D040E94AF01EC
+:20072000C0E0D0E00E9498012097E1F30E940000F9CF282F809137018823C1F057FF1AC00D
+:2007400015C02898909336018091F1008193E217F307B9F74115510539F08091F20088236E
+:2007600019F48BE68093E800AFBF02C04FEF5FEFCA010895AFB7F89427702093E9008091A6
+:20078000F200282F30E0241735070CF4A901FB019B01240F311D94E6DACFDF93CF930F922E
+:2007A000CDB7DEB7BE016F5F7F4F41E050E00E949903019719F02FEF3FEF03C08981282F25
+:2007C00030E0C9010F90CF91DF910895FF920F931F93F82E142F052F40913A0150913B0188
+:2007E000212F302FC901DC01FB016EEF29C0F7FE02C0949101C090812091380130913901CE
+:2008000024173507ACF48091E8008570E1F38091E80082FF03C02FEF3FEF17C09093F1008B
+:20082000C90101968F739070892B11F46093E8002F5F3F4F3093390120933801119731964D
+:200840001097A9F6812F902F9C01C9011F910F91FF9008959C018091E80082FFFCCFF90124
+:20086000260F311D03C08091F1008193E217F307D1F7289884E6809336018BEF8093E80078
+:20088000CB0108958093E9008091F200882319F08AE38093E800089508951092370181E05F
+:2008A0008093D70080EA8093D80082E189BD09B400FEFDCF61E070E080E090E00E94FD01C8
+:2008C00080E98093D8008CE08093E2001092E000559A209A08955F926F927F928F929F9246
+:2008E000AF92BF92CF92DF92EF92FF920F931F93CF93DF93E82E842E752E809137018823FB
+:2009000071F18B01242F352FC901EC017AEFF72E67E0962E9E2050E4552E8E2D90E040E220
+:20092000A42EB12CA822B9223AE3632E20E4C22ED12CC822D92258C09FB7F8949092E900DA
+:200940008091E80085FD02C020E004C08091F200252D281B9FBF222361F4FA9419F42FEF4D
+:200960003FEF4DC061E070E080E090E00E94FD013BC0822F90E0C817D9070CF42C2FC21B28
+:20098000D1094FB7F8949092E900A114B10421F406C01092F10021502223D9F719C0E7FCC6
+:2009A00003C0F801922F10C0C801322F06C0FC010196E491E093F10031503323C1F706C038
+:2009C00081918093F10091509923D1F7020F111D8091E80085FF05C0209729F4C114D1049D
+:2009E00011F06092E8004FBF209709F0A5CF5D9884E680933501282D372DC9019C01C90158
+:200A0000DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F907F906F905F90089564
+:200A20001F920F920FB60F9211241F932F933F934F935F936F937F938F939F93AF93BF93B3
+:200A4000EF93FF938091E1001092E100982F83FF0FC01092E90081E08093EB001092EC007D
+:200A600082E38093ED001092370188E08093F00092FF36C083E08093E9008091F200882338
+:200A800049F08AE38093E80005C082E891E00E94710701C012E09FB7F8941093E9008091C9
+:200AA000F2009FBF882389F780913501882351F08091350181508093350180913501882335
+:200AC00009F45D9A80913601882351F08091360181508093360180913601882309F4289AD9
+:200AE000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F910F900FBE0F90DB
+:200B00001F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8010E9490078F
+:200B2000C8010E942909898190E00F90CF91DF911F910F9108951F920F920FB60F92112455
+:200B4000EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF93FF93DF93E7
+:200B6000CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE0131969E01275F18
+:200B80003F4F03C08091F1008193E217F307D1F7289884E68093360182EF8093E800998139
+:200BA00097FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C90180769070892B80
+:200BC00009F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C0833009F4D0C08A
+:200BE000853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC01C81EF805A
+:200C0000F8841230C1F51092E900109239011092380110923B0110923A010E94820599E0C1
+:200C2000FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF998B209110
+:200C4000380130913901275F3F4F3C872B878D871092E9001092390110923801F0923B01C3
+:200C6000E0923A0180E0BF0149E050E00E94E6030E94820585C01092E9001092390110924C
+:200C80003801F0923B01E0923A01123241F482E290E00E942109892B09F476C071C011303E
+:200CA00079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE6F1E013C01B
+:200CC000133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C0813009F0C4
+:200CE00053C0E4E5F1E0449180E8BF0150E00E94E60346C0873009F447C0883021F481E0A0
+:200D00008093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E39093E900CA
+:200D20003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA001092EA0039
+:200D40008B81809337011CC08F8198851092E900109239011092380190933B0180933A0144
+:200D60008D81882329F4CE0101960E949C0706C0823051F4CE0101960E94F207882321F078
+:200D80008EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBFCF91DF91E3
+:200DA000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF90EF900F9076
+:200DC0000FBE0F901F90189520917E0130917F018091800190918101281B390B2F733070DC
+:200DE000C901089520917E0130917F0180918001909181012817390719F42FEF3FEF09C045
+:200E0000E0918001F0918101E25CFE4F8081282F30E0C901089520917E0130917F01809101
+:200E20008001909181012817390719F42FEF3FEF13C0E0918001F0918101E25CFE4F2081C2
+:200E4000809180019091810101968F739070909381018093800130E0C901089510928501EC
+:200E60001092840188EE93E0A0E0B0E08093860190938701A0938801B093890180E191E0B2
+:200E8000909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838091090102
+:200EA000882369F083E0BE016F5F7F4F41E050E00E946B041816190614F49C0107C081E0F4
+:200EC00090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00E9442040D
+:200EE000089582E00E94CD03482F20917E0130917F012F5F3F4F2F73307080918001909188
+:200F000081012817390759F0E0917E01F0917F01E25CFE4F408330937F0120937E01089536
+:200F2000FC0180818E5F808380E865E971E042E450E00E94E6030895FC0181819081913A63
+:200F400059F4813209F04CC080E062E071E047E050E00E94E60342C0913209F041C0803246
+:200F600039F482E091E067E070E00E942A0436C0823209F035C0828180930901809102013E
+:200F800090910301A0910401B0910501805B9440A040B04019F58091090180FD12C087E74A
+:200FA00097E790930108809300082BE088E190E00FB6F894A895809360000FBE20936000A7
+:200FC0000DC088E10FB6F89480936000109260000FBEA895109201081092000881E00895B8
+:200FE00080E00895FC0191818081813A31F4913089F080E0933089F40DC0813269F49B3082
+:2010000021F4828180930A0105C09A3029F4828180930B0181E0089580E00895EF92FF92BF
+:201020000F931F938C01E62EDC01ED91FC910480F581E02D0995F82ED801ED91FC9106809E
+:20104000F781E02DC8016E2D09958F2D90E01F910F91FF90EF900895109290011092940178
+:201060001092930182E291E090939201809391010895EF92FF920F931F93DF93CF930F9292
+:20108000CDB7DEB789838B017A0184E0BE016F5F7F4F41E050E00E946B0484E4B801A7013A
+:2010A0000E946B040F90CF91DF911F910F91FF90EF90089582E048E050E00E94390808957B
+:2010C000FC0116821782108611861286138614823496BF010E945A080895DC01683810F046
+:2010E000685829C0E62FF0E067FF13C0E058F04081E090E002C0880F991FEA95E2F7809572
+:2011000014962C911497282314962C93149760E012C0EB5AFD4F6491662319F420E030E020
+:201120001DC067FF08C014968C9114978D7F14968C9314976F77FD0190E0662321F08681BD
+:20114000861709F416829F5F31969630B1F7CD011496BD010E945A0821E030E0C901089578
+:20116000CF93DF93DC01683810F0685825C0E62FF0E067FF12C0E058F04081E090E002C061
+:20118000880F991FEA95E2F714962C911497282B14962C93149760E00FC0EB5AFD4F64919A
+:2011A0006623D9F167FF08C014968C911497826014968C9314976F7716968C9116978617ED
+:2011C000A9F117968C911797861781F118968C911897861759F119968C911997861731F152
+:2011E0001A968C911A97861709F11B968C911B978617E1F0ED01E0E0F0E09E2F8E818823E7
+:2012000021F4EA0FFB1F668306C09F5F31962196E630F10591F7963049F481E090E013966A
+:201220009C938E93129720E030E007C0CD011496BD010E945A0821E030E0C901DF91CF91F9
+:20124000089580E867ED71E045E650E00E94E6030895FC0180818F5F808380E86CE372E069
+:2012600049E150E00E94E6030895CF92DF92EF92FF920F931F93CF93DF937C016B018A016C
+:20128000C0E0D0E00FC0D6016D916D01D701ED91FC910190F081E02DC7010995C80FD91FC5
+:2012A000015010400115110571F7CE01DF91CF911F910F91FF90EF90DF90CF900895EE0F94
+:2012C000FF1F0590F491E02D0994F894FFCF0D0000E1000000000000010100000000450796
+:2012E0003509E4060B07F2066D077107000000000E083509B0086D086008FFFFFFFFFFFFED
+:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:20300000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20302000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20304000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20306000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20308000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:2030A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2030C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2030E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:20310000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20312000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20314000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20316000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20318000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:2031A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2031C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2031E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:20320000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20322000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20324000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20326000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20328000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:2032A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:20330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20334000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20336000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20338000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2033A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2033C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20344000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20346000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20348000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2034A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2034E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20350000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20352000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20354000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20356000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20358000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2035A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2035C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2035E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20360000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20362000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20364000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20366000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20368000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2036A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2036C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2036E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20372000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20374000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20376000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20378000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2037A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20380000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20382000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20384000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20386000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20388000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2038A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2038C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2038E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20390000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20392000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20394000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20396000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20398000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2039A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2039C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2039E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:203A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:203A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:203A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:203A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:203A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:203AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:203AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:203AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:203B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:203B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:203B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:203B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:203B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:203BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:203BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:203BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:203C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:203C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:203C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:203C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:203C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:203CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:203CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:203CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:203D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:203D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:203D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:203D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:203D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:203DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:203DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:203DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:203E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:203E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:203E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:203E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:203E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:203EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:203EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:203EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:203F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:203F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:203F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:203F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:203F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:203FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:203FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:203FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:20400000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20402000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20404000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20406000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20408000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2040A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2040C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2040E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20410000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20412000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20414000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20416000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20418000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2041A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2041C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2041E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20420000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20422000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20424000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20426000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20428000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2042A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2042C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2042E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20430000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20436000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2043A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2043C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2043E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20440000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20442000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20444000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20446000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20450000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20452000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20454000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20456000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20458000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2045A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2045C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2045E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20460000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20462000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20464000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20466000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20468000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2046A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2046C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2046E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20470000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20472000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20474000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20476000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20478000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2047A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2047C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20480000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20482000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20484000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20486000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20488000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2048A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2048C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2048E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20490000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20492000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20494000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20496000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20498000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2049A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2049C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2049E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:204A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:204A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:204A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:204A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:204A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:204AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:204AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:204AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:204B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:204B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:204B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:204B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:204B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:204BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:204BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:204BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:204C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:204C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:204C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:204C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:204C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:204CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:204CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:204CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:204D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:204D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:204D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:204D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:204D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:204DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:204DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:204DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:204E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:204E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:204E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:204E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:204E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:204EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:204EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:204EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:204F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:204F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:204F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:204F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:204F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:204FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:204FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:204FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:20500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20502000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20504000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20506000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:20508000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2050A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2050C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:2050E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20510000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20512000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20514000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20516000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:20518000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2051A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2051C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:2051E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20520000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20522000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20524000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20526000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:20528000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2052A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2052C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:2052E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20530000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20532000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20534000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20536000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:20538000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2053A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2053C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:2053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20540000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20542000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20544000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20546000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:20548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:2054E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20550000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20552000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20554000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20556000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:20558000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2055A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2055C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:2055E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20560000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20562000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20564000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20566000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:20568000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2056A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2056C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:2056E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20570000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20572000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20574000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20576000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:20578000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2057A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2057C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:2057E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20584000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:20588000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2058A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2058C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:2058E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20590000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20592000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20594000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20596000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:20598000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2059A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2059C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:2059E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:205A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:205A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:205A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:205A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:205A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:205AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:205AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:205AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:205B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:205B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:205B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:205B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:205B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:205BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:205BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:205BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:205C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:205C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:205C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:205C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:205C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:205CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:205CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:205CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:205D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:205D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:205D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:205D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:205D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:205DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:205DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:205DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:205E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:205E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:205E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:205E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:205E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:205EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:205EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:205EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:205F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:205F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:205F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:205F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:205F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:205FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:205FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:205FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:20600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20602000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20604000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20606000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:20608000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2060A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2060C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:2060E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20610000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20612000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20614000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20616000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:20618000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2061A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2061C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:2061E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20620000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20622000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20624000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20626000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:20628000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2062A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2062C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:2062E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20630000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20632000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20634000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20636000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:20638000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2063A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2063C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:2063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20646000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:20648000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2064A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2064C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:2064E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20650000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20652000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20654000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20656000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:20658000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2065A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2065C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:2065E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20660000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20662000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20664000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20666000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:20668000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2066C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:2066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:20678000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2067A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2067C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:2067E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20680000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20682000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20684000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20686000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:20688000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2068A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2068C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:2068E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:20698000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:2069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:206A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:206A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:206A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:206A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:206A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:206AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:206AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:206AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:206B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:206B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:206B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:206B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:206B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:206BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:206BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:206BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:206C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:206C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:206C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:206C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:206C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:206CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:206CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:206CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:206D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:206D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:206D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:206D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:206D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:206DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:206DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:206DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:206E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:206E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:206E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:206E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:206E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:206EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:206EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:206EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:206F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:206F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:206F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:206F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:206F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:206FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
+:2070200060C000005EC00000EEC400005AC0000058C0000056C0000054C0000052C00000F2
+:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
+:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
+:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0EAE2B5
+:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
+:2070E00022C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEF
+:20710000289A0C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA6
+:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
+:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
+:207160009093A9018093A801892B09F45D9A8091AA019091AB01009741F001979093AB0126
+:207180008093AA01892B09F4289AE0E0F0E0859194918F5F9F4F49F08091AC019091AD0151
+:2071A00001969093AD018093AC01FF91EF919F918F912F910F900FBE0F901F90189584E0BC
+:2071C0008093E9000DC08091E8008B778093E80003C08EB3882351F08091E80082FFF9CFBE
+:2071E0008091E80085FFEFCF8091F1000895982F83E08093E9008091E80085FD0DC0809136
+:20720000E8008E778093E80003C08EB3882369F08091E80080FFF9CF9093F1005D9884E6CB
+:2072200090E09093A9018093A80108954F925F926F927F928F929F92AF92BF92CF92DF921E
+:20724000EF92FF920F931F93CF93DF9384E08093E9008091E80082FF57C2289884E690E067
+:207260009093AB018093AA01AADF182F853481F48CE49DE19093AD018093AC0107B600FC4B
+:20728000FDCFF999FECF81E180935700E89503C0843519F494DF8DE00DC28C34E1F38035F9
+:2072A000D1F3843721F484E4A2DF80E003C2813611F489E5FFC18134B1F481DF182F7FDFE3
+:2072C00090E0880F991FAA2797FDA095BA2F312F330F20E0442737FD4095542F822B932B68
+:2072E000A42BB52BB8C1803711F483E5E3C1833549F4C0E0D1E089917ADF21E0C730D20714
+:20730000D1F7D9C1863521F481E371DF80E3D2C1833731F487E86BDF85E969DF8EE1CAC149
+:207320008536B9F4E0E0F0E093E085E090935700E89507B600FCFDCF80935700E89507B65D
+:2073400000FCFDCFE058FF4FA0E7E030FA0771F7A2CF823739F4E1E0F0E089E08093570024
+:207360008491A8C1863439F4E0E0F0E089E08093570084919FC18E3439F4E3E0F0E089E0E5
+:2073800080935700849196C1813539F4E2E0F0E089E08093570084918DC1823631F489E521
+:2073A00026DF80E024DF80E885C1823419F0873609F0E5C01092AD011092AC0100DF082FE8
+:2073C000FEDEF82EFCDE682E8554823008F071C1902F80E0CF2DD0E0C82BD92B10926F00B3
+:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
+:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
+:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
+:2074400018C0D801C701B695A7959795879555D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF6
+:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
+:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
+:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
+:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
+:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
+:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
+:20752000C701F3D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934D
+:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
+:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
+:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
+:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C
+:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
+:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
+:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70165D4E2
+:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
+:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
+:20768000B695A7959795879538D4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010E
+:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
+:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
+:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
+:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
+:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E007D28091E8008B770F
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E059D2809196
+:20778000E8008E778093E800089582E061EC42E0B1D083E061E842E1ADD084E060E842E1F7
+:2077A000A9C084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB643
+:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
+:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100ECC040911A
+:20780000000850910108109201081092000824B714BE88E10FB6F894809360001092600045
+:207820000FBE822F90E0FC01E270F07021FD14C0213019F4859194910BC0283069F480918F
+:20784000090190910A014817590731F0859194918F5F9F4F09F046DCA4DF78941092AD0101
+:207860001092AC010CC0E2DC36D38091AC019091AD0181549F4110F01092140145DC8091FB
+:207880001401882381F78091E00081608093E00029DC80E090E00895FA01923049F09330C0
+:2078A00061F09130F9F485E191E022E130E01EC087E291E02EE330E019C0882329F485E6FA
+:2078C00091E024E030E012C0813029F489E691E022E230E00BC0823029F48DE891E028E106
+:2078E00030E004C080E090E020E030E091838083C90108958093E9008091EB00816080936A
+:20790000EB001092ED006093EC004093ED008091EE00881F8827881F08958091B601882342
+:207920008CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008958EB361
+:20794000882349F08091E80080FFF9CF8091E8008E778093E8000895EF92FF920F931F9307
+:2079600045D04CD008ED10E0F80180818F77808380818068808380818F7D808319BC1EBA45
+:207980001092B40180EEE82EF12CF70180818B7F8083F80180818160808380E060E042E049
+:2079A000A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188608083F701808125
+:2079C0008E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E080818160808335
+:2079E0008AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E20008951092DA00D6
+:207A00001092E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F9389
+:207A2000AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091DA008E7F80930F
+:207A4000DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E08EBB3BD203C0C7
+:207A600019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E2008E7F8093E200CE
+:207A80008091E20080618093E2008091D80080628093D80019BC85E08EBB1CD28091E10004
+:207AA00084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF8091D8008F7D2D
+:207AC0008093D8008091E1008F7E8093E1008091E2008F7E8093E2008091E20081608093EC
+:207AE000E2008091B401882331F48091E30087FD02C081E001C084E08EBBECD18091E10056
+:207B000083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB1092B4018091B1
+:207B2000E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E20080E060E005
+:207B400042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F90B6
+:207B60000FBE0F901F9018959C014091BC015091BD014617570718F4F90190E044C06115C8
+:207B8000710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3882309F444C006
+:207BA000853009F443C08091E80083FF02C081E008958091E80082FD31C08091E80080FFF4
+:207BC00022C08091F3009091F200782F60E0292F30E0262B372B07C081918093F10041503C
+:207BE00050402F5F3F4F4115510519F02830310598F390E02830310509F491E08091E800A6
+:207C00008E778093E8004115510531F6992321F605C08EB3882341F0853041F08091E800FD
+:207C200082FFF7CF80E0089582E0089583E008959C016115710529F48091E8008B7780934D
+:207C4000E800F90126C08EB3882391F1853091F18091E80083FF02C081E008958091E80083
+:207C600082FFF1CF06C08091F10081936150704059F02091F3008091F200322F20E090E0C5
+:207C8000822B932B892B79F78091E8008B778093E80061157105B9F605C08EB3882341F0E2
+:207CA000853041F08091E80080FFF7CF80E0089582E0089583E008950F931F93DF93CF937C
+:207CC00000D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F728DD8091E80083FF3A
+:207CE000E4C08091B6019091B701953009F46DC0963040F4913081F1913070F0933009F046
+:207D0000D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC0803809F4C6C082380B
+:207D200009F0C3C08091BA0187708093E9008091EB001092E9002091E800277F2093E800A7
+:207D400090E025E0969587952A95E1F781708093F1001092F10087C0882319F0823009F0A2
+:207D6000A4C08F71823009F0A0C08091B801882331F52091BA01277009F497C02093E90006
+:207D80008091EB0080FF1BC0933021F48091EB00806213C08091EB0080618093EB0081E0C8
+:207DA00090E002C0880F991F2A95E2F78093EA001092EA008091EB0088608093EB0010929D
+:207DC000E9008091E800877F51C0882309F06DC01091B8011F770FB7F8948091E800877F98
+:207DE0008093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30080688093E30062
+:207E0000112311F482E001C083E08EBB0FBF4DC08058823008F049C08091B8019091B9014F
+:207E20006091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F8093E800898128
+:207E40009A8192DE8091E8008B778093E8002DC0803859F58091E800877F8093E8008091A3
+:207E6000B4018093F1008091E8008E778093E80054DD1BC08823C9F49091B8019230A8F4A4
+:207E80008091E800877F8093E8009093B40145DD8091B401882331F48091E30087FD02C01E
+:207EA00081E001C084E08EBB70DC8091E80083FF0AC08091EB0080628093EB008091E8008D
+:207EC000877F8093E8000F900F90CF91DF911F910F91089508951F938EB3882361F0109179
+:207EE000E9001092E9008091E80083FF01C0E4DE17701093E9001F910895F999FECF92BD02
+:207F000081BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB6F894FA9AF99A90
+:207F20000FBE01960895F894FFCF4341544552494E4100777700080000000000000801128E
+:207F4000011001020000084123360001000201000109023E00020100803209040000010258
+:207F60000201000524001001042402040524060001070582030800FF09040100020A0000B4
+:207F8000000705040210000107058302100001040309042203410072006400750069006E80
+:207FA000006F0020004C0065006F006E006100720064006F00000018034100720064007557
+:127FC0000069006E006F0020004C004C0043000000006E
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-04-26.txt b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-04-26.txt
new file mode 100644
index 0000000..5beb659
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-04-26.txt
@@ -0,0 +1,11 @@
+Builds against LUFA version 111009
+make version 3.81
+avrdude version 5.11
+
+All AVR tools except avrdude were installed by CrossPack 20100115:
+avr-gcc version 4.3.3 (GCC)
+Thread model: single
+Configured with: ../configure âprefix=/usr/local/CrossPack-AVR-20100115 âdisable-dependency-tracking âdisable-nls âdisable-werror âtarget=avr âenable-languages=c,c++ âdisable-nls âdisable-libssp âwith-dwarf2
+avr-libc version 1.6.7
+binutils version 2.19
+
diff --git a/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-12-10.hex b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-12-10.hex
new file mode 100644
index 0000000..47053bc
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-12-10.hex
@@ -0,0 +1,1024 @@
+:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
+:200020000C9496010C9496010C94F6040C947D050C9496010C9496010C9496010C949601BA
+:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
+:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
+:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
+:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4
+:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D
+:2000E0000202040302020202060606060606040402020204040802011040804010204080A8
+:200100004080080204018040201002011080102040400000000200080E0000030401000BB2
+:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD
+:200140006F0020004C0065006F006E006100720064006F00180341007200640075006900CC
+:200160006E006F0020004C004C004300120100020000004041233680000101020001120120
+:200180000002020000404123368000010102000100C18081C1080B00020202010009040052
+:2001A000000102020000052400100105240101010424020605240600010705810310004094
+:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186
+:2001E000008501050919012903150025019503750181029501750581030501093009310943
+:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D
+:20022000019508810295017508810395067508150025650507190029658100C0090402004C
+:2002400001030000000921010100012265000705840340000100000000000000002A2B2895
+:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
+:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
+:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041007150811241FBE85
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0EAF2E102C005900D92AC32B107D9F711E071
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944A09C63D07
+:20032000D107C9F70E946C030C944E090C9400008091000161E00E94390368EE73E080E043
+:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
+:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
+:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
+:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
+:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
+:2003E000B0932F01BF91AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB734
+:20040000F89480912C0190912D01A0912E01B0912F0166B5A89B05C06F3F19F00196A11DC3
+:20042000B11D7FBFBA2FA92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A9577
+:20044000D1F7BC012DC0FFB7F89480912C0190912D01A0912E01B0912F01E6B5A89B05C0E7
+:20046000EF3F19F00196A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880FFD
+:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
+:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
+:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
+:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
+:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
+:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
+:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
+:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
+:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
+:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
+:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
+:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
+:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
+:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
+:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
+:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
+:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
+:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
+:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
+:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
+:20070000809137018823C1F057FF1AC015C02898909336018091F1008193E217F307B9F75C
+:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
+:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
+:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
+:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
+:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
+:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
+:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
+:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
+:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289805
+:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
+:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
+:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
+:2008A00008955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93CF93DF93A8
+:2008C000E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72E67E0962EC4
+:2008E0009E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22ED12CC82259
+:20090000D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200252D281B3E
+:200920009FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD013BC0822F1E
+:2009400090E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F406C01092D2
+:20096000F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC010196E491FE
+:20098000E093F10031503323C1F706C081918093F10091509923D1F7020F111D8091E800EB
+:2009A00085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9884E68093F1
+:2009C0003501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF90BF90AF906D
+:2009E0009F908F907F906F905F9008951F920F920FB60F9211242F933F934F935F936F93B8
+:200A00007F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC01092E900B0
+:200A200081E08093EB001092EC0082E38093ED001092370188E08093F00092FF34C083E037
+:200A40008093E9008091F200882319F08AE38093E8008FB7F89492E09093E9009091F20018
+:200A60008FBF992321F082E891E00E94530780913501882351F080913501815080933501F0
+:200A800080913501882309F45D9A80913601882351F0809136018150809336018091360191
+:200AA000882309F4289AFF91EF91BF91AF919F918F917F916F915F914F913F912F910F90CD
+:200AC0000FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F1F4FC8019D
+:200AE0000E947907C8010E941209898190E00F90CF91DF911F910F9108951F920F920FB661
+:200B00000F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93BF93EF9355
+:200B2000FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC1FE01319679
+:200B40009E01275F3F4F03C08091F1008193E217F307D1F7289884E68093360182EF809356
+:200B6000E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0C901807672
+:200B80009070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F4D3C08330A3
+:200BA00009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863009F07CC019
+:200BC0001C81EF80F8841230C1F51092E900109239011092380110923B0110923A010E94F6
+:200BE000640599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E8988B9AEF44
+:200C0000998B2091380130913901275F3F4F3C872B878D871092E9001092390110923801EC
+:200C2000F0923B01E0923A0180E0BF0149E050E00E94CC030E94640585C01092E9001092E2
+:200C4000390110923801F0923B01E0923A01123241F482E290E00E940A09892B09F476C02B
+:200C600071C0113079F488E0E816F10419F481E080933C0180913C01882309F06BC0ECE68D
+:200C8000F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3F1E005C00A
+:200CA000813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F447C08830C6
+:200CC00021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E031E026E3A1
+:200CE0009093E9003093EB0084918093EC002093ED009F5F3196953099F78EE78093EA00FA
+:200D00001092EA008B81809337011CC08F8198851092E900109239011092380190933B0146
+:200D200080933A018D81882329F4CE0101960E94850706C0823051F4CE0101960E94DB0754
+:200D4000882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DEBFCDBF37
+:200D6000CF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911F91FF9004
+:200D8000EF900F900FBE0F901F90189520917E0130917F018091800190918101281B390B40
+:200DA0002F733070C901089520917E0130917F0180918001909181012817390719F42FEF3A
+:200DC0003FEF09C0E0918001F0918101E25CFE4F8081282F30E0C901089520917E013091DC
+:200DE0007F0180918001909181012817390719F42FEF3FEF13C0E0918001F0918101E25C60
+:200E0000FE4F2081809180019091810101968F739070909381018093800130E0C901089566
+:200E2000109285011092840188EE93E0A0E0B0E08093860190938701A0938801B09389019C
+:200E400080E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB78C0169838B
+:200E600080910901882369F083E0BE016F5F7F4F41E050E00E9451041816190614F49C015B
+:200E800007C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F91089583E00D
+:200EA0000E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E0917E01F091B8
+:200EC0007F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73D070809154
+:200EE000800190918101C817D90701F7DF91CF910895FC0180818E5F808380E865E971E0B5
+:200F000042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E062E071E09A
+:200F200047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E00E9410042B
+:200F400036C0823209F035C08281809309018091020190910301A0910401B0910501805B48
+:200F60009440A040B04019F58091090180FD12C087E797E790930108809300082BE088E1AE
+:200F800090E00FB6F894A895809360000FBE209360000DC088E10FB6F89480936000109264
+:200FA00060000FBEA895109201081092000881E0089580E00895FC0191818081813A31F487
+:200FC000913089F080E0933089F40DC0813269F49B3021F4828180930A0105C09A3029F4AD
+:200FE000828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC01ED91FC91E5
+:201000000480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D09958F2D90E0E8
+:201020001F910F91FF90EF90089510929001109294011092930182E291E090939201809377
+:2010400091010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A0184E0BE0137
+:201060006F5F7F4F41E050E00E94510484E4B801A7010E9451040F90CF91DF911F910F910D
+:20108000FF90EF90089582E048E050E00E9422080895FC01168217821086118612861386F6
+:2010A00014823496BF010E9443080895DC01683810F0685829C0E62FF0E067FF13C0E0580A
+:2010C000F04081E090E002C0880F991FEA95E2F7809514962C911497282314962C93149720
+:2010E00060E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9114978D7F29
+:2011000014968C9314976F77FD0190E0662321F08681861709F416829F5F31969630B1F701
+:20112000CD011496BD010E94430821E030E0C9010895CF93DF93DC01683810F0685825C01E
+:20114000E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F714962C911497BE
+:20116000282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C014968C91149780
+:20118000826014968C9314976F7716968C9116978617A9F117968C911797861781F1189631
+:2011A0008C911897861759F119968C911997861731F11A968C911A97861709F11B968C915E
+:2011C0001B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C09F5F31964E
+:2011E0002196E630F10591F7963049F481E090E013969C938E93129720E030E007C0CD0189
+:201200001496BD010E94430821E030E0C901DF91CF91089580E867ED71E045E650E00E9427
+:20122000CC030895FC0180818F5F808380E86CE372E049E150E00E94CC030895CF92DF9210
+:20124000EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D916D01D701A6
+:20126000ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7CE01DF91AB
+:20128000CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D0994F894FFCFEC
+:2012A0000D0000E100000000000001010000000027071E09C606ED06D4064F0753070000A0
+:2012C0000000F7071E09990856084908FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:20300000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20302000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20304000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20306000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20308000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:2030A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2030C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2030E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:20310000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20312000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20314000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20316000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20318000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:2031A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2031C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2031E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:20320000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20322000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20324000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20326000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20328000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:2032A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:20330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20334000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20336000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20338000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2033A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2033C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20344000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20346000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20348000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2034A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2034E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20350000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20352000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20354000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20356000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20358000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2035A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2035C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2035E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20360000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20362000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20364000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20366000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20368000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2036A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2036C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2036E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20372000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20374000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20376000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20378000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2037A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20380000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20382000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20384000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20386000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20388000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2038A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2038C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2038E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20390000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20392000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20394000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20396000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20398000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2039A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2039C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2039E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:203A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:203A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:203A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:203A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:203A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:203AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:203AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:203AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:203B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:203B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:203B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:203B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:203B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:203BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:203BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:203BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:203C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:203C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:203C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:203C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:203C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:203CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:203CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:203CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:203D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:203D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:203D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:203D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:203D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:203DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:203DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:203DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:203E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:203E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:203E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:203E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:203E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:203EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:203EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:203EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:203F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:203F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:203F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:203F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:203F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:203FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:203FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:203FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:20400000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20402000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20404000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20406000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20408000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2040A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2040C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2040E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20410000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20412000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20414000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20416000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20418000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2041A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2041C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2041E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20420000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20422000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20424000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20426000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20428000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2042A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2042C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2042E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20430000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20436000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2043A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2043C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2043E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20440000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20442000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20444000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20446000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20450000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20452000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20454000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20456000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20458000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2045A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2045C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2045E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20460000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20462000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20464000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20466000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20468000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2046A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2046C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2046E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20470000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20472000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20474000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20476000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20478000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2047A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2047C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20480000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20482000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20484000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20486000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20488000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2048A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2048C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2048E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20490000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20492000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20494000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20496000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20498000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2049A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2049C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2049E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:204A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:204A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:204A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:204A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:204A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:204AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:204AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:204AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:204B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:204B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:204B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:204B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:204B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:204BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:204BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:204BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:204C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:204C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:204C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:204C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:204C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:204CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:204CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:204CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:204D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:204D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:204D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:204D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:204D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:204DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:204DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:204DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:204E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:204E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:204E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:204E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:204E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:204EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:204EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:204EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:204F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:204F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:204F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:204F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:204F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:204FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:204FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:204FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:20500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20502000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20504000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20506000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:20508000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2050A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2050C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:2050E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20510000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20512000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20514000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20516000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:20518000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2051A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2051C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:2051E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20520000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20522000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20524000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20526000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:20528000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2052A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2052C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:2052E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20530000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20532000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20534000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20536000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:20538000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2053A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2053C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:2053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20540000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20542000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20544000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20546000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:20548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:2054E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20550000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20552000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20554000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20556000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:20558000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2055A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2055C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:2055E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20560000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20562000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20564000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20566000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:20568000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2056A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2056C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:2056E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20570000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20572000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20574000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20576000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:20578000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2057A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2057C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:2057E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20584000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:20588000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2058A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2058C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:2058E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20590000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20592000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20594000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20596000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:20598000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2059A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2059C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:2059E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:205A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:205A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:205A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:205A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:205A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:205AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:205AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:205AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:205B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:205B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:205B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:205B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:205B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:205BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:205BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:205BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:205C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:205C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:205C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:205C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:205C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:205CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:205CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:205CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:205D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:205D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:205D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:205D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:205D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:205DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:205DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:205DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:205E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:205E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:205E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:205E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:205E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:205EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:205EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:205EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:205F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:205F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:205F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:205F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:205F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:205FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:205FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:205FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:20600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20602000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20604000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20606000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:20608000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2060A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2060C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:2060E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20610000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20612000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20614000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20616000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:20618000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2061A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2061C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:2061E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20620000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20622000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20624000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20626000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:20628000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2062A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2062C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:2062E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20630000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20632000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20634000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20636000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:20638000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2063A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2063C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:2063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20646000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:20648000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2064A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2064C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:2064E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20650000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20652000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20654000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20656000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:20658000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2065A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2065C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:2065E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20660000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20662000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20664000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20666000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:20668000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2066C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:2066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:20678000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2067A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2067C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:2067E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20680000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20682000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20684000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20686000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:20688000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2068A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2068C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:2068E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:20698000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:2069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:206A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:206A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:206A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:206A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:206A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:206AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:206AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:206AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:206B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:206B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:206B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:206B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:206B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:206BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:206BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:206BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:206C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:206C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:206C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:206C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:206C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:206CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:206CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:206CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:206D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:206D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:206D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:206D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:206D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:206DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:206DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:206DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:206E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:206E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:206E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:206E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:206E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:206EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:206EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:206EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:206F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:206F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:206F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:206F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:206F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:206FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
+:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
+:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
+:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
+:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
+:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
+:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D9AEB
+:20710000289A0C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA6
+:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
+:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
+:207160009093A9018093A801892B09F45D9A8091AA019091AB01009741F001979093AB0126
+:207180008093AA01892B09F4289AE0E0F0E0859194918F5F9F4F49F08091AC019091AD0151
+:2071A00001969093AD018093AC01FF91EF919F918F912F910F900FBE0F901F90189584E0BC
+:2071C0008093E9000DC08091E8008B778093E80003C08EB3882351F08091E80082FFF9CFBE
+:2071E0008091E80085FFEFCF8091F1000895982F83E08093E9008091E80085FD0DC0809136
+:20720000E8008E778093E80003C08EB3882369F08091E80080FFF9CF9093F1005D9884E6CB
+:2072200090E09093A9018093A80108954F925F926F927F928F929F92AF92BF92CF92DF921E
+:20724000EF92FF920F931F93CF93DF9384E08093E9008091E80082FF57C2289884E690E067
+:207260009093AB018093AA01AADF182F853481F48CE49DE19093AD018093AC0107B600FC4B
+:20728000FDCFF999FECF81E180935700E89503C0843519F494DF8DE00DC28C34E1F38035F9
+:2072A000D1F3843721F484E4A2DF80E003C2813611F489E5FFC18134B1F481DF182F7FDFE3
+:2072C00090E0880F991FAA2797FDA095BA2F312F330F20E0442737FD4095542F822B932B68
+:2072E000A42BB52BB8C1803711F483E5E3C1833549F4C0E0D1E089917ADF21E0C730D20714
+:20730000D1F7D9C1863521F481E371DF80E3D2C1833731F487E86BDF85E969DF8EE1CAC149
+:207320008536B9F4E0E0F0E093E085E090935700E89507B600FCFDCF80935700E89507B65D
+:2073400000FCFDCFE058FF4FA0E7E030FA0771F7A2CF823739F4E1E0F0E089E08093570024
+:207360008491A8C1863439F4E0E0F0E089E08093570084919FC18E3439F4E3E0F0E089E0E5
+:2073800080935700849196C1813539F4E2E0F0E089E08093570084918DC1823631F489E521
+:2073A00026DF80E024DF80E885C1823419F0873609F0E5C01092AD011092AC0100DF082FE8
+:2073C000FEDEF82EFCDE682E8554823008F071C1902F80E0CF2DD0E0C82BD92B10926F00B3
+:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
+:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
+:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
+:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
+:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
+:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
+:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
+:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
+:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
+:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
+:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
+:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
+:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
+:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
+:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C
+:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
+:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
+:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
+:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
+:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
+:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
+:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
+:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
+:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
+:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
+:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
+:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
+:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
+:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
+:2077E000108247985D9A289A109289008AEF8093880090936F0083E080938100F0C0409116
+:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
+:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
+:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
+:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
+:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
+:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
+:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
+:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
+:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
+:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
+:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
+:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
+:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
+:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
+:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
+:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
+:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
+:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
+:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
+:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
+:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
+:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
+:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
+:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
+:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
+:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
+:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
+:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
+:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
+:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
+:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
+:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
+:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
+:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
+:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
+:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
+:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
+:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
+:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
+:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
+:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
+:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
+:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
+:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
+:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
+:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
+:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
+:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
+:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
+:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
+:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
+:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
+:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
+:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
+:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
+:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
+:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
+:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
+:207F40000000000000080112011001020000084123360001000201000109023E00020100FF
+:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
+:207F800009040100020A000000070504021000010705830210000104030904220341007216
+:207FA000006400750069006E006F0020004C0065006F006E006100720064006F0000001836
+:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-12-10.txt b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-12-10.txt
new file mode 100644
index 0000000..5beb659
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Leonardo-prod-firmware-2012-12-10.txt
@@ -0,0 +1,11 @@
+Builds against LUFA version 111009
+make version 3.81
+avrdude version 5.11
+
+All AVR tools except avrdude were installed by CrossPack 20100115:
+avr-gcc version 4.3.3 (GCC)
+Thread model: single
+Configured with: ../configure âprefix=/usr/local/CrossPack-AVR-20100115 âdisable-dependency-tracking âdisable-nls âdisable-werror âtarget=avr âenable-languages=c,c++ âdisable-nls âdisable-libssp âwith-dwarf2
+avr-libc version 1.6.7
+binutils version 2.19
+
diff --git a/hardware/arduino/bootloaders/caterina/Makefile b/hardware/arduino/bootloaders/caterina/Makefile
old mode 100755
new mode 100644
index 873f8bd..b3bd9e8
--- a/hardware/arduino/bootloaders/caterina/Makefile
+++ b/hardware/arduino/bootloaders/caterina/Makefile
@@ -47,6 +47,7 @@
#----------------------------------------------------------------------------
# USB vendor ID (VID)
+# reuse of this VID by others is forbidden by USB-IF
# official Arduino LLC VID
# VID = 0x2341
@@ -54,7 +55,10 @@
# USB product ID (PID)
# official Leonardo PID
# PID = 0x0036
-
+# official Micro PID
+# PID = 0x0037
+# official Esplora PID
+# PID = 0x003C
# MCU name
MCU = atmega32u4
@@ -123,7 +127,7 @@ OBJDIR = .
# Path to the LUFA library
-LUFA_PATH = ../../../../../LUFA-111009
+LUFA_PATH = ../../../../../../LUFA/LUFA-111009
# LUFA library compile-time options and predefined tokens
diff --git a/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-11-23.hex b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-11-23.hex
new file mode 100644
index 0000000..1e17622
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-11-23.hex
@@ -0,0 +1,1024 @@
+:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
+:200020000C9496010C9496010C94F8040C947F050C9496010C9496010C9496010C949601B6
+:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
+:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
+:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
+:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4
+:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D
+:2000E0000202040302020202060606060606040402020204040802011040804010204080A8
+:200100004080080204018040201002011080102040400000000200080E0000030401000BB2
+:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD
+:200140006F0020004D006900630072006F00200020002000180341007200640075006900A6
+:200160006E006F0020004C004C00430012010002000000404123378000010102000112011F
+:200180000002020000404123378000010102000100C18081C1080B00020202010009040051
+:2001A000000102020000052400100105240101010424020605240600010705810310004094
+:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186
+:2001E000008501050919012903150025019503750181029501750581030501093009310943
+:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D
+:20022000019508810295017508810395067508150025650507190029658100C0090402004C
+:2002400001030000000921010100012265000705840340000100000000000000002A2B2895
+:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
+:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
+:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041207170811241FBE81
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EAF2E102C005900D92AC32B107D9F711E06D
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944C09C63D05
+:20032000D107C9F70E946C030C9450090C9400008091000161E00E94390368EE73E080E041
+:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
+:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
+:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
+:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
+:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
+:2003E000B0932F01BF91AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB734
+:20040000F89480912C0190912D01A0912E01B0912F0166B5A89B05C06F3F19F00196A11DC3
+:20042000B11D7FBFBA2FA92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A9577
+:20044000D1F7BC012DC0FFB7F89480912C0190912D01A0912E01B0912F01E6B5A89B05C0E7
+:20046000EF3F19F00196A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880FFD
+:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
+:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
+:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
+:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
+:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
+:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
+:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
+:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
+:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
+:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
+:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
+:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
+:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
+:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
+:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
+:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
+:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
+:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
+:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
+:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
+:20070000809137018823C1F057FF1AC015C0289A909336018091F1008193E217F307B9F75A
+:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
+:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
+:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
+:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
+:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
+:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
+:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
+:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
+:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289A03
+:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
+:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
+:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
+:2008A0005D98289808955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93C7
+:2008C000CF93DF93E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72EFB
+:2008E00067E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22E35
+:20090000D12CC822D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200EC
+:20092000252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD0135
+:200940003BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F48E
+:2009600006C01092F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC01A2
+:200980000196E491E093F10031503323C1F706C081918093F10091509923D1F7020F111DD8
+:2009A0008091E80085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9A73
+:2009C00084E680933501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF907E
+:2009E000BF90AF909F908F907F906F905F9008951F920F920FB60F9211242F933F934F931E
+:200A00005F936F937F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC047
+:200A20001092E90081E08093EB001092EC0082E38093ED001092370188E08093F00092FF03
+:200A400034C083E08093E9008091F200882319F08AE38093E8008FB7F89492E09093E900D4
+:200A60009091F2008FBF992321F082E891E00E94550780913501882351F080913501815024
+:200A80008093350180913501882309F45D9880913601882351F08091360181508093360192
+:200AA00080913601882309F42898FF91EF91BF91AF919F918F917F916F915F914F913F91E6
+:200AC0002F910F900FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F75
+:200AE0001F4FC8010E947B07C8010E941409898190E00F90CF91DF911F910F9108951F928C
+:200B00000F920FB60F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93C3
+:200B2000BF93EF93FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC16B
+:200B4000FE0131969E01275F3F4F03C08091F1008193E217F307D1F7289A84E68093360112
+:200B600082EF8093E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0AE
+:200B8000C90180769070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F429
+:200BA000D3C0833009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863008
+:200BC00009F07CC01C81EF80F8841230C1F51092E900109239011092380110923B0110929E
+:200BE0003A010E94660599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E811
+:200C0000988B9AEF998B2091380130913901275F3F4F3C872B878D871092E900109239011B
+:200C200010923801F0923B01E0923A0180E0BF0149E050E00E94CC030E94660585C0109290
+:200C4000E9001092390110923801F0923B01E0923A01123241F482E290E00E940C09892BD1
+:200C600009F476C071C0113079F488E0E816F10419F481E080933C0180913C01882309F057
+:200C80006BC0ECE6F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3A3
+:200CA000F1E005C0813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F4EF
+:200CC00047C0883021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E0FC
+:200CE00031E026E39093E9003093EB0084918093EC002093ED009F5F3196953099F78EE7DD
+:200D00008093EA001092EA008B81809337011CC08F8198851092E9001092390110923801A8
+:200D200090933B0180933A018D81882329F4CE0101960E94870706C0823051F4CE01019677
+:200D40000E94DD07882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DA
+:200D6000DEBFCDBFCF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911A
+:200D80001F91FF90EF900F900FBE0F901F90189520917E0130917F01809180019091810188
+:200DA000281B390B2F733070C901089520917E0130917F01809180019091810128173907DE
+:200DC00019F42FEF3FEF09C0E0918001F0918101E25CFE4F8081282F30E0C90108952091F1
+:200DE0007E0130917F0180918001909181012817390719F42FEF3FEF13C0E0918001F091E0
+:200E00008101E25CFE4F2081809180019091810101968F739070909381018093800130E00D
+:200E2000C9010895109285011092840188EE93E0A0E0B0E08093860190938701A093880102
+:200E4000B093890180E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB737
+:200E60008C01698380910901882369F083E0BE016F5F7F4F41E050E00E9453041816190685
+:200E800014F49C0107C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F9168
+:200EA000089583E00E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E091B8
+:200EC0007E01F0917F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73A5
+:200EE000D0708091800190918101C817D90701F7DF91CF910895FC0180818E5F808380E803
+:200F000065E971E042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E08E
+:200F200062E071E047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E04E
+:200F40000E94100436C0823209F035C08281809309018091020190910301A0910401B09173
+:200F60000501805B9440A040B04019F58091090180FD12C087E797E7909301088093000841
+:200F80002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093F2
+:200FA0006000109260000FBEA895109201081092000881E0089580E00895FC019181808165
+:200FC000813A31F4913089F080E0933089F40DC0813269F49B3021F4828180930A0105C0B4
+:200FE0009A3029F4828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC0109
+:20100000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D099509
+:201020008F2D90E01F910F91FF90EF90089510929001109294011092930182E291E09093F1
+:201040009201809391010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A01B4
+:2010600084E0BE016F5F7F4F41E050E00E94530484E4B801A7010E9453040F90CF91DF9136
+:201080001F910F91FF90EF90089582E048E050E00E9424080895FC011682178210861186D5
+:2010A0001286138614823496BF010E9445080895DC01683810F0685829C0E62FF0E067FFE2
+:2010C00013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314967F
+:2010E0002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9176
+:2011000014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F3196B8
+:201120009630B1F7CD011496BD010E94450821E030E0C9010895CF93DF93DC01683810F053
+:20114000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149681
+:201160002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496E0
+:201180008C911497826014968C9314976F7716968C9116978617A9F117968C911797861789
+:2011A00081F118968C911897861759F119968C911997861731F11A968C911A97861709F10C
+:2011C0001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C045
+:2011E0009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E059
+:2012000007C0CD011496BD010E94450821E030E0C901DF91CF91089580E867ED71E045E662
+:2012200050E00E94CC030895FC0180818F5F808380E86CE372E049E150E00E94CC03089510
+:20124000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D911A
+:201260006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7A4
+:20128000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D099407
+:2012A000F894FFCF0D0000E100000000000001010000000029072009C806EF06D606510794
+:2012C000550700000000F90720099B0858084B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:20300000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20302000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20304000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20306000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20308000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:2030A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2030C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2030E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:20310000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20312000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20314000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20316000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20318000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:2031A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2031C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2031E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:20320000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20322000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20324000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20326000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20328000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:2032A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:20330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20334000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20336000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20338000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2033A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2033C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20344000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20346000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20348000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2034A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2034E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20350000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20352000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20354000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20356000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20358000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2035A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2035C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2035E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20360000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20362000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20364000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20366000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20368000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2036A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2036C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2036E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20372000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20374000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20376000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20378000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2037A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20380000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20382000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20384000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20386000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20388000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2038A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2038C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2038E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20390000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20392000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20394000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20396000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20398000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2039A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2039C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2039E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:203A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:203A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:203A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:203A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:203A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:203AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:203AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:203AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:203B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:203B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:203B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:203B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:203B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:203BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:203BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:203BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:203C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:203C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:203C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:203C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:203C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:203CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:203CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:203CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:203D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:203D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:203D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:203D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:203D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:203DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:203DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:203DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:203E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:203E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:203E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:203E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:203E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:203EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:203EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:203EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:203F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:203F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:203F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:203F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:203F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:203FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:203FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:203FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:20400000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20402000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20404000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20406000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20408000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2040A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2040C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2040E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20410000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20412000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20414000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20416000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20418000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2041A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2041C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2041E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20420000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20422000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20424000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20426000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20428000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2042A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2042C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2042E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20430000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20436000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2043A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2043C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2043E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20440000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20442000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20444000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20446000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20450000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20452000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20454000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20456000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20458000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2045A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2045C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2045E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20460000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20462000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20464000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20466000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20468000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2046A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2046C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2046E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20470000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20472000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20474000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20476000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20478000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2047A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2047C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20480000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20482000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20484000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20486000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20488000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2048A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2048C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2048E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20490000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20492000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20494000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20496000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20498000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2049A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2049C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2049E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:204A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:204A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:204A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:204A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:204A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:204AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:204AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:204AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:204B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:204B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:204B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:204B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:204B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:204BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:204BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:204BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:204C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:204C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:204C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:204C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:204C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:204CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:204CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:204CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:204D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:204D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:204D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:204D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:204D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:204DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:204DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:204DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:204E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:204E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:204E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:204E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:204E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:204EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:204EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:204EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:204F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:204F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:204F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:204F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:204F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:204FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:204FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:204FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:20500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20502000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20504000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20506000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:20508000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2050A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2050C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:2050E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20510000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20512000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20514000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20516000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:20518000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2051A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2051C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:2051E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20520000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20522000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20524000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20526000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:20528000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2052A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2052C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:2052E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20530000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20532000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20534000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20536000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:20538000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2053A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2053C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:2053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20540000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20542000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20544000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20546000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:20548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:2054E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20550000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20552000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20554000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20556000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:20558000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2055A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2055C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:2055E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20560000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20562000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20564000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20566000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:20568000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2056A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2056C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:2056E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20570000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20572000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20574000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20576000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:20578000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2057A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2057C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:2057E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20584000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:20588000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2058A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2058C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:2058E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20590000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20592000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20594000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20596000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:20598000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2059A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2059C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:2059E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:205A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:205A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:205A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:205A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:205A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:205AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:205AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:205AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:205B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:205B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:205B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:205B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:205B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:205BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:205BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:205BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:205C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:205C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:205C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:205C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:205C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:205CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:205CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:205CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:205D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:205D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:205D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:205D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:205D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:205DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:205DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:205DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:205E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:205E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:205E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:205E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:205E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:205EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:205EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:205EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:205F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:205F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:205F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:205F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:205F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:205FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:205FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:205FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:20600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20602000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20604000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20606000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:20608000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2060A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2060C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:2060E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20610000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20612000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20614000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20616000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:20618000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2061A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2061C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:2061E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20620000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20622000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20624000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20626000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:20628000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2062A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2062C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:2062E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20630000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20632000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20634000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20636000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:20638000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2063A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2063C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:2063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20646000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:20648000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2064A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2064C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:2064E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20650000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20652000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20654000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20656000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:20658000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2065A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2065C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:2065E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20660000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20662000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20664000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20666000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:20668000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2066C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:2066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:20678000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2067A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2067C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:2067E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20680000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20682000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20684000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20686000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:20688000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2068A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2068C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:2068E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:20698000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:2069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:206A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:206A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:206A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:206A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:206A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:206AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:206AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:206AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:206B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:206B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:206B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:206B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:206B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:206BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:206BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:206BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:206C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:206C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:206C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:206C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:206C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:206CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:206CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:206CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:206D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:206D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:206D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:206D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:206D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:206DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:206DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:206DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:206E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:206E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:206E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:206E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:206E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:206EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:206EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:206EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:206F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:206F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:206F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:206F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:206F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:206FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
+:2070200060C000005EC00000EEC400005AC0000058C0000056C0000054C0000052C00000F2
+:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
+:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
+:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0EAE2B5
+:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
+:2070E00022C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D98F1
+:2071000028980C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA8
+:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
+:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
+:207160009093A9018093A801892B09F45D988091AA019091AB01009741F001979093AB0128
+:207180008093AA01892B09F42898E0E0F0E0859194918F5F9F4F49F08091AC019091AD0153
+:2071A00001969093AD018093AC01FF91EF919F918F912F910F900FBE0F901F90189584E0BC
+:2071C0008093E9000DC08091E8008B778093E80003C08EB3882351F08091E80082FFF9CFBE
+:2071E0008091E80085FFEFCF8091F1000895982F83E08093E9008091E80085FD0DC0809136
+:20720000E8008E778093E80003C08EB3882369F08091E80080FFF9CF9093F1005D9A84E6C9
+:2072200090E09093A9018093A80108954F925F926F927F928F929F92AF92BF92CF92DF921E
+:20724000EF92FF920F931F93CF93DF9384E08093E9008091E80082FF57C2289A84E690E065
+:207260009093AB018093AA01AADF182F853481F48CE49DE19093AD018093AC0107B600FC4B
+:20728000FDCFF999FECF81E180935700E89503C0843519F494DF8DE00DC28C34E1F38035F9
+:2072A000D1F3843721F484E4A2DF80E003C2813611F489E5FFC18134B1F481DF182F7FDFE3
+:2072C00090E0880F991FAA2797FDA095BA2F312F330F20E0442737FD4095542F822B932B68
+:2072E000A42BB52BB8C1803711F483E5E3C1833549F4C0E0D1E089917ADF21E0C730D20714
+:20730000D1F7D9C1863521F481E371DF80E3D2C1833731F487E86BDF85E969DF8EE1CAC149
+:207320008536B9F4E0E0F0E093E085E090935700E89507B600FCFDCF80935700E89507B65D
+:2073400000FCFDCFE058FF4FA0E7E030FA0771F7A2CF823739F4E1E0F0E089E08093570024
+:207360008491A8C1863439F4E0E0F0E089E08093570084919FC18E3439F4E3E0F0E089E0E5
+:2073800080935700849196C1813539F4E2E0F0E089E08093570084918DC1823631F489E521
+:2073A00026DF80E024DF80E885C1823419F0873609F0E5C01092AD011092AC0100DF082FE8
+:2073C000FEDEF82EFCDE682E8554823008F071C1902F80E0CF2DD0E0C82BD92B10926F00B3
+:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
+:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
+:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
+:2074400018C0D801C701B695A7959795879555D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF6
+:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
+:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
+:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
+:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
+:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
+:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
+:20752000C701F3D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE0190934D
+:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
+:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
+:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
+:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C
+:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
+:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
+:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70165D4E2
+:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
+:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
+:20768000B695A7959795879538D4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010E
+:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
+:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
+:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
+:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
+:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E007D28091E8008B770F
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E059D2809196
+:20778000E8008E778093E800089582E061EC42E0B1D083E061E842E1ADD084E060E842E1F7
+:2077A000A9C084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB643
+:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
+:2077E000108247985D982898109289008AEF8093880090936F0083E080938100ECC040911E
+:20780000000850910108109201081092000824B714BE88E10FB6F894809360001092600045
+:207820000FBE822F90E0FC01E270F07021FD14C0213019F4859194910BC0283069F480918F
+:20784000090190910A014817590731F0859194918F5F9F4F09F046DCA4DF78941092AD0101
+:207860001092AC010CC0E2DC36D38091AC019091AD0181549F4110F01092140145DC8091FB
+:207880001401882381F78091E00081608093E00029DC80E090E00895FA01923049F09330C0
+:2078A00061F09130F9F485E191E022E130E01EC087E291E02EE330E019C0882329F485E6FA
+:2078C00091E024E030E012C0813029F489E691E022E230E00BC0823029F48DE891E028E106
+:2078E00030E004C080E090E020E030E091838083C90108958093E9008091EB00816080936A
+:20790000EB001092ED006093EC004093ED008091EE00881F8827881F08958091B601882342
+:207920008CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008958EB361
+:20794000882349F08091E80080FFF9CF8091E8008E778093E8000895EF92FF920F931F9307
+:2079600045D04CD008ED10E0F80180818F77808380818068808380818F7D808319BC1EBA45
+:207980001092B40180EEE82EF12CF70180818B7F8083F80180818160808380E060E042E049
+:2079A000A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808188608083F701808125
+:2079C0008E7F8083F8018081806180831F910F91FF90EF900895E7EDF0E080818160808335
+:2079E0008AE482BF81E08093B501B6CFE8EDF0E080818E7F80831092E20008951092DA00D6
+:207A00001092E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F9389
+:207A2000AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C08091DA008E7F80930F
+:207A4000DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF81E08EBB3BD203C0C7
+:207A600019BC1EBA37D28091E10080FF17C08091E20080FF13C08091E2008E7F8093E200CE
+:207A80008091E20080618093E2008091D80080628093D80019BC85E08EBB1CD28091E10004
+:207AA00084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEFDCF8091D8008F7D2D
+:207AC0008093D8008091E1008F7E8093E1008091E2008F7E8093E2008091E20081608093EC
+:207AE000E2008091B401882331F48091E30087FD02C081E001C084E08EBBECD18091E10056
+:207B000083FF21C08091E20083FF1DC08091E100877F8093E10082E08EBB1092B4018091B1
+:207B2000E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E20080E060E005
+:207B400042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F90B6
+:207B60000FBE0F901F9018959C014091BC015091BD014617570718F4F90190E044C06115C8
+:207B8000710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8EB3882309F444C006
+:207BA000853009F443C08091E80083FF02C081E008958091E80082FD31C08091E80080FFF4
+:207BC00022C08091F3009091F200782F60E0292F30E0262B372B07C081918093F10041503C
+:207BE00050402F5F3F4F4115510519F02830310598F390E02830310509F491E08091E800A6
+:207C00008E778093E8004115510531F6992321F605C08EB3882341F0853041F08091E800FD
+:207C200082FFF7CF80E0089582E0089583E008959C016115710529F48091E8008B7780934D
+:207C4000E800F90126C08EB3882391F1853091F18091E80083FF02C081E008958091E80083
+:207C600082FFF1CF06C08091F10081936150704059F02091F3008091F200322F20E090E0C5
+:207C8000822B932B892B79F78091E8008B778093E80061157105B9F605C08EB3882341F0E2
+:207CA000853041F08091E80080FFF7CF80E0089582E0089583E008950F931F93DF93CF937C
+:207CC00000D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F728DD8091E80083FF3A
+:207CE000E4C08091B6019091B701953009F46DC0963040F4913081F1913070F0933009F046
+:207D0000D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC0803809F4C6C082380B
+:207D200009F0C3C08091BA0187708093E9008091EB001092E9002091E800277F2093E800A7
+:207D400090E025E0969587952A95E1F781708093F1001092F10087C0882319F0823009F0A2
+:207D6000A4C08F71823009F0A0C08091B801882331F52091BA01277009F497C02093E90006
+:207D80008091EB0080FF1BC0933021F48091EB00806213C08091EB0080618093EB0081E0C8
+:207DA00090E002C0880F991F2A95E2F78093EA001092EA008091EB0088608093EB0010929D
+:207DC000E9008091E800877F51C0882309F06DC01091B8011F770FB7F8948091E800877F98
+:207DE0008093E8009ADD8091E80080FFFCCF8091E3008078812B8093E30080688093E30062
+:207E0000112311F482E001C083E08EBB0FBF4DC08058823008F049C08091B8019091B9014F
+:207E20006091BA01AE014F5F5F4F36DDBC01009709F43BC08091E800877F8093E800898128
+:207E40009A8192DE8091E8008B778093E8002DC0803859F58091E800877F8093E8008091A3
+:207E6000B4018093F1008091E8008E778093E80054DD1BC08823C9F49091B8019230A8F4A4
+:207E80008091E800877F8093E8009093B40145DD8091B401882331F48091E30087FD02C01E
+:207EA00081E001C084E08EBB70DC8091E80083FF0AC08091EB0080628093EB008091E8008D
+:207EC000877F8093E8000F900F90CF91DF911F910F91089508951F938EB3882361F0109179
+:207EE000E9001092E9008091E80083FF01C0E4DE17701093E9001F910895F999FECF92BD02
+:207F000081BDF89A992780B50895262FF999FECF1FBA92BD81BD20BD0FB6F894FA9AF99A90
+:207F20000FBE01960895F894FFCF4341544552494E4100777700080000000000000801128E
+:207F4000011001020000084123370001000201000109023E00020100803209040000010257
+:207F60000201000524001001042402040524060001070582030800FF09040100020A0000B4
+:207F8000000705040210000107058302100001040309042203410072006400750069006E80
+:207FA000006F0020004D006900630072006F00200020002000000018034100720064007531
+:127FC0000069006E006F0020004C004C0043000000006E
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-11-23.txt b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-11-23.txt
new file mode 100644
index 0000000..5beb659
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-11-23.txt
@@ -0,0 +1,11 @@
+Builds against LUFA version 111009
+make version 3.81
+avrdude version 5.11
+
+All AVR tools except avrdude were installed by CrossPack 20100115:
+avr-gcc version 4.3.3 (GCC)
+Thread model: single
+Configured with: ../configure âprefix=/usr/local/CrossPack-AVR-20100115 âdisable-dependency-tracking âdisable-nls âdisable-werror âtarget=avr âenable-languages=c,c++ âdisable-nls âdisable-libssp âwith-dwarf2
+avr-libc version 1.6.7
+binutils version 2.19
+
diff --git a/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-12-10.hex b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-12-10.hex
new file mode 100644
index 0000000..804dfd3
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-12-10.hex
@@ -0,0 +1,1024 @@
+:200000000C946E010C9496010C9496010C9496010C9496010C9496010C9496010C94960150
+:200020000C9496010C9496010C94F8040C947F050C9496010C9496010C9496010C949601B6
+:200040000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C94B501C9
+:200060000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601C8
+:200080000C9496010C9496010C9496010C9496010C9496010C9496010C9496010C949601A8
+:2000A0000C9496010C9496010C94960100000000240027002A002D003000000000002500A4
+:2000C00028002B002E003100000000002300260029002C002F00040404040403040502027D
+:2000E0000202040302020202060606060606040402020204040802011040804010204080A8
+:200100004080080204018040201002011080102040400000000200080E0000030401000BB2
+:200120000000070605040100080A0B0C0D09040309042203410072006400750069006E00CD
+:200140006F0020004D006900630072006F00200020002000180341007200640075006900A6
+:200160006E006F0020004C004C00430012010002000000404123378000010102000112011F
+:200180000002020000404123378000010102000100C18081C1080B00020202010009040051
+:2001A000000102020000052400100105240101010424020605240600010705810310004094
+:2001C00009040100020A000000070502024000000705830240000005010902A1010901A186
+:2001E000008501050919012903150025019503750181029501750581030501093009310943
+:20020000381581257F750895038106C0C005010906A1018502050719E029E715002501754D
+:20022000019508810295017508810395067508150025650507190029658100C0090402004C
+:2002400001030000000921010100012265000705840340000100000000000000002A2B2895
+:200260000000000000000000000000000000000000000000002C9EB4A0A1A2A434A6A7A553
+:20028000AE362D3738271E1F20212223242526B333B62EB7B89F8485868788898A8B8C8D58
+:2002A0008E8F909192939495969798999A9B9C9D2F3130A3AD350405060708090A0B0C0D7C
+:2002C0000E0F101112131415161718191A1B1C1DAFB1B0B5000032041207170811241FBE81
+:2002E000CFEFDAE0DEBFCDBF11E0A0E0B1E0E4EAF2E102C005900D92AC32B107D9F711E06D
+:20030000ACE2B1E001C01D92AD39B107E1F712E0CCEDD2E004C02297FE010E944C09C63D05
+:20032000D107C9F70E946C030C9450090C9400008091000161E00E94390368EE73E080E041
+:2003400090E00E94FD018091000160E00E94390368EE73E080E090E00E94FD010895809196
+:20036000000161E00E94AC0208951F920F920FB60F9211242F933F938F939F93AF93BF93E5
+:200380008091300190913101A0913201B0913301309134010196A11DB11D232F2D5F2D3794
+:2003A00020F02D570196A11DB11D209334018093300190933101A0933201B0933301809117
+:2003C0002C0190912D01A0912E01B0912F010196A11DB11D80932C0190932D01A0932E01BA
+:2003E000B0932F01BF91AF919F918F913F912F910F900FBE0F901F9018959B01AC017FB734
+:20040000F89480912C0190912D01A0912E01B0912F0166B5A89B05C06F3F19F00196A11DC3
+:20042000B11D7FBFBA2FA92F982F8827860F911DA11DB11D62E0880F991FAA1FBB1F6A9577
+:20044000D1F7BC012DC0FFB7F89480912C0190912D01A0912E01B0912F01E6B5A89B05C0E7
+:20046000EF3F19F00196A11DB11DFFBFBA2FA92F982F88278E0F911DA11DB11DE2E0880FFD
+:20048000991FAA1FBB1FEA95D1F7861B970B885E9340C8F2215030404040504068517C4F8F
+:2004A000211531054105510571F60895789484B5826084BD84B5816084BD85B5826085BD0F
+:2004C00085B5816085BDEEE6F0E0808181608083E1E8F0E010828081826080838081816043
+:2004E0008083E0E8F0E0808181608083E1E9F0E0808182608083808181608083E0E9F0E07E
+:20050000808181608083E1ECF0E0808184608083808182608083808181608083E3ECF0E007
+:20052000808181608083E0ECF0E0808182608083E2ECF0E0808181608083EAE7F0E080812F
+:20054000846080838081826080838081816080838081806880830895CF93DF93482F50E0E5
+:20056000CA018C509F4FFC0134914A525F4FFA018491882369F190E0880F991FFC01E455D0
+:20058000FF4FA591B491FC01E654FF4FC591D491662351F42FB7F8948C91932F9095892362
+:2005A0008C93888189230BC0623061F42FB7F8948C91932F909589238C938881832B8883B2
+:2005C0002FBF06C09FB7F8948C91832B8C939FBFDF91CF910895883071F1893068F48230EF
+:2005E00031F1833020F4813009F042C01DC0833089F08430E9F512C08B3059F18C3028F41C
+:200600008930E9F08A30A1F51EC08C3031F18E3079F529C0809180008F7703C0809180003C
+:200620008F7D80938000089584B58F7702C084B58F7D84BD0895809190008F7707C08091DB
+:2006400090008F7D03C080919000877F8093900008958091C0008F7703C08091C0008F7DDD
+:200660008093C00008958091C200877F8093C2000895FF920F931F93F62E482F50E0CA0144
+:200680008E5E9E4FFC012491CA018C509F4FFC0114914A525F4FFA0104910023C9F022239D
+:2006A00019F0822F0E94EB02E02FF0E0EE0FFF1FE654FF4FA591B4919FB7F894FF2021F4DE
+:2006C0008C911095812302C08C91812B8C939FBF1F910F91FF900895CF93DF930E94560262
+:2006E0008DE391E00E9433040E94AF01C0E0D0E00E9498012097E1F30E940000F9CF282F17
+:20070000809137018823C1F057FF1AC015C0289A909336018091F1008193E217F307B9F75A
+:200720004115510539F08091F200882319F48BE68093E800AFBF02C04FEF5FEFCA01089599
+:20074000AFB7F89427702093E9008091F200282F30E0241735070CF4A901FB019B01240F1E
+:20076000311D94E6DACFDF93CF930F92CDB7DEB7BE016F5F7F4F41E050E00E947F03019712
+:2007800019F02FEF3FEF03C08981282F30E0C9010F90CF91DF910895FF920F931F93F82EEF
+:2007A000142F052F40913A0150913B01212F302FC901DC01FB016EEF29C0F7FE02C0949125
+:2007C00001C09081209138013091390124173507ACF48091E8008570E1F38091E80082FF0F
+:2007E00003C02FEF3FEF17C09093F100C90101968F739070892B11F46093E8002F5F3F4FEC
+:200800003093390120933801119731961097A9F6812F902F9C01C9011F910F91FF900895E8
+:200820009C018091E80082FFFCCFF901260F311D03C08091F1008193E217F307D1F7289A03
+:2008400084E6809336018BEF8093E800CB0108958093E9008091F200882319F08AE38093D3
+:20086000E800089508951092370181E08093D70080EA8093D80082E189BD09B400FEFDCFAC
+:2008800061E070E080E090E00E94FD0180E98093D8008CE08093E2001092E000559A209A77
+:2008A0005D98289808955F926F927F928F929F92AF92BF92CF92DF92EF92FF920F931F93C7
+:2008C000CF93DF93E82E842E752E80913701882371F18B01242F352FC901EC017AEFF72EFB
+:2008E00067E0962E9E2050E4552E8E2D90E040E2A42EB12CA822B9223AE3632E20E4C22E35
+:20090000D12CC822D92258C09FB7F8949092E9008091E80085FD02C020E004C08091F200EC
+:20092000252D281B9FBF222361F4FA9419F42FEF3FEF4DC061E070E080E090E00E94FD0135
+:200940003BC0822F90E0C817D9070CF42C2FC21BD1094FB7F8949092E900A114B10421F48E
+:2009600006C01092F10021502223D9F719C0E7FC03C0F801922F10C0C801322F06C0FC01A2
+:200980000196E491E093F10031503323C1F706C081918093F10091509923D1F7020F111DD8
+:2009A0008091E80085FF05C0209729F4C114D10411F06092E8004FBF209709F0A5CF5D9A73
+:2009C00084E680933501282D372DC9019C01C901DF91CF911F910F91FF90EF90DF90CF907E
+:2009E000BF90AF909F908F907F906F905F9008951F920F920FB60F9211242F933F934F931E
+:200A00005F936F937F938F939F93AF93BF93EF93FF938091E1001092E100982F83FF0FC047
+:200A20001092E90081E08093EB001092EC0082E38093ED001092370188E08093F00092FF03
+:200A400034C083E08093E9008091F200882319F08AE38093E8008FB7F89492E09093E900D4
+:200A60009091F2008FBF992321F082E891E00E94550780913501882351F080913501815024
+:200A80008093350180913501882309F45D9880913601882351F08091360181508093360192
+:200AA00080913601882309F42898FF91EF91BF91AF919F918F917F916F915F914F913F91E6
+:200AC0002F910F900FBE0F901F9018950F931F93DF93CF930F92CDB7DEB719828E010F5F75
+:200AE0001F4FC8010E947B07C8010E941409898190E00F90CF91DF911F910F9108951F928C
+:200B00000F920FB60F921124EF92FF921F932F933F934F935F936F937F938F939F93AF93C3
+:200B2000BF93EF93FF93DF93CF93CDB7DEB76197DEBFCDBF1092E9008091E80083FF0FC16B
+:200B4000FE0131969E01275F3F4F03C08091F1008193E217F307D1F7289A84E68093360112
+:200B600082EF8093E800998197FF05C08091E80080FFFCCF03C08EEF8093E800292F30E0AE
+:200B8000C90180769070892B09F0C2C08A81882329F41092F1001092F100D6C0813009F429
+:200BA000D3C0833009F4D0C0853049F48091E80080FFFCCF8B8180688093E300C5C0863008
+:200BC00009F07CC01C81EF80F8841230C1F51092E900109239011092380110923B0110929E
+:200BE0003A010E94660599E0FE013996DF01292F1D922A95E9F799871A8791E09E8790E811
+:200C0000988B9AEF998B2091380130913901275F3F4F3C872B878D871092E900109239011B
+:200C200010923801F0923B01E0923A0180E0BF0149E050E00E94CC030E94660585C0109290
+:200C4000E9001092390110923801F0923B01E0923A01123241F482E290E00E940C09892BD1
+:200C600009F476C071C0113079F488E0E816F10419F481E080933C0180913C01882309F057
+:200C80006BC0ECE6F1E013C0133009F061C08B81882319F4EEE2F1E00AC0823019F4E2E3A3
+:200CA000F1E005C0813009F053C0E4E5F1E0449180E8BF0150E00E94CC0346C0873009F4EF
+:200CC00047C0883021F481E08093F1003DC08930D9F523703070232BD9F5E1E9F1E091E0FC
+:200CE00031E026E39093E9003093EB0084918093EC002093ED009F5F3196953099F78EE7DD
+:200D00008093EA001092EA008B81809337011CC08F8198851092E9001092390110923801A8
+:200D200090933B0180933A018D81882329F4CE0101960E94870706C0823051F4CE01019677
+:200D40000E94DD07882321F08EEF8093E80007C081E28093EB0003C0EEE7F1E0A8CF6196DA
+:200D6000DEBFCDBFCF91DF91FF91EF91BF91AF919F918F917F916F915F914F913F912F911A
+:200D80001F91FF90EF900F900FBE0F901F90189520917E0130917F01809180019091810188
+:200DA000281B390B2F733070C901089520917E0130917F01809180019091810128173907DE
+:200DC00019F42FEF3FEF09C0E0918001F0918101E25CFE4F8081282F30E0C90108952091F1
+:200DE0007E0130917F0180918001909181012817390719F42FEF3FEF13C0E0918001F091E0
+:200E00008101E25CFE4F2081809180019091810101968F739070909381018093800130E00D
+:200E2000C9010895109285011092840188EE93E0A0E0B0E08093860190938701A093880102
+:200E4000B093890180E191E0909383018093820108950F931F93DF93CF930F92CDB7DEB737
+:200E60008C01698380910901882369F083E0BE016F5F7F4F41E050E00E9453041816190685
+:200E800014F49C0107C081E090E0F8019383828320E030E0C9010F90CF91DF911F910F9168
+:200EA000089583E00E9428040895CF93DF9312C082E00E94B3032FEF8F3F9207C9F0E091B8
+:200EC0007E01F0917F01E25CFE4F8083D0937F01C0937E01C0917E01D0917F012196CF73A5
+:200EE000D0708091800190918101C817D90701F7DF91CF910895FC0180818E5F808380E803
+:200F000065E971E042E450E00E94CC030895FC0181819081913A59F4813209F04CC080E08E
+:200F200062E071E047E050E00E94CC0342C0913209F041C0803239F482E091E067E070E04E
+:200F40000E94100436C0823209F035C08281809309018091020190910301A0910401B09173
+:200F60000501805B9440A040B04019F58091090180FD12C087E797E7909301088093000841
+:200F80002BE088E190E00FB6F894A895809360000FBE209360000DC088E10FB6F8948093F2
+:200FA0006000109260000FBEA895109201081092000881E0089580E00895FC019181808165
+:200FC000813A31F4913089F080E0933089F40DC0813269F49B3021F4828180930A0105C0B4
+:200FE0009A3029F4828180930B0181E0089580E00895EF92FF920F931F938C01E62EDC0109
+:20100000ED91FC910480F581E02D0995F82ED801ED91FC910680F781E02DC8016E2D099509
+:201020008F2D90E01F910F91FF90EF90089510929001109294011092930182E291E09093F1
+:201040009201809391010895EF92FF920F931F93DF93CF930F92CDB7DEB789838B017A01B4
+:2010600084E0BE016F5F7F4F41E050E00E94530484E4B801A7010E9453040F90CF91DF9136
+:201080001F910F91FF90EF90089582E048E050E00E9424080895FC011682178210861186D5
+:2010A0001286138614823496BF010E9445080895DC01683810F0685829C0E62FF0E067FFE2
+:2010C00013C0E058F04081E090E002C0880F991FEA95E2F7809514962C911497282314967F
+:2010E0002C93149760E012C0EB5AFD4F6491662319F420E030E01DC067FF08C014968C9176
+:2011000014978D7F14968C9314976F77FD0190E0662321F08681861709F416829F5F3196B8
+:201120009630B1F7CD011496BD010E94450821E030E0C9010895CF93DF93DC01683810F053
+:20114000685825C0E62FF0E067FF12C0E058F04081E090E002C0880F991FEA95E2F7149681
+:201160002C911497282B14962C93149760E00FC0EB5AFD4F64916623D9F167FF08C01496E0
+:201180008C911497826014968C9314976F7716968C9116978617A9F117968C911797861789
+:2011A00081F118968C911897861759F119968C911997861731F11A968C911A97861709F10C
+:2011C0001B968C911B978617E1F0ED01E0E0F0E09E2F8E81882321F4EA0FFB1F668306C045
+:2011E0009F5F31962196E630F10591F7963049F481E090E013969C938E93129720E030E059
+:2012000007C0CD011496BD010E94450821E030E0C901DF91CF91089580E867ED71E045E662
+:2012200050E00E94CC030895FC0180818F5F808380E86CE372E049E150E00E94CC03089510
+:20124000CF92DF92EF92FF920F931F93CF93DF937C016B018A01C0E0D0E00FC0D6016D911A
+:201260006D01D701ED91FC910190F081E02DC7010995C80FD91F015010400115110571F7A4
+:20128000CE01DF91CF911F910F91FF90EF90DF90CF900895EE0FFF1F0590F491E02D099407
+:2012A000F894FFCF0D0000E100000000000001010000000029072009C806EF06D606510794
+:2012C000550700000000F90720099B0858084B08FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:20300000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20302000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20304000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20306000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20308000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:2030A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2030C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2030E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:20310000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20312000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20314000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20316000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20318000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:2031A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2031C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2031E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:20320000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20322000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20324000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20326000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20328000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:2032A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2032C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2032E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:20330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20332000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20334000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20336000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20338000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:2033A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2033C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:20340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20344000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20346000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20348000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:2034A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2034E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:20350000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20352000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20354000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20356000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20358000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:2035A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2035C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2035E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:20360000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20362000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20364000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20366000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20368000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:2036A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2036C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2036E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:20370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20372000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20374000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20376000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20378000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:2037A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2037C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2037E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:20380000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20382000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20384000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20386000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20388000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:2038A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2038C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2038E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:20390000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:20392000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20394000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20396000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20398000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:2039A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2039C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2039E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:203A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:203A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:203A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:203A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:203A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:203AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:203AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:203AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:203B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:203B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:203B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:203B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:203B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:203BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:203BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:203BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:203C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:203C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:203C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:203C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:203C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:203CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:203CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:203CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:203D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:203D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:203D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:203D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:203D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:203DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:203DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:203DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:203E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:203E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:203E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:203E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:203E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:203EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:203EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:203EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:203F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:203F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:203F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:203F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:203F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:203FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:203FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:203FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:20400000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20402000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20404000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20406000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20408000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:2040A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2040C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2040E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:20410000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20412000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20414000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20416000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20418000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:2041A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2041C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2041E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:20420000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20422000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20424000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20426000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20428000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:2042A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2042C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2042E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:20430000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20436000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:2043A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2043C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2043E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:20440000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20442000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20444000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20446000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:2044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:20450000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20452000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20454000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20456000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20458000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:2045A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2045C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2045E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:20460000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20462000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20464000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20466000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20468000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:2046A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2046C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2046E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:20470000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20472000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20474000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20476000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20478000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:2047A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2047C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:20480000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20482000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20484000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20486000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20488000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:2048A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2048C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2048E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:20490000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:20492000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20494000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20496000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20498000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:2049A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2049C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2049E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:204A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:204A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:204A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:204A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:204A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:204AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:204AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:204AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:204B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:204B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:204B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:204B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:204B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:204BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:204BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:204BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:204C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:204C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:204C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:204C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:204C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:204CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:204CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:204CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:204D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:204D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:204D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:204D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:204D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:204DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:204DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:204DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:204E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:204E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:204E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:204E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:204E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:204EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:204EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:204EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:204F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:204F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:204F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:204F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:204F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:204FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:204FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:204FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:20500000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
+:20502000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+:20504000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
+:20506000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
+:20508000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
+:2050A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
+:2050C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+:2050E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
+:20510000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
+:20512000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
+:20514000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
+:20516000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
+:20518000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
+:2051A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
+:2051C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+:2051E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
+:20520000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
+:20522000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+:20524000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
+:20526000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
+:20528000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
+:2052A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
+:2052C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
+:2052E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
+:20530000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
+:20532000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
+:20534000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
+:20536000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
+:20538000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
+:2053A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
+:2053C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+:2053E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+:20540000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
+:20542000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
+:20544000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
+:20546000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
+:20548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
+:2054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
+:2054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
+:2054E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+:20550000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
+:20552000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
+:20554000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
+:20556000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
+:20558000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
+:2055A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:2055C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
+:2055E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
+:20560000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
+:20562000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+:20564000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+:20566000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
+:20568000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+:2056A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
+:2056C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+:2056E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
+:20570000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
+:20572000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
+:20574000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
+:20576000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
+:20578000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
+:2057A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
+:2057C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+:2057E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
+:20580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+:20582000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
+:20584000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
+:20586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
+:20588000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
+:2058A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
+:2058C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+:2058E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
+:20590000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+:20592000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
+:20594000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
+:20596000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
+:20598000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
+:2059A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
+:2059C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+:2059E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
+:205A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
+:205A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
+:205A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
+:205A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
+:205A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
+:205AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
+:205AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
+:205AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
+:205B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
+:205B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
+:205B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
+:205B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
+:205B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
+:205BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
+:205BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
+:205BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
+:205C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
+:205C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
+:205C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
+:205C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
+:205C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
+:205CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
+:205CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+:205CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
+:205D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+:205D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
+:205D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
+:205D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
+:205D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
+:205DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
+:205DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
+:205DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+:205E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
+:205E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
+:205E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
+:205E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+:205E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
+:205EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
+:205EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
+:205EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+:205F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+:205F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
+:205F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
+:205F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
+:205F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
+:205FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
+:205FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+:205FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+:20600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
+:20602000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+:20604000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
+:20606000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
+:20608000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
+:2060A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+:2060C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
+:2060E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
+:20610000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
+:20612000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
+:20614000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
+:20616000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
+:20618000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
+:2061A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+:2061C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
+:2061E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+:20620000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
+:20622000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
+:20624000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
+:20626000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
+:20628000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
+:2062A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+:2062C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
+:2062E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
+:20630000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+:20632000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
+:20634000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
+:20636000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
+:20638000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
+:2063A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+:2063C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
+:2063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
+:20640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+:20642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
+:20644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
+:20646000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
+:20648000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
+:2064A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+:2064C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
+:2064E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+:20650000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
+:20652000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
+:20654000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
+:20656000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
+:20658000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
+:2065A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
+:2065C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
+:2065E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
+:20660000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
+:20662000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+:20664000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
+:20666000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
+:20668000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+:2066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+:2066C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
+:2066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
+:20670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
+:20672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
+:20674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
+:20676000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
+:20678000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
+:2067A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+:2067C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
+:2067E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
+:20680000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
+:20682000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
+:20684000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
+:20686000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
+:20688000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
+:2068A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+:2068C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
+:2068E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
+:20690000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
+:20692000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
+:20694000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
+:20696000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
+:20698000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
+:2069A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+:2069C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
+:2069E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+:206A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
+:206A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+:206A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
+:206A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
+:206A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
+:206AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+:206AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
+:206AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
+:206B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
+:206B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
+:206B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
+:206B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
+:206B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
+:206BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
+:206BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
+:206BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
+:206C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
+:206C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
+:206C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
+:206C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
+:206C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
+:206CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+:206CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
+:206CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
+:206D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
+:206D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
+:206D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
+:206D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
+:206D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
+:206DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
+:206DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
+:206DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
+:206E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+:206E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
+:206E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
+:206E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
+:206E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
+:206EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
+:206EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+:206EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
+:206F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
+:206F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
+:206F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
+:206F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
+:206F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:206FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+:206FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
+:206FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
+:2070000055C000006EC000006CC000006AC0000068C0000066C0000064C0000062C0000043
+:2070200060C000005EC00000F2C400005AC0000058C0000056C0000054C0000052C00000EE
+:2070400050C0000078C000004CC000004AC0000048C0000046C0000044C0000042C00000BE
+:2070600040C000003EC000003CC000003AC0000038C0000036C0000034C0000032C0000048
+:2070800030C000002EC000002CC000002AC0000028C0000026C0000024C0000022C00000A8
+:2070A00020C000001EC000001CC0000011241FBECFEFDAE0DEBFCDBF11E0A0E0B1E0E2E3BC
+:2070C000FFE702C005900D92A83AB107D9F711E0A8EAB1E001C01D92AE3BB107E1F78FD30B
+:2070E00026C78ECFF89410926F0010928100109285001092840081E085BF15BE47985D98ED
+:2071000028980C94000008952091B2013091B3012F5F3F4F3093B3012093B201932F37FFA8
+:2071200003C08EEF831B982F990F921710F447980895479A08951F920F920FB60F9211246E
+:207140002F938F939F93EF93FF9310928500109284008091A8019091A901009741F00197D3
+:207160009093A9018093A801892B09F45D988091AA019091AB01009741F001979093AB0128
+:207180008093AA01892B09F42898E0E0F0E0859194918F5F9F4F49F08091AC019091AD0153
+:2071A00001969093AD018093AC01FF91EF919F918F912F910F900FBE0F901F90189584E0BC
+:2071C0008093E9000DC08091E8008B778093E80003C08EB3882351F08091E80082FFF9CFBE
+:2071E0008091E80085FFEFCF8091F1000895982F83E08093E9008091E80085FD0DC0809136
+:20720000E8008E778093E80003C08EB3882369F08091E80080FFF9CF9093F1005D9A84E6C9
+:2072200090E09093A9018093A80108954F925F926F927F928F929F92AF92BF92CF92DF921E
+:20724000EF92FF920F931F93CF93DF9384E08093E9008091E80082FF57C2289A84E690E065
+:207260009093AB018093AA01AADF182F853481F48CE49DE19093AD018093AC0107B600FC4B
+:20728000FDCFF999FECF81E180935700E89503C0843519F494DF8DE00DC28C34E1F38035F9
+:2072A000D1F3843721F484E4A2DF80E003C2813611F489E5FFC18134B1F481DF182F7FDFE3
+:2072C00090E0880F991FAA2797FDA095BA2F312F330F20E0442737FD4095542F822B932B68
+:2072E000A42BB52BB8C1803711F483E5E3C1833549F4C0E0D1E089917ADF21E0C730D20714
+:20730000D1F7D9C1863521F481E371DF80E3D2C1833731F487E86BDF85E969DF8EE1CAC149
+:207320008536B9F4E0E0F0E093E085E090935700E89507B600FCFDCF80935700E89507B65D
+:2073400000FCFDCFE058FF4FA0E7E030FA0771F7A2CF823739F4E1E0F0E089E08093570024
+:207360008491A8C1863439F4E0E0F0E089E08093570084919FC18E3439F4E3E0F0E089E0E5
+:2073800080935700849196C1813539F4E2E0F0E089E08093570084918DC1823631F489E521
+:2073A00026DF80E024DF80E885C1823419F0873609F0E5C01092AD011092AC0100DF082FE8
+:2073C000FEDEF82EFCDE682E8554823008F071C1902F80E0CF2DD0E0C82BD92B10926F00B3
+:2073E000173609F04BC081E180935700E895DD24CC24C3943FC0E090AE01F090AF010091CC
+:20740000B0011091B101B6E46B16D9F4ED2DF0E0EE29FF29E4918E2FEADEDD2081F082E08D
+:2074200090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B101DC2470
+:2074400018C0D801C701B695A7959795879559D5CEDE82E090E0A0E0B0E0E80EF91E0A1FF2
+:207460001B1FE092AE01F092AF010093B0011093B1012197209709F0BECF7DC08090AE01F5
+:207480009090AF01A090B001B090B10196E4691609F05DC083E0F40180935700E89507B63E
+:2074A00000FCFDCF54C0F6E46F1661F5772031F1E090AE01F090AF010091B0011091B1019E
+:2074C0007EDED82ECC24852D90E08C299D29F7010C0140925700E895112482E090E0A0E08B
+:2074E000B0E0E80EF91E0A1F1B1FE092AE01F092AF010093B0011093B10102C060DE582E1A
+:20750000742423C0E090AE01F090AF010091B0011091B10116950795F794E79450DE682FFA
+:20752000C701F7D48091AE019091AF01A091B001B091B1010296A11DB11D8093AE01909349
+:20754000AF01A093B001B093B101219704C05524772444244394209709F0A5CF96E46916B6
+:2075600041F485E0F40180935700E89507B600FCFDCF8DE03CDE82E080936F009CC0833492
+:2075800071F40091AE011091AF0119DE90E021E0F8010C0120935700E89511247CCE8336C8
+:2075A00019F5E090AE01F090AF010091B0011091B10105DEF701E16090E021E00C0120938C
+:2075C0005700E895112482E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE01F092AF0100936A
+:2075E000B0011093B10157CE8D3661F4E091AE01F091AF0185E080935700E89507B600FCF2
+:20760000FDCF49CE823551F4E091AE01F091AF0105911491812FEBDD802F4CC0843421F5FE
+:20762000E090AE01F090AF010091B0011091B10116950795F794E794C2DD682FC70169D4DE
+:207640008091AE019091AF01A091B001B091B1010296A11DB11D8093AE019093AF01A093D8
+:20766000B001B093B10117CE843609F5E090AE01F090AF010091B0011091B101D801C70142
+:20768000B695A795979587953CD4B1DD82E090E0A0E0B0E0E80EF91E0A1F1B1FE092AE010A
+:2076A000F092AF010093B0011093B10104C08B3111F08FE39CDD83E08093E9009091E8002B
+:2076C0008091E8008E778093E80095FF04C010C08EB38823C9F08091E80080FFF9CF809193
+:2076E000E8008E778093E80003C08EB3882361F08091E80080FFF9CF84E08093E9008091F1
+:20770000E8008B778093E800DF91CF911F910F91FF90EF90DF90CF90BF90AF909F908F90AC
+:207720007F906F905F904F9008959091B601892F8F77813249F58091B7018032A1F081328A
+:2077400019F5913A09F58091E800877F8093E8008DE091E067E070E00BD28091E8008B770B
+:207760008093E8000895913279F48091E800877F8093E8008DE091E067E070E05DD2809192
+:20778000E8008E778093E800089582E061EC42E0B5D083E061E842E1B1D084E060E842E1EF
+:2077A000ADC084B7877F84BF88E10FB6F89480936000109260000FBE20E880E090E00FB63F
+:2077C000F89420936100809361000FBE81E085BF92E095BF3F9A209A559AE1E6F0E02083A1
+:2077E000108247985D982898109289008AEF8093880090936F0083E080938100F0C040911A
+:20780000000850910108109201081092000894B714BE88E10FB6F8948093600010926000D5
+:207820000FBE292F30E0F901E270F07091FD18C090FF05C0859194918F5F9F4F81F423FFFF
+:207840000FC08091090190910A014817590741F0E0E0F0E0859194918F5F9F4F09F042DC64
+:20786000A0DF78941092AD011092AC010CC0DEDC36D38091AC019091AD0181549F4110F00D
+:207880001092140141DC80911401882381F78091E00081608093E00025DC80E090E0089598
+:2078A000FA01923049F0933061F09130F9F485E191E022E130E01EC087E291E02EE330E04D
+:2078C00019C0882329F485E691E024E030E012C0813029F489E691E022E230E00BC0823006
+:2078E00029F48DE891E028E130E004C080E090E020E030E091838083C90108958093E9004E
+:207900008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F62
+:2079200008958091B60188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B772A
+:207940008093E80008958EB3882349F08091E80080FFF9CF8091E8008E778093E800089594
+:20796000EF92FF920F931F9345D04CD008ED10E0F80180818F77808380818068808380819B
+:207980008F7D808319BC1EBA1092B40180EEE82EF12CF70180818B7F8083F8018081816052
+:2079A000808380E060E042E0A9DFE1EEF0E080818E7F8083E2EEF0E0808181608083808144
+:2079C00088608083F70180818E7F8083F8018081806180831F910F91FF90EF900895E7ED06
+:2079E000F0E08081816080838AE482BF81E08093B501B6CFE8EDF0E080818E7F808310921C
+:207A0000E20008951092DA001092E10008951F920F920FB60F9211242F933F934F935F93F6
+:207A20006F937F938F939F93AF93BF93EF93FF938091DA0080FF1BC08091D80080FF17C0B2
+:207A40008091DA008E7F8093DA008091D90080FF0BC080E189BD82E189BD09B400FEFDCF36
+:207A600081E08EBB3BD203C019BC1EBA37D28091E10080FF17C08091E20080FF13C0809138
+:207A8000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC85E049
+:207AA0008EBB1CD28091E10084FF2CC08091E20084FF28C080E189BD82E189BD09B400FEC5
+:207AC000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E20012
+:207AE0008091E20081608093E2008091B401882331F48091E30087FD02C081E001C084E067
+:207B00008EBBECD18091E10083FF21C08091E20083FF1DC08091E100877F8093E10082E06A
+:207B20008EBB1092B4018091E1008E7F8093E1008091E2008E7F8093E2008091E2008061E9
+:207B40008093E20080E060E042E0D8DEC7D1FF91EF91BF91AF919F918F917F916F915F9130
+:207B60004F913F912F910F900FBE0F901F9018959C014091BC015091BD014617570718F49D
+:207B8000F90190E044C06115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF0F
+:207BA0008EB3882309F444C0853009F443C08091E80083FF02C081E008958091E80082FD70
+:207BC00031C08091E80080FF22C08091F3009091F200782F60E0292F30E0262B372B07C07A
+:207BE00081918093F100415050402F5F3F4F4115510519F02830310598F390E02830310566
+:207C000009F491E08091E8008E778093E8004115510531F6992321F605C08EB3882341F075
+:207C2000853041F08091E80082FFF7CF80E0089582E0089583E008959C016115710529F47C
+:207C40008091E8008B778093E800F90126C08EB3882391F1853091F18091E80083FF02C06C
+:207C600081E008958091E80082FFF1CF06C08091F10081936150704059F02091F300809191
+:207C8000F200322F20E090E0822B932B892B79F78091E8008B778093E80061157105B9F601
+:207CA00005C08EB3882341F0853041F08091E80080FFF7CF80E0089582E0089583E00895C2
+:207CC0000F931F93DF93CF9300D0CDB7DEB7E6EBF1E08091F100819381E0EE3BF807C9F792
+:207CE00024DD8091E80083FFE4C08091B6019091B701953009F46DC0963040F4913081F1A7
+:207D0000913070F0933009F0D4C02AC0983009F4A3C0993009F4B2C0963009F0CAC07CC023
+:207D2000803809F4C6C0823809F0C3C08091BA0187708093E9008091EB001092E9002091DB
+:207D4000E800277F2093E80090E025E0969587952A95E1F781708093F1001092F10087C0D8
+:207D6000882319F0823009F0A4C08F71823009F0A0C08091B801882331F52091BA01277097
+:207D800009F497C02093E9008091EB0080FF1BC0933021F48091EB00806213C08091EB0018
+:207DA00080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091EB00E5
+:207DC00088608093EB001092E9008091E800877F51C0882309F06DC01091B8011F770FB79B
+:207DE000F8948091E800877F8093E8009ADD8091E80080FFFCCF8091E3008078812B809398
+:207E0000E30080688093E300112311F482E001C083E08EBB0FBF4DC08058823008F049C033
+:207E20008091B8019091B9016091BA01AE014F5F5F4F36DDBC01009709F43BC08091E8008E
+:207E4000877F8093E80089819A8192DE8091E8008B778093E8002DC0803859F58091E800AA
+:207E6000877F8093E8008091B4018093F1008091E8008E778093E80054DD1BC08823C9F4CA
+:207E80009091B8019230A8F48091E800877F8093E8009093B40145DD8091B401882331F420
+:207EA0008091E30087FD02C081E001C084E08EBB6CDC8091E80083FF0AC08091EB0080624E
+:207EC0008093EB008091E800877F8093E8000F900F90CF91DF911F910F91089508951F9360
+:207EE0008EB3882361F01091E9001092E9008091E80083FF01C0E4DE17701093E9001F916F
+:207F00000895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD20BDBD
+:207F20000FB6F894FA9AF99A0FBE01960895F894FFCF4341544552494E4100777700080031
+:207F40000000000000080112011001020000084123370001000201000109023E00020100FE
+:207F600080320904000001020201000524001001042402040524060001070582030800FF0C
+:207F800009040100020A000000070504021000010705830210000104030904220341007216
+:207FA000006400750069006E006F0020004D006900630072006F0020002000200000001810
+:1A7FC00003410072006400750069006E006F0020004C004C004300000000D7
+:00000001FF
diff --git a/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-12-10.txt b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-12-10.txt
new file mode 100644
index 0000000..5beb659
--- /dev/null
+++ b/hardware/arduino/bootloaders/caterina/Micro-prod-firmware-2012-12-10.txt
@@ -0,0 +1,11 @@
+Builds against LUFA version 111009
+make version 3.81
+avrdude version 5.11
+
+All AVR tools except avrdude were installed by CrossPack 20100115:
+avr-gcc version 4.3.3 (GCC)
+Thread model: single
+Configured with: ../configure âprefix=/usr/local/CrossPack-AVR-20100115 âdisable-dependency-tracking âdisable-nls âdisable-werror âtarget=avr âenable-languages=c,c++ âdisable-nls âdisable-libssp âwith-dwarf2
+avr-libc version 1.6.7
+binutils version 2.19
+
diff --git a/hardware/arduino/bootloaders/optiboot/makeall b/hardware/arduino/bootloaders/optiboot/makeall
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/stk500v2/License.txt b/hardware/arduino/bootloaders/stk500v2/License.txt
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/stk500v2/Makefile b/hardware/arduino/bootloaders/stk500v2/Makefile
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/stk500v2/STK500V2.pnproj b/hardware/arduino/bootloaders/stk500v2/STK500V2.pnproj
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/stk500v2/STK500V2.pnps b/hardware/arduino/bootloaders/stk500v2/STK500V2.pnps
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/stk500v2/command.h b/hardware/arduino/bootloaders/stk500v2/command.h
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/stk500v2/stk500boot.c b/hardware/arduino/bootloaders/stk500v2/stk500boot.c
old mode 100755
new mode 100644
diff --git a/hardware/arduino/bootloaders/stk500v2/stk500boot.ppg b/hardware/arduino/bootloaders/stk500v2/stk500boot.ppg
old mode 100755
new mode 100644
diff --git a/hardware/arduino/cores/arduino/Arduino.h b/hardware/arduino/cores/arduino/Arduino.h
old mode 100755
new mode 100644
index 830c995..b265825
--- a/hardware/arduino/cores/arduino/Arduino.h
+++ b/hardware/arduino/cores/arduino/Arduino.h
@@ -46,7 +46,7 @@ extern "C"{
#define EXTERNAL 1
#define INTERNAL 2
#else
-#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__)
+#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
#define INTERNAL1V1 2
#define INTERNAL2V56 3
#else
diff --git a/hardware/arduino/cores/arduino/CDC.cpp b/hardware/arduino/cores/arduino/CDC.cpp
index 1ee3a48..701e483 100644
--- a/hardware/arduino/cores/arduino/CDC.cpp
+++ b/hardware/arduino/cores/arduino/CDC.cpp
@@ -141,16 +141,22 @@ void Serial_::end(void)
void Serial_::accept(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
- int c = USB_Recv(CDC_RX);
int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
// if we should be storing the received character into the location
// just before the tail (meaning that the head would advance to the
// current location of the tail), we're about to overflow the buffer
// and so we don't write the character or advance the head.
- if (i != buffer->tail) {
+
+ // while we have room to store a byte
+ while (i != buffer->tail) {
+ int c = USB_Recv(CDC_RX);
+ if (c == -1)
+ break; // no more data
buffer->buffer[buffer->head] = c;
buffer->head = i;
+
+ i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
}
}
diff --git a/hardware/arduino/cores/arduino/HardwareSerial.cpp b/hardware/arduino/cores/arduino/HardwareSerial.cpp
index f40ddee..794a7be 100644
--- a/hardware/arduino/cores/arduino/HardwareSerial.cpp
+++ b/hardware/arduino/cores/arduino/HardwareSerial.cpp
@@ -18,6 +18,7 @@
Modified 23 November 2006 by David A. Mellis
Modified 28 September 2010 by Mark Sproul
+ Modified 14 August 2012 by Alarus
*/
#include <stdlib.h>
@@ -33,6 +34,21 @@
#include "HardwareSerial.h"
+/*
+ * on ATmega8, the uart and its bits are not numbered, so there is no "TXC0"
+ * definition.
+ */
+#if !defined(TXC0)
+#if defined(TXC)
+#define TXC0 TXC
+#elif defined(TXC1)
+// Some devices have uart1 but no uart0
+#define TXC0 TXC1
+#else
+#error TXC0 not definable in HardwareSerial.h
+#endif
+#endif
+
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which head is the index of the location
// to which to write the next incoming character and tail is the index of the
@@ -109,13 +125,22 @@ inline void store_char(unsigned char c, ring_buffer *buffer)
#endif
{
#if defined(UDR0)
- unsigned char c = UDR0;
+ if (bit_is_clear(UCSR0A, UPE0)) {
+ unsigned char c = UDR0;
+ store_char(c, &rx_buffer);
+ } else {
+ unsigned char c = UDR0;
+ };
#elif defined(UDR)
- unsigned char c = UDR;
+ if (bit_is_clear(UCSRA, PE)) {
+ unsigned char c = UDR;
+ store_char(c, &rx_buffer);
+ } else {
+ unsigned char c = UDR;
+ };
#else
#error UDR not defined
#endif
- store_char(c, &rx_buffer);
}
#endif
#endif
@@ -126,8 +151,12 @@ inline void store_char(unsigned char c, ring_buffer *buffer)
#define serialEvent1_implemented
SIGNAL(USART1_RX_vect)
{
- unsigned char c = UDR1;
- store_char(c, &rx_buffer1);
+ if (bit_is_clear(UCSR1A, UPE1)) {
+ unsigned char c = UDR1;
+ store_char(c, &rx_buffer1);
+ } else {
+ unsigned char c = UDR1;
+ };
}
#elif defined(SIG_USART1_RECV)
#error SIG_USART1_RECV
@@ -139,8 +168,12 @@ inline void store_char(unsigned char c, ring_buffer *buffer)
#define serialEvent2_implemented
SIGNAL(USART2_RX_vect)
{
- unsigned char c = UDR2;
- store_char(c, &rx_buffer2);
+ if (bit_is_clear(UCSR2A, UPE2)) {
+ unsigned char c = UDR2;
+ store_char(c, &rx_buffer2);
+ } else {
+ unsigned char c = UDR2;
+ };
}
#elif defined(SIG_USART2_RECV)
#error SIG_USART2_RECV
@@ -152,8 +185,12 @@ inline void store_char(unsigned char c, ring_buffer *buffer)
#define serialEvent3_implemented
SIGNAL(USART3_RX_vect)
{
- unsigned char c = UDR3;
- store_char(c, &rx_buffer3);
+ if (bit_is_clear(UCSR3A, UPE3)) {
+ unsigned char c = UDR3;
+ store_char(c, &rx_buffer3);
+ } else {
+ unsigned char c = UDR3;
+ };
}
#elif defined(SIG_USART3_RECV)
#error SIG_USART3_RECV
@@ -274,7 +311,7 @@ ISR(USART3_UDRE_vect)
HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
- volatile uint8_t *udr,
+ volatile uint8_t *ucsrc, volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x)
{
_rx_buffer = rx_buffer;
@@ -283,6 +320,7 @@ HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
_ubrrl = ubrrl;
_ucsra = ucsra;
_ucsrb = ucsrb;
+ _ucsrc = ucsrc;
_udr = udr;
_rxen = rxen;
_txen = txen;
@@ -327,6 +365,55 @@ try_again:
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
+ transmitting = false;
+
+ sbi(*_ucsrb, _rxen);
+ sbi(*_ucsrb, _txen);
+ sbi(*_ucsrb, _rxcie);
+ cbi(*_ucsrb, _udrie);
+}
+
+void HardwareSerial::begin(unsigned long baud, byte config)
+{
+ uint16_t baud_setting;
+ uint8_t current_config;
+ bool use_u2x = true;
+
+#if F_CPU == 16000000UL
+ // hardcoded exception for compatibility with the bootloader shipped
+ // with the Duemilanove and previous boards and the firmware on the 8U2
+ // on the Uno and Mega 2560.
+ if (baud == 57600) {
+ use_u2x = false;
+ }
+#endif
+
+try_again:
+
+ if (use_u2x) {
+ *_ucsra = 1 << _u2x;
+ baud_setting = (F_CPU / 4 / baud - 1) / 2;
+ } else {
+ *_ucsra = 0;
+ baud_setting = (F_CPU / 8 / baud - 1) / 2;
+ }
+
+ if ((baud_setting > 4095) && use_u2x)
+ {
+ use_u2x = false;
+ goto try_again;
+ }
+
+ // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
+ *_ubrrh = baud_setting >> 8;
+ *_ubrrl = baud_setting;
+
+ //set the data bits, parity, and stop bits
+#if defined(__AVR_ATmega8__)
+ config |= 0x80; // select UCSRC register (shared with UBRRH)
+#endif
+ *_ucsrc = config;
+
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
@@ -376,8 +463,9 @@ int HardwareSerial::read(void)
void HardwareSerial::flush()
{
- while (_tx_buffer->head != _tx_buffer->tail)
- ;
+ // UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT
+ while (transmitting && ! (*_ucsra & _BV(TXC0)));
+ transmitting = false;
}
size_t HardwareSerial::write(uint8_t c)
@@ -394,6 +482,9 @@ size_t HardwareSerial::write(uint8_t c)
_tx_buffer->head = i;
sbi(*_ucsrb, _udrie);
+ // clear the TXC bit -- "can be cleared by writing a one to its bit location"
+ transmitting = true;
+ sbi(*_ucsra, TXC0);
return 1;
}
@@ -405,9 +496,9 @@ HardwareSerial::operator bool() {
// Preinstantiate Objects //////////////////////////////////////////////////////
#if defined(UBRRH) && defined(UBRRL)
- HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X);
+ HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X);
#elif defined(UBRR0H) && defined(UBRR0L)
- HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0);
+ HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0);
#elif defined(USBCON)
// do nothing - Serial object and buffers are initialized in CDC code
#else
@@ -415,13 +506,13 @@ HardwareSerial::operator bool() {
#endif
#if defined(UBRR1H)
- HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1);
+ HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1);
#endif
#if defined(UBRR2H)
- HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2);
+ HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2);
#endif
#if defined(UBRR3H)
- HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3);
+ HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3);
#endif
#endif // whole file
diff --git a/hardware/arduino/cores/arduino/HardwareSerial.h b/hardware/arduino/cores/arduino/HardwareSerial.h
index bf4924c..a73117f 100644
--- a/hardware/arduino/cores/arduino/HardwareSerial.h
+++ b/hardware/arduino/cores/arduino/HardwareSerial.h
@@ -17,6 +17,7 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Modified 28 September 2010 by Mark Sproul
+ Modified 14 August 2012 by Alarus
*/
#ifndef HardwareSerial_h
@@ -37,29 +38,62 @@ class HardwareSerial : public Stream
volatile uint8_t *_ubrrl;
volatile uint8_t *_ucsra;
volatile uint8_t *_ucsrb;
+ volatile uint8_t *_ucsrc;
volatile uint8_t *_udr;
uint8_t _rxen;
uint8_t _txen;
uint8_t _rxcie;
uint8_t _udrie;
uint8_t _u2x;
+ bool transmitting;
public:
HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
- volatile uint8_t *udr,
+ volatile uint8_t *ucsrc, volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x);
void begin(unsigned long);
+ void begin(unsigned long, uint8_t);
void end();
virtual int available(void);
virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
+ inline size_t write(unsigned long n) { return write((uint8_t)n); }
+ inline size_t write(long n) { return write((uint8_t)n); }
+ inline size_t write(unsigned int n) { return write((uint8_t)n); }
+ inline size_t write(int n) { return write((uint8_t)n); }
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};
+// Define config for Serial.begin(baud, config);
+#define SERIAL_5N1 0x00
+#define SERIAL_6N1 0x02
+#define SERIAL_7N1 0x04
+#define SERIAL_8N1 0x06
+#define SERIAL_5N2 0x08
+#define SERIAL_6N2 0x0A
+#define SERIAL_7N2 0x0C
+#define SERIAL_8N2 0x0E
+#define SERIAL_5E1 0x20
+#define SERIAL_6E1 0x22
+#define SERIAL_7E1 0x24
+#define SERIAL_8E1 0x26
+#define SERIAL_5E2 0x28
+#define SERIAL_6E2 0x2A
+#define SERIAL_7E2 0x2C
+#define SERIAL_8E2 0x2E
+#define SERIAL_5O1 0x30
+#define SERIAL_6O1 0x32
+#define SERIAL_7O1 0x34
+#define SERIAL_8O1 0x36
+#define SERIAL_5O2 0x38
+#define SERIAL_6O2 0x3A
+#define SERIAL_7O2 0x3C
+#define SERIAL_8O2 0x3E
+
#if defined(UBRRH) || defined(UBRR0H)
extern HardwareSerial Serial;
#elif defined(USBCON)
diff --git a/hardware/arduino/cores/arduino/Print.cpp b/hardware/arduino/cores/arduino/Print.cpp
old mode 100755
new mode 100644
diff --git a/hardware/arduino/cores/arduino/Print.h b/hardware/arduino/cores/arduino/Print.h
old mode 100755
new mode 100644
diff --git a/hardware/arduino/cores/arduino/Tone.cpp b/hardware/arduino/cores/arduino/Tone.cpp
old mode 100755
new mode 100644
index 20eed3f..9bb6fe7
--- a/hardware/arduino/cores/arduino/Tone.cpp
+++ b/hardware/arduino/cores/arduino/Tone.cpp
@@ -29,6 +29,7 @@ Version Modified By Date Comments
09/11/25 Fixed timer0 from being excluded
0006 D Mellis 09/12/29 Replaced objects with functions
0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register
+0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY
*************************************************/
#include <avr/interrupt.h>
@@ -85,10 +86,10 @@ volatile uint8_t timer5_pin_mask;
#endif
-// MLS: This does not make sense, the 3 options are the same
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define AVAILABLE_TONE_PINS 1
+#define USE_TIMER2
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ };
@@ -96,13 +97,23 @@ static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 25
#elif defined(__AVR_ATmega8__)
#define AVAILABLE_TONE_PINS 1
+#define USE_TIMER2
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
+#elif defined(__AVR_ATmega32U4__)
+
+#define AVAILABLE_TONE_PINS 1
+#define USE_TIMER3
+
+const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ };
+static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
+
#else
#define AVAILABLE_TONE_PINS 1
+#define USE_TIMER2
// Leave timer 0 to last.
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ };
@@ -480,8 +491,7 @@ void noTone(uint8_t _pin)
digitalWrite(_pin, 0);
}
-#if 0
-#if !defined(__AVR_ATmega8__)
+#ifdef USE_TIMER0
ISR(TIMER0_COMPA_vect)
{
if (timer0_toggle_count != 0)
@@ -501,6 +511,7 @@ ISR(TIMER0_COMPA_vect)
#endif
+#ifdef USE_TIMER1
ISR(TIMER1_COMPA_vect)
{
if (timer1_toggle_count != 0)
@@ -520,6 +531,7 @@ ISR(TIMER1_COMPA_vect)
#endif
+#ifdef USE_TIMER2
ISR(TIMER2_COMPA_vect)
{
@@ -541,12 +553,10 @@ ISR(TIMER2_COMPA_vect)
// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop
}
}
+#endif
-
-//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
-#if 0
-
+#ifdef USE_TIMER3
ISR(TIMER3_COMPA_vect)
{
if (timer3_toggle_count != 0)
@@ -563,7 +573,10 @@ ISR(TIMER3_COMPA_vect)
*timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop
}
}
+#endif
+
+#ifdef USE_TIMER4
ISR(TIMER4_COMPA_vect)
{
if (timer4_toggle_count != 0)
@@ -580,7 +593,10 @@ ISR(TIMER4_COMPA_vect)
*timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop
}
}
+#endif
+
+#ifdef USE_TIMER5
ISR(TIMER5_COMPA_vect)
{
if (timer5_toggle_count != 0)
@@ -597,5 +613,4 @@ ISR(TIMER5_COMPA_vect)
*timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop
}
}
-
#endif
diff --git a/hardware/arduino/cores/arduino/USBCore.cpp b/hardware/arduino/cores/arduino/USBCore.cpp
index 6766be6..d3e0170 100644
--- a/hardware/arduino/cores/arduino/USBCore.cpp
+++ b/hardware/arduino/cores/arduino/USBCore.cpp
@@ -53,6 +53,12 @@ const u16 STRING_IPRODUCT[17] = {
(3<<8) | (2+2*16),
#if USB_PID == 0x8036
'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o'
+#elif USB_PID == 0x8037
+ 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' '
+#elif USB_PID == 0x803C
+ 'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' '
+#elif USB_PID == 0x9208
+ 'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' '
#else
'U','S','B',' ','I','O',' ','B','o','a','r','d',' ',' ',' ',' '
#endif
@@ -62,6 +68,8 @@ const u16 STRING_IMANUFACTURER[12] = {
(3<<8) | (2+2*11),
#if USB_VID == 0x2341
'A','r','d','u','i','n','o',' ','L','L','C'
+#elif USB_VID == 0x1b4f
+ 'S','p','a','r','k','F','u','n',' ',' ',' '
#else
'U','n','k','n','o','w','n',' ',' ',' ',' '
#endif
@@ -603,7 +611,7 @@ ISR(USB_GEN_vect)
{
#ifdef CDC_ENABLED
USB_Flush(CDC_TX); // Send a tx frame if found
- while (USB_Available(CDC_RX)) // Handle received bytes (if any)
+ if (USB_Available(CDC_RX)) // Handle received bytes (if any)
Serial.accept();
#endif
@@ -638,7 +646,11 @@ void USBDevice_::attach()
_usbConfiguration = 0;
UHWCON = 0x01; // power internal reg
USBCON = (1<<USBE)|(1<<FRZCLK); // clock frozen, usb enabled
+#if F_CPU == 16000000UL
PLLCSR = 0x12; // Need 16 MHz xtal
+#elif F_CPU == 8000000UL
+ PLLCSR = 0x02; // Need 8 MHz xtal
+#endif
while (!(PLLCSR & (1<<PLOCK))) // wait for lock pll
;
diff --git a/hardware/arduino/cores/arduino/WString.h b/hardware/arduino/cores/arduino/WString.h
index d76d2a3..947325e 100644
--- a/hardware/arduino/cores/arduino/WString.h
+++ b/hardware/arduino/cores/arduino/WString.h
@@ -35,7 +35,7 @@
// -std=c++0x
class __FlashStringHelper;
-#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal)))
+#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
// An inherited class for holding the result of a concatenation. These
// result objects are assumed to be writable by subsequent concatenations.
diff --git a/hardware/arduino/cores/arduino/wiring_analog.c b/hardware/arduino/cores/arduino/wiring_analog.c
index 0e9881f..23b01c6 100644
--- a/hardware/arduino/cores/arduino/wiring_analog.c
+++ b/hardware/arduino/cores/arduino/wiring_analog.c
@@ -45,7 +45,7 @@ int analogRead(uint8_t pin)
if (pin >= 54) pin -= 54; // allow for channel or pin numbers
#elif defined(__AVR_ATmega32U4__)
if (pin >= 18) pin -= 18; // allow for channel or pin numbers
-#elif defined(__AVR_ATmega1284__)
+#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
if (pin >= 24) pin -= 24; // allow for channel or pin numbers
#else
if (pin >= 14) pin -= 14; // allow for channel or pin numbers
diff --git a/hardware/arduino/cores/arduino/wiring_private.h b/hardware/arduino/cores/arduino/wiring_private.h
old mode 100755
new mode 100644
index 026ce1a..f678265
--- a/hardware/arduino/cores/arduino/wiring_private.h
+++ b/hardware/arduino/cores/arduino/wiring_private.h
@@ -54,7 +54,7 @@ extern "C"{
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define EXTERNAL_NUM_INTERRUPTS 8
-#elif defined(__AVR_ATmega1284P__)
+#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
#define EXTERNAL_NUM_INTERRUPTS 3
#elif defined(__AVR_ATmega32U4__)
#define EXTERNAL_NUM_INTERRUPTS 4
diff --git a/hardware/arduino/cores/arduino/wiring_pulse.c b/hardware/arduino/cores/arduino/wiring_pulse.c
old mode 100755
new mode 100644
diff --git a/hardware/arduino/cores/arduino/wiring_shift.c b/hardware/arduino/cores/arduino/wiring_shift.c
old mode 100755
new mode 100644
diff --git a/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex b/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex
new file mode 100644
index 0000000..7720cf4
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex
@@ -0,0 +1,467 @@
+:1000000090C00000A9C00000A7C00000A5C000006B
+:10001000A3C00000A1C000009FC000009DC0000060
+:100020009BC0000099C0000097C0000048C40000B9
+:100030000CC4000091C000008FC000008DC0000003
+:100040008BC0000089C0000087C0000085C0000090
+:1000500083C0000081C000007FC0000002C100001A
+:100060007BC0000079C0000077C0000075C00000B0
+:1000700073C0000071C000006FC000006DC00000C0
+:100080006BC0000069C0000067C0000065C00000D0
+:1000900063C0000061C000001201100102000008EE
+:1000A0004123420001000102DC0109023E0002017D
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:10012000000011241FBECFEFD2E0DEBFCDBF11E033
+:10013000A0E0B1E0ECEAFFE002C005900D92A6312C
+:10014000B107D9F712E0A6E1B1E001C01D92AF32CC
+:10015000B107E1F7F1D028C753CF9C01DC01AE57BE
+:10016000BF4FED91FC91119741911196FC93EE9345
+:1001700080589F4FE817F90711F42D933C939FB7D0
+:10018000F894F901EC57FF4F8081815080839FBF25
+:10019000842F0895DF92EF92FF920F931F93FC013B
+:1001A0008489813019F0823021F405C040E3D42ED7
+:1001B00004C0DD2402C030E2D32E8389823011F4E2
+:1001C00088E0D82A8589873031F0883031F0863050
+:1001D00031F482E003C084E001C086E0D82A1092A6
+:1001E000C9001092C8001092CA00E784F088018903
+:1001F000128980E0E81681EEF80680E0080780E0CA
+:10020000180719F420E130E00FC0C801B701969536
+:1002100087957795679560587B47814E9F4FA801DA
+:100220009701A0D6215030403093CD002093CC00D0
+:10023000D092CA0080E0E81681EEF80680E0080758
+:1002400080E0180711F082E001C080E08093C800D0
+:1002500088E98093C9001F910F91FF90EF90DF9084
+:1002600008951F920F920FB60F9211242F938F9320
+:100270009F93EF93FF939091CE008EB38430F1F46F
+:10028000E0919901F0919A019083E0919901F091A8
+:100290009A01CF01019690939A018093990189590F
+:1002A000914021F489E191E0928381839FB7F89492
+:1002B00080919D018F5F80939D019FBFFF91EF9182
+:1002C0009F918F912F910F900FBE0F901F901895B7
+:1002D000FC01858580FF02C05F9808955F9A0895AC
+:1002E00080E091E0D5C580E091E088C584B7877F44
+:1002F00084BF28E10FB6F89420936000109260004C
+:100300000FBE87E690E09093CD008093CC0086E00E
+:100310008093CA001092C8002093C900539A5A9A39
+:100320008AB180638AB98BB180638BB983D284E050
+:1003300085BD5F9A579A08950F931F93CF93DF93CC
+:10034000D5DF2FB7F8948EE991E090931F02809348
+:100350001E0290932102809320022FBF2FB7F894A2
+:1003600089E191E090939A018093990190939C0187
+:1003700080939B012FBF7894CEE9D1E003E08FB743
+:10038000F894909122028FBF903809F180E091E0BB
+:10039000ABD497FD1CC0E0911E02F0911F02808338
+:1003A000E0911E02F0911F02CF01019690931F026F
+:1003B00080931E028E51924011F4D283C1839FB765
+:1003C000F894809122028F5F809322029FBF8FB7A3
+:1003D000F89410919D018FBFA89902C0113678F151
+:1003E000A89A80919D01882361F05D980093160181
+:1003F00008C089E191E0B1DE682F80E091E0DAD4B5
+:1004000011501123B1F780911601882351F080918A
+:10041000160181508093160180911601882309F4FA
+:100420005D9A80911701882351F0809117018150C6
+:100430008093170180911701882309F45C9A8FB784
+:10044000F894909122028FBF992369F08EE991E090
+:1004500084DE982F8091C80085FFFCCF9093CE005A
+:100460005C980093170180E091E095D42AD487CF5F
+:10047000DA01923049F0933061F09130F9F4E8E913
+:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6
+:1004900019C0813049F0813018F0823079F408C0F9
+:1004A000E8EEF0E0849107C0ECEEF0E0849103C048
+:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9
+:1004C00020E030E0ED93FC93C901089528E030E08E
+:1004D00040E003C04F5F220F331F28173907D0F3C6
+:1004E000842F8295807F08958093E9008091EB00AE
+:1004F00081608093EB001092ED006093EC004093DC
+:10050000ED008091EE00881F8827881F08951092C3
+:10051000F40090E09093E9001092F0001092E8004F
+:100520001092ED008091EB008E7F8093EB009F5F37
+:10053000953081F708958091270288238CF403C0B9
+:100540008EB38823B1F08091E80082FFF9CF8091CB
+:10055000E8008B778093E80008958EB3882349F0F4
+:100560008091E80080FFF9CF8091E8008E7780933A
+:10057000E800089594E68091EC0080FF05C080912A
+:10058000E80080FF05C023C08091E80082FD1FC005
+:100590008EB3882311F482E008958EB3853011F470
+:1005A00083E008958091EB0085FF02C081E008950B
+:1005B0008091E10082FFDFCF8091E1008B7F80930B
+:1005C000E100992311F484E008959150D4CF80E0A4
+:1005D00008959C0140912D0250912E024617570715
+:1005E00018F4F90120E038C06115710511F0AB0174
+:1005F000F8CF8091E8008E778093E80040E050E0EB
+:10060000F0CF8091E80083FF02C081E008958091DF
+:10061000E80082FD2DC08EB3882381F18EB3853032
+:1006200079F18091E80080FF17C09091F20006C038
+:1006300081918093F100415050409F5F41155105D9
+:1006400011F09830A8F320E0983009F421E080916F
+:10065000E8008E778093E8004115510591F622233A
+:1006600081F606C08EB3882349F08EB3853041F001
+:100670008091E80082FFF6CF80E0089582E008953F
+:1006800083E008959C0140912D0250912E0246175F
+:10069000570710F490E03BC06115710511F0AB01F4
+:1006A000F9CF8091E8008E778093E80040E050E039
+:1006B000F1CF8091E80083FF02C081E0089580912E
+:1006C000E80082FD30C08EB3882399F18EB3853067
+:1006D00091F18091E80080FF1AC08091F20009C07A
+:1006E000F9012F5F3F4FE491E093F10041505040FA
+:1006F0008F5F4115510511F0883090F390E08830FC
+:1007000009F491E08091E8008E778093E80041152C
+:10071000510579F6992369F606C08EB3882349F00E
+:100720008EB3853041F08091E80082FFF6CF80E003
+:10073000089582E0089583E008959C016115710594
+:1007400029F48091E8008B778093E800F90120C0BC
+:100750008091E80083FF02C081E008958EB3882372
+:1007600039F18EB3853031F18091E80082FFF0CF0E
+:1007700006C08091F10081936150704021F080911A
+:10078000F2008823B1F78091E8008B778093E8002E
+:1007900061157105E9F606C08EB3882349F08EB362
+:1007A000853041F08091E80080FFF6CF80E0089529
+:1007B00082E0089583E0089542D044D01EBA10929A
+:1007C0002502109224021092230284E089BD89B58B
+:1007D000826089BD09B400FEFDCF8091D800982FBA
+:1007E0009F779093D80080688093D80080916300B1
+:1007F0008E7F809363008091D8008F7D8093D80096
+:100800008091E0008E7F8093E0008091E1008E7FF8
+:100810008093E1008091E20081608093E20080910A
+:10082000E100877F8093E1008091E20088608093FF
+:10083000E2000895C1DF81E08093260208951092BE
+:10084000E20008951092E10008951F920F920FB6F2
+:100850000F9211241F932F933F934F935F936F93A6
+:100860007F938F939F93AF93BF93EF93FF93E9EEA3
+:10087000F0E0108117701082E0EFF0E08081877F58
+:1008800080837894C3D0F894A9EEB0E01C92E0EF96
+:10089000F0E08081886080831C93FF91EF91BF918D
+:1008A000AF919F918F917F916F915F914F913F9108
+:1008B0002F911F910F900FBE0F901F9018951F92B0
+:1008C0000F920FB60F9211242F933F934F935F9384
+:1008D0006F937F938F939F93AF93BF93EF93FF9308
+:1008E0008091E10080FF1BC08091E20080FF17C073
+:1008F0008091E1008E7F8093E1008091E2008E7F05
+:100900008093E2008091E20080618093E200809118
+:10091000D80080628093D80019BC1EBAD1D18091D2
+:10092000E10084FF29C08091E20084FF25C084E0BB
+:1009300089BD89B5826089BD09B400FEFDCF809173
+:10094000D8008F7D8093D8008091E1008F7E8093C6
+:10095000E1008091E2008F7E8093E2008091E200CE
+:1009600081608093E20080912502882311F481E068
+:1009700001C084E08EBBA4D18091E10083FF27C039
+:100980008091E20083FF23C08091E100877F809304
+:10099000E10082E08EBB109225028091E1008E7F03
+:1009A0008093E1008091E2008E7F8093E20080914D
+:1009B000E20080618093E200AADD80E060E042E036
+:1009C00093DD8091F00088608093F00079D1809170
+:1009D000E10082FF0AC08091E20082FF06C08091A0
+:1009E000E1008B7F8093E1006BD1FF91EF91BF918C
+:1009F000AF919F918F917F916F915F914F913F91B7
+:100A00002F910F900FBE0F901F9018951F93DF939B
+:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D
+:100A2000CDBFE7E2F2E08091F100819322E0EF3266
+:100A3000F207C9F78091270230912802353009F476
+:100A400087C0363040F43130C9F1313070F0333086
+:100A500009F01DC133C0383009F4EFC0393009F452
+:100A6000FEC0363009F013C192C0803821F08238C0
+:100A700009F00DC108C090912302809124028823BF
+:100A800099F0926011C080912B0287708093E900E9
+:100A90008091EB0090E025E0969587952A95E1F707
+:100AA000982F91701092E9008091E800877F8093E1
+:100AB000E8009093F1001092F100CAC0882319F069
+:100AC000823009F0E4C090E08F719070009721F0BF
+:100AD000029709F0DDC00CC080912902813009F035
+:100AE000D7C010922402333069F5809324022AC0C3
+:100AF00080912902882331F520912B02277009F477
+:100B0000C7C02093E9008091EB0080FFC1C0333063
+:100B100021F48091EB00806213C08091EB00806132
+:100B20008093EB0081E090E002C0880F991F2A9526
+:100B3000E2F78093EA001092EA008091EB0088606F
+:100B40008093EB001092E9008091E800877F83C0DA
+:100B5000882309F09CC0109129028091E800877FCA
+:100B60008093E800E8DC04C08EB3882309F490C0C9
+:100B70008091E80080FFF8CF812F8F7711F492E009
+:100B800001C093E09EBB80688093E30081C08058E1
+:100B9000823008F07CC08091290290912A0223E0E3
+:100BA0008C3D920799F55FB7F894DE0115964EE0FB
+:100BB00020E030E061E2E42FF0E0609357008491A0
+:100BC00020FF03C082958F704F5F982F9F70892FF1
+:100BD000805D8A3308F0895F8C9311961C9211977F
+:100BE0002F5F3F4F12962431310529F75FBF8AE20C
+:100BF0008B8383E08C838091E800877F8093E8007B
+:100C0000CE0103966AE270E0E4DC11C060912B0231
+:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2
+:100C2000E800877F8093E80089819A812BDD80919D
+:100C3000E8008B778093E8002BC0803841F58091E5
+:100C4000E800877F8093E800809125028093F1007F
+:100C50008091E8008E778093E8006DDC19C08823CE
+:100C6000B1F490912902923098F48091E800877F46
+:100C70008093E800909325025EDC80912502882312
+:100C800011F483E001C084E08EBB2DDB01C028DBC2
+:100C90008091E80083FF0AC08091EB00806280931E
+:100CA000EB008091E800877F8093E800AC960FB658
+:100CB000F894DEBF0FBECDBFCF91DF911F91089595
+:100CC00008951F938EB3882361F01091E90010926C
+:100CD000E9008091E80083FF01C098DE177010934F
+:100CE000E9001F9108950895FC018EB3843021F529
+:100CF00087859089A189B2890097A105B105E1F0A6
+:100D000085818093E9008091E80082FF15C0809181
+:100D1000F200882319F42FEF3FEF04C08091F10017
+:100D2000282F30E08091F200882341F48091E80080
+:100D30008B778093E80002C02FEF3FEFC901089541
+:100D4000FC018EB3843011F587859089A189B28921
+:100D50000097A105B105D1F081818093E9008091D0
+:100D6000F2008823A9F09091E8008091E8008E7746
+:100D70008093E80095FD0CC0FDDB982F882349F493
+:100D80008091E8008E778093E80003C092E001C074
+:100D900090E0892F0895FC018EB3843051F487854B
+:100DA0009089A189B2890097A105B10511F0CF0101
+:100DB000C7CF08951F93FC01162F8EB38430D9F44A
+:100DC00087859089A189B2890097A105B10599F01D
+:100DD00081818093E9008091E80085FD08C08091C1
+:100DE000E8008E778093E800C5DB882329F4109310
+:100DF000F10080E001C082E01F9108950F931F93DE
+:100E0000CF93DF93EC010D96FC0189E0DF011D9289
+:100E10008A95E9F72A813B8109818C81882311F425
+:100E200010E001C014E0C90151DB182B1260802FC3
+:100E300061E8412F59DB882329F12E813F810D8103
+:100E40008885882311F410E001C014E0C9013EDB5D
+:100E5000182B1260802F60E8412F46DB882391F029
+:100E60002A853B8509858C85882311F410E001C013
+:100E700014E0C9012BDB182B1260802F61EC412F8D
+:100E800033DB01C080E0DF91CF911F910F91089576
+:100E9000CF93DF93EC018091E80083FF60C08881ED
+:100EA00090E020912B0230912C022817390709F08D
+:100EB00056C080912802813261F0823220F4803263
+:100EC00009F04DC019C0823269F1833209F047C080
+:100ED00038C080912702813A09F041C08091E80032
+:100EE000877F8093E800CE010F9667E070E071DBAA
+:100EF0008091E8008B7713C080912702813279F5C9
+:100F00008091E800877F8093E800CE010F9667E02C
+:100F100070E013DCCE013ED98091E8008E7780939B
+:100F2000E8001DC0809127028132C9F48091E80059
+:100F3000877F8093E800809129028D87CE01C8D9F0
+:100F40000DC080912702813251F48091E800877FA3
+:100F50008093E800CE0160912902C5DEECDADF91D2
+:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053
+:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749
+:100F800020F0A21BB30BE40BF50B661F771F881F25
+:100F9000991F1A9469F760957095809590959B01BB
+:0C0FA000AC01BD01CF010895F894FFCF13
+:100FAC0000034000000440000002080000000000A4
+:060FBC000000000000002F
+:103000004BC0000064C0000062C0000060C000004F
+:103010005EC000005CC000005AC0000058C0000044
+:1030200056C0000054C0000052C00000EEC40000B2
+:103030004EC000004CC000004AC0000048C0000064
+:1030400046C0000044C0000042C0000040C0000074
+:103050003EC000003CC000003AC0000038C0000084
+:1030600036C0000034C0000032C0000030C0000094
+:103070002EC000002CC000002AC0000028C00000A4
+:1030800026C0000024C0000022C0000020C00000B4
+:103090001EC000001CC0000011241FBECFEFD2E0F4
+:1030A000DEBFCDBF11E0A0E0B1E0EAEFFCE302C07B
+:1030B00005900D92AA33B107D9F711E0AAE3B1E068
+:1030C00001C01D92AB35B107E1F772D314C698CF9A
+:1030D000982F15C08091F200882371F48091E80048
+:1030E0008B7F8093E80003C08EB3882351F08091DA
+:1030F000E80082FFF9CF02C08091F100915099233E
+:1031000049F7089520914A01309149018091480181
+:103110009091470180933F0190934001C9018093B2
+:103120004101909342010895DF93CF9300D000D0E6
+:1031300000D0CDB7DEB780914501843009F45AC084
+:10314000853030F4813059F0833009F0D7C01FC08A
+:10315000853009F4A0C0863009F0D0C0C3C080918A
+:103160004601823008F0CAC0CDDF80914601882335
+:1031700061F480913F019091400123E0FC01209394
+:103180005700E89507B600FCFDCF85E008C08091A8
+:103190004601882311F0823029F4B4DF89E080935E
+:1031A0000101ACC0813009F0A9C020E030E040E06E
+:1031B00050E0F90184918F3F81F0CA01AA27BB2713
+:1031C00080933E013093400120933F018AE0809339
+:1031D000010185E080933B0191C02F5F3F4F4F4F2E
+:1031E0005F4F2030F0E33F07F0E04F07F0E05F076C
+:1031F00001F784C080914601833051F581E08093CE
+:103200003A0180914B0190914C01892B71F0809192
+:103210004701813009F072C080914A0190914901C3
+:1032200090933D0180933C0169C0809147018823C0
+:1032300061F42CE088E190E00FB6F894A8958093B3
+:1032400060000FBE2093600059C01092000156C06C
+:10325000882309F053C0809147018F3F09F04EC089
+:10326000E0E0F0E093E085E090935700E89507B642
+:1032700000FCFDCF80935700E89507B600FCFDCF1A
+:10328000E058FF4F20E3E030F20771F781E18093CF
+:103290005700E89533C0DE011196E5E0F1E083E0E8
+:1032A00001900D928150E1F7DE011496E2E0F1E029
+:1032B00083E001900D928150E1F790914701809158
+:1032C0004601882329F4FE01E90FF11D818107C021
+:1032D0008130A1F4FE01BC97E90FF11D808180933C
+:1032E00050010CC080914601833041F48091470128
+:1032F000882321F48091480180933E0126960FB6E1
+:10330000F894DEBF0FBECDBFCF91DF9108952F920D
+:103310003F924F925F926F927F929F92AF92BF9235
+:10332000CF92DF92EF92FF920F931F93CF93DF9391
+:103330008091590190915A0190934C0180934B01D7
+:1033400080914D01882351F080914D0181508093EF
+:103350004D0180914D01882309F45D9A80914E01C1
+:10336000882351F080914E01815080934E018091CD
+:103370004E01882309F45C9A80915401833009F44A
+:10338000B2C1843030F4813071F0823009F0E3C191
+:1033900011C1853009F4C5C1853008F4BAC1863041
+:1033A00009F0D9C1CDC15C9883E080934E01809132
+:1033B000E800877F8093E80080913A01882329F014
+:1033C000B3DE5D9A5C9A10923A0120914B013091E4
+:1033D0004C012115310529F42AC08EB3882309F444
+:1033E000BAC18091E80082FFF8CF8091F10080930C
+:1033F00045012150304030934C0120934B01E6E4CD
+:10340000F1E00CC08091F10081932150304081E0C7
+:10341000EB34F80719F43183208308C08091F2005F
+:10342000882381F730934C0120934B017DDE8091FE
+:103430000101853009F0BAC080914B0190914C0197
+:10344000892B21F482E080930101B0C08AE140DE43
+:1034500080913F018F713CDEC0914101D0914201CA
+:1034600020913F013091400121968E01021B130BE8
+:10347000219780914601882309F093C01801369462
+:103480002794C901A0913E01B0E09C01AD0162E02A
+:10349000E62EF12C012D112DE20EF31E041F151F37
+:1034A00059016A0190E099249394B5E0A3E048C0E3
+:1034B0008091F200882371F48091E8008B7F8093E3
+:1034C000E80004C08EB3882309F445C18091E80068
+:1034D00082FFF8CF0894210831088091F100682F0D
+:1034E0008091F100782FF5010B0190925700E8953B
+:1034F00011249F5F903419F021143104A1F4F901D3
+:10350000B0935700E89507B600FCFDCF21143104B5
+:1035100051F0F701A0935700E89507B600FCFDCFE6
+:10352000A801970190E042E0442E512C612C712CAF
+:10353000E40CF51C061D171DA40CB51CC61CD71CDD
+:103540002114310409F0B4CFD0934001C0933F015E
+:1035500081E180935700E89527C08091F20088238D
+:1035600071F48091E8008B7F8093E80004C08EB3F3
+:10357000882309F4F0C08091E80082FFF8CF6091C1
+:10358000F10080913F0190914001A7D380913F01CC
+:103590009091400101969093400180933F0101502A
+:1035A000104001151105C9F680E192DD8091E80017
+:1035B0008B7FC3C08091E800877F8093E8005D988F
+:1035C00083E080934D0104C08EB3882309F4C3C007
+:1035D0008091E80080FFF8CF80910101893091F05F
+:1035E0008A3069F480914601813049F480913F012D
+:1035F000909140018093F1009093F1009BC08091E5
+:10360000500196C0609141017091420120913F01AB
+:10361000309140016F5F7F4F7B01E21AF30A6150E6
+:10362000704080914601882389F58701169507959A
+:10363000C901A0913E01B0E09C01AD011FC0809185
+:10364000F200803271F48091E8008E7F8093E80070
+:1036500004C08EB3882309F47EC08091E80080FF07
+:10366000F8CFF901859194918093F1009093F10046
+:10367000015010402E5F3F4F4F4F5F4F0115110516
+:10368000F1F67093400160933F0129C0823039F513
+:1036900023C08091F200803271F48091E8008E7F27
+:1036A0008093E80004C08EB3882309F454C080914D
+:1036B000E80080FFF8CF00913F0110914001C80160
+:1036C00004D38093F1000F5F1F4F109340010093CC
+:1036D0003F010894E108F108E114F104D1F682E019
+:1036E0008093010127C08091E800877F8093E800E4
+:1036F00080913B018093F1001092F1001092F10053
+:103700001092F100809101018093F1001092F1007C
+:1037100011C08091E800877F8093E80010923B0100
+:1037200019C08091E800877F8093E80080910101B3
+:103730008093F1008091E8008E7F8093E8000AC0BA
+:103740008091E800877F8093E8005D9A5C9A82E030
+:103750008093010187D0DF91CF911F910F91FF904E
+:10376000EF90DF90CF90BF90AF909F907F906F9041
+:103770005F904F903F902F9008952BD181E085BFAF
+:1037800015BE089584B7877F84BF88E10FB6F8948B
+:1037900080936000109260000FBE81E085BF82E0E0
+:1037A00085BF8AB180638AB98BB180638BB90CC144
+:1037B000E9DF789401C080D2809100018823D9F795
+:1037C00080913A018823B9F7D8DFE0913C01F0916C
+:1037D0003D010995FA01923071F0933089F09130F2
+:1037E00029F488E091E022E130E019C080E090E027
+:1037F00020E030E014C08AE191E02BE130E00FC01E
+:10380000882339F480913501282F30E085E391E059
+:1038100006C080914301282F30E083E491E091833A
+:103820008083C90108958091EB0081608093EB0053
+:103830001092ED006093EC004093ED008091EE005B
+:10384000881F8827881F08951092F4001092F000B6
+:103850001092E8001092ED00EBEEF0E080818E7F98
+:10386000808308958091530188238CF403C08EB324
+:103870008823B1F08091E80082FFF9CF8091E800C1
+:103880008B7F8093E80008958EB3882349F0809160
+:10389000E80080FFF9CF8091E8008E7F8093E800F8
+:1038A00008959C014091590150915A0146175707BC
+:1038B00018F4F90120E038C06115710511F0AB0171
+:1038C000F8CF8091E8008E7F8093E80040E050E0E0
+:1038D000F0CF8091E80083FF02C081E008958091DD
+:1038E000E80082FD2DC08EB3882381F18EB3853030
+:1038F00079F18091E80080FF17C09091F20006C036
+:1039000081918093F100415050409F5F41155105D6
+:1039100011F09032A8F320E0903209F421E0809178
+:10392000E8008E7F8093E8004115510591F622232F
+:1039300081F606C08EB3882349F08EB3853041F0FE
+:103940008091E80082FFF6CF80E0089582E008953C
+:1039500083E0089554D056D01EBA1092510184E0ED
+:1039600089BD89B5826089BD09B400FEFDCF809113
+:10397000D800982F9F779093D80080688093D800C4
+:10398000809163008E7F809363008091D8008F7D4B
+:103990008093D8008091E0008E7F8093E00080913A
+:1039A000E1008E7F8093E1008091E200816080934E
+:1039B000E2008091E100877F8093E1008091E20046
+:1039C00088608093E2000895C5DF81E08093520112
+:1039D0000895C0DFE0EEF0E0808181608083E8ED53
+:1039E000F0E080818F7780830AD00CD019BCE3E6A9
+:1039F000F0E08081816080831092520108951092DE
+:103A0000E20008951092E10008951F920F920FB600
+:103A10000F9211242F933F934F935F936F937F9354
+:103A20008F939F93AF93BF93EF93FF938091E100A8
+:103A300080FF1BC08091E20080FF17C08091E100F1
+:103A40008E7F8093E1008091E2008E7F8093E20080
+:103A50008091E20080618093E2008091D8008062D2
+:103A60008093D80019BC1EBA26D18091E10084FF52
+:103A700029C08091E20084FF25C084E089BD89B51A
+:103A8000826089BD09B400FEFDCF8091D8008F7D92
+:103A90008093D8008091E1008F7E8093E100809137
+:103AA000E2008F7E8093E2008091E200816080934B
+:103AB000E20080915101882311F481E001C084E08B
+:103AC0008EBBF9D08091E10083FF22C08091E2009B
+:103AD00083FF1EC08091E100877F8093E10082E038
+:103AE0008EBB109251018091E1008E7F8093E100A6
+:103AF0008091E2008E7F8093E2008091E2008061FD
+:103B00008093E200A1DE80E060E042E28CDED3D070
+:103B10008091E10082FF0AC08091E20082FF06C02E
+:103B20008091E1008B7F8093E100C5D0FF91EF9100
+:103B3000BF91AF919F918F917F916F915F914F91C5
+:103B40003F912F910F900FBE0F901F9018951F93CC
+:103B5000DF93CF9300D0CDB7DEB7E3E5F1E08091FE
+:103B6000F100819381E0EB35F807C9F7909153019B
+:103B700080915401853011F1863040F48130B9F0E4
+:103B8000813070F0833009F081C011C0883009F4B1
+:103B900053C0893009F462C0863009F077C02DC067
+:103BA000903809F474C0923809F070C070C099233D
+:103BB00009F46DC0923009F069C069C0992309F019
+:103BC00065C0109155018091E800877F8093E800DF
+:103BD00049DE04C08EB3882309F459C08091E800FF
+:103BE00080FFF8CF812F8F7711F492E001C093E02E
+:103BF0009EBB80688093E3004AC09058923008F0E2
+:103C000045C0809155019091560160915701AE01D8
+:103C10004F5F5F4FDFDDBC010097C9F18091E80085
+:103C2000877F8093E80089819A813BDE8091E8005C
+:103C30008B7F8093E8002BC0903841F58091E8009D
+:103C4000877F8093E800809151018093F1008091FB
+:103C5000E8008E7F8093E80005DE19C09923B1F457
+:103C600090915501923098F48091E800877F80937D
+:103C7000E80090935101F6DD80915101882311F401
+:103C800083E001C084E08EBB16D001C040DB809190
+:103C9000E80083FF0AC08091EB0080628093EB0014
+:103CA0008091E800877F8093E8000F900F90CF917C
+:103CB000DF911F91089508958EB3882329F0809194
+:103CC000E80083FF01C043CF0895F999FECF92BD6C
+:103CD00081BDF89A992780B50895262FF999FECFCE
+:103CE0001FBA92BD81BD20BD0FB6F894FA9AF99A19
+:0A3CF0000FBE01960895F894FFCF6F
+:103CFA0001021E948920DCFB120110010000002041
+:103D0A00EB03EF2F00000001000109021B00010173
+:103D1A000080320904000000FE01020009210300AC
+:0A3D2A0000000C000104030904006E
+:0400000300003000C9
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex b/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex
new file mode 100644
index 0000000..b47bdf6
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex
@@ -0,0 +1,467 @@
+:1000000090C00000A9C00000A7C00000A5C000006B
+:10001000A3C00000A1C000009FC000009DC0000060
+:100020009BC0000099C0000097C0000048C40000B9
+:100030000CC4000091C000008FC000008DC0000003
+:100040008BC0000089C0000087C0000085C0000090
+:1000500083C0000081C000007FC0000002C100001A
+:100060007BC0000079C0000077C0000075C00000B0
+:1000700073C0000071C000006FC000006DC00000C0
+:100080006BC0000069C0000067C0000065C00000D0
+:1000900063C0000061C000001201100102000008EE
+:1000A0004123440001000102DC0109023E0002017B
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:10012000000011241FBECFEFD2E0DEBFCDBF11E033
+:10013000A0E0B1E0ECEAFFE002C005900D92A6312C
+:10014000B107D9F712E0A6E1B1E001C01D92AF32CC
+:10015000B107E1F7F1D028C753CF9C01DC01AE57BE
+:10016000BF4FED91FC91119741911196FC93EE9345
+:1001700080589F4FE817F90711F42D933C939FB7D0
+:10018000F894F901EC57FF4F8081815080839FBF25
+:10019000842F0895DF92EF92FF920F931F93FC013B
+:1001A0008489813019F0823021F405C040E3D42ED7
+:1001B00004C0DD2402C030E2D32E8389823011F4E2
+:1001C00088E0D82A8589873031F0883031F0863050
+:1001D00031F482E003C084E001C086E0D82A1092A6
+:1001E000C9001092C8001092CA00E784F088018903
+:1001F000128980E0E81681EEF80680E0080780E0CA
+:10020000180719F420E130E00FC0C801B701969536
+:1002100087957795679560587B47814E9F4FA801DA
+:100220009701A0D6215030403093CD002093CC00D0
+:10023000D092CA0080E0E81681EEF80680E0080758
+:1002400080E0180711F082E001C080E08093C800D0
+:1002500088E98093C9001F910F91FF90EF90DF9084
+:1002600008951F920F920FB60F9211242F938F9320
+:100270009F93EF93FF939091CE008EB38430F1F46F
+:10028000E0919901F0919A019083E0919901F091A8
+:100290009A01CF01019690939A018093990189590F
+:1002A000914021F489E191E0928381839FB7F89492
+:1002B00080919D018F5F80939D019FBFFF91EF9182
+:1002C0009F918F912F910F900FBE0F901F901895B7
+:1002D000FC01858580FF02C05F9808955F9A0895AC
+:1002E00080E091E0D5C580E091E088C584B7877F44
+:1002F00084BF28E10FB6F89420936000109260004C
+:100300000FBE87E690E09093CD008093CC0086E00E
+:100310008093CA001092C8002093C900539A5A9A39
+:100320008AB180638AB98BB180638BB983D284E050
+:1003300085BD5F9A579A08950F931F93CF93DF93CC
+:10034000D5DF2FB7F8948EE991E090931F02809348
+:100350001E0290932102809320022FBF2FB7F894A2
+:1003600089E191E090939A018093990190939C0187
+:1003700080939B012FBF7894CEE9D1E003E08FB743
+:10038000F894909122028FBF903809F180E091E0BB
+:10039000ABD497FD1CC0E0911E02F0911F02808338
+:1003A000E0911E02F0911F02CF01019690931F026F
+:1003B00080931E028E51924011F4D283C1839FB765
+:1003C000F894809122028F5F809322029FBF8FB7A3
+:1003D000F89410919D018FBFA89902C0113678F151
+:1003E000A89A80919D01882361F05D980093160181
+:1003F00008C089E191E0B1DE682F80E091E0DAD4B5
+:1004000011501123B1F780911601882351F080918A
+:10041000160181508093160180911601882309F4FA
+:100420005D9A80911701882351F0809117018150C6
+:100430008093170180911701882309F45C9A8FB784
+:10044000F894909122028FBF992369F08EE991E090
+:1004500084DE982F8091C80085FFFCCF9093CE005A
+:100460005C980093170180E091E095D42AD487CF5F
+:10047000DA01923049F0933061F09130F9F4E8E913
+:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6
+:1004900019C0813049F0813018F0823079F408C0F9
+:1004A000E8EEF0E0849107C0ECEEF0E0849103C048
+:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9
+:1004C00020E030E0ED93FC93C901089528E030E08E
+:1004D00040E003C04F5F220F331F28173907D0F3C6
+:1004E000842F8295807F08958093E9008091EB00AE
+:1004F00081608093EB001092ED006093EC004093DC
+:10050000ED008091EE00881F8827881F08951092C3
+:10051000F40090E09093E9001092F0001092E8004F
+:100520001092ED008091EB008E7F8093EB009F5F37
+:10053000953081F708958091270288238CF403C0B9
+:100540008EB38823B1F08091E80082FFF9CF8091CB
+:10055000E8008B778093E80008958EB3882349F0F4
+:100560008091E80080FFF9CF8091E8008E7780933A
+:10057000E800089594E68091EC0080FF05C080912A
+:10058000E80080FF05C023C08091E80082FD1FC005
+:100590008EB3882311F482E008958EB3853011F470
+:1005A00083E008958091EB0085FF02C081E008950B
+:1005B0008091E10082FFDFCF8091E1008B7F80930B
+:1005C000E100992311F484E008959150D4CF80E0A4
+:1005D00008959C0140912D0250912E024617570715
+:1005E00018F4F90120E038C06115710511F0AB0174
+:1005F000F8CF8091E8008E778093E80040E050E0EB
+:10060000F0CF8091E80083FF02C081E008958091DF
+:10061000E80082FD2DC08EB3882381F18EB3853032
+:1006200079F18091E80080FF17C09091F20006C038
+:1006300081918093F100415050409F5F41155105D9
+:1006400011F09830A8F320E0983009F421E080916F
+:10065000E8008E778093E8004115510591F622233A
+:1006600081F606C08EB3882349F08EB3853041F001
+:100670008091E80082FFF6CF80E0089582E008953F
+:1006800083E008959C0140912D0250912E0246175F
+:10069000570710F490E03BC06115710511F0AB01F4
+:1006A000F9CF8091E8008E778093E80040E050E039
+:1006B000F1CF8091E80083FF02C081E0089580912E
+:1006C000E80082FD30C08EB3882399F18EB3853067
+:1006D00091F18091E80080FF1AC08091F20009C07A
+:1006E000F9012F5F3F4FE491E093F10041505040FA
+:1006F0008F5F4115510511F0883090F390E08830FC
+:1007000009F491E08091E8008E778093E80041152C
+:10071000510579F6992369F606C08EB3882349F00E
+:100720008EB3853041F08091E80082FFF6CF80E003
+:10073000089582E0089583E008959C016115710594
+:1007400029F48091E8008B778093E800F90120C0BC
+:100750008091E80083FF02C081E008958EB3882372
+:1007600039F18EB3853031F18091E80082FFF0CF0E
+:1007700006C08091F10081936150704021F080911A
+:10078000F2008823B1F78091E8008B778093E8002E
+:1007900061157105E9F606C08EB3882349F08EB362
+:1007A000853041F08091E80080FFF6CF80E0089529
+:1007B00082E0089583E0089542D044D01EBA10929A
+:1007C0002502109224021092230284E089BD89B58B
+:1007D000826089BD09B400FEFDCF8091D800982FBA
+:1007E0009F779093D80080688093D80080916300B1
+:1007F0008E7F809363008091D8008F7D8093D80096
+:100800008091E0008E7F8093E0008091E1008E7FF8
+:100810008093E1008091E20081608093E20080910A
+:10082000E100877F8093E1008091E20088608093FF
+:10083000E2000895C1DF81E08093260208951092BE
+:10084000E20008951092E10008951F920F920FB6F2
+:100850000F9211241F932F933F934F935F936F93A6
+:100860007F938F939F93AF93BF93EF93FF93E9EEA3
+:10087000F0E0108117701082E0EFF0E08081877F58
+:1008800080837894C3D0F894A9EEB0E01C92E0EF96
+:10089000F0E08081886080831C93FF91EF91BF918D
+:1008A000AF919F918F917F916F915F914F913F9108
+:1008B0002F911F910F900FBE0F901F9018951F92B0
+:1008C0000F920FB60F9211242F933F934F935F9384
+:1008D0006F937F938F939F93AF93BF93EF93FF9308
+:1008E0008091E10080FF1BC08091E20080FF17C073
+:1008F0008091E1008E7F8093E1008091E2008E7F05
+:100900008093E2008091E20080618093E200809118
+:10091000D80080628093D80019BC1EBAD1D18091D2
+:10092000E10084FF29C08091E20084FF25C084E0BB
+:1009300089BD89B5826089BD09B400FEFDCF809173
+:10094000D8008F7D8093D8008091E1008F7E8093C6
+:10095000E1008091E2008F7E8093E2008091E200CE
+:1009600081608093E20080912502882311F481E068
+:1009700001C084E08EBBA4D18091E10083FF27C039
+:100980008091E20083FF23C08091E100877F809304
+:10099000E10082E08EBB109225028091E1008E7F03
+:1009A0008093E1008091E2008E7F8093E20080914D
+:1009B000E20080618093E200AADD80E060E042E036
+:1009C00093DD8091F00088608093F00079D1809170
+:1009D000E10082FF0AC08091E20082FF06C08091A0
+:1009E000E1008B7F8093E1006BD1FF91EF91BF918C
+:1009F000AF919F918F917F916F915F914F913F91B7
+:100A00002F910F900FBE0F901F9018951F93DF939B
+:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D
+:100A2000CDBFE7E2F2E08091F100819322E0EF3266
+:100A3000F207C9F78091270230912802353009F476
+:100A400087C0363040F43130C9F1313070F0333086
+:100A500009F01DC133C0383009F4EFC0393009F452
+:100A6000FEC0363009F013C192C0803821F08238C0
+:100A700009F00DC108C090912302809124028823BF
+:100A800099F0926011C080912B0287708093E900E9
+:100A90008091EB0090E025E0969587952A95E1F707
+:100AA000982F91701092E9008091E800877F8093E1
+:100AB000E8009093F1001092F100CAC0882319F069
+:100AC000823009F0E4C090E08F719070009721F0BF
+:100AD000029709F0DDC00CC080912902813009F035
+:100AE000D7C010922402333069F5809324022AC0C3
+:100AF00080912902882331F520912B02277009F477
+:100B0000C7C02093E9008091EB0080FFC1C0333063
+:100B100021F48091EB00806213C08091EB00806132
+:100B20008093EB0081E090E002C0880F991F2A9526
+:100B3000E2F78093EA001092EA008091EB0088606F
+:100B40008093EB001092E9008091E800877F83C0DA
+:100B5000882309F09CC0109129028091E800877FCA
+:100B60008093E800E8DC04C08EB3882309F490C0C9
+:100B70008091E80080FFF8CF812F8F7711F492E009
+:100B800001C093E09EBB80688093E30081C08058E1
+:100B9000823008F07CC08091290290912A0223E0E3
+:100BA0008C3D920799F55FB7F894DE0115964EE0FB
+:100BB00020E030E061E2E42FF0E0609357008491A0
+:100BC00020FF03C082958F704F5F982F9F70892FF1
+:100BD000805D8A3308F0895F8C9311961C9211977F
+:100BE0002F5F3F4F12962431310529F75FBF8AE20C
+:100BF0008B8383E08C838091E800877F8093E8007B
+:100C0000CE0103966AE270E0E4DC11C060912B0231
+:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2
+:100C2000E800877F8093E80089819A812BDD80919D
+:100C3000E8008B778093E8002BC0803841F58091E5
+:100C4000E800877F8093E800809125028093F1007F
+:100C50008091E8008E778093E8006DDC19C08823CE
+:100C6000B1F490912902923098F48091E800877F46
+:100C70008093E800909325025EDC80912502882312
+:100C800011F483E001C084E08EBB2DDB01C028DBC2
+:100C90008091E80083FF0AC08091EB00806280931E
+:100CA000EB008091E800877F8093E800AC960FB658
+:100CB000F894DEBF0FBECDBFCF91DF911F91089595
+:100CC00008951F938EB3882361F01091E90010926C
+:100CD000E9008091E80083FF01C098DE177010934F
+:100CE000E9001F9108950895FC018EB3843021F529
+:100CF00087859089A189B2890097A105B105E1F0A6
+:100D000085818093E9008091E80082FF15C0809181
+:100D1000F200882319F42FEF3FEF04C08091F10017
+:100D2000282F30E08091F200882341F48091E80080
+:100D30008B778093E80002C02FEF3FEFC901089541
+:100D4000FC018EB3843011F587859089A189B28921
+:100D50000097A105B105D1F081818093E9008091D0
+:100D6000F2008823A9F09091E8008091E8008E7746
+:100D70008093E80095FD0CC0FDDB982F882349F493
+:100D80008091E8008E778093E80003C092E001C074
+:100D900090E0892F0895FC018EB3843051F487854B
+:100DA0009089A189B2890097A105B10511F0CF0101
+:100DB000C7CF08951F93FC01162F8EB38430D9F44A
+:100DC00087859089A189B2890097A105B10599F01D
+:100DD00081818093E9008091E80085FD08C08091C1
+:100DE000E8008E778093E800C5DB882329F4109310
+:100DF000F10080E001C082E01F9108950F931F93DE
+:100E0000CF93DF93EC010D96FC0189E0DF011D9289
+:100E10008A95E9F72A813B8109818C81882311F425
+:100E200010E001C014E0C90151DB182B1260802FC3
+:100E300061E8412F59DB882329F12E813F810D8103
+:100E40008885882311F410E001C014E0C9013EDB5D
+:100E5000182B1260802F60E8412F46DB882391F029
+:100E60002A853B8509858C85882311F410E001C013
+:100E700014E0C9012BDB182B1260802F61EC412F8D
+:100E800033DB01C080E0DF91CF911F910F91089576
+:100E9000CF93DF93EC018091E80083FF60C08881ED
+:100EA00090E020912B0230912C022817390709F08D
+:100EB00056C080912802813261F0823220F4803263
+:100EC00009F04DC019C0823269F1833209F047C080
+:100ED00038C080912702813A09F041C08091E80032
+:100EE000877F8093E800CE010F9667E070E071DBAA
+:100EF0008091E8008B7713C080912702813279F5C9
+:100F00008091E800877F8093E800CE010F9667E02C
+:100F100070E013DCCE013ED98091E8008E7780939B
+:100F2000E8001DC0809127028132C9F48091E80059
+:100F3000877F8093E800809129028D87CE01C8D9F0
+:100F40000DC080912702813251F48091E800877FA3
+:100F50008093E800CE0160912902C5DEECDADF91D2
+:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053
+:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749
+:100F800020F0A21BB30BE40BF50B661F771F881F25
+:100F9000991F1A9469F760957095809590959B01BB
+:0C0FA000AC01BD01CF010895F894FFCF13
+:100FAC0000034000000440000002080000000000A4
+:060FBC000000000000002F
+:103000004BC0000064C0000062C0000060C000004F
+:103010005EC000005CC000005AC0000058C0000044
+:1030200056C0000054C0000052C00000EEC40000B2
+:103030004EC000004CC000004AC0000048C0000064
+:1030400046C0000044C0000042C0000040C0000074
+:103050003EC000003CC000003AC0000038C0000084
+:1030600036C0000034C0000032C0000030C0000094
+:103070002EC000002CC000002AC0000028C00000A4
+:1030800026C0000024C0000022C0000020C00000B4
+:103090001EC000001CC0000011241FBECFEFD2E0F4
+:1030A000DEBFCDBF11E0A0E0B1E0EAEFFCE302C07B
+:1030B00005900D92AA33B107D9F711E0AAE3B1E068
+:1030C00001C01D92AB35B107E1F772D314C698CF9A
+:1030D000982F15C08091F200882371F48091E80048
+:1030E0008B7F8093E80003C08EB3882351F08091DA
+:1030F000E80082FFF9CF02C08091F100915099233E
+:1031000049F7089520914A01309149018091480181
+:103110009091470180933F0190934001C9018093B2
+:103120004101909342010895DF93CF9300D000D0E6
+:1031300000D0CDB7DEB780914501843009F45AC084
+:10314000853030F4813059F0833009F0D7C01FC08A
+:10315000853009F4A0C0863009F0D0C0C3C080918A
+:103160004601823008F0CAC0CDDF80914601882335
+:1031700061F480913F019091400123E0FC01209394
+:103180005700E89507B600FCFDCF85E008C08091A8
+:103190004601882311F0823029F4B4DF89E080935E
+:1031A0000101ACC0813009F0A9C020E030E040E06E
+:1031B00050E0F90184918F3F81F0CA01AA27BB2713
+:1031C00080933E013093400120933F018AE0809339
+:1031D000010185E080933B0191C02F5F3F4F4F4F2E
+:1031E0005F4F2030F0E33F07F0E04F07F0E05F076C
+:1031F00001F784C080914601833051F581E08093CE
+:103200003A0180914B0190914C01892B71F0809192
+:103210004701813009F072C080914A0190914901C3
+:1032200090933D0180933C0169C0809147018823C0
+:1032300061F42CE088E190E00FB6F894A8958093B3
+:1032400060000FBE2093600059C01092000156C06C
+:10325000882309F053C0809147018F3F09F04EC089
+:10326000E0E0F0E093E085E090935700E89507B642
+:1032700000FCFDCF80935700E89507B600FCFDCF1A
+:10328000E058FF4F20E3E030F20771F781E18093CF
+:103290005700E89533C0DE011196E5E0F1E083E0E8
+:1032A00001900D928150E1F7DE011496E2E0F1E029
+:1032B00083E001900D928150E1F790914701809158
+:1032C0004601882329F4FE01E90FF11D818107C021
+:1032D0008130A1F4FE01BC97E90FF11D808180933C
+:1032E00050010CC080914601833041F48091470128
+:1032F000882321F48091480180933E0126960FB6E1
+:10330000F894DEBF0FBECDBFCF91DF9108952F920D
+:103310003F924F925F926F927F929F92AF92BF9235
+:10332000CF92DF92EF92FF920F931F93CF93DF9391
+:103330008091590190915A0190934C0180934B01D7
+:1033400080914D01882351F080914D0181508093EF
+:103350004D0180914D01882309F45D9A80914E01C1
+:10336000882351F080914E01815080934E018091CD
+:103370004E01882309F45C9A80915401833009F44A
+:10338000B2C1843030F4813071F0823009F0E3C191
+:1033900011C1853009F4C5C1853008F4BAC1863041
+:1033A00009F0D9C1CDC15C9883E080934E01809132
+:1033B000E800877F8093E80080913A01882329F014
+:1033C000B3DE5D9A5C9A10923A0120914B013091E4
+:1033D0004C012115310529F42AC08EB3882309F444
+:1033E000BAC18091E80082FFF8CF8091F10080930C
+:1033F00045012150304030934C0120934B01E6E4CD
+:10340000F1E00CC08091F10081932150304081E0C7
+:10341000EB34F80719F43183208308C08091F2005F
+:10342000882381F730934C0120934B017DDE8091FE
+:103430000101853009F0BAC080914B0190914C0197
+:10344000892B21F482E080930101B0C08AE140DE43
+:1034500080913F018F713CDEC0914101D0914201CA
+:1034600020913F013091400121968E01021B130BE8
+:10347000219780914601882309F093C01801369462
+:103480002794C901A0913E01B0E09C01AD0162E02A
+:10349000E62EF12C012D112DE20EF31E041F151F37
+:1034A00059016A0190E099249394B5E0A3E048C0E3
+:1034B0008091F200882371F48091E8008B7F8093E3
+:1034C000E80004C08EB3882309F445C18091E80068
+:1034D00082FFF8CF0894210831088091F100682F0D
+:1034E0008091F100782FF5010B0190925700E8953B
+:1034F00011249F5F903419F021143104A1F4F901D3
+:10350000B0935700E89507B600FCFDCF21143104B5
+:1035100051F0F701A0935700E89507B600FCFDCFE6
+:10352000A801970190E042E0442E512C612C712CAF
+:10353000E40CF51C061D171DA40CB51CC61CD71CDD
+:103540002114310409F0B4CFD0934001C0933F015E
+:1035500081E180935700E89527C08091F20088238D
+:1035600071F48091E8008B7F8093E80004C08EB3F3
+:10357000882309F4F0C08091E80082FFF8CF6091C1
+:10358000F10080913F0190914001A7D380913F01CC
+:103590009091400101969093400180933F0101502A
+:1035A000104001151105C9F680E192DD8091E80017
+:1035B0008B7FC3C08091E800877F8093E8005D988F
+:1035C00083E080934D0104C08EB3882309F4C3C007
+:1035D0008091E80080FFF8CF80910101893091F05F
+:1035E0008A3069F480914601813049F480913F012D
+:1035F000909140018093F1009093F1009BC08091E5
+:10360000500196C0609141017091420120913F01AB
+:10361000309140016F5F7F4F7B01E21AF30A6150E6
+:10362000704080914601882389F58701169507959A
+:10363000C901A0913E01B0E09C01AD011FC0809185
+:10364000F200803271F48091E8008E7F8093E80070
+:1036500004C08EB3882309F47EC08091E80080FF07
+:10366000F8CFF901859194918093F1009093F10046
+:10367000015010402E5F3F4F4F4F5F4F0115110516
+:10368000F1F67093400160933F0129C0823039F513
+:1036900023C08091F200803271F48091E8008E7F27
+:1036A0008093E80004C08EB3882309F454C080914D
+:1036B000E80080FFF8CF00913F0110914001C80160
+:1036C00004D38093F1000F5F1F4F109340010093CC
+:1036D0003F010894E108F108E114F104D1F682E019
+:1036E0008093010127C08091E800877F8093E800E4
+:1036F00080913B018093F1001092F1001092F10053
+:103700001092F100809101018093F1001092F1007C
+:1037100011C08091E800877F8093E80010923B0100
+:1037200019C08091E800877F8093E80080910101B3
+:103730008093F1008091E8008E7F8093E8000AC0BA
+:103740008091E800877F8093E8005D9A5C9A82E030
+:103750008093010187D0DF91CF911F910F91FF904E
+:10376000EF90DF90CF90BF90AF909F907F906F9041
+:103770005F904F903F902F9008952BD181E085BFAF
+:1037800015BE089584B7877F84BF88E10FB6F8948B
+:1037900080936000109260000FBE81E085BF82E0E0
+:1037A00085BF8AB180638AB98BB180638BB90CC144
+:1037B000E9DF789401C080D2809100018823D9F795
+:1037C00080913A018823B9F7D8DFE0913C01F0916C
+:1037D0003D010995FA01923071F0933089F09130F2
+:1037E00029F488E091E022E130E019C080E090E027
+:1037F00020E030E014C08AE191E02BE130E00FC01E
+:10380000882339F480913501282F30E085E391E059
+:1038100006C080914301282F30E083E491E091833A
+:103820008083C90108958091EB0081608093EB0053
+:103830001092ED006093EC004093ED008091EE005B
+:10384000881F8827881F08951092F4001092F000B6
+:103850001092E8001092ED00EBEEF0E080818E7F98
+:10386000808308958091530188238CF403C08EB324
+:103870008823B1F08091E80082FFF9CF8091E800C1
+:103880008B7F8093E80008958EB3882349F0809160
+:10389000E80080FFF9CF8091E8008E7F8093E800F8
+:1038A00008959C014091590150915A0146175707BC
+:1038B00018F4F90120E038C06115710511F0AB0171
+:1038C000F8CF8091E8008E7F8093E80040E050E0E0
+:1038D000F0CF8091E80083FF02C081E008958091DD
+:1038E000E80082FD2DC08EB3882381F18EB3853030
+:1038F00079F18091E80080FF17C09091F20006C036
+:1039000081918093F100415050409F5F41155105D6
+:1039100011F09032A8F320E0903209F421E0809178
+:10392000E8008E7F8093E8004115510591F622232F
+:1039300081F606C08EB3882349F08EB3853041F0FE
+:103940008091E80082FFF6CF80E0089582E008953C
+:1039500083E0089554D056D01EBA1092510184E0ED
+:1039600089BD89B5826089BD09B400FEFDCF809113
+:10397000D800982F9F779093D80080688093D800C4
+:10398000809163008E7F809363008091D8008F7D4B
+:103990008093D8008091E0008E7F8093E00080913A
+:1039A000E1008E7F8093E1008091E200816080934E
+:1039B000E2008091E100877F8093E1008091E20046
+:1039C00088608093E2000895C5DF81E08093520112
+:1039D0000895C0DFE0EEF0E0808181608083E8ED53
+:1039E000F0E080818F7780830AD00CD019BCE3E6A9
+:1039F000F0E08081816080831092520108951092DE
+:103A0000E20008951092E10008951F920F920FB600
+:103A10000F9211242F933F934F935F936F937F9354
+:103A20008F939F93AF93BF93EF93FF938091E100A8
+:103A300080FF1BC08091E20080FF17C08091E100F1
+:103A40008E7F8093E1008091E2008E7F8093E20080
+:103A50008091E20080618093E2008091D8008062D2
+:103A60008093D80019BC1EBA26D18091E10084FF52
+:103A700029C08091E20084FF25C084E089BD89B51A
+:103A8000826089BD09B400FEFDCF8091D8008F7D92
+:103A90008093D8008091E1008F7E8093E100809137
+:103AA000E2008F7E8093E2008091E200816080934B
+:103AB000E20080915101882311F481E001C084E08B
+:103AC0008EBBF9D08091E10083FF22C08091E2009B
+:103AD00083FF1EC08091E100877F8093E10082E038
+:103AE0008EBB109251018091E1008E7F8093E100A6
+:103AF0008091E2008E7F8093E2008091E2008061FD
+:103B00008093E200A1DE80E060E042E28CDED3D070
+:103B10008091E10082FF0AC08091E20082FF06C02E
+:103B20008091E1008B7F8093E100C5D0FF91EF9100
+:103B3000BF91AF919F918F917F916F915F914F91C5
+:103B40003F912F910F900FBE0F901F9018951F93CC
+:103B5000DF93CF9300D0CDB7DEB7E3E5F1E08091FE
+:103B6000F100819381E0EB35F807C9F7909153019B
+:103B700080915401853011F1863040F48130B9F0E4
+:103B8000813070F0833009F081C011C0883009F4B1
+:103B900053C0893009F462C0863009F077C02DC067
+:103BA000903809F474C0923809F070C070C099233D
+:103BB00009F46DC0923009F069C069C0992309F019
+:103BC00065C0109155018091E800877F8093E800DF
+:103BD00049DE04C08EB3882309F459C08091E800FF
+:103BE00080FFF8CF812F8F7711F492E001C093E02E
+:103BF0009EBB80688093E3004AC09058923008F0E2
+:103C000045C0809155019091560160915701AE01D8
+:103C10004F5F5F4FDFDDBC010097C9F18091E80085
+:103C2000877F8093E80089819A813BDE8091E8005C
+:103C30008B7F8093E8002BC0903841F58091E8009D
+:103C4000877F8093E800809151018093F1008091FB
+:103C5000E8008E7F8093E80005DE19C09923B1F457
+:103C600090915501923098F48091E800877F80937D
+:103C7000E80090935101F6DD80915101882311F401
+:103C800083E001C084E08EBB16D001C040DB809190
+:103C9000E80083FF0AC08091EB0080628093EB0014
+:103CA0008091E800877F8093E8000F900F90CF917C
+:103CB000DF911F91089508958EB3882329F0809194
+:103CC000E80083FF01C043CF0895F999FECF92BD6C
+:103CD00081BDF89A992780B50895262FF999FECFCE
+:103CE0001FBA92BD81BD20BD0FB6F894FA9AF99A19
+:0A3CF0000FBE01960895F894FFCF6F
+:103CFA0001021E948920DCFB120110010000002041
+:103D0A00EB03EF2F00000001000109021B00010173
+:103D1A000080320904000000FE01020009210300AC
+:0A3D2A0000000C000104030904006E
+:0400000300003000C9
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex b/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex
new file mode 100644
index 0000000..c2c7b2d
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex
@@ -0,0 +1,467 @@
+:1000000090C00000A9C00000A7C00000A5C000006B
+:10001000A3C00000A1C000009FC000009DC0000060
+:100020009BC0000099C0000097C0000048C40000B9
+:100030000CC4000091C000008FC000008DC0000003
+:100040008BC0000089C0000087C0000085C0000090
+:1000500083C0000081C000007FC0000002C100001A
+:100060007BC0000079C0000077C0000075C00000B0
+:1000700073C0000071C000006FC000006DC00000C0
+:100080006BC0000069C0000067C0000065C00000D0
+:1000900063C0000061C000001201100102000008EE
+:1000A0004123430001000102DC0109023E0002017C
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:10012000000011241FBECFEFD2E0DEBFCDBF11E033
+:10013000A0E0B1E0ECEAFFE002C005900D92A6312C
+:10014000B107D9F712E0A6E1B1E001C01D92AF32CC
+:10015000B107E1F7F1D028C753CF9C01DC01AE57BE
+:10016000BF4FED91FC91119741911196FC93EE9345
+:1001700080589F4FE817F90711F42D933C939FB7D0
+:10018000F894F901EC57FF4F8081815080839FBF25
+:10019000842F0895DF92EF92FF920F931F93FC013B
+:1001A0008489813019F0823021F405C040E3D42ED7
+:1001B00004C0DD2402C030E2D32E8389823011F4E2
+:1001C00088E0D82A8589873031F0883031F0863050
+:1001D00031F482E003C084E001C086E0D82A1092A6
+:1001E000C9001092C8001092CA00E784F088018903
+:1001F000128980E0E81681EEF80680E0080780E0CA
+:10020000180719F420E130E00FC0C801B701969536
+:1002100087957795679560587B47814E9F4FA801DA
+:100220009701A0D6215030403093CD002093CC00D0
+:10023000D092CA0080E0E81681EEF80680E0080758
+:1002400080E0180711F082E001C080E08093C800D0
+:1002500088E98093C9001F910F91FF90EF90DF9084
+:1002600008951F920F920FB60F9211242F938F9320
+:100270009F93EF93FF939091CE008EB38430F1F46F
+:10028000E0919901F0919A019083E0919901F091A8
+:100290009A01CF01019690939A018093990189590F
+:1002A000914021F489E191E0928381839FB7F89492
+:1002B00080919D018F5F80939D019FBFFF91EF9182
+:1002C0009F918F912F910F900FBE0F901F901895B7
+:1002D000FC01858580FF02C05F9808955F9A0895AC
+:1002E00080E091E0D5C580E091E088C584B7877F44
+:1002F00084BF28E10FB6F89420936000109260004C
+:100300000FBE87E690E09093CD008093CC0086E00E
+:100310008093CA001092C8002093C900539A5A9A39
+:100320008AB180638AB98BB180638BB983D284E050
+:1003300085BD5F9A579A08950F931F93CF93DF93CC
+:10034000D5DF2FB7F8948EE991E090931F02809348
+:100350001E0290932102809320022FBF2FB7F894A2
+:1003600089E191E090939A018093990190939C0187
+:1003700080939B012FBF7894CEE9D1E003E08FB743
+:10038000F894909122028FBF903809F180E091E0BB
+:10039000ABD497FD1CC0E0911E02F0911F02808338
+:1003A000E0911E02F0911F02CF01019690931F026F
+:1003B00080931E028E51924011F4D283C1839FB765
+:1003C000F894809122028F5F809322029FBF8FB7A3
+:1003D000F89410919D018FBFA89902C0113678F151
+:1003E000A89A80919D01882361F05D980093160181
+:1003F00008C089E191E0B1DE682F80E091E0DAD4B5
+:1004000011501123B1F780911601882351F080918A
+:10041000160181508093160180911601882309F4FA
+:100420005D9A80911701882351F0809117018150C6
+:100430008093170180911701882309F45C9A8FB784
+:10044000F894909122028FBF992369F08EE991E090
+:1004500084DE982F8091C80085FFFCCF9093CE005A
+:100460005C980093170180E091E095D42AD487CF5F
+:10047000DA01923049F0933061F09130F9F4E8E913
+:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6
+:1004900019C0813049F0813018F0823079F408C0F9
+:1004A000E8EEF0E0849107C0ECEEF0E0849103C048
+:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9
+:1004C00020E030E0ED93FC93C901089528E030E08E
+:1004D00040E003C04F5F220F331F28173907D0F3C6
+:1004E000842F8295807F08958093E9008091EB00AE
+:1004F00081608093EB001092ED006093EC004093DC
+:10050000ED008091EE00881F8827881F08951092C3
+:10051000F40090E09093E9001092F0001092E8004F
+:100520001092ED008091EB008E7F8093EB009F5F37
+:10053000953081F708958091270288238CF403C0B9
+:100540008EB38823B1F08091E80082FFF9CF8091CB
+:10055000E8008B778093E80008958EB3882349F0F4
+:100560008091E80080FFF9CF8091E8008E7780933A
+:10057000E800089594E68091EC0080FF05C080912A
+:10058000E80080FF05C023C08091E80082FD1FC005
+:100590008EB3882311F482E008958EB3853011F470
+:1005A00083E008958091EB0085FF02C081E008950B
+:1005B0008091E10082FFDFCF8091E1008B7F80930B
+:1005C000E100992311F484E008959150D4CF80E0A4
+:1005D00008959C0140912D0250912E024617570715
+:1005E00018F4F90120E038C06115710511F0AB0174
+:1005F000F8CF8091E8008E778093E80040E050E0EB
+:10060000F0CF8091E80083FF02C081E008958091DF
+:10061000E80082FD2DC08EB3882381F18EB3853032
+:1006200079F18091E80080FF17C09091F20006C038
+:1006300081918093F100415050409F5F41155105D9
+:1006400011F09830A8F320E0983009F421E080916F
+:10065000E8008E778093E8004115510591F622233A
+:1006600081F606C08EB3882349F08EB3853041F001
+:100670008091E80082FFF6CF80E0089582E008953F
+:1006800083E008959C0140912D0250912E0246175F
+:10069000570710F490E03BC06115710511F0AB01F4
+:1006A000F9CF8091E8008E778093E80040E050E039
+:1006B000F1CF8091E80083FF02C081E0089580912E
+:1006C000E80082FD30C08EB3882399F18EB3853067
+:1006D00091F18091E80080FF1AC08091F20009C07A
+:1006E000F9012F5F3F4FE491E093F10041505040FA
+:1006F0008F5F4115510511F0883090F390E08830FC
+:1007000009F491E08091E8008E778093E80041152C
+:10071000510579F6992369F606C08EB3882349F00E
+:100720008EB3853041F08091E80082FFF6CF80E003
+:10073000089582E0089583E008959C016115710594
+:1007400029F48091E8008B778093E800F90120C0BC
+:100750008091E80083FF02C081E008958EB3882372
+:1007600039F18EB3853031F18091E80082FFF0CF0E
+:1007700006C08091F10081936150704021F080911A
+:10078000F2008823B1F78091E8008B778093E8002E
+:1007900061157105E9F606C08EB3882349F08EB362
+:1007A000853041F08091E80080FFF6CF80E0089529
+:1007B00082E0089583E0089542D044D01EBA10929A
+:1007C0002502109224021092230284E089BD89B58B
+:1007D000826089BD09B400FEFDCF8091D800982FBA
+:1007E0009F779093D80080688093D80080916300B1
+:1007F0008E7F809363008091D8008F7D8093D80096
+:100800008091E0008E7F8093E0008091E1008E7FF8
+:100810008093E1008091E20081608093E20080910A
+:10082000E100877F8093E1008091E20088608093FF
+:10083000E2000895C1DF81E08093260208951092BE
+:10084000E20008951092E10008951F920F920FB6F2
+:100850000F9211241F932F933F934F935F936F93A6
+:100860007F938F939F93AF93BF93EF93FF93E9EEA3
+:10087000F0E0108117701082E0EFF0E08081877F58
+:1008800080837894C3D0F894A9EEB0E01C92E0EF96
+:10089000F0E08081886080831C93FF91EF91BF918D
+:1008A000AF919F918F917F916F915F914F913F9108
+:1008B0002F911F910F900FBE0F901F9018951F92B0
+:1008C0000F920FB60F9211242F933F934F935F9384
+:1008D0006F937F938F939F93AF93BF93EF93FF9308
+:1008E0008091E10080FF1BC08091E20080FF17C073
+:1008F0008091E1008E7F8093E1008091E2008E7F05
+:100900008093E2008091E20080618093E200809118
+:10091000D80080628093D80019BC1EBAD1D18091D2
+:10092000E10084FF29C08091E20084FF25C084E0BB
+:1009300089BD89B5826089BD09B400FEFDCF809173
+:10094000D8008F7D8093D8008091E1008F7E8093C6
+:10095000E1008091E2008F7E8093E2008091E200CE
+:1009600081608093E20080912502882311F481E068
+:1009700001C084E08EBBA4D18091E10083FF27C039
+:100980008091E20083FF23C08091E100877F809304
+:10099000E10082E08EBB109225028091E1008E7F03
+:1009A0008093E1008091E2008E7F8093E20080914D
+:1009B000E20080618093E200AADD80E060E042E036
+:1009C00093DD8091F00088608093F00079D1809170
+:1009D000E10082FF0AC08091E20082FF06C08091A0
+:1009E000E1008B7F8093E1006BD1FF91EF91BF918C
+:1009F000AF919F918F917F916F915F914F913F91B7
+:100A00002F910F900FBE0F901F9018951F93DF939B
+:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D
+:100A2000CDBFE7E2F2E08091F100819322E0EF3266
+:100A3000F207C9F78091270230912802353009F476
+:100A400087C0363040F43130C9F1313070F0333086
+:100A500009F01DC133C0383009F4EFC0393009F452
+:100A6000FEC0363009F013C192C0803821F08238C0
+:100A700009F00DC108C090912302809124028823BF
+:100A800099F0926011C080912B0287708093E900E9
+:100A90008091EB0090E025E0969587952A95E1F707
+:100AA000982F91701092E9008091E800877F8093E1
+:100AB000E8009093F1001092F100CAC0882319F069
+:100AC000823009F0E4C090E08F719070009721F0BF
+:100AD000029709F0DDC00CC080912902813009F035
+:100AE000D7C010922402333069F5809324022AC0C3
+:100AF00080912902882331F520912B02277009F477
+:100B0000C7C02093E9008091EB0080FFC1C0333063
+:100B100021F48091EB00806213C08091EB00806132
+:100B20008093EB0081E090E002C0880F991F2A9526
+:100B3000E2F78093EA001092EA008091EB0088606F
+:100B40008093EB001092E9008091E800877F83C0DA
+:100B5000882309F09CC0109129028091E800877FCA
+:100B60008093E800E8DC04C08EB3882309F490C0C9
+:100B70008091E80080FFF8CF812F8F7711F492E009
+:100B800001C093E09EBB80688093E30081C08058E1
+:100B9000823008F07CC08091290290912A0223E0E3
+:100BA0008C3D920799F55FB7F894DE0115964EE0FB
+:100BB00020E030E061E2E42FF0E0609357008491A0
+:100BC00020FF03C082958F704F5F982F9F70892FF1
+:100BD000805D8A3308F0895F8C9311961C9211977F
+:100BE0002F5F3F4F12962431310529F75FBF8AE20C
+:100BF0008B8383E08C838091E800877F8093E8007B
+:100C0000CE0103966AE270E0E4DC11C060912B0231
+:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2
+:100C2000E800877F8093E80089819A812BDD80919D
+:100C3000E8008B778093E8002BC0803841F58091E5
+:100C4000E800877F8093E800809125028093F1007F
+:100C50008091E8008E778093E8006DDC19C08823CE
+:100C6000B1F490912902923098F48091E800877F46
+:100C70008093E800909325025EDC80912502882312
+:100C800011F483E001C084E08EBB2DDB01C028DBC2
+:100C90008091E80083FF0AC08091EB00806280931E
+:100CA000EB008091E800877F8093E800AC960FB658
+:100CB000F894DEBF0FBECDBFCF91DF911F91089595
+:100CC00008951F938EB3882361F01091E90010926C
+:100CD000E9008091E80083FF01C098DE177010934F
+:100CE000E9001F9108950895FC018EB3843021F529
+:100CF00087859089A189B2890097A105B105E1F0A6
+:100D000085818093E9008091E80082FF15C0809181
+:100D1000F200882319F42FEF3FEF04C08091F10017
+:100D2000282F30E08091F200882341F48091E80080
+:100D30008B778093E80002C02FEF3FEFC901089541
+:100D4000FC018EB3843011F587859089A189B28921
+:100D50000097A105B105D1F081818093E9008091D0
+:100D6000F2008823A9F09091E8008091E8008E7746
+:100D70008093E80095FD0CC0FDDB982F882349F493
+:100D80008091E8008E778093E80003C092E001C074
+:100D900090E0892F0895FC018EB3843051F487854B
+:100DA0009089A189B2890097A105B10511F0CF0101
+:100DB000C7CF08951F93FC01162F8EB38430D9F44A
+:100DC00087859089A189B2890097A105B10599F01D
+:100DD00081818093E9008091E80085FD08C08091C1
+:100DE000E8008E778093E800C5DB882329F4109310
+:100DF000F10080E001C082E01F9108950F931F93DE
+:100E0000CF93DF93EC010D96FC0189E0DF011D9289
+:100E10008A95E9F72A813B8109818C81882311F425
+:100E200010E001C014E0C90151DB182B1260802FC3
+:100E300061E8412F59DB882329F12E813F810D8103
+:100E40008885882311F410E001C014E0C9013EDB5D
+:100E5000182B1260802F60E8412F46DB882391F029
+:100E60002A853B8509858C85882311F410E001C013
+:100E700014E0C9012BDB182B1260802F61EC412F8D
+:100E800033DB01C080E0DF91CF911F910F91089576
+:100E9000CF93DF93EC018091E80083FF60C08881ED
+:100EA00090E020912B0230912C022817390709F08D
+:100EB00056C080912802813261F0823220F4803263
+:100EC00009F04DC019C0823269F1833209F047C080
+:100ED00038C080912702813A09F041C08091E80032
+:100EE000877F8093E800CE010F9667E070E071DBAA
+:100EF0008091E8008B7713C080912702813279F5C9
+:100F00008091E800877F8093E800CE010F9667E02C
+:100F100070E013DCCE013ED98091E8008E7780939B
+:100F2000E8001DC0809127028132C9F48091E80059
+:100F3000877F8093E800809129028D87CE01C8D9F0
+:100F40000DC080912702813251F48091E800877FA3
+:100F50008093E800CE0160912902C5DEECDADF91D2
+:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053
+:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749
+:100F800020F0A21BB30BE40BF50B661F771F881F25
+:100F9000991F1A9469F760957095809590959B01BB
+:0C0FA000AC01BD01CF010895F894FFCF13
+:100FAC0000034000000440000002080000000000A4
+:060FBC000000000000002F
+:103000004BC0000064C0000062C0000060C000004F
+:103010005EC000005CC000005AC0000058C0000044
+:1030200056C0000054C0000052C00000EEC40000B2
+:103030004EC000004CC000004AC0000048C0000064
+:1030400046C0000044C0000042C0000040C0000074
+:103050003EC000003CC000003AC0000038C0000084
+:1030600036C0000034C0000032C0000030C0000094
+:103070002EC000002CC000002AC0000028C00000A4
+:1030800026C0000024C0000022C0000020C00000B4
+:103090001EC000001CC0000011241FBECFEFD2E0F4
+:1030A000DEBFCDBF11E0A0E0B1E0EAEFFCE302C07B
+:1030B00005900D92AA33B107D9F711E0AAE3B1E068
+:1030C00001C01D92AB35B107E1F772D314C698CF9A
+:1030D000982F15C08091F200882371F48091E80048
+:1030E0008B7F8093E80003C08EB3882351F08091DA
+:1030F000E80082FFF9CF02C08091F100915099233E
+:1031000049F7089520914A01309149018091480181
+:103110009091470180933F0190934001C9018093B2
+:103120004101909342010895DF93CF9300D000D0E6
+:1031300000D0CDB7DEB780914501843009F45AC084
+:10314000853030F4813059F0833009F0D7C01FC08A
+:10315000853009F4A0C0863009F0D0C0C3C080918A
+:103160004601823008F0CAC0CDDF80914601882335
+:1031700061F480913F019091400123E0FC01209394
+:103180005700E89507B600FCFDCF85E008C08091A8
+:103190004601882311F0823029F4B4DF89E080935E
+:1031A0000101ACC0813009F0A9C020E030E040E06E
+:1031B00050E0F90184918F3F81F0CA01AA27BB2713
+:1031C00080933E013093400120933F018AE0809339
+:1031D000010185E080933B0191C02F5F3F4F4F4F2E
+:1031E0005F4F2030F0E33F07F0E04F07F0E05F076C
+:1031F00001F784C080914601833051F581E08093CE
+:103200003A0180914B0190914C01892B71F0809192
+:103210004701813009F072C080914A0190914901C3
+:1032200090933D0180933C0169C0809147018823C0
+:1032300061F42CE088E190E00FB6F894A8958093B3
+:1032400060000FBE2093600059C01092000156C06C
+:10325000882309F053C0809147018F3F09F04EC089
+:10326000E0E0F0E093E085E090935700E89507B642
+:1032700000FCFDCF80935700E89507B600FCFDCF1A
+:10328000E058FF4F20E3E030F20771F781E18093CF
+:103290005700E89533C0DE011196E5E0F1E083E0E8
+:1032A00001900D928150E1F7DE011496E2E0F1E029
+:1032B00083E001900D928150E1F790914701809158
+:1032C0004601882329F4FE01E90FF11D818107C021
+:1032D0008130A1F4FE01BC97E90FF11D808180933C
+:1032E00050010CC080914601833041F48091470128
+:1032F000882321F48091480180933E0126960FB6E1
+:10330000F894DEBF0FBECDBFCF91DF9108952F920D
+:103310003F924F925F926F927F929F92AF92BF9235
+:10332000CF92DF92EF92FF920F931F93CF93DF9391
+:103330008091590190915A0190934C0180934B01D7
+:1033400080914D01882351F080914D0181508093EF
+:103350004D0180914D01882309F45D9A80914E01C1
+:10336000882351F080914E01815080934E018091CD
+:103370004E01882309F45C9A80915401833009F44A
+:10338000B2C1843030F4813071F0823009F0E3C191
+:1033900011C1853009F4C5C1853008F4BAC1863041
+:1033A00009F0D9C1CDC15C9883E080934E01809132
+:1033B000E800877F8093E80080913A01882329F014
+:1033C000B3DE5D9A5C9A10923A0120914B013091E4
+:1033D0004C012115310529F42AC08EB3882309F444
+:1033E000BAC18091E80082FFF8CF8091F10080930C
+:1033F00045012150304030934C0120934B01E6E4CD
+:10340000F1E00CC08091F10081932150304081E0C7
+:10341000EB34F80719F43183208308C08091F2005F
+:10342000882381F730934C0120934B017DDE8091FE
+:103430000101853009F0BAC080914B0190914C0197
+:10344000892B21F482E080930101B0C08AE140DE43
+:1034500080913F018F713CDEC0914101D0914201CA
+:1034600020913F013091400121968E01021B130BE8
+:10347000219780914601882309F093C01801369462
+:103480002794C901A0913E01B0E09C01AD0162E02A
+:10349000E62EF12C012D112DE20EF31E041F151F37
+:1034A00059016A0190E099249394B5E0A3E048C0E3
+:1034B0008091F200882371F48091E8008B7F8093E3
+:1034C000E80004C08EB3882309F445C18091E80068
+:1034D00082FFF8CF0894210831088091F100682F0D
+:1034E0008091F100782FF5010B0190925700E8953B
+:1034F00011249F5F903419F021143104A1F4F901D3
+:10350000B0935700E89507B600FCFDCF21143104B5
+:1035100051F0F701A0935700E89507B600FCFDCFE6
+:10352000A801970190E042E0442E512C612C712CAF
+:10353000E40CF51C061D171DA40CB51CC61CD71CDD
+:103540002114310409F0B4CFD0934001C0933F015E
+:1035500081E180935700E89527C08091F20088238D
+:1035600071F48091E8008B7F8093E80004C08EB3F3
+:10357000882309F4F0C08091E80082FFF8CF6091C1
+:10358000F10080913F0190914001A7D380913F01CC
+:103590009091400101969093400180933F0101502A
+:1035A000104001151105C9F680E192DD8091E80017
+:1035B0008B7FC3C08091E800877F8093E8005D988F
+:1035C00083E080934D0104C08EB3882309F4C3C007
+:1035D0008091E80080FFF8CF80910101893091F05F
+:1035E0008A3069F480914601813049F480913F012D
+:1035F000909140018093F1009093F1009BC08091E5
+:10360000500196C0609141017091420120913F01AB
+:10361000309140016F5F7F4F7B01E21AF30A6150E6
+:10362000704080914601882389F58701169507959A
+:10363000C901A0913E01B0E09C01AD011FC0809185
+:10364000F200803271F48091E8008E7F8093E80070
+:1036500004C08EB3882309F47EC08091E80080FF07
+:10366000F8CFF901859194918093F1009093F10046
+:10367000015010402E5F3F4F4F4F5F4F0115110516
+:10368000F1F67093400160933F0129C0823039F513
+:1036900023C08091F200803271F48091E8008E7F27
+:1036A0008093E80004C08EB3882309F454C080914D
+:1036B000E80080FFF8CF00913F0110914001C80160
+:1036C00004D38093F1000F5F1F4F109340010093CC
+:1036D0003F010894E108F108E114F104D1F682E019
+:1036E0008093010127C08091E800877F8093E800E4
+:1036F00080913B018093F1001092F1001092F10053
+:103700001092F100809101018093F1001092F1007C
+:1037100011C08091E800877F8093E80010923B0100
+:1037200019C08091E800877F8093E80080910101B3
+:103730008093F1008091E8008E7F8093E8000AC0BA
+:103740008091E800877F8093E8005D9A5C9A82E030
+:103750008093010187D0DF91CF911F910F91FF904E
+:10376000EF90DF90CF90BF90AF909F907F906F9041
+:103770005F904F903F902F9008952BD181E085BFAF
+:1037800015BE089584B7877F84BF88E10FB6F8948B
+:1037900080936000109260000FBE81E085BF82E0E0
+:1037A00085BF8AB180638AB98BB180638BB90CC144
+:1037B000E9DF789401C080D2809100018823D9F795
+:1037C00080913A018823B9F7D8DFE0913C01F0916C
+:1037D0003D010995FA01923071F0933089F09130F2
+:1037E00029F488E091E022E130E019C080E090E027
+:1037F00020E030E014C08AE191E02BE130E00FC01E
+:10380000882339F480913501282F30E085E391E059
+:1038100006C080914301282F30E083E491E091833A
+:103820008083C90108958091EB0081608093EB0053
+:103830001092ED006093EC004093ED008091EE005B
+:10384000881F8827881F08951092F4001092F000B6
+:103850001092E8001092ED00EBEEF0E080818E7F98
+:10386000808308958091530188238CF403C08EB324
+:103870008823B1F08091E80082FFF9CF8091E800C1
+:103880008B7F8093E80008958EB3882349F0809160
+:10389000E80080FFF9CF8091E8008E7F8093E800F8
+:1038A00008959C014091590150915A0146175707BC
+:1038B00018F4F90120E038C06115710511F0AB0171
+:1038C000F8CF8091E8008E7F8093E80040E050E0E0
+:1038D000F0CF8091E80083FF02C081E008958091DD
+:1038E000E80082FD2DC08EB3882381F18EB3853030
+:1038F00079F18091E80080FF17C09091F20006C036
+:1039000081918093F100415050409F5F41155105D6
+:1039100011F09032A8F320E0903209F421E0809178
+:10392000E8008E7F8093E8004115510591F622232F
+:1039300081F606C08EB3882349F08EB3853041F0FE
+:103940008091E80082FFF6CF80E0089582E008953C
+:1039500083E0089554D056D01EBA1092510184E0ED
+:1039600089BD89B5826089BD09B400FEFDCF809113
+:10397000D800982F9F779093D80080688093D800C4
+:10398000809163008E7F809363008091D8008F7D4B
+:103990008093D8008091E0008E7F8093E00080913A
+:1039A000E1008E7F8093E1008091E200816080934E
+:1039B000E2008091E100877F8093E1008091E20046
+:1039C00088608093E2000895C5DF81E08093520112
+:1039D0000895C0DFE0EEF0E0808181608083E8ED53
+:1039E000F0E080818F7780830AD00CD019BCE3E6A9
+:1039F000F0E08081816080831092520108951092DE
+:103A0000E20008951092E10008951F920F920FB600
+:103A10000F9211242F933F934F935F936F937F9354
+:103A20008F939F93AF93BF93EF93FF938091E100A8
+:103A300080FF1BC08091E20080FF17C08091E100F1
+:103A40008E7F8093E1008091E2008E7F8093E20080
+:103A50008091E20080618093E2008091D8008062D2
+:103A60008093D80019BC1EBA26D18091E10084FF52
+:103A700029C08091E20084FF25C084E089BD89B51A
+:103A8000826089BD09B400FEFDCF8091D8008F7D92
+:103A90008093D8008091E1008F7E8093E100809137
+:103AA000E2008F7E8093E2008091E200816080934B
+:103AB000E20080915101882311F481E001C084E08B
+:103AC0008EBBF9D08091E10083FF22C08091E2009B
+:103AD00083FF1EC08091E100877F8093E10082E038
+:103AE0008EBB109251018091E1008E7F8093E100A6
+:103AF0008091E2008E7F8093E2008091E2008061FD
+:103B00008093E200A1DE80E060E042E28CDED3D070
+:103B10008091E10082FF0AC08091E20082FF06C02E
+:103B20008091E1008B7F8093E100C5D0FF91EF9100
+:103B3000BF91AF919F918F917F916F915F914F91C5
+:103B40003F912F910F900FBE0F901F9018951F93CC
+:103B5000DF93CF9300D0CDB7DEB7E3E5F1E08091FE
+:103B6000F100819381E0EB35F807C9F7909153019B
+:103B700080915401853011F1863040F48130B9F0E4
+:103B8000813070F0833009F081C011C0883009F4B1
+:103B900053C0893009F462C0863009F077C02DC067
+:103BA000903809F474C0923809F070C070C099233D
+:103BB00009F46DC0923009F069C069C0992309F019
+:103BC00065C0109155018091E800877F8093E800DF
+:103BD00049DE04C08EB3882309F459C08091E800FF
+:103BE00080FFF8CF812F8F7711F492E001C093E02E
+:103BF0009EBB80688093E3004AC09058923008F0E2
+:103C000045C0809155019091560160915701AE01D8
+:103C10004F5F5F4FDFDDBC010097C9F18091E80085
+:103C2000877F8093E80089819A813BDE8091E8005C
+:103C30008B7F8093E8002BC0903841F58091E8009D
+:103C4000877F8093E800809151018093F1008091FB
+:103C5000E8008E7F8093E80005DE19C09923B1F457
+:103C600090915501923098F48091E800877F80937D
+:103C7000E80090935101F6DD80915101882311F401
+:103C800083E001C084E08EBB16D001C040DB809190
+:103C9000E80083FF0AC08091EB0080628093EB0014
+:103CA0008091E800877F8093E8000F900F90CF917C
+:103CB000DF911F91089508958EB3882329F0809194
+:103CC000E80083FF01C043CF0895F999FECF92BD6C
+:103CD00081BDF89A992780B50895262FF999FECFCE
+:103CE0001FBA92BD81BD20BD0FB6F894FA9AF99A19
+:0A3CF0000FBE01960895F894FFCF6F
+:103CFA0001021E948920DCFB120110010000002041
+:103D0A00EB03EF2F00000001000109021B00010173
+:103D1A000080320904000000FE01020009210300AC
+:0A3D2A0000000C000104030904006E
+:0400000300003000C9
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex b/hardware/arduino/firmwares/atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex
new file mode 100644
index 0000000..e22196c
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex
@@ -0,0 +1,234 @@
+:20000000A2C00000BBC00000B9C00000B7C00000B5C00000B3C00000B1C00000AFC000004B
+:20002000ADC00000ABC00000A9C000005AC400001EC40000A3C00000A1C000009FC000005C
+:200040009DC000009BC0000099C0000097C0000095C0000093C0000091C0000014C100006A
+:200060008DC000008BC0000089C0000087C0000085C0000083C0000081C000007FC0000050
+:200080007DC000007BC0000079C0000077C0000075C0000073C000001201100102000008E2
+:2000A0004123100001000102DC0109023E00020100C0320904000001020201000524000170
+:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC
+:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA
+:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D
+:200120002403410072006400750069006E006F0020004D00650067006100200032003500A5
+:2001400036003000000011241FBECFEFD2E0DEBFCDBF11E0A0E0B1E0E0EDFFE002C0059089
+:200160000D92A631B107D9F712E0A6E1B1E001C01D92AF32B107E1F7F1D028C741CF9C0139
+:20018000DC01AE57BF4FED91FC91119741911196FC93EE9380589F4FE817F90711F42D93A9
+:2001A0003C939FB7F894F901EC57FF4F8081815080839FBF842F0895DF92EF92FF920F935B
+:2001C0001F93FC018489813019F0823021F405C040E3D42E04C0DD2402C030E2D32E838952
+:2001E000823011F488E0D82A8589873031F0883031F0863031F482E003C084E001C086E094
+:20020000D82A1092C9001092C8001092CA00E784F0880189128980E0E81681EEF80680E068
+:20022000080780E0180719F420E130E00FC0C801B701969587957795679560587B47814E2A
+:200240009F4FA8019701A0D6215030403093CD002093CC00D092CA0080E0E81681EEF80612
+:2002600080E0080780E0180711F082E001C080E08093C80088E98093C9001F910F91FF9005
+:20028000EF90DF9008951F920F920FB60F9211242F938F939F93EF93FF939091CE008EB38C
+:2002A0008430F1F4E0919901F0919A019083E0919901F0919A01CF01019690939A0180930C
+:2002C00099018959914021F489E191E0928381839FB7F89480919D018F5F80939D019FBF3A
+:2002E000FF91EF919F918F912F910F900FBE0F901F901895FC01858580FF02C05F9808959B
+:200300005F9A089580E091E0D5C580E091E088C584B7877F84BF28E10FB6F89420936000CD
+:20032000109260000FBE87E690E09093CD008093CC0086E08093CA001092C8002093C90019
+:20034000539A5A9A8AB180638AB98BB180638BB983D284E085BD5F9A579A08950F931F9322
+:20036000CF93DF93D5DF2FB7F8948EE991E090931F0280931E0290932102809320022FBFBB
+:200380002FB7F89489E191E090939A018093990190939C0180939B012FBF7894CEE9D1E0D4
+:2003A00003E08FB7F894909122028FBF903809F180E091E0ABD497FD1CC0E0911E02F09161
+:2003C0001F028083E0911E02F0911F02CF01019690931F0280931E028E51924011F4D283DD
+:2003E000C1839FB7F894809122028F5F809322029FBF8FB7F89410919D018FBFA89902C0BD
+:20040000113678F1A89A80919D01882361F05D980093160108C089E191E0B1DE682F80E077
+:2004200091E0DAD411501123B1F780911601882351F0809116018150809316018091160101
+:20044000882309F45D9A80911701882351F08091170181508093170180911701882309F4F2
+:200460005C9A8FB7F894909122028FBF992369F08EE991E084DE982F8091C80085FFFCCFD3
+:200480009093CE005C980093170180E091E095D42AD487CFDA01923049F0933061F0913093
+:2004A000F9F4E8E9F0E022E130E01EC0EAEAF0E02EE330E019C0813049F0813018F08230CA
+:2004C00079F408C0E8EEF0E0849107C0ECEEF0E0849103C0E0E2F1E08491282F30E004C010
+:2004E000E0E0F0E020E030E0ED93FC93C901089528E030E040E003C04F5F220F331F28177B
+:200500003907D0F3842F8295807F08958093E9008091EB0081608093EB001092ED00609319
+:20052000EC004093ED008091EE00881F8827881F08951092F40090E09093E9001092F000D2
+:200540001092E8001092ED008091EB008E7F8093EB009F5F953081F70895809127028823BE
+:200560008CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008958EB395
+:20058000882349F08091E80080FFF9CF8091E8008E778093E800089594E68091EC0080FFAB
+:2005A00005C08091E80080FF05C023C08091E80082FD1FC08EB3882311F482E008958EB3CE
+:2005C000853011F483E008958091EB0085FF02C081E008958091E10082FFDFCF8091E1000E
+:2005E0008B7F8093E100992311F484E008959150D4CF80E008959C0140912D0250912E020C
+:200600004617570718F4F90120E038C06115710511F0AB01F8CF8091E8008E778093E800C8
+:2006200040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC08EB3882381F1AD
+:200640008EB3853079F18091E80080FF17C09091F20006C081918093F100415050409F5FDD
+:200660004115510511F09830A8F320E0983009F421E08091E8008E778093E80041155105FF
+:2006800091F6222381F606C08EB3882349F08EB3853041F08091E80082FFF6CF80E00895C9
+:2006A00082E0089583E008959C0140912D0250912E024617570710F490E03BC06115710577
+:2006C00011F0AB01F9CF8091E8008E778093E80040E050E0F1CF8091E80083FF02C081E0FE
+:2006E00008958091E80082FD30C08EB3882399F18EB3853091F18091E80080FF1AC08091A4
+:20070000F20009C0F9012F5F3F4FE491E093F100415050408F5F4115510511F0883090F338
+:2007200090E0883009F491E08091E8008E778093E8004115510579F6992369F606C08EB3ED
+:20074000882349F08EB3853041F08091E80082FFF6CF80E0089582E0089583E008959C01B6
+:200760006115710529F48091E8008B778093E800F90120C08091E80083FF02C081E0089565
+:200780008EB3882339F18EB3853031F18091E80082FFF0CF06C08091F100819361507040B5
+:2007A00021F08091F2008823B1F78091E8008B778093E80061157105E9F606C08EB388235F
+:2007C00049F08EB3853041F08091E80080FFF6CF80E0089582E0089583E0089542D044D05A
+:2007E0001EBA10922502109224021092230284E089BD89B5826089BD09B400FEFDCF809121
+:20080000D800982F9F779093D80080688093D800809163008E7F809363008091D8008F7D69
+:200820008093D8008091E0008E7F8093E0008091E1008E7F8093E1008091E2008160809302
+:20084000E2008091E100877F8093E1008091E20088608093E2000895C1DF81E08093260221
+:2008600008951092E20008951092E10008951F920F920FB60F9211241F932F933F934F9385
+:200880005F936F937F938F939F93AF93BF93EF93FF93E9EEF0E0108117701082E0EFF0E066
+:2008A0008081877F80837894C3D0F894A9EEB0E01C92E0EFF0E08081886080831C93FF9164
+:2008C000EF91BF91AF919F918F917F916F915F914F913F912F911F910F900FBE0F901F90DE
+:2008E00018951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF93BF93FA
+:20090000EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E10080912A
+:20092000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC1EBAA7
+:20094000D1D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B400FE71
+:20096000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E200E3
+:200980008091E20081608093E20080912502882311F481E001C084E08EBBA4D18091E10070
+:2009A00083FF27C08091E20083FF23C08091E100877F8093E10082E08EBB10922502809105
+:2009C000E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200AADD80E090
+:2009E00060E042E093DD8091F00088608093F00079D18091E10082FF0AC08091E20082FF3E
+:200A000006C08091E1008B7F8093E1006BD1FF91EF91BF91AF919F918F917F916F915F91F4
+:200A20004F913F912F910F900FBE0F901F9018951F93DF93CF93CDB7DEB7AC970FB6F894AC
+:200A4000DEBF0FBECDBFE7E2F2E08091F100819322E0EF32F207C9F78091270230912802EE
+:200A6000353009F487C0363040F43130C9F1313070F0333009F01DC133C0383009F4EFC016
+:200A8000393009F4FEC0363009F013C192C0803821F0823809F00DC108C090912302809144
+:200AA0002402882399F0926011C080912B0287708093E9008091EB0090E025E09695879530
+:200AC0002A95E1F7982F91701092E9008091E800877F8093E8009093F1001092F100CAC001
+:200AE000882319F0823009F0E4C090E08F719070009721F0029709F0DDC00CC080912902A4
+:200B0000813009F0D7C010922402333069F5809324022AC080912902882331F520912B02FD
+:200B2000277009F4C7C02093E9008091EB0080FFC1C0333021F48091EB00806213C08091C8
+:200B4000EB0080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091B7
+:200B6000EB0088608093EB001092E9008091E800877F83C0882309F09CC0109129028091FA
+:200B8000E800877F8093E800E8DC04C08EB3882309F490C08091E80080FFF8CF812F8F77B6
+:200BA00011F492E001C093E09EBB80688093E30081C08058823008F07CC0809129029091F7
+:200BC0002A0223E08C3D920799F55FB7F894DE0115964EE020E030E061E2E42FF0E0609373
+:200BE0005700849120FF03C082958F704F5F982F9F70892F805D8A3308F0895F8C93119615
+:200C00001C9211972F5F3F4F12962431310529F75FBF8AE28B8383E08C838091E800877F06
+:200C20008093E800CE0103966AE270E0E4DC11C060912B02AE014F5F5F4F2CDCBC0100979F
+:200C4000C9F18091E800877F8093E80089819A812BDD8091E8008B778093E8002BC080381A
+:200C600041F58091E800877F8093E800809125028093F1008091E8008E778093E8006DDCC6
+:200C800019C08823B1F490912902923098F48091E800877F8093E800909325025EDC809102
+:200CA0002502882311F483E001C084E08EBB2DDB01C028DB8091E80083FF0AC08091EB007F
+:200CC00080628093EB008091E800877F8093E800AC960FB6F894DEBF0FBECDBFCF91DF91E1
+:200CE0001F91089508951F938EB3882361F01091E9001092E9008091E80083FF01C098DE54
+:200D000017701093E9001F9108950895FC018EB3843021F587859089A189B2890097A10507
+:200D2000B105E1F085818093E9008091E80082FF15C08091F200882319F42FEF3FEF04C010
+:200D40008091F100282F30E08091F200882341F48091E8008B778093E80002C02FEF3FEF43
+:200D6000C9010895FC018EB3843011F587859089A189B2890097A105B105D1F081818093C1
+:200D8000E9008091F2008823A9F09091E8008091E8008E778093E80095FD0CC0FDDB982F24
+:200DA000882349F48091E8008E778093E80003C092E001C090E0892F0895FC018EB38430A5
+:200DC00051F487859089A189B2890097A105B10511F0CF01C7CF08951F93FC01162F8EB318
+:200DE0008430D9F487859089A189B2890097A105B10599F081818093E9008091E80085FDF3
+:200E000008C08091E8008E778093E800C5DB882329F41093F10080E001C082E01F91089545
+:200E20000F931F93CF93DF93EC010D96FC0189E0DF011D928A95E9F72A813B8109818C8108
+:200E4000882311F410E001C014E0C90151DB182B1260802F61E8412F59DB882329F12E8182
+:200E60003F810D818885882311F410E001C014E0C9013EDB182B1260802F60E8412F46DBA2
+:200E8000882391F02A853B8509858C85882311F410E001C014E0C9012BDB182B1260802F8F
+:200EA00061EC412F33DB01C080E0DF91CF911F910F910895CF93DF93EC018091E80083FF4D
+:200EC00060C0888190E020912B0230912C022817390709F056C080912802813261F082322B
+:200EE00020F4803209F04DC019C0823269F1833209F047C038C080912702813A09F041C0A3
+:200F00008091E800877F8093E800CE010F9667E070E071DB8091E8008B7713C08091270278
+:200F2000813279F58091E800877F8093E800CE010F9667E070E013DCCE013ED98091E800BD
+:200F40008E778093E8001DC0809127028132C9F48091E800877F8093E800809129028D87C0
+:200F6000CE01C8D90DC080912702813251F48091E800877F8093E800CE0160912902C5DE7A
+:200F8000ECDADF91CF910895A1E21A2EAA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA217B307AC
+:200FA000E407F50720F0A21BB30BE40BF50B661F771F881F991F1A9469F760957095809539
+:200FC00090959B01AC01BD01CF010895F894FFCF000340000004400000020800000000008D
+:200FE000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
+:201000004BC0000064C0000062C0000060C000005EC000005CC000005AC0000058C00000F3
+:2010200056C0000054C0000052C00000CBC400004EC000004CC000004AC0000048C00000B9
+:2010400046C0000044C0000042C0000040C000003EC000003CC000003AC0000038C0000098
+:2010600036C0000034C0000032C0000030C000002EC000002CC000002AC0000028C00000F8
+:2010800026C0000024C0000022C0000020C000001EC000001CC0000011241FBECFEFD2E088
+:2010A000DEBFCDBF11E0A0E0B1E0E4EBFCE102C005900D92A836B107D9F711E0A8E6B1E0ED
+:2010C00001C01D92A738B107E1F74FD3F1C598CF982F15C08091F200882371F48091E8004A
+:2010E0008B7F8093E80003C08EB3882351F08091E80082FFF9CF02C08091F1009150992358
+:2011000049F708952091760130917501809174019091730180936D0190936E01C901809388
+:201120006F0190937001089580917101843009F45AC0853030F4813059F0833009F0C3C0BE
+:201140001FC0853009F4A0C0863009F0BCC0AFC080917201823008F0B6C0D4DF8091720129
+:20116000882361F480916D0190916E0123E0FC0120935700E89507B600FCFDCF85E008C027
+:2011800080917201882311F0823029F4BBDF89E0809301010895813009F095C020E030E08C
+:2011A00040E050E0F90184918F3F81F0CA01AA27BB2780936C0130936E0120936D018AE0D6
+:2011C0008093010185E08093690108952F5F3F4F4F4F5F4F2030F0E13F07F0E04F07F0E0B6
+:2011E0005F0701F7089580917201833051F581E0809368018091770190917801892B71F062
+:2012000080917301813009F05EC0809176019091750190936B0180936A0108958091730133
+:20122000882361F42CE088E190E00FB6F894A895809360000FBE20936000089510920001A8
+:201240000895882309F03FC0809173018F3F09F03AC0E0E0F0E093E085E090935700E895A9
+:2012600007B600FCFDCF80935700E89507B600FCFDCFE058FF4F20E1E030F20771F781E123
+:2012800080935700E8950895E091730180917201882321F4F0E0EB5FFE4F05C0813099F437
+:2012A000F0E0EE52FF4F808180937C01089580917201833041F480917301882321F48091E0
+:2012C000740180936C0108952F923F924F925F926F927F929F92AF92BF92CF92DF92EF92F0
+:2012E000FF920F931F93CF93DF938091850190918601909378018093770180917901882399
+:2013000051F08091790181508093790180917901882309F45D9A80917A01882351F08091F0
+:201320007A01815080937A0180917A01882309F45C9A80918001833009F4B2C1843030F41C
+:20134000813071F0823009F0E3C111C1853009F4C5C1853008F4BAC1863009F0D9C1CDC11F
+:201360005C9883E080937A018091E800877F8093E80080916801882329F0D6DE5D9A5C9AAF
+:201380001092680120917701309178012115310529F42AC08EB3882309F4BAC18091E8000F
+:2013A00082FFF8CF8091F10080937101215030403093780120937701E2E7F1E00CC080919F
+:2013C000F10081932150304081E0E737F80719F43183208308C08091F200882381F7309394
+:2013E000780120937701A0DE80910101853009F0BAC08091770190917801892B21F482E042
+:2014000080930101B0C08AE163DE80916D018F715FDEC0916F01D091700120916D0130916C
+:201420006E0121968E01021B130B219780917201882309F093C0180136942794C901A091F0
+:201440006C01B0E09C01AD0162E0E62EF12C012D112DE20EF31E041F151F59016A0190E0D8
+:2014600099249394B5E0A3E048C08091F200882371F48091E8008B7F8093E80004C08EB352
+:20148000882309F445C18091E80082FFF8CF0894210831088091F100682F8091F100782F1D
+:2014A000F5010B0190925700E89511249F5F903419F021143104A1F4F901B0935700E89524
+:2014C00007B600FCFDCF2114310451F0F701A0935700E89507B600FCFDCFA801970190E0A7
+:2014E00042E0442E512C612C712CE40CF51C061D171DA40CB51CC61CD71C2114310409F0A0
+:20150000B4CFD0936E01C0936D0181E180935700E89527C08091F200882371F48091E80079
+:201520008B7F8093E80004C08EB3882309F4F0C08091E80082FFF8CF6091F10080916D01A7
+:2015400090916E01A7D380916D0190916E01019690936E0180936D010150104001151105FB
+:20156000C9F680E1B5DD8091E8008B7FC3C08091E800877F8093E8005D9883E08093790154
+:2015800004C08EB3882309F4C3C08091E80080FFF8CF80910101893091F08A3069F4809167
+:2015A0007201813049F480916D0190916E018093F1009093F1009BC080917C0196C0609173
+:2015C0006F017091700120916D0130916E016F5F7F4F7B01E21AF30A6150704080917201E4
+:2015E000882389F5870116950795C901A0916C01B0E09C01AD011FC08091F200803271F4B7
+:201600008091E8008E7F8093E80004C08EB3882309F47EC08091E80080FFF8CFF90185918F
+:2016200094918093F1009093F100015010402E5F3F4F4F4F5F4F01151105F1F670936E01E0
+:2016400060936D0129C0823039F523C08091F200803271F48091E8008E7F8093E80004C09E
+:201660008EB3882309F454C08091E80080FFF8CF00916D0110916E01C80104D38093F1007B
+:201680000F5F1F4F10936E0100936D010894E108F108E114F104D1F682E08093010127C0CE
+:2016A0008091E800877F8093E800809169018093F1001092F1001092F1001092F1008091E7
+:2016C00001018093F1001092F10011C08091E800877F8093E8001092690119C08091E800C8
+:2016E000877F8093E800809101018093F1008091E8008E7F8093E8000AC08091E800877F08
+:201700008093E8005D9A5C9A82E08093010187D0DF91CF911F910F91FF90EF90DF90CF9017
+:20172000BF90AF909F907F906F905F904F903F902F9008952BD181E085BF15BE089584B799
+:20174000877F84BF88E10FB6F89480936000109260000FBE81E085BF82E085BF8AB18063DB
+:201760008AB98BB180638BB90CC1E9DF789401C080D2809100018823D9F78091680188235D
+:20178000B9F7D8DFE0916A01F0916B010995FA01923071F0933089F0913029F488E091E06A
+:2017A00022E130E019C080E090E020E030E014C08AE191E02BE130E00FC0882339F48091D9
+:2017C0003501282F30E085E391E006C080913901282F30E089E391E091838083C9010895C0
+:2017E0008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881FE4
+:2018000008951092F4001092F0001092E8001092ED00EBEEF0E080818E7F80830895809182
+:201820007F0188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B7F8093E8006D
+:2018400008958EB3882349F08091E80080FFF9CF8091E8008E7F8093E80008959C0140917A
+:201860008501509186014617570718F4F90120E038C06115710511F0AB01F8CF8091E80068
+:201880008E7F8093E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC091
+:2018A0008EB3882381F18EB3853079F18091E80080FF17C09091F20006C081918093F1002C
+:2018C000415050409F5F4115510511F09032A8F320E0903209F421E08091E8008E7F809306
+:2018E000E8004115510591F6222381F606C08EB3882349F08EB3853041F08091E80082FF85
+:20190000F6CF80E0089582E0089583E0089554D056D01EBA10927D0184E089BD89B58260FA
+:2019200089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809163008E7FC5
+:20194000809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1008E7F80932E
+:20196000E1008091E20081608093E2008091E100877F8093E1008091E20088608093E20001
+:201980000895C5DF81E080937E010895C0DFE0EEF0E0808181608083E8EDF0E080818F77A8
+:2019A00080830AD00CD019BCE3E6F0E080818160808310927E0108951092E200089510929A
+:2019C000E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF938A
+:2019E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E100F9
+:201A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC7D
+:201A20001EBA26D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B451
+:201A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093D6
+:201A6000E2008091E20081608093E20080917D01882311F481E001C084E08EBBF9D08091D3
+:201A8000E10083FF22C08091E20083FF1EC08091E100877F8093E10082E08EBB10927D01F7
+:201AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200A1DEF6
+:201AC00080E060E042E28CDED3D08091E10082FF0AC08091E20082FF06C08091E1008B7FC2
+:201AE0008093E100C5D0FF91EF91BF91AF919F918F917F916F915F914F913F912F910F905E
+:201B00000FBE0F901F9018951F93DF93CF9300D0CDB7DEB7EFE7F1E08091F100819381E070
+:201B2000E738F807C9F790917F0180918001853011F1863040F48130B9F0813070F08330D5
+:201B400009F081C011C0883009F453C0893009F462C0863009F077C02DC0903809F474C00E
+:201B6000923809F070C070C0992309F46DC0923009F069C069C0992309F065C01091810152
+:201B80008091E800877F8093E80049DE04C08EB3882309F459C08091E80080FFF8CF812F6F
+:201BA0008F7711F492E001C093E09EBB80688093E3004AC09058923008F045C080918101F9
+:201BC0009091820160918301AE014F5F5F4FDFDDBC010097C9F18091E800877F8093E8001D
+:201BE00089819A813BDE8091E8008B7F8093E8002BC0903841F58091E800877F8093E800C6
+:201C000080917D018093F1008091E8008E7F8093E80005DE19C09923B1F4909181019230AE
+:201C200098F48091E800877F8093E80090937D01F6DD80917D01882311F483E001C084E0E3
+:201C40008EBB16D001C040DB8091E80083FF0AC08091EB0080628093EB008091E800877F59
+:201C60008093E8000F900F90CF91DF911F91089508958EB3882329F08091E80083FF01C030
+:201C800043CF0895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD6B
+:201CA00020BD0FB6F894FA9AF99A0FBE01960895F894FFCF01021E938220DCFB1201100123
+:201CC00000000020EB03F72F00000001000109021B0001010080320904000000FE010200E6
+:201CE0000921030000000C0001040309042C03410072006400750069006E006F0020004D28
+:1C1D000000650067006100200032003500360030002000440046005500000000AE
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/README.txt b/hardware/arduino/firmwares/atmegaxxu2/README.txt
new file mode 100644
index 0000000..386dcf0
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/README.txt
@@ -0,0 +1,33 @@
+Arduino Uno and Mega 2560 Firmwares for the ATmega8U2
+
+This directory contains the firmwares used on the ATmega8U2 on the Arduino
+Uno and Arduino Mega 2560. The arduino-usbdfu directory contains the DFU
+bootloader on the 8U2; the arduino-usbserial directory contains the actual
+usb to serial firmware. Both should be compiled against LUFA 100807. The
+two .hex files in this directory combine the dfu and serial firmwares into
+a single file to burn onto the 8U2.
+
+To burn (Uno):
+avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m
+
+To burn (Mega 2560):
+avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:MEGA-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m
+
+
+Note on USB Vendor IDs (VID) and Product IDs (PID): The arduino-usbdfu
+project uses Atmel's VID and MCU-specific PIDs to maintain compatibility
+with their FLIP software. The source code to the arduino-usbserial
+project includes Atmel's VID and a PID donated by them to LUFA. This
+PID is used in LUFA's USBtoSerial project, which forms the basis for
+arduino-usbserial. According to the LUFA documentation, this VID/PID
+combination is:
+
+ "For use in testing of LUFA powered devices during development only,
+ by non-commercial entities. All devices must accept collisions on this
+ VID/PID range (from other in-development LUFA devices) to be resolved
+ by using a unique release number in the Device Descriptor. No devices
+ using this VID/PID combination may be released to the general public."
+
+The production version of the arduino-usbserial firmware uses the
+Arduino VID. This is only for use with official Arduino hardware and
+should not be used on other products.
\ No newline at end of file
diff --git a/hardware/arduino/firmwares/atmegaxxu2/UNO-dfu_and_usbserial_combined.hex b/hardware/arduino/firmwares/atmegaxxu2/UNO-dfu_and_usbserial_combined.hex
new file mode 100644
index 0000000..60acf44
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/UNO-dfu_and_usbserial_combined.hex
@@ -0,0 +1,234 @@
+:200000009CC00000B5C00000B3C00000B1C00000AFC00000ADC00000ABC00000A9C000007B
+:20002000A7C00000A5C00000A3C0000054C4000018C400009DC000009BC0000099C000008C
+:2000400097C0000095C0000093C0000091C000008FC000008DC000008BC000000EC100009A
+:2000600087C0000085C0000083C0000081C000007FC000007DC000007BC0000079C0000080
+:2000800077C0000075C0000073C0000071C000006FC000006DC00000120110010200000806
+:2000A0004123010001000102DC0109023E00020100C032090400000102020100052400017F
+:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC
+:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA
+:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D
+:200120001803410072006400750069006E006F00200055006E006F00000011241FBECFEFB0
+:20014000D2E0DEBFCDBF11E0A0E0B1E0E4ECFFE002C005900D92A631B107D9F712E0A6E145
+:20016000B1E001C01D92AF32B107E1F7F1D028C747CF9C01DC01AE57BF4FED91FC91119707
+:2001800041911196FC93EE9380589F4FE817F90711F42D933C939FB7F894F901EC57FF4F10
+:2001A0008081815080839FBF842F0895DF92EF92FF920F931F93FC018489813019F082306F
+:2001C00021F405C040E3D42E04C0DD2402C030E2D32E8389823011F488E0D82A8589873094
+:2001E00031F0883031F0863031F482E003C084E001C086E0D82A1092C9001092C800109201
+:20020000CA00E784F0880189128980E0E81681EEF80680E0080780E0180719F420E130E035
+:200220000FC0C801B701969587957795679560587B47814E9F4FA8019701A0D62150304050
+:200240003093CD002093CC00D092CA0080E0E81681EEF80680E0080780E0180711F082E047
+:2002600001C080E08093C80088E98093C9001F910F91FF90EF90DF9008951F920F920FB6B4
+:200280000F9211242F938F939F93EF93FF939091CE008EB38430F1F4E0919901F0919A016E
+:2002A0009083E0919901F0919A01CF01019690939A01809399018959914021F489E191E08F
+:2002C000928381839FB7F89480919D018F5F80939D019FBFFF91EF919F918F912F910F90B8
+:2002E0000FBE0F901F901895FC01858580FF02C05F9808955F9A089580E091E0D5C580E0F9
+:2003000091E088C584B7877F84BF28E10FB6F89420936000109260000FBE87E690E090935F
+:20032000CD008093CC0086E08093CA001092C8002093C900539A5A9A8AB180638AB98BB16A
+:2003400080638BB983D284E085BD5F9A579A08950F931F93CF93DF93D5DF2FB7F8948EE92F
+:2003600091E090931F0280931E0290932102809320022FBF2FB7F89489E191E090939A0121
+:200380008093990190939C0180939B012FBF7894CEE9D1E003E08FB7F894909122028FBF97
+:2003A000903809F180E091E0ABD497FD1CC0E0911E02F0911F028083E0911E02F0911F0252
+:2003C000CF01019690931F0280931E028E51924011F4D283C1839FB7F894809122028F5FEB
+:2003E000809322029FBF8FB7F89410919D018FBFA89902C0113678F1A89A80919D018823BA
+:2004000061F05D980093160108C089E191E0B1DE682F80E091E0DAD411501123B1F7809156
+:200420001601882351F08091160181508093160180911601882309F45D9A809117018823FB
+:2004400051F08091170181508093170180911701882309F45C9A8FB7F894909122028FBF0A
+:20046000992369F08EE991E084DE982F8091C80085FFFCCF9093CE005C980093170180E03E
+:2004800091E095D42AD487CFDA01923049F0933061F09130F9F4E8E9F0E022E130E01EC004
+:2004A000EAEAF0E02EE330E019C0813049F0813018F0823079F408C0E8EEF0E0849107C092
+:2004C000ECEEF0E0849103C0E0E2F1E08491282F30E004C0E0E0F0E020E030E0ED93FC9318
+:2004E000C901089528E030E040E003C04F5F220F331F28173907D0F3842F8295807F0895C1
+:200500008093E9008091EB0081608093EB001092ED006093EC004093ED008091EE00881F30
+:200520008827881F08951092F40090E09093E9001092F0001092E8001092ED008091EB000F
+:200540008E7F8093EB009F5F953081F708958091270288238CF403C08EB38823B1F08091F2
+:20056000E80082FFF9CF8091E8008B778093E80008958EB3882349F08091E80080FFF9CF52
+:200580008091E8008E778093E800089594E68091EC0080FF05C08091E80080FF05C023C0EA
+:2005A0008091E80082FD1FC08EB3882311F482E008958EB3853011F483E008958091EB00FD
+:2005C00085FF02C081E008958091E10082FFDFCF8091E1008B7F8093E100992311F484E0A1
+:2005E00008959150D4CF80E008959C0140912D0250912E024617570718F4F90120E038C076
+:200600006115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8091E80083FFF7
+:2006200002C081E008958091E80082FD2DC08EB3882381F18EB3853079F18091E80080FF5F
+:2006400017C09091F20006C081918093F100415050409F5F4115510511F09830A8F320E0A5
+:20066000983009F421E08091E8008E778093E8004115510591F6222381F606C08EB388231A
+:2006800049F08EB3853041F08091E80082FFF6CF80E0089582E0089583E008959C01409151
+:2006A0002D0250912E024617570710F490E03BC06115710511F0AB01F9CF8091E8008E7771
+:2006C0008093E80040E050E0F1CF8091E80083FF02C081E008958091E80082FD30C08EB32B
+:2006E000882399F18EB3853091F18091E80080FF1AC08091F20009C0F9012F5F3F4FE491A4
+:20070000E093F100415050408F5F4115510511F0883090F390E0883009F491E08091E800EF
+:200720008E778093E8004115510579F6992369F606C08EB3882349F08EB3853041F0809160
+:20074000E80082FFF6CF80E0089582E0089583E008959C016115710529F48091E8008B77CE
+:200760008093E800F90120C08091E80083FF02C081E008958EB3882339F18EB3853031F13B
+:200780008091E80082FFF0CF06C08091F10081936150704021F08091F2008823B1F780916B
+:2007A000E8008B778093E80061157105E9F606C08EB3882349F08EB3853041F08091E8007E
+:2007C00080FFF6CF80E0089582E0089583E0089542D044D01EBA10922502109224021092A8
+:2007E000230284E089BD89B5826089BD09B400FEFDCF8091D800982F9F779093D800806894
+:200800008093D800809163008E7F809363008091D8008F7D8093D8008091E0008E7F809305
+:20082000E0008091E1008E7F8093E1008091E20081608093E2008091E100877F8093E10030
+:200840008091E20088608093E2000895C1DF81E08093260208951092E20008951092E100AE
+:2008600008951F920F920FB60F9211241F932F933F934F935F936F937F938F939F93AF932A
+:20088000BF93EF93FF93E9EEF0E0108117701082E0EFF0E08081877F80837894C3D0F894CD
+:2008A000A9EEB0E01C92E0EFF0E08081886080831C93FF91EF91BF91AF919F918F917F9129
+:2008C0006F915F914F913F912F911F910F900FBE0F901F9018951F920F920FB60F921124B4
+:2008E0002F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E10080FF1BC034
+:200900008091E20080FF17C08091E1008E7F8093E1008091E2008E7F8093E2008091E200B3
+:2009200080618093E2008091D80080628093D80019BC1EBAD1D18091E10084FF29C080916D
+:20094000E20084FF25C084E089BD89B5826089BD09B400FEFDCF8091D8008F7D8093D800D6
+:200960008091E1008F7E8093E1008091E2008F7E8093E2008091E20081608093E2008091B5
+:200980002502882311F481E001C084E08EBBA4D18091E10083FF27C08091E20083FF23C089
+:2009A0008091E100877F8093E10082E08EBB109225028091E1008E7F8093E1008091E200F1
+:2009C0008E7F8093E2008091E20080618093E200AADD80E060E042E093DD8091F0008860AA
+:2009E0008093F00079D18091E10082FF0AC08091E20082FF06C08091E1008B7F8093E10043
+:200A00006BD1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F900FBE0F902F
+:200A20001F9018951F93DF93CF93CDB7DEB7AC970FB6F894DEBF0FBECDBFE7E2F2E0809185
+:200A4000F100819322E0EF32F207C9F78091270230912802353009F487C0363040F43130EC
+:200A6000C9F1313070F0333009F01DC133C0383009F4EFC0393009F4FEC0363009F013C163
+:200A800092C0803821F0823809F00DC108C09091230280912402882399F0926011C080916D
+:200AA0002B0287708093E9008091EB0090E025E0969587952A95E1F7982F91701092E90074
+:200AC0008091E800877F8093E8009093F1001092F100CAC0882319F0823009F0E4C090E078
+:200AE0008F719070009721F0029709F0DDC00CC080912902813009F0D7C0109224023330AB
+:200B000069F5809324022AC080912902882331F520912B02277009F4C7C02093E9008091A1
+:200B2000EB0080FFC1C0333021F48091EB00806213C08091EB0080618093EB0081E090E0F5
+:200B400002C0880F991F2A95E2F78093EA001092EA008091EB0088608093EB001092E900F6
+:200B60008091E800877F83C0882309F09CC0109129028091E800877F8093E800E8DC04C0E5
+:200B80008EB3882309F490C08091E80080FFF8CF812F8F7711F492E001C093E09EBB80683B
+:200BA0008093E30081C08058823008F07CC08091290290912A0223E08C3D920799F55FB7AE
+:200BC000F894DE0115964EE020E030E061E2E42FF0E060935700849120FF03C082958F7044
+:200BE0004F5F982F9F70892F805D8A3308F0895F8C9311961C9211972F5F3F4F129624310A
+:200C0000310529F75FBF8AE28B8383E08C838091E800877F8093E800CE0103966AE270E076
+:200C2000E4DC11C060912B02AE014F5F5F4F2CDCBC010097C9F18091E800877F8093E800EA
+:200C400089819A812BDD8091E8008B778093E8002BC0803841F58091E800877F8093E8009E
+:200C6000809125028093F1008091E8008E778093E8006DDC19C08823B1F4909129029230BF
+:200C800098F48091E800877F8093E800909325025EDC80912502882311F483E001C084E0DA
+:200CA0008EBB2DDB01C028DB8091E80083FF0AC08091EB0080628093EB008091E800877FFF
+:200CC0008093E800AC960FB6F894DEBF0FBECDBFCF91DF911F91089508951F938EB3882338
+:200CE00061F01091E9001092E9008091E80083FF01C098DE17701093E9001F9108950895DF
+:200D0000FC018EB3843021F587859089A189B2890097A105B105E1F085818093E90080916A
+:200D2000E80082FF15C08091F200882319F42FEF3FEF04C08091F100282F30E08091F2003E
+:200D4000882341F48091E8008B778093E80002C02FEF3FEFC9010895FC018EB3843011F550
+:200D600087859089A189B2890097A105B105D1F081818093E9008091F2008823A9F09091CF
+:200D8000E8008091E8008E778093E80095FD0CC0FDDB982F882349F48091E8008E7780937C
+:200DA000E80003C092E001C090E0892F0895FC018EB3843051F487859089A189B289009738
+:200DC000A105B10511F0CF01C7CF08951F93FC01162F8EB38430D9F487859089A189B28973
+:200DE0000097A105B10599F081818093E9008091E80085FD08C08091E8008E778093E8003D
+:200E0000C5DB882329F41093F10080E001C082E01F9108950F931F93CF93DF93EC010D964E
+:200E2000FC0189E0DF011D928A95E9F72A813B8109818C81882311F410E001C014E0C901A1
+:200E400051DB182B1260802F61E8412F59DB882329F12E813F810D818885882311F410E0A6
+:200E600001C014E0C9013EDB182B1260802F60E8412F46DB882391F02A853B8509858C8563
+:200E8000882311F410E001C014E0C9012BDB182B1260802F61EC412F33DB01C080E0DF916D
+:200EA000CF911F910F910895CF93DF93EC018091E80083FF60C0888190E020912B02309171
+:200EC0002C022817390709F056C080912802813261F0823220F4803209F04DC019C082320A
+:200EE00069F1833209F047C038C080912702813A09F041C08091E800877F8093E800CE0133
+:200F00000F9667E070E071DB8091E8008B7713C080912702813279F58091E800877F80930E
+:200F2000E800CE010F9667E070E013DCCE013ED98091E8008E778093E8001DC080912702D9
+:200F40008132C9F48091E800877F8093E800809129028D87CE01C8D90DC0809127028132AD
+:200F600051F48091E800877F8093E800CE0160912902C5DEECDADF91CF910895A1E21A2EA6
+:200F8000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA217B307E407F50720F0A21BB30BE40B49
+:200FA000F50B661F771F881F991F1A9469F760957095809590959B01AC01BD01CF01089501
+:200FC000F894FFCF00034000000440000002080000000000000000000000FFFFFFFFFFFF2C
+:200FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+:201000004BC0000064C0000062C0000060C000005EC000005CC000005AC0000058C00000F3
+:2010200056C0000054C0000052C00000CBC400004EC000004CC000004AC0000048C00000B9
+:2010400046C0000044C0000042C0000040C000003EC000003CC000003AC0000038C0000098
+:2010600036C0000034C0000032C0000030C000002EC000002CC000002AC0000028C00000F8
+:2010800026C0000024C0000022C0000020C000001EC000001CC0000011241FBECFEFD2E088
+:2010A000DEBFCDBF11E0A0E0B1E0E4EBFCE102C005900D92AC35B107D9F711E0ACE5B1E0E7
+:2010C00001C01D92AB37B107E1F74FD3F1C598CF982F15C08091F200882371F48091E80047
+:2010E0008B7F8093E80003C08EB3882351F08091E80082FFF9CF02C08091F1009150992358
+:2011000049F7089520916A013091690180916801909167018093610190936201C9018093D0
+:20112000630190936401089580916501843009F45AC0853030F4813059F0833009F0C3C0E2
+:201140001FC0853009F4A0C0863009F0BCC0AFC080916601823008F0B6C0D4DF8091660141
+:20116000882361F4809161019091620123E0FC0120935700E89507B600FCFDCF85E008C03F
+:2011800080916601882311F0823029F4BBDF89E0809301010895813009F095C020E030E098
+:2011A00040E050E0F90184918F3F81F0CA01AA27BB278093600130936201209361018AE0FA
+:2011C0008093010185E080935D0108952F5F3F4F4F4F5F4F2030F0E13F07F0E04F07F0E0C2
+:2011E0005F0701F7089580916601833051F581E080935C0180916B0190916C01892B71F092
+:2012000080916701813009F05EC080916A019091690190935F0180935E010895809167017B
+:20122000882361F42CE088E190E00FB6F894A895809360000FBE20936000089510920001A8
+:201240000895882309F03FC0809167018F3F09F03AC0E0E0F0E093E085E090935700E895B5
+:2012600007B600FCFDCF80935700E89507B600FCFDCFE058FF4F20E1E030F20771F781E123
+:2012800080935700E8950895E091670180916601882321F4F0E0EB5FFE4F05C0813099F44F
+:2012A000F0E0EE52FF4F808180937001089580916601833041F480916701882321F4809104
+:2012C00068018093600108952F923F924F925F926F927F929F92AF92BF92CF92DF92EF9208
+:2012E000FF920F931F93CF93DF938091790190917A0190936C0180936B0180916D018823D5
+:2013000051F080916D01815080936D0180916D01882309F45D9A80916E01882351F0809120
+:201320006E01815080936E0180916E01882309F45C9A80917401833009F4B2C1843030F44C
+:20134000813071F0823009F0E3C111C1853009F4C5C1853008F4BAC1863009F0D9C1CDC11F
+:201360005C9883E080936E018091E800877F8093E80080915C01882329F0D6DE5D9A5C9AC7
+:2013800010925C0120916B0130916C012115310529F42AC08EB3882309F4BAC18091E80033
+:2013A00082FFF8CF8091F100809365012150304030936C0120936B01E6E6F1E00CC08091C0
+:2013C000F10081932150304081E0EB36F80719F43183208308C08091F200882381F7309391
+:2013E0006C0120936B01A0DE80910101853009F0BAC080916B0190916C01892B21F482E072
+:2014000080930101B0C08AE163DE809161018F715FDEC0916301D09164012091610130919C
+:20142000620121968E01021B130B219780916601882309F093C0180136942794C901A09108
+:201440006001B0E09C01AD0162E0E62EF12C012D112DE20EF31E041F151F59016A0190E0E4
+:2014600099249394B5E0A3E048C08091F200882371F48091E8008B7F8093E80004C08EB352
+:20148000882309F445C18091E80082FFF8CF0894210831088091F100682F8091F100782F1D
+:2014A000F5010B0190925700E89511249F5F903419F021143104A1F4F901B0935700E89524
+:2014C00007B600FCFDCF2114310451F0F701A0935700E89507B600FCFDCFA801970190E0A7
+:2014E00042E0442E512C612C712CE40CF51C061D171DA40CB51CC61CD71C2114310409F0A0
+:20150000B4CFD0936201C093610181E180935700E89527C08091F200882371F48091E80091
+:201520008B7F8093E80004C08EB3882309F4F0C08091E80082FFF8CF6091F10080916101B3
+:2015400090916201A7D3809161019091620101969093620180936101015010400115110537
+:20156000C9F680E1B5DD8091E8008B7FC3C08091E800877F8093E8005D9883E080936D0160
+:2015800004C08EB3882309F4C3C08091E80080FFF8CF80910101893091F08A3069F4809167
+:2015A0006601813049F480916101909162018093F1009093F1009BC08091700196C06091A3
+:2015C00063017091640120916101309162016F5F7F4F7B01E21AF30A615070408091660120
+:2015E000882389F5870116950795C901A0916001B0E09C01AD011FC08091F200803271F4C3
+:201600008091E8008E7F8093E80004C08EB3882309F47EC08091E80080FFF8CFF90185918F
+:2016200094918093F1009093F100015010402E5F3F4F4F4F5F4F01151105F1F670936201EC
+:201640006093610129C0823039F523C08091F200803271F48091E8008E7F8093E80004C0AA
+:201660008EB3882309F454C08091E80080FFF8CF0091610110916201C80104D38093F10093
+:201680000F5F1F4F10936201009361010894E108F108E114F104D1F682E08093010127C0E6
+:2016A0008091E800877F8093E80080915D018093F1001092F1001092F1001092F1008091F3
+:2016C00001018093F1001092F10011C08091E800877F8093E80010925D0119C08091E800D4
+:2016E000877F8093E800809101018093F1008091E8008E7F8093E8000AC08091E800877F08
+:201700008093E8005D9A5C9A82E08093010187D0DF91CF911F910F91FF90EF90DF90CF9017
+:20172000BF90AF909F907F906F905F904F903F902F9008952BD181E085BF15BE089584B799
+:20174000877F84BF88E10FB6F89480936000109260000FBE81E085BF82E085BF8AB18063DB
+:201760008AB98BB180638BB90CC1E9DF789401C080D2809100018823D9F780915C01882369
+:20178000B9F7D8DFE0915E01F0915F010995FA01923071F0933089F0913029F488E091E082
+:2017A00022E130E019C080E090E020E030E014C08AE191E02BE130E00FC0882339F48091D9
+:2017C0003501282F30E085E391E006C080913901282F30E089E391E091838083C9010895C0
+:2017E0008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881FE4
+:2018000008951092F4001092F0001092E8001092ED00EBEEF0E080818E7F80830895809182
+:20182000730188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B7F8093E80079
+:2018400008958EB3882349F08091E80080FFF9CF8091E8008E7F8093E80008959C0140917A
+:20186000790150917A014617570718F4F90120E038C06115710511F0AB01F8CF8091E80080
+:201880008E7F8093E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC091
+:2018A0008EB3882381F18EB3853079F18091E80080FF17C09091F20006C081918093F1002C
+:2018C000415050409F5F4115510511F09032A8F320E0903209F421E08091E8008E7F809306
+:2018E000E8004115510591F6222381F606C08EB3882349F08EB3853041F08091E80082FF85
+:20190000F6CF80E0089582E0089583E0089554D056D01EBA1092710184E089BD89B5826006
+:2019200089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809163008E7FC5
+:20194000809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1008E7F80932E
+:20196000E1008091E20081608093E2008091E100877F8093E1008091E20088608093E20001
+:201980000895C5DF81E0809372010895C0DFE0EEF0E0808181608083E8EDF0E080818F77B4
+:2019A00080830AD00CD019BCE3E6F0E08081816080831092720108951092E20008951092A6
+:2019C000E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF938A
+:2019E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E100F9
+:201A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC7D
+:201A20001EBA26D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B451
+:201A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093D6
+:201A6000E2008091E20081608093E20080917101882311F481E001C084E08EBBF9D08091DF
+:201A8000E10083FF22C08091E20083FF1EC08091E100877F8093E10082E08EBB1092710103
+:201AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200A1DEF6
+:201AC00080E060E042E28CDED3D08091E10082FF0AC08091E20082FF06C08091E1008B7FC2
+:201AE0008093E100C5D0FF91EF91BF91AF919F918F917F916F915F914F913F912F910F905E
+:201B00000FBE0F901F9018951F93DF93CF9300D0CDB7DEB7E3E7F1E08091F100819381E07C
+:201B2000EB37F807C9F79091730180917401853011F1863040F48130B9F0813070F08330EA
+:201B400009F081C011C0883009F453C0893009F462C0863009F077C02DC0903809F474C00E
+:201B6000923809F070C070C0992309F46DC0923009F069C069C0992309F065C0109175015E
+:201B80008091E800877F8093E80049DE04C08EB3882309F459C08091E80080FFF8CF812F6F
+:201BA0008F7711F492E001C093E09EBB80688093E3004AC09058923008F045C08091750105
+:201BC0009091760160917701AE014F5F5F4FDFDDBC010097C9F18091E800877F8093E80035
+:201BE00089819A813BDE8091E8008B7F8093E8002BC0903841F58091E800877F8093E800C6
+:201C0000809171018093F1008091E8008E7F8093E80005DE19C09923B1F4909175019230C6
+:201C200098F48091E800877F8093E80090937101F6DD80917101882311F483E001C084E0FB
+:201C40008EBB16D001C040DB8091E80083FF0AC08091EB0080628093EB008091E800877F59
+:201C60008093E8000F900F90CF91DF911F91089508958EB3882329F08091E80083FF01C030
+:201C800043CF0895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD6B
+:201CA00020BD0FB6F894FA9AF99A0FBE01960895F894FFCF01021E938220DCFB1201100123
+:201CC00000000020EB03F72F00000001000109021B0001010080320904000000FE010200E6
+:201CE0000921030000000C0001040309042003410072006400750069006E006F002000552C
+:101D0000006E006F002000440046005500000000F7
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c
new file mode 100644
index 0000000..7bed831
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c
@@ -0,0 +1,728 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Main source file for the DFU class bootloader. This file contains the complete bootloader logic.
+ */
+
+#define INCLUDE_FROM_BOOTLOADER_C
+#include "Arduino-usbdfu.h"
+
+/** Flag to indicate if the bootloader should be running, or should exit and allow the application code to run
+ * via a soft reset. When cleared, the bootloader will abort, the USB interface will shut down and the application
+ * jumped to via an indirect jump to location 0x0000 (or other location specified by the host).
+ */
+bool RunBootloader = true;
+
+/** Flag to indicate if the bootloader is waiting to exit. When the host requests the bootloader to exit and
+ * jump to the application address it specifies, it sends two sequential commands which must be properly
+ * acknowledged. Upon reception of the first the RunBootloader flag is cleared and the WaitForExit flag is set,
+ * causing the bootloader to wait for the final exit command before shutting down.
+ */
+bool WaitForExit = false;
+
+/** Current DFU state machine state, one of the values in the DFU_State_t enum. */
+uint8_t DFU_State = dfuIDLE;
+
+/** Status code of the last executed DFU command. This is set to one of the values in the DFU_Status_t enum after
+ * each operation, and returned to the host when a Get Status DFU request is issued.
+ */
+uint8_t DFU_Status = OK;
+
+/** Data containing the DFU command sent from the host. */
+DFU_Command_t SentCommand;
+
+/** Response to the last issued Read Data DFU command. Unlike other DFU commands, the read command
+ * requires a single byte response from the bootloader containing the read data when the next DFU_UPLOAD command
+ * is issued by the host.
+ */
+uint8_t ResponseByte;
+
+/** Pointer to the start of the user application. By default this is 0x0000 (the reset vector), however the host
+ * may specify an alternate address when issuing the application soft-start command.
+ */
+AppPtr_t AppStartPtr = (AppPtr_t)0x0000;
+
+/** 64-bit flash page number. This is concatenated with the current 16-bit address on USB AVRs containing more than
+ * 64KB of flash memory.
+ */
+uint8_t Flash64KBPage = 0;
+
+/** Memory start address, indicating the current address in the memory being addressed (either FLASH or EEPROM
+ * depending on the issued command from the host).
+ */
+uint16_t StartAddr = 0x0000;
+
+/** Memory end address, indicating the end address to read to/write from in the memory being addressed (either FLASH
+ * of EEPROM depending on the issued command from the host).
+ */
+uint16_t EndAddr = 0x0000;
+
+
+/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */
+volatile struct
+{
+ uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */
+ uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */
+ uint8_t PingPongLEDPulse; /**< Milliseconds remaining for enumeration Tx/Rx ping-pong LED pulse */
+} PulseMSRemaining;
+
+/** Main program entry point. This routine configures the hardware required by the bootloader, then continuously
+ * runs the bootloader processing routine until instructed to soft-exit, or hard-reset via the watchdog to start
+ * the loaded application code.
+ */
+int main(void)
+{
+ /* Configure hardware required by the bootloader */
+ SetupHardware();
+
+ /* Enable global interrupts so that the USB stack can function */
+ sei();
+
+ /* Run the USB management task while the bootloader is supposed to be running */
+ while (RunBootloader || WaitForExit)
+ USB_USBTask();
+
+ /* Reset configured hardware back to their original states for the user application */
+ ResetHardware();
+
+ /* Start the user application */
+ AppStartPtr();
+}
+
+/** Configures all hardware required for the bootloader. */
+void SetupHardware(void)
+{
+ /* Disable watchdog if enabled by bootloader/fuses */
+ MCUSR &= ~(1 << WDRF);
+ wdt_disable();
+
+ /* Disable clock division */
+// clock_prescale_set(clock_div_1);
+
+ /* Relocate the interrupt vector table to the bootloader section */
+ MCUCR = (1 << IVCE);
+ MCUCR = (1 << IVSEL);
+
+ LEDs_Init();
+
+ /* Initialize the USB subsystem */
+ USB_Init();
+}
+
+/** Resets all configured hardware required for the bootloader back to their original states. */
+void ResetHardware(void)
+{
+ /* Shut down the USB subsystem */
+ USB_ShutDown();
+
+ /* Relocate the interrupt vector table back to the application section */
+ MCUCR = (1 << IVCE);
+ MCUCR = 0;
+}
+
+/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
+ * control requests that are not handled internally by the USB library (including the DFU commands, which are
+ * all issued via the control endpoint), so that they can be handled appropriately for the application.
+ */
+void EVENT_USB_Device_UnhandledControlRequest(void)
+{
+ /* Get the size of the command and data from the wLength value */
+ SentCommand.DataSize = USB_ControlRequest.wLength;
+
+ /* Turn off TX LED(s) once the TX pulse period has elapsed */
+ if (PulseMSRemaining.TxLEDPulse && !(--PulseMSRemaining.TxLEDPulse))
+ LEDs_TurnOffLEDs(LEDMASK_TX);
+
+ /* Turn off RX LED(s) once the RX pulse period has elapsed */
+ if (PulseMSRemaining.RxLEDPulse && !(--PulseMSRemaining.RxLEDPulse))
+ LEDs_TurnOffLEDs(LEDMASK_RX);
+
+ switch (USB_ControlRequest.bRequest)
+ {
+ case DFU_DNLOAD:
+ LEDs_TurnOnLEDs(LEDMASK_RX);
+ PulseMSRemaining.RxLEDPulse = TX_RX_LED_PULSE_MS;
+
+ Endpoint_ClearSETUP();
+
+ /* Check if bootloader is waiting to terminate */
+ if (WaitForExit)
+ {
+ /* Bootloader is terminating - process last received command */
+ ProcessBootloaderCommand();
+
+ /* Turn off TX/RX status LEDs so that they're not left on when application starts */
+ LEDs_TurnOffLEDs(LEDMASK_TX);
+ LEDs_TurnOffLEDs(LEDMASK_RX);
+
+ /* Indicate that the last command has now been processed - free to exit bootloader */
+ WaitForExit = false;
+ }
+
+ /* If the request has a data stage, load it into the command struct */
+ if (SentCommand.DataSize)
+ {
+ while (!(Endpoint_IsOUTReceived()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+
+ /* First byte of the data stage is the DNLOAD request's command */
+ SentCommand.Command = Endpoint_Read_Byte();
+
+ /* One byte of the data stage is the command, so subtract it from the total data bytes */
+ SentCommand.DataSize--;
+
+ /* Load in the rest of the data stage as command parameters */
+ for (uint8_t DataByte = 0; (DataByte < sizeof(SentCommand.Data)) &&
+ Endpoint_BytesInEndpoint(); DataByte++)
+ {
+ SentCommand.Data[DataByte] = Endpoint_Read_Byte();
+ SentCommand.DataSize--;
+ }
+
+ /* Process the command */
+ ProcessBootloaderCommand();
+ }
+
+ /* Check if currently downloading firmware */
+ if (DFU_State == dfuDNLOAD_IDLE)
+ {
+ if (!(SentCommand.DataSize))
+ {
+ DFU_State = dfuIDLE;
+ }
+ else
+ {
+ /* Throw away the filler bytes before the start of the firmware */
+ DiscardFillerBytes(DFU_FILLER_BYTES_SIZE);
+
+ /* Throw away the packet alignment filler bytes before the start of the firmware */
+ DiscardFillerBytes(StartAddr % FIXED_CONTROL_ENDPOINT_SIZE);
+
+ /* Calculate the number of bytes remaining to be written */
+ uint16_t BytesRemaining = ((EndAddr - StartAddr) + 1);
+
+ if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00)) // Write flash
+ {
+ /* Calculate the number of words to be written from the number of bytes to be written */
+ uint16_t WordsRemaining = (BytesRemaining >> 1);
+
+ union
+ {
+ uint16_t Words[2];
+ uint32_t Long;
+ } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}};
+
+ uint32_t CurrFlashPageStartAddress = CurrFlashAddress.Long;
+ uint8_t WordsInFlashPage = 0;
+
+ while (WordsRemaining--)
+ {
+ /* Check if endpoint is empty - if so clear it and wait until ready for next packet */
+ if (!(Endpoint_BytesInEndpoint()))
+ {
+ Endpoint_ClearOUT();
+
+ while (!(Endpoint_IsOUTReceived()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+ }
+
+ /* Write the next word into the current flash page */
+ boot_page_fill(CurrFlashAddress.Long, Endpoint_Read_Word_LE());
+
+ /* Adjust counters */
+ WordsInFlashPage += 1;
+ CurrFlashAddress.Long += 2;
+
+ /* See if an entire page has been written to the flash page buffer */
+ if ((WordsInFlashPage == (SPM_PAGESIZE >> 1)) || !(WordsRemaining))
+ {
+ /* Commit the flash page to memory */
+ boot_page_write(CurrFlashPageStartAddress);
+ boot_spm_busy_wait();
+
+ /* Check if programming incomplete */
+ if (WordsRemaining)
+ {
+ CurrFlashPageStartAddress = CurrFlashAddress.Long;
+ WordsInFlashPage = 0;
+
+ /* Erase next page's temp buffer */
+ boot_page_erase(CurrFlashAddress.Long);
+ boot_spm_busy_wait();
+ }
+ }
+ }
+
+ /* Once programming complete, start address equals the end address */
+ StartAddr = EndAddr;
+
+ /* Re-enable the RWW section of flash */
+ boot_rww_enable();
+ }
+ else // Write EEPROM
+ {
+ while (BytesRemaining--)
+ {
+ /* Check if endpoint is empty - if so clear it and wait until ready for next packet */
+ if (!(Endpoint_BytesInEndpoint()))
+ {
+ Endpoint_ClearOUT();
+
+ while (!(Endpoint_IsOUTReceived()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+ }
+
+ /* Read the byte from the USB interface and write to to the EEPROM */
+ eeprom_write_byte((uint8_t*)StartAddr, Endpoint_Read_Byte());
+
+ /* Adjust counters */
+ StartAddr++;
+ }
+ }
+
+ /* Throw away the currently unused DFU file suffix */
+ DiscardFillerBytes(DFU_FILE_SUFFIX_SIZE);
+ }
+ }
+
+ Endpoint_ClearOUT();
+
+ Endpoint_ClearStatusStage();
+
+ break;
+ case DFU_UPLOAD:
+ Endpoint_ClearSETUP();
+
+ LEDs_TurnOnLEDs(LEDMASK_TX);
+ PulseMSRemaining.TxLEDPulse = TX_RX_LED_PULSE_MS;
+
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+
+ if (DFU_State != dfuUPLOAD_IDLE)
+ {
+ if ((DFU_State == dfuERROR) && IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Blank Check
+ {
+ /* Blank checking is performed in the DFU_DNLOAD request - if we get here we've told the host
+ that the memory isn't blank, and the host is requesting the first non-blank address */
+ Endpoint_Write_Word_LE(StartAddr);
+ }
+ else
+ {
+ /* Idle state upload - send response to last issued command */
+ Endpoint_Write_Byte(ResponseByte);
+ }
+ }
+ else
+ {
+ /* Determine the number of bytes remaining in the current block */
+ uint16_t BytesRemaining = ((EndAddr - StartAddr) + 1);
+
+ if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00)) // Read FLASH
+ {
+ /* Calculate the number of words to be written from the number of bytes to be written */
+ uint16_t WordsRemaining = (BytesRemaining >> 1);
+
+ union
+ {
+ uint16_t Words[2];
+ uint32_t Long;
+ } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}};
+
+ while (WordsRemaining--)
+ {
+ /* Check if endpoint is full - if so clear it and wait until ready for next packet */
+ if (Endpoint_BytesInEndpoint() == FIXED_CONTROL_ENDPOINT_SIZE)
+ {
+ Endpoint_ClearIN();
+
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+ }
+
+ /* Read the flash word and send it via USB to the host */
+ #if (FLASHEND > 0xFFFF)
+ Endpoint_Write_Word_LE(pgm_read_word_far(CurrFlashAddress.Long));
+ #else
+ Endpoint_Write_Word_LE(pgm_read_word(CurrFlashAddress.Long));
+ #endif
+
+ /* Adjust counters */
+ CurrFlashAddress.Long += 2;
+ }
+
+ /* Once reading is complete, start address equals the end address */
+ StartAddr = EndAddr;
+ }
+ else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x02)) // Read EEPROM
+ {
+ while (BytesRemaining--)
+ {
+ /* Check if endpoint is full - if so clear it and wait until ready for next packet */
+ if (Endpoint_BytesInEndpoint() == FIXED_CONTROL_ENDPOINT_SIZE)
+ {
+ Endpoint_ClearIN();
+
+ while (!(Endpoint_IsINReady()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+ }
+
+ /* Read the EEPROM byte and send it via USB to the host */
+ Endpoint_Write_Byte(eeprom_read_byte((uint8_t*)StartAddr));
+
+ /* Adjust counters */
+ StartAddr++;
+ }
+ }
+
+ /* Return to idle state */
+ DFU_State = dfuIDLE;
+ }
+
+ Endpoint_ClearIN();
+
+ Endpoint_ClearStatusStage();
+ break;
+ case DFU_GETSTATUS:
+ Endpoint_ClearSETUP();
+
+ /* Write 8-bit status value */
+ Endpoint_Write_Byte(DFU_Status);
+
+ /* Write 24-bit poll timeout value */
+ Endpoint_Write_Byte(0);
+ Endpoint_Write_Word_LE(0);
+
+ /* Write 8-bit state value */
+ Endpoint_Write_Byte(DFU_State);
+
+ /* Write 8-bit state string ID number */
+ Endpoint_Write_Byte(0);
+
+ Endpoint_ClearIN();
+
+ Endpoint_ClearStatusStage();
+ break;
+ case DFU_CLRSTATUS:
+ Endpoint_ClearSETUP();
+
+ /* Reset the status value variable to the default OK status */
+ DFU_Status = OK;
+
+ Endpoint_ClearStatusStage();
+ break;
+ case DFU_GETSTATE:
+ Endpoint_ClearSETUP();
+
+ /* Write the current device state to the endpoint */
+ Endpoint_Write_Byte(DFU_State);
+
+ Endpoint_ClearIN();
+
+ Endpoint_ClearStatusStage();
+ break;
+ case DFU_ABORT:
+ Endpoint_ClearSETUP();
+
+ /* Turn off TX/RX status LEDs so that they're not left on when application starts */
+ LEDs_TurnOffLEDs(LEDMASK_TX);
+ LEDs_TurnOffLEDs(LEDMASK_RX);
+
+ /* Reset the current state variable to the default idle state */
+ DFU_State = dfuIDLE;
+
+ Endpoint_ClearStatusStage();
+ break;
+ }
+}
+
+/** Routine to discard the specified number of bytes from the control endpoint stream. This is used to
+ * discard unused bytes in the stream from the host, including the memory program block suffix.
+ *
+ * \param[in] NumberOfBytes Number of bytes to discard from the host from the control endpoint
+ */
+static void DiscardFillerBytes(uint8_t NumberOfBytes)
+{
+ while (NumberOfBytes--)
+ {
+ if (!(Endpoint_BytesInEndpoint()))
+ {
+ Endpoint_ClearOUT();
+
+ /* Wait until next data packet received */
+ while (!(Endpoint_IsOUTReceived()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
+ }
+ else
+ {
+ Endpoint_Discard_Byte();
+ }
+ }
+}
+
+/** Routine to process an issued command from the host, via a DFU_DNLOAD request wrapper. This routine ensures
+ * that the command is allowed based on the current secure mode flag value, and passes the command off to the
+ * appropriate handler function.
+ */
+static void ProcessBootloaderCommand(void)
+{
+ /* Check if device is in secure mode */
+// if (IsSecure)
+// {
+// /* Don't process command unless it is a READ or chip erase command */
+// if (!(((SentCommand.Command == COMMAND_WRITE) &&
+// IS_TWOBYTE_COMMAND(SentCommand.Data, 0x00, 0xFF)) ||
+// (SentCommand.Command == COMMAND_READ)))
+// {
+// /* Set the state and status variables to indicate the error */
+// DFU_State = dfuERROR;
+// DFU_Status = errWRITE;
+//
+// /* Stall command */
+// Endpoint_StallTransaction();
+//
+// /* Don't process the command */
+// return;
+// }
+// }
+
+ /* Dispatch the required command processing routine based on the command type */
+ switch (SentCommand.Command)
+ {
+ case COMMAND_PROG_START:
+ ProcessMemProgCommand();
+ break;
+ case COMMAND_DISP_DATA:
+ ProcessMemReadCommand();
+ break;
+ case COMMAND_WRITE:
+ ProcessWriteCommand();
+ break;
+ case COMMAND_READ:
+ ProcessReadCommand();
+ break;
+ case COMMAND_CHANGE_BASE_ADDR:
+ if (IS_TWOBYTE_COMMAND(SentCommand.Data, 0x03, 0x00)) // Set 64KB flash page command
+ Flash64KBPage = SentCommand.Data[2];
+ break;
+ }
+}
+
+/** Routine to concatenate the given pair of 16-bit memory start and end addresses from the host, and store them
+ * in the StartAddr and EndAddr global variables.
+ */
+static void LoadStartEndAddresses(void)
+{
+ union
+ {
+ uint8_t Bytes[2];
+ uint16_t Word;
+ } Address[2] = {{.Bytes = {SentCommand.Data[2], SentCommand.Data[1]}},
+ {.Bytes = {SentCommand.Data[4], SentCommand.Data[3]}}};
+
+ /* Load in the start and ending read addresses from the sent data packet */
+ StartAddr = Address[0].Word;
+ EndAddr = Address[1].Word;
+}
+
+/** Handler for a Memory Program command issued by the host. This routine handles the preparations needed
+ * to write subsequent data from the host into the specified memory.
+ */
+static void ProcessMemProgCommand(void)
+{
+ if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00) || // Write FLASH command
+ IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Write EEPROM command
+ {
+ /* Load in the start and ending read addresses */
+ LoadStartEndAddresses();
+
+ /* If FLASH is being written to, we need to pre-erase the first page to write to */
+ if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00))
+ {
+ union
+ {
+ uint16_t Words[2];
+ uint32_t Long;
+ } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}};
+
+ /* Erase the current page's temp buffer */
+ boot_page_erase(CurrFlashAddress.Long);
+ boot_spm_busy_wait();
+ }
+
+ /* Set the state so that the next DNLOAD requests reads in the firmware */
+ DFU_State = dfuDNLOAD_IDLE;
+ }
+}
+
+/** Handler for a Memory Read command issued by the host. This routine handles the preparations needed
+ * to read subsequent data from the specified memory out to the host, as well as implementing the memory
+ * blank check command.
+ */
+static void ProcessMemReadCommand(void)
+{
+ if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00) || // Read FLASH command
+ IS_ONEBYTE_COMMAND(SentCommand.Data, 0x02)) // Read EEPROM command
+ {
+ /* Load in the start and ending read addresses */
+ LoadStartEndAddresses();
+
+ /* Set the state so that the next UPLOAD requests read out the firmware */
+ DFU_State = dfuUPLOAD_IDLE;
+ }
+ else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Blank check FLASH command
+ {
+ uint32_t CurrFlashAddress = 0;
+
+ while (CurrFlashAddress < BOOT_START_ADDR)
+ {
+ /* Check if the current byte is not blank */
+ #if (FLASHEND > 0xFFFF)
+ if (pgm_read_byte_far(CurrFlashAddress) != 0xFF)
+ #else
+ if (pgm_read_byte(CurrFlashAddress) != 0xFF)
+ #endif
+ {
+ /* Save the location of the first non-blank byte for response back to the host */
+ Flash64KBPage = (CurrFlashAddress >> 16);
+ StartAddr = CurrFlashAddress;
+
+ /* Set state and status variables to the appropriate error values */
+ DFU_State = dfuERROR;
+ DFU_Status = errCHECK_ERASED;
+
+ break;
+ }
+
+ CurrFlashAddress++;
+ }
+ }
+}
+
+/** Handler for a Data Write command issued by the host. This routine handles non-programming commands such as
+ * bootloader exit (both via software jumps and hardware watchdog resets) and flash memory erasure.
+ */
+static void ProcessWriteCommand(void)
+{
+ if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x03)) // Start application
+ {
+ /* Indicate that the bootloader is terminating */
+ WaitForExit = true;
+
+ /* Check if data supplied for the Start Program command - no data executes the program */
+ if (SentCommand.DataSize)
+ {
+ if (SentCommand.Data[1] == 0x01) // Start via jump
+ {
+ union
+ {
+ uint8_t Bytes[2];
+ AppPtr_t FuncPtr;
+ } Address = {.Bytes = {SentCommand.Data[4], SentCommand.Data[3]}};
+
+ /* Load in the jump address into the application start address pointer */
+ AppStartPtr = Address.FuncPtr;
+ }
+ }
+ else
+ {
+ if (SentCommand.Data[1] == 0x00) // Start via watchdog
+ {
+ /* Start the watchdog to reset the AVR once the communications are finalized */
+ wdt_enable(WDTO_250MS);
+ }
+ else // Start via jump
+ {
+ /* Set the flag to terminate the bootloader at next opportunity */
+ RunBootloader = false;
+ }
+ }
+ }
+ else if (IS_TWOBYTE_COMMAND(SentCommand.Data, 0x00, 0xFF)) // Erase flash
+ {
+ uint32_t CurrFlashAddress = 0;
+
+ /* Clear the application section of flash */
+ while (CurrFlashAddress < BOOT_START_ADDR)
+ {
+ boot_page_erase(CurrFlashAddress);
+ boot_spm_busy_wait();
+ boot_page_write(CurrFlashAddress);
+ boot_spm_busy_wait();
+
+ CurrFlashAddress += SPM_PAGESIZE;
+ }
+
+ /* Re-enable the RWW section of flash as writing to the flash locks it out */
+ boot_rww_enable();
+
+ /* Memory has been erased, reset the security bit so that programming/reading is allowed */
+// IsSecure = false;
+ }
+}
+
+/** Handler for a Data Read command issued by the host. This routine handles bootloader information retrieval
+ * commands such as device signature and bootloader version retrieval.
+ */
+static void ProcessReadCommand(void)
+{
+ const uint8_t BootloaderInfo[3] = {BOOTLOADER_VERSION, BOOTLOADER_ID_BYTE1, BOOTLOADER_ID_BYTE2};
+ const uint8_t SignatureInfo[3] = {AVR_SIGNATURE_1, AVR_SIGNATURE_2, AVR_SIGNATURE_3};
+
+ uint8_t DataIndexToRead = SentCommand.Data[1];
+
+ if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00)) // Read bootloader info
+ ResponseByte = BootloaderInfo[DataIndexToRead];
+ else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Read signature byte
+ ResponseByte = SignatureInfo[DataIndexToRead - 0x30];
+}
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h
new file mode 100644
index 0000000..4fb236e
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h
@@ -0,0 +1,220 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Header file for Arduino-usbdfu.c.
+ */
+
+#ifndef _ARDUINO_USB_DFU_BOOTLOADER_H_
+#define _ARDUINO_USB_DFU_BOOTLOADER_H_
+
+ /* Includes: */
+ #include <avr/io.h>
+ #include <avr/wdt.h>
+ #include <avr/boot.h>
+ #include <avr/pgmspace.h>
+ #include <avr/eeprom.h>
+ #include <avr/power.h>
+ #include <avr/interrupt.h>
+ #include <stdbool.h>
+
+ #include "Descriptors.h"
+
+ #include <LUFA/Drivers/Board/LEDs.h>
+ #include <LUFA/Drivers/USB/USB.h>
+
+ /* Macros: */
+ /** LED mask for the library LED driver, to indicate TX activity. */
+ #define LEDMASK_TX LEDS_LED1
+
+ /** LED mask for the library LED driver, to indicate RX activity. */
+ #define LEDMASK_RX LEDS_LED2
+
+ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
+ #define LEDMASK_ERROR (LEDS_LED1 | LEDS_LED2)
+
+ /** LED mask for the library LED driver, to indicate that the USB interface is busy. */
+ #define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2)
+
+ /** Configuration define. Define this token to true to case the bootloader to reject all memory commands
+ * until a memory erase has been performed. When used in conjunction with the lockbits of the AVR, this
+ * can protect the AVR's firmware from being dumped from a secured AVR. When false, memory operations are
+ * allowed at any time.
+ */
+// #define SECURE_MODE false
+
+ /** Major bootloader version number. */
+ #define BOOTLOADER_VERSION_MINOR 2
+
+ /** Minor bootloader version number. */
+ #define BOOTLOADER_VERSION_REV 0
+
+ /** Complete bootloader version number expressed as a packed byte, constructed from the
+ * two individual bootloader version macros.
+ */
+ #define BOOTLOADER_VERSION ((BOOTLOADER_VERSION_MINOR << 4) | BOOTLOADER_VERSION_REV)
+
+ /** First byte of the bootloader identification bytes, used to identify a device's bootloader. */
+ #define BOOTLOADER_ID_BYTE1 0xDC
+
+ /** Second byte of the bootloader identification bytes, used to identify a device's bootloader. */
+ #define BOOTLOADER_ID_BYTE2 0xFB
+
+ /** Convenience macro, used to determine if the issued command is the given one-byte long command.
+ *
+ * \param[in] dataarr Command byte array to check against
+ * \param[in] cb1 First command byte to check
+ */
+ #define IS_ONEBYTE_COMMAND(dataarr, cb1) (dataarr[0] == (cb1))
+
+ /** Convenience macro, used to determine if the issued command is the given two-byte long command.
+ *
+ * \param[in] dataarr Command byte array to check against
+ * \param[in] cb1 First command byte to check
+ * \param[in] cb2 Second command byte to check
+ */
+ #define IS_TWOBYTE_COMMAND(dataarr, cb1, cb2) ((dataarr[0] == (cb1)) && (dataarr[1] == (cb2)))
+
+ /** Length of the DFU file suffix block, appended to the end of each complete memory write command.
+ * The DFU file suffix is currently unused (but is designed to give extra file information, such as
+ * a CRC of the complete firmware for error checking) and so is discarded.
+ */
+ #define DFU_FILE_SUFFIX_SIZE 16
+
+ /** Length of the DFU file filler block, appended to the start of each complete memory write command.
+ * Filler bytes are added to the start of each complete memory write command, and must be discarded.
+ */
+ #define DFU_FILLER_BYTES_SIZE 26
+
+ /** DFU class command request to detach from the host. */
+ #define DFU_DETATCH 0x00
+
+ /** DFU class command request to send data from the host to the bootloader. */
+ #define DFU_DNLOAD 0x01
+
+ /** DFU class command request to send data from the bootloader to the host. */
+ #define DFU_UPLOAD 0x02
+
+ /** DFU class command request to get the current DFU status and state from the bootloader. */
+ #define DFU_GETSTATUS 0x03
+
+ /** DFU class command request to reset the current DFU status and state variables to their defaults. */
+ #define DFU_CLRSTATUS 0x04
+
+ /** DFU class command request to get the current DFU state of the bootloader. */
+ #define DFU_GETSTATE 0x05
+
+ /** DFU class command request to abort the current multi-request transfer and return to the dfuIDLE state. */
+ #define DFU_ABORT 0x06
+
+ /** DFU command to begin programming the device's memory. */
+ #define COMMAND_PROG_START 0x01
+
+ /** DFU command to begin reading the device's memory. */
+ #define COMMAND_DISP_DATA 0x03
+
+ /** DFU command to issue a write command. */
+ #define COMMAND_WRITE 0x04
+
+ /** DFU command to issue a read command. */
+ #define COMMAND_READ 0x05
+
+ /** DFU command to issue a memory base address change command, to set the current 64KB flash page
+ * that subsequent flash operations should use. */
+ #define COMMAND_CHANGE_BASE_ADDR 0x06
+
+ /* Type Defines: */
+ /** Type define for a non-returning function pointer to the loaded application. */
+ typedef void (*AppPtr_t)(void) ATTR_NO_RETURN;
+
+ /** Type define for a structure containing a complete DFU command issued by the host. */
+ typedef struct
+ {
+ uint8_t Command; /**< Single byte command to perform, one of the COMMAND_* macro values */
+ uint8_t Data[5]; /**< Command parameters */
+ uint16_t DataSize; /**< Size of the command parameters */
+ } DFU_Command_t;
+
+ /* Enums: */
+ /** DFU bootloader states. Refer to the DFU class specification for information on each state. */
+ enum DFU_State_t
+ {
+ appIDLE = 0,
+ appDETACH = 1,
+ dfuIDLE = 2,
+ dfuDNLOAD_SYNC = 3,
+ dfuDNBUSY = 4,
+ dfuDNLOAD_IDLE = 5,
+ dfuMANIFEST_SYNC = 6,
+ dfuMANIFEST = 7,
+ dfuMANIFEST_WAIT_RESET = 8,
+ dfuUPLOAD_IDLE = 9,
+ dfuERROR = 10
+ };
+
+ /** DFU command status error codes. Refer to the DFU class specification for information on each error code. */
+ enum DFU_Status_t
+ {
+ OK = 0,
+ errTARGET = 1,
+ errFILE = 2,
+ errWRITE = 3,
+ errERASE = 4,
+ errCHECK_ERASED = 5,
+ errPROG = 6,
+ errVERIFY = 7,
+ errADDRESS = 8,
+ errNOTDONE = 9,
+ errFIRMWARE = 10,
+ errVENDOR = 11,
+ errUSBR = 12,
+ errPOR = 13,
+ errUNKNOWN = 14,
+ errSTALLEDPKT = 15
+ };
+
+ /* Function Prototypes: */
+ void SetupHardware(void);
+ void ResetHardware(void);
+
+ void EVENT_USB_Device_UnhandledControlRequest(void);
+
+ #if defined(INCLUDE_FROM_BOOTLOADER_C)
+ static void DiscardFillerBytes(uint8_t NumberOfBytes);
+ static void ProcessBootloaderCommand(void);
+ static void LoadStartEndAddresses(void);
+ static void ProcessMemProgCommand(void);
+ static void ProcessMemReadCommand(void);
+ static void ProcessWriteCommand(void);
+ static void ProcessReadCommand(void);
+ #endif
+
+#endif /* _ARDUINO_USB_DFU_BOOTLOADER_H_ */
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h
new file mode 100644
index 0000000..152e8f5
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h
@@ -0,0 +1,110 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/*
+ Board LEDs driver for the Benito board, from www.dorkbotpdx.org.
+*/
+
+#ifndef __LEDS_ARDUINOUNO_H__
+#define __LEDS_ARDUINOUNO_H__
+
+ /* Includes: */
+ #include <avr/io.h>
+
+/* Enable C linkage for C++ Compilers: */
+ #if defined(__cplusplus)
+ extern "C" {
+ #endif
+
+ /* Preprocessor Checks: */
+ #if !defined(INCLUDE_FROM_LEDS_H)
+ #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
+ #endif
+
+ /* Public Interface - May be used in end-application: */
+ /* Macros: */
+ /** LED mask for the first LED on the board. */
+ #define LEDS_LED1 (1 << 5)
+
+ /** LED mask for the second LED on the board. */
+ #define LEDS_LED2 (1 << 4)
+
+ /** LED mask for all the LEDs on the board. */
+ #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2)
+
+ /** LED mask for the none of the board LEDs */
+ #define LEDS_NO_LEDS 0
+
+ /* Inline Functions: */
+ #if !defined(__DOXYGEN__)
+ static inline void LEDs_Init(void)
+ {
+ DDRD |= LEDS_ALL_LEDS;
+ PORTD |= LEDS_ALL_LEDS;
+ }
+
+ static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
+ {
+ PORTD &= ~LEDMask;
+ }
+
+ static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
+ {
+ PORTD |= LEDMask;
+ }
+
+ static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
+ {
+ PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask);
+ }
+
+ static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask)
+ {
+ PORTD = ((PORTD | ActiveMask) & ~LEDMask);
+ }
+
+ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
+ {
+ PORTD ^= LEDMask;
+ }
+
+ static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
+ static inline uint8_t LEDs_GetLEDs(void)
+ {
+ return (PORTD & LEDS_ALL_LEDS);
+ }
+ #endif
+
+ /* Disable C linkage for C++ Compilers: */
+ #if defined(__cplusplus)
+ }
+ #endif
+
+#endif
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c
new file mode 100644
index 0000000..4deaa06
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c
@@ -0,0 +1,189 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
+ * computer-readable structures which the host requests upon device enumeration, to determine
+ * the device's capabilities and functions.
+ */
+
+#include "Descriptors.h"
+
+/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
+ * device characteristics, including the supported USB version, control endpoint size and the
+ * number of device configurations. The descriptor is read out by the USB host when the enumeration
+ * process begins.
+ */
+USB_Descriptor_Device_t DeviceDescriptor =
+{
+ .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
+
+ .USBSpecification = VERSION_BCD(01.10),
+ .Class = 0x00,
+ .SubClass = 0x00,
+ .Protocol = 0x00,
+
+ .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
+
+ .VendorID = 0x03EB, // Atmel
+ .ProductID = PRODUCT_ID_CODE, // MCU-dependent
+ .ReleaseNumber = 0x0000,
+
+ .ManufacturerStrIndex = NO_DESCRIPTOR,
+ .ProductStrIndex = 0x01,
+ .SerialNumStrIndex = NO_DESCRIPTOR,
+
+ .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
+};
+
+/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
+ * of the device in one of its supported configurations, including information about any device interfaces
+ * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
+ * a configuration so that the host may correctly communicate with the USB device.
+ */
+USB_Descriptor_Configuration_t ConfigurationDescriptor =
+{
+ .Config =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
+
+ .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
+ .TotalInterfaces = 1,
+
+ .ConfigurationNumber = 1,
+ .ConfigurationStrIndex = NO_DESCRIPTOR,
+
+ .ConfigAttributes = USB_CONFIG_ATTR_BUSPOWERED,
+
+ .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
+ },
+
+ .DFU_Interface =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
+
+ .InterfaceNumber = 0,
+ .AlternateSetting = 0,
+
+ .TotalEndpoints = 0,
+
+ .Class = 0xFE,
+ .SubClass = 0x01,
+ .Protocol = 0x02,
+
+ .InterfaceStrIndex = NO_DESCRIPTOR
+ },
+
+ .DFU_Functional =
+ {
+ .Header = {.Size = sizeof(USB_DFU_Functional_Descriptor_t), .Type = DTYPE_DFUFunctional},
+
+ .Attributes = (ATTR_CAN_UPLOAD | ATTR_CAN_DOWNLOAD),
+
+ .DetachTimeout = 0x0000,
+ .TransferSize = 0x0c00,
+
+ .DFUSpecification = VERSION_BCD(01.01)
+ }
+};
+
+/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
+ * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
+ * via the language ID table available at USB.org what languages the device supports for its string descriptors.
+ */
+USB_Descriptor_String_t LanguageString =
+{
+ .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
+
+ .UnicodeString = {LANGUAGE_ID_ENG}
+};
+
+/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
+ * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
+ * Descriptor.
+ */
+USB_Descriptor_String_t ProductString =
+{
+ #if (ARDUINO_MODEL_PID == ARDUINO_UNO_PID)
+ .Header = {.Size = USB_STRING_LEN(15), .Type = DTYPE_String},
+
+ .UnicodeString = L"Arduino Uno DFU"
+ #elif (ARDUINO_MODEL_PID == ARDUINO_MEGA2560_PID)
+ .Header = {.Size = USB_STRING_LEN(21), .Type = DTYPE_String},
+
+ .UnicodeString = L"Arduino Mega 2560 DFU"
+ #endif
+};
+
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
+ * documentation) by the application code so that the address and size of a requested descriptor can be given
+ * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
+ * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
+ * USB host.
+ */
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
+ const uint8_t wIndex,
+ void** const DescriptorAddress)
+{
+ const uint8_t DescriptorType = (wValue >> 8);
+ const uint8_t DescriptorNumber = (wValue & 0xFF);
+
+ void* Address = NULL;
+ uint16_t Size = NO_DESCRIPTOR;
+
+ switch (DescriptorType)
+ {
+ case DTYPE_Device:
+ Address = &DeviceDescriptor;
+ Size = sizeof(USB_Descriptor_Device_t);
+ break;
+ case DTYPE_Configuration:
+ Address = &ConfigurationDescriptor;
+ Size = sizeof(USB_Descriptor_Configuration_t);
+ break;
+ case DTYPE_String:
+ if (!(DescriptorNumber))
+ {
+ Address = &LanguageString;
+ Size = LanguageString.Header.Size;
+ }
+ else
+ {
+ Address = &ProductString;
+ Size = ProductString.Header.Size;
+ }
+
+ break;
+ }
+
+ *DescriptorAddress = Address;
+ return Size;
+}
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h
new file mode 100644
index 0000000..6c93f20
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h
@@ -0,0 +1,177 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Header file for Descriptors.c.
+ */
+
+#ifndef _DESCRIPTORS_H_
+#define _DESCRIPTORS_H_
+
+ /* Includes: */
+ #include <LUFA/Drivers/USB/USB.h>
+
+ /* Product-specific definitions: */
+ #define ARDUINO_UNO_PID 0x0001
+ #define ARDUINO_MEGA2560_PID 0x0010
+
+ /* Macros: */
+ /** Descriptor type value for a DFU class functional descriptor. */
+ #define DTYPE_DFUFunctional 0x21
+
+ /** DFU attribute mask, indicating that the DFU device will detach and re-attach when a DFU_DETACH
+ * command is issued, rather than the host issuing a USB Reset.
+ */
+ #define ATTR_WILL_DETATCH (1 << 3)
+
+ /** DFU attribute mask, indicating that the DFU device can communicate during the manifestation phase
+ * (memory programming phase).
+ */
+ #define ATTR_MANEFESTATION_TOLLERANT (1 << 2)
+
+ /** DFU attribute mask, indicating that the DFU device can accept DFU_UPLOAD requests to send data from
+ * the device to the host.
+ */
+ #define ATTR_CAN_UPLOAD (1 << 1)
+
+ /** DFU attribute mask, indicating that the DFU device can accept DFU_DNLOAD requests to send data from
+ * the host to the device.
+ */
+ #define ATTR_CAN_DOWNLOAD (1 << 0)
+
+ #if defined(__AVR_AT90USB1287__)
+ #define PRODUCT_ID_CODE 0x2FFB
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x97
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_AT90USB1286__)
+ #define PRODUCT_ID_CODE 0x2FFB
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x97
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_AT90USB647__)
+ #define PRODUCT_ID_CODE 0x2FF9
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x96
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_AT90USB646__)
+ #define PRODUCT_ID_CODE 0x2FF9
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x96
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_ATmega32U6__)
+ #define PRODUCT_ID_CODE 0x2FFB
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x95
+ #define AVR_SIGNATURE_3 0x88
+ #elif defined(__AVR_ATmega32U4__)
+ #define PRODUCT_ID_CODE 0x2FF4
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x95
+ #define AVR_SIGNATURE_3 0x87
+ #elif defined(__AVR_ATmega32U2__)
+ #define PRODUCT_ID_CODE 0x2FF0
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x95
+ #define AVR_SIGNATURE_3 0x8A
+ #elif defined(__AVR_ATmega16U4__)
+ #define PRODUCT_ID_CODE 0x2FF3
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x94
+ #define AVR_SIGNATURE_3 0x88
+ #elif defined(__AVR_ATmega16U2__)
+ #define PRODUCT_ID_CODE 0x2FEF
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x94
+ #define AVR_SIGNATURE_3 0x89
+ #elif defined(__AVR_AT90USB162__)
+ #define PRODUCT_ID_CODE 0x2FFA
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x94
+ #define AVR_SIGNATURE_3 0x82
+ #elif defined(__AVR_AT90USB82__)
+ #define PRODUCT_ID_CODE 0x2FEE
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x93
+ #define AVR_SIGNATURE_3 0x89
+ #elif defined(__AVR_ATmega8U2__)
+ #define PRODUCT_ID_CODE 0x2FF7
+ #define AVR_SIGNATURE_1 0x1E
+ #define AVR_SIGNATURE_2 0x93
+ #define AVR_SIGNATURE_3 0x82
+ #else
+ #error The selected AVR part is not currently supported by this bootloader.
+ #endif
+
+ #if !defined(PRODUCT_ID_CODE)
+ #error Current AVR model is not supported by this bootloader.
+ #endif
+
+ /* Type Defines: */
+ /** Type define for a DFU class function descriptor. This descriptor gives DFU class information
+ * to the host when read, indicating the DFU device's capabilities.
+ */
+ typedef struct
+ {
+ USB_Descriptor_Header_t Header; /**< Standard descriptor header structure */
+
+ uint8_t Attributes; /**< DFU device attributes, a mask comprising of the
+ * ATTR_* macros listed in this source file
+ */
+ uint16_t DetachTimeout; /**< Timeout in milliseconds between a USB_DETACH
+ * command being issued and the device detaching
+ * from the USB bus
+ */
+ uint16_t TransferSize; /**< Maximum number of bytes the DFU device can accept
+ * from the host in a transaction
+ */
+ uint16_t DFUSpecification; /**< BCD packed DFU specification number this DFU
+ * device complies with
+ */
+ } USB_DFU_Functional_Descriptor_t;
+
+ /** Type define for the device configuration descriptor structure. This must be defined in the
+ * application code, as the configuration descriptor contains several sub-descriptors which
+ * vary between devices, and which describe the device's usage to the host.
+ */
+ typedef struct
+ {
+ USB_Descriptor_Configuration_Header_t Config;
+ USB_Descriptor_Interface_t DFU_Interface;
+ USB_DFU_Functional_Descriptor_t DFU_Functional;
+ } USB_Descriptor_Configuration_t;
+
+ /* Function Prototypes: */
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
+ const uint8_t wIndex,
+ void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
+
+#endif
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/makefile b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/makefile
new file mode 100644
index 0000000..1fb4ed3
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/makefile
@@ -0,0 +1,710 @@
+# Hey Emacs, this is a -*- makefile -*-
+#----------------------------------------------------------------------------
+# WinAVR Makefile Template written by Eric B. Weddington, JöWunsch, et al.
+# >> Modified for use with the LUFA project. <<
+#
+# Released to the Public Domain
+#
+# Additional material for this makefile was written by:
+# Peter Fleury
+# Tim Henigan
+# Colin O'Flynn
+# Reiner Patommel
+# Markus Pfaff
+# Sander Pool
+# Frederik Rouleau
+# Carlos Lamas
+# Dean Camera
+# Opendous Inc.
+# Denver Gingerich
+#
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device, using avrdude.
+# Please customize the avrdude settings below first!
+#
+# make doxygen = Generate DoxyGen documentation for the project (must have
+# DoxyGen installed)
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+# with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+# bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+
+# MCU name
+MCU = atmega8u2
+MCU_AVRDUDE = at90usb82
+
+# Specify the Arduino model using the assigned PID. This is used by Descriptors.c
+# to set the product descriptor string (for DFU we must use the PID for each
+# chip that dfu-bootloader or Flip expect)
+# Uno PID:
+ARDUINO_MODEL_PID = 0x0001
+# Mega 2560 PID:
+#ARDUINO_MODEL_PID = 0x0010
+
+# Target board (see library "Board Types" documentation, NONE for projects not requiring
+# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
+# "Board" inside the application directory.
+BOARD = USER
+
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_CLOCK below, as it is sourced by
+# F_CLOCK after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+# Input clock frequency.
+# This will define a symbol, F_CLOCK, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_CLOCK = $(F_CPU)
+
+
+# Starting byte address of the bootloader, as a byte address - computed via the formula
+# BOOT_START = ((TOTAL_FLASH_BYTES - BOOTLOADER_SECTION_SIZE_BYTES) * 1024)
+#
+# Note that the bootloader size and start address given in AVRStudio is in words and not
+# bytes, and so will need to be doubled to obtain the byte address needed by AVR-GCC.
+BOOT_START = 0x1000
+
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+
+# Target file name (without extension).
+TARGET = Arduino-usbdfu
+
+
+# Object files directory
+# To put object files in current directory, use a dot (.), do NOT make
+# this an empty or blank macro!
+OBJDIR = .
+
+
+# Path to the LUFA library
+LUFA_PATH = ../..
+
+
+# LUFA library compile-time options and predefined tokens
+LUFA_OPTS = -D USB_DEVICE_ONLY
+LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
+LUFA_OPTS += -D CONTROL_ONLY_DEVICE
+LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=32
+LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
+LUFA_OPTS += -D USE_RAM_DESCRIPTORS
+LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
+LUFA_OPTS += -D NO_INTERNAL_SERIAL
+LUFA_OPTS += -D NO_DEVICE_SELF_POWER
+LUFA_OPTS += -D NO_DEVICE_REMOTE_WAKEUP
+LUFA_OPTS += -D NO_STREAM_CALLBACKS
+
+
+# Create the LUFA source path variables by including the LUFA root makefile
+include $(LUFA_PATH)/LUFA/makefile
+
+
+# List C source files here. (C dependencies are automatically generated.)
+SRC = $(TARGET).c \
+ Descriptors.c \
+ $(LUFA_SRC_USB) \
+
+
+# List C++ source files here. (C dependencies are automatically generated.)
+CPPSRC =
+
+
+# List Assembler source files here.
+# Make them always end in a capital .S. Files ending in a lowercase .s
+# will not be considered source files but generated files (assembler
+# output from the compiler), and will be deleted upon "make clean"!
+# Even though the DOS/Win* filesystem matches both .s and .S the same,
+# it will preserve the spelling of the filenames, and gcc itself does
+# care about how the name is spelled on its command-line.
+ASRC =
+
+
+# Optimization level, can be [0, 1, 2, 3, s].
+# 0 = turn off optimization. s = optimize for size.
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+
+
+# Debugging format.
+# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
+# AVR Studio 4.10 requires dwarf-2.
+# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
+DEBUG = dwarf-2
+
+
+# List any extra directories to look for include files here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRAINCDIRS = $(LUFA_PATH)/
+
+
+# Compiler flag to set the C Standard level.
+# c89 = "ANSI" C
+# gnu89 = c89 plus GCC extensions
+# c99 = ISO C99 standard (not yet fully implemented)
+# gnu99 = c99 plus GCC extensions
+CSTANDARD = -std=c99
+
+
+# Place -D or -U options here for C sources
+CDEFS = -DF_CPU=$(F_CPU)UL
+CDEFS += -DARDUINO_MODEL_PID=$(ARDUINO_MODEL_PID)
+CDEFS += -DF_CLOCK=$(F_CLOCK)UL
+CDEFS += -DBOARD=BOARD_$(BOARD)
+CDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL
+CDEFS += -DTX_RX_LED_PULSE_MS=3
+CDEFS += $(LUFA_OPTS)
+
+
+# Place -D or -U options here for ASM sources
+ADEFS = -DF_CPU=$(F_CPU)
+ADEFS += -DF_CLOCK=$(F_CLOCK)UL
+ADEFS += -DBOARD=BOARD_$(BOARD)
+CDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL
+ADEFS += $(LUFA_OPTS)
+
+# Place -D or -U options here for C++ sources
+CPPDEFS = -DF_CPU=$(F_CPU)UL
+CPPDEFS += -DF_CLOCK=$(F_CLOCK)UL
+CPPDEFS += -DBOARD=BOARD_$(BOARD)
+CDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL
+CPPDEFS += $(LUFA_OPTS)
+#CPPDEFS += -D__STDC_LIMIT_MACROS
+#CPPDEFS += -D__STDC_CONSTANT_MACROS
+
+
+
+#---------------- Compiler Options C ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CFLAGS = -g$(DEBUG)
+CFLAGS += $(CDEFS)
+CFLAGS += -O$(OPT)
+CFLAGS += -funsigned-char
+CFLAGS += -funsigned-bitfields
+CFLAGS += -ffunction-sections
+CFLAGS += -fno-inline-small-functions
+CFLAGS += -fpack-struct
+CFLAGS += -fshort-enums
+CFLAGS += -fno-strict-aliasing
+CFLAGS += -Wall
+CFLAGS += -Wstrict-prototypes
+#CFLAGS += -mshort-calls
+#CFLAGS += -fno-unit-at-a-time
+#CFLAGS += -Wundef
+#CFLAGS += -Wunreachable-code
+#CFLAGS += -Wsign-compare
+CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS += $(CSTANDARD)
+
+
+#---------------- Compiler Options C++ ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CPPFLAGS = -g$(DEBUG)
+CPPFLAGS += $(CPPDEFS)
+CPPFLAGS += -O$(OPT)
+CPPFLAGS += -funsigned-char
+CPPFLAGS += -funsigned-bitfields
+CPPFLAGS += -fpack-struct
+CPPFLAGS += -fshort-enums
+CPPFLAGS += -fno-exceptions
+CPPFLAGS += -Wall
+CPPFLAGS += -Wundef
+#CPPFLAGS += -mshort-calls
+#CPPFLAGS += -fno-unit-at-a-time
+#CPPFLAGS += -Wstrict-prototypes
+#CPPFLAGS += -Wunreachable-code
+#CPPFLAGS += -Wsign-compare
+CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
+CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+#CPPFLAGS += $(CSTANDARD)
+
+
+#---------------- Assembler Options ----------------
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns: create listing
+# -gstabs: have the assembler create line number information; note that
+# for use in COFF files, additional information about filenames
+# and function names needs to be present in the assembler source
+# files -- see avr-libc docs [FIXME: not yet described there]
+# -listing-cont-lines: Sets the maximum number of continuation lines of hex
+# dump that will be displayed for a given single line of source input.
+ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
+
+
+#---------------- Library Options ----------------
+# Minimalistic printf version
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
+
+# Floating point printf version (requires MATH_LIB = -lm below)
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
+
+# If this is left blank, then it will use the Standard printf version.
+PRINTF_LIB =
+#PRINTF_LIB = $(PRINTF_LIB_MIN)
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
+
+
+# Minimalistic scanf version
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
+
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
+
+# If this is left blank, then it will use the Standard scanf version.
+SCANF_LIB =
+#SCANF_LIB = $(SCANF_LIB_MIN)
+#SCANF_LIB = $(SCANF_LIB_FLOAT)
+
+
+MATH_LIB = -lm
+
+
+# List any extra directories to look for libraries here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRALIBDIRS =
+
+
+
+#---------------- External Memory Options ----------------
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# used for variables (.data/.bss) and heap (malloc()).
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# only used for heap (malloc()).
+#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
+
+EXTMEMOPTS =
+
+
+
+#---------------- Linker Options ----------------
+# -Wl,...: tell GCC to pass this to linker.
+# -Map: create map file
+# --cref: add cross reference to map file
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
+LDFLAGS += -Wl,--section-start=.text=$(BOOT_START)
+LDFLAGS += -Wl,--relax
+LDFLAGS += -Wl,--gc-sections
+LDFLAGS += $(EXTMEMOPTS)
+LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
+#LDFLAGS += -T linker_script.x
+
+
+
+#---------------- Programming Options (avrdude) ----------------
+
+# Fuse settings for Arduino Uno DFU bootloader project
+AVRDUDE_FUSES = -U efuse:w:0xF4:m -U hfuse:w:0xD9:m -U lfuse:w:0xFF:m
+
+# Lock settings for Arduino Uno DFU bootloader project
+AVRDUDE_LOCK = -U lock:w:0x0F:m
+
+# Programming hardware
+# Type: avrdude -c ?
+# to get a full listing.
+#
+AVRDUDE_PROGRAMMER = avrispmkii
+
+# com1 = serial port. Use lpt1 to connect to parallel port.
+AVRDUDE_PORT = usb
+
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE_COUNTER = -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_NO_VERIFY = -V
+
+# Increase verbosity level. Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
+# to submit bug reports.
+#AVRDUDE_VERBOSE = -v -v
+
+AVRDUDE_FLAGS = -p $(MCU_AVRDUDE) -F -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
+
+
+
+#---------------- Debugging Options ----------------
+
+# For simulavr only - target MCU frequency.
+DEBUG_MFREQ = $(F_CPU)
+
+# Set the DEBUG_UI to either gdb or insight.
+# DEBUG_UI = gdb
+DEBUG_UI = insight
+
+# Set the debugging back-end to either avarice, simulavr.
+DEBUG_BACKEND = avarice
+#DEBUG_BACKEND = simulavr
+
+# GDB Init Filename.
+GDBINIT_FILE = __avr_gdbinit
+
+# When using avarice settings for the JTAG
+JTAG_DEV = /dev/com1
+
+# Debugging port used to communicate between GDB / avarice / simulavr.
+DEBUG_PORT = 4242
+
+# Debugging host used to communicate between GDB / avarice / simulavr, normally
+# just set to localhost unless doing some sort of crazy debugging when
+# avarice is running on a different computer.
+DEBUG_HOST = localhost
+
+
+
+#============================================================================
+
+
+# Define programs and commands.
+SHELL = sh
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+AR = avr-ar rcs
+NM = avr-nm
+AVRDUDE = avrdude
+REMOVE = rm -f
+REMOVEDIR = rm -rf
+COPY = cp
+WINSHELL = cmd
+
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_BEGIN = -------- begin --------
+MSG_END = -------- end --------
+MSG_SIZE_BEFORE = Size before:
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for Flash:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling C:
+MSG_COMPILING_CPP = Compiling C++:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+MSG_CREATING_LIBRARY = Creating library:
+
+
+
+
+# Define all object files.
+OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
+
+# Define all listing files.
+LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
+
+
+# Compiler flags to generate dependency files.
+GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
+
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
+ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+
+
+
+# Default target.
+all: begin gccversion sizebefore build sizeafter end
+
+# Change the build target to build a HEX file or a library.
+build: elf hex eep lss sym
+#build: lib
+
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lss: $(TARGET).lss
+sym: $(TARGET).sym
+LIBNAME=lib$(TARGET).a
+lib: $(LIBNAME)
+
+
+
+# Eye candy.
+# AVR Studio 3.x does not check make's exit code but relies on
+# the following magic strings to be generated by the compile job.
+begin:
+ @echo
+ @echo $(MSG_BEGIN)
+
+end:
+ @echo $(MSG_END)
+ @echo
+
+
+# Display size of file.
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
+ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
+MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
+FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
+
+
+sizebefore:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+sizeafter:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+
+
+# Display compiler version information.
+gccversion :
+ @$(CC) --version
+
+
+# Program the device.
+program: $(TARGET).hex $(TARGET).eep
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) $(AVRDUDE_FUSES) $(AVRDUDE_LOCK)
+
+
+# Generate avr-gdb config/init file which does the following:
+# define the reset signal, load the target file, connect to target, and set
+# a breakpoint at main().
+gdb-config:
+ @$(REMOVE) $(GDBINIT_FILE)
+ @echo define reset >> $(GDBINIT_FILE)
+ @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
+ @echo end >> $(GDBINIT_FILE)
+ @echo file $(TARGET).elf >> $(GDBINIT_FILE)
+ @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
+ifeq ($(DEBUG_BACKEND),simulavr)
+ @echo load >> $(GDBINIT_FILE)
+endif
+ @echo break main >> $(GDBINIT_FILE)
+
+debug: gdb-config $(TARGET).elf
+ifeq ($(DEBUG_BACKEND), avarice)
+ @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
+ @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
+ $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
+ @$(WINSHELL) /c pause
+
+else
+ @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
+ $(DEBUG_MFREQ) --port $(DEBUG_PORT)
+endif
+ @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
+
+
+
+
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
+COFFCONVERT = $(OBJCOPY) --debugging
+COFFCONVERT += --change-section-address .data-0x800000
+COFFCONVERT += --change-section-address .bss-0x800000
+COFFCONVERT += --change-section-address .noinit-0x800000
+COFFCONVERT += --change-section-address .eeprom-0x810000
+
+
+
+coff: $(TARGET).elf
+ @echo
+ @echo $(MSG_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
+
+
+extcoff: $(TARGET).elf
+ @echo
+ @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
+
+
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+ @echo
+ @echo $(MSG_FLASH) $@
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@
+
+%.eep: %.elf
+ @echo
+ @echo $(MSG_EEPROM) $@
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+ --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+ @echo
+ @echo $(MSG_EXTENDED_LISTING) $@
+ $(OBJDUMP) -h -S -z $< > $@
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+ @echo
+ @echo $(MSG_SYMBOL_TABLE) $@
+ $(NM) -n $< > $@
+
+
+
+# Create library from object files.
+.SECONDARY : $(TARGET).a
+.PRECIOUS : $(OBJ)
+%.a: $(OBJ)
+ @echo
+ @echo $(MSG_CREATING_LIBRARY) $@
+ $(AR) $@ $(OBJ)
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(TARGET).elf
+.PRECIOUS : $(OBJ)
+%.elf: $(OBJ)
+ @echo
+ @echo $(MSG_LINKING) $@
+ $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
+
+
+# Compile: create object files from C source files.
+$(OBJDIR)/%.o : %.c
+ @echo
+ @echo $(MSG_COMPILING) $<
+ $(CC) -c $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create object files from C++ source files.
+$(OBJDIR)/%.o : %.cpp
+ @echo
+ @echo $(MSG_COMPILING_CPP) $<
+ $(CC) -c $(ALL_CPPFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C source files.
+%.s : %.c
+ $(CC) -S $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C++ source files.
+%.s : %.cpp
+ $(CC) -S $(ALL_CPPFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files.
+$(OBJDIR)/%.o : %.S
+ @echo
+ @echo $(MSG_ASSEMBLING) $<
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+
+# Create preprocessed source for use in sending a bug report.
+%.i : %.c
+ $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
+
+
+# Target: clean project.
+clean: begin clean_list end
+
+clean_list :
+ @echo
+ @echo $(MSG_CLEANING)
+ $(REMOVE) $(TARGET).hex
+ $(REMOVE) $(TARGET).eep
+ $(REMOVE) $(TARGET).cof
+ $(REMOVE) $(TARGET).elf
+ $(REMOVE) $(TARGET).map
+ $(REMOVE) $(TARGET).sym
+ $(REMOVE) $(TARGET).lss
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
+ $(REMOVE) $(SRC:.c=.s)
+ $(REMOVE) $(SRC:.c=.d)
+ $(REMOVE) $(SRC:.c=.i)
+ $(REMOVEDIR) .dep
+
+doxygen:
+ @echo Generating Project Documentation...
+ @doxygen Doxygen.conf
+ @echo Documentation Generation Complete.
+
+clean_doxygen:
+ rm -rf Documentation
+
+# Create object files directory
+$(shell mkdir $(OBJDIR) 2>/dev/null)
+
+
+# Include the dependency files.
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
+
+
+# Listing of phony targets.
+.PHONY : all begin finish end sizebefore sizeafter gccversion \
+build elf hex eep lss sym coff extcoff doxygen clean \
+clean_list clean_doxygen program debug gdb-config
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/readme.txt b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/readme.txt
new file mode 100644
index 0000000..e376679
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbdfu/readme.txt
@@ -0,0 +1,7 @@
+To setup the project and program an ATMEG8U2 with the Arduino USB DFU bootloader:
+1. unpack the source into LUFA's Bootloader directory
+2. set ARDUINO_MODEL_PID in the makefile as appropriate
+3. do "make clean; make; make program"
+
+Check that the board enumerates as either "Arduino Uno DFU" or "Arduino Mega 2560 DFU". Test by uploading the Arduino-usbserial application firmware (see instructions in Arduino-usbserial directory)
+
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex
new file mode 100644
index 0000000..efbbf15
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex
@@ -0,0 +1,254 @@
+:1000000090C00000A9C00000A7C00000A5C000006B
+:10001000A3C00000A1C000009FC000009DC0000060
+:100020009BC0000099C0000097C0000048C40000B9
+:100030000CC4000091C000008FC000008DC0000003
+:100040008BC0000089C0000087C0000085C0000090
+:1000500083C0000081C000007FC0000002C100001A
+:100060007BC0000079C0000077C0000075C00000B0
+:1000700073C0000071C000006FC000006DC00000C0
+:100080006BC0000069C0000067C0000065C00000D0
+:1000900063C0000061C000001201100102000008EE
+:1000A0004123420001000102DC0109023E0002017D
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:10012000000011241FBECFEFD2E0DEBFCDBF11E033
+:10013000A0E0B1E0ECEAFFE002C005900D92A6312C
+:10014000B107D9F712E0A6E1B1E001C01D92AF32CC
+:10015000B107E1F7F1D028C753CF9C01DC01AE57BE
+:10016000BF4FED91FC91119741911196FC93EE9345
+:1001700080589F4FE817F90711F42D933C939FB7D0
+:10018000F894F901EC57FF4F8081815080839FBF25
+:10019000842F0895DF92EF92FF920F931F93FC013B
+:1001A0008489813019F0823021F405C040E3D42ED7
+:1001B00004C0DD2402C030E2D32E8389823011F4E2
+:1001C00088E0D82A8589873031F0883031F0863050
+:1001D00031F482E003C084E001C086E0D82A1092A6
+:1001E000C9001092C8001092CA00E784F088018903
+:1001F000128980E0E81681EEF80680E0080780E0CA
+:10020000180719F420E130E00FC0C801B701969536
+:1002100087957795679560587B47814E9F4FA801DA
+:100220009701A0D6215030403093CD002093CC00D0
+:10023000D092CA0080E0E81681EEF80680E0080758
+:1002400080E0180711F082E001C080E08093C800D0
+:1002500088E98093C9001F910F91FF90EF90DF9084
+:1002600008951F920F920FB60F9211242F938F9320
+:100270009F93EF93FF939091CE008EB38430F1F46F
+:10028000E0919901F0919A019083E0919901F091A8
+:100290009A01CF01019690939A018093990189590F
+:1002A000914021F489E191E0928381839FB7F89492
+:1002B00080919D018F5F80939D019FBFFF91EF9182
+:1002C0009F918F912F910F900FBE0F901F901895B7
+:1002D000FC01858580FF02C05F9808955F9A0895AC
+:1002E00080E091E0D5C580E091E088C584B7877F44
+:1002F00084BF28E10FB6F89420936000109260004C
+:100300000FBE87E690E09093CD008093CC0086E00E
+:100310008093CA001092C8002093C900539A5A9A39
+:100320008AB180638AB98BB180638BB983D284E050
+:1003300085BD5F9A579A08950F931F93CF93DF93CC
+:10034000D5DF2FB7F8948EE991E090931F02809348
+:100350001E0290932102809320022FBF2FB7F894A2
+:1003600089E191E090939A018093990190939C0187
+:1003700080939B012FBF7894CEE9D1E003E08FB743
+:10038000F894909122028FBF903809F180E091E0BB
+:10039000ABD497FD1CC0E0911E02F0911F02808338
+:1003A000E0911E02F0911F02CF01019690931F026F
+:1003B00080931E028E51924011F4D283C1839FB765
+:1003C000F894809122028F5F809322029FBF8FB7A3
+:1003D000F89410919D018FBFA89902C0113678F151
+:1003E000A89A80919D01882361F05D980093160181
+:1003F00008C089E191E0B1DE682F80E091E0DAD4B5
+:1004000011501123B1F780911601882351F080918A
+:10041000160181508093160180911601882309F4FA
+:100420005D9A80911701882351F0809117018150C6
+:100430008093170180911701882309F45C9A8FB784
+:10044000F894909122028FBF992369F08EE991E090
+:1004500084DE982F8091C80085FFFCCF9093CE005A
+:100460005C980093170180E091E095D42AD487CF5F
+:10047000DA01923049F0933061F09130F9F4E8E913
+:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6
+:1004900019C0813049F0813018F0823079F408C0F9
+:1004A000E8EEF0E0849107C0ECEEF0E0849103C048
+:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9
+:1004C00020E030E0ED93FC93C901089528E030E08E
+:1004D00040E003C04F5F220F331F28173907D0F3C6
+:1004E000842F8295807F08958093E9008091EB00AE
+:1004F00081608093EB001092ED006093EC004093DC
+:10050000ED008091EE00881F8827881F08951092C3
+:10051000F40090E09093E9001092F0001092E8004F
+:100520001092ED008091EB008E7F8093EB009F5F37
+:10053000953081F708958091270288238CF403C0B9
+:100540008EB38823B1F08091E80082FFF9CF8091CB
+:10055000E8008B778093E80008958EB3882349F0F4
+:100560008091E80080FFF9CF8091E8008E7780933A
+:10057000E800089594E68091EC0080FF05C080912A
+:10058000E80080FF05C023C08091E80082FD1FC005
+:100590008EB3882311F482E008958EB3853011F470
+:1005A00083E008958091EB0085FF02C081E008950B
+:1005B0008091E10082FFDFCF8091E1008B7F80930B
+:1005C000E100992311F484E008959150D4CF80E0A4
+:1005D00008959C0140912D0250912E024617570715
+:1005E00018F4F90120E038C06115710511F0AB0174
+:1005F000F8CF8091E8008E778093E80040E050E0EB
+:10060000F0CF8091E80083FF02C081E008958091DF
+:10061000E80082FD2DC08EB3882381F18EB3853032
+:1006200079F18091E80080FF17C09091F20006C038
+:1006300081918093F100415050409F5F41155105D9
+:1006400011F09830A8F320E0983009F421E080916F
+:10065000E8008E778093E8004115510591F622233A
+:1006600081F606C08EB3882349F08EB3853041F001
+:100670008091E80082FFF6CF80E0089582E008953F
+:1006800083E008959C0140912D0250912E0246175F
+:10069000570710F490E03BC06115710511F0AB01F4
+:1006A000F9CF8091E8008E778093E80040E050E039
+:1006B000F1CF8091E80083FF02C081E0089580912E
+:1006C000E80082FD30C08EB3882399F18EB3853067
+:1006D00091F18091E80080FF1AC08091F20009C07A
+:1006E000F9012F5F3F4FE491E093F10041505040FA
+:1006F0008F5F4115510511F0883090F390E08830FC
+:1007000009F491E08091E8008E778093E80041152C
+:10071000510579F6992369F606C08EB3882349F00E
+:100720008EB3853041F08091E80082FFF6CF80E003
+:10073000089582E0089583E008959C016115710594
+:1007400029F48091E8008B778093E800F90120C0BC
+:100750008091E80083FF02C081E008958EB3882372
+:1007600039F18EB3853031F18091E80082FFF0CF0E
+:1007700006C08091F10081936150704021F080911A
+:10078000F2008823B1F78091E8008B778093E8002E
+:1007900061157105E9F606C08EB3882349F08EB362
+:1007A000853041F08091E80080FFF6CF80E0089529
+:1007B00082E0089583E0089542D044D01EBA10929A
+:1007C0002502109224021092230284E089BD89B58B
+:1007D000826089BD09B400FEFDCF8091D800982FBA
+:1007E0009F779093D80080688093D80080916300B1
+:1007F0008E7F809363008091D8008F7D8093D80096
+:100800008091E0008E7F8093E0008091E1008E7FF8
+:100810008093E1008091E20081608093E20080910A
+:10082000E100877F8093E1008091E20088608093FF
+:10083000E2000895C1DF81E08093260208951092BE
+:10084000E20008951092E10008951F920F920FB6F2
+:100850000F9211241F932F933F934F935F936F93A6
+:100860007F938F939F93AF93BF93EF93FF93E9EEA3
+:10087000F0E0108117701082E0EFF0E08081877F58
+:1008800080837894C3D0F894A9EEB0E01C92E0EF96
+:10089000F0E08081886080831C93FF91EF91BF918D
+:1008A000AF919F918F917F916F915F914F913F9108
+:1008B0002F911F910F900FBE0F901F9018951F92B0
+:1008C0000F920FB60F9211242F933F934F935F9384
+:1008D0006F937F938F939F93AF93BF93EF93FF9308
+:1008E0008091E10080FF1BC08091E20080FF17C073
+:1008F0008091E1008E7F8093E1008091E2008E7F05
+:100900008093E2008091E20080618093E200809118
+:10091000D80080628093D80019BC1EBAD1D18091D2
+:10092000E10084FF29C08091E20084FF25C084E0BB
+:1009300089BD89B5826089BD09B400FEFDCF809173
+:10094000D8008F7D8093D8008091E1008F7E8093C6
+:10095000E1008091E2008F7E8093E2008091E200CE
+:1009600081608093E20080912502882311F481E068
+:1009700001C084E08EBBA4D18091E10083FF27C039
+:100980008091E20083FF23C08091E100877F809304
+:10099000E10082E08EBB109225028091E1008E7F03
+:1009A0008093E1008091E2008E7F8093E20080914D
+:1009B000E20080618093E200AADD80E060E042E036
+:1009C00093DD8091F00088608093F00079D1809170
+:1009D000E10082FF0AC08091E20082FF06C08091A0
+:1009E000E1008B7F8093E1006BD1FF91EF91BF918C
+:1009F000AF919F918F917F916F915F914F913F91B7
+:100A00002F910F900FBE0F901F9018951F93DF939B
+:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D
+:100A2000CDBFE7E2F2E08091F100819322E0EF3266
+:100A3000F207C9F78091270230912802353009F476
+:100A400087C0363040F43130C9F1313070F0333086
+:100A500009F01DC133C0383009F4EFC0393009F452
+:100A6000FEC0363009F013C192C0803821F08238C0
+:100A700009F00DC108C090912302809124028823BF
+:100A800099F0926011C080912B0287708093E900E9
+:100A90008091EB0090E025E0969587952A95E1F707
+:100AA000982F91701092E9008091E800877F8093E1
+:100AB000E8009093F1001092F100CAC0882319F069
+:100AC000823009F0E4C090E08F719070009721F0BF
+:100AD000029709F0DDC00CC080912902813009F035
+:100AE000D7C010922402333069F5809324022AC0C3
+:100AF00080912902882331F520912B02277009F477
+:100B0000C7C02093E9008091EB0080FFC1C0333063
+:100B100021F48091EB00806213C08091EB00806132
+:100B20008093EB0081E090E002C0880F991F2A9526
+:100B3000E2F78093EA001092EA008091EB0088606F
+:100B40008093EB001092E9008091E800877F83C0DA
+:100B5000882309F09CC0109129028091E800877FCA
+:100B60008093E800E8DC04C08EB3882309F490C0C9
+:100B70008091E80080FFF8CF812F8F7711F492E009
+:100B800001C093E09EBB80688093E30081C08058E1
+:100B9000823008F07CC08091290290912A0223E0E3
+:100BA0008C3D920799F55FB7F894DE0115964EE0FB
+:100BB00020E030E061E2E42FF0E0609357008491A0
+:100BC00020FF03C082958F704F5F982F9F70892FF1
+:100BD000805D8A3308F0895F8C9311961C9211977F
+:100BE0002F5F3F4F12962431310529F75FBF8AE20C
+:100BF0008B8383E08C838091E800877F8093E8007B
+:100C0000CE0103966AE270E0E4DC11C060912B0231
+:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2
+:100C2000E800877F8093E80089819A812BDD80919D
+:100C3000E8008B778093E8002BC0803841F58091E5
+:100C4000E800877F8093E800809125028093F1007F
+:100C50008091E8008E778093E8006DDC19C08823CE
+:100C6000B1F490912902923098F48091E800877F46
+:100C70008093E800909325025EDC80912502882312
+:100C800011F483E001C084E08EBB2DDB01C028DBC2
+:100C90008091E80083FF0AC08091EB00806280931E
+:100CA000EB008091E800877F8093E800AC960FB658
+:100CB000F894DEBF0FBECDBFCF91DF911F91089595
+:100CC00008951F938EB3882361F01091E90010926C
+:100CD000E9008091E80083FF01C098DE177010934F
+:100CE000E9001F9108950895FC018EB3843021F529
+:100CF00087859089A189B2890097A105B105E1F0A6
+:100D000085818093E9008091E80082FF15C0809181
+:100D1000F200882319F42FEF3FEF04C08091F10017
+:100D2000282F30E08091F200882341F48091E80080
+:100D30008B778093E80002C02FEF3FEFC901089541
+:100D4000FC018EB3843011F587859089A189B28921
+:100D50000097A105B105D1F081818093E9008091D0
+:100D6000F2008823A9F09091E8008091E8008E7746
+:100D70008093E80095FD0CC0FDDB982F882349F493
+:100D80008091E8008E778093E80003C092E001C074
+:100D900090E0892F0895FC018EB3843051F487854B
+:100DA0009089A189B2890097A105B10511F0CF0101
+:100DB000C7CF08951F93FC01162F8EB38430D9F44A
+:100DC00087859089A189B2890097A105B10599F01D
+:100DD00081818093E9008091E80085FD08C08091C1
+:100DE000E8008E778093E800C5DB882329F4109310
+:100DF000F10080E001C082E01F9108950F931F93DE
+:100E0000CF93DF93EC010D96FC0189E0DF011D9289
+:100E10008A95E9F72A813B8109818C81882311F425
+:100E200010E001C014E0C90151DB182B1260802FC3
+:100E300061E8412F59DB882329F12E813F810D8103
+:100E40008885882311F410E001C014E0C9013EDB5D
+:100E5000182B1260802F60E8412F46DB882391F029
+:100E60002A853B8509858C85882311F410E001C013
+:100E700014E0C9012BDB182B1260802F61EC412F8D
+:100E800033DB01C080E0DF91CF911F910F91089576
+:100E9000CF93DF93EC018091E80083FF60C08881ED
+:100EA00090E020912B0230912C022817390709F08D
+:100EB00056C080912802813261F0823220F4803263
+:100EC00009F04DC019C0823269F1833209F047C080
+:100ED00038C080912702813A09F041C08091E80032
+:100EE000877F8093E800CE010F9667E070E071DBAA
+:100EF0008091E8008B7713C080912702813279F5C9
+:100F00008091E800877F8093E800CE010F9667E02C
+:100F100070E013DCCE013ED98091E8008E7780939B
+:100F2000E8001DC0809127028132C9F48091E80059
+:100F3000877F8093E800809129028D87CE01C8D9F0
+:100F40000DC080912702813251F48091E800877FA3
+:100F50008093E800CE0160912902C5DEECDADF91D2
+:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053
+:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749
+:100F800020F0A21BB30BE40BF50B661F771F881F25
+:100F9000991F1A9469F760957095809590959B01BB
+:0C0FA000AC01BD01CF010895F894FFCF13
+:100FAC0000034000000440000002080000000000A4
+:060FBC000000000000002F
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex
new file mode 100644
index 0000000..3af6a24
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex
@@ -0,0 +1,254 @@
+:1000000090C00000A9C00000A7C00000A5C000006B
+:10001000A3C00000A1C000009FC000009DC0000060
+:100020009BC0000099C0000097C0000048C40000B9
+:100030000CC4000091C000008FC000008DC0000003
+:100040008BC0000089C0000087C0000085C0000090
+:1000500083C0000081C000007FC0000002C100001A
+:100060007BC0000079C0000077C0000075C00000B0
+:1000700073C0000071C000006FC000006DC00000C0
+:100080006BC0000069C0000067C0000065C00000D0
+:1000900063C0000061C000001201100102000008EE
+:1000A0004123440001000102DC0109023E0002017B
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:10012000000011241FBECFEFD2E0DEBFCDBF11E033
+:10013000A0E0B1E0ECEAFFE002C005900D92A6312C
+:10014000B107D9F712E0A6E1B1E001C01D92AF32CC
+:10015000B107E1F7F1D028C753CF9C01DC01AE57BE
+:10016000BF4FED91FC91119741911196FC93EE9345
+:1001700080589F4FE817F90711F42D933C939FB7D0
+:10018000F894F901EC57FF4F8081815080839FBF25
+:10019000842F0895DF92EF92FF920F931F93FC013B
+:1001A0008489813019F0823021F405C040E3D42ED7
+:1001B00004C0DD2402C030E2D32E8389823011F4E2
+:1001C00088E0D82A8589873031F0883031F0863050
+:1001D00031F482E003C084E001C086E0D82A1092A6
+:1001E000C9001092C8001092CA00E784F088018903
+:1001F000128980E0E81681EEF80680E0080780E0CA
+:10020000180719F420E130E00FC0C801B701969536
+:1002100087957795679560587B47814E9F4FA801DA
+:100220009701A0D6215030403093CD002093CC00D0
+:10023000D092CA0080E0E81681EEF80680E0080758
+:1002400080E0180711F082E001C080E08093C800D0
+:1002500088E98093C9001F910F91FF90EF90DF9084
+:1002600008951F920F920FB60F9211242F938F9320
+:100270009F93EF93FF939091CE008EB38430F1F46F
+:10028000E0919901F0919A019083E0919901F091A8
+:100290009A01CF01019690939A018093990189590F
+:1002A000914021F489E191E0928381839FB7F89492
+:1002B00080919D018F5F80939D019FBFFF91EF9182
+:1002C0009F918F912F910F900FBE0F901F901895B7
+:1002D000FC01858580FF02C05F9808955F9A0895AC
+:1002E00080E091E0D5C580E091E088C584B7877F44
+:1002F00084BF28E10FB6F89420936000109260004C
+:100300000FBE87E690E09093CD008093CC0086E00E
+:100310008093CA001092C8002093C900539A5A9A39
+:100320008AB180638AB98BB180638BB983D284E050
+:1003300085BD5F9A579A08950F931F93CF93DF93CC
+:10034000D5DF2FB7F8948EE991E090931F02809348
+:100350001E0290932102809320022FBF2FB7F894A2
+:1003600089E191E090939A018093990190939C0187
+:1003700080939B012FBF7894CEE9D1E003E08FB743
+:10038000F894909122028FBF903809F180E091E0BB
+:10039000ABD497FD1CC0E0911E02F0911F02808338
+:1003A000E0911E02F0911F02CF01019690931F026F
+:1003B00080931E028E51924011F4D283C1839FB765
+:1003C000F894809122028F5F809322029FBF8FB7A3
+:1003D000F89410919D018FBFA89902C0113678F151
+:1003E000A89A80919D01882361F05D980093160181
+:1003F00008C089E191E0B1DE682F80E091E0DAD4B5
+:1004000011501123B1F780911601882351F080918A
+:10041000160181508093160180911601882309F4FA
+:100420005D9A80911701882351F0809117018150C6
+:100430008093170180911701882309F45C9A8FB784
+:10044000F894909122028FBF992369F08EE991E090
+:1004500084DE982F8091C80085FFFCCF9093CE005A
+:100460005C980093170180E091E095D42AD487CF5F
+:10047000DA01923049F0933061F09130F9F4E8E913
+:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6
+:1004900019C0813049F0813018F0823079F408C0F9
+:1004A000E8EEF0E0849107C0ECEEF0E0849103C048
+:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9
+:1004C00020E030E0ED93FC93C901089528E030E08E
+:1004D00040E003C04F5F220F331F28173907D0F3C6
+:1004E000842F8295807F08958093E9008091EB00AE
+:1004F00081608093EB001092ED006093EC004093DC
+:10050000ED008091EE00881F8827881F08951092C3
+:10051000F40090E09093E9001092F0001092E8004F
+:100520001092ED008091EB008E7F8093EB009F5F37
+:10053000953081F708958091270288238CF403C0B9
+:100540008EB38823B1F08091E80082FFF9CF8091CB
+:10055000E8008B778093E80008958EB3882349F0F4
+:100560008091E80080FFF9CF8091E8008E7780933A
+:10057000E800089594E68091EC0080FF05C080912A
+:10058000E80080FF05C023C08091E80082FD1FC005
+:100590008EB3882311F482E008958EB3853011F470
+:1005A00083E008958091EB0085FF02C081E008950B
+:1005B0008091E10082FFDFCF8091E1008B7F80930B
+:1005C000E100992311F484E008959150D4CF80E0A4
+:1005D00008959C0140912D0250912E024617570715
+:1005E00018F4F90120E038C06115710511F0AB0174
+:1005F000F8CF8091E8008E778093E80040E050E0EB
+:10060000F0CF8091E80083FF02C081E008958091DF
+:10061000E80082FD2DC08EB3882381F18EB3853032
+:1006200079F18091E80080FF17C09091F20006C038
+:1006300081918093F100415050409F5F41155105D9
+:1006400011F09830A8F320E0983009F421E080916F
+:10065000E8008E778093E8004115510591F622233A
+:1006600081F606C08EB3882349F08EB3853041F001
+:100670008091E80082FFF6CF80E0089582E008953F
+:1006800083E008959C0140912D0250912E0246175F
+:10069000570710F490E03BC06115710511F0AB01F4
+:1006A000F9CF8091E8008E778093E80040E050E039
+:1006B000F1CF8091E80083FF02C081E0089580912E
+:1006C000E80082FD30C08EB3882399F18EB3853067
+:1006D00091F18091E80080FF1AC08091F20009C07A
+:1006E000F9012F5F3F4FE491E093F10041505040FA
+:1006F0008F5F4115510511F0883090F390E08830FC
+:1007000009F491E08091E8008E778093E80041152C
+:10071000510579F6992369F606C08EB3882349F00E
+:100720008EB3853041F08091E80082FFF6CF80E003
+:10073000089582E0089583E008959C016115710594
+:1007400029F48091E8008B778093E800F90120C0BC
+:100750008091E80083FF02C081E008958EB3882372
+:1007600039F18EB3853031F18091E80082FFF0CF0E
+:1007700006C08091F10081936150704021F080911A
+:10078000F2008823B1F78091E8008B778093E8002E
+:1007900061157105E9F606C08EB3882349F08EB362
+:1007A000853041F08091E80080FFF6CF80E0089529
+:1007B00082E0089583E0089542D044D01EBA10929A
+:1007C0002502109224021092230284E089BD89B58B
+:1007D000826089BD09B400FEFDCF8091D800982FBA
+:1007E0009F779093D80080688093D80080916300B1
+:1007F0008E7F809363008091D8008F7D8093D80096
+:100800008091E0008E7F8093E0008091E1008E7FF8
+:100810008093E1008091E20081608093E20080910A
+:10082000E100877F8093E1008091E20088608093FF
+:10083000E2000895C1DF81E08093260208951092BE
+:10084000E20008951092E10008951F920F920FB6F2
+:100850000F9211241F932F933F934F935F936F93A6
+:100860007F938F939F93AF93BF93EF93FF93E9EEA3
+:10087000F0E0108117701082E0EFF0E08081877F58
+:1008800080837894C3D0F894A9EEB0E01C92E0EF96
+:10089000F0E08081886080831C93FF91EF91BF918D
+:1008A000AF919F918F917F916F915F914F913F9108
+:1008B0002F911F910F900FBE0F901F9018951F92B0
+:1008C0000F920FB60F9211242F933F934F935F9384
+:1008D0006F937F938F939F93AF93BF93EF93FF9308
+:1008E0008091E10080FF1BC08091E20080FF17C073
+:1008F0008091E1008E7F8093E1008091E2008E7F05
+:100900008093E2008091E20080618093E200809118
+:10091000D80080628093D80019BC1EBAD1D18091D2
+:10092000E10084FF29C08091E20084FF25C084E0BB
+:1009300089BD89B5826089BD09B400FEFDCF809173
+:10094000D8008F7D8093D8008091E1008F7E8093C6
+:10095000E1008091E2008F7E8093E2008091E200CE
+:1009600081608093E20080912502882311F481E068
+:1009700001C084E08EBBA4D18091E10083FF27C039
+:100980008091E20083FF23C08091E100877F809304
+:10099000E10082E08EBB109225028091E1008E7F03
+:1009A0008093E1008091E2008E7F8093E20080914D
+:1009B000E20080618093E200AADD80E060E042E036
+:1009C00093DD8091F00088608093F00079D1809170
+:1009D000E10082FF0AC08091E20082FF06C08091A0
+:1009E000E1008B7F8093E1006BD1FF91EF91BF918C
+:1009F000AF919F918F917F916F915F914F913F91B7
+:100A00002F910F900FBE0F901F9018951F93DF939B
+:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D
+:100A2000CDBFE7E2F2E08091F100819322E0EF3266
+:100A3000F207C9F78091270230912802353009F476
+:100A400087C0363040F43130C9F1313070F0333086
+:100A500009F01DC133C0383009F4EFC0393009F452
+:100A6000FEC0363009F013C192C0803821F08238C0
+:100A700009F00DC108C090912302809124028823BF
+:100A800099F0926011C080912B0287708093E900E9
+:100A90008091EB0090E025E0969587952A95E1F707
+:100AA000982F91701092E9008091E800877F8093E1
+:100AB000E8009093F1001092F100CAC0882319F069
+:100AC000823009F0E4C090E08F719070009721F0BF
+:100AD000029709F0DDC00CC080912902813009F035
+:100AE000D7C010922402333069F5809324022AC0C3
+:100AF00080912902882331F520912B02277009F477
+:100B0000C7C02093E9008091EB0080FFC1C0333063
+:100B100021F48091EB00806213C08091EB00806132
+:100B20008093EB0081E090E002C0880F991F2A9526
+:100B3000E2F78093EA001092EA008091EB0088606F
+:100B40008093EB001092E9008091E800877F83C0DA
+:100B5000882309F09CC0109129028091E800877FCA
+:100B60008093E800E8DC04C08EB3882309F490C0C9
+:100B70008091E80080FFF8CF812F8F7711F492E009
+:100B800001C093E09EBB80688093E30081C08058E1
+:100B9000823008F07CC08091290290912A0223E0E3
+:100BA0008C3D920799F55FB7F894DE0115964EE0FB
+:100BB00020E030E061E2E42FF0E0609357008491A0
+:100BC00020FF03C082958F704F5F982F9F70892FF1
+:100BD000805D8A3308F0895F8C9311961C9211977F
+:100BE0002F5F3F4F12962431310529F75FBF8AE20C
+:100BF0008B8383E08C838091E800877F8093E8007B
+:100C0000CE0103966AE270E0E4DC11C060912B0231
+:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2
+:100C2000E800877F8093E80089819A812BDD80919D
+:100C3000E8008B778093E8002BC0803841F58091E5
+:100C4000E800877F8093E800809125028093F1007F
+:100C50008091E8008E778093E8006DDC19C08823CE
+:100C6000B1F490912902923098F48091E800877F46
+:100C70008093E800909325025EDC80912502882312
+:100C800011F483E001C084E08EBB2DDB01C028DBC2
+:100C90008091E80083FF0AC08091EB00806280931E
+:100CA000EB008091E800877F8093E800AC960FB658
+:100CB000F894DEBF0FBECDBFCF91DF911F91089595
+:100CC00008951F938EB3882361F01091E90010926C
+:100CD000E9008091E80083FF01C098DE177010934F
+:100CE000E9001F9108950895FC018EB3843021F529
+:100CF00087859089A189B2890097A105B105E1F0A6
+:100D000085818093E9008091E80082FF15C0809181
+:100D1000F200882319F42FEF3FEF04C08091F10017
+:100D2000282F30E08091F200882341F48091E80080
+:100D30008B778093E80002C02FEF3FEFC901089541
+:100D4000FC018EB3843011F587859089A189B28921
+:100D50000097A105B105D1F081818093E9008091D0
+:100D6000F2008823A9F09091E8008091E8008E7746
+:100D70008093E80095FD0CC0FDDB982F882349F493
+:100D80008091E8008E778093E80003C092E001C074
+:100D900090E0892F0895FC018EB3843051F487854B
+:100DA0009089A189B2890097A105B10511F0CF0101
+:100DB000C7CF08951F93FC01162F8EB38430D9F44A
+:100DC00087859089A189B2890097A105B10599F01D
+:100DD00081818093E9008091E80085FD08C08091C1
+:100DE000E8008E778093E800C5DB882329F4109310
+:100DF000F10080E001C082E01F9108950F931F93DE
+:100E0000CF93DF93EC010D96FC0189E0DF011D9289
+:100E10008A95E9F72A813B8109818C81882311F425
+:100E200010E001C014E0C90151DB182B1260802FC3
+:100E300061E8412F59DB882329F12E813F810D8103
+:100E40008885882311F410E001C014E0C9013EDB5D
+:100E5000182B1260802F60E8412F46DB882391F029
+:100E60002A853B8509858C85882311F410E001C013
+:100E700014E0C9012BDB182B1260802F61EC412F8D
+:100E800033DB01C080E0DF91CF911F910F91089576
+:100E9000CF93DF93EC018091E80083FF60C08881ED
+:100EA00090E020912B0230912C022817390709F08D
+:100EB00056C080912802813261F0823220F4803263
+:100EC00009F04DC019C0823269F1833209F047C080
+:100ED00038C080912702813A09F041C08091E80032
+:100EE000877F8093E800CE010F9667E070E071DBAA
+:100EF0008091E8008B7713C080912702813279F5C9
+:100F00008091E800877F8093E800CE010F9667E02C
+:100F100070E013DCCE013ED98091E8008E7780939B
+:100F2000E8001DC0809127028132C9F48091E80059
+:100F3000877F8093E800809129028D87CE01C8D9F0
+:100F40000DC080912702813251F48091E800877FA3
+:100F50008093E800CE0160912902C5DEECDADF91D2
+:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053
+:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749
+:100F800020F0A21BB30BE40BF50B661F771F881F25
+:100F9000991F1A9469F760957095809590959B01BB
+:0C0FA000AC01BD01CF010895F894FFCF13
+:100FAC0000034000000440000002080000000000A4
+:060FBC000000000000002F
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex
new file mode 100644
index 0000000..d1404ee
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex
@@ -0,0 +1,254 @@
+:1000000090C00000A9C00000A7C00000A5C000006B
+:10001000A3C00000A1C000009FC000009DC0000060
+:100020009BC0000099C0000097C0000048C40000B9
+:100030000CC4000091C000008FC000008DC0000003
+:100040008BC0000089C0000087C0000085C0000090
+:1000500083C0000081C000007FC0000002C100001A
+:100060007BC0000079C0000077C0000075C00000B0
+:1000700073C0000071C000006FC000006DC00000C0
+:100080006BC0000069C0000067C0000065C00000D0
+:1000900063C0000061C000001201100102000008EE
+:1000A0004123430001000102DC0109023E0002017C
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:10012000000011241FBECFEFD2E0DEBFCDBF11E033
+:10013000A0E0B1E0ECEAFFE002C005900D92A6312C
+:10014000B107D9F712E0A6E1B1E001C01D92AF32CC
+:10015000B107E1F7F1D028C753CF9C01DC01AE57BE
+:10016000BF4FED91FC91119741911196FC93EE9345
+:1001700080589F4FE817F90711F42D933C939FB7D0
+:10018000F894F901EC57FF4F8081815080839FBF25
+:10019000842F0895DF92EF92FF920F931F93FC013B
+:1001A0008489813019F0823021F405C040E3D42ED7
+:1001B00004C0DD2402C030E2D32E8389823011F4E2
+:1001C00088E0D82A8589873031F0883031F0863050
+:1001D00031F482E003C084E001C086E0D82A1092A6
+:1001E000C9001092C8001092CA00E784F088018903
+:1001F000128980E0E81681EEF80680E0080780E0CA
+:10020000180719F420E130E00FC0C801B701969536
+:1002100087957795679560587B47814E9F4FA801DA
+:100220009701A0D6215030403093CD002093CC00D0
+:10023000D092CA0080E0E81681EEF80680E0080758
+:1002400080E0180711F082E001C080E08093C800D0
+:1002500088E98093C9001F910F91FF90EF90DF9084
+:1002600008951F920F920FB60F9211242F938F9320
+:100270009F93EF93FF939091CE008EB38430F1F46F
+:10028000E0919901F0919A019083E0919901F091A8
+:100290009A01CF01019690939A018093990189590F
+:1002A000914021F489E191E0928381839FB7F89492
+:1002B00080919D018F5F80939D019FBFFF91EF9182
+:1002C0009F918F912F910F900FBE0F901F901895B7
+:1002D000FC01858580FF02C05F9808955F9A0895AC
+:1002E00080E091E0D5C580E091E088C584B7877F44
+:1002F00084BF28E10FB6F89420936000109260004C
+:100300000FBE87E690E09093CD008093CC0086E00E
+:100310008093CA001092C8002093C900539A5A9A39
+:100320008AB180638AB98BB180638BB983D284E050
+:1003300085BD5F9A579A08950F931F93CF93DF93CC
+:10034000D5DF2FB7F8948EE991E090931F02809348
+:100350001E0290932102809320022FBF2FB7F894A2
+:1003600089E191E090939A018093990190939C0187
+:1003700080939B012FBF7894CEE9D1E003E08FB743
+:10038000F894909122028FBF903809F180E091E0BB
+:10039000ABD497FD1CC0E0911E02F0911F02808338
+:1003A000E0911E02F0911F02CF01019690931F026F
+:1003B00080931E028E51924011F4D283C1839FB765
+:1003C000F894809122028F5F809322029FBF8FB7A3
+:1003D000F89410919D018FBFA89902C0113678F151
+:1003E000A89A80919D01882361F05D980093160181
+:1003F00008C089E191E0B1DE682F80E091E0DAD4B5
+:1004000011501123B1F780911601882351F080918A
+:10041000160181508093160180911601882309F4FA
+:100420005D9A80911701882351F0809117018150C6
+:100430008093170180911701882309F45C9A8FB784
+:10044000F894909122028FBF992369F08EE991E090
+:1004500084DE982F8091C80085FFFCCF9093CE005A
+:100460005C980093170180E091E095D42AD487CF5F
+:10047000DA01923049F0933061F09130F9F4E8E913
+:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6
+:1004900019C0813049F0813018F0823079F408C0F9
+:1004A000E8EEF0E0849107C0ECEEF0E0849103C048
+:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9
+:1004C00020E030E0ED93FC93C901089528E030E08E
+:1004D00040E003C04F5F220F331F28173907D0F3C6
+:1004E000842F8295807F08958093E9008091EB00AE
+:1004F00081608093EB001092ED006093EC004093DC
+:10050000ED008091EE00881F8827881F08951092C3
+:10051000F40090E09093E9001092F0001092E8004F
+:100520001092ED008091EB008E7F8093EB009F5F37
+:10053000953081F708958091270288238CF403C0B9
+:100540008EB38823B1F08091E80082FFF9CF8091CB
+:10055000E8008B778093E80008958EB3882349F0F4
+:100560008091E80080FFF9CF8091E8008E7780933A
+:10057000E800089594E68091EC0080FF05C080912A
+:10058000E80080FF05C023C08091E80082FD1FC005
+:100590008EB3882311F482E008958EB3853011F470
+:1005A00083E008958091EB0085FF02C081E008950B
+:1005B0008091E10082FFDFCF8091E1008B7F80930B
+:1005C000E100992311F484E008959150D4CF80E0A4
+:1005D00008959C0140912D0250912E024617570715
+:1005E00018F4F90120E038C06115710511F0AB0174
+:1005F000F8CF8091E8008E778093E80040E050E0EB
+:10060000F0CF8091E80083FF02C081E008958091DF
+:10061000E80082FD2DC08EB3882381F18EB3853032
+:1006200079F18091E80080FF17C09091F20006C038
+:1006300081918093F100415050409F5F41155105D9
+:1006400011F09830A8F320E0983009F421E080916F
+:10065000E8008E778093E8004115510591F622233A
+:1006600081F606C08EB3882349F08EB3853041F001
+:100670008091E80082FFF6CF80E0089582E008953F
+:1006800083E008959C0140912D0250912E0246175F
+:10069000570710F490E03BC06115710511F0AB01F4
+:1006A000F9CF8091E8008E778093E80040E050E039
+:1006B000F1CF8091E80083FF02C081E0089580912E
+:1006C000E80082FD30C08EB3882399F18EB3853067
+:1006D00091F18091E80080FF1AC08091F20009C07A
+:1006E000F9012F5F3F4FE491E093F10041505040FA
+:1006F0008F5F4115510511F0883090F390E08830FC
+:1007000009F491E08091E8008E778093E80041152C
+:10071000510579F6992369F606C08EB3882349F00E
+:100720008EB3853041F08091E80082FFF6CF80E003
+:10073000089582E0089583E008959C016115710594
+:1007400029F48091E8008B778093E800F90120C0BC
+:100750008091E80083FF02C081E008958EB3882372
+:1007600039F18EB3853031F18091E80082FFF0CF0E
+:1007700006C08091F10081936150704021F080911A
+:10078000F2008823B1F78091E8008B778093E8002E
+:1007900061157105E9F606C08EB3882349F08EB362
+:1007A000853041F08091E80080FFF6CF80E0089529
+:1007B00082E0089583E0089542D044D01EBA10929A
+:1007C0002502109224021092230284E089BD89B58B
+:1007D000826089BD09B400FEFDCF8091D800982FBA
+:1007E0009F779093D80080688093D80080916300B1
+:1007F0008E7F809363008091D8008F7D8093D80096
+:100800008091E0008E7F8093E0008091E1008E7FF8
+:100810008093E1008091E20081608093E20080910A
+:10082000E100877F8093E1008091E20088608093FF
+:10083000E2000895C1DF81E08093260208951092BE
+:10084000E20008951092E10008951F920F920FB6F2
+:100850000F9211241F932F933F934F935F936F93A6
+:100860007F938F939F93AF93BF93EF93FF93E9EEA3
+:10087000F0E0108117701082E0EFF0E08081877F58
+:1008800080837894C3D0F894A9EEB0E01C92E0EF96
+:10089000F0E08081886080831C93FF91EF91BF918D
+:1008A000AF919F918F917F916F915F914F913F9108
+:1008B0002F911F910F900FBE0F901F9018951F92B0
+:1008C0000F920FB60F9211242F933F934F935F9384
+:1008D0006F937F938F939F93AF93BF93EF93FF9308
+:1008E0008091E10080FF1BC08091E20080FF17C073
+:1008F0008091E1008E7F8093E1008091E2008E7F05
+:100900008093E2008091E20080618093E200809118
+:10091000D80080628093D80019BC1EBAD1D18091D2
+:10092000E10084FF29C08091E20084FF25C084E0BB
+:1009300089BD89B5826089BD09B400FEFDCF809173
+:10094000D8008F7D8093D8008091E1008F7E8093C6
+:10095000E1008091E2008F7E8093E2008091E200CE
+:1009600081608093E20080912502882311F481E068
+:1009700001C084E08EBBA4D18091E10083FF27C039
+:100980008091E20083FF23C08091E100877F809304
+:10099000E10082E08EBB109225028091E1008E7F03
+:1009A0008093E1008091E2008E7F8093E20080914D
+:1009B000E20080618093E200AADD80E060E042E036
+:1009C00093DD8091F00088608093F00079D1809170
+:1009D000E10082FF0AC08091E20082FF06C08091A0
+:1009E000E1008B7F8093E1006BD1FF91EF91BF918C
+:1009F000AF919F918F917F916F915F914F913F91B7
+:100A00002F910F900FBE0F901F9018951F93DF939B
+:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D
+:100A2000CDBFE7E2F2E08091F100819322E0EF3266
+:100A3000F207C9F78091270230912802353009F476
+:100A400087C0363040F43130C9F1313070F0333086
+:100A500009F01DC133C0383009F4EFC0393009F452
+:100A6000FEC0363009F013C192C0803821F08238C0
+:100A700009F00DC108C090912302809124028823BF
+:100A800099F0926011C080912B0287708093E900E9
+:100A90008091EB0090E025E0969587952A95E1F707
+:100AA000982F91701092E9008091E800877F8093E1
+:100AB000E8009093F1001092F100CAC0882319F069
+:100AC000823009F0E4C090E08F719070009721F0BF
+:100AD000029709F0DDC00CC080912902813009F035
+:100AE000D7C010922402333069F5809324022AC0C3
+:100AF00080912902882331F520912B02277009F477
+:100B0000C7C02093E9008091EB0080FFC1C0333063
+:100B100021F48091EB00806213C08091EB00806132
+:100B20008093EB0081E090E002C0880F991F2A9526
+:100B3000E2F78093EA001092EA008091EB0088606F
+:100B40008093EB001092E9008091E800877F83C0DA
+:100B5000882309F09CC0109129028091E800877FCA
+:100B60008093E800E8DC04C08EB3882309F490C0C9
+:100B70008091E80080FFF8CF812F8F7711F492E009
+:100B800001C093E09EBB80688093E30081C08058E1
+:100B9000823008F07CC08091290290912A0223E0E3
+:100BA0008C3D920799F55FB7F894DE0115964EE0FB
+:100BB00020E030E061E2E42FF0E0609357008491A0
+:100BC00020FF03C082958F704F5F982F9F70892FF1
+:100BD000805D8A3308F0895F8C9311961C9211977F
+:100BE0002F5F3F4F12962431310529F75FBF8AE20C
+:100BF0008B8383E08C838091E800877F8093E8007B
+:100C0000CE0103966AE270E0E4DC11C060912B0231
+:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2
+:100C2000E800877F8093E80089819A812BDD80919D
+:100C3000E8008B778093E8002BC0803841F58091E5
+:100C4000E800877F8093E800809125028093F1007F
+:100C50008091E8008E778093E8006DDC19C08823CE
+:100C6000B1F490912902923098F48091E800877F46
+:100C70008093E800909325025EDC80912502882312
+:100C800011F483E001C084E08EBB2DDB01C028DBC2
+:100C90008091E80083FF0AC08091EB00806280931E
+:100CA000EB008091E800877F8093E800AC960FB658
+:100CB000F894DEBF0FBECDBFCF91DF911F91089595
+:100CC00008951F938EB3882361F01091E90010926C
+:100CD000E9008091E80083FF01C098DE177010934F
+:100CE000E9001F9108950895FC018EB3843021F529
+:100CF00087859089A189B2890097A105B105E1F0A6
+:100D000085818093E9008091E80082FF15C0809181
+:100D1000F200882319F42FEF3FEF04C08091F10017
+:100D2000282F30E08091F200882341F48091E80080
+:100D30008B778093E80002C02FEF3FEFC901089541
+:100D4000FC018EB3843011F587859089A189B28921
+:100D50000097A105B105D1F081818093E9008091D0
+:100D6000F2008823A9F09091E8008091E8008E7746
+:100D70008093E80095FD0CC0FDDB982F882349F493
+:100D80008091E8008E778093E80003C092E001C074
+:100D900090E0892F0895FC018EB3843051F487854B
+:100DA0009089A189B2890097A105B10511F0CF0101
+:100DB000C7CF08951F93FC01162F8EB38430D9F44A
+:100DC00087859089A189B2890097A105B10599F01D
+:100DD00081818093E9008091E80085FD08C08091C1
+:100DE000E8008E778093E800C5DB882329F4109310
+:100DF000F10080E001C082E01F9108950F931F93DE
+:100E0000CF93DF93EC010D96FC0189E0DF011D9289
+:100E10008A95E9F72A813B8109818C81882311F425
+:100E200010E001C014E0C90151DB182B1260802FC3
+:100E300061E8412F59DB882329F12E813F810D8103
+:100E40008885882311F410E001C014E0C9013EDB5D
+:100E5000182B1260802F60E8412F46DB882391F029
+:100E60002A853B8509858C85882311F410E001C013
+:100E700014E0C9012BDB182B1260802F61EC412F8D
+:100E800033DB01C080E0DF91CF911F910F91089576
+:100E9000CF93DF93EC018091E80083FF60C08881ED
+:100EA00090E020912B0230912C022817390709F08D
+:100EB00056C080912802813261F0823220F4803263
+:100EC00009F04DC019C0823269F1833209F047C080
+:100ED00038C080912702813A09F041C08091E80032
+:100EE000877F8093E800CE010F9667E070E071DBAA
+:100EF0008091E8008B7713C080912702813279F5C9
+:100F00008091E800877F8093E800CE010F9667E02C
+:100F100070E013DCCE013ED98091E8008E7780939B
+:100F2000E8001DC0809127028132C9F48091E80059
+:100F3000877F8093E800809129028D87CE01C8D9F0
+:100F40000DC080912702813251F48091E800877FA3
+:100F50008093E800CE0160912902C5DEECDADF91D2
+:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053
+:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749
+:100F800020F0A21BB30BE40BF50B661F771F881F25
+:100F9000991F1A9469F760957095809590959B01BB
+:0C0FA000AC01BD01CF010895F894FFCF13
+:100FAC0000034000000440000002080000000000A4
+:060FBC000000000000002F
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-mega.hex b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-mega.hex
new file mode 100644
index 0000000..fbbeb07
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-mega.hex
@@ -0,0 +1,256 @@
+:10000000A2C00000BBC00000B9C00000B7C0000023
+:10001000B5C00000B3C00000B1C00000AFC0000018
+:10002000ADC00000ABC00000A9C000005AC4000071
+:100030001EC40000A3C00000A1C000009FC00000BB
+:100040009DC000009BC0000099C0000097C0000048
+:1000500095C0000093C0000091C0000014C10000D2
+:100060008DC000008BC0000089C0000087C0000068
+:1000700085C0000083C0000081C000007FC0000078
+:100080007DC000007BC0000079C0000077C0000088
+:1000900075C0000073C000001201100102000008CA
+:1000A0004123100001000102DC0109023E000201AF
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:100120002403410072006400750069006E006F00D6
+:1001300020004D006500670061002000320035009E
+:1001400036003000000011241FBECFEFD2E0DEBF2A
+:10015000CDBF11E0A0E0B1E0E0EDFFE002C005900E
+:100160000D92A631B107D9F712E0A6E1B1E001C0C6
+:100170001D92AF32B107E1F7F1D028C741CF9C0102
+:10018000DC01AE57BF4FED91FC9111974191119653
+:10019000FC93EE9380589F4FE817F90711F42D93C5
+:1001A0003C939FB7F894F901EC57FF4F8081815041
+:1001B00080839FBF842F0895DF92EF92FF920F9369
+:1001C0001F93FC018489813019F0823021F405C02D
+:1001D00040E3D42E04C0DD2402C030E2D32E838954
+:1001E000823011F488E0D82A8589873031F0883050
+:1001F00031F0863031F482E003C084E001C086E053
+:10020000D82A1092C9001092C8001092CA00E78440
+:10021000F0880189128980E0E81681EEF80680E016
+:10022000080780E0180719F420E130E00FC0C8018A
+:10023000B701969587957795679560587B47814E6E
+:100240009F4FA8019701A0D6215030403093CD0098
+:100250002093CC00D092CA0080E0E81681EEF80628
+:1002600080E0080780E0180711F082E001C080E01C
+:100270008093C80088E98093C9001F910F91FF9077
+:10028000EF90DF9008951F920F920FB60F921124F6
+:100290002F938F939F93EF93FF939091CE008EB304
+:1002A0008430F1F4E0919901F0919A019083E0910A
+:1002B0009901F0919A01CF01019690939A01809350
+:1002C00099018959914021F489E191E092838183D8
+:1002D0009FB7F89480919D018F5F80939D019FBF90
+:1002E000FF91EF919F918F912F910F900FBE0F90E3
+:1002F0001F901895FC01858580FF02C05F980895C6
+:100300005F9A089580E091E0D5C580E091E088C5CE
+:1003100084B7877F84BF28E10FB6F89420936000EC
+:10032000109260000FBE87E690E09093CD0080931E
+:10033000CC0086E08093CA001092C8002093C900C8
+:10034000539A5A9A8AB180638AB98BB180638BB908
+:1003500083D284E085BD5F9A579A08950F931F93C7
+:10036000CF93DF93D5DF2FB7F8948EE991E0909388
+:100370001F0280931E0290932102809320022FBFC0
+:100380002FB7F89489E191E090939A0180939901B5
+:1003900090939C0180939B012FBF7894CEE9D1E08C
+:1003A00003E08FB7F894909122028FBF903809F143
+:1003B00080E091E0ABD497FD1CC0E0911E02F0916B
+:1003C0001F028083E0911E02F0911F02CF0101966F
+:1003D00090931F0280931E028E51924011F4D2839B
+:1003E000C1839FB7F894809122028F5F809322028D
+:1003F0009FBF8FB7F89410919D018FBFA89902C03D
+:10040000113678F1A89A80919D01882361F05D985A
+:100410000093160108C089E191E0B1DE682F80E009
+:1004200091E0DAD411501123B1F78091160188239D
+:1004300051F0809116018150809316018091160130
+:10044000882309F45D9A80911701882351F08091E7
+:10045000170181508093170180911701882309F4B7
+:100460005C9A8FB7F894909122028FBF992369F01C
+:100470008EE991E084DE982F8091C80085FFFCCF43
+:100480009093CE005C980093170180E091E095D4A2
+:100490002AD487CFDA01923049F0933061F091305D
+:1004A000F9F4E8E9F0E022E130E01EC0EAEAF0E029
+:1004B0002EE330E019C0813049F0813018F08230ED
+:1004C00079F408C0E8EEF0E0849107C0ECEEF0E0CB
+:1004D000849103C0E0E2F1E08491282F30E004C071
+:1004E000E0E0F0E020E030E0ED93FC93C9010895F6
+:1004F00028E030E040E003C04F5F220F331F281791
+:100500003907D0F3842F8295807F08958093E90086
+:100510008091EB0081608093EB001092ED0060937E
+:10052000EC004093ED008091EE00881F8827881F23
+:1005300008951092F40090E09093E9001092F0007A
+:100540001092E8001092ED008091EB008E7F809376
+:10055000EB009F5F953081F70895809127028823F3
+:100560008CF403C08EB38823B1F08091E80082FF41
+:10057000F9CF8091E8008B778093E80008958EB3DF
+:10058000882349F08091E80080FFF9CF8091E8004E
+:100590008E778093E800089594E68091EC0080FFC8
+:1005A00005C08091E80080FF05C023C08091E8006D
+:1005B00082FD1FC08EB3882311F482E008958EB3AC
+:1005C000853011F483E008958091EB0085FF02C02F
+:1005D00081E008958091E10082FFDFCF8091E1000A
+:1005E0008B7F8093E100992311F484E0089591506A
+:1005F000D4CF80E008959C0140912D0250912E02AD
+:100600004617570718F4F90120E038C06115710545
+:1006100011F0AB01F8CF8091E8008E778093E8006D
+:1006200040E050E0F0CF8091E80083FF02C081E01D
+:1006300008958091E80082FD2DC08EB3882381F15A
+:100640008EB3853079F18091E80080FF17C09091DA
+:10065000F20006C081918093F100415050409F5FAD
+:100660004115510511F09830A8F320E0983009F4B5
+:1006700021E08091E8008E778093E80041155105D4
+:1006800091F6222381F606C08EB3882349F08EB3FB
+:10069000853041F08091E80082FFF6CF80E0089538
+:1006A00082E0089583E008959C0140912D025091CD
+:1006B0002E024617570710F490E03BC061157105F4
+:1006C00011F0AB01F9CF8091E8008E778093E800BC
+:1006D00040E050E0F1CF8091E80083FF02C081E06C
+:1006E00008958091E80082FD30C08EB3882399F18F
+:1006F0008EB3853091F18091E80080FF1AC080911F
+:10070000F20009C0F9012F5F3F4FE491E093F1003F
+:10071000415050408F5F4115510511F0883090F3E2
+:1007200090E0883009F491E08091E8008E77809322
+:10073000E8004115510579F6992369F606C08EB394
+:10074000882349F08EB3853041F08091E80082FF24
+:10075000F6CF80E0089582E0089583E008959C013B
+:100760006115710529F48091E8008B778093E8008A
+:10077000F90120C08091E80083FF02C081E0089564
+:100780008EB3882339F18EB3853031F18091E80042
+:1007900082FFF0CF06C08091F100819361507040DC
+:1007A00021F08091F2008823B1F78091E8008B77E7
+:1007B0008093E80061157105E9F606C08EB38823C1
+:1007C00049F08EB3853041F08091E80080FFF6CF8C
+:1007D00080E0089582E0089583E0089542D044D0F7
+:1007E0001EBA10922502109224021092230284E075
+:1007F00089BD89B5826089BD09B400FEFDCF8091B5
+:10080000D800982F9F779093D80080688093D80065
+:10081000809163008E7F809363008091D8008F7DEC
+:100820008093D8008091E0008E7F8093E0008091DB
+:10083000E1008E7F8093E1008091E20081608093EF
+:10084000E2008091E100877F8093E1008091E200E7
+:1008500088608093E2000895C1DF81E080932602E2
+:1008600008951092E20008951092E10008951F92F9
+:100870000F920FB60F9211241F932F933F934F9314
+:100880005F936F937F938F939F93AF93BF93EF93F8
+:10089000FF93E9EEF0E0108117701082E0EFF0E0D6
+:1008A0008081877F80837894C3D0F894A9EEB0E0EC
+:1008B0001C92E0EFF0E08081886080831C93FF91C0
+:1008C000EF91BF91AF919F918F917F916F915F91C8
+:1008D0004F913F912F911F910F900FBE0F901F903E
+:1008E00018951F920F920FB60F9211242F933F93DA
+:1008F0004F935F936F937F938F939F93AF93BF9328
+:10090000EF93FF938091E10080FF1BC08091E20094
+:1009100080FF17C08091E1008E7F8093E10080917D
+:10092000E2008E7F8093E2008091E20080618093FC
+:10093000E2008091D80080628093D80019BC1EBA72
+:10094000D1D18091E10084FF29C08091E20084FF31
+:1009500025C084E089BD89B5826089BD09B400FEE7
+:10096000FDCF8091D8008F7D8093D8008091E100E9
+:100970008F7E8093E1008091E2008F7E8093E20081
+:100980008091E20081608093E200809125028823BB
+:1009900011F481E001C084E08EBBA4D18091E1001C
+:1009A00083FF27C08091E20083FF23C08091E10094
+:1009B000877F8093E10082E08EBB109225028091B8
+:1009C000E1008E7F8093E1008091E2008E7F809332
+:1009D000E2008091E20080618093E200AADD80E085
+:1009E00060E042E093DD8091F00088608093F00049
+:1009F00079D18091E10082FF0AC08091E20082FFFC
+:100A000006C08091E1008B7F8093E1006BD1FF9164
+:100A1000EF91BF91AF919F918F917F916F915F9176
+:100A20004F913F912F910F900FBE0F901F901895EF
+:100A30001F93DF93CF93CDB7DEB7AC970FB6F89483
+:100A4000DEBF0FBECDBFE7E2F2E08091F1008193FF
+:100A500022E0EF32F207C9F7809127023091280295
+:100A6000353009F487C0363040F43130C9F13130C7
+:100A700070F0333009F01DC133C0383009F4EFC0D5
+:100A8000393009F4FEC0363009F013C192C0803805
+:100A900021F0823809F00DC108C0909123028091A5
+:100AA0002402882399F0926011C080912B028770F4
+:100AB0008093E9008091EB0090E025E09695879582
+:100AC0002A95E1F7982F91701092E9008091E80043
+:100AD000877F8093E8009093F1001092F100CAC0E4
+:100AE000882319F0823009F0E4C090E08F71907093
+:100AF000009721F0029709F0DDC00CC08091290217
+:100B0000813009F0D7C010922402333069F5809308
+:100B100024022AC080912902882331F520912B02DA
+:100B2000277009F4C7C02093E9008091EB0080FF93
+:100B3000C1C0333021F48091EB00806213C08091FA
+:100B4000EB0080618093EB0081E090E002C0880FB1
+:100B5000991F2A95E2F78093EA001092EA008091AB
+:100B6000EB0088608093EB001092E9008091E80030
+:100B7000877F83C0882309F09CC01091290280914F
+:100B8000E800877F8093E800E8DC04C08EB3882308
+:100B900009F490C08091E80080FFF8CF812F8F7713
+:100BA00011F492E001C093E09EBB80688093E30063
+:100BB00081C08058823008F07CC0809129029091D9
+:100BC0002A0223E08C3D920799F55FB7F894DE0185
+:100BD00015964EE020E030E061E2E42FF0E0609313
+:100BE0005700849120FF03C082958F704F5F982F2C
+:100BF0009F70892F805D8A3308F0895F8C931196EE
+:100C00001C9211972F5F3F4F12962431310529F71F
+:100C10005FBF8AE28B8383E08C838091E800877FCB
+:100C20008093E800CE0103966AE270E0E4DC11C034
+:100C300060912B02AE014F5F5F4F2CDCBC0100972F
+:100C4000C9F18091E800877F8093E80089819A81CB
+:100C50002BDD8091E8008B778093E8002BC08038F3
+:100C600041F58091E800877F8093E800809125021C
+:100C70008093F1008091E8008E778093E8006DDC2E
+:100C800019C08823B1F490912902923098F4809190
+:100C9000E800877F8093E800909325025EDC8091D6
+:100CA0002502882311F483E001C084E08EBB2DDB94
+:100CB00001C028DB8091E80083FF0AC08091EB002F
+:100CC00080628093EB008091E800877F8093E8004A
+:100CD000AC960FB6F894DEBF0FBECDBFCF91DF91BB
+:100CE0001F91089508951F938EB3882361F010918A
+:100CF000E9001092E9008091E80083FF01C098DECE
+:100D000017701093E9001F9108950895FC018EB3A8
+:100D1000843021F587859089A189B2890097A10542
+:100D2000B105E1F085818093E9008091E80082FFC0
+:100D300015C08091F200882319F42FEF3FEF04C013
+:100D40008091F100282F30E08091F200882341F457
+:100D50008091E8008B778093E80002C02FEF3FEF8F
+:100D6000C9010895FC018EB3843011F587859089FF
+:100D7000A189B2890097A105B105D1F08181809345
+:100D8000E9008091F2008823A9F09091E800809119
+:100D9000E8008E778093E80095FD0CC0FDDB982F6E
+:100DA000882349F48091E8008E778093E80003C09F
+:100DB00092E001C090E0892F0895FC018EB3843049
+:100DC00051F487859089A189B2890097A105B10561
+:100DD00011F0CF01C7CF08951F93FC01162F8EB3DA
+:100DE0008430D9F487859089A189B2890097A105BB
+:100DF000B10599F081818093E9008091E80085FD3B
+:100E000008C08091E8008E778093E800C5DB8823D6
+:100E100029F41093F10080E001C082E01F91089551
+:100E20000F931F93CF93DF93EC010D96FC0189E0A4
+:100E3000DF011D928A95E9F72A813B8109818C8126
+:100E4000882311F410E001C014E0C90151DB182B14
+:100E50001260802F61E8412F59DB882329F12E8110
+:100E60003F810D818885882311F410E001C014E0D2
+:100E7000C9013EDB182B1260802F60E8412F46DB52
+:100E8000882391F02A853B8509858C85882311F478
+:100E900010E001C014E0C9012BDB182B1260802F79
+:100EA00061EC412F33DB01C080E0DF91CF911F91D6
+:100EB0000F910895CF93DF93EC018091E80083FFB9
+:100EC00060C0888190E020912B0230912C0228177D
+:100ED000390709F056C080912802813261F08232D0
+:100EE00020F4803209F04DC019C0823269F183329A
+:100EF00009F047C038C080912702813A09F041C00B
+:100F00008091E800877F8093E800CE010F9667E02C
+:100F100070E071DB8091E8008B7713C0809127022D
+:100F2000813279F58091E800877F8093E800CE01D7
+:100F30000F9667E070E013DCCE013ED98091E800A7
+:100F40008E778093E8001DC0809127028132C9F41A
+:100F50008091E800877F8093E800809129028D8747
+:100F6000CE01C8D90DC080912702813251F4809101
+:100F7000E800877F8093E800CE0160912902C5DEFA
+:100F8000ECDADF91CF910895A1E21A2EAA1BBB1BC8
+:100F9000FD010DC0AA1FBB1FEE1FFF1FA217B30745
+:100FA000E407F50720F0A21BB30BE40BF50B661F5B
+:100FB000771F881F991F1A9469F76095709580951F
+:100FC00090959B01AC01BD01CF010895F894FFCF2E
+:100FD0000003400000044000000208000000000080
+:060FE0000000000000000B
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex
new file mode 100644
index 0000000..ca51dfa
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex
@@ -0,0 +1,256 @@
+:100000009CC00000B5C00000B3C00000B1C000003B
+:10001000AFC00000ADC00000ABC00000A9C0000030
+:10002000A7C00000A5C00000A3C0000054C4000089
+:1000300018C400009DC000009BC0000099C00000D3
+:1000400097C0000095C0000093C0000091C0000060
+:100050008FC000008DC000008BC000000EC10000EA
+:1000600087C0000085C0000083C0000081C0000080
+:100070007FC000007DC000007BC0000079C0000090
+:1000800077C0000075C0000073C0000071C00000A0
+:100090006FC000006DC000001201100102000008D6
+:1000A0004123010001000102DC0109023E000201BE
+:1000B00000C0320904000001020201000524000111
+:1000C0001004240206052406000107058203080027
+:1000D000FF09040100020A000000070504024000B5
+:1000E00001070583024000010403090432034100B3
+:1000F00072006400750069006E006F002000280027
+:100100007700770077002E006100720064007500B0
+:1001100069006E006F002E0063006300290000007C
+:100120001803410072006400750069006E006F00E2
+:10013000200055006E006F00000011241FBECFEF9D
+:10014000D2E0DEBFCDBF11E0A0E0B1E0E4ECFFE023
+:1001500002C005900D92A631B107D9F712E0A6E1D1
+:10016000B1E001C01D92AF32B107E1F7F1D028C76D
+:1001700047CF9C01DC01AE57BF4FED91FC91119729
+:1001800041911196FC93EE9380589F4FE817F90721
+:1001900011F42D933C939FB7F894F901EC57FF4F5E
+:1001A0008081815080839FBF842F0895DF92EF92DA
+:1001B000FF920F931F93FC018489813019F08230E4
+:1001C00021F405C040E3D42E04C0DD2402C030E297
+:1001D000D32E8389823011F488E0D82A858987302C
+:1001E00031F0883031F0863031F482E003C084E0B1
+:1001F00001C086E0D82A1092C9001092C80010925F
+:10020000CA00E784F0880189128980E0E81681EE4F
+:10021000F80680E0080780E0180719F420E130E0D4
+:100220000FC0C801B7019695879577956795605877
+:100230007B47814E9F4FA8019701A0D621503040A7
+:100240003093CD002093CC00D092CA0080E0E81615
+:1002500081EEF80680E0080780E0180711F082E0E0
+:1002600001C080E08093C80088E98093C9001F9195
+:100270000F91FF90EF90DF9008951F920F920FB6AD
+:100280000F9211242F938F939F93EF93FF9390914D
+:10029000CE008EB38430F1F4E0919901F0919A018F
+:1002A0009083E0919901F0919A01CF01019690938A
+:1002B0009A01809399018959914021F489E191E053
+:1002C000928381839FB7F89480919D018F5F809383
+:1002D0009D019FBFFF91EF919F918F912F910F9063
+:1002E0000FBE0F901F901895FC01858580FF02C0FE
+:1002F0005F9808955F9A089580E091E0D5C580E009
+:1003000091E088C584B7877F84BF28E10FB6F89451
+:1003100020936000109260000FBE87E690E09093FB
+:10032000CD008093CC0086E08093CA001092C80074
+:100330002093C900539A5A9A8AB180638AB98BB1C3
+:1003400080638BB983D284E085BD5F9A579A089504
+:100350000F931F93CF93DF93D5DF2FB7F8948EE9D8
+:1003600091E090931F0280931E029093210280934C
+:1003700020022FBF2FB7F89489E191E090939A0162
+:100380008093990190939C0180939B012FBF789457
+:10039000CEE9D1E003E08FB7F894909122028FBFAD
+:1003A000903809F180E091E0ABD497FD1CC0E0915A
+:1003B0001E02F0911F028083E0911E02F0911F0245
+:1003C000CF01019690931F0280931E028E5192409E
+:1003D00011F4D283C1839FB7F894809122028F5F7A
+:1003E000809322029FBF8FB7F89410919D018FBF19
+:1003F000A89902C0113678F1A89A80919D018823AE
+:1004000061F05D980093160108C089E191E0B1DECA
+:10041000682F80E091E0DAD411501123B1F7809178
+:100420001601882351F080911601815080931601A6
+:1004300080911601882309F45D9A80911701882321
+:1004400051F080911701815080931701809117011D
+:10045000882309F45C9A8FB7F894909122028FBF99
+:10046000992369F08EE991E084DE982F8091C8008D
+:1004700085FFFCCF9093CE005C980093170180E03D
+:1004800091E095D42AD487CFDA01923049F09330A5
+:1004900061F09130F9F4E8E9F0E022E130E01EC0CB
+:1004A000EAEAF0E02EE330E019C0813049F0813013
+:1004B00018F0823079F408C0E8EEF0E0849107C0CB
+:1004C000ECEEF0E0849103C0E0E2F1E08491282FAB
+:1004D00030E004C0E0E0F0E020E030E0ED93FC9399
+:1004E000C901089528E030E040E003C04F5F220FCB
+:1004F000331F28173907D0F3842F8295807F089502
+:100500008093E9008091EB0081608093EB00109272
+:10051000ED006093EC004093ED008091EE00881FA9
+:100520008827881F08951092F40090E09093E900C6
+:100530001092F0001092E8001092ED008091EB0014
+:100540008E7F8093EB009F5F953081F708958091B7
+:10055000270288238CF403C08EB38823B1F08091E6
+:10056000E80082FFF9CF8091E8008B778093E80064
+:1005700008958EB3882349F08091E80080FFF9CF79
+:100580008091E8008E778093E800089594E680914A
+:10059000EC0080FF05C08091E80080FF05C023C00B
+:1005A0008091E80082FD1FC08EB3882311F482E0A1
+:1005B00008958EB3853011F483E008958091EB00A7
+:1005C00085FF02C081E008958091E10082FFDFCFC6
+:1005D0008091E1008B7F8093E100992311F484E006
+:1005E00008959150D4CF80E008959C0140912D0250
+:1005F00050912E024617570718F4F90120E038C031
+:100600006115710511F0AB01F8CF8091E8008E778C
+:100610008093E80040E050E0F0CF8091E80083FF55
+:1006200002C081E008958091E80082FD2DC08EB364
+:10063000882381F18EB3853079F18091E80080FFC5
+:1006400017C09091F20006C081918093F100415053
+:1006500050409F5F4115510511F09830A8F320E0FC
+:10066000983009F421E08091E8008E778093E800CB
+:100670004115510591F6222381F606C08EB38823D9
+:1006800049F08EB3853041F08091E80082FFF6CFCB
+:1006900080E0089582E0089583E008959C014091F0
+:1006A0002D0250912E024617570710F490E03BC0E0
+:1006B0006115710511F0AB01F9CF8091E8008E77DB
+:1006C0008093E80040E050E0F1CF8091E80083FFA4
+:1006D00002C081E008958091E80082FD30C08EB3B1
+:1006E000882399F18EB3853091F18091E80080FFE5
+:1006F0001AC08091F20009C0F9012F5F3F4FE491C9
+:10070000E093F100415050408F5F4115510511F0C9
+:10071000883090F390E0883009F491E08091E8000F
+:100720008E778093E8004115510579F6992369F693
+:1007300006C08EB3882349F08EB3853041F0809196
+:10074000E80082FFF6CF80E0089582E0089583E01C
+:1007500008959C016115710529F48091E8008B775B
+:100760008093E800F90120C08091E80083FF02C077
+:1007700081E008958EB3882339F18EB3853031F14D
+:100780008091E80082FFF0CF06C08091F100819354
+:100790006150704021F08091F2008823B1F7809180
+:1007A000E8008B778093E80061157105E9F606C0D3
+:1007B0008EB3882349F08EB3853041F08091E800F4
+:1007C00080FFF6CF80E0089582E0089583E00895E9
+:1007D00042D044D01EBA10922502109224021092E8
+:1007E000230284E089BD89B5826089BD09B400FE19
+:1007F000FDCF8091D800982F9F779093D800806884
+:100800008093D800809163008E7F809363008091F5
+:10081000D8008F7D8093D8008091E0008E7F8093F8
+:10082000E0008091E1008E7F8093E1008091E20002
+:1008300081608093E2008091E100877F8093E100F6
+:100840008091E20088608093E2000895C1DF81E03A
+:100850008093260208951092E20008951092E1001C
+:1008600008951F920F920FB60F9211241F932F938A
+:100870003F934F935F936F937F938F939F93AF9328
+:10088000BF93EF93FF93E9EEF0E0108117701082B1
+:10089000E0EFF0E08081877F80837894C3D0F89484
+:1008A000A9EEB0E01C92E0EFF0E0808188608083E8
+:1008B0001C93FF91EF91BF91AF919F918F917F9189
+:1008C0006F915F914F913F912F911F910F900FBEAC
+:1008D0000F901F9018951F920F920FB60F92112430
+:1008E0002F933F934F935F936F937F938F939F9338
+:1008F000AF93BF93EF93FF938091E10080FF1BC004
+:100900008091E20080FF17C08091E1008E7F80938C
+:10091000E1008091E2008E7F8093E2008091E2000E
+:1009200080618093E2008091D80080628093D8003B
+:1009300019BC1EBAD1D18091E10084FF29C08091F9
+:10094000E20084FF25C084E089BD89B5826089BD4D
+:1009500009B400FEFDCF8091D8008F7D8093D80030
+:100960008091E1008F7E8093E1008091E2008F7E94
+:100970008093E2008091E20081608093E2008091A8
+:100980002502882311F481E001C084E08EBBA4D14C
+:100990008091E10083FF27C08091E20083FF23C0A4
+:1009A0008091E100877F8093E10082E08EBB10920E
+:1009B00025028091E1008E7F8093E1008091E2002A
+:1009C0008E7F8093E2008091E20080618093E2005C
+:1009D000AADD80E060E042E093DD8091F000886075
+:1009E0008093F00079D18091E10082FF0AC080916C
+:1009F000E20082FF06C08091E1008B7F8093E100DE
+:100A00006BD1FF91EF91BF91AF919F918F917F91AA
+:100A10006F915F914F913F912F910F900FBE0F906B
+:100A20001F9018951F93DF93CF93CDB7DEB7AC9788
+:100A30000FB6F894DEBF0FBECDBFE7E2F2E08091C3
+:100A4000F100819322E0EF32F207C9F7809127028B
+:100A500030912802353009F487C0363040F4313007
+:100A6000C9F1313070F0333009F01DC133C0383076
+:100A700009F4EFC0393009F4FEC0363009F013C173
+:100A800092C0803821F0823809F00DC108C09091E1
+:100A9000230280912402882399F0926011C08091F2
+:100AA0002B0287708093E9008091EB0090E025E0B5
+:100AB000969587952A95E1F7982F91701092E90005
+:100AC0008091E800877F8093E8009093F100109276
+:100AD000F100CAC0882319F0823009F0E4C090E028
+:100AE0008F719070009721F0029709F0DDC00CC063
+:100AF00080912902813009F0D7C01092240233304E
+:100B000069F5809324022AC080912902882331F557
+:100B100020912B02277009F4C7C02093E90080912F
+:100B2000EB0080FFC1C0333021F48091EB00806284
+:100B300013C08091EB0080618093EB0081E090E036
+:100B400002C0880F991F2A95E2F78093EA0010925D
+:100B5000EA008091EB0088608093EB001092E9003E
+:100B60008091E800877F83C0882309F09CC01091A2
+:100B700029028091E800877F8093E800E8DC04C0C8
+:100B80008EB3882309F490C08091E80080FFF8CFED
+:100B9000812F8F7711F492E001C093E09EBB8068B3
+:100BA0008093E30081C08058823008F07CC080913F
+:100BB000290290912A0223E08C3D920799F55FB7B4
+:100BC000F894DE0115964EE020E030E061E2E42F7B
+:100BD000F0E060935700849120FF03C082958F70EE
+:100BE0004F5F982F9F70892F805D8A3308F0895F4F
+:100BF0008C9311961C9211972F5F3F4F12962431C0
+:100C0000310529F75FBF8AE28B8383E08C83809173
+:100C1000E800877F8093E800CE0103966AE270E0E7
+:100C2000E4DC11C060912B02AE014F5F5F4F2CDC02
+:100C3000BC010097C9F18091E800877F8093E800AC
+:100C400089819A812BDD8091E8008B778093E80081
+:100C50002BC0803841F58091E800877F8093E800C1
+:100C6000809125028093F1008091E8008E77809337
+:100C7000E8006DDC19C08823B1F49091290292300C
+:100C800098F48091E800877F8093E8009093250294
+:100C90005EDC80912502882311F483E001C084E0AA
+:100CA0008EBB2DDB01C028DB8091E80083FF0AC0EA
+:100CB0008091EB0080628093EB008091E800877F59
+:100CC0008093E800AC960FB6F894DEBF0FBECDBFA0
+:100CD000CF91DF911F91089508951F938EB38823BC
+:100CE00061F01091E9001092E9008091E80083FF23
+:100CF00001C098DE17701093E9001F9108950895C0
+:100D0000FC018EB3843021F587859089A189B28951
+:100D10000097A105B105E1F085818093E9008091FC
+:100D2000E80082FF15C08091F200882319F42FEFAC
+:100D30003FEF04C08091F100282F30E08091F20055
+:100D4000882341F48091E8008B778093E80002C00B
+:100D50002FEF3FEFC9010895FC018EB3843011F5E8
+:100D600087859089A189B2890097A105B105D1F045
+:100D700081818093E9008091F2008823A9F090910D
+:100D8000E8008091E8008E778093E80095FD0CC024
+:100D9000FDDB982F882349F48091E8008E778093BB
+:100DA000E80003C092E001C090E0892F0895FC01A3
+:100DB0008EB3843051F487859089A189B2890097D8
+:100DC000A105B10511F0CF01C7CF08951F93FC0114
+:100DD000162F8EB38430D9F487859089A189B28982
+:100DE0000097A105B10599F081818093E900809178
+:100DF000E80085FD08C08091E8008E778093E800C8
+:100E0000C5DB882329F41093F10080E001C082E063
+:100E10001F9108950F931F93CF93DF93EC010D96CD
+:100E2000FC0189E0DF011D928A95E9F72A813B8167
+:100E300009818C81882311F410E001C014E0C901FC
+:100E400051DB182B1260802F61E8412F59DB88237A
+:100E500029F12E813F810D818885882311F410E0CE
+:100E600001C014E0C9013EDB182B1260802F60E83E
+:100E7000412F46DB882391F02A853B8509858C85A7
+:100E8000882311F410E001C014E0C9012BDB182BFA
+:100E90001260802F61EC412F33DB01C080E0DF91D5
+:100EA000CF911F910F910895CF93DF93EC01809123
+:100EB000E80083FF60C0888190E020912B02309190
+:100EC0002C022817390709F056C080912802813278
+:100ED00061F0823220F4803209F04DC019C08232B4
+:100EE00069F1833209F047C038C080912702813A06
+:100EF00009F041C08091E800877F8093E800CE012F
+:100F00000F9667E070E071DB8091E8008B7713C08B
+:100F100080912702813279F58091E800877F809364
+:100F2000E800CE010F9667E070E013DCCE013ED9F9
+:100F30008091E8008E778093E8001DC080912702A1
+:100F40008132C9F48091E800877F8093E800809126
+:100F500029028D87CE01C8D90DC080912702813228
+:100F600051F48091E800877F8093E800CE01609182
+:100F70002902C5DEECDADF91CF910895A1E21A2EA5
+:100F8000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F2D
+:100F9000A217B307E407F50720F0A21BB30BE40B7D
+:100FA000F50B661F771F881F991F1A9469F76095C4
+:100FB0007095809590959B01AC01BD01CF0108957E
+:040FC000F894FFCFD3
+:100FC400000340000004400000020800000000008C
+:060FD40000000000000017
+:00000001FF
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c
new file mode 100644
index 0000000..4de73c8
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c
@@ -0,0 +1,242 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Main source file for the Arduino-usbserial project. This file contains the main tasks of
+ * the project and is responsible for the initial application hardware configuration.
+ */
+
+#include "Arduino-usbserial.h"
+
+/** Circular buffer to hold data from the host before it is sent to the device via the serial port. */
+RingBuff_t USBtoUSART_Buffer;
+
+/** Circular buffer to hold data from the serial port before it is sent to the host. */
+RingBuff_t USARTtoUSB_Buffer;
+
+/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */
+volatile struct
+{
+ uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */
+ uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */
+ uint8_t PingPongLEDPulse; /**< Milliseconds remaining for enumeration Tx/Rx ping-pong LED pulse */
+} PulseMSRemaining;
+
+/** LUFA CDC Class driver interface configuration and state information. This structure is
+ * passed to all CDC Class driver functions, so that multiple instances of the same class
+ * within a device can be differentiated from one another.
+ */
+USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =
+ {
+ .Config =
+ {
+ .ControlInterfaceNumber = 0,
+
+ .DataINEndpointNumber = CDC_TX_EPNUM,
+ .DataINEndpointSize = CDC_TXRX_EPSIZE,
+ .DataINEndpointDoubleBank = false,
+
+ .DataOUTEndpointNumber = CDC_RX_EPNUM,
+ .DataOUTEndpointSize = CDC_TXRX_EPSIZE,
+ .DataOUTEndpointDoubleBank = false,
+
+ .NotificationEndpointNumber = CDC_NOTIFICATION_EPNUM,
+ .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE,
+ .NotificationEndpointDoubleBank = false,
+ },
+ };
+
+/** Main program entry point. This routine contains the overall program flow, including initial
+ * setup of all components and the main program loop.
+ */
+int main(void)
+{
+ SetupHardware();
+
+ RingBuffer_InitBuffer(&USBtoUSART_Buffer);
+ RingBuffer_InitBuffer(&USARTtoUSB_Buffer);
+
+ sei();
+
+ for (;;)
+ {
+ /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */
+ if (!(RingBuffer_IsFull(&USBtoUSART_Buffer)))
+ {
+ int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
+
+ /* Read bytes from the USB OUT endpoint into the USART transmit buffer */
+ if (!(ReceivedByte < 0))
+ RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte);
+ }
+
+ /* Check if the UART receive buffer flush timer has expired or the buffer is nearly full */
+ RingBuff_Count_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer);
+ if ((TIFR0 & (1 << TOV0)) || (BufferCount > BUFFER_NEARLY_FULL))
+ {
+ TIFR0 |= (1 << TOV0);
+
+ if (USARTtoUSB_Buffer.Count) {
+ LEDs_TurnOnLEDs(LEDMASK_TX);
+ PulseMSRemaining.TxLEDPulse = TX_RX_LED_PULSE_MS;
+ }
+
+ /* Read bytes from the USART receive buffer into the USB IN endpoint */
+ while (BufferCount--)
+ CDC_Device_SendByte(&VirtualSerial_CDC_Interface, RingBuffer_Remove(&USARTtoUSB_Buffer));
+
+ /* Turn off TX LED(s) once the TX pulse period has elapsed */
+ if (PulseMSRemaining.TxLEDPulse && !(--PulseMSRemaining.TxLEDPulse))
+ LEDs_TurnOffLEDs(LEDMASK_TX);
+
+ /* Turn off RX LED(s) once the RX pulse period has elapsed */
+ if (PulseMSRemaining.RxLEDPulse && !(--PulseMSRemaining.RxLEDPulse))
+ LEDs_TurnOffLEDs(LEDMASK_RX);
+ }
+
+ /* Load the next byte from the USART transmit buffer into the USART */
+ if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) {
+ Serial_TxByte(RingBuffer_Remove(&USBtoUSART_Buffer));
+
+ LEDs_TurnOnLEDs(LEDMASK_RX);
+ PulseMSRemaining.RxLEDPulse = TX_RX_LED_PULSE_MS;
+ }
+
+ CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
+ USB_USBTask();
+ }
+}
+
+/** Configures the board hardware and chip peripherals for the demo's functionality. */
+void SetupHardware(void)
+{
+ /* Disable watchdog if enabled by bootloader/fuses */
+ MCUSR &= ~(1 << WDRF);
+ wdt_disable();
+
+ /* Hardware Initialization */
+ Serial_Init(9600, false);
+ LEDs_Init();
+ USB_Init();
+
+ /* Start the flush timer so that overflows occur rapidly to push received bytes to the USB interface */
+ TCCR0B = (1 << CS02);
+
+ /* Pull target /RESET line high */
+ AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK;
+ AVR_RESET_LINE_DDR |= AVR_RESET_LINE_MASK;
+}
+
+/** Event handler for the library USB Configuration Changed event. */
+void EVENT_USB_Device_ConfigurationChanged(void)
+{
+ CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
+}
+
+/** Event handler for the library USB Unhandled Control Request event. */
+void EVENT_USB_Device_UnhandledControlRequest(void)
+{
+ CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
+}
+
+/** Event handler for the CDC Class driver Line Encoding Changed event.
+ *
+ * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced
+ */
+void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
+{
+ uint8_t ConfigMask = 0;
+
+ switch (CDCInterfaceInfo->State.LineEncoding.ParityType)
+ {
+ case CDC_PARITY_Odd:
+ ConfigMask = ((1 << UPM11) | (1 << UPM10));
+ break;
+ case CDC_PARITY_Even:
+ ConfigMask = (1 << UPM11);
+ break;
+ }
+
+ if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits)
+ ConfigMask |= (1 << USBS1);
+
+ switch (CDCInterfaceInfo->State.LineEncoding.DataBits)
+ {
+ case 6:
+ ConfigMask |= (1 << UCSZ10);
+ break;
+ case 7:
+ ConfigMask |= (1 << UCSZ11);
+ break;
+ case 8:
+ ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10));
+ break;
+ }
+
+ /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */
+ UCSR1B = 0;
+ UCSR1A = 0;
+ UCSR1C = 0;
+
+ /* Special case 57600 baud for compatibility with the ATmega328 bootloader. */
+ UBRR1 = (CDCInterfaceInfo->State.LineEncoding.BaudRateBPS == 57600)
+ ? SERIAL_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)
+ : SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
+
+ UCSR1C = ConfigMask;
+ UCSR1A = (CDCInterfaceInfo->State.LineEncoding.BaudRateBPS == 57600) ? 0 : (1 << U2X1);
+ UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1));
+}
+
+/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer
+ * for later transmission to the host.
+ */
+ISR(USART1_RX_vect, ISR_BLOCK)
+{
+ uint8_t ReceivedByte = UDR1;
+
+ if (USB_DeviceState == DEVICE_STATE_Configured)
+ RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte);
+}
+
+/** Event handler for the CDC Class driver Host-to-Device Line Encoding Changed event.
+ *
+ * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced
+ */
+void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
+{
+ bool CurrentDTRState = (CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR);
+
+ if (CurrentDTRState)
+ AVR_RESET_LINE_PORT &= ~AVR_RESET_LINE_MASK;
+ else
+ AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK;
+}
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.h b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.h
new file mode 100644
index 0000000..99fde39
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.h
@@ -0,0 +1,79 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Header file for Arduino-usbserial.c.
+ */
+
+#ifndef _ARDUINO_USBSERIAL_H_
+#define _ARDUINO_USBSERIAL_H_
+
+ /* Includes: */
+ #include <avr/io.h>
+ #include <avr/wdt.h>
+ #include <avr/interrupt.h>
+ #include <avr/power.h>
+
+ #include "Descriptors.h"
+
+ #include "Lib/LightweightRingBuff.h"
+
+ #include <LUFA/Version.h>
+ #include <LUFA/Drivers/Board/LEDs.h>
+ #include <LUFA/Drivers/Peripheral/Serial.h>
+ #include <LUFA/Drivers/USB/USB.h>
+ #include <LUFA/Drivers/USB/Class/CDC.h>
+
+ /* Macros: */
+ /** LED mask for the library LED driver, to indicate TX activity. */
+ #define LEDMASK_TX LEDS_LED1
+
+ /** LED mask for the library LED driver, to indicate RX activity. */
+ #define LEDMASK_RX LEDS_LED2
+
+ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
+ #define LEDMASK_ERROR (LEDS_LED1 | LEDS_LED2)
+
+ /** LED mask for the library LED driver, to indicate that the USB interface is busy. */
+ #define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2)
+
+ /* Function Prototypes: */
+ void SetupHardware(void);
+
+ void EVENT_USB_Device_Connect(void);
+ void EVENT_USB_Device_Disconnect(void);
+ void EVENT_USB_Device_ConfigurationChanged(void);
+ void EVENT_USB_Device_UnhandledControlRequest(void);
+
+ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo);
+ void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo);
+
+#endif /* _ARDUINO_USBSERIAL_H_ */
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Board/LEDs.h b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Board/LEDs.h
new file mode 100644
index 0000000..152e8f5
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Board/LEDs.h
@@ -0,0 +1,110 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/*
+ Board LEDs driver for the Benito board, from www.dorkbotpdx.org.
+*/
+
+#ifndef __LEDS_ARDUINOUNO_H__
+#define __LEDS_ARDUINOUNO_H__
+
+ /* Includes: */
+ #include <avr/io.h>
+
+/* Enable C linkage for C++ Compilers: */
+ #if defined(__cplusplus)
+ extern "C" {
+ #endif
+
+ /* Preprocessor Checks: */
+ #if !defined(INCLUDE_FROM_LEDS_H)
+ #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
+ #endif
+
+ /* Public Interface - May be used in end-application: */
+ /* Macros: */
+ /** LED mask for the first LED on the board. */
+ #define LEDS_LED1 (1 << 5)
+
+ /** LED mask for the second LED on the board. */
+ #define LEDS_LED2 (1 << 4)
+
+ /** LED mask for all the LEDs on the board. */
+ #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2)
+
+ /** LED mask for the none of the board LEDs */
+ #define LEDS_NO_LEDS 0
+
+ /* Inline Functions: */
+ #if !defined(__DOXYGEN__)
+ static inline void LEDs_Init(void)
+ {
+ DDRD |= LEDS_ALL_LEDS;
+ PORTD |= LEDS_ALL_LEDS;
+ }
+
+ static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
+ {
+ PORTD &= ~LEDMask;
+ }
+
+ static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
+ {
+ PORTD |= LEDMask;
+ }
+
+ static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
+ {
+ PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask);
+ }
+
+ static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask)
+ {
+ PORTD = ((PORTD | ActiveMask) & ~LEDMask);
+ }
+
+ static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
+ {
+ PORTD ^= LEDMask;
+ }
+
+ static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
+ static inline uint8_t LEDs_GetLEDs(void)
+ {
+ return (PORTD & LEDS_ALL_LEDS);
+ }
+ #endif
+
+ /* Disable C linkage for C++ Compilers: */
+ #if defined(__cplusplus)
+ }
+ #endif
+
+#endif
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c
new file mode 100644
index 0000000..705dddf
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c
@@ -0,0 +1,277 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * USB Device Descriptors, for library use when in USB device mode. Descriptors are special
+ * computer-readable structures which the host requests upon device enumeration, to determine
+ * the device's capabilities and functions.
+ */
+
+#include "Descriptors.h"
+
+/* On some devices, there is a factory set internal serial number which can be automatically sent to the host as
+ * the device's serial number when the Device Descriptor's .SerialNumStrIndex entry is set to USE_INTERNAL_SERIAL.
+ * This allows the host to track a device across insertions on different ports, allowing them to retain allocated
+ * resources like COM port numbers and drivers. On demos using this feature, give a warning on unsupported devices
+ * so that the user can supply their own serial number descriptor instead or remove the USE_INTERNAL_SERIAL value
+ * from the Device Descriptor (forcing the host to generate a serial number for each device from the VID, PID and
+ * port location).
+ */
+#if (USE_INTERNAL_SERIAL == NO_DESCRIPTOR)
+ #warning USE_INTERNAL_SERIAL is not available on this AVR - please manually construct a device serial descriptor.
+#endif
+
+/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
+ * device characteristics, including the supported USB version, control endpoint size and the
+ * number of device configurations. The descriptor is read out by the USB host when the enumeration
+ * process begins.
+ */
+USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
+{
+ .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
+
+ .USBSpecification = VERSION_BCD(01.10),
+ .Class = 0x02,
+ .SubClass = 0x00,
+ .Protocol = 0x00,
+
+ .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
+
+ .VendorID = 0x03EB, // Atmel
+
+ .ProductID = 0x204B, // LUFA USB to Serial Demo Application
+ .ReleaseNumber = 0x0001,
+
+ .ManufacturerStrIndex = 0x01,
+ .ProductStrIndex = 0x02,
+ .SerialNumStrIndex = USE_INTERNAL_SERIAL,
+
+ .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
+};
+
+/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
+ * of the device in one of its supported configurations, including information about any device interfaces
+ * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
+ * a configuration so that the host may correctly communicate with the USB device.
+ */
+USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
+{
+ .Config =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
+
+ .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
+ .TotalInterfaces = 2,
+
+ .ConfigurationNumber = 1,
+ .ConfigurationStrIndex = NO_DESCRIPTOR,
+
+ .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),
+
+ .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
+ },
+
+ .CDC_CCI_Interface =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
+
+ .InterfaceNumber = 0,
+ .AlternateSetting = 0,
+
+ .TotalEndpoints = 1,
+
+ .Class = 0x02,
+ .SubClass = 0x02,
+ .Protocol = 0x01,
+
+ .InterfaceStrIndex = NO_DESCRIPTOR
+ },
+
+ .CDC_Functional_IntHeader =
+ {
+ .Header = {.Size = sizeof(CDC_FUNCTIONAL_DESCRIPTOR(2)), .Type = 0x24},
+ .SubType = 0x00,
+
+ .Data = {0x01, 0x10}
+ },
+
+ .CDC_Functional_AbstractControlManagement =
+ {
+ .Header = {.Size = sizeof(CDC_FUNCTIONAL_DESCRIPTOR(1)), .Type = 0x24},
+ .SubType = 0x02,
+
+ .Data = {0x06}
+ },
+
+ .CDC_Functional_Union =
+ {
+ .Header = {.Size = sizeof(CDC_FUNCTIONAL_DESCRIPTOR(2)), .Type = 0x24},
+ .SubType = 0x06,
+
+ .Data = {0x00, 0x01}
+ },
+
+ .CDC_NotificationEndpoint =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
+
+ .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM),
+ .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
+ .EndpointSize = CDC_NOTIFICATION_EPSIZE,
+ .PollingIntervalMS = 0xFF
+ },
+
+ .CDC_DCI_Interface =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
+
+ .InterfaceNumber = 1,
+ .AlternateSetting = 0,
+
+ .TotalEndpoints = 2,
+
+ .Class = 0x0A,
+ .SubClass = 0x00,
+ .Protocol = 0x00,
+
+ .InterfaceStrIndex = NO_DESCRIPTOR
+ },
+
+ .CDC_DataOutEndpoint =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
+
+ .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM),
+ .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
+ .EndpointSize = CDC_TXRX_EPSIZE,
+ .PollingIntervalMS = 0x01
+ },
+
+ .CDC_DataInEndpoint =
+ {
+ .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
+
+ .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM),
+ .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
+ .EndpointSize = CDC_TXRX_EPSIZE,
+ .PollingIntervalMS = 0x01
+ }
+};
+
+/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
+ * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
+ * via the language ID table available at USB.org what languages the device supports for its string descriptors.
+ */
+USB_Descriptor_String_t PROGMEM LanguageString =
+{
+ .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
+
+ .UnicodeString = {LANGUAGE_ID_ENG}
+};
+
+/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
+ * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
+ * Descriptor.
+ */
+USB_Descriptor_String_t PROGMEM ManufacturerString =
+{
+ .Header = {.Size = USB_STRING_LEN(24), .Type = DTYPE_String},
+
+ .UnicodeString = L"Arduino (www.arduino.cc)"
+};
+
+/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
+ * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
+ * Descriptor.
+ */
+USB_Descriptor_String_t PROGMEM ProductString =
+{
+ #if (ARDUINO_MODEL_PID == ARDUINO_UNO_PID)
+ .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
+
+ .UnicodeString = L"Arduino Uno"
+ #elif (ARDUINO_MODEL_PID == ARDUINO_MEGA2560_PID)
+ .Header = {.Size = USB_STRING_LEN(17), .Type = DTYPE_String},
+
+ .UnicodeString = L"Arduino Mega 2560"
+ #endif
+
+};
+
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
+ * documentation) by the application code so that the address and size of a requested descriptor can be given
+ * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
+ * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
+ * USB host.
+ */
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
+ const uint8_t wIndex,
+ void** const DescriptorAddress)
+{
+ const uint8_t DescriptorType = (wValue >> 8);
+ const uint8_t DescriptorNumber = (wValue & 0xFF);
+
+ void* Address = NULL;
+ uint16_t Size = NO_DESCRIPTOR;
+
+ switch (DescriptorType)
+ {
+ case DTYPE_Device:
+ Address = (void*)&DeviceDescriptor;
+ Size = sizeof(USB_Descriptor_Device_t);
+ break;
+ case DTYPE_Configuration:
+ Address = (void*)&ConfigurationDescriptor;
+ Size = sizeof(USB_Descriptor_Configuration_t);
+ break;
+ case DTYPE_String:
+ switch (DescriptorNumber)
+ {
+ case 0x00:
+ Address = (void*)&LanguageString;
+ Size = pgm_read_byte(&LanguageString.Header.Size);
+ break;
+ case 0x01:
+ Address = (void*)&ManufacturerString;
+ Size = pgm_read_byte(&ManufacturerString.Header.Size);
+ break;
+ case 0x02:
+ Address = (void*)&ProductString;
+ Size = pgm_read_byte(&ProductString.Header.Size);
+ break;
+ }
+
+ break;
+ }
+
+ *DescriptorAddress = Address;
+ return Size;
+}
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.h b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.h
new file mode 100644
index 0000000..3ac4e52
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.h
@@ -0,0 +1,88 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Header file for Descriptors.c.
+ */
+
+#ifndef _DESCRIPTORS_H_
+#define _DESCRIPTORS_H_
+
+ /* Includes: */
+ #include <avr/pgmspace.h>
+
+ #include <LUFA/Drivers/USB/USB.h>
+ #include <LUFA/Drivers/USB/Class/CDC.h>
+
+ /* Product-specific definitions: */
+ #define ARDUINO_UNO_PID 0x0001
+ #define ARDUINO_MEGA2560_PID 0x0010
+
+ /* Macros: */
+ /** Endpoint number of the CDC device-to-host notification IN endpoint. */
+ #define CDC_NOTIFICATION_EPNUM 2
+
+ /** Endpoint number of the CDC device-to-host data IN endpoint. */
+ #define CDC_TX_EPNUM 3
+
+ /** Endpoint number of the CDC host-to-device data OUT endpoint. */
+ #define CDC_RX_EPNUM 4
+
+ /** Size in bytes of the CDC device-to-host notification IN endpoint. */
+ #define CDC_NOTIFICATION_EPSIZE 8
+
+ /** Size in bytes of the CDC data IN and OUT endpoints. */
+ #define CDC_TXRX_EPSIZE 64
+
+ /* Type Defines: */
+ /** Type define for the device configuration descriptor structure. This must be defined in the
+ * application code, as the configuration descriptor contains several sub-descriptors which
+ * vary between devices, and which describe the device's usage to the host.
+ */
+ typedef struct
+ {
+ USB_Descriptor_Configuration_Header_t Config;
+ USB_Descriptor_Interface_t CDC_CCI_Interface;
+ CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_IntHeader;
+ CDC_FUNCTIONAL_DESCRIPTOR(1) CDC_Functional_AbstractControlManagement;
+ CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_Union;
+ USB_Descriptor_Endpoint_t CDC_NotificationEndpoint;
+ USB_Descriptor_Interface_t CDC_DCI_Interface;
+ USB_Descriptor_Endpoint_t CDC_DataOutEndpoint;
+ USB_Descriptor_Endpoint_t CDC_DataInEndpoint;
+ } USB_Descriptor_Configuration_t;
+
+ /* Function Prototypes: */
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
+ const uint8_t wIndex,
+ void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
+
+#endif
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Lib/LightweightRingBuff.h b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Lib/LightweightRingBuff.h
new file mode 100644
index 0000000..fb48c1f
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Lib/LightweightRingBuff.h
@@ -0,0 +1,197 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2010.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, 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.
+*/
+
+/** \file
+ *
+ * Ultra lightweight ring buffer, for fast insertion/deletion.
+ */
+
+#ifndef _ULW_RING_BUFF_H_
+#define _ULW_RING_BUFF_H_
+
+ /* Includes: */
+ #include <util/atomic.h>
+
+ #include <stdint.h>
+ #include <stdbool.h>
+
+ /* Defines: */
+ /** Size of each ring buffer, in data elements - must be between 1 and 255. */
+ #define BUFFER_SIZE 128
+
+ /** Maximum number of data elements to buffer before forcing a flush.
+ * Must be less than BUFFER_SIZE
+ */
+ #define BUFFER_NEARLY_FULL 96
+
+ /** Type of data to store into the buffer. */
+ #define RingBuff_Data_t uint8_t
+
+ /** Datatype which may be used to store the count of data stored in a buffer, retrieved
+ * via a call to \ref RingBuffer_GetCount().
+ */
+ #if (BUFFER_SIZE <= 0xFF)
+ #define RingBuff_Count_t uint8_t
+ #else
+ #define RingBuff_Count_t uint16_t
+ #endif
+
+ /* Type Defines: */
+ /** Type define for a new ring buffer object. Buffers should be initialized via a call to
+ * \ref RingBuffer_InitBuffer() before use.
+ */
+ typedef struct
+ {
+ RingBuff_Data_t Buffer[BUFFER_SIZE]; /**< Internal ring buffer data, referenced by the buffer pointers. */
+ RingBuff_Data_t* In; /**< Current storage location in the circular buffer */
+ RingBuff_Data_t* Out; /**< Current retrieval location in the circular buffer */
+ RingBuff_Count_t Count;
+ } RingBuff_t;
+
+ /* Inline Functions: */
+ /** Initializes a ring buffer ready for use. Buffers must be initialized via this function
+ * before any operations are called upon them. Already initialized buffers may be reset
+ * by re-initializing them using this function.
+ *
+ * \param[out] Buffer Pointer to a ring buffer structure to initialize
+ */
+ static inline void RingBuffer_InitBuffer(RingBuff_t* const Buffer)
+ {
+ ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
+ {
+ Buffer->In = Buffer->Buffer;
+ Buffer->Out = Buffer->Buffer;
+ }
+ }
+
+ /** Retrieves the minimum number of bytes stored in a particular buffer. This value is computed
+ * by entering an atomic lock on the buffer while the IN and OUT locations are fetched, so that
+ * the buffer cannot be modified while the computation takes place. This value should be cached
+ * when reading out the contents of the buffer, so that as small a time as possible is spent
+ * in an atomic lock.
+ *
+ * \note The value returned by this function is guaranteed to only be the minimum number of bytes
+ * stored in the given buffer; this value may change as other threads write new data and so
+ * the returned number should be used only to determine how many successive reads may safely
+ * be performed on the buffer.
+ *
+ * \param[in] Buffer Pointer to a ring buffer structure whose count is to be computed
+ */
+ static inline RingBuff_Count_t RingBuffer_GetCount(RingBuff_t* const Buffer)
+ {
+ RingBuff_Count_t Count;
+
+ ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
+ {
+ Count = Buffer->Count;
+ }
+
+ return Count;
+ }
+
+ /** Atomically determines if the specified ring buffer contains any free space. This should
+ * be tested before storing data to the buffer, to ensure that no data is lost due to a
+ * buffer overrun.
+ *
+ * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
+ *
+ * \return Boolean true if the buffer contains no free space, false otherwise
+ */
+ static inline bool RingBuffer_IsFull(RingBuff_t* const Buffer)
+ {
+ return (RingBuffer_GetCount(Buffer) == BUFFER_SIZE);
+ }
+
+ /** Atomically determines if the specified ring buffer contains any data. This should
+ * be tested before removing data from the buffer, to ensure that the buffer does not
+ * underflow.
+ *
+ * If the data is to be removed in a loop, store the total number of bytes stored in the
+ * buffer (via a call to the \ref RingBuffer_GetCount() function) in a temporary variable
+ * to reduce the time spent in atomicity locks.
+ *
+ * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
+ *
+ * \return Boolean true if the buffer contains no free space, false otherwise
+ */
+ static inline bool RingBuffer_IsEmpty(RingBuff_t* const Buffer)
+ {
+ return (RingBuffer_GetCount(Buffer) == 0);
+ }
+
+ /** Inserts an element into the ring buffer.
+ *
+ * \note Only one execution thread (main program thread or an ISR) may insert into a single buffer
+ * otherwise data corruption may occur. Insertion and removal may occur from different execution
+ * threads.
+ *
+ * \param[in,out] Buffer Pointer to a ring buffer structure to insert into
+ * \param[in] Data Data element to insert into the buffer
+ */
+ static inline void RingBuffer_Insert(RingBuff_t* const Buffer,
+ const RingBuff_Data_t Data)
+ {
+ *Buffer->In = Data;
+
+ if (++Buffer->In == &Buffer->Buffer[BUFFER_SIZE])
+ Buffer->In = Buffer->Buffer;
+
+ ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
+ {
+ Buffer->Count++;
+ }
+ }
+
+ /** Removes an element from the ring buffer.
+ *
+ * \note Only one execution thread (main program thread or an ISR) may remove from a single buffer
+ * otherwise data corruption may occur. Insertion and removal may occur from different execution
+ * threads.
+ *
+ * \param[in,out] Buffer Pointer to a ring buffer structure to retrieve from
+ *
+ * \return Next data element stored in the buffer
+ */
+ static inline RingBuff_Data_t RingBuffer_Remove(RingBuff_t* const Buffer)
+ {
+ RingBuff_Data_t Data = *Buffer->Out;
+
+ if (++Buffer->Out == &Buffer->Buffer[BUFFER_SIZE])
+ Buffer->Out = Buffer->Buffer;
+
+ ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
+ {
+ Buffer->Count--;
+ }
+
+ return Data;
+ }
+
+#endif
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/makefile b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/makefile
new file mode 100644
index 0000000..79d6be2
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/makefile
@@ -0,0 +1,776 @@
+# Hey Emacs, this is a -*- makefile -*-
+#----------------------------------------------------------------------------
+# WinAVR Makefile Template written by Eric B. Weddington, JöWunsch, et al.
+# >> Modified for use with the LUFA project. <<
+#
+# Released to the Public Domain
+#
+# Additional material for this makefile was written by:
+# Peter Fleury
+# Tim Henigan
+# Colin O'Flynn
+# Reiner Patommel
+# Markus Pfaff
+# Sander Pool
+# Frederik Rouleau
+# Carlos Lamas
+# Dean Camera
+# Opendous Inc.
+# Denver Gingerich
+#
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device, using avrdude.
+# Please customize the avrdude settings below first!
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+# have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+# have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+# (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+# (must have Atmel FLIP installed).
+#
+# make doxygen = Generate DoxyGen documentation for the project (must have
+# DoxyGen installed)
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+# with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+# bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+# MCU name(s)
+# Since the ATMEGA8U2 part is not directly supported by the current
+# versions of either avrdude or dfu-programmer, we specify a dummy
+# part; AT90USB82 which is close enough in memory size and organization
+MCU = atmega8u2
+MCU_AVRDUDE = at90usb82
+MCU_DFU = at90usb82
+
+# Specify the Arduino model using the assigned PID. This is used by Descriptors.c
+# to set PID and product descriptor string
+# Uno PID:
+ARDUINO_MODEL_PID = 0x0001
+# Mega 2560 PID:
+#ARDUINO_MODEL_PID = 0x0010
+
+
+# Target board (see library "Board Types" documentation, NONE for projects not requiring
+# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
+# "Board" inside the application directory.
+BOARD = USER
+
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_CLOCK below, as it is sourced by
+# F_CLOCK after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+# Input clock frequency.
+# This will define a symbol, F_CLOCK, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_CLOCK = $(F_CPU)
+
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+
+# Target file name (without extension).
+TARGET = Arduino-usbserial
+
+
+# Object files directory
+# To put object files in current directory, use a dot (.), do NOT make
+# this an empty or blank macro!
+OBJDIR = .
+
+
+# Path to the LUFA library
+LUFA_PATH = ../..
+
+
+# LUFA library compile-time options
+LUFA_OPTS = -D USB_DEVICE_ONLY
+LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
+LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
+LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
+LUFA_OPTS += -D INTERRUPT_CONTROL_ENDPOINT
+LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
+LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
+
+
+# Create the LUFA source path variables by including the LUFA root makefile
+include $(LUFA_PATH)/LUFA/makefile
+
+
+# List C source files here. (C dependencies are automatically generated.)
+SRC = $(TARGET).c \
+ Descriptors.c \
+ $(LUFA_SRC_USB) \
+ $(LUFA_SRC_USBCLASS) \
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Device.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/HostStandardReq.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/USBController.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/USBInterrupt.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/Class/Device/CDC.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/Class/Host/CDC.c
+
+
+# List C++ source files here. (C dependencies are automatically generated.)
+CPPSRC =
+
+
+# List Assembler source files here.
+# Make them always end in a capital .S. Files ending in a lowercase .s
+# will not be considered source files but generated files (assembler
+# output from the compiler), and will be deleted upon "make clean"!
+# Even though the DOS/Win* filesystem matches both .s and .S the same,
+# it will preserve the spelling of the filenames, and gcc itself does
+# care about how the name is spelled on its command-line.
+ASRC =
+
+
+# Optimization level, can be [0, 1, 2, 3, s].
+# 0 = turn off optimization. s = optimize for size.
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+
+
+# Debugging format.
+# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
+# AVR Studio 4.10 requires dwarf-2.
+# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
+DEBUG = dwarf-2
+
+
+# List any extra directories to look for include files here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRAINCDIRS = $(LUFA_PATH)/
+
+
+# Compiler flag to set the C Standard level.
+# c89 = "ANSI" C
+# gnu89 = c89 plus GCC extensions
+# c99 = ISO C99 standard (not yet fully implemented)
+# gnu99 = c99 plus GCC extensions
+CSTANDARD = -std=gnu99
+
+
+# Place -D or -U options here for C sources
+CDEFS = -DF_CPU=$(F_CPU)UL
+CDEFS += -DF_CLOCK=$(F_CLOCK)UL
+CDEFS += -DARDUINO_MODEL_PID=$(ARDUINO_MODEL_PID)
+CDEFS += -DBOARD=BOARD_$(BOARD)
+CDEFS += $(LUFA_OPTS)
+CDEFS += -DAVR_RESET_LINE_PORT="PORTD"
+CDEFS += -DAVR_RESET_LINE_DDR="DDRD"
+CDEFS += -DAVR_RESET_LINE_MASK="(1 << 7)"
+CDEFS += -DTX_RX_LED_PULSE_MS=3
+CDEFS += -DPING_PONG_LED_PULSE_MS=100
+
+# Place -D or -U options here for ASM sources
+ADEFS = -DF_CPU=$(F_CPU)
+ADEFS += -DF_CLOCK=$(F_CLOCK)UL
+ADEFS += -DBOARD=BOARD_$(BOARD)
+ADEFS += $(LUFA_OPTS)
+
+# Place -D or -U options here for C++ sources
+CPPDEFS = -DF_CPU=$(F_CPU)UL
+CPPDEFS += -DF_CLOCK=$(F_CLOCK)UL
+CPPDEFS += -DBOARD=BOARD_$(BOARD)
+CPPDEFS += $(LUFA_OPTS)
+#CPPDEFS += -D__STDC_LIMIT_MACROS
+#CPPDEFS += -D__STDC_CONSTANT_MACROS
+
+
+
+#---------------- Compiler Options C ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CFLAGS = -g$(DEBUG)
+CFLAGS += $(CDEFS)
+CFLAGS += -O$(OPT)
+CFLAGS += -funsigned-char
+CFLAGS += -funsigned-bitfields
+CFLAGS += -ffunction-sections
+CFLAGS += -fno-inline-small-functions
+CFLAGS += -fpack-struct
+CFLAGS += -fshort-enums
+CFLAGS += -fno-strict-aliasing
+CFLAGS += -Wall
+CFLAGS += -Wstrict-prototypes
+#CFLAGS += -mshort-calls
+#CFLAGS += -fno-unit-at-a-time
+#CFLAGS += -Wundef
+#CFLAGS += -Wunreachable-code
+#CFLAGS += -Wsign-compare
+CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS += $(CSTANDARD)
+
+
+#---------------- Compiler Options C++ ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CPPFLAGS = -g$(DEBUG)
+CPPFLAGS += $(CPPDEFS)
+CPPFLAGS += -O$(OPT)
+CPPFLAGS += -funsigned-char
+CPPFLAGS += -funsigned-bitfields
+CPPFLAGS += -fpack-struct
+CPPFLAGS += -fshort-enums
+CPPFLAGS += -fno-exceptions
+CPPFLAGS += -Wall
+CPPFLAGS += -Wundef
+CFLAGS += -Wundef
+#CPPFLAGS += -mshort-calls
+#CPPFLAGS += -fno-unit-at-a-time
+#CPPFLAGS += -Wstrict-prototypes
+#CPPFLAGS += -Wunreachable-code
+#CPPFLAGS += -Wsign-compare
+CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
+CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+#CPPFLAGS += $(CSTANDARD)
+
+
+#---------------- Assembler Options ----------------
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns: create listing
+# -gstabs: have the assembler create line number information; note that
+# for use in COFF files, additional information about filenames
+# and function names needs to be present in the assembler source
+# files -- see avr-libc docs [FIXME: not yet described there]
+# -listing-cont-lines: Sets the maximum number of continuation lines of hex
+# dump that will be displayed for a given single line of source input.
+ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
+
+
+#---------------- Library Options ----------------
+# Minimalistic printf version
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
+
+# Floating point printf version (requires MATH_LIB = -lm below)
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
+
+# If this is left blank, then it will use the Standard printf version.
+PRINTF_LIB =
+#PRINTF_LIB = $(PRINTF_LIB_MIN)
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
+
+
+# Minimalistic scanf version
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
+
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
+
+# If this is left blank, then it will use the Standard scanf version.
+SCANF_LIB =
+#SCANF_LIB = $(SCANF_LIB_MIN)
+#SCANF_LIB = $(SCANF_LIB_FLOAT)
+
+
+MATH_LIB = -lm
+
+
+# List any extra directories to look for libraries here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRALIBDIRS =
+
+
+
+#---------------- External Memory Options ----------------
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# used for variables (.data/.bss) and heap (malloc()).
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# only used for heap (malloc()).
+#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
+
+EXTMEMOPTS =
+
+
+
+#---------------- Linker Options ----------------
+# -Wl,...: tell GCC to pass this to linker.
+# -Map: create map file
+# --cref: add cross reference to map file
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
+LDFLAGS += -Wl,--relax
+LDFLAGS += -Wl,--gc-sections
+LDFLAGS += $(EXTMEMOPTS)
+LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
+#LDFLAGS += -T linker_script.x
+
+
+
+#---------------- Programming Options (avrdude) ----------------
+
+# Programming hardware
+# Type: avrdude -c ?
+# to get a full listing.
+#
+AVRDUDE_PROGRAMMER = avrispmkii
+
+# com1 = serial port. Use lpt1 to connect to parallel port.
+AVRDUDE_PORT = usb
+
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE_COUNTER = -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_NO_VERIFY = -V
+
+# Increase verbosity level. Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
+# to submit bug reports.
+#AVRDUDE_VERBOSE = -v -v
+
+AVRDUDE_FORCE = -F
+
+AVRDUDE_FLAGS = -p $(MCU_AVRDUDE) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
+AVRDUDE_FLAGS += $(AVRDUDE_FORCE)
+
+
+
+#---------------- Debugging Options ----------------
+
+# For simulavr only - target MCU frequency.
+DEBUG_MFREQ = $(F_CPU)
+
+# Set the DEBUG_UI to either gdb or insight.
+# DEBUG_UI = gdb
+DEBUG_UI = insight
+
+# Set the debugging back-end to either avarice, simulavr.
+DEBUG_BACKEND = avarice
+#DEBUG_BACKEND = simulavr
+
+# GDB Init Filename.
+GDBINIT_FILE = __avr_gdbinit
+
+# When using avarice settings for the JTAG
+JTAG_DEV = /dev/com1
+
+# Debugging port used to communicate between GDB / avarice / simulavr.
+DEBUG_PORT = 4242
+
+# Debugging host used to communicate between GDB / avarice / simulavr, normally
+# just set to localhost unless doing some sort of crazy debugging when
+# avarice is running on a different computer.
+DEBUG_HOST = localhost
+
+
+
+#============================================================================
+
+
+# Define programs and commands.
+SHELL = sh
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+AR = avr-ar rcs
+NM = avr-nm
+AVRDUDE = avrdude
+REMOVE = rm -f
+REMOVEDIR = rm -rf
+COPY = cp
+WINSHELL = cmd
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_BEGIN = -------- begin --------
+MSG_END = -------- end --------
+MSG_SIZE_BEFORE = Size before:
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for Flash:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling C:
+MSG_COMPILING_CPP = Compiling C++:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+MSG_CREATING_LIBRARY = Creating library:
+
+
+
+
+# Define all object files.
+OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
+
+# Define all listing files.
+LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
+
+
+# Compiler flags to generate dependency files.
+GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
+
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
+ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+
+
+
+# Default target.
+#all: begin gccversion sizebefore build checkinvalidevents showliboptions showtarget sizeafter end
+all: begin gccversion sizebefore build showliboptions showtarget sizeafter end
+
+# Change the build target to build a HEX file or a library.
+build: elf hex eep lss sym asm
+#build: lib
+
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lss: $(TARGET).lss
+sym: $(TARGET).sym
+asm: $(TARGET).s
+LIBNAME=lib$(TARGET).a
+lib: $(LIBNAME)
+
+
+
+# Eye candy.
+# AVR Studio 3.x does not check make's exit code but relies on
+# the following magic strings to be generated by the compile job.
+begin:
+ @echo
+ @echo $(MSG_BEGIN)
+
+end:
+ @echo $(MSG_END)
+ @echo
+
+
+# Display size of file.
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
+ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
+MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
+FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
+
+sizebefore:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+sizeafter:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+#$(LUFA_PATH)/LUFA/LUFA_Events.lst:
+# @make -C $(LUFA_PATH)/LUFA/ LUFA_Events.lst
+
+#checkinvalidevents: $(LUFA_PATH)/LUFA/LUFA_Events.lst
+# @echo
+# @echo Checking for invalid events...
+# @$(shell) avr-nm $(OBJ) | sed -n -e 's/^.*EVENT_/EVENT_/p' | \
+# grep -F -v --file=$(LUFA_PATH)/LUFA/LUFA_Events.lst > InvalidEvents.tmp || true
+# @sed -n -e 's/^/ WARNING - INVALID EVENT NAME: /p' InvalidEvents.tmp
+# @if test -s InvalidEvents.tmp; then exit 1; fi
+
+showliboptions:
+ @echo
+ @echo ---- Compile Time Library Options ----
+ @for i in $(LUFA_OPTS:-D%=%); do \
+ echo $$i; \
+ done
+ @echo --------------------------------------
+
+showtarget:
+ @echo
+ @echo --------- Target Information ---------
+ @echo AVR Model: $(MCU)
+ @echo Board: $(BOARD)
+ @echo Clock: $(F_CPU)Hz CPU, $(F_CLOCK)Hz Master
+ @echo --------------------------------------
+
+
+# Display compiler version information.
+gccversion :
+ @$(CC) --version
+
+
+# Program the device.
+program: $(TARGET).hex $(TARGET).eep
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
+
+flip: $(TARGET).hex
+ batchisp -hardware usb -device $(MCU_DFU) -operation erase f
+ batchisp -hardware usb -device $(MCU_DFU) -operation loadbuffer $(TARGET).hex program
+ batchisp -hardware usb -device $(MCU_DFU) -operation start reset 0
+
+dfu: $(TARGET).hex
+ dfu-programmer $(MCU_DFU) erase
+ dfu-programmer $(MCU_DFU) flash --debug 1 $(TARGET).hex
+ dfu-programmer $(MCU_DFU) reset
+
+
+flip-ee: $(TARGET).hex $(TARGET).eep
+ $(COPY) $(TARGET).eep $(TARGET)eep.hex
+ batchisp -hardware usb -device $(MCU_DFU) -operation memory EEPROM erase
+ batchisp -hardware usb -device $(MCU_DFU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program
+ batchisp -hardware usb -device $(MCU_DFU) -operation start reset 0
+ $(REMOVE) $(TARGET)eep.hex
+
+dfu-ee: $(TARGET).hex $(TARGET).eep
+ dfu-programmer $(MCU_DFU) flash-eeprom --debug 1 --suppress-bootloader-mem $(TARGET).eep
+ dfu-programmer $(MCU_DFU) reset
+
+
+# Generate avr-gdb config/init file which does the following:
+# define the reset signal, load the target file, connect to target, and set
+# a breakpoint at main().
+gdb-config:
+ @$(REMOVE) $(GDBINIT_FILE)
+ @echo define reset >> $(GDBINIT_FILE)
+ @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
+ @echo end >> $(GDBINIT_FILE)
+ @echo file $(TARGET).elf >> $(GDBINIT_FILE)
+ @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
+ifeq ($(DEBUG_BACKEND),simulavr)
+ @echo load >> $(GDBINIT_FILE)
+endif
+ @echo break main >> $(GDBINIT_FILE)
+
+debug: gdb-config $(TARGET).elf
+ifeq ($(DEBUG_BACKEND), avarice)
+ @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
+ @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
+ $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
+ @$(WINSHELL) /c pause
+
+else
+ @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
+ $(DEBUG_MFREQ) --port $(DEBUG_PORT)
+endif
+ @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
+
+
+
+
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
+COFFCONVERT = $(OBJCOPY) --debugging
+COFFCONVERT += --change-section-address .data-0x800000
+COFFCONVERT += --change-section-address .bss-0x800000
+COFFCONVERT += --change-section-address .noinit-0x800000
+COFFCONVERT += --change-section-address .eeprom-0x810000
+
+
+
+coff: $(TARGET).elf
+ @echo
+ @echo $(MSG_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
+
+
+extcoff: $(TARGET).elf
+ @echo
+ @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
+
+
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+ @echo
+ @echo $(MSG_FLASH) $@
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@
+
+%.eep: %.elf
+ @echo
+ @echo $(MSG_EEPROM) $@
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+ --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+ @echo
+ @echo $(MSG_EXTENDED_LISTING) $@
+ $(OBJDUMP) -h -S -z $< > $@
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+ @echo
+ @echo $(MSG_SYMBOL_TABLE) $@
+ $(NM) -n $< > $@
+
+
+
+# Create library from object files.
+.SECONDARY : $(TARGET).a
+.PRECIOUS : $(OBJ)
+%.a: $(OBJ)
+ @echo
+ @echo $(MSG_CREATING_LIBRARY) $@
+ $(AR) $@ $(OBJ)
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(TARGET).elf
+.PRECIOUS : $(OBJ)
+%.elf: $(OBJ)
+ @echo
+ @echo $(MSG_LINKING) $@
+ $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
+
+
+# Compile: create object files from C source files.
+$(OBJDIR)/%.o : %.c
+ @echo
+ @echo $(MSG_COMPILING) $<
+ $(CC) -c $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create object files from C++ source files.
+$(OBJDIR)/%.o : %.cpp
+ @echo
+ @echo $(MSG_COMPILING_CPP) $<
+ $(CC) -c $(ALL_CPPFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C source files.
+%.s : %.c
+ $(CC) -S $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C++ source files.
+%.s : %.cpp
+ $(CC) -S $(ALL_CPPFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files.
+$(OBJDIR)/%.o : %.S
+ @echo
+ @echo $(MSG_ASSEMBLING) $<
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+
+# Create preprocessed source for use in sending a bug report.
+%.i : %.c
+ $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
+
+
+# Target: clean project.
+clean: begin clean_list clean_binary end
+
+clean_binary:
+ $(REMOVE) $(TARGET).hex
+
+clean_list:
+ @echo $(MSG_CLEANING)
+ $(REMOVE) $(TARGET).hex
+ $(REMOVE) $(TARGET).eep
+ $(REMOVE) $(TARGET).cof
+ $(REMOVE) $(TARGET).elf
+ $(REMOVE) $(TARGET).map
+ $(REMOVE) $(TARGET).sym
+ $(REMOVE) $(TARGET).lss
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
+ $(REMOVE) $(SRC:.c=.s)
+ $(REMOVE) $(SRC:.c=.d)
+ $(REMOVE) $(SRC:.c=.i)
+ $(REMOVEDIR) .dep
+
+doxygen:
+ @echo Generating Project Documentation...
+ @doxygen Doxygen.conf
+ @echo Documentation Generation Complete.
+
+clean_doxygen:
+ rm -rf Documentation
+
+# Create object files directory
+$(shell mkdir $(OBJDIR) 2>/dev/null)
+
+
+# Include the dependency files.
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
+
+
+# Listing of phony targets.
+.PHONY : all begin finish end sizebefore sizeafter gccversion \
+build elf hex eep lss sym coff extcoff doxygen clean \
+clean_list clean_doxygen program dfu flip flip-ee dfu-ee \
+debug gdb-config
diff --git a/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/readme.txt b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/readme.txt
new file mode 100644
index 0000000..289326b
--- /dev/null
+++ b/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/readme.txt
@@ -0,0 +1,13 @@
+To setup the project and upload the Arduino usbserial application firmware to an ATMEGA8U2 using the Arduino USB DFU bootloader:
+1. unpack the source into LUFA's Projects directory
+2. set ARDUINO_MODEL_PID in the makefile as appropriate
+3. do "make clean; make"
+4. put the 8U2 into USB DFU mode:
+4.a. assert and hold the 8U2's RESET line
+4.b. assert and hold the 8U2's HWB line
+4.c. release the 8U2's RESET line
+4.d. release the 8U2's HWB line
+5. confirm that the board enumerates as either "Arduino Uno DFU" or "Arduino Mega 2560 DFU"
+6. do "make dfu" (OS X or Linux - dfu-programmer must be installed first) or "make flip" (Windows - Flip must be installed first)
+
+Check that the board enumerates as either "Arduino Uno" or "Arduino Mega 2560". Test by uploading a new Arduino sketch from the Arduino IDE.
diff --git a/hardware/arduino/firmwares/wifishield/binary/wifiHD.elf b/hardware/arduino/firmwares/wifishield/binary/wifiHD.elf
new file mode 100644
index 0000000..e732373
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/binary/wifiHD.elf differ
diff --git a/hardware/arduino/firmwares/wifishield/binary/wifiHD.hex b/hardware/arduino/firmwares/wifishield/binary/wifiHD.hex
new file mode 100644
index 0000000..fb2605e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/binary/wifiHD.hex
@@ -0,0 +1,16109 @@
+:0200000480007A
+:10000000E08F100000000000000000000000000071
+:1000100000000000000000000000000000000000E0
+:1000200000000000000000000000000000000000D0
+:1000300000000000000000000000000000000000C0
+:1000400000000000000000000000000000000000B0
+:1000500000000000000000000000000000000000A0
+:100060000000000000000000000000000000000090
+:100070000000000000000000000000000000000080
+:100080000000000000000000000000000000000070
+:100090000000000000000000000000000000000060
+:1000A0000000000000000000000000000000000050
+:1000B0000000000000000000000000000000000040
+:1000C0000000000000000000000000000000000030
+:1000D0000000000000000000000000000000000020
+:1000E0000000000000000000000000000000000010
+:1000F0000000000000000000000000000000000000
+:1001000000000000000000000000000000000000EF
+:1001100000000000000000000000000000000000DF
+:1001200000000000000000000000000000000000CF
+:1001300000000000000000000000000000000000BF
+:1001400000000000000000000000000000000000AF
+:10015000000000000000000000000000000000009F
+:10016000000000000000000000000000000000008F
+:10017000000000000000000000000000000000007F
+:10018000000000000000000000000000000000006F
+:10019000000000000000000000000000000000005F
+:1001A000000000000000000000000000000000004F
+:1001B000000000000000000000000000000000003F
+:1001C000000000000000000000000000000000002F
+:1001D000000000000000000000000000000000001F
+:1001E000000000000000000000000000000000000F
+:1001F00000000000000000000000000000000000FF
+:1002000000000000000000000000000000000000EE
+:1002100000000000000000000000000000000000DE
+:1002200000000000000000000000000000000000CE
+:1002300000000000000000000000000000000000BE
+:1002400000000000000000000000000000000000AE
+:10025000000000000000000000000000000000009E
+:10026000000000000000000000000000000000008E
+:10027000000000000000000000000000000000007E
+:10028000000000000000000000000000000000006E
+:10029000000000000000000000000000000000005E
+:1002A000000000000000000000000000000000004E
+:1002B000000000000000000000000000000000003E
+:1002C000000000000000000000000000000000002E
+:1002D000000000000000000000000000000000001E
+:1002E000000000000000000000000000000000000E
+:1002F00000000000000000000000000000000000FE
+:1003000000000000000000000000000000000000ED
+:1003100000000000000000000000000000000000DD
+:1003200000000000000000000000000000000000CD
+:1003300000000000000000000000000000000000BD
+:1003400000000000000000000000000000000000AD
+:10035000000000000000000000000000000000009D
+:10036000000000000000000000000000000000008D
+:10037000000000000000000000000000000000007D
+:10038000000000000000000000000000000000006D
+:10039000000000000000000000000000000000005D
+:1003A000000000000000000000000000000000004D
+:1003B000000000000000000000000000000000003D
+:1003C000000000000000000000000000000000002D
+:1003D000000000000000000000000000000000001D
+:1003E000000000000000000000000000000000000D
+:1003F00000000000000000000000000000000000FD
+:1004000000000000000000000000000000000000EC
+:1004100000000000000000000000000000000000DC
+:1004200000000000000000000000000000000000CC
+:1004300000000000000000000000000000000000BC
+:1004400000000000000000000000000000000000AC
+:10045000000000000000000000000000000000009C
+:10046000000000000000000000000000000000008C
+:10047000000000000000000000000000000000007C
+:10048000000000000000000000000000000000006C
+:10049000000000000000000000000000000000005C
+:1004A000000000000000000000000000000000004C
+:1004B000000000000000000000000000000000003C
+:1004C000000000000000000000000000000000002C
+:1004D000000000000000000000000000000000001C
+:1004E000000000000000000000000000000000000C
+:1004F00000000000000000000000000000000000FC
+:1005000000000000000000000000000000000000EB
+:1005100000000000000000000000000000000000DB
+:1005200000000000000000000000000000000000CB
+:1005300000000000000000000000000000000000BB
+:1005400000000000000000000000000000000000AB
+:10055000000000000000000000000000000000009B
+:10056000000000000000000000000000000000008B
+:10057000000000000000000000000000000000007B
+:10058000000000000000000000000000000000006B
+:10059000000000000000000000000000000000005B
+:1005A000000000000000000000000000000000004B
+:1005B000000000000000000000000000000000003B
+:1005C000000000000000000000000000000000002B
+:1005D000000000000000000000000000000000001B
+:1005E000000000000000000000000000000000000B
+:1005F00000000000000000000000000000000000FB
+:1006000000000000000000000000000000000000EA
+:1006100000000000000000000000000000000000DA
+:1006200000000000000000000000000000000000CA
+:1006300000000000000000000000000000000000BA
+:1006400000000000000000000000000000000000AA
+:10065000000000000000000000000000000000009A
+:10066000000000000000000000000000000000008A
+:10067000000000000000000000000000000000007A
+:10068000000000000000000000000000000000006A
+:10069000000000000000000000000000000000005A
+:1006A000000000000000000000000000000000004A
+:1006B000000000000000000000000000000000003A
+:1006C000000000000000000000000000000000002A
+:1006D000000000000000000000000000000000001A
+:1006E000000000000000000000000000000000000A
+:1006F00000000000000000000000000000000000FA
+:1007000000000000000000000000000000000000E9
+:1007100000000000000000000000000000000000D9
+:1007200000000000000000000000000000000000C9
+:1007300000000000000000000000000000000000B9
+:1007400000000000000000000000000000000000A9
+:100750000000000000000000000000000000000099
+:100760000000000000000000000000000000000089
+:100770000000000000000000000000000000000079
+:100780000000000000000000000000000000000069
+:100790000000000000000000000000000000000059
+:1007A0000000000000000000000000000000000049
+:1007B0000000000000000000000000000000000039
+:1007C0000000000000000000000000000000000029
+:1007D0000000000000000000000000000000000019
+:1007E0000000000000000000000000000000000009
+:1007F00000000000000000000000000000000000F9
+:1008000000000000000000000000000000000000E8
+:1008100000000000000000000000000000000000D8
+:1008200000000000000000000000000000000000C8
+:1008300000000000000000000000000000000000B8
+:1008400000000000000000000000000000000000A8
+:100850000000000000000000000000000000000098
+:100860000000000000000000000000000000000088
+:100870000000000000000000000000000000000078
+:100880000000000000000000000000000000000068
+:100890000000000000000000000000000000000058
+:1008A0000000000000000000000000000000000048
+:1008B0000000000000000000000000000000000038
+:1008C0000000000000000000000000000000000028
+:1008D0000000000000000000000000000000000018
+:1008E0000000000000000000000000000000000008
+:1008F00000000000000000000000000000000000F8
+:1009000000000000000000000000000000000000E7
+:1009100000000000000000000000000000000000D7
+:1009200000000000000000000000000000000000C7
+:1009300000000000000000000000000000000000B7
+:1009400000000000000000000000000000000000A7
+:100950000000000000000000000000000000000097
+:100960000000000000000000000000000000000087
+:100970000000000000000000000000000000000077
+:100980000000000000000000000000000000000067
+:100990000000000000000000000000000000000057
+:1009A0000000000000000000000000000000000047
+:1009B0000000000000000000000000000000000037
+:1009C0000000000000000000000000000000000027
+:1009D0000000000000000000000000000000000017
+:1009E0000000000000000000000000000000000007
+:1009F00000000000000000000000000000000000F7
+:100A000000000000000000000000000000000000E6
+:100A100000000000000000000000000000000000D6
+:100A200000000000000000000000000000000000C6
+:100A300000000000000000000000000000000000B6
+:100A400000000000000000000000000000000000A6
+:100A50000000000000000000000000000000000096
+:100A60000000000000000000000000000000000086
+:100A70000000000000000000000000000000000076
+:100A80000000000000000000000000000000000066
+:100A90000000000000000000000000000000000056
+:100AA0000000000000000000000000000000000046
+:100AB0000000000000000000000000000000000036
+:100AC0000000000000000000000000000000000026
+:100AD0000000000000000000000000000000000016
+:100AE0000000000000000000000000000000000006
+:100AF00000000000000000000000000000000000F6
+:100B000000000000000000000000000000000000E5
+:100B100000000000000000000000000000000000D5
+:100B200000000000000000000000000000000000C5
+:100B300000000000000000000000000000000000B5
+:100B400000000000000000000000000000000000A5
+:100B50000000000000000000000000000000000095
+:100B60000000000000000000000000000000000085
+:100B70000000000000000000000000000000000075
+:100B80000000000000000000000000000000000065
+:100B90000000000000000000000000000000000055
+:100BA0000000000000000000000000000000000045
+:100BB0000000000000000000000000000000000035
+:100BC0000000000000000000000000000000000025
+:100BD0000000000000000000000000000000000015
+:100BE0000000000000000000000000000000000005
+:100BF00000000000000000000000000000000000F5
+:100C000000000000000000000000000000000000E4
+:100C100000000000000000000000000000000000D4
+:100C200000000000000000000000000000000000C4
+:100C300000000000000000000000000000000000B4
+:100C400000000000000000000000000000000000A4
+:100C50000000000000000000000000000000000094
+:100C60000000000000000000000000000000000084
+:100C70000000000000000000000000000000000074
+:100C80000000000000000000000000000000000064
+:100C90000000000000000000000000000000000054
+:100CA0000000000000000000000000000000000044
+:100CB0000000000000000000000000000000000034
+:100CC0000000000000000000000000000000000024
+:100CD0000000000000000000000000000000000014
+:100CE0000000000000000000000000000000000004
+:100CF00000000000000000000000000000000000F4
+:100D000000000000000000000000000000000000E3
+:100D100000000000000000000000000000000000D3
+:100D200000000000000000000000000000000000C3
+:100D300000000000000000000000000000000000B3
+:100D400000000000000000000000000000000000A3
+:100D50000000000000000000000000000000000093
+:100D60000000000000000000000000000000000083
+:100D70000000000000000000000000000000000073
+:100D80000000000000000000000000000000000063
+:100D90000000000000000000000000000000000053
+:100DA0000000000000000000000000000000000043
+:100DB0000000000000000000000000000000000033
+:100DC0000000000000000000000000000000000023
+:100DD0000000000000000000000000000000000013
+:100DE0000000000000000000000000000000000003
+:100DF00000000000000000000000000000000000F3
+:100E000000000000000000000000000000000000E2
+:100E100000000000000000000000000000000000D2
+:100E200000000000000000000000000000000000C2
+:100E300000000000000000000000000000000000B2
+:100E400000000000000000000000000000000000A2
+:100E50000000000000000000000000000000000092
+:100E60000000000000000000000000000000000082
+:100E70000000000000000000000000000000000072
+:100E80000000000000000000000000000000000062
+:100E90000000000000000000000000000000000052
+:100EA0000000000000000000000000000000000042
+:100EB0000000000000000000000000000000000032
+:100EC0000000000000000000000000000000000022
+:100ED0000000000000000000000000000000000012
+:100EE0000000000000000000000000000000000002
+:100EF00000000000000000000000000000000000F2
+:100F000000000000000000000000000000000000E1
+:100F100000000000000000000000000000000000D1
+:100F200000000000000000000000000000000000C1
+:100F300000000000000000000000000000000000B1
+:100F400000000000000000000000000000000000A1
+:100F50000000000000000000000000000000000091
+:100F60000000000000000000000000000000000081
+:100F70000000000000000000000000000000000071
+:100F80000000000000000000000000000000000061
+:100F90000000000000000000000000000000000051
+:100FA0000000000000000000000000000000000041
+:100FB0000000000000000000000000000000000031
+:100FC0000000000000000000000000000000000021
+:100FD0000000000000000000000000000000000011
+:100FE0000000000000000000000000000000000001
+:100FF00000000000000000000000000000000000F1
+:1010000000000000000000000000000000000000E0
+:1010100000000000000000000000000000000000D0
+:1010200000000000000000000000000000000000C0
+:1010300000000000000000000000000000000000B0
+:1010400000000000000000000000000000000000A0
+:101050000000000000000000000000000000000090
+:101060000000000000000000000000000000000080
+:101070000000000000000000000000000000000070
+:101080000000000000000000000000000000000060
+:101090000000000000000000000000000000000050
+:1010A0000000000000000000000000000000000040
+:1010B0000000000000000000000000000000000030
+:1010C0000000000000000000000000000000000020
+:1010D0000000000000000000000000000000000010
+:1010E0000000000000000000000000000000000000
+:1010F00000000000000000000000000000000000F0
+:1011000000000000000000000000000000000000DF
+:1011100000000000000000000000000000000000CF
+:1011200000000000000000000000000000000000BF
+:1011300000000000000000000000000000000000AF
+:10114000000000000000000000000000000000009F
+:10115000000000000000000000000000000000008F
+:10116000000000000000000000000000000000007F
+:10117000000000000000000000000000000000006F
+:10118000000000000000000000000000000000005F
+:10119000000000000000000000000000000000004F
+:1011A000000000000000000000000000000000003F
+:1011B000000000000000000000000000000000002F
+:1011C000000000000000000000000000000000001F
+:1011D000000000000000000000000000000000000F
+:1011E00000000000000000000000000000000000FF
+:1011F00000000000000000000000000000000000EF
+:1012000000000000000000000000000000000000DE
+:1012100000000000000000000000000000000000CE
+:1012200000000000000000000000000000000000BE
+:1012300000000000000000000000000000000000AE
+:10124000000000000000000000000000000000009E
+:10125000000000000000000000000000000000008E
+:10126000000000000000000000000000000000007E
+:10127000000000000000000000000000000000006E
+:10128000000000000000000000000000000000005E
+:10129000000000000000000000000000000000004E
+:1012A000000000000000000000000000000000003E
+:1012B000000000000000000000000000000000002E
+:1012C000000000000000000000000000000000001E
+:1012D000000000000000000000000000000000000E
+:1012E00000000000000000000000000000000000FE
+:1012F00000000000000000000000000000000000EE
+:1013000000000000000000000000000000000000DD
+:1013100000000000000000000000000000000000CD
+:1013200000000000000000000000000000000000BD
+:1013300000000000000000000000000000000000AD
+:10134000000000000000000000000000000000009D
+:10135000000000000000000000000000000000008D
+:10136000000000000000000000000000000000007D
+:10137000000000000000000000000000000000006D
+:10138000000000000000000000000000000000005D
+:10139000000000000000000000000000000000004D
+:1013A000000000000000000000000000000000003D
+:1013B000000000000000000000000000000000002D
+:1013C000000000000000000000000000000000001D
+:1013D000000000000000000000000000000000000D
+:1013E00000000000000000000000000000000000FD
+:1013F00000000000000000000000000000000000ED
+:1014000000000000000000000000000000000000DC
+:1014100000000000000000000000000000000000CC
+:1014200000000000000000000000000000000000BC
+:1014300000000000000000000000000000000000AC
+:10144000000000000000000000000000000000009C
+:10145000000000000000000000000000000000008C
+:10146000000000000000000000000000000000007C
+:10147000000000000000000000000000000000006C
+:10148000000000000000000000000000000000005C
+:10149000000000000000000000000000000000004C
+:1014A000000000000000000000000000000000003C
+:1014B000000000000000000000000000000000002C
+:1014C000000000000000000000000000000000001C
+:1014D000000000000000000000000000000000000C
+:1014E00000000000000000000000000000000000FC
+:1014F00000000000000000000000000000000000EC
+:1015000000000000000000000000000000000000DB
+:1015100000000000000000000000000000000000CB
+:1015200000000000000000000000000000000000BB
+:1015300000000000000000000000000000000000AB
+:10154000000000000000000000000000000000009B
+:10155000000000000000000000000000000000008B
+:10156000000000000000000000000000000000007B
+:10157000000000000000000000000000000000006B
+:10158000000000000000000000000000000000005B
+:10159000000000000000000000000000000000004B
+:1015A000000000000000000000000000000000003B
+:1015B000000000000000000000000000000000002B
+:1015C000000000000000000000000000000000001B
+:1015D000000000000000000000000000000000000B
+:1015E00000000000000000000000000000000000FB
+:1015F00000000000000000000000000000000000EB
+:1016000000000000000000000000000000000000DA
+:1016100000000000000000000000000000000000CA
+:1016200000000000000000000000000000000000BA
+:1016300000000000000000000000000000000000AA
+:10164000000000000000000000000000000000009A
+:10165000000000000000000000000000000000008A
+:10166000000000000000000000000000000000007A
+:10167000000000000000000000000000000000006A
+:10168000000000000000000000000000000000005A
+:10169000000000000000000000000000000000004A
+:1016A000000000000000000000000000000000003A
+:1016B000000000000000000000000000000000002A
+:1016C000000000000000000000000000000000001A
+:1016D000000000000000000000000000000000000A
+:1016E00000000000000000000000000000000000FA
+:1016F00000000000000000000000000000000000EA
+:1017000000000000000000000000000000000000D9
+:1017100000000000000000000000000000000000C9
+:1017200000000000000000000000000000000000B9
+:1017300000000000000000000000000000000000A9
+:101740000000000000000000000000000000000099
+:101750000000000000000000000000000000000089
+:101760000000000000000000000000000000000079
+:101770000000000000000000000000000000000069
+:101780000000000000000000000000000000000059
+:101790000000000000000000000000000000000049
+:1017A0000000000000000000000000000000000039
+:1017B0000000000000000000000000000000000029
+:1017C0000000000000000000000000000000000019
+:1017D0000000000000000000000000000000000009
+:1017E00000000000000000000000000000000000F9
+:1017F00000000000000000000000000000000000E9
+:1018000000000000000000000000000000000000D8
+:1018100000000000000000000000000000000000C8
+:1018200000000000000000000000000000000000B8
+:1018300000000000000000000000000000000000A8
+:101840000000000000000000000000000000000098
+:101850000000000000000000000000000000000088
+:101860000000000000000000000000000000000078
+:101870000000000000000000000000000000000068
+:101880000000000000000000000000000000000058
+:101890000000000000000000000000000000000048
+:1018A0000000000000000000000000000000000038
+:1018B0000000000000000000000000000000000028
+:1018C0000000000000000000000000000000000018
+:1018D0000000000000000000000000000000000008
+:1018E00000000000000000000000000000000000F8
+:1018F00000000000000000000000000000000000E8
+:1019000000000000000000000000000000000000D7
+:1019100000000000000000000000000000000000C7
+:1019200000000000000000000000000000000000B7
+:1019300000000000000000000000000000000000A7
+:101940000000000000000000000000000000000097
+:101950000000000000000000000000000000000087
+:101960000000000000000000000000000000000077
+:101970000000000000000000000000000000000067
+:101980000000000000000000000000000000000057
+:101990000000000000000000000000000000000047
+:1019A0000000000000000000000000000000000037
+:1019B0000000000000000000000000000000000027
+:1019C0000000000000000000000000000000000017
+:1019D0000000000000000000000000000000000007
+:1019E00000000000000000000000000000000000F7
+:1019F00000000000000000000000000000000000E7
+:101A000000000000000000000000000000000000D6
+:101A100000000000000000000000000000000000C6
+:101A200000000000000000000000000000000000B6
+:101A300000000000000000000000000000000000A6
+:101A40000000000000000000000000000000000096
+:101A50000000000000000000000000000000000086
+:101A60000000000000000000000000000000000076
+:101A70000000000000000000000000000000000066
+:101A80000000000000000000000000000000000056
+:101A90000000000000000000000000000000000046
+:101AA0000000000000000000000000000000000036
+:101AB0000000000000000000000000000000000026
+:101AC0000000000000000000000000000000000016
+:101AD0000000000000000000000000000000000006
+:101AE00000000000000000000000000000000000F6
+:101AF00000000000000000000000000000000000E6
+:101B000000000000000000000000000000000000D5
+:101B100000000000000000000000000000000000C5
+:101B200000000000000000000000000000000000B5
+:101B300000000000000000000000000000000000A5
+:101B40000000000000000000000000000000000095
+:101B50000000000000000000000000000000000085
+:101B60000000000000000000000000000000000075
+:101B70000000000000000000000000000000000065
+:101B80000000000000000000000000000000000055
+:101B90000000000000000000000000000000000045
+:101BA0000000000000000000000000000000000035
+:101BB0000000000000000000000000000000000025
+:101BC0000000000000000000000000000000000015
+:101BD0000000000000000000000000000000000005
+:101BE00000000000000000000000000000000000F5
+:101BF00000000000000000000000000000000000E5
+:101C000000000000000000000000000000000000D4
+:101C100000000000000000000000000000000000C4
+:101C200000000000000000000000000000000000B4
+:101C300000000000000000000000000000000000A4
+:101C40000000000000000000000000000000000094
+:101C50000000000000000000000000000000000084
+:101C60000000000000000000000000000000000074
+:101C70000000000000000000000000000000000064
+:101C80000000000000000000000000000000000054
+:101C90000000000000000000000000000000000044
+:101CA0000000000000000000000000000000000034
+:101CB0000000000000000000000000000000000024
+:101CC0000000000000000000000000000000000014
+:101CD0000000000000000000000000000000000004
+:101CE00000000000000000000000000000000000F4
+:101CF00000000000000000000000000000000000E4
+:101D000000000000000000000000000000000000D3
+:101D100000000000000000000000000000000000C3
+:101D200000000000000000000000000000000000B3
+:101D300000000000000000000000000000000000A3
+:101D40000000000000000000000000000000000093
+:101D50000000000000000000000000000000000083
+:101D60000000000000000000000000000000000073
+:101D70000000000000000000000000000000000063
+:101D80000000000000000000000000000000000053
+:101D90000000000000000000000000000000000043
+:101DA0000000000000000000000000000000000033
+:101DB0000000000000000000000000000000000023
+:101DC0000000000000000000000000000000000013
+:101DD0000000000000000000000000000000000003
+:101DE00000000000000000000000000000000000F3
+:101DF00000000000000000000000000000000000E3
+:101E000000000000000000000000000000000000D2
+:101E100000000000000000000000000000000000C2
+:101E200000000000000000000000000000000000B2
+:101E300000000000000000000000000000000000A2
+:101E40000000000000000000000000000000000092
+:101E50000000000000000000000000000000000082
+:101E60000000000000000000000000000000000072
+:101E70000000000000000000000000000000000062
+:101E80000000000000000000000000000000000052
+:101E90000000000000000000000000000000000042
+:101EA0000000000000000000000000000000000032
+:101EB0000000000000000000000000000000000022
+:101EC0000000000000000000000000000000000012
+:101ED0000000000000000000000000000000000002
+:101EE00000000000000000000000000000000000F2
+:101EF00000000000000000000000000000000000E2
+:101F000000000000000000000000000000000000D1
+:101F100000000000000000000000000000000000C1
+:101F200000000000000000000000000000000000B1
+:101F300000000000000000000000000000000000A1
+:101F40000000000000000000000000000000000091
+:101F50000000000000000000000000000000000081
+:101F60000000000000000000000000000000000071
+:101F70000000000000000000000000000000000061
+:101F80000000000000000000000000000000000051
+:101F90000000000000000000000000000000000041
+:101FA0000000000000000000000000000000000031
+:101FB0000000000000000000000000000000000021
+:101FC0000000000000000000000000000000000011
+:101FD0000000000000000000000000000000000001
+:101FE00000000000000000000000000000000000F1
+:101FF00000000000000000000000000000000000E1
+:08200000481F000080008AE87F
+:10200800486870095809F9BC00FFF9B80101F3F8EC
+:102018001E10F9BC01015EFC000009B8EBCD408040
+:10202800189916974998700C580CC031E3CFC080A6
+:102038005809C070321A129B2EFCF01F0015C048B8
+:102048003008F96800315807C0904908700C306AA8
+:102058000E9B2CECF01F000EC09848C8700C306A1C
+:10206800E06B00FF2CECF01F000B48887008F1397A
+:1020780000313008F0091800C031E3CF9080F01F1C
+:102088000006E3CF90800000000009B88002DD144C
+:102098008002DE9A80014408D42118971696149578
+:1020A800129449D870085808C341338B301CF01F6C
+:1020B800001B4998910C580CC0A149989088E218C7
+:1020C8000008C270497CF01F0018DC2A189B497C64
+:1020D800F01F0017581CC0A049189088E218000883
+:1020E800C180494CF01F0010DC2A48B870089107DD
+:1020F800911691253009F16900109134488890882B
+:10210800E2180008C021DA2A48BCF01F0007DA2AC2
+:10211800DC2A0000000009B88002D1DC00000A14A3
+:1021280080036E0080002D4C8000214080013434F3
+:1021380080036E1480036E38D431202D1697581CF6
+:10214800C280C073582CC4D0583CE0810149C7B83C
+:10215800F01F00A81896FEF8029E9088E218000862
+:10216800C0A0F01F00A6201D1ADCFEFC0292F01F82
+:1021780000A52FED333CF01F00A4334CF01F00A343
+:102188006E185808E08001346E3B0C9C5D18C2F94B
+:10219800FEF802649088E2180008C050FEFC027045
+:1021A800F01F0098334CF01F0098333CF01F009745
+:1021B800EF3900103008F0091800E0800119F01F0D
+:1021C8000095581CE0800114FEF8022C9088E21853
+:1021D8000008E080010DFEFC023EF01F008AC07975
+:1021E800FEF802149088E2180008C0F0FEFC022CE9
+:1021F800F01F0084FEF802009088E2180008C05022
+:10220800FEFC021CF01F007F333CF01F00806E288C
+:102218005808C0306E3C5D18EF3900103008F009DE
+:102228001800E08000E5F01F007B581CE08000E00B
+:102238004F189088E2180008E08000DA4F9CF01FE1
+:102248000071CD584EC89088E2180008C0404F6C05
+:10225800F01F006C6E085808C0306E3C5D18EF39EE
+:1022680000103008F0091800E08000C2EF39003192
+:10227800F0091800E08000BCF01F005E1895FACC49
+:10228800FFFCF01F006A581CC42140197218580836
+:10229800C3E0EEC2FFEFEEC1FFCE02903004089615
+:1022A8000893EF380031300AF4081800C08072082B
+:1022B800F003032B049CF01F005EC1F0306A4DDB75
+:1022C800029CF01F005DC0A040187008F003032BAB
+:1022D8002DFB009CF01F0059C1005806C0A04018F3
+:1022E8007008F00303286CC970C81039E08900062B
+:1022F80040187008F0030326E8C8FFFFE9D8C008B3
+:102308000893401972181034CCD3C02830060C3505
+:10231800C0415805C6C1C2F858065F1458055F1871
+:10232800E9E80008C1B00A9B0C9CF01F0041C1609D
+:102338006ACCFE5CFFBFE089005B6CC9F8C8FFF699
+:102348001039C5554AC89088E2180008C0701AD9D3
+:102358001ADC4BBCF01F002B2FED5804C0C0202DF9
+:10236800306AECCBFFDF1A9CF01F0036F01F0036F6
+:102378002FEDC1684A089088E2180008C0B0EECC7A
+:10238800FFEFF01F001E201D1ADC4B0CF01F001D74
+:102398002FEDEF3B0031EECCFFEFF01F002D588CF6
+:1023A800C060589CC0F0581CC051C218F01F0029CA
+:1023B800C1E849189088E2180008C0404A6CF01F2C
+:1023C8000011F01F0014581CC12048B89088E2186A
+:1023D8000008C0D04A1CF01F000BC09848689088BD
+:1023E800E2180008C04049ECF01F00062FEDD83273
+:1023F80080013E8C00000A148000251080036E4C7A
+:1024080080002D4C80012F3480012F1880036E64CA
+:102418008001440880036E8480036EB480036EC814
+:1024280080036EE880036F188001341480002478DC
+:1024380080036F2C8002E3F48000246880036F34EB
+:102448008002DD14800142EC80036F54800143B0A8
+:1024580080013EDC80036F7C80036F9480036FA84B
+:10246800D401306AF01F00025F0CD8028002DCEC55
+:10247800D401F93A0020F7380020F4081800C020E9
+:10248800D80AF01F00035F0CD80200008002DCECC1
+:10249800EBCD404048B619D81AD819C81AD819B877
+:1024A8001AD819A81AD819981AD819881AD8486A97
+:1024B800312B0C9CF01F00052FAD0C9CE3CD804008
+:1024C800000009E080036FD48002E250EBCD404069
+:1024D800402948B6F1D9C0081AD8F1D9C1081AD884
+:1024E800F1D9C2081AD8B9891AD9486A310B0C9C93
+:1024F800F01F00052FCD0C9CE3CD8040000009F4AF
+:1025080080036FF48002E250EBCD4040189B48B640
+:1025180030090C9810A910A910A910A910A910A980
+:1025280010A910A9B089F93A00200C9CF01F0004EA
+:102538000C9CE3CD80400000000009BC8002DD1443
+:10254800D431202D18911692501A580AE08A003179
+:102558001293189630040895500C66070E9CF01FCD
+:10256800001618050435E088000A201D1AD2493CD7
+:10257800F01F0013300C2FEDC1C84000201DE206EB
+:10258800010B1AD748FA040B0C9CF01F000F180611
+:102598002FF42FC32FED40180838FE99FFE00236BC
+:1025A800C0700C98300910F9F000010CC028300CEC
+:1025B8002FEDD8328002E3E08003700480002D4CB8
+:1025C8008003701C8002E250EBCD408018972DFCF0
+:1025D800F01F001D201D1ADC49CCF01F001D0E9CA9
+:1025E800F01F001C500C49CCF01F00196EC8500891
+:1025F80049ACF01F00172FED6EF85818C041498CF0
+:10260800F01F0013EF3C00383048F00C1800C120D0
+:102618003058F00C1800C0603028F00C1800C0D1F9
+:10262800C058490CF01F000AC08848FCF01F000879
+:10263800C04848ECF01F000648DCF01F0005E3CD59
+:1026480080800000800024988003701C80002D4C3E
+:102658008000251080037020800370288003703864
+:1026680080037044800370588003706C80038CACC6
+:10267800EBCD4080202DFACCFFFCF01F0012401952
+:1026880072185808C181490CF01F001040197218BF
+:102698005808C111C1387208F00A032CF01F000C49
+:1026A800EEC8FFFFEFD8C0080E9A4019721810370D
+:1026B800CF33C04830070E9ACEFB2FEDE3CD808094
+:1026C800800134148003709480002D4C800025D044
+:1026D800D431202D189516973008BAE8169CF01FAB
+:1026E8000026F9DCC001C0404A4CF01F00250F8AC3
+:1026F800580AC0313006C3984A287009F20A0708F8
+:10270800E2180044C3502FF70F88F2080708E218B0
+:102718000044C2E03006FAC0FFFC31010C92499334
+:102728003004C1586609F20A0708E2180044C200DA
+:102738002FE70F88F2080708E21800445F08E04610
+:1027480000405F991248E8081800C121BACA0F88EA
+:10275800BAD8029A049B009CF01F000BEA060B0CE7
+:102768002FF60F9A580ACDF1F9D6C008C028300CB8
+:102778002FEDD8328002E3E0800370A480002D4C56
+:102788000000049C8002E710EBCD4080204D189794
+:10279800169C1A981AD8FAC8FFF81AD8FAC8FFF07F
+:1027A8001AD8FAC8FFE81AD849BBF01F001C2FCD69
+:1027B800584CC2214039E04900FFE08B001E4028F8
+:1027C8005808C1A5E04800FFE0890017401A580AD8
+:1027D800C135E04A00FFE0890010400B580BC0C526
+:1027E800E04B00FFE0890009B168F1E9118816485B
+:1027F800F1EA1089C0283009F2081618AE88F208E4
+:102808001610AE98F2081608AEA8AEB90E9C2FCDD9
+:10281800E3CD8080800370B48002E204D40148A92B
+:1028280072082FF89308F2F900CC5809C05048688C
+:10283800F0FC00D45D19FE790D0030189388727889
+:10284800D402D6030000000848487009F0FC00D004
+:10285800F20C024C5EFC000000000008EBCD40FECC
+:102868004968F0C7FFF410963003109530121091A4
+:10287800F0C4FF2C0F88E6081800C1816A096C288B
+:102888001238E08B00146E185808C0306E2C5D1892
+:102898000F98E4081800E3F90000EDF80001F1D9F9
+:1028A800E008EDF80A02EFF21E002EC72EC6083720
+:1028B800CE21E3CD80FE000000000008EBCD40F8FB
+:1028C8001897169614951294580AC021C008301803
+:1028D800F00B1800E0880003C00849C8F0CAFFF4EC
+:1028E8003009109B3003FDD9C008F2090028F6080A
+:1028F8000028F0CCFFFC1588E6081800C091FCC839
+:10290800FFFFFDD8C0082FF92ECA58A9CED130A88C
+:10291800F00E1800C021C00848CBF6F900D0EE0927
+:102928000D089908760A100A991AF96600093008FC
+:10293800F9680008FC0E0028F60800289145915413
+:102948001C9CE3CD80F8000000000008EBCD40E0BF
+:1029580018971695300A328B496CF01F0017300A09
+:10296800149BFE7C0D00F01F0015C021C0084946CD
+:10297800ECFB00D0F60B1073A19BFE7C0D00F01F42
+:102988000011FE7C0D00F01F0010FE7C0D00F01FF2
+:10299800000FED4700CCED4500D42F46301948888C
+:1029A800F0C8FF2CAC892EC61036CFD1E3CD80E01D
+:1029B8008000282480012D8880012B7C00000008DD
+:1029C80080012B5880012B5080012B2CD401580CEE
+:1029D800C0707808B08B78082FF89908D802F9DB0E
+:1029E800C008F01F0002D802800044E8EBCD40FC8C
+:1029F800189316951492129B580AE08A001D0B89A9
+:102A08003008F0091800C0313009C0E83009300A30
+:102A18002FF9EA090708F4081800CFB11232E08943
+:102A280000043002C02812121698E2180002C030C2
+:102A38003304C0283204F1DBC001C1015802E08A26
+:102A4800000E0497089B069CF01F001320175807D8
+:102A5800FE99FFFA04963002C02830060B8B580BFB
+:102A6800C090069CF01F000C2FF62FF50B8B580B0F
+:102A7800CF915802E08A000C0497089B069CF01F2F
+:102A8800000620175807FE99FFFA04060C9CE3CDB0
+:102A980080FC0000800029D4EBCD40F8204DFACE10
+:102AA800FFD8189310957C047C1E169C580BC0D137
+:102AB8003308BAC83008BAD808990A9AFACBFFFC82
+:102AC800069CF01F0023C40858095F1858AA5F091C
+:102AD8001268C070580BC054F60C11003016C0288C
+:102AE80030063008FB68000F580CC041FAC7FFF1E8
+:102AF800C128FAC7FFF1149B23AEF80A0D085899AC
+:102B0800F3DEE909F2C8FFD00EF8F80B0D08109CA7
+:102B18005808CF415806C1105805C0C00898E21897
+:102B28000002C08032DB069CF01F000A2015301618
+:102B3800C04832D80EF8300608990A9A0E9B069CAF
+:102B4800F01F00030C0C2FCDE3CD80F8800029F492
+:102B5800800029D4D431203D18951697500A17883B
+:102B68005808C0313006CDD83006325232D133043D
+:102B780030933730E4081800E08100CA2FF70F8837
+:102B88005808E08000CFE4081800E08000C1E2089F
+:102B98001800F9BE0100F7B700FFF9BE00010F8861
+:102BA800E8081800C0712FF7A1BE0F88E8081800C0
+:102BB800CFB00F8AF4C80030E6081800E088000497
+:102BC800300CC108300CF80C0028F4080018F0CCC0
+:102BD80000302FF70F8AF4C80030E6081800FE9876
+:102BE800FFF4E00A1800C1214009F2C8FFFC5008B0
+:102BF800720858081C99189A4CFB5808F00B1710C3
+:102C08000A9CF01F004E1806C8783648F00A1800CB
+:102C1800C121400BF6C8FFFC500836181AD81ADE36
+:102C28001898301930AA760B0A9CF01F0045180630
+:102C38002FEDC7283708F00A1800C131400BF6C835
+:102C4800FFFC500836181AD830881AD81898300956
+:102C5800310A760B0A9CF01F003A18062FEDC5C8FA
+:102C68003788F00A1800C121400BF6C8FFFC50084D
+:102C780036181AD81ADE18983009310A760B0A9CC9
+:102C8800F01F002F18062FEDC4783588F00A1800B9
+:102C9800C121400BF6C8FFFC500834181AD81ADEB8
+:102CA80018983009310A760B0A9CF01F002518067F
+:102CB8002FEDC3283758F00A1800C121400BF6C879
+:102CC800FFFC500836181AD81ADE1898300930AAAE
+:102CD800760B0A9CF01F001A18062FEDC1D836385B
+:102CE800F00A1800C1914009F2C8FFFC50087208A8
+:102CF800FB6800083008FB6800091C99189AFACB91
+:102D0800FFF80A9CF01F000D1806C0680F8B0A9C7C
+:102D1800F01F000C2FF62FF70F885808FE91FF2C94
+:102D28005805EBF91000F9B80100F3F81E000C9CE7
+:102D38002FDDD832800370C0800029F480002AA0DB
+:102D4800800029D4D401FACAFFFC189B300CF01F6C
+:102D58000002D80280002B5CD401FAC9FFFCF01FE6
+:102D68000002D802800310CCD401F01F0002D80260
+:102D78008002E49CD401F01F0002D8028002E2BC69
+:102D8800D401F01F0002D8028002E710D401F01F1E
+:102D98000002D8028002DCECD401F01F0002D80245
+:102DA8008002E440D401F01F0002D8028002E394BC
+:102DB800D401F01F0002D8028002E2D8D401F01F2B
+:102DC8000002D8028002E420D401F01F0002D802D9
+:102DD8008002E3E0D401F01F0002D8028002DE5C2A
+:102DE800D401F01F0002D8028002DE9AD401F01F3D
+:102DF8000002D8028002DD14D401F01F0002D802BC
+:102E08008002D83CD401F01F0002D8028002DEAC58
+:102E1800D401F01F0002D8028002D854D431201DFA
+:102E2800189516941496129158095F094A18B08992
+:102E3800580AC3D01097E062010050083010EA0326
+:102E480016088F140A98F1D8C008AE688F22E06877
+:102E580000FFF0061900E069FFFFEDD9E828EFF858
+:102E68008A028EE8E069010010196E281238FBF812
+:102E7800B000F1F9BA02069CF01F000F009CF01F89
+:102E8800000FF01F000F5801C090069CF01F000DA6
+:102E9800009CF01F000DF01F000D6E29EC090108C1
+:102EA800EDD8B010C04012041205CCAB2FFDD83AB3
+:102EB80000000A04800132108001338880013094B8
+:102EC800800131208001335480013044D40130091D
+:102ED8005C7AF01F0002D80280002E24D4014858E2
+:102EE80090E9702A701B120CF01F0003D802000032
+:102EF80000000A048002DD14D401488811893008D2
+:102F0800F0091800C090485890EB702AF80B000B95
+:102F1800701CF01F0003D80200000A048002DD14B0
+:102F2800D401204D48C8F0EA0000FAEB0000F0E8B0
+:102F38000008FAE90008204DFAEB0000FAE9000859
+:102F4800E06CF980EA1C0337F01F00042FCD2FCD69
+:102F5800D80A0000800370C8800133BCD4014898A7
+:102F68009088F1D8C001C080201D48781AD8487CC4
+:102F7800F01F00072FED30194868B089D80200000B
+:102F880000000A14800370E48003711880002D4C3F
+:102F980000000A17D401319CF01F0003319CF01F78
+:102FA8000003D80280012F0280012F18EBCD40804A
+:102FB800205D18973018B8C8300850485038502845
+:102FC8001AD81AD81AD8F01F00234A3B6E0CF01FE3
+:102FD80000234A389088F1D8C0012FCD5808C08006
+:102FE800201D4A081AD84A0CF01F00202FED0E9910
+:102FF80049FA4A0B4A0CF01F0021581CC090201DAA
+:1030080049F81AD849FCF01F00192FEDC008F01F25
+:10301800001EF01F001EF01F001EC0F04908900996
+:103028003008F0091900C0F4201D48E81AD8499C56
+:10303800F01F000E2FEDC07830194978B089319C07
+:10304800F01F00163018EF6800082FCDE3CD808000
+:1030580080003630800032108000EA5800000A14E0
+:10306800800371048003713080002D4C800030A4EF
+:103078008000312C80002F64800020A080037148DC
+:1030880080038E8C800020088001440880006C9C9E
+:103098008003716400000A1680012F34EBCD408054
+:1030A8001897333CF01F001549589088F1D8C00193
+:1030B800C080201D49381AD8493CF01F00142FED54
+:1030C8000FD93008F0091800C0D0491CF01F000FB4
+:1030D8006E0CF01F00106E0CF01F000F3008AED8F9
+:1030E800C07848ECF01F00096E0CF01F000D3FFC83
+:1030F800F01F000CE3CD808080012F1800000A1417
+:10310800800374308003718080002D4C8003719C93
+:10311800800115D4800111FC800371B88000EA2079
+:1031280080006E4CEBCD40C018961697333CF01FCC
+:1031380000284A889088F1D8C001C080201D4A68BC
+:103148001AD84A6CF01F00262FED0C9CF01F0025A2
+:10315800201D1ADC4A4CF01F00222FED0FC9300841
+:10316800F0091800C20049B89088F1D8C001C080A1
+:10317800201D49981AD849DCF01F00192FED49CCB9
+:10318800F01F00176E0CF01F001BF3DCC008580975
+:10319800499849AC5809F00C1710F01F0011301865
+:1031A800AED8C0486E0CF01F001648A89088F1D819
+:1031B800C001C080201D48881AD8492CF01F00087B
+:1031C8002FEDF01F0011E3CD80C0000080012F34E7
+:1031D80000000A14800370F4800371C480002D4C31
+:1031E80080002510800371E0800371FC8003721455
+:1031F80080011D888003778C8003722C8000EAF49C
+:103208008003723080010BF0EBCD4080189749C8DD
+:103218009088F1D8C001C080201D49A81AD849ACAF
+:10322800F01F001A2FED0E9CF01F0019C130301C42
+:10323800F01F0018201D6E181AD8F01F0017500C28
+:10324800496CF01F001230194958B0892FEDE3CDB1
+:10325800808030094928B089F01F001248889009F9
+:103268003008F0091900C084201D48681AD848ECB5
+:10327800F01F00062FEDE3CD8080000000000A1447
+:10328800800374448003724880002D4C8000EA4E0D
+:1032980080006E4C800024D48003726000000A1AFB
+:1032A8008000628880037270D4014A489088F1D8FF
+:1032B800C001C080201D4A281AD84A2CF01F0022BD
+:1032C8002FEDF01F0022300A4A1B4A2CF01F002263
+:1032D800300A4A2B4A2CF01F0020300A4A1B4A2C7D
+:1032E800F01F001D300A4A1B4A1CF01F001B300A41
+:1032F8004A0B4A1CF01F0018300A4A0B4A0CF01FF0
+:103308000016300A49FB4A0CF01F0013300A49FB2B
+:1033180049FCF01F0011300A49EB49FCF01F000E70
+:10332800300A49EB49ECF01F000C300A49DB49EC44
+:10333800F01F0009D802000000000A14800370D8AA
+:103348008003728C80002D4C800038088000433840
+:10335800800372A4800037D4800042D0800372AC0E
+:1033680080003D70800372B480003E98800372BC78
+:1033780080003B20800372C480005CA8800372CC6C
+:103388008000417C800372D480004234800372DC68
+:1033980080004110800372E480004044800372EC96
+:1033A80080003FDC800372F4EBCD40801897F01F5B
+:1033B800000CF01F000CF01F000CF01F000C6E0C2E
+:1033C800F01F000B48B811893008F0091800C040F8
+:1033D8006E0CF01F0009E3CD808000008000286497
+:1033E80080003ADC80002850800138B080008BF0E3
+:1033F80000000A168000868CEBCD4040202D300658
+:103408005006EE7800003029F1D9D1A23019F1D94F
+:10341800D00350180C9B337CF01F000F1A9BFE7CC6
+:103428003800F01F000EE06A01A40C9BFE7C3800F7
+:10343800F01F000BE06A03480C9BFE7C3800F01F6D
+:1034480000090C9BFE7C3800F01F00072FEDE3CD30
+:103458008040000080012E4C800127908001285078
+:103468008001288A80012834D401333CF01F0009E8
+:10347800334CF01F0008335CF01F0006333CF01F8C
+:103488000006334CF01F0004335CF01F0003D80221
+:1034980080012ED480012F18EBCD4080202DF01F05
+:1034A8000046F01F0046F01F0046F01F0046F01FC0
+:1034B8000046E06C1B00EA1C00B7F01F0044201D0A
+:1034C8004C381AD84C3CF01F004430CB301CF01F4D
+:1034D800004318972FED580CC091201D4C081AD89E
+:1034E8004C0CF01F003D2FEDC008344B301CF01F72
+:1034F800003B8F0CC091201D4B981AD84B9CF01F95
+:1035080000362FEDC0084B889088F1D8C001C0E084
+:10351800201D34481AD81ADC30C81AD81AD74B38A4
+:103528001AD84B3CF01F002C2FAD300B169CF01F07
+:103538000031F01F0031F01F0031C090201D4B08F2
+:103548001AD84A8CF01F00242FEDC008FACAFFFCD5
+:103558000E9B4ACCF01F002C581CC1914A28908819
+:10356800F1D8C001C09040181AD84A081AD84A7C25
+:10357800F01F00192FED401A4A5B0E9CF01F002522
+:10358800581CC0510E9CF01F0024CFDB58CCC04003
+:1035980058DCC0A1C0584A1CF01F000FC0884A0C54
+:1035A800F01F000DC04849FCF01F000BF01F001E63
+:1035B800CFEB000080002F9C8000434C80003470CB
+:1035C80080003400800032B0800125E88003732039
+:1035D8008003730080002D4C8002D1DC8003733C93
+:1035E80080038E8C00000A14800374548003734C8B
+:1035F8008000295480010630800037C88003737822
+:10360800800037488002C950800373A480002FB41B
+:10361800800138CC800033B0800373B8800373E036
+:103628008003740480002864EBCD4080FACBFFF857
+:10363800189719C93008F0091800F9B80100F7F807
+:103648001A02F7F81A00F7F81A014A181AD84A188D
+:103658001AD83008F6C9FFF8F6CAFFFC780CF01F34
+:10366800001E8F0C2FED580CC031E3CFC080F01F27
+:10367800001B300949AA301BE06C1388F01F0019A1
+:103688003009499A301BE06C00FAF01F0016300927
+:10369800496A301BE06C01F4F01F00123009494AF6
+:1036A800301BE06CEA60F01F000F3009491A301B2C
+:1036B800E06C03E8F01F000B300948FA301BE06C9F
+:1036C80003E8F01F0008E3CF90800000800099F81D
+:1036D80080008CDC8000EC1C8000EA148000373C01
+:1036E800800028C4800037308000372480003718D5
+:1036F8008000370C80003700D401F01F0002D80288
+:1037080080010BC8D401F01F0002D8028000F240EB
+:10371800D401F01F0002D80280011CE0D401F01F80
+:103728000002D802800124B4D401F01F0002D8029C
+:103738008000E068D401F01F0002D802800095ECF8
+:10374800D421169514941297580BC0E14978700C3F
+:10375800580CC0313007C268F01F001530094938CD
+:1037680091091297C1F8491870085808C0E1E06C2F
+:103778000200F01F001048D8910C580CC06148ECAA
+:10378800F01F000E3007C0E8E06802001037F007AD
+:1037980017B048660E9A6C0B089CF01F00096C085D
+:1037A8008B080E9CD822000000000A1C8002D83C1E
+:1037B8008002D8548003745C80002D4C80002ED485
+:1037C800D401F01F0002D80A80002F28D401149ECB
+:1037D80048B9300A72085808C0602FFA2F4958CAE9
+:1037E800CFA1C0C858CAC0A0F40A00184849F208B6
+:1037F8000028911C910B912ED80ADC0A00000A209F
+:10380800D401484CF01F000430194848B089D80248
+:103818008003748080002D4C00000B08EBCD40FE27
+:1038280016914DF870085808C0505818E08100B536
+:10383800C8D8580CE08000AFF01F005A18934DA864
+:10384800910C580CE08000A719893008F00918007D
+:10385800C0C15801C0404D5CF01F00554D28700C88
+:10386800F01F0054E3CF80FE30084D3993084D39DE
+:10387800F2C4FFFC10954D0268075807C1000E9C62
+:10388800F01F004F1896069CF01F004DEC0C0D46DB
+:103898000C9A069B0E9CF01F004BC0702FF58505F7
+:1038A8002F4458C5CEA1C03858C5C2D15801C250FE
+:1038B8004C5CF01F003F30094BF891094BF64C3532
+:1038C8001097F2090018EC0803285808C0C0201DFA
+:1038D800F2090018EC08002870181AD80A9CF01F82
+:1038E80000342FED6E08F0C9FFFF8F0958B9FE9814
+:1038F800FFEA4AECF01F002E4AB8700CF01F002DAA
+:10390800E3CF80FE4B2B069CF01F0032C1C04B2832
+:1039180070094B2AF409092C2FF991095909C0A1FA
+:10392800C1286E08EC08092C2FF88F085908C061C7
+:10393800C0A84A7430054A964A77089B0A9CF01F2B
+:103948000025CF0130194968910949B87008F00875
+:10395800001849A9F20800287009702A49FB49E8AB
+:10396800700C5D19581CC1805801C04048FCF01FFC
+:103978000010300649889106340A0C9B497CF01FD8
+:1039880000184898700CF01F000B48589106E3CFB8
+:1039980090FEE3CF80FEE3CF90FE000000000B0C0A
+:1039A8008002E39400000B548003748480002D4C43
+:1039B8008002D83C00000B0400000A208002E3E0EB
+:1039C8008002E3F480037488800374A0800376B0D7
+:1039D8008002E4CC00000B1000000B148002DE9A79
+:1039E800EBCD4080202D1897FACBFFFCFE7C180009
+:1039F800F01F0015583CC031301CC228584CC081FB
+:103A0800E0690100FE7818009109301CC198401C3B
+:103A180058DCC05130ACF01F000DC0F8588CC0A164
+:103A2800F01F000A320CF01F00091BFCF01F0007F2
+:103A3800C0485C5CF01F00054018AE88300C2FEDC4
+:103A4800E3CD80808001266C800044E8D431202DAD
+:103A5800FAC2FFF930D130A33006308449B749C5DE
+:103A68003000049CF01F001BC2C11BFAE20A1800B8
+:103A78005F08E60A18005F091248EC081800C0B091
+:103A8800493B492A74093008F6090B08300895089B
+:103A9800169CC188E80A1800C0916E082018E00832
+:103AA80017608F08EA080B06C0686E08EA080B0A58
+:103AB8002FF88F086E08E0480050CD418F00CD2BBD
+:103AC800300C2FEDD832000000000AB000000AB414
+:103AD800800039E8D401F01F0004301BF01F0003F8
+:103AE800D802000080003A5480003824D401178995
+:103AF8001798B168F1E9118817A9F1E9108817B981
+:103B080010491AD91ADC483CF01F00032FEDD802DF
+:103B18008003888480002D4CEBCD40E018971696E2
+:103B2800582CC31176174FEB0E9CF01F007EC0A1D6
+:103B38004FDCF01F007E30084FD9B2084FD9B208C9
+:103B4800CEC84FDB0E9CF01F0077C101201D4F88A7
+:103B580090881AD84F9CF01F00754F6890885008BD
+:103B68004F7CF01F00722FEDCD884F6B0E9CF01F1D
+:103B7800006DC0C14F4CF01F006DE06900FF4EC8DA
+:103B8800B009CCB8582CE08900064F0CF01F00672C
+:103B9800CC48762CF01F006E18955837E08100BE8F
+:103BA8006C174ECB0E9CF01F005FC1A15805E08A30
+:103BB80000074DF99208A1A8B208C0584DC992084B
+:103BC800A1C8B2085815E08A00074DA99208A1A813
+:103BD800B208CA384D799208A1C8B208C9E84DEBB5
+:103BE8000E9CF01F0050C1A15805E08A00074D093E
+:103BF8009208A3A8B208C0584CD99208A3C8B20822
+:103C08005815E08A00074CB99208A3A8B208C8580A
+:103C18004C899208A3C8B208C8084D0B0E9CF01F27
+:103C28000041C1A15805E08A00074C199208A1B8C3
+:103C3800B208C0584BE99208A1D8B2085815E08AD2
+:103C480000074BC99208A1B8B208C6784B999208E8
+:103C5800A1D8B208C6284C2B0E9CF01F0032C1A177
+:103C68005805E08A00074B299208A3B8B208C05843
+:103C78004AF99208A3D8B2085815E08A00074AD929
+:103C88009208A3B8B208C4984AA99208A3D8B2085F
+:103C9800C4484B4B0E9CF01F0023C1A15805E08A75
+:103CA80000074A399208A5A8B208C0584A099208DC
+:103CB800A5C8B2085815E08A000749E99208A5A8DE
+:103CC800B208C2B849B99208A5C8B208C2684A6B16
+:103CD8000E9CF01F0014C2115805E08A000A4949D9
+:103CE8009208EA18FFFFE8188000B208C06849097E
+:103CF8009208F1D8C00FB2085815E08A000A48D9CE
+:103D08009208EA18FFFFE8188000B208C0684899CE
+:103D18009208F1D8C00FB208E3CF80E0800374C8DE
+:103D28008002E2D8800374CC80002D4C00000A1475
+:103D380000000A18800374D8800374E0800374F8C4
+:103D48008003D33C800375108003751C8002D1CC9E
+:103D5800800375A8800375B0800375B4800375B8B7
+:103D6800800375BC800375C4D421206D18961697FE
+:103D7800306AE06B00FFFACCFFFEF01F00385826CF
+:103D8800C1C14B7B6E1CF01F0037C1A14B6CF01FEB
+:103D98000037FAC6FFFE0C9B300CF01F00350C9B59
+:103DA800301CF01F00330C9B302CF01F00310C9B93
+:103DB800303CF01F002FC4E85826E08900064ADC92
+:103DC800F01F002AC478EEC4FFFC680CF01F002A1C
+:103DD80018966E270E9CF01F00291895585C5F08EE
+:103DE80058DC5F091248C080189A0E9BFACCFFF87D
+:103DF800F01F0023C2380E9BFACCFFF8F01F0021F9
+:103E080018955F0858365F991248C0A15806C085B2
+:103E1800C0B1680811893308F0091800C050495C1E
+:103E2800F01F0012C17858555F1858D55F191268ED
+:103E3800C050495CF01F000DC0D85C56FAC9FFFE9F
+:103E4800FACAFFF80A9B0C9CF01F00100C9CF01F8C
+:103E580000102FADD82A00008002DE9A800375CCAE
+:103E68008002E2D8800375D480002D4C8001372C65
+:103E7800800375E88002D1CC8002E3E08002E42070
+:103E8800800026D880037628800137808001376833
+:103E9800EBCD4060204D14954B9CF01F003AFACCB6
+:103EA800FFF8F01F0039581CC0504B8CF01F00352C
+:103EB800C0B8FACCFFF8F01F0036201D1ADC4B5CA6
+:103EC800F01F00302FEDF01F003418964B3CF01F08
+:103ED800002D5806C0514B2CF01F002AC0480C9CDE
+:103EE800F01F00304B08700CF01F0030C0E0201DA0
+:103EF8004AD8700870181AD8F01F002D500C4ADCE8
+:103F0800F01F00202FEDC0484ABCF01F001E4ABC1D
+:103F1800F01F001C0BC93008F0091800C0504A8C6B
+:103F2800F01F0018C0484A7CF01F0016300BFACC6E
+:103F3800FFFCF01F00254016301B1A9CF01F0022C2
+:103F480040055016201D1AD6F01F001950361AD6F3
+:103F58001ADC49ECF01F000B50452FDD1AD5F01F75
+:103F6800001450251AD51ADC499CF01F0006F01FD2
+:103F780000192FCD2FCDE3CF80600000800376603D
+:103F880080002D4C80013638800376788000249894
+:103F98008003769480013E8C800376A4800376D4D7
+:103FA800800025D000007FEC8000EA4E800024D4F9
+:103FB800800376B4800376C4800376DC800376E4DD
+:103FC800800376F080010694800376FC8003770CEA
+:103FD80080008858EBCD40C01697582CE089000621
+:103FE800491CF01F0012C1D8761CF01F001118964A
+:103FF8006E2CF01F000F18971ADC1AD648DCF01F39
+:10400800000BF7D7C008F9D6C010F01F000B2FED32
+:104018005BFCC0701AD71AD6488CF01F00042FED2D
+:10402800E3CF80C08003771C80002D4C8002D1CC68
+:104038008003774080007E1080037768EBCD40686E
+:10404800206D1695582CE08900064A5CF01F002563
+:10405800C438761CF01F0024F8C300016A2B1A9C90
+:10406800F01F0022FAC5FFEC304A1A9B0A9CF01F89
+:104078000020201D40681AD8F01F001E1ADC1AD331
+:1040880049DCF01F00180A9BF9D3C008F01F001B79
+:10409800300BFACCFFE0F01F001A4086301BFACC38
+:1040A800FFE4F01F0017407550862FDD1AD6F01F69
+:1040B800001150661AD61ADC492CF01F000A5075F8
+:1040C8002FDD1AD5F01F000B50551AD51ADC48EC15
+:1040D800F01F00042FCD2FADE3CF806880037794C5
+:1040E80080002D4C8002D1CC800027908002DD1406
+:1040F800800024D4800377BC8001064480010694A4
+:10410800800376FC8003770CD401FACD0108581C93
+:10411800E0890006492CF01F0013C1F8F6C9FFFC1E
+:10412800F8CA0001E06B0100FACCFFF8F01F000E9E
+:10413800C140300948DAFACBFFFCFACCFFF8F01F8F
+:10414800000C5C5CC0A140181AD8FAC8FFF41AD851
+:10415800488CF01F00042FED2BEDD80A800377D888
+:1041680080002D4C8000254880003AF480010A0424
+:1041780080038884D42121AD18971694582CE0899F
+:1041880000064A2CF01F0022C3D8344A300BFACC60
+:10419800FFDCF01F0020306AE06B00FFFACCFFBBA9
+:1041A800F01F001CE8C9FFFCEECA0002320BFACC73
+:1041B800FFFCF01F00191896C250FAC5FFDC189AC8
+:1041C800FACBFFFC0A9CF01F0015FB660044308800
+:1041D800FB68005CE8070028F0F6FFFC0C9CF01F69
+:1041E800001030183089189A0C9B0A9CF01F000D9B
+:1041F800581CC080201D48C81AD848CCF01F00049D
+:104208002FED2E6DD82A0000800377F480002D4C06
+:104218008002DE9A800025488002DD148002E3E0F7
+:1042280080013594800378D880037818EBCD40C09E
+:1042380021AD1697582CC05049CCF01F001DC3184B
+:10424800344A300BFACCFFDCF01F001A306AE06BFE
+:1042580000FFFACCFFBBF01F0017EEC9FFFC301AB5
+:10426800320BFACCFFFCF01F00141897C1A0FAC655
+:10427800FFDC189AFACBFFFC0C9CF01F0010FB67C0
+:1042880000443088FB68005C0C9CF01F000D581C33
+:10429800C080201D48B81AD848BCF01F00052FED73
+:1042A8002E6DE3CF80C000008003783880002D4C4D
+:1042B8008002DE9A800025488002DD1480013508DE
+:1042C800800374A880037850EBCD40C0212D581C82
+:1042D800E0890006491CF01F0012C1C8F6C9FFFC9E
+:1042E800F8CA0001320BFACCFFFCF01F000E189739
+:1042F800C110FAC6FFD9189AFACBFFFC0C9CF01F24
+:10430800000AFB670047300B0C9CF01F0008F01FE9
+:1043180000082EEDE3CF80C0800378C080002D4CCC
+:10432800800025488002DD148000202480002008B9
+:10433800D401F01F0003F01F0003D80A80014408CD
+:1043480080002678EBCD4068204D4D18E3B8000179
+:10435800D553FE69100073083016F1D6D202F3481F
+:104368000040303AE06B1B00EA1B00B7FE7C0C00F3
+:10437800F01F0048201D31081AD830080C99308ADF
+:10438800109BFE7C0C00F01F004430080C990C9A1E
+:10439800109BFE7C0C00F01F0041300BFE7C0C00D3
+:1043A800F01F003FFE7C0C00F01F003E300B1ADBB4
+:1043B8001ADB16981699169AFE7C0C00F01F003A24
+:1043C8000C9CF01F003A302BFE7C0C00F01F0038CC
+:1043D800F01F0038D503302B4B7CF01F0038E06A03
+:1043E800F980EA1A03374B6BFE7C1800F01F003582
+:1043F800FAC8FFF030059105FAC8FFEC9105FAC834
+:10440800FFE89105FAC8FFE491053018FB68001D24
+:10441800304B4ADCF01F0029FAC3FFF0069BFE7CF4
+:104428002800F01F002A0A990A9A0A9BFE7C280095
+:10443800F01F00274A76304B0C9CF01F00200D8C93
+:10444800F01F00250DACF01F00240DCCF01F00223A
+:104458000DECF01F0021069BFE7C2800F01F001BBE
+:104468000A990A9A0A9BFE7C2800F01F0019FE7C14
+:104478002800F01F001A302CF01F0019FE7C2800BD
+:10448800F01F00162FCD2FCDE3CD806880036C0080
+:1044980080012D5880012CFA80012D1C80012D36B9
+:1044A80080012D4480012CB480012FDE80012D4E27
+:1044B80080012DBC800378F880012EA4800378EC5D
+:1044C800800126C4800378E48001291080012948EE
+:1044D800800378FC80012EEC80012AB480012F181B
+:1044E800D421189530A8F00C1800C141E067270FB7
+:1044F80030D4FE761800C0485807C1602017089BC2
+:104508000C9CF01F000ACF91C0585807C0D0201744
+:10451800C058E067270FFE7618000A9B0C9CF01F16
+:104528000003CF41D822DC2A80012650D4211497D9
+:10453800580AC021C008169E3006FE7A28003FF5AA
+:1045480030140C9B7448E2180002CFD07448E2186B
+:104558000200CFD0580CC09019891998F1E9108839
+:10456800F7D8D0102FECC038F7D5D010953B744849
+:10457800F1D8C001CFD07428F7D8B010580EC06059
+:10458800F1DBC108BC88BC9B2FEEE8071900E08866
+:104598000007EEC80002EFD8B010CD41FE78280021
+:1045A80070491298E2180008C020C0081298E21852
+:1045B8000004C020C008D822580CC090FE782800FB
+:1045C8007019300AF3DAD20491195EFCFE782800DB
+:1045D800701930FAF3DAD20491195EFC202D3008F4
+:1045E8005018E0681388B13C580CC0803009401856
+:1045F8002FF850182FF91839CFB32FED5EFCD703D9
+:10460800D401303CF01F0005C060303CF01F0004AE
+:10461800F01F0004D402D60380012FB080012FC8F8
+:104628008002CADCD401580CC060300B303CF01F4B
+:104638000004D802303CF01F0003D80280012F503C
+:1046480080012F9AD4013008B888303CF01F00222E
+:10465800303CF01F0022309CF01F001F307CF01F00
+:10466800001E305CF01F001E309CF01F001E314CF5
+:10467800F01F001B307CF01F001BFE780C007048F8
+:10468800E2180020C021C008FE780C007048E2182B
+:104698000002C021C008300A340B493CF01F001347
+:1046A800FE7A280074C83029F1D9D10895C874C891
+:1046B8003089F1D9D08495C874C83019F1D9D0613E
+:1046C80095C874C8F1D9D00195C8303CF01F0008CE
+:1046D800D80A000080012ED480012EEC800045E429
+:1046E80080012F188000460880012D8880012FC87E
+:1046F800EBCD40804988118A580AC0614978118BEE
+:10470800580BC071C2484958118BF60A1800C1F0FD
+:10471800F80C0019F40A0018A568F00900294908DE
+:10472800F208000748F89088E2180010C11048E81D
+:104738009088E2180010C0C01ADA1ADB1AD748B8F5
+:104748001AD848BCF01F000B2FCDC02830070E9C8C
+:10475800E3CD808000000B5900000B58000078D48E
+:1047680000000A1400000A188003792080037940A9
+:1047780080002D4CEBCD40C016971496F01F000515
+:10478800C06078088F089828AC08301CE3CD80C03A
+:10479800800046F8EBCD40E031D8F00C1800E088F6
+:1047A800001149F890093008F0091900C3641ADCAF
+:1047B80049C81AD849CCF01F001D2FEDE3CD80E081
+:1047C80018961697F60B0019F80C0018A568F0094A
+:1047D80000294978F009030549189088E218001063
+:1047E800C0A0201D1ADC1AD548E81AD8491CF01FA9
+:1047F800000F2FCD0A9CF01F0010EE070019EC06E1
+:104808000018A568F009002948981208300991098C
+:10481800B029B0392F889109E3CD80E000000A144F
+:10482800800379108003795480002D4C000078D4DF
+:10483800800379748002D83CEBCD40801897169895
+:10484800580CC1014A2890093008F0091900C3C45E
+:10485800201D4A081AD84A0CF01F00202FEDE3CD7E
+:10486800808049FB178AF0080019F40A0018A56827
+:10487800F009002949B8120830099109B029B0395E
+:104888002F8891092FFA5C5AB68A31E8F00A180085
+:10489800F6091700F9B80000F3F80E0048C8908828
+:1048A800E2180010C0E048E811881AD848E81188D2
+:1048B8001AD81ADC48781AD848CCF01F00082FCD2F
+:1048C8000E9CF01F000BE3CD8080000000000A144E
+:1048D80080037AB88003798880002D4C00000B593A
+:1048E800000078D400000B58800379408002D83C3F
+:1048F800EBCD40C01896F01F00091897C031E3CFE0
+:1049080080C00C9B780CF01F00068EAB6E2CF01F3D
+:104918000005E3CF90C00000800046F880004840C2
+:1049280080004C50D421169514961894F01F002638
+:104938001897C021D82A98399828F2081900E088D1
+:10494800002B780A5806C070F1D9C010F40807087F
+:10495800AA88C098F1D9C010F4080708AA88F2C834
+:10496800FFFFB83849989088E2180010C2A049881B
+:104978009088E2180010C2500B881AD86E081AD80E
+:104988008EB81AD849381AD8493CF01F0014301C80
+:104998002FCDD82248D89088E2180010C090780807
+:1049A8001AD848C81AD848ECF01F000C2FED089BFD
+:1049B8006E0CF01F000C8EAB6E2CF01F000BD82A6B
+:1049C800DA2A0000800046F800000A1400000A18DD
+:1049D80080037AC48003799C80002D4C800379B4CD
+:1049E8008000484080004C50EBCD40C01896F01F26
+:1049F80000271897C031E3CF80C04A589088E21842
+:104A08000010C1204A389088E2180010C0D07808F9
+:104A18001AD898A81AD898B81AD849F81AD849FCB0
+:104A2800F01F001F2FCD8E398E28F0091900C030D5
+:104A3800E3CF90C00C9B6E0CF01F001A8EAB6E2C4F
+:104A4800F01F001949289088E2180010C1404978E1
+:104A5800118949781188201D1AD91AD8F009180027
+:104A68005F181AD86E081AD848B81AD8491CF01F07
+:104A7800000C2FAD48E8118948C81188F0091800C2
+:104A88005F1CE3CD80C00000800046F800000A14D7
+:104A980000000A188003792C800379C480002D4C0B
+:104AA8008000484080004C5000000B5800000B5913
+:104AB800800379DCD42118961494580CE080009275
+:104AC8004C98118A1697F60B0019F40A0018A56875
+:104AD800F00900294C58F009030B580BC1504C48F9
+:104AE80090093008F0091900C0A4201D1ADA1ADB51
+:104AF8004C081AD84C0CF01F00412FCD0E9B4BA828
+:104B0800118CF01F003F301B8CCCF01F003E189515
+:104B1800C68030098CCA189B0C9CF01F003B8C4A3D
+:104B2800F40C1900C1604B2890093008F0091900ED
+:104B3800C0C4F1DAC0101AD81AD51AD64AD81AD869
+:104B48004B2CF01F002E2FCD0A9CF01F0031D822CD
+:104B58004A5B178AEE070019F40A0018A568F009DD
+:104B680000294A28120891058C49B0293009B03922
+:104B780091242FFAB68A31E8F00A1800F6091700CE
+:104B8800F9B80000F3F80E004978118A4A1811881C
+:104B9800F4081800C101496890093008F0091900A3
+:104BA800C0A4201D1ADA1ADA49281AD849ACF01F0D
+:104BB80000132FCD48E89088E2180010C12049580A
+:104BC80011881AD8488811881AD80B881AD88CC81E
+:104BD8001AD81AD548781AD8490CF01F00082FADF2
+:104BE800D822000000000B58000078D400000A14F6
+:104BF8008003790480037A0C80002D4C8000479C48
+:104C08008002D1DC8000E2B880037A348002D83C8C
+:104C180000000B5980037A7080037A94D401E06A0B
+:104C280005A0300B482CF01F0003D802000078D4F0
+:104C38008002DE9A30084839B2884839B2885EFC6A
+:104C480000000B5A00000B5C5EFC580CF9FC180BBA
+:104C58005EFCD703D401580CC1F0F93900153008AF
+:104C6800F0091800C19148D89088E2180002C130B4
+:104C780048B89088E2180002C0E048A870092FF9E7
+:104C880091091AD948881AD8488CF01F0009300CA5
+:104C98002FEDD802D80ADA0A00000A1400000A1810
+:104CA80000000B6480037B1C80037BA880002D4CD4
+:104CB800D40149A811893008F0091800C2C0580C5D
+:104CC800C0C078D85808C090580BF1FC1813F9F8F0
+:104CD800000EF1FC0813D80249189088E218000267
+:104CE800C1A049089088E2180002C150580CF9B8D0
+:104CF8000000F0091700F9F9100EF9F8100D1AD98B
+:104D08001AD81ADC48881AD8488CF01F0009300CC9
+:104D18002FCDD802D80A000000000A1A00000A1491
+:104D280000000A188003853C80037BC880002D4C56
+:104D3800EBCD4080189749289088E2180002C100FE
+:104D4800201D78D870481AD8F1DAB0081AD81ADBBA
+:104D58001ADC48C81AD848CCF01F000C2FAD6ED802
+:104D6800704858485F0948A8B08930094898B08900
+:104D7800F01F00098F6CE3CF8080000000000A1448
+:104D880080037B5880037BFC80002D4C000078D08A
+:104D980000000B5B80002850D431201D18967877CE
+:104DA8003008F96800154CE89088E2180002C13014
+:104DB8004CC89088E2180002C0E078D8F118007258
+:104DC8001AD81AD778781AD84C781AD84C7CF01F89
+:104DD80000482FCD6CD8F11900726CB80E38EE0867
+:104DE80017B01238F20817B05008109530044C105C
+:104DF80030114BB23FF3F01F0040810C0299F5D5FA
+:104E0800C0106CFB6CDCF01F003DEFDCC008848830
+:104E1800E2180002C1A04B399288E2180002C15082
+:104E28006CD9089AE8C8FFFFE9D8C008F1D7B008DC
+:104E38001AD81AD572481AD81AD91ADA4AA81AD812
+:104E48004AFCF01F002B2FADE6071800C091A19572
+:104E58003009ED6900155815FE9BFFCFC248580769
+:104E6800C3813018ED68001530094A689109C318E4
+:104E780049B89088E2180002C12049A89088E21831
+:104E88000002C0D06C78201DF00501091AD91AD883
+:104E980049581AD849CCF01F00162FCD6C780A183B
+:104EA8008D78C1A848E890093008F0091900C14474
+:104EB8001AD540181AD8F1D7B0081AD86CD81AD809
+:104EC8001AD648981AD8491CF01F00092FADC048B7
+:104ED8005807CCF0CE8B2FFDD832000000000A1402
+:104EE80000000A188003854880037C2080002D4C30
+:104EF80000000B60800028508000B1A880037C4827
+:104F080000000B6480037C7880037CA0D421189770
+:104F1800169514944C589088E2180002C0C0201DC1
+:104F2800F1DAC0101AD81ADB4C181AD84C1CF01F2A
+:104F380000422FCD4C189088E2180002C0D0201DE6
+:104F48004BB81AD84BECF01F003CF7D4C0100A9CA1
+:104F5800F01F003C2FED0E965807C1014B38900901
+:104F68003008F0091900C5F4201D4B181AD84B6CED
+:104F7800F01F00313FFC2FEDD8224AC89088E21874
+:104F88000002C1504AD89088E2180002C1006ED9C8
+:104F9800201D6EE870481AD872481AD81AD91AD73C
+:104FA8004A381AD84A9CF01F00242FAD6CDA580AE8
+:104FB8005F1858055F191268C3605804C3406CFC39
+:104FC800580CC310744A584A5F08587A5F09124847
+:104FD800C051582AC030583AC261EFD4C0100E9A56
+:104FE8000A9BF01F001B6CF93008F2070B0848F801
+:104FF8009088E2180002C0E049089088E218000290
+:10500800C0906CF81AD848A81AD8492CF01F000A82
+:105018002FED8D77490B6CDCF01F00100C9CF01FF6
+:105028000010DA2ADC2A000000000A148003853008
+:1050380080037CE080002D4C00000A188003731860
+:1050480080006B4C80037CF880037D108002DD14A7
+:1050580080037D4C800050688000CFF080004DA018
+:10506800EBCD40F8169314941897300949A8B089E5
+:10507800580CF9B80101F9F81E1549889088E2180A
+:105088000002C1B049687005580CF9B60000F9F67D
+:105098001007F01F00141AD51AD649387008F808F6
+:1050A80001081AD8F1D4C0101AD81AD348F81AD857
+:1050B80048FCF01F00102FAD300948989109580797
+:1050C800C0706E785808C0400E9CF01F000BE3CFEC
+:1050D80080F8000000000B5B00000A1400000B645D
+:1050E8008000285000000B6080037B6880037D5897
+:1050F80080002D4C80004DA0EBCD40C01896F01FCD
+:10510800000E18975BFCC0405C5CF01F000C48C8A0
+:105118009088E2180002C0A0201D1AD71AD6489815
+:105128001AD8489CF01F00092FCD30094888B0894B
+:10513800E3CD80C0800063188000633800000A1443
+:1051480080037B9480037D9480002D4C000078D0F0
+:10515800EBCD40801897491890093008F0091900DC
+:10516800C0C41ADCF1DBB0081AD81ADC48C81AD84F
+:1051780048CCF01F000D2FCD48C811893008F00920
+:105188001800C04148ACF01F00080E9CF01F000931
+:10519800F01F0009E3CD808000000A14800384F426
+:1051A80080037DBC80002D4C00000A1A80037DEC32
+:1051B8008000510080004C3CEBCD40C01897300B6C
+:1051C80078DCF01F001E300B6EDCF01F001D300B6A
+:1051D8006EDCF01F001C6EDCF01F001BEDDCC0084D
+:1051E80049A89088E2180002C0E06ED9F1D6B0084C
+:1051F8001AD872481AD81AD949581AD8495CF01FCF
+:1052080000162FCD3FF8F0061800C0613019493854
+:10521800B089E3CD80C0F01F001248C8900930085B
+:10522800F0091900C084201D48981AD848DCF01FDE
+:10523800000A2FEDE3CD80C08000CFE68000CFF0DC
+:105248008000CFEA8000DEB800000A1480037B8863
+:1052580080037E0080002D4C00000B5A80004C3CDF
+:1052680080037E2CEBCD408018974C289088E2185C
+:105278000002C18078E95809F9BB0000F3FB10046B
+:1052880078D85808F9BA0000F1FA10041ADB1AD9CC
+:105298001ADA1AD81ADC4B881AD84B8CF01F003847
+:1052A8002FAD0E9CF01F00375BFCC0E14B18900936
+:1052B8003008F0091900C084201D4AF81AD84B2C70
+:1052C800F01F002F2FED6EDC580CC210300BF01FB2
+:1052D800002F300B6EDCF01F002E300B6EDCF01F41
+:1052E800002D300B6EDCF01F002C4A289088E21845
+:1052F8000002C0D0201D30081AD86ED870481AD8BD
+:1053080049D81AD84A5CF01F001E2FCD6EEC580CF5
+:10531800C1E0300BF01F001D300B6EECF01F0020B9
+:105328006EECF01F00205C5C49289088E2180002AF
+:10533800C0E0201DF1DCB0081AD86EE870481AD811
+:1053480048D81AD8498CF01F000E2FCD6F2C580C56
+:10535800C060F01F00166F2CF01F00156EFC580C73
+:10536800C030F01F00140E9CF01F0012E3CD8080A7
+:1053780000000A148003856880037E4C80002D4C51
+:105388008000631880037E808000CFE68000CFF025
+:105398008000CFEA8000CFF680037EA48000CFFC97
+:1053A8008000DEB880037ECC80009AAC80009B1021
+:1053B8008002D83CEBCD40801897580CC1014B585F
+:1053C80090093008F0091900C624201D4B281AD866
+:1053D8004B2CF01F00332FEDE3CD80807828580840
+:1053E800C1D14AC89088E2180002C0A078D8704895
+:1053F8001AD84A981AD84ABCF01F00292FED0E9CDB
+:10540800F01F00290E9CF01F00295C5CF01F00288B
+:1054180030094A88B089E3CD808049E89088E2184D
+:105428000002C27078D870481AD849B81AD84A2CDD
+:10543800F01F001B49789088E21800022FED5808E9
+:10544800C1806EE95809F9BB0000F3FB10046ED85F
+:105458005808F9BA0000F1FA10041ADB1AD91ADA56
+:105468001AD81AD748C81AD8494CF01F000D2FADC2
+:105478006ED85808C09070485898C0605808C04006
+:105488000E9CF01F000F300948E8B089E3CD8080FA
+:1054980000000A1480037B0C80037EF480002D4CEE
+:1054A80080037F0C8000526C800063188000633892
+:1054B80000000B5B80037F3880037E4C800051C066
+:1054C80000000B5CEBCD4080189778985808C030E6
+:1054D80078AC5D180E9CF01F00060E9CF01F0005AE
+:1054E8005C5CF01F0005E3CD808000008000526CFA
+:1054F8008000631880006338EBCD40C0169618977B
+:105508004A1890093008F0091900C0C41ADCF1DB08
+:10551800B0081AD81ADC49D81AD849DCF01F001D7F
+:105528002FCD49D811893008F0091800C04149BC6D
+:10553800F01F001858075F183FB9F20618005F09F6
+:105548001268C1C0490890093008F0091900C084E0
+:105558001AD748E81AD8492CF01F000E2FED300949
+:105568004908B0890E9CF01F00106EFC580CC03022
+:10557800F01F000E0E9CF01F000DF01F000DE3CD74
+:1055880080C0000000000A148003850880037DBCE9
+:1055980080002D4C00000A1A80037DEC80037F6098
+:1055A80000000B5B800051008002D83C80004C3C1E
+:1055B800EBCD40C01896300A5C7B149CF01F001A93
+:1055C8001897C131499890093008F0091900C03579
+:1055D800E3CFC0C01AD649681AD8496CF01F001624
+:1055E8003FFC2FEDE3CD80C0189B6D2CF01F0013FE
+:1055F8005C5CC13048D890093008F0091900C084B3
+:105608001AD648B81AD848ECF01F000B2FED0E9C9C
+:10561800F01F000CE3CFC0C00E9CF01F000AE3CFC0
+:1056280080C000008000E76800000A14800384E45A
+:1056380080037F8080002D4C80009E5C80037FACBF
+:105648008000E538EBCD4080189779085808C0C12C
+:10565800304BF01F001BC2A13018EF480040F01F6C
+:1056680000198F6CC23878785808C0B078BBF01F22
+:105678000014C1C16E796EB8F20801088F78C1684C
+:10568800F90900443008F0091900C0B0304BF01F88
+:10569800000CC0C1EF0800442018EF580044C0684F
+:1056A800300BF01F0009E3CD80800E99487A300B4B
+:1056B800169CF01F00078FCCE3CD8080800055B882
+:1056C80080002850800054CC800056D8800028C420
+:1056D800D401F01F0002D8028000564CEBCD40C028
+:1056E8001496189779085808C0E194493048F00989
+:1056F8001900E08B0009F01F001F8F6C3018EF486D
+:105708000040C3186E8A580AC0C08C493048F00956
+:105718001900E08B0007300B0E9CF01F0017C238F1
+:105728008CC814088F886E385808C1D0493CF01FBF
+:105738000014EF180016E06BCCCDEA1BCCCCF00BB4
+:10574800064AA78BF60B002BA56B16183009F20832
+:105758001900C04148BCF01F000AEF0800162FF8D6
+:10576800EF5800160C9CF01F0008E3CD80C0000025
+:1057780080002850800054CC80038D1880002D4C68
+:1057880080038CAC8000E538D431204DFACEFFCCB4
+:105798001891503B502A129410967C137C227C302E
+:1057A8007C4850187C5850087C055819E088001629
+:1057B800FEF8041C90093008F0091900E08402057D
+:1057C800201DFEF8040E1AD8FEFC040CF01F01037D
+:1057D8003FFC2FEDE08F01FA5806C151FEF803F0A7
+:1057E80090093008F0091900E08401EF201DFEF847
+:1057F80003E21AD8FEFC03E8F01F00F83FFC2FED87
+:10580800E08F01E45803C151FEF803C49009300841
+:10581800F0091900E08401D9201DFEF803B61AD852
+:10582800FEFC03C0F01F00ED3FFC2FEDE08F01CE22
+:1058380034CB301CF01F00EC1897C151FEF80390D0
+:1058480090093008F0091900E08401BF201DFEF816
+:1058580003821AD8FEFC0394F01F00E03FFC2FEDF2
+:10586800E08F01B49905B821B8369924F3D3C01054
+:10587800F1D6C010F2080248997840289998403823
+:1058880099A89942993099B95802C3403058F958A3
+:105898000044F01F00D7EF4C0048C0B1201D1AD7B4
+:1058A800FEFC0350F01F00CD3FF82FEDE08F014ABA
+:1058B8006E285808C1718EAA0E9BF01F00CF5C5C41
+:1058C800C0B0201D1AD7FEFC0332F01F00C43FF8F9
+:1058D8002FEDE08F01370E9CF01F00C93008E08FD4
+:1058E80001310E9AFEFB031CF01F00C73008E08F41
+:1058F8000129F01F00C68FDCC141FEF802D29009D1
+:105908003008F0091900E084011C1AD7FEF80300DA
+:105918001AD8FEFC02FEF01F00B13FF82FEDC119A6
+:105928006EBCF01F00BD8FFCC141FEF802A29009B9
+:105938003008F0091900E08401041AD7FEF802D0F3
+:105948001AD8FEFC02D6F01F00A53FF82FEDCF981D
+:105958000E9B6EDCF01F00B2F01F00B26E285808D4
+:10596800C691FEFB02C26EDCF01F00B0FEFB02C057
+:105978006EDCF01F00B0FEFB02BE6EDCF01F00AF55
+:10598800304AFEFB02BA6EDCF01F00AE3009FEF8AA
+:1059980002B6B089FEF802389088E2180002C2E028
+:1059A800201D6EF81AD86ED81AD8FEF802621AD8D6
+:1059B800FEFC0298F01F0089FEF802149088E21895
+:1059C80000022FCD5808C1A06EE95809F9BB0000A4
+:1059D800F3FB10046ED85808F9BA0000F1FA100465
+:1059E8001ADB1AD91ADA1AD81AD7FEF802221AD8E4
+:1059F800FEFC025CF01F00792FADFEF902568EAA5C
+:105A08000E9B6EDCF01F00945C5CC0313008C998B6
+:105A18004EF890093008F0091900E08400921AD76E
+:105A28004FB81AD8FEFC0234F01F006C3FF82FED77
+:105A3800C8884E789088E2180002C2206ED81AD81A
+:105A48006EE81AD81AD74F281AD8FEFC0212F01F8F
+:105A580000634DF89088E21800022FCD5808C10065
+:105A68006ED972481AD8F31800241AD8F318001CF3
+:105A78001AD84E781AD84FBCF01F00582FCD8EAACE
+:105A88004F9B6EDCF01F00795C5CC1404D089009AB
+:105A98003008F0091900C544201DF1DCB0081AD8F7
+:105AA8001AD74DB81AD84F2CF01F004C3FF82FCDFD
+:105AB800C488E06B00FF6EDCF01F006E8FECC10144
+:105AC8004C3890093008F0091900C3A41AD74D08BA
+:105AD8001AD84E9CF01F00413FF82FEDC3286ED90D
+:105AE800123CC1214BA890093008F0091900C28462
+:105AF800201D1ADC1AD74C681AD84E0CF01F003734
+:105B08003FF82FCDC1E84B289088E2180002C12049
+:105B1800784A5809F9B80000F3F810041ADA1ADCC0
+:105B28001AD81AD91AD74BA81AD84C9CF01F002B90
+:105B38002FAD4D3B6EECF01F00533008C0283FF8E6
+:105B48005808C0F04A2890093008F0091900C374B1
+:105B5800201D4A081AD84CCCF01F00202FEDC2F89F
+:105B680049B89088E2180002C2006E2A580A4C7898
+:105B78004C79580AF00917106E4B580B4C5A4C6860
+:105B8800580BF40817001AD91AD88EA81AD86EB864
+:105B98001AD88EB81AD86ED81AD81AD748D81AD898
+:105BA8004BECF01F000E2F8D400891074018EF684E
+:105BB80000143018EF680015300CC0780E9CF01FE8
+:105BC80000383FFCC0283FFC2FCDD83200000A1413
+:105BD8008003852080037FD480002D4C80037FF4D0
+:105BE800800380148002D1DC8003803880009AE42E
+:105BF8008003807080009C24800380948000564C31
+:105C0800800056E480009ADC8000DD5C80037B0025
+:105C1800800380B48002D854800380E08000CFE6FF
+:105C280080004C3C800055008000CFF68000612C3D
+:105C38008000CFEA800050688000CFF080005FDCF1
+:105C48008000D000000078D08003811080037E4C53
+:105C580080004D388000DD6C8003813080038158DE
+:105C6800800381848003A1BD8000D138800381B086
+:105C78008000D5B0800381E88003820C80005DC479
+:105C88008000CFFC80038248800382688003826C96
+:105C9800800375B480038270800382748000526C24
+:105CA800D431206D1897169630194BA891093002F7
+:105CB8005002E06004005010E06807D050285032CD
+:105CC8004B554B614B631294C20826CC58ACE08B01
+:105CD800001DE20C032F0892C1883002C168660CCF
+:105CE800F01F0030E1DCB010C1085004C0E8660CB9
+:105CF800F01F002C5C8C501CC0885034C068660CA7
+:105D0800F01F00285C8C502C0A9A0C9B0E9CF01FEC
+:105D180000265BFCCDB15802C21149E87008103763
+:105D2800E089000A201D4A181AD84A1CF01F0021D1
+:105D38002FEDC2D8EC08032BFACCFFECF01F001EA5
+:105D480040585808C0301099C0A8201D49781AD862
+:105D5800497CF01F00182FEDC1A83009300B504BBB
+:105D68005059FAC8FFF01AD81ADB40281AD84068E8
+:105D78001AD8F1D0C0101AD81AD9FB18001E0499E5
+:105D8800169AFB1C0022F01F000D2FAD2FADD83A3C
+:105D98000000788C800382B080037AD40000789069
+:105DA8008002D1CC8002D828000000E4800382BCA5
+:105DB80080002D4C8000279080005790EBCD40C08C
+:105DC800169718964AB89088E2180002C1E0201D7C
+:105DD8001ADB1ADC4A881AD84A8CF01F00294A585C
+:105DE8009088E21800022FCD5808C0F06E481AD8E3
+:105DF800EF1800241AD8EF18001C1AD849E81AD846
+:105E08004A0CF01F001F2FCD49F811893008F009FE
+:105E18001800C120497890093008F0091900C274A7
+:105E2800201D1AD76CD81AD849381AD8497CF01FBF
+:105E380000142FCDC1C830194938B089301B0E9CC9
+:105E4800F01F001330094938B0898DD7492B0E9CB3
+:105E5800F01F0012492B6CDCF01F0012304A492B4E
+:105E68006CDCF01F0012F01F00128D6CE3CF80C0B5
+:105E780000000A1480038558800382C080002D4CDE
+:105E8800800382E800000B5C8003830C8000CFE075
+:105E980000000B5B8000612C8000CFEA8000515825
+:105EA8008000CFF680005EB88000D00080002850C7
+:105EB800EBCD40C016961897580CC08078785808D3
+:105EC800C0504B9913882FF8B2884B78118A304804
+:105ED800F00A1800E088001E4B4890093008F009C5
+:105EE8001900C0A41ADA1ADC1AD64B181AD84B1C97
+:105EF800F01F00312FCD30094AB8B089301B0C9CF7
+:105F0800F01F002EF01F002EE06C00FBE3CD80C0D8
+:105F18004A6890093008F0091900C1344A98118874
+:105F28005807F9B90000EFF9100D1AD81ADA1ADC77
+:105F38001AD61AD949E81AD84A3CF01F001F2FADC3
+:105F48005807C0400E9CF01F002149E8118930080D
+:105F5800F0091800C2600C9CF01F001D3FF8F00CFF
+:105F68001800C05130194978B089C038F01F0014A2
+:105F780048E89088E2180002C1404928118858076B
+:105F8800F9BC0000EFFC100D1AD81ADC1AD64888A4
+:105F98001AD8490CF01F0008300C2FCDE3CD80C073
+:105FA800E3CF80C000000B5B00000A1480037B284D
+:105FB8008003833880002D4C8000DB2880004C3C17
+:105FC80000000B5A8003836080004DA08000DEB87B
+:105FD80080038398EBCD40C0169618974C481189DA
+:105FE8002FF9F5D9C008B08A3088F00A1800E0887F
+:105FF800001F4C0890093008F0091900C0D4201D72
+:106008001ADA1ADC78D81AD81ADB4BB81AD84BBC6B
+:10601800F01F003B2FAD30094B58B089301B0C9C4A
+:10602800F01F0038E06C00FBE3CD80C04B189009EE
+:106038003008F0091900C1744B3811894B381188A0
+:10604800580CF9BB0000F9FB100D201D1AD91AD8FD
+:106058001ADA1ADC1AD61ADB4A781AD84ACCF01F90
+:1060680000282F8D5807C0A04A7811893008F009F8
+:106078001800C0400E9CF01F00274A4811893008BC
+:10608800F0091800C3200C9CF01F00233FF8F00C07
+:106098001800C051301949D8B089C0F80E9CF01FBB
+:1060A800001F6EFC580CC030F01F001D0E9CF01F26
+:1060B800001C30094958B08948E89088E218000265
+:1060C800C140492811885807F9BC0000EFFC100DA1
+:1060D8001AD81ADC1AD648881AD8492CF01F000892
+:1060E800300C2FCDE3CD80C0E3CF80C000000B5B28
+:1060F80000000A1480037B78800383C880002D4C3D
+:106108008000DB28000078D000000B5A800383F45D
+:1061180080004DA08000DEB8800051008002D83C8D
+:1061280080038398EBCD40F816941497129518962F
+:106138003009F20518005F03580A5F18E7E80008FD
+:10614800F2081800C5504BF89088E2180002C0F019
+:10615800201D94C81AD8F1D5B0081AD81ADA1ADB53
+:106168004B981AD84B9CF01F003A2FAD335CF01FA8
+:1061780000398EC86C8910098D896C385808C0613F
+:106188004B589088E2180002C2304AE89088E2181A
+:106198000002C0908EC81AD84AB81AD84AFCF01F14
+:1061A800002C2FED4AC89088E2180002C0C0201DBC
+:1061B8004A581AD84AACF01F00268ECB6E1CF01F26
+:1061C80000292FEDED0800162FF8ED580016089A53
+:1061D800ED3B00140E9CF01F00248ECB089CF01F92
+:1061E80000230E9CF01F0022335CF01F002258078A
+:1061F8005F08E7E80008C10049289088E218000213
+:10620800C080201D49081AD849BCF01F00112FED85
+:106218000C9CF01F001A5805C12048A890093008A6
+:10622800F0091900C0C4201D1AD7F1D5B0081AD832
+:1062380048581AD8492CF01F00062FCDE3CF80F814
+:1062480000000A1480037B348003843480002D4CC2
+:1062580080012F3400000A188003845C80037318BF
+:1062680080006B4C80004ABC8000D2FC8000E5387E
+:1062780080012F188003846C800051C080038488BB
+:10628800EBCD40F830064955495349640C9CF01F42
+:106298000016C1D018978A88E2180002C0F078E981
+:1062A80078DA201D72481AD81AD974481AD81ADA16
+:1062B8001AD4069CF01F000D2FAD0E9CF01F000C89
+:1062C8000E9CF01F000C5C5CF01F000B2FF658466C
+:1062D800CDE1E3CD80F8000000000A148003849C1F
+:1062E80080037B448000630080002D4C8000526C4A
+:1062F80080006318800063383038F00C1800E0889C
+:1063080000035EFD4828F00C032C5EFC00007E7C38
+:10631800189A580CC0A04869300C720814385E0CE2
+:106328002FFC2FC9584CCFA15EFE000000007E7CD8
+:106338003038F00C18005EBC48393008F20C0928D7
+:106348005EFC000000007E7C4828910C5EFC00008A
+:10635800000001EC5EFFD7031988B6881998EA187F
+:10636800FFFFE818FF80B6983018B6A8B6B8580AE4
+:10637800C0401588B6C8C04848687008B6C83EE826
+:10638800B6D83008B6E83068B208302C5EFC000099
+:10639800000001ECD401129E1988B6881998EA18F1
+:1063A800FFFFE818FF80B6983018B6A8B6B8580AA4
+:1063B800C0D0158A1099F00A1800E06800FFF20AA8
+:1063C8001800F9B80001B6C8C0383018B6C83EE899
+:1063D800B6D83008B6E83068BC08302CD802D703E5
+:1063E800EBCD4080202D169E12974A9870085808C9
+:1063F800C071FACAFFF814F8F01F0026C4481988BB
+:10640800B6881998EA18FFFFE818FF80B698303860
+:10641800B6A849FB76087019304ABCBABCF9F1D95C
+:10642800C108BCE8F1D9C208BCD8B989BCC976088A
+:106438007029FD6A0008FD69000CF1D9C108FD68E2
+:10644800000BF1D9C208FD68000AB989FD69000985
+:1064580076087039FD6A000DFD690011F1D9C1088F
+:10646800FD680010F1D9C208FD68000FB989FD69FF
+:10647800000E3EE8FD6800123008FD680013313850
+:10648800AE08302C2FEDE3CD8080000000001640D0
+:106498008000639C19AB580BE0890004300AC0B82F
+:1064A8002FDC300A149919882FF8100A100C2FF9CC
+:1064B8001639CFA55EFAD40119AE580EE08900044A
+:1064C800300BC0F82FDC300B169A19891998F1E9AE
+:1064D80010882FE8F00B000B100C2FFA1C3ACF6530
+:1064E800169CD802EBCD40E0189E1495300895080C
+:1064F800580BE08900041097C32819893E08F00951
+:106508001800C2513007C21812961338F408180040
+:10651800C2215807C19049E890093008F0091900CC
+:10652800C134201DFC07000811981AD81ADB1AD7A5
+:10653800498890881AD849881AD8498CF01F0018B9
+:106548000C9E2FADC0280C9E8B07C1D8F8C9FFFF41
+:1065580030073E0A2FF70E3BFE99FFD848C890092E
+:106568003008F0091900C035300EC0D8201D1AD7E0
+:10657800488890881AD848881AD848ACF01F00086C
+:10658800300E2FCD1C9CE3CD80E0000000000A14E3
+:10659800000015D48003876C800387B080002D4CE1
+:1065A800800387D4EBCD40E0202D169712954D88B7
+:1065B80070085808C071FACAFFF814F8F01F00559F
+:1065C800CA281988B6881998EA18FFFFE818FF80C2
+:1065D800B6983018B6A819CC3098F00C1800E08896
+:1065E80000134CD890093008F0091900C035302C38
+:1065F800C8A81ADC4C981AD84C9CF01F004A302CBA
+:106608002FEDC818E04A0032C2F0E04A0033C52036
+:10661800A36C4C587008F00C0308F1360020B6B68D
+:106628000C9B5806C100EECAFFFC30094BEE7C08F3
+:10663800F00C0308F009070814C82FF9F20B190029
+:10664800FE9BFFF74B489088E2180010C5204B6866
+:106658007008F00C03081AD84B081AD84B3CF01FE6
+:1066680000312FEDC468A36C4AF87008F00C0308D9
+:1066780070C93048B6B8B6C9F1D9C108B6D8F1D989
+:10668800C208B6E8B989B6F94A389088E218001005
+:10669800C0313046C2E84A487008F00C030870C898
+:1066A8001AD849E81AD84A2CF01F001E30462FED98
+:1066B800C2083018B6B8A36C49B87008F00C0308C3
+:1066C800F1380038B6C849489088E2180010C0313F
+:1066D8003016C0F849487008F00C0308F138003843
+:1066E8001AD848E81AD8493CF01F000E30162FED8A
+:1066F800EE0600093EE8B2C83008B2D8ECC8FFFB85
+:10670800AA08302C2FEDE3CD80E0000000001640F1
+:106718008000639C00000A1480038578800387EC5E
+:1067280080002D4C000013708003880C8003881CA7
+:106738008003882CD421202D1895169712944A8806
+:10674800118B580BC0313FF6C0D84A6A1589159885
+:10675800B168F1E9118815A9F1E9108815B9F3E8CC
+:1067680010064A189088E2180004C0A0201D1ADB01
+:106778001AD649E81AD849ECF01F001E2FCD49E86F
+:1067880070085808C0A1FACAFFF814F808990E9BB7
+:106798000A9CF01F001AC2080B88AE880B98EA18EA
+:1067A800FFFFE818FF80AE983018AEA83048AEB8A2
+:1067B800AEF6F1D6C108AEE8F1D6C208AED8EC08FC
+:1067C8001618AEC83EE8EF6800083008EF68000900
+:1067D8003098A808302C2FEDD82200000000163D74
+:1067E80000007E8C00000A14800386048003883C25
+:1067F80080002D4C000016408000639CD401580B8B
+:10680800C0313FFBC0C817891798B168F1E91188F2
+:1068180017A9F1E9108817B9F3E8100B48F9F60839
+:106828001618B288F6081610B298F6081608B2A814
+:10683800B2BB48B89088E2180004C0A0201D1ADB3B
+:106848001ADC48881AD8488CF01F00082FCD301958
+:106858004878B089D802000000007E8C00000A1435
+:10686800800386E08003886C80002D4C0000163D74
+:10687800EBCD4080169749089088E2180004C0E0E4
+:10688800201D48E870081AD848D811881AD848D85E
+:106898001AD848DCF01F000D2FCD48981189300810
+:1068A800F0091800C0303038C038484811B8AE88F0
+:1068B800E3CF908000000A14000001EC00000A1ADF
+:1068C800800385E0800388A480002D4CEBCD40C078
+:1068D8001297109648F9300E72085808C0602FFEBB
+:1068E8002EC959EECFA1C03859EEC06148ACF01F8F
+:1068F800000BE3CFC0C0FC0E00284869F20800284E
+:10690800B0CC910B912A9137F1660010E3CF80C08B
+:1069180000001378800388C480002D4CEBCD4068BC
+:106928004EC330283009069A4EBB310CF01F006B5D
+:1069380030283009069A4EAB311CF01F0068302809
+:106948003009069A4E7B312CF01F0064301830094C
+:106958004E5A4E6B320CF01F00614E5530183009FC
+:106968004E4A0A9B321CF01F005D301830094E2A2F
+:106978000A9B322CF01F00594E06301832390C9AF7
+:106988000A9B129CF01F0055301832490C9A0A9B3A
+:10699800129CF01F0052301832590C9A0A9B129C14
+:1069A800F01F004E301832690C9A0A9B129CF01F97
+:1069B800004B30283009069A4D1B336CF01F0047F6
+:1069C800301830094CFA0A9B327CF01F00443028FA
+:1069D8003009069A4CCB330CF01F00404CB63018E7
+:1069E80033390C9A0A9B129CF01F003C301833195B
+:1069F8000C9A0A9B129CF01F0039301833290C9A04
+:106A08000A9B129CF01F003530283009069A4C0B5F
+:106A1800334CF01F0032301830094BEA0A9B335CC4
+:106A2800F01F002E30283009069A4BBB328CF01F1D
+:106A3800002B30283009069A4B8B32DCF01F0027D8
+:106A480030283009069A4B6B32ECF01F00243018BE
+:106A580030094B4A0A9B329CF01F0020301830093D
+:106A68004B1A0A9B32CCF01F001D301830094AFA25
+:106A78000A9B32BCF01F001930483009069A4ACBED
+:106A8800344CF01F0016301830094AAA0A9B32AC61
+:106A9800F01F0012301830094A7A0A9B345CF01F44
+:106AA800000F301830094A5A0A9B32FCF01F000BBD
+:106AB800301830094A2A0A9B337CF01F0008301826
+:106AC80030094A0A0A9B338CF01F0004E3CD806822
+:106AD8008000639C80008194800068D480008018C6
+:106AE8008000825480006360800068788000635C66
+:106AF800800063E88000791080007820800077ACFF
+:106B08008000756080007A7C800065AC800079B474
+:106B18008000673C80007F3480007BB880007B0C5D
+:106B2800800074B480007110800072E080007A9850
+:106B380080007264800070288000738480006FA4D5
+:106B480080006EB4D4211895EDDBC0105806E08A99
+:106B5800000F30074884201DEA0707081AD8089C48
+:106B6800F01F00062FF72FED0C37CF65484CF01FAC
+:106B78000003D822800388DC80002D4C80038CAC75
+:106B8800D42118961695F01F002518975F0418361B
+:106B98005F18E9E81008C0F04A18908959355FA8CD
+:106BA800F1E902F8C060F7D5C0100C9CF01F001D79
+:106BB8005804C3110F893E08F0091800C2C10F9983
+:106BC8003008F0091800C2751298E2180040C05148
+:106BD8000E9CF01F0015C0480E9CF01F0014EE0C10
+:106BE800000811BC3EE8F00C1800C021DA2A48C899
+:106BF80090093008F0091900C0E4201D1ADC48C8C3
+:106C080090881AD848B81AD848BCF01F000C300C25
+:106C18002FCDD822D82A0000800064EC00000A1486
+:106C280080006B4C8000649C800064BE000015D41A
+:106C38008003875C800388E480002D4CD4013038C1
+:106C4800F00C1800E08B00054898F00C092B4898C8
+:106C58009088E2180002C0A0201D1ADB1ADC4868E0
+:106C68001AD8486CF01F00062FCDD80200007E7C91
+:106C780000000A148003866C8003890880002D4C6C
+:106C88003009484810A910A910A991095EFC000014
+:106C980000007E7CEBCD4040206D308A4D4BFACC15
+:106CA800FFF0F01F00544D489088F1D8C001C08013
+:106CB800201D4D281AD84D2CF01F00522FED304BB7
+:106CC800FACCFFF0F01F00503009BA89EE78424044
+:106CD80050183088FB680008FB6900093048FB68D9
+:106CE800000AFB69000BFB69000CFB69000D300A08
+:106CF800308BFE7C2400F01F0045C1104BE89088C3
+:106D0800E2180004C031301CC6F8201D4BB81AD850
+:106D18004BFCF01F003C301C2FEDC668E06AF98080
+:106D2800EA1A03371A9BFE7C2400F01F003A582CFD
+:106D3800C0E14B1890093008F0091900C084201DE3
+:106D48004AE81AD84B4CF01F002F2FEDD303300A16
+:106D5800E06B01204B1CF01F0032D503E1B80000A6
+:106D6800E6180001C131D303FE7924007258301AA5
+:106D7800F1DAD00193587258F1DAD0C193587258A9
+:106D8800F1DAD0819358D503C108FE7924007258EE
+:106D9800301AF1DAD00193587258F1DAD0C1935809
+:106DA8007258F1DAD0819358FE7C2400F01F001D40
+:106DB800F01F001D364A300B49CCF01F001DE0665D
+:106DC80004000C9A300B49BCF01F00190C9A300BC8
+:106DD800499CF01F0017F01F0019300CF01F001815
+:106DE800F01F0018300C2FADE3CD8040800386588B
+:106DF8008002DD1400000A148003872C8003892098
+:106E080080002D4C80012EA4800128C48003893481
+:106E1800800129EA80038958800089A080012D8893
+:106E280080012AB480006924000015D88002DE9A07
+:106E380000000F6800000B6880006C8880006350B9
+:106E480080004C24D401581CC081303CF01F000F36
+:106E5800334CF01F000FC078304CF01F000C334C3F
+:106E6800F01F000C48C89088E2180004C0D0201D0C
+:106E780048A870081AD848A81AD848A81AD848ACF8
+:106E8800F01F000A2FCDD8028000635080012F1810
+:106E980080012F3400000A14000001EC8003871CD5
+:106EA800800386B88003897880002D4CEBCD40E0C4
+:106EB800FACD0108169612954B4870085808C0710B
+:106EC800BAF8FACAFFF9F01F0032C5B81988B688AF
+:106ED8001998EA18FFFFE818FF80B6983019B6A984
+:106EE80019B8F2081800C2E119C73FF8F0071800EE
+:106EF800C290E06A00FF300BFACCFFF8F01F0025C3
+:106F08000E995807E08A000A3008FACAFFF8F40810
+:106F18000B082FF81238CFC5ACB70E985807C270B7
+:106F2800FAC9FFF8ECCBFFFC20185C78FACAFEF827
+:106F3800F4080008F0CA00FF133816C81439CFD176
+:106F4800C1684958700CF01F0015EFDCC008ACB7D9
+:106F58000E9BC0D0ECCAFFFC300948FC7808F00949
+:106F6800070814C82FF9F6091900CF93EC07000990
+:106F78003EE8B2C83008B2D8EEC8FFFBAA08302CE9
+:106F88002BEDE3CD80E00000000016408000639CFC
+:106F98008002DE9A000000E08002E3E0EBCD40C012
+:106FA800202D1697129649B870085808C071FACA69
+:106FB800FFF814F8F01F0018C2981988B6881998B5
+:106FC800EA18FFFFE818FF80B6983018B6A84938C5
+:106FD800700CF01F00135C5CAEBC189BC0D0EECEEA
+:106FE800FFFC300A48D97208F00A07081CC82FFAB3
+:106FF800F60A1900CF93EE0C00093EE8B2C8300833
+:10700800B2D8F6C8FFFBAC08302C2FEDE3CD80C01A
+:10701800000016408000639C000000E08002E3E06E
+:10702800D421202D1897169612954B4870085808A9
+:10703800C071BA98FACAFFFFF01F0031C5B819B974
+:107048003018F0091800C551F8C4FFFC098C303815
+:10705800F00C1800E08B004EFACAFFFEFACBFFFCDA
+:10706800F01F0028C3500F88AC880F98EA18FFFF5C
+:10707800E818FF80AC983018ACA81BA8ACB89A18D0
+:10708800ACC85808C130300BF3DBC010EC09000A5B
+:107098004018F0090708B4D8F6C8FFFFF7D8B010B1
+:1070A8009A18F6081900FE9BFFF15C78EC080008B6
+:1070B8003EE9B0E99A98EC0800083009B0F99A1846
+:1070C8002F98AA08098CF01F0010302CC1380F889F
+:1070D800AC880F98EA18FFFFE818FF80AC983009D1
+:1070E800ACA93EE8ACB8ACC93048AA08302CC028D6
+:1070F800302C2FEDD8220000000016408000639C41
+:107108008000477C800048F8EBCD40F8202D189689
+:10711800169412934CB870085808C071BAE8FACAA5
+:10712800FFFAF01F0049C7A8F8C9FFFDC3D01388AC
+:107138002FF8F2080007C3800F893018F0091800EB
+:10714800C7710F993EE8F0091800C7214BF890095C
+:107158003008F0091900C7241AD74BD81AD84BDCC5
+:10716800F01F003D2FEDC6480F990FA8F1E91088D0
+:10717800EBD8B010C57815893018F0091800C1513E
+:1071880015993EE8F0091800C1014B08900930082C
+:10719800F0091900C0A41ADA4AD81AD84ADCF01F34
+:1071A800002E2FEDC02830050DB93018F009180051
+:1071B800C3410DCC3038F00C1800E08B002FF5D50A
+:1071C800C008FACBFFF9F01F0025C1600D88A88818
+:1071D8000D98EA18FFFFE818FF80A8983018A8A8AB
+:1071E800A8B81BF8A8C83EE8A8D83008A8E83068AE
+:1071F800A608302CC1380D88A8880D98EA18FFFF1A
+:10720800E818FF80A8983009A8A93EE8A8B8A8C936
+:107218003048A608302CC028302C2FEDE3CD80F85C
+:107228003005F6C8FFFFEE08000ACA61CBEB0F8BEA
+:107238003028F00B1800CF51C98B0F8B3005CF2B9E
+:10724800000016408000639C00000A148003870831
+:107258008003898880002D4C8000492CEBCD40C0EC
+:10726800202D16971296499870085808C071FACAC6
+:10727800FFF814F8F01F0016C2581988B688199834
+:10728800EA18FFFFE818FF80B6983019B6A919B8B0
+:10729800F2081800C0C119CC3038F00C1800E08B87
+:1072A8000007F01F000CF01F000CC028300C30182D
+:1072B800AEB8AECC3EE8AED83008AEE83068AC0820
+:1072C800302C2FEDE3CD80C0000016408000639C79
+:1072D8008000630080004C5CEBCD40C0202D1697E9
+:1072E80012964A0870085808C071FACAFFF814F8CC
+:1072F800F01F001DC3281988B6881998EA18FFFFDF
+:10730800E818FF80B6983019B6A919B8F20818001D
+:10731800C0B119CC3038F00C1800E08B0006F01F13
+:1073280000135F19C02830093018AEB8AEC93EE85E
+:10733800AED83008AEE83068AC0848D89088E21873
+:107348000004C031302CC0981AD948A81AD848ACC3
+:10735800F01F000A302C2FED2FEDE3CD80C0000088
+:10736800000016408000639C800049F000000A1469
+:1073780080038744800389A480002D4CD421202DCC
+:10738800169712954BE870085808C071FACAFFF8AA
+:1073980014F8F01F003CC7181988B6881998EA181D
+:1073A800FFFFE818FF80B6983019B6A919B8F20897
+:1073B8001800C4A119CC3038F00C1800E08B004537
+:1073C800F01F00311894C400F01F0030C1E1301BD9
+:1073D800089CF01F002F18964AE89088E2180004CD
+:1073E800C3404AD89088E2180004C2F068D8201D2B
+:1073F8001ADC70491AD91AD81AD44A881AD84A8C69
+:10740800F01F00282FADC218301B089CF01F002069
+:1074180018964A089088E2180004C17049E89088D4
+:10742800E2180004C12068D91ADC68E870481AD844
+:1074380072481AD81AD91AD449881AD849ACF01FF0
+:1074480000192FADC02830063018AEB8AEC63EE8D9
+:10745800AED83008AEE83068AA0848E89088E21844
+:107468000004C031302CC0981AD648C81AD848FC35
+:10747800F01F000C302C2FED2FEDD8220000164005
+:107488008000639C8000630080004C5280004CB8F0
+:1074980000000A1400000A1880038620800389BCB3
+:1074A80080002D4C800389F080038A34EBCD40C0E6
+:1074B800202D169712964A1870085808C071FACAF3
+:1074C800FFF814F8F01F001EC3481988B6881998E9
+:1074D800EA18FFFFE818FF80B6983019B6A919B85E
+:1074E800F2081800C0D119CC3038F00C1800E08B25
+:1074F8000008F01F0014300BF01F0013C028300CD8
+:107508003018AEB8AECC3EE8AED83008AEE8306839
+:10751800AC0848E89088E2180004C031302CC098C4
+:107528001ADC48B81AD848BCF01F000B302C2FEDD5
+:107538002FEDE3CD80C00000000016408000639C62
+:107548008000630080004CB800000A14800386F0B5
+:1075580080038A3480002D4CD431204D1891169226
+:107568005009FEF8020611893008F0091800C1F127
+:107578001988B6881998EA18FFFFE818FF80B698A6
+:107588003009B6A93EE8B6B8B6C930484009B208CD
+:107598004F789088E2180004E08000E4201D4F58DE
+:1075A8001AD84F5CF01F00752FEDCDB8FACCFFF458
+:1075B800F01F0073403060185808C1F10388A48890
+:1075C8000398EA18FFFFE818FF80A4983009A4A9D7
+:1075D8003EE8A4B8A4C930484009B2084E4890888B
+:1075E800E2180004E08000BE201D4E281AD84E5C28
+:1075F800F01F00622FEDCB5858B8F9B8020A50189E
+:107608004E1870185808C0E030060C994DE76E08FF
+:10761800F009032CF01F005D2FF60C996E18103638
+:10762800CF734D966C0CF01F005930088D18601BF5
+:10763800580BC310A36B301CF01F00558D0CC050A5
+:1076480060185808C061C2784D2CF01F004CC23831
+:1076580030070E954CC3A3656008F0050304660661
+:107668000A06344CF01F004C8D0C6608F005030C1C
+:10767800580CC0514C9CF01F0041C0D8344A089B9C
+:10768800F01F004766182FF887182FF70E95601817
+:107698001037CE230388A4880398EA18FFFFE81858
+:1076A800FF80A4984018A4A85808E0890004303442
+:1076B800C4D8303430034B4530004AD1E60C1502AB
+:1076C8006A08F00C030AF5390020F2C8FFFFEFD86A
+:1076D800C008F4090B00E4040B070E9BC110E8C8AE
+:1076E800FFFFE408000A30096A08F00C0308F009F3
+:1076F800070814C82FF9F20B1900FE9BFFF7EEC814
+:10770800FFFF0808E9D8C0088288E2180004C19081
+:107718006A08F00C0306202D306AECCBFFDF1A9CB8
+:10772800F01F001F6CC81AD8ED3800381AD81AD7BD
+:107738001AD61AD348F91AD949ACF01F00102F8D60
+:107748002FF340180638FE99FFBB3EE8E4040B0807
+:10775800E40400093008B298E8C8FFFF4009B208FD
+:10776800302C2FCDD832000000000A1700000A1470
+:107778008003863C80038A4880002D4C80013414A5
+:1077880080038A64000013708002D83C8002D1DC38
+:1077980080038A808002D85480038AA88002DD147E
+:1077A80080038ACCD40149689088E2180004C0801C
+:1077B8001ADC49481AD8494CF01F00142FED4948E3
+:1077C80011893008F0091800C021DC0A300949087D
+:1077D800B089F01F0010581CC10048989009300863
+:1077E800F0091900C025DA0A1ADC48681AD848AC2A
+:1077F800F01F0006301C2FEDD802000000000A140C
+:10780800800385B480038AF480002D4C00000A1799
+:107818008001440880038B14EBCD40E0202D16979F
+:10782800149612954B6870085808C071FACAFFF888
+:1078380014F8F01F0034C5F81988B6881998EA18A2
+:10784800FFFFE818FF80B6983018B6A8F01F002E82
+:10785800C430E0460025C2B0E0460026C360E046DA
+:107868000024C120F93E0020AEBE1C9B580EC390D8
+:10787800EECAFFFC3009F809070814C82FF9F60901
+:107888001900CFA3C2E83068AEB82DACEECAFFFC31
+:107898003009306B198814C8F2C8FFFFF3D8B0104C
+:1078A800201CF6091900CF71306EC1B878C930486C
+:1078B800AEB8AEC9F1D9C108AED8F1D9C208AEE8A0
+:1078C800B989AEF9304EC0D83018AEB8F93800389A
+:1078D800AEC8301EC0683018AEB83008AEC8300E1A
+:1078E800EE0E00093EE8B2C83008B2D8FCC8FFFB6B
+:1078F800AA08302C2FEDE3CD80E0000000001640F0
+:107908008000639C80013E8CEBCD40E0204D1896B2
+:10791800169712954A3870085808C071BAF8FACA0A
+:10792800FFF9F01F0021C3A81988B6881998EA182A
+:10793800FFFFE818FF80B6983018B6A83068B6B8C8
+:10794800FACCFFF8F01F0019581CC0B03008BAF87C
+:107958000A99FACAFFF90E9B0C9CF01F0013C1E8A4
+:10796800FB38000DAEC8FB38000CAED8FB38000B56
+:10797800AEE8FB38000AAEF8FB380009EF680008EB
+:10798800FB380008EF6800093EE8EF68000A300895
+:10799800EF68000B30B8AA08302C2FCDE3CD80E07B
+:1079A800000016408000639C80013638EBCD4040D3
+:1079B800FACD01001696173A1A9CF01F00250D887B
+:1079C800FAC9FF0010093008F368FF004A189088C8
+:1079D800E2180004C0901A981AD849F81AD849FC35
+:1079E800F01F001F2FED49FB3009B689B699B6A9DB
+:1079F800B6B949D8B08949DA1A9CF01F001D5C5CF9
+:107A0800C040E06C00FFC20849289088E2180004D2
+:107A1800C170201D493A15891598B168F1E9118896
+:107A280015A9F1E9108815B910491AD9FAC8FFF84B
+:107A38001AD848981AD848FCF01F00092FCD3019D9
+:107A48004898B089301C2C0DE3CD80408002DD14AD
+:107A580000000A148003879480038B2480002D4C37
+:107A680000007E8C0000163D8000680480010A0436
+:107A780080038B48D401F01F00061898581CE06C4E
+:107A880000FF5818F9BC0001D802000080013EDC54
+:107A9800EBCD40C018961697335CF01F0017582698
+:107AA800C2210F880F99F3E810893018F0091900DE
+:107AB800C1A10FACF01F00110FB8A9680FCA100AB6
+:107AC8005C7AEECBFFFBF01F000E1896335CF01FBC
+:107AD800000D5816E06800FFF00C1710F9BC000103
+:107AE800E3CD80C0335CF01F0007E06C00FFE3CDFE
+:107AF80080C0000080012F348000630080004F1494
+:107B080080012F18EBCD4080581CC3B1580BC031F1
+:107B18003007C1F817893018F0091800C3611797A2
+:107B2800C35817893018F0091800C13117993EE871
+:107B3800F0091800C0E1498890093008F0091900D7
+:107B4800C0841ADB49581AD8495CF01F00162FED7B
+:107B580049189088E2180004C0801AD748F81AD843
+:107B6800491CF01F00102FED3038F0071800E08B8B
+:107B780000090E9CF01F000DF01F000DE3CF908050
+:107B8800E06C00FFE3CD80803007F2C8FFFF100BE8
+:107B9800CC91CDFB00000A14800386A0800389885D
+:107BA80080002D4C80038B6C80006300800053BCE8
+:107BB800D421202D583CE08100E5580BC350178A8A
+:107BC8003048F00A1800E08100E1179917A8B16859
+:107BD800F1E9118817B9F1E9108817C9F3E8100518
+:107BE800CD580F893018F0091800E08100E60F9988
+:107BF8003EE8F0091800E08100E04F78900930086D
+:107C0800F0091900E08400DF1AD74F481AD84F4C02
+:107C1800F01F00742FEDCD080F990FA8F1E9108817
+:107C2800E9D8B010CBB830053004C2380F89301805
+:107C3800F0091800E08100CC0F993EE8F00918001F
+:107C4800E08100C44E4890093008F0091900E0842A
+:107C580000BD1AD74E181AD84E1CF01F00620F89A3
+:107C68002FED3018F0091800E081009F0F96C9D851
+:107C78003006C18817893018F0091800C1311799E2
+:107C88003EE8F0091800C0E14D3890093008F009C5
+:107C98001900C0841ADB4D181AD84D1CF01F00516A
+:107CA8002FED4CD89088E2180004C0C01AD6F1D441
+:107CB800C0101AD81AD54C981AD84CBCF01F0049D5
+:107CC8002FCD3038F0061800E08B005C30085008E3
+:107CD8000C970C9CF01F0045500CC1404BE89009D4
+:107CE8003008F0091900C0841ADC4BC81AD84C0CAB
+:107CF800F01F003C2FED400CF01F003E0E9CF01FC3
+:107D0800003EEDD4C01050151A981AD81AD7300B67
+:107D18001ADB1ADBE06804001AD81AD51699169AE5
+:107D28000C9CF01F00362FAD580CC1614AA89088F2
+:107D3800E2180004C0B050151AD71AD61AD54A78D6
+:107D48001AD84AFCF01F00272FCD400B0E9CF01FBD
+:107D5800002D301CC1884A089088E2180004C0B081
+:107D680050151AD71AD61AD549C81AD84A6CF01F0E
+:107D7800001D2FCD0E9CF01F0020E06C00FFC038C6
+:107D8800E06C00FF2FEDD8223005F4C8FFFFF6089D
+:107D98000007FE91FF28C49B3004F4C8FFFF1007BA
+:107DA800FE91FF46C66B3006F2C8FFFFEE08000BD7
+:107DB800FE91FF62C77B0F8A3028F00A1800CED1E7
+:107DC800C2CB0F8A3004CEAB0F89C51B0F89300692
+:107DD800CECB000000000A148003877C80038988CA
+:107DE80080002D4C80038B888000630080038BAC5F
+:107DF800800053BC800063388000579080038BD884
+:107E080080006C4480038C00EBCD40C0202D189A74
+:107E1800169C3038F00B1800E08B006D30085008C5
+:107E28004B791389F0091800C1104B689009300884
+:107E3800F0091900C5F4201D4B381AD84B3CF01F27
+:107E48000034E06C00FF2FEDC5784B28118930080D
+:107E5800F0091800C1114AB890093008F009190052
+:107E6800C494201D4A881AD84ABCF01F0029E06C27
+:107E780000FF2FEDC4181697EDDAC010300B501B19
+:107E88001A981AD81ADC1ADB1ADBE06804001AD828
+:107E98001ADB3019169A0C9CF01F00202FAD580CD5
+:107EA800C15149889088E2180004C0A0201D1AD743
+:107EB8001AD649581AD849ACF01F00152FCD400BD7
+:107EC8000E9CF01F0018301CC17848E89009300853
+:107ED800F0091900C0A4201D1AD71AD648A81AD824
+:107EE800491CF01F000B2FCD0E9CF01F00103FFC0B
+:107EF800C038E06C00FF2FEDE3CD80C0000078D0E3
+:107F080000000A14800385CC80038C2C80002D4C43
+:107F180000000A1A80038C4C8000579080038C6400
+:107F280080006C4480038C8880006338EBCD40E08F
+:107F3800582CC4E1580BC2B0178A3028F00A180030
+:107F4800C4B1179917A8F1E91088EBD8B010C45834
+:107F58000F893018F0091800C4F10F993EE8F009AC
+:107F68001800C4814A6890093008F0091900C4242F
+:107F78001AD74A481AD84A4CF01F00240F892FED07
+:107F88003018F0091800C2F10F96C2E83005300623
+:107F9800C18817893018F0091800C13117993EE8CF
+:107FA800F0091800C0E1496890093008F009190083
+:107FB800C0841ADB49381AD8493CF01F00142FED49
+:107FC8000C9BF9D5C010F01F0012581CC030E06C93
+:107FD80000FFE3CD80E03005F4C8FFFFF608000796
+:107FE800CB81CD6B3006F2C8FFFFEE08000BCD2128
+:107FF800CE8B0F89CCAB0F893006CF6B00000A14EB
+:10800800800385908003898880002D4C80007E1035
+:10801800EBCD40C0FACD0088169616974CC89088CC
+:10802800E2180004C0B0201D1ADC4CA81AD84CA8CD
+:108038001AD84CACF01F004A2FCD344A300BFA0A3C
+:10804800000CF01F0048306AE06B00FFFACCFF9B81
+:10805800F01F00443088FB68007C0F8A31F8F00A72
+:108068001800E08B0070EECBFFFFFACCFFBCF01FCE
+:10807800003E0F89FB6900644B589088E2180004A1
+:10808800C0C0201D1AD9FAC8FFB41AD84B281AD86C
+:108098004B6CF01F00332FCD0F882FF8EC0800072A
+:1080A8000E9B173AFACCFFFCF01F00310F88FAC973
+:1080B800FF7810093008F368FF7C4A589088E21866
+:1080C8000004C0D0201D0F881AD8FAC8FFF41AD8A7
+:1080D8004A181AD84A7CF01F00222FCD3018308950
+:1080E8000F8AFACBFFFCFACCFFBCF01F0023581C08
+:1080F800C110497890093008F0091900C23449685C
+:108108001AD81AD849DCF01F0016E06C00FF2FEDD2
+:10811800C1B849BCF01F0012300BFACCFFBCF01FED
+:108128000019581CC0A0201D1ADC497CF01F000C47
+:10813800E06C00FF2FEDC088494CF01F0009301C8F
+:10814800C038E06C00FF2DEDE3CD80C000000A14BC
+:10815800800386C88003868880038CB080002D4CFD
+:108168008002DE9A8002DD14800389788002E42090
+:1081780080038CC88001359480038CDC80038D04D7
+:108188008000202480038D1C8003722CEBCD40805E
+:1081980020AD1697178A31F8F00A1800E08B0034E2
+:1081A8002FFBFACCFFF9F01F00220F88FB6800278D
+:1081B800FAC9FFD810093008F368FFDF49D890885A
+:1081C800E2180004C0A0FAC8FFF91AD849A81AD8BA
+:1081D80049ACF01F001B2FED300BFACCFFF9F01F54
+:1081E80000191897581CC1F0492890093008F0095F
+:1081F8001900C1941ADC49081AD8493CF01F00102C
+:108208002FEDC11848B890093008F0091900C03599
+:108218003FF7C098201D48881AD848CCF01F00089E
+:108228003FF72FED0E9C2F6DE3CD80808002DD148B
+:1082380000000A14800385F48003880C80002D4C0C
+:108248008000202480038B1480038D24D421216D89
+:10825800169616974D489088E2180004C0B0201D65
+:108268001ADC4D281AD84D281AD84D2CF01F005268
+:108278002FCD321A300BFACCFFC9F01F00500F8AED
+:1082880031F8F00A1800E08B008BEECBFFFFFACC38
+:10829800FFC9F01F004B0F88FB6800574C289088D7
+:1082A800E2180004C0A0FAC8FFC91AD84C081AD8A6
+:1082B8004C4CF01F00412FED0F882FF8EC080007F9
+:1082C8000E9BFAC6FFFC173A0C9CF01F003F0F8864
+:1082D800FAC9FFA8F20800083005F165FFAC0C9C4C
+:1082E800F01F003AE9DCC0080F863018F0061800C5
+:1082F8005F193038F00418005FB81049EA0918000F
+:10830800C4E12FF6EE0600060C9BFAC5FFF8173AF3
+:108318000A9CF01F002D0D88FAC9FFA8F208000872
+:108328003006F166FFB00A9BFACCFFDCF01F00288C
+:1083380018973058F00C18005F1930D8F00C180056
+:108348005F181069EC091800C2A1FAC6FFCF306A9D
+:10835800E06B00FF0C9CF01F00190C99FACAFFDCB7
+:108368000E9B089CF01F001B089CF01F001B300B85
+:10837800FACCFFC9F01F0019581CC13048A8900951
+:108388003008F0091900C0B41ADC48981AD8494CCA
+:10839800F01F0009E06C00FF2FEDC038E06C00FF13
+:1083A8002EADD82200000A14800386788003873413
+:1083B80080038CB080002D4C8002DE9A8002DD1490
+:1083C80080037D4C8002E4208002D1CC800026D836
+:1083D80080013780800137688000202480038B1457
+:1083E800EBCD4080319CF01F0012E06B00EFFE7C6B
+:1083F8002800F01F0010581CC070FE7728000E9C43
+:10840800F01F000DCFD0319CF01F000C48C8900918
+:108418003008F0091900C084201D48A81AD848ACB3
+:10842800F01F000A2FEDE3CD8080000080012F347B
+:1084380080012AC280012ABA80012F1800000A147C
+:10844800800385A880038D4480002D4CD431202DD5
+:10845800189316951490FAC4FFF8300808E8300706
+:108468000E963EE230010B8BF6021800F9B60001B9
+:10847800069CF01F0011581CC1B0EEC8FFFFEFD8D2
+:10848800B010089B069CF01F000DE20618005F0C58
+:10849800E00719005F88F9E80008E2081800C03012
+:1084A8002FF5CE2B580CF9BC0102F9BC00002FEDBA
+:1084B800D832000080012AC280012AE0EBCD40407A
+:1084C800202D169E1496129AFAC9FFF8300812E861
+:1084D800F80C002C48F8F00C002C78280C9B1C9CFD
+:1084E8005D18304948C89109319CF01F000C9ABAB0
+:1084F8000C9BFE7C2400F01F000A1896319CF01F8C
+:1085080000099A394888B0090C9C2FEDE3CD8040CA
+:10851800000013780000136880012F348000845411
+:1085280080012F180000136CD431206D1893500B64
+:1085380019943048FB680017502CF8C1FFFD503CD7
+:1085480050114CB8F0C6FFFCF0C5FFF03007089298
+:10855800E21200400E900D88E8081800C6C10B888A
+:108568003029F2081800C331EE0700284C09F20838
+:1085780000287039400A069B0E9CF01F003EC03050
+:10858800301CC7380898E2180040C0E1EE07002800
+:108598004B79F2080328300A029B402913AC5D1876
+:1085A800FB6C0017C0D8EE0700284B19F208032807
+:1085B800300A401B403913AC5D18FB6C00173019AA
+:1085C800FB380017F2081800C4B1C4C85802C0B17B
+:1085D800ECF8FFFC009A029B402913AC5D18FB6C79
+:1085E8000017C0A8ECF8FFFC009A401B403913ACF8
+:1085F8005D18FB6C00170B883019F2081800C0E1F1
+:10860800EE07002849A9F20800287039400A069B9D
+:108618000E9CF01F0018C260C2783049F20818009A
+:10862800C0A1FAC9FFE9400A069B0E9CF01F001181
+:10863800C190C1A82FF72EC62EC559E7C8D1C121B0
+:1086480048D890093008F0091900C0A41AD448B8CD
+:108658001AD848BCF01F000B302C2FEDC068302C06
+:10866800C048304CC028300C2FADD83200001378E9
+:10867800800084C400000A1480038E5880038D5C37
+:1086880080002D4CEBCD4068202D4DE8910C4DE835
+:1086980011893008F0091800E08000B010994DA841
+:1086A800B08930085018E1B80000E6180001C1315F
+:1086B800D303FE7924007268301AF1DAD001936886
+:1086C8007268F1DAD0C193687268F1DAD081936880
+:1086D800D503C108FE7924007268301AF1DAD00196
+:1086E80093687268F1DAD0C193687268F1DAD08160
+:1086F8009368FACAFFFC4C58700B4C5CF01F00459D
+:10870800C2A030394C489109401B4C087008161813
+:108718004C29B208E06903FFF2081900E088000656
+:10872800E06904004BD8B0094BD54BC34B86868A09
+:10873800EC0B000B0A9CF01F003B3008AC884BABDD
+:108748000A9CF01F003A30094B089109A6094B28EA
+:108758009109C248F01F00364B6890093008F009AB
+:108768001900C1544B4890881AD84B481AD84B4C1A
+:10877800F01F00342FED4AF890093008F00919006D
+:10878800C0644A28909B4A2CF01F002F30094A28C1
+:1087980091094A28B00949E8B089E06B0120FE7CBC
+:1087A8000D80F01F002AE1B80000E6180001C13171
+:1087B800D303FE7924007258301AF1DAD0019358A5
+:1087C8007258F1DAD0C193587258F1DAD0819358BF
+:1087D800D503C108FE7924007258301AF1DAD001A5
+:1087E80093587258F1DAD0C193587258F1DAD0819F
+:1087F8009358319CF01F00162FEDE3CD80680000E0
+:10880800000016400000163C000015D0000015D8E6
+:1088180080006B88000013680000136E00000F686A
+:108828008002DD1400000B6880008530800083E83A
+:1088380000000A14000015D48003866080038D7838
+:1088480080002D4C80006B4C80012FEC80012F3470
+:10885800D4314BF8118B300AF40B18004BD94BE884
+:10886800F40B1800F2081700201D1AD84BBCF01F93
+:10887800003C4BC8118B300AF40B18004B594B685D
+:10888800F40B1800F208170050084B7CF01F003456
+:1088980030052FED4B504B614B634B720A9CF01F18
+:1088A8000037C4E01897201D98A81AD878081AD855
+:1088B8001AD54B3CF01F002A6ED92FCD5809C0801D
+:1088C80072481AD81AD94AFCF01F00252FED6EE914
+:1088D8005809C08072481AD81AD94ABCF01F00201B
+:1088E8002FEDF01F002A6E68F80801046E2858085A
+:1088F800C0618EB96EB8F2080246C0286E866E381E
+:108908005808C0404A2CF01F00166E2958094A180A
+:108918005809F0091700E00917106E485808E208CE
+:108928001710E60817001AD91AD8EC040D081AD936
+:108938001AD81AD61AD7049CF01F00092FAD2FF5A4
+:108948005845CAD1F01F0014D832000000000A1A96
+:1089580080038DA080038DA880038DAC80002D4CF2
+:10896800000078D080038DC0800382688003827005
+:10897800800375B480038E248000630080038DD447
+:1089880080038DF480038E0C8000285080038CAC0B
+:108998008003826C8000D028EBCD40C0E1B8000095
+:1089A800E6180001C131D303FE7924007268301A39
+:1089B800F1DAD00193687268F1DAD0C1936872680D
+:1089C800F1DAD0819368D503C108FE792400726872
+:1089D800301AF1DAD00193687268F1DAD0C193687D
+:1089E8007268F1DAD0819368FE7824007048F1D873
+:1089F800C001C2A0300A4B58910A30194B4891095E
+:108A0800149CE0672710FE7B24004B263EEE0E994F
+:108A1800C0485809C09020197648E2180201E04879
+:108A28000201CF81C3884A98910CFE7824007029EE
+:108A38004A88F00A0B09C088FC081800C3602FFA9E
+:108A4800CE7B4A28910CE1B80000E6180001C1313C
+:108A5800D303FE7924007258301AF1DAD001935802
+:108A68007258F1DAD0C193587258F1DAD08193581C
+:108A7800D503C278FE7924007258301AF1DAD00191
+:108A880093587258F1DAD0C193587258F1DAD081FC
+:108A98009358C17876285C58EC0A0B082FFCE04CF8
+:108AA8000063FE9AFFCBCCEB4888910C319CF01FF9
+:108AB800000A30194898B089489992082FF8B208E6
+:108AC800E3CD40C0D6030000000015D000001368B5
+:108AD800000015D880012F180000163C000015D49E
+:108AE80048CD48D0E3B00001D55348C048C1023052
+:108AF800C06248C2A505A1240230CFD348A048B11E
+:108B08000230C06230023003A1220230CFE3488F26
+:108B18000001000080036C0000000008000009B894
+:108B28008003E670000009B800008A90800034A035
+:108B380078993018B2885EFCEBCD40E07897EF3931
+:108B48000024EF380025F2081800C031E3CF80E098
+:108B5800EE09002870156A1C201D8ACA8ADB1AD5FE
+:108B68003008189920EA20EB2F2CF01F001C2FED5D
+:108B7800587CC051E06C00F4E3CD80E0581CC04143
+:108B88005805C101C178EF3800242FF8F1D8C00387
+:108B9800EF6800240A9CF01F0012E06C00F4E3CD9B
+:108BA80080E00A968CDB6C1CF01F000E6C065806E1
+:108BB800CFA1EF3800242FF8F1D8C003EF680024C4
+:108BC8000A9CF01F0007488992082FF8B208E06C49
+:108BD80000F2E3CD80E00000800138448000E538F1
+:108BE8008002CA4400007EB0EBCD40E0204D1896CC
+:108BF800F01F00315806C5B06C975807C5800F881C
+:108C08005808C550E0680600BA68300AE06B0600EC
+:108C1800303CF01F002A1895C4703008AE88FACB93
+:108C2800FFF4781CF01F00269A6B580BC3D0FAC8C3
+:108C3800FFF2FAC9FFFCFACAFFF85C7B6A1CF01F56
+:108C48000021586CC0510A9CF01F001FC2D86A1836
+:108C5800402B101B5C5B4018100B5C7B0A9CF01FC0
+:108C6800001B49B992182FF8B2186A18F139001A7E
+:108C7800F138001BF1E91089E0680800F0091900D3
+:108C8800C060E0680806F0091900C0B16C480C9B88
+:108C98000A9C5D185C5CC0800A9CF01F000BC048F1
+:108CA8000A9CF01F00090C9CF01F000A2FCDE3CD91
+:108CB80080E000008002CA688000E7688002CA205D
+:108CC800800137EC8000E5388000E62C00007EB09B
+:108CD80080008B40EBCD40801897580CC0E1201DD8
+:108CE80049B81AD8E06801491AD849A81AD849AC2D
+:108CF800F01F001A2FCDC008499899983778F9685D
+:108D0800003636C8F968003749689958496899683B
+:108D1800189B496CF01F0016496CF01F0017362885
+:108D2800EF6800353068EF68002EEECCFFD1F01FF9
+:108D38000013581CC050E06C00F4E3CD8080E0685C
+:108D480005DCEF58002CE3CF8080000080038E9074
+:108D580080038EDC80038E6880002D4C0000164452
+:108D68008000952080008DA480008B388002C93057
+:108D780080008D848001345480013638D4011698DF
+:108D88002F295C795C7A189B109CF01F00045C7C8E
+:108D9800F9BC00FFD80200008000E2B8EBCD40C06B
+:108DA8001897169C6E9A965931B8F0091900E08BFD
+:108DB8000006E06C00F4E3CD80C0F53B0025F6C862
+:108DC800FFFFF1D8C003F53900241238C051E06C18
+:108DD80000F2E3CD80C0F40B0028911CF538002583
+:108DE8002FF8F1D8C003F5680025F01F00063F26CC
+:108DF8000E9CF01F0005EC0C1800CFB0E3CF80C02C
+:108E08008000E10680008B40EBCD40C0149712969D
+:108E1800761AF939002E3068F0091800C0E0201DD4
+:108E280049481AD8E06801B41AD849381AD8493CD0
+:108E3800F01F00132FCDC008306EFCC80001FDD80C
+:108E4800C008F40E0009EC0E0708F368000EEE0ED9
+:108E58000708F3680014580ECF113088F568001A17
+:108E68003008F568001B78685D185C5CE3CD80C04D
+:108E780080038EF080038F3880038E6880002D4C2D
+:108E8800EBCD40FC18931692F8C6FFD1300A338B0D
+:108E9800303CF01F00431894C0A14C29F30800246B
+:108EA8002FF8F3580024E06700FFC7689859337813
+:108EB800F0091900E08B000F201D4BB81AD8E068A4
+:108EC80004311AD84B981AD84B9CF01F003A2FCD72
+:108ED800C0087815EAC7FFE43008AEE83018AEF8E5
+:108EE800E739002E3068F0091800C0E0201D4AE874
+:108EF8001AD8E06804391AD84AF81AD84ACCF01FA8
+:108F0800002D2FCDC008306A4ACB4ADCF4C80001D6
+:108F1800F5D8C008EE0A0009EC0A0708F36800084B
+:108F2800F60A0708F3680012EA0A0009F80A0708AF
+:108F3800F368000EEC0A0708F3680014580ACE71AB
+:108F480030460C9AE606000BEECCFFF2F01F001D2F
+:108F58000C9A049BEECCFFE8F01F001A3009AE898A
+:108F68003018AE98308AAEAAAEB93068AEC8AED660
+:108F7800EB6A001AEB68001B6668089B069C5D1884
+:108F8800EFDCC0084879F30800182FF8F3580018E8
+:108F9800089CF01F000D0E9CE3CD80FC8000E76864
+:108FA80000007EB080038EF080038F7C80038E6883
+:108FB80080002D4C80038F388003909580038EEAC3
+:108FC8008002DD148000E538EBCD40E01897580C9E
+:108FD800C0E1201D49D81AD8E06800941AD849C8B9
+:108FE8001AD849CCF01F001C2FCDC0087818580893
+:108FF800C101201D49581AD8E06800951AD8497847
+:109008001AD8494CF01F00142FCDC0080C97C0285F
+:1090180030656E066E1C580CC0E1201D48B81AD881
+:10902800E06800991AD848E81AD848ACF01F000A36
+:109038002FCDC008F01F000B0E9B0A9CF01F000AE2
+:109048005806CE51E3CD80E080038EF080038FB0C8
+:1090580080038E6880002D4C80038FBC80038FCCEA
+:109068008000E5388000ED1CD431203D1893500B6A
+:10907800580CC2B0FEF80254118C189EF80815035B
+:109088001818FEF9024AF208002870485828C1D179
+:1090980007890798B168F1E9118807A9F1E91088EB
+:1090A80007BA104AF80815031818FEF90222F20840
+:1090B80000287018103AC091FEF90218F308002E23
+:1090C8002FF8F358002ECFE8FEF80204F0CBFFEC9F
+:1090D8001094300730A00E955010502000920E9C2E
+:1090E8000E9630A1E2021800C0A1F6F8FFFC58085D
+:1090F800C06118920E9E0A990C9AC4B8F6F8FFFC43
+:109108005818C2715803C11007890798B168F1E966
+:10911800118807A9F1E9108807B9104968181039AA
+:10912800C0414EA8B08CCCE868085808C0A0178980
+:10913800F2051800E08B002B18900E9E0C9AC2982E
+:10914800178AEC0A1800C223501C0E9E0A99C218EE
+:109158005828C1C15803C11007890798B168F1E9B7
+:10916800118807A9F1E9108807B91049681810395A
+:10917800C0414D68B08CCA68178EFC071800E08B98
+:109188000006502C0A990C9AC0480E9E0A990C9A0F
+:10919800F8C8FFFFF9D8C0082E4B2E44E20C18007F
+:1091A800C0501C9712951496C9EB30A8F00218000D
+:1091B800C0614009F1D9C001E08000834008E2188D
+:1091C8000002E081007E3098F0021800E089000576
+:1091D800EFD2C008C39830984029F0091800E089F8
+:1091E800001912975C57EE0815030E184B89F20800
+:1091F80003285808C290201D4B781AD8E0680176D9
+:109208001AD84B681AD84B6CF01F00362FCDC008FF
+:1092180030984019F0091800E089000512975C574A
+:10922800C1383098F0001800E089004BEFD0C00832
+:10923800EE0615030E164A68F00600266C0CF01FA1
+:10924800002A30088D083098F0071800E088000FD1
+:10925800201D4A181AD8E068018C1AD84A381AD83A
+:1092680049FCF01F00202FCDC0080E9BEE08150307
+:109278000E184979F20800282F0830099109580377
+:10928800C120EE0A15030E1A4918F00A002A0789A8
+:109298000798B168F1E9118807A9F1E9108807B9B9
+:1092A80010499519F608150316184899F208002868
+:1092B8002F083009B0C94858B0870E9CC038E06CF8
+:1092C80000FF2FDDD83200000000166C0000167079
+:1092D80000007EB080038EF080038FDC80038E68F0
+:1092E80080002D4C80008FD080038FF4EBCD40F8A8
+:1092F800189616971495189B0E9CF01F0078E0811D
+:1093080000D60F890F98B168F1E911880FA9F1E922
+:1093180010880FB910491298E618F000FC1AE000FE
+:109328001438E08000C45807E08000C15809E08084
+:1093380000BE301B0E9CF01F006A5C5C3008F00C0D
+:109348001800C0C45805E08000B84E69F30800242E
+:109358002FF8F3580024E3CD80F8E9DCB008E808DA
+:10936800150308184E09F208002870495809C0A1C9
+:10937800E808150308184DC9F20800283019914962
+:10938800C1C8F2C800015818E088000F201D4D78A8
+:109398001AD8E06803A51AD84D581AD84D5CF01FA2
+:1093A80000562FCDC00858195F0858055F091248A4
+:1093B800C041E06300FFC0780E9B0C9CF01F004F7B
+:1093C800E7DCC0085805C760E808150308184C69A9
+:1093D800F208002870485828C121E809150308191F
+:1093E800A3692F894C08F0090009ECCAFFD10A9B30
+:1093F8000C9CF01F00435C5CE3CD80F85818C5A1B5
+:109408000A99301A924B9258F6081900C11172083D
+:109418005808C0E0201D4B581AD8E06803C41AD871
+:109428004B881AD84B3CF01F00342FCDC008F338B6
+:10943800000CF4081800C05172095809CE41C3E85D
+:10944800300A5C7B303CF01F00301897C3C00A9B81
+:10945800F01F002E5C5CC0500E9CF01F002DC3381E
+:10946800306CF01F002CC1B0300899089917E80833
+:109478001503081849C9F20803285808C08010992C
+:1094880070085808CFD1930CE3CF80F8E80815038B
+:1094980008184959F208092CE3CF80F80E9CF01FF0
+:1094A800001CF9D3C008E3CD80F8E06C00F6E3CDEA
+:1094B80080F8F9D3C008E3CD80F80A9CF01F0016A5
+:1094C8000A97CCFB4879F30800242FF8F3580024B6
+:1094D800F9D3C008E3CD80F88000F8A4800090702C
+:1094E80000007EB00000167080038EF080039008A4
+:1094F80080038E6880002D4C80008E8880008E103E
+:10950800800390308000E7688000E3948000E538AD
+:109518008000ED7C8000E106EBCD40E0202D189620
+:109528001695149731CB0A9CF01F0029C0804A99E0
+:1095380092582FF8B258E06C00FEC4680C9B0E9C41
+:10954800F01F0025C0304A59C3880F890F98B168A9
+:10955800F1E911880FA9F1E910880FB9104912989B
+:10956800E618F000FC1AE0001438C1213018BAA837
+:109578003008BAB835E8BAC80F98F1D8C007BAD8D1
+:109588000FA8BAE80FB8BAF8FAC9FFFEC1686C1894
+:10959800F3E820086C291268C0906C385808C0415C
+:1095A800E06C00FCC118ECC7FFF40A9A0E9B0C9CF7
+:1095B800F01F000B5C5CC088ECCAFFD10A9B0C9CB6
+:1095C800F01F00085C5C2FEDE3CD80E08000E1BC7B
+:1095D80000007EB08000F8A480038EEA800092F438
+:1095E80080008E10EBCD40FC4958F0C7FFEC109678
+:1095F800300430123EF3F0C5FED40F882FF85C58C3
+:10960800AE88EEF9FFFC5829C061E6081800E08B27
+:109618000009C0F85819C0D1E4081800E088000A09
+:109628006C0C580CC040F01F00078D04EF44FFFC81
+:109638002E472E460A37CE21E3CD80FC0000167057
+:1096480080008FD0EBCD40FC189516961497129495
+:10965800F939002E3068F0091800C0E0201D4BC809
+:109668001AD8E06801DA1AD84BA81AD84BACF01F00
+:10967800003B2FCDC008580BC62017891798B16832
+:10968800F1E9118817A9F1E9108817B91049C570CF
+:10969800189B0C9CF01F0032C5210D88B968E6188C
+:1096A800F000FC19E0001238C4A0089B0C9CF01FC5
+:1096B800002D5C5C3008F00C1800C4655C6CF8097F
+:1096C800150318194A88F0090029F2CAFFF0302852
+:1096D800950893650FD8F368000D0FC8F368000C60
+:1096E8000FB8F368000B0FA8F368000A0F98F36827
+:1096F80000090F88F36800083008B4C8720B580BCB
+:10970800C220EAC3FFD1F80815031818A3684969ED
+:10971800F20800043062760889087616049CF01F67
+:1097280000130E99069A0C9B0A9CF01F00110C9CC2
+:10973800F01F0010680B580BCEF1C058E06C00F613
+:10974800E3CD80FC300CE3CD80FC000080038EF07C
+:109758008003904C80038E6880002D4C8000F8A414
+:1097680080009070000016708000ED1C80008E1044
+:109778008000E538D401580CC0E1201D49481AD8AA
+:10978800E068024A1AD849381AD8493CF01F001331
+:109798002FCDC008761AF4CBFFE4F739000CF73860
+:1097A800000DB168F1E91188F739000EF1E9108868
+:1097B800F739000F10497818105978281069C051E6
+:1097C8002ECA2F4BF01F0006D802000080038EF02F
+:1097D80080038EDC80038E6880002D4C8000964CC0
+:1097E800EBCD40FE202D189516911493580CC0E12E
+:1097F800201D4F681AD8E068027F1AD84F481AD837
+:109808004F4CF01F00752FCDC00894593378F009DC
+:109818001900E08B00114F18F10900222FF9F159B6
+:109828000022F109001E2FF9F159001E149CF01FA7
+:10983800006CCC887414E8C7FFE40F880F99F3E82C
+:1098480010893018F0091900C1E10FC80FD9F3E8E1
+:109858001089E0680604F0091900C1510FA80FB972
+:10986800F3E81089E0680800F0091900C0C1E93878
+:10987800001AE939001BF3E81089E0680806F009C6
+:109888001900C1004D58F10900282FF9F159002895
+:10989800F109001E2FF9F159001E069CF01F005017
+:1098A800C9184CE8F109001A2FF9F159001AEEC24B
+:1098B800FFF230460C9A049BFA06000CF01F004990
+:1098C8000C9AEECBFFE81A9CF01F00466A1958095B
+:1098D800C0F0400812385F065806C0B03019EECA0A
+:1098E800FFF8FACBFFFC0A9CF01F003FC0A8300627
+:1098F8003009EECAFFF8FACBFFFC0A9CF01F003AC9
+:109908000FE80FF9F3E810893018F0091900C06062
+:109918003028F0091900C4D1C4685806C5003008B9
+:10992800AEE83028AEF830460C9AEECBFFF2EECC1B
+:10993800FFE8F01F002C0C9AEA06000B049CF01FAD
+:109948000029EB39002E3068F0091800C0E0201D0E
+:1099580049E81AD8E06802D91AD84A481AD849DC1E
+:10996800F01F001D2FCDC008306BF6C80001F7D8D6
+:10997800C008EE0B0009F3380008F3680012E80B82
+:10998800000AF568000EE20B0708F3680008E20B0E
+:109998000708F5680014580BCE916A68069B0A9C64
+:1099A8005D18C0D8FACBFFFC0A9CF01F0011C078E4
+:1099B80048A9F308002C2FF8F358002C069CF01F38
+:1099C80000082FEDE3CD80FE80038EF080038EDC4F
+:1099D80080038E6880002D4C00007EB08000E53842
+:1099E8008002DD148000964C80038F38800117C0F8
+:1099F800EBCD40C0189716967818F139001AF1384F
+:109A0800001BF1E91089E0680800F0091900C0702E
+:109A1800E0680806F0091900C231C1C8189B0C9CFF
+:109A2800F01F00173E4B0E9CF01F0016C0E0201DD3
+:109A380049581AD8E06804A41AD849481AD8494C91
+:109A4800F01F00142FCDC0080C9B0E9CF01F0012B5
+:109A5800C148189A2D1B0C9CF01F0010C0E849083B
+:109A6800F10900282FF9F1590028F109001E2FF9F2
+:109A7800F159001EF01F000BE3CF80C08000977CD7
+:109A88008000E1BC80038EF08003907480038E68B0
+:109A980080002D4C8000FBA4800097E800007EB079
+:109AA8008000E53848BA15891598B168F1E9118838
+:109AB80015A9F1E9108815B9104999193008F9580C
+:109AC8000014F9380010A3C8F96800105EFC000003
+:109AD8008003A1BD996B997A5EFCD703D401301C31
+:109AE800F01F0009C0E03008189912A812A812A89F
+:109AF80012A812A812A812A893083FF8F968000B38
+:109B0800D80200008000ED7CD40148E870081838BD
+:109B1800C0405808C071C0F8703948A89109C0B849
+:109B2800129870395809C070123CCFB17839913900
+:109B38005809CF71189B301CF01F0003D802000091
+:109B480000007E908000ED1CEBCD40E04AF87008E4
+:109B58005808C031300EC188300E3019103CC11180
+:109B6800580EC0E0201D4AA81AD8E06802541AD836
+:109B78004A881AD84A8CF01F00292FCDC008129E97
+:109B880070385808CEC1580BC0C017891798B168EB
+:109B9800F1E9118817A9F1E9108817B9F3E8100B52
+:109BA800990B580AC261499870081099E06A100028
+:109BB800E0667FFF30051097C0C8F3080012F4086C
+:109BC8001900C0612FF8F5D8B0100E99C028723965
+:109BD80058095F1BEC0A19005F18F7E80008EA0843
+:109BE8001800CEC1580BC050E06C00F5E3CD80E002
+:109BF800F95A0012580EC030E3CF80E04839720895
+:109C08009938930CE3CF80E000007E908003909C0D
+:109C1800800390E080038E6880002D4CEBCD40E0FF
+:109C2800189716961495F90900123008F0091900CA
+:109C3800C071300A189BF01F00195C5CC2B158064D
+:109C4800C031300BC0C80D890D98B168F1E9118891
+:109C58000DA9F1E910880DB9F3E8100B8F1BEF552A
+:109C68000014EF380010A3A8EF68001048C8700867
+:109C78005808C0A01037C0D01099C0381237C0900B
+:109C880072395809CFC18F3848589107E3CF80E01F
+:109C9800300CE3CD80E0000080009B5000007E90F7
+:109CA800EBCD40FE18951693149212941091F90971
+:109CB80000123008F0091900C091300A189BF01FF3
+:109CC8000049EFDCC008E081008A308B069CF01F59
+:109CD8000046C0310696C0E8300A308B301CF01FB1
+:109CE80000431896C041E06700FFC788069BF01F35
+:109CF80000408C593078F0091900E08B000F201DC6
+:109D08004BC81AD8E06801C51AD84BB81AD84BBC4A
+:109D1800F01F003B2FCDC0086C17300AEB3800123B
+:109D2800AE88EB380013AE98F3D4C010F2081608CA
+:109D3800AEA8AEB9AEEAAEFA0A945805C0406A09B0
+:109D48005809C041E2C4FFFCC0F862181039C0C00D
+:109D58000636C041E06700F7C4180C9CF01F0029C4
+:109D6800E06700F7C3B8ED380008AEC8ED38000961
+:109D7800AED8EB380010F1D8C001C1618CC83119D8
+:109D8800049A089B0C9CF01F00205C8CF3DCC0102C
+:109D9800F2081608AEE8AEF9580CF9B800FFEFF86B
+:109DA8000E06EFF80E071AD131181AD8EB38000A48
+:109DB800EB39000B049A089B0C9CF01F0014EFDC95
+:109DC800C0082FED0636C0400C9CF01F000E490954
+:109DD800F30800782FF8F35800780E9CE3CD80FE46
+:109DE80080009B508000E1BC8000E7688000E1A013
+:109DF8008003909C800390EC80038E6880002D4C3B
+:109E08008000E5388000FEB48000F8F000007EB0E5
+:109E1800D4211894169514971296149CF01F000BD1
+:109E2800C0A148B9F30800862FF8F3580086E06C03
+:109E380000FCD8221898F3D6C0100E9A0A9B089CEA
+:109E4800F01F00045C5CD8228000FADC00007EB0C1
+:109E580080009CA8D401189AF91900142FCAF01F81
+:109E680000035C5CD802000080009E18D43118946E
+:109E78001690FEF902AEF308007A2FF8F358007A2C
+:109E880078160D88F7D8C00498C9F6C8FFFEA368ED
+:109E98001039C075A36B5C3B5C8BF01F00A3C1102D
+:109EA800FEF80280F10900822FF9F1590082F109C8
+:109EB800007E2FF9F159007E089CF01F009CD832D3
+:109EC8006815ECC1FFF0009B029CF01F00991893E5
+:109ED8000B890B98F1E91088E5D8B0100BA90BB8DD
+:109EE800F1E91088FDD8B0103448F00E1900C241CD
+:109EF8003438F0021900C7B160AB580BC780761729
+:109F08005807C760EEC8FFFCE08000846E1A580A44
+:109F1800E0800080ED39000CED38000DB168F1E902
+:109F28001188ED39000EF1E91088ED39000F10495C
+:109F3800123AC5D1C6E84FF870075807C590300ADD
+:109F4800149BEF080012FC081900C4815803C16172
+:109F58005807C1406E0C580CC110ED390010ED388F
+:109F68000011B168F1E91188ED390012F1E91088A2
+:109F7800ED3900131049123CC311580BE08100C69B
+:109F8800EF380010E2180004EE0B1700CBE8EEC81B
+:109F9800FFFCC1406E1C580CC110ED39000CED38A7
+:109FA800000DB168F1E91188ED39000EF1E910886A
+:109FB800ED39000F1049123CC111580AC0806E38A3
+:109FC80095384DC972088F389307C2384D59F30830
+:109FD800008E2FF8F358008EC1C86E385808E080FC
+:109FE800009C0E9A1097CAEB1697C0283007ED39D7
+:109FF8000010ED380011B168F1E91188ED3900124F
+:10A00800F1E91088ED390013104960181238C7912A
+:10A018000BE90BF8F1E91088C1A088C83119029A38
+:10A02800ECCBFFF4089CF01F00445C8CC1004BD8BB
+:10A03800F10900802FF9F1590080F109007E2FF90C
+:10A04800F159007E089CF01F0039D8323F8B089CDC
+:10A05800F01F0035C0E0201D4B881AD8E0680114B5
+:10A068001AD84B781AD84B7CF01F00372FCDC00870
+:10A078005807C1106E655805C0A0F1D2C010ECC9D0
+:10A08800FFF4089A0E9B6E7C5D15D832089CF01F71
+:10A098000027D8325803C261ED380010B968E618B5
+:10A0A800F000FC19E0001238C1D00D8BF7DBC004BA
+:10A0B8002FEBA36B089CF01F001C68180C38C0E03D
+:10A0C800201D49E81AD8E068012F1AD849F81AD88B
+:10A0D80049CCF01F001D2FCDC008303B089CF01F55
+:10A0E800001C4908F10900882FF9F1590088F10985
+:10A0F800007E2FF9F159007E089CF01F000CD83221
+:10A10800089CF01F000AD832EF080014E408190070
+:10A11800FE91FF65C3DB580BFE90FF681697C79B3F
+:10A1280000007EB08000E1BC8000E5388000F8A423
+:10A1380000007E908000FEB48003909C8003911CF8
+:10A1480080038E6880002D4C80039130800102A826
+:10A15800D401189E761C300BFD38001CB888FD38D9
+:10A16800001DB898FD380024B8A8FD380025B8B8F7
+:10A17800F2081618B8C8F2081610B8D8F208160867
+:10A18800B8E8B8F9FD380028F9680008FD38002952
+:10A19800F9680009FD38002AF968000AFD38002B23
+:10A1A800F968000BF939000CF938000DF1E910884D
+:10A1B800E218FFC0A5A8F0091608F969000CF968AB
+:10A1C800000DFD38002EF968000EFD38002FF968E3
+:10A1D800000FF96B0012F96B0013163AF7BA05FD78
+:10A1E800A34A2FBAF938000DF1D8C006F1EA10C811
+:10A1F8005C78F0091608F969000CF968000DF96B2C
+:10A208000010F96B0011FD18002E7CA912089DC8DA
+:10A21800D802EBCD40C079F65806C3D06C08F9488F
+:10A22800007CF8C7FF8879EB580BC2B06C4A15C997
+:10A2380015D8B168F1E9118815E9F1E9108815F91F
+:10A24800F3E8100E764A15C915D8B168F1E91188F6
+:10A2580015E9F1E9108815F910491C19C127169755
+:10A26800760B580BC0E0764A15C915D8B168F1E9E4
+:10A27800118815E9F1E9108815F910491C19CF065C
+:10A288008D0B8F06F938004E2FF8F968004E30080C
+:10A29800F9480040E3CD80C0EBCD4080189779F8AD
+:10A2A8005808C310F9380026E2180004C2C1F01F8C
+:10A2B8000017EF090056EF080060F7D8C02FF5D94E
+:10A2C800C02FF0091900F60817B0EFF8BC2CF408F5
+:10A2D8001780EFF88C2CEF18003CF0091501EF18E7
+:10A2E80000581238EFF95C2CEF18003CF008001801
+:10A2F800EF0900581009EF590056EF380026A3A8B7
+:10A30800EF680026E3CD80808000A21AEBCD40F8EC
+:10A31800189479F65806C04179E65806C7906C48F3
+:10A32800F138000DEDB80000C0918C693008F009D3
+:10A338001900C041314B3013C038315B3003300A4B
+:10A34800301CF01F00351895C63098593138F0097F
+:10A358001900E08B000F201D4B081AD8E068040F85
+:10A368001AD84AF81AD84AFCF01F002F2FCDC00877
+:10A378006C4A15C815D9B169F3E8118915E8F3E8ED
+:10A38800108915F8F1E91009300A189B089CF01F8C
+:10A39800002718975803C120F938000CF939000D27
+:10A3A800F3E81089E219FFC0E8190011F20816084D
+:10A3B800F968000CF969000DC0686A186C291389DE
+:10A3C800F1690014E8C6FFFC8AC830690C9A089B3A
+:10A3D8000A9CF01F00175C7CF8081608EF6800104C
+:10A3E800EF6C00114939F30800902FF8F3580090EA
+:10A3F800201D30681AD83008E939000B0C9A089BE0
+:10A408000A9CF01F000D0A9CF01F000C2FEDE3CDF5
+:10A4180080F800008000E768800391448003918CF5
+:10A4280080038E6880002D4C8000A1588000FEB407
+:10A4380000007EB08000FB508000E538D4211894DD
+:10A44800300A314B301CF01F00231897C41098595C
+:10A458003138F0091900E08B000F201D49E81AD89F
+:10A46800E06803C91AD849D81AD849DCF01F001D7A
+:10A478002FCDC00869792019300A189B089CF01F55
+:10A48800001A1896E8C5FFFC8EC830690A9A089B1E
+:10A498000E9CF01F00165C7CF8081608ED6800108A
+:10A4A800ED6C00114929F30800902FF8F35800903B
+:10A4B800201D30681AD83008E939000B0A9A089B21
+:10A4C8000E9CF01F000C0E9CF01F000B2FEDD822E5
+:10A4D8008000E768800391448003918C80038E6834
+:10A4E80080002D4C8000A1588000FEB400007EB092
+:10A4F8008000FB508000E538D431189416931491ED
+:10A50800129010954092300A314B301CF01F0043D6
+:10A518001897E080008298593138F0091900E08BCB
+:10A52800000F201D4BE81AD8E068031F1AD84BD833
+:10A538001AD84BDCF01F003D2FCDC0087816F3D594
+:10A54800C0103005F2081608AC88AC99F3D2C010D8
+:10A55800F2081608ACA8ACB9E8081618ACC8E808A0
+:10A568001610ACD8E8081608ACE8ACF4E6081618DB
+:10A57800ED680008E6081610ED680009E6081608F8
+:10A58800ED68000AED63000BED39000CED38000DA5
+:10A59800F1E91088E218FFC0E8180014ED68000D12
+:10A5A8003088ED68000EED65000FED650012ED6571
+:10A5B8000013ED38000DF1D8C006E8185000F00976
+:10A5C8001608ED69000CED68000DED650010ED65ED
+:10A5D800001198C83069009A029BF01F00155C7C36
+:10A5E800F8081608ED680010ED6C00114919F30819
+:10A5F80000902FF8F3580090201D30681AD80A9858
+:10A60800E06900FF009A029B0E9CF01F000B0E9C55
+:10A61800F01F000A2FEDD8328000E76880039144CC
+:10A628008003918C80038E6880002D4C8000FEB4DE
+:10A6380000007EB08000FB508000E538D4211897D8
+:10A64800300A314B301CF01F001C1894C041E06CDC
+:10A6580000FED822EF380026E018FFFCEF6800263D
+:10A668006F79300A189B0E9CF01F00141896EEC5DF
+:10A67800FFFC88C830690A9A0E9B089CF01F0010DE
+:10A688005C7CF8081608ED680010ED6C0011201DC0
+:10A6980030681AD8EF38000AEF39000B0A9A0E9B77
+:10A6A800089CF01F0008089CF01F0007300C2FEDD5
+:10A6B800D82200008000E7688000A1588000FEB41E
+:10A6C8008000FB508000E538D431201D1895FEF835
+:10A6D80003AA70081838C041300CE08F01C6F90889
+:10A6E8000056F9090060F0091900F00917B0E3D91C
+:10A6F800C01079E7F9380026E2180002C1A058070F
+:10A70800C1208EEB7948101B6E4A15C915D8B1685F
+:10A71800F1E9118815E9F1E9108815F91049120BCA
+:10A728001631C0720A9CF01F00D65C5CE08F019D58
+:10A738006BF35803C1D15807E08001906E4B8EEA45
+:10A748006B48101A17C917D8B168F1E9118817E9C9
+:10A75800F1E9108817F91049120A1431E083015EF3
+:10A76800F738000DE2180004C1C0C0B8109366089D
+:10A778005808CFD1CE1BF738000DE2180004C1B03D
+:10A78800201DFEF802FE1AD8E06802471AD8FEF823
+:10A7980002F61AD8FEFC02F4F01F00BD2FCDC00847
+:10A7A8000A94EAC2FFFCE0600200EA100204EAC967
+:10A7B800FF8450096BF85808C150EB3A00261498EA
+:10A7C800E2180044C0F16BE95809E08001507208B2
+:10A7D8005808C0819269EB08003CF0091900E08331
+:10A7E80001466E08EB4800786A485828C1606E4AEE
+:10A7F800F539000CF538000DF1E91088A5A85C784A
+:10A80800F0091608F569000CF568000DEB3800260C
+:10A81800E018FFFCEB6800266E49EB380028F36867
+:10A828000008EB380029F3680009EB38002AF368C0
+:10A83800000AEB38002BF368000B6E49EB38002E4A
+:10A84800F368000EEB38002FF368000FEB18002EAA
+:10A858006AA912088BC86E49EF38000EF1D8C001FA
+:10A86800F3F01A05EB08003A3FF9F2081900F9B8B5
+:10A878000000EBF80C1D5804C0406A085808C0C115
+:10A88800049CF01F0084C520F8C8FFFCF9BC000038
+:10A89800F9FC10018B0C6B085808C1214FE97208AC
+:10A8A800EB4800406E4A15C915D8B168F1E911881E
+:10A8B80015E9F1E9108815F91049EB4900446E1AB9
+:10A8C8006E497418101994581218B4586E1A94488E
+:10A8D8001218B4486E196E4893186E483009F16919
+:10A8E8000010F16900116E466E1C98C83069049A10
+:10A8F800089BF01F006A5C7CF8081608ED680010D9
+:10A90800ED6C00114E69F30800902FF8F358009091
+:10A91800201D30681AD8EB38000AEB39000B049A6E
+:10A92800089B6E1CF01F005F2FED6E4AF538000D76
+:10A93800F1D8C0025F1B8EE8100B15C915D8B16895
+:10A94800F1E9118815E9F1E9108815F91049120B98
+:10A958006B781618C037EB4B005C6E48F138000D69
+:10A96800F1D8C0025F188EE912085808E08A003E44
+:10A9780030098F096BFB580BC051EB47007C0E93D5
+:10A98800C3786E4A15C915D8B168F1E9118815E977
+:10A99800F1E9108815F9F3E8100E664A15C915D8BB
+:10A9A800B168F1E9118815E9F1E9108815F910493C
+:10A9B800FC090109C177400CC058169C760B580B4E
+:10A9C800C0E0764A15C915D8B168F1E9118815E9CA
+:10A9D800F1E9108815F910491C19CF068F0B990752
+:10A9E800C07887070E93C0480E9CF01F002F6BE7B6
+:10A9F8005807C3306E4B8EEA6B48101A17C917D820
+:10AA0800B168F1E9118817E9F1E9108817F91049D7
+:10AA1800120A1431FE92FEB1EB3900A43008F00995
+:10AA28001800C1B18EEB6B48101B6E4A15C915D8BA
+:10AA3800B168F1E9118815E9F1E9108815F91049AB
+:10AA4800120BEB180060103BF9B80B00EBF8BA28B2
+:10AA5800F9B80B01EBF8BEA4EB380026F1D8C00713
+:10AA6800EB680026300C2FFDD8321498E21800A0AD
+:10AA7800FE91FEB9CD2B000000007E948000A64414
+:10AA880080039144800391BC80038E6880002D4C24
+:10AA98008000FADC00007E9C8000FEB400007EB0DE
+:10AAA8008000FB508000D3C4D40179F85808C160F5
+:10AAB800109970085808CFD179E8930879F8F948BF
+:10AAC80000783009F949007CF938004E2FF8F96808
+:10AAD800004EF9490040F01F0002D8028000A6D0BD
+:10AAE800D43120FD1897506A5059109C418E504E11
+:10AAF8003009F20A19005F0AF20E18005F08F5E83B
+:10AB08000008F2081800C1504059F1D9C002C1111B
+:10AB1800201DFEF806321AD8E06800AD1AD8FEF8F3
+:10AB2800062A1AD8FEFC0628F01F018A2FCDC00875
+:10AB3800580B5F185078F5E80008C110201DFEF882
+:10AB480006061AD8E06800AF1AD8FEF8060A1AD81E
+:10AB5800FEFC05FCF01F017F2FCDC008EF08007236
+:10AB6800406EFC081900C0D2EF380026EA18FFFF33
+:10AB7800E818FF80EF680026E06C00FFE08F02C253
+:10AB8800404AF1DAC001F9B80104F9B80000149993
+:10AB9800E2190002F9B9010CF9B90000F20800083D
+:10ABA80050E86FB950A9EF02007431F8F0021900AB
+:10ABB800E0880015FEF805A4F109009C2FF9F15969
+:10ABC800009CEF380026EA18FFFFE818FF80EF68BE
+:10ABD8000026E06C00FFE08F02955802C1906FF8E4
+:10ABE8005808E08102916FE85808E081028D201D25
+:10ABF800FEF805541AD8E06800D01AD8FEF80560A7
+:10AC08001AD8FEFC054AF01F01532FCDC0086FF873
+:10AC18005808C0516FE85808E0800276201DFEF8F9
+:10AC280005261AD8E06800D31AD8FEF805361AD8CF
+:10AC3800FEFC051CF01F01472FCDC008F1D1C01044
+:10AC480040AE100E50AE40CA100A50CA0A96EF0124
+:10AC5800003C304CF01F01441895E0800223300975
+:10AC6800990999195803C0301894C1485806C11158
+:10AC7800201DFEF804D21AD8E06800EF1AD8FEF8B2
+:10AC880004EA1AD8FEFC04C8F01F01322FCDC00810
+:10AC98008D0C40B95C79F1D1C01040EE1C18F20857
+:10ACA8000D49E3D9B010402A508A40195809C39079
+:10ACB800E20E000B300A5C7B149CF01F012D8B1CEC
+:10ACC800E08001F098D9F1D1C010403E1C0810393D
+:10ACD800C114201DFEF804701AD8E06800FF1AD8C5
+:10ACE800FEF804901AD8FEFC0466F01F011A2FCD56
+:10ACF800C008F01F01211896407A580AC0A06A18A7
+:10AD0800701CF5D1C01040CB40E9120CF01F011B9C
+:10AD1800EC020008E5D8B0106A1870188B28C298A1
+:10AD2800300A403B149CF01F01128B1CE08001BAD2
+:10AD3800F01F0111040CE5DCB0105800C1A0301A56
+:10AD4800F7D1C010303CF01F010AC0816A1CF01F07
+:10AD5800010C30088B18E08F01A5E4C8FFFFE5D887
+:10AD6800B01040C899188B28189B6A1CF01F010561
+:10AD7800320EFC021900E08B0195AA61314B6A1C66
+:10AD8800F01F0101C0A0FEF903D2F30800A42FF8B8
+:10AD9800F35800A4E08F01866A1870198B49EF38C0
+:10ADA800001CB288EF38001DB2986A49EF380024B9
+:10ADB800B2A8EF380025B2B86A4940A8B988B2C825
+:10ADC80040A8B188B2D840A8A988B2E840AAB2FA87
+:10ADD8006A483009F1690012F16900136A4AF539C5
+:10ADE800000CF538000DF1E91088E218FFC0405E4C
+:10ADF800FDE810085C78F0091608F569000CF5689C
+:10AE0800000D404AEB6A000E6A4AF538000DF1D889
+:10AE1800C0064099F3E810085C78F0091608F5694F
+:10AE2800000CF568000D40B802185C8850B858044A
+:10AE38005F03300840BEF00E19005F10E7E010080D
+:10AE48001BBAF4081800FE91FEFBF3D2B01050D9DB
+:10AE58000A906FE35803E08000C666085808C030BF
+:10AE68001093CFCB06965803E08000BD866BF9DBC4
+:10AE7800C010664AF538000DF3D8C0025F181808EC
+:10AE8800E08000B45809E08100B1405EF1DEC00204
+:10AE98005F093018F00E18005F081049E08000A61E
+:10AEA80088E81808EF19003C1238E089009FE73954
+:10AEB800000EE938000EF0091800E0810097189B91
+:10AEC80015C915D8B168F1E9118815E9F1E91088B3
+:10AED80015F91049120B684A15C915D8B168F1E976
+:10AEE800118815E9F1E9108815F91049123BC7D105
+:10AEF80040EAF40B11EC5C8B681CF01F00A3C11036
+:10AF0800201DFEF802421AD8E06801691AD8FEF836
+:10AF1800027A1AD8FEFC0238F01F008E2FCDC00826
+:10AF2800681C98593008F0091900C0B178088918C8
+:10AF38003008990840D82018E5D8B010F01F0090C4
+:10AF48004059F1D9C001C26068185808C0518869D1
+:10AF5800F0091900C0F0201D4FB81AD8E068017731
+:10AF68001AD8FEF8022A1AD84F9CF01F007A2FCD63
+:10AF7800C0086C4AF539000CF538000DF1E9108865
+:10AF8800A1A85C78F0091608F569000CF568000DB1
+:10AF9800C1F8681B580BC06096593008F0091900B1
+:10AFA800C0E1201D4E881AD8E068017A1AD84F9857
+:10AFB8001AD84E7CF01F00672FCDC0086C1CF01FFC
+:10AFC80000718C6888691208AC6868088D080034BC
+:10AFD800EDF10206E6051700089B304CF01F006EE5
+:10AFE800C058EF440078C0288D044058E218000289
+:10AFF800C071405EF1DEC001E08100A0C0E8406899
+:10B008002FF85C885068405AF1DAC001C060EF3808
+:10B018000026A5B8EF68002640685C786FB910096B
+:10B02800EF49006CEF08007240691218EF5800727F
+:10B03800EF5200745802C1406FF85808C1116FE808
+:10B048005808C0E1201D4C081AD8E06801A11AD898
+:10B058004D281AD84BECF01F003F2FCDC0085805DB
+:10B068005F183009F20119005F1A1468F208180015
+:10B07800C4706A4C580CC4404088E2180002C401ED
+:10B08800F938000CF939000DF3E81089A3B95C7997
+:10B09800F2081608F968000CF969000D300CC3189D
+:10B0A800EF380026EA18FFFFE818FF80EF6800264F
+:10B0B8004AA9F308009C2FF8F358009C5804C04094
+:10B0C800089CF01F0037EF0900743008F0091900D8
+:10B0D800C1406FF85808C1116FE85808C0E1201D39
+:10B0E80049981AD8E06801B41AD84AC81AD8498CBD
+:10B0F800F01F00182FCDC008E06C00FFC028300CEE
+:10B108002F1DD8323008406EF00E19005F1040E84D
+:10B11800A3882FB8AD685C8850985C8E50BE50CB21
+:10B1280030060C94301340EA503A502C066C501CF0
+:10B138003009BAB9FE9FFD8D40682FF85C885068C9
+:10B14800C67B000080039144800391D480038E68FD
+:10B1580080002D4C8003922800007EB08003926806
+:10B16800800392A48000ED7C800392D88000E76879
+:10B17800800392E88000E0F08002DD148000E5386A
+:10B188008000E11C8000E1BC8003911C8003931CBB
+:10B198008003933C8000ED1C800393508000D3F81B
+:10B1A800EBCD40801697129B784E584E5F08587E1C
+:10B1B8005F091248C091582EC070583EC050E06CCC
+:10B1C80000F8E3CD8080580AC031E3CF8080201D8D
+:10B1D80030091AD916985C7A0E9BF01F00045C5C43
+:10B1E8002FEDE3CD808000008000AAE8D401201D67
+:10B1F800300E1ADE301816991C9A1C9BF01F00039B
+:10B208002FED5C5CD80200008000AAE8EBCD40FC82
+:10B2180018974AF87008F0CBFFECF138000CF009E9
+:10B2280016043058F0091900E088004FF2C80005EC
+:10B23800A368F9D8B010C480300A301E30243042D8
+:10B24800EDDCC010E06501FFE0630200F3DAC01036
+:10B25800F6090708FC081800C060C363E80818006E
+:10B26800C271C068F4C8FFFFF5D8B010C298F609DB
+:10B2780000081198E4081800C271F1DAC0102FC84C
+:10B288000C38E0890022F609000811A911B8F1E983
+:10B2980010885C88F0C90001EA091900E60817B0AF
+:10B2A800EF58003CF4C8FFFCF5D8B010C098F60978
+:10B2B800000811985808C0801408F5D8B010F40C8C
+:10B2C8001900FE9BFFC5E3CD80FC00000000178835
+:10B2D800EBCD40E0189616977848F138000DF1D874
+:10B2E800C001C171580BC610764B98EA17C917D818
+:10B2F800B168F1E9118817E9F1E9108817F91049DF
+:10B30800121A4AC87008100A8EE8101AC077C33893
+:10B31800169CF01F00293007C4884A650E9CF73830
+:10B32800000DF1D8C001C1006C4AF539000CF538A0
+:10B33800000DF1E91088A1A85C78F0091608F569F4
+:10B34800000CF568000D7807F01F001C5807C2D0E4
+:10B358006E4B8CEA17C917D8B168F1E9118817E95B
+:10B36800F1E9108817F91049121A6A08100A8EE8CC
+:10B37800101ACD5748F8700C6E4A15C915D8B1681F
+:10B38800F1E9118815E9F1E9108815F9F3E8100BCE
+:10B398008CE8161818085808E08A0008181BAC6BC7
+:10B3A8005C7B6C1CF01F00068D07E3CD80E000007D
+:10B3B8000000178C8000D3F88000D3C48000E62CEE
+:10B3C800D4311895FEF80B8C1188E2180010E08033
+:10B3D8000208F90C00606BAB6B9AFEF80B7A7009E7
+:10B3E800F4090108C1A6123AC071FEF80B6E700884
+:10B3F800F6080108C126FEF80B627008103BC2E18E
+:10B40800FEF80B5C7008F139000EF138000FF1E915
+:10B418001088F00C1900C222FEF80B447008F139AC
+:10B42800000EF138000FF1E91088EB580060FEF8C3
+:10B438000B267008EB480064FEF80B207008EB48F8
+:10B448000068EB0900603008F0091900C070EB399A
+:10B4580000A4F0091800EBF81EA4FEF80AFE700913
+:10B468006B4AF20A01085808E089004B3008EB588B
+:10B478000070FEF90AEE9209F0091900C3D1EB1920
+:10B4880000606BA81009F1DCC01016081039C34120
+:10B49800EB09003A3008F0091900C2E5FEF90ABCC8
+:10B4A8007209123AC291EB390054F2C8FFFF103901
+:10B4B800F9BA0501F3DAE508EBF85E54EB39005404
+:10B4C8003038F0091800E088000FEB090056EB0847
+:10B4D800003C12085C88F0091900E0820137EB583B
+:10B4E8000056C3393038F0091800E081012F0A9C52
+:10B4F800F01F029DC2A93008EB680054C269F40825
+:10B5080011FF1208E08600CE6B78F208010858088F
+:10B51800E08900C8EB3900261298E2180004C090B0
+:10B528001298A3C8EB680026EB080058EB580056A1
+:10B53800300BEB6B004EEB090048A359EB08004AAF
+:10B548001208EB58004CFEFA0A1274096B481019DD
+:10B55800EB590070EB0800721208EB580072EB6BA5
+:10B5680000547408EB4800506A485838E088007363
+:10B57800EB0B0056EB080058F6081900E088000CA1
+:10B58800EB08003C16085C88F00B1900C632EB5833
+:10B598000056C608EB19003CB339F5DBC010F20AB7
+:10B5A8000C0816085C88F00B1900C542EB580056C9
+:10B5B800C5186E08EB48007CEB0600746E1CF01F83
+:10B5C800026BF8061900C112201DFEF809A21AD84C
+:10B5D800E06803B31AD8FEF8099A1AD8FEFC09984D
+:10B5E800F01F02662FCDC008EB0900705809C0C0D3
+:10B5F8006E48F138000DF1D8C001F9BA01FFF3DA4D
+:10B60800E108EBF81C38EB0600746E1CF01F0257BB
+:10B618001816EB5600740E9CF01F0259EB080074C4
+:10B62800E6081900C1A06BF85808C1716BE8580802
+:10B63800C141201DFEF809381AD8E06803BF1AD89E
+:10B64800FEF809401AD8FEFC092EF01F024C2FCD37
+:10B65800C008FEF4090630036BF75807C1B06E4AFC
+:10B6680015C915D8B168F1E9118815E9F1E910880B
+:10B6780015F9104968081019F538000DF1D8C002FD
+:10B688005F188EEA140810095809FE9AFF94E08F93
+:10B69800045A3FF8EB58003A3008EB680038C558B0
+:10B6A8003008EB580070C5186E08EB480078EB06B8
+:10B6B80000746E1CF01F022DF8061900C112201D1F
+:10B6C800FEF808AC1AD8E06803E01AD8FEF808A417
+:10B6D8001AD8FEFC08A2F01F02292FCDC008EB09DA
+:10B6E80000705809C0C06E48F138000DF1D8C0018B
+:10B6F800F9BA01FFF3DAE108EBF81C38EB0600743D
+:10B708006E1CF01F021A1816EB5600740E9CF01FE0
+:10B71800021CEB080074E6081900C1A06BF8580871
+:10B72800C1716BE85808C141201DFEF808421AD8BB
+:10B73800E06803EA1AD8FEF8084A1AD8FEFC083866
+:10B74800F01F020E2FCDC008FEF4081030036BE77F
+:10B758005807C1E0680B6E4A15C915D8B168F1E9F8
+:10B76800118815E9F1E9108815F91049F609010958
+:10B77800F538000DF1D8C0025F188EEA14081019C8
+:10B78800C0766B78F60801085808FE9AFF8F6B0B95
+:10B79800580BC2606B18FEF907C272091218C2076B
+:10B7A800EB0A0048FEF807E070091619F4081403BC
+:10B7B8001019F7D9B0101409EB590048EB08004AE2
+:10B7C800F00A140214185C4B1608EB58004AF3D917
+:10B7D800B06D1208EB58004C3008EB480040FEF8FA
+:10B7E800078290095809E08003966AABFEF807685B
+:10B7F800700AF40811FF1608E08600A0F6C8FFFFDB
+:10B8080014185C7912185808E0890098FEF8077C2B
+:10B8180070175807C111201DFEF807541AD8E068A0
+:10B8280004461AD8FEF807681AD8FEFC074AF01F23
+:10B8380001D32FCDC008141BE04B7FFEE08A001215
+:10B84800201DFEF8072A1AD8E06804471AD8FEF81F
+:10B8580007421AD8FEFC0720F01F01C82FCDC008E8
+:10B868008ED9123BE08A00398E4AF1DAC010103BBB
+:10B87800E08A0012201DFEF806F61AD8E06804498E
+:10B888001AD8FEF807121AD8FEFC06ECF01F01BB06
+:10B898002FCDC008F40B01085C88300A121BAE4893
+:10B8A800AE5A6E078ED91639CFA55C3B5C8B0E9CC1
+:10B8B800F01F01BAC270201DFEF806B41AD8E0685D
+:10B8C80004561AD8FEF806D81AD8FEFC06AAF01FA5
+:10B8D80001AB2FCDC0085C3B5C8B0E9CF01F01AF09
+:10B8E800C110201DFEF806881AD8E068045B1AD833
+:10B8F800FEF806AC1AD8FEFC067EF01F01A02FCD7C
+:10B90800C008FEFA06866E189528FEFB064A7609D8
+:10B91800946812086AA9F0090109B469744A6AA905
+:10B928009709F2081618B4C8F2081610B4D8F20825
+:10B938001608B4E8B4F9C0C8F40B0108C117EB380D
+:10B948000026A1B8EB6800260A9CF01F0196FEF8B5
+:10B958000606700A6AABF40B0108E08602D8EB18F9
+:10B96800002CF0081101140816185808E08902CFB5
+:10B97800163AE0810221FEFA06127448F138000DE9
+:10B98800F1D8C0025F1994681208FEF905D6B2080A
+:10B99800EB09002CF0091900C502744AF539000CAE
+:10B9A800F538000DF1E91088F3D8B010F1D9C001CD
+:10B9B800C090E219FFFEF2081608F568000CF56958
+:10B9C800000DEB09002CFEF805C2B0697048F1388B
+:10B9D800000DE2180002C0502019FEF805AEB0694B
+:10B9E800FEF605A88CEB6C1CF01F016F6C48F13853
+:10B9F800000DF1D8C0025F198C681208FEF90564C1
+:10BA0800B2085C78FEF9055072091208EB19002C8F
+:10BA18006AAA14091238C110201DFEF805521AD856
+:10BA2800E068048B1AD8FEF805821AD8FEFC05488F
+:10BA3800F01F01522FCDC008EAF400805804E080BE
+:10BA480000C1FEF805467048F138000DF1D8C00174
+:10BA5800C3806808EB480080089CF01F0149EAF49D
+:10BA680000805804CF71CAD8F738000DF1D8C0014A
+:10BA7800C1F0644AF538000CF539000DF3E8108977
+:10BA88005C891298E2180002C1311298A1A85C786A
+:10BA9800F0091608F569000CF568000D6448F138DE
+:10BAA800000DF1D8C0025F1984681208AC08680755
+:10BAB800089CF01F01335807E08000820E94C0787C
+:10BAC800FEF604A0FEF30490FEF204C08C0E660C91
+:10BAD800684BF5DEC01017C917D8B168F1E91188AD
+:10BAE80017E9F1E9108817F91049121A180A88E8B5
+:10BAF800101ACBB717C817D9B169F3E8118917E835
+:10BB0800F3E8108917F81248F8080108F3DEC010A6
+:10BB180012085808E08A0053EAF80080704A15C9EC
+:10BB280015D8B168F1E9118815E9F1E9108815F916
+:10BB3800104918195C89FEF80452B0697048F13848
+:10BB4800000DE2180002C0502019FEF8043EB0694A
+:10BB5800FEF604388CEB6C1CF01F01136C48F138AE
+:10BB6800000DF1D8C0025F188C6A100AFEF803F4C1
+:10BB7800B00A5C7AFEF803E07008100AEAF8008060
+:10BB8800704B17C917D8B168F1E9118817E9F1E9BD
+:10BB9800108817F91049123AC110201DFEF803D079
+:10BBA8001AD8E06804C31AD8FEF804041AD8FEFCB0
+:10BBB80003C6F01F00F22FCDC0080897EB4700809E
+:10BBC800FEFA03A09488FEF9038E720912088BA866
+:10BBD800EB09002C9408F0091900C112201DFEF889
+:10BBE800038E1AD8E06804CD1AD8FEF803C61AD80E
+:10BBF800FEFC0384F01F00E12FCDC0081019EB599B
+:10BC0800002C0A9CF01F00ECFEF80380701A94497F
+:10BC18003008F0091900C080FEF803A0910A300925
+:10BC2800FEF803689119FEF803627048F138000DB8
+:10BC3800F1D8C001C060FEF903861388A5B8B288A0
+:10BC4800EAF700805807E08000A46E4A15C915D8A5
+:10BC5800B168F1E9118815E9F1E9108815F9104979
+:10BC68006AA81039E0810095FEF802EC91096E4847
+:10BC7800F138000DF1D8C0025F198EE810096AA8E2
+:10BC880012088BA8EB0E002C8E6C6E48F138000D54
+:10BC9800F7D8C0025F18F3DCC0101208F3DEC0103A
+:10BCA8001238E08A0030C1E881096E48F138000D89
+:10BCB800F1D8C0025F198EE810096AA812088BA88B
+:10BCC800EB0E002C8E6C6E48F138000DF7D8C002D0
+:10BCD800F5DEC010580B5F18F3DCC0101208103ADC
+:10BCE800C1A4201DFEF802881AD8E06804F21AD808
+:10BCF800FEF802D01AD8FEFC027EF01F00A02FCD5D
+:10BD0800C0083006FEF402B43003FEF202B230710D
+:10BD1800FEF00244FC0C0108580B5F19F0090109F8
+:10BD2800EB59002C0A9CF01F00A46E1B9648EC08E7
+:10BD38001900C090680C580CC040F01F00A3C02820
+:10BD4800890B8F136E48F138000DF1D8C001C080FF
+:10BD58000588A5B8A4886A485848EBF10A046E0813
+:10BD6800EB4800800E9CF01F0086EAF70080580719
+:10BD7800C0F06E4A15C915D8B168F1E9118815E9FE
+:10BD8800F1E9108815F910496AA81039C8E0EB39AB
+:10BD98000026F1D9C001C0A01298A1C8A1B8EB68CB
+:10BDA80000260A9CF01F007FD8321298A1A8EB68E1
+:10BDB8000026D8320A9CF01F0085EAF60080580653
+:10BDC800C0714F2CF01F0082EB4C0080D8324E28F7
+:10BDD800700EFCC4FFFF30076C4B17C917D8B16849
+:10BDE800F1E9118817E9F1E9108817F9F3E8100C5F
+:10BDF8001C3CC1614E5890698C68F0091900E088B4
+:10BE080000A74E2CF01F0072E08000A25807EFFC3C
+:10BE18001A00EBFC0A200C9BF01F006ED832580762
+:10BE2800C0F1FC0C0108C4374D8CF01F0069E0809C
+:10BE3800008FEB4C00800C9BF01F0066D8326E4AD6
+:10BE480015C815D9B169F3E8118915E8F3E810891F
+:10BE580015F812485CD81C08C2A6E80C0108580856
+:10BE6800E08900264C9CF01F005A1895C7006E4ABE
+:10BE780015C915D8B168F1E9118815E9F1E91088F3
+:10BE880015F910494B48700B8EE816181208580817
+:10BE9800E08A0008121BAE6B5C7B6E1CF01F004230
+:10BEA8008F050C9B0A9CF01F004BD8326C08580871
+:10BEB800C0400C971096C91BFC0C01085808E08A72
+:10BEC8000047F738000DF1D8C001C4114AFCF01F33
+:10BED80000408D0CC3C06C4A15C915D8B168F1E98A
+:10BEE800118815E9F1E9108815F9104949A8700B6E
+:10BEF8008CE8161812085808E08A002A121BAC6B46
+:10BF08005C7B6C1CF01F0028D8320A9CF01F002FA5
+:10BF1800D8324918700A6AA9F4090108C0A6F4C8F9
+:10BF2800FFFF1218EB19002C12185808E08A0010AD
+:10BF3800EB380026A1B8EB6800260A9CF01F001910
+:10BF4800D8323008EB58003AFE9FFBA8D8320000E0
+:10BF5800000017980000178C00001794000017883D
+:10BF6800000017908000A2A08000E0F0800393906A
+:10BF7800800393D880038E6880002D4C8000D3C442
+:10BF88008003940000007E9C000017A48003942086
+:10BF980080039430800394408000E1BC8003945077
+:10BFA8008000A6D08000E62C800394648003949CD3
+:10BFB800800394D88000CEC60000179C0000179913
+:10BFC800800394F88000E11C8000A6448000D38C94
+:10BFD8008000B2D8EBCD40E818971695FEF90E1000
+:10BFE800F30800922FF8F35800927818FEF60E0422
+:10BFF8008D08118CF9DCC0046E18F00C002CFEF8CA
+:10C008000DF6910CF01F037D6C08118BF7DBC00453
+:10C01800A36B5C3B5C8B0E9CF01F0379C0718E494F
+:10C028003138F0091900E08B0013FEF80DC2F10950
+:10C03800009A2FF9F159009AF10900962FF9F15950
+:10C0480000960E9CF01F036FE3CD80E8FEF80DA468
+:10C05800700C0A9B2F0CF01F036CC0D1FEF80D94D6
+:10C06800700BF7380010B968E618F000FC19E0000A
+:10C078001238C121FEF80D78F10900A02FF9F15905
+:10C0880000A0F10900962FF9F15900960E9CF01FB7
+:10C09800035DE3CD80E88EC83069F6CAFFF02F4B08
+:10C0A8000E9CF01F035A5C8CC120FEF80D42F1096A
+:10C0B80000982FF9F1590098F10900962FF9F159D4
+:10C0C80000960E9CF01F034FE3CD80E8FEF80D2884
+:10C0D8007008F13B000CA58BA36B5C3B0E9CF01F1A
+:10C0E8000348C120FEF80D08F109009A2FF9F1590B
+:10C0F800009AF10900962FF9F15900960E9CF01F4D
+:10C108000341E3CD80E8FEFB0CEE760A15C915D88D
+:10C11800B168F1E9118815E9F1E9108815F91049B4
+:10C12800F2081618B4C8F2081610B4D8F20816089F
+:10C13800B4E8B4F9FEF80CD89109760AF539000884
+:10C14800F5380009B168F1E91188F539000AF1E913
+:10C158001088F539000B1049F2081618F568000820
+:10C16800F2081610F5680009F2081608F568000AC2
+:10C17800F569000BFEF80C9C91097608F138000D62
+:10C18800F5D8C006FEF90C90B28AF1D8C0025F1942
+:10C198008E481208F7D8B010FEF80C80B00BFEF8E5
+:10C1A8000C7E70035803E08005F766485808C09075
+:10C1B80058A8C1905818C3C1C2B872485808C111CC
+:10C1C800201DFEF80C5E1AD8E06800B71AD8FEF8F1
+:10C1D8000C561AD8FEFC0C54F01F03152FCDC008BE
+:10C1E80058A8C111201DFEF80C3A1AD8E06800B80A
+:10C1F8001AD8FEF80C3E1AD8FEFC0C30F01F030CBF
+:10C208002FCDC0085818C040069C1293C1E8201DC5
+:10C21800FEF80C101AD8E06800B91AD8FEF80C1805
+:10C228001AD8FEFC0C06F01F03022FCDC008FEF83A
+:10C238000BC670060D890D98F1E91088FDD8B0106D
+:10C24800FEF80BB0700A300CE7080024FC0819004F
+:10C25800C5A10DA80DB9F3E81089E708001CF2087C
+:10C268001900C511F539000CF538000DB168F1E970
+:10C278001188F539000EF1E91088F539000F1049D9
+:10C2880066181238C401F5390010F5380011B16884
+:10C29800F1E91188F5390012F1E91088F539001330
+:10C2A800104966081238C2F166380638C111201DD7
+:10C2B800FEF80B701AD8E06800C21AD8FEF80B7C9A
+:10C2C8001AD8FEFC0B66F01F02DA2FCDC008580CF6
+:10C2D800C2009938FEF80B4870098739910366380F
+:10C2E8000638C171201DFEF80B3A1AD8E06800C85C
+:10C2F8001AD8FEF80B4A1AD8FEFC0B30F01F02CCF5
+:10C308002FCDC00866395809FE91FF59E08F0544C2
+:10C31800FEF60AE46C08F13C000DF9DCC006F01FDB
+:10C3280002C9FEF90B22300A930A8E48B2686E18C9
+:10C33800932893176C089348FEF80B10910AFEF89F
+:10C348000B0EB08AE6FA0084580AE081018FE08F6C
+:10C3580001AF784858A8C110201DFEF80AC61AD89F
+:10C36800E06800D21AD8FEF80AEA1AD8FEFC0ABC1D
+:10C37800F01F02AF2FCDC008F9080024EC081900FF
+:10C38800C711F905001C1DA91DB8F1E91088F005B1
+:10C398001900C681F539000CF538000DB168F1E9CE
+:10C3A8001188F539000EF1E91088F539000F1049A8
+:10C3B80078181238C571F5390010F5380011B168D0
+:10C3C800F1E91188F5390012F1E91088F5390013FF
+:10C3D800104978081238C461FEF80A3C118912988D
+:10C3E800E2180004C3A11298E2180002C210FEF875
+:10C3F8000A1E700E78A8FC080109C216F918002C4C
+:10C40800F20801085808E089001B201D5C7BF1D662
+:10C41800C0101AD8F1D5C010F4C9FFF42F0A1C0BAC
+:10C42800FEFC09F0780CF01F028C2FEDC168F1D9E1
+:10C43800C001C050FEF80A24700899D8FEF809DC3B
+:10C4480090093008F0091900C080F9380026A1B811
+:10C45800F9680026F01F02820E9CF01F026AE3CDE5
+:10C4680080E8783C580CFE91FF76FEF809F67005D6
+:10C478005805E08004A6FEF8097A700AFEF80978E3
+:10C48800700E300B5805C1506A0C580CC120F53994
+:10C498000010F5380011B168F1E91188F53900127A
+:10C4A800F1E91088F53900131049123CE08100D7F2
+:10C4B8001DA81DB9F3E81089EB08001CF208190043
+:10C4C800E08100CD580BC0806A389738FEF909948E
+:10C4D80072088B389305FEF8093E11891298E21804
+:10C4E8000010C240FEF809107006FEF80906700A2E
+:10C4F800201D0DA80DB5FEF909229283FEF9091039
+:10C50800720BFEF9090E720C0D8E0D99F3EE10895F
+:10C518001AD9EBE81088F4C9FFF42F0AE60B000BD0
+:10C528002FFCF01F024D2FEDC9481298E2180002A7
+:10C53800E0800090EB3C0014F01F024B1896C0916D
+:10C54800FEF908ACF308009C2FF8F358009CC818B3
+:10C55800FEF808A0700AF4C8FFF0C0313009C0F82E
+:10C56800F5390010F5380011B168F1E91188F5398D
+:10C578000012F1E91088F539001310498D09EB080C
+:10C58800001CED58001CFEF8086A700AF4C8FFF495
+:10C59800C0313009C0F8F539000CF538000DB16824
+:10C5A800F1E91188F539000EF1E91088F539000F25
+:10C5B80010498D19FEFA0840740811891198F1E99B
+:10C5C8001088ED58002430388D48FEFB0842760864
+:10C5D8002FF88DA88DC87408F139000EF138000FB6
+:10C5E800F1E91088ED580060ED58005876082018D9
+:10C5F800ED4800646A688D686A888D888A48E21800
+:10C608000199AC48FEF9081872088D3893060C9CFD
+:10C61800F01F0216ECCBFFFCED1C003CF01F0214CF
+:10C62800ED5C003C201D30181AD830083129109ACA
+:10C63800109B0C9CF01F020F5C5C2FED580CC06027
+:10C64800300B0C9CF01F020CC0480C9CF01F02041D
+:10C658000E9CF01F01ECE3CD80E86A385808E080B2
+:10C6680003B00A9B1095C0FBE6F8008C5808C07010
+:10C678003009069B666C5D185C5CC0783009069BC7
+:10C68800129CF01F01FE5C5C580CC0513008E74852
+:10C698000084C0D8FEF90758F30800962FF8F3581D
+:10C6A80000960E9CF01F01D7E3CD80E8FEF807D076
+:10C6B8009103FEF8076211891298E2180004C380FA
+:10C6C800664A582AC0916778FEF9074872091238F5
+:10C6D800E08102A7C218FEF80736700966A810198B
+:10C6E800E086029FE718002CF20801085808E08944
+:10C6F8000298E08F0375201DFEF807281AD8E06815
+:10C7080002271AD8FEF8077C1AD8FEFC071EF01F6D
+:10C7180001C82FCDC008FEF807361189A3B9B08922
+:10C72800E7380026A1C8E7680026E08F027A129849
+:10C73800E2180002C100664820285818E088000C5A
+:10C74800E7380026A1B8E7680026069CF01F01C458
+:10C75800E08F0267FEF80704700887D83008E7689A
+:10C7680000A5069CF01F01C16648F0C9000258796F
+:10C77800E08B0257FEF80710F009032FFEF8069821
+:10C78800118B1698E21800125928E081008C67F87E
+:10C79800704A15C915D8B168F1E9118815E9F1E9A8
+:10C7A800108815F910492FF9FEF806687008103935
+:10C7B800C791E70800722FF8E7580072FEFA065092
+:10C7C80074082FF887A887C8FEF806487008E74855
+:10C7D8000050FEF806227008F139000EF138000FFB
+:10C7E800F1E91088E758006074082018E7480064E9
+:10C7F80030488748E608000BE71C003CF01F019C06
+:10C80800E75C003C5C7CF80C002CA17CE75C0058E1
+:10C81800E70900563018F0091900C061E718003C14
+:10C82800A1785C88C038E708003CE7580056E7085C
+:10C8380000745808C111201DFEF805E81AD8E068F0
+:10C8480002591AD8FEF806441AD8FEFC05DEF01F75
+:10C8580001782FCDC0082018E758007467FC7808C5
+:10C86800E748007C5808F9B800FFE7F80C1DF9B84C
+:10C878000100E7F81C1DE7F81E4EF01F0185E6F8D9
+:10C8880000905808C050300A069B666C5D18E7385F
+:10C898000026A1B8E7680026069CF01F0171E08F0A
+:10C8A80001C01698E2180010E08001BBFEF80548A8
+:10C8B800700EFEF8053E700A201D1DA81DB6FEF973
+:10C8C800055A928BFEF9054872051D8C1D99F3ECEB
+:10C8D80010891AD9EDE81088F4C9FFF42F0A0A0B59
+:10C8E800FEFC0530780CF01F015C2FEDE08F0199FC
+:10C8F800FEF8052411891298E2180010C7B0FEF856
+:10C908000512700767485CD80E08C5566778EE08A8
+:10C9180001085808E0890050304887486688580858
+:10C92800C111201DFEF804FC1AD8E068027E1AD84E
+:10C93800FEF805601AD8FEFC04F2F01F013D2FCD69
+:10C94800C008300A069B666C5D185C5CC070301BC2
+:10C95800069CF01F0149E08F01D9E7070056069CA5
+:10C96800F01F014DE70800705808F9B901FFF1D927
+:10C97800E108E7F81C383018F0071900C061E7181B
+:10C98800003CA1785C88C038E708003CE7580056AE
+:10C99800FEF804BC1188E2180020E0800142E73864
+:10C9A8000026A1B8E7680026069CF01F012D307804
+:10C9B8008748C369FEF80440700EFEF80436700A12
+:10C9C800201D1DA81DB6FEF90452928BFEF90440E5
+:10C9D80072051D8C1D99F3EC10891AD9EDE81088A1
+:10C9E800F4C9FFF42F0A0A0B0E9CF01F011B2FED50
+:10C9F800C1791298E2180002E080011366A8201895
+:10CA0800FEF9040C72091238E081010B069CF01F34
+:10CA18000123C069069CF01F0120FEF8043211882A
+:10CA2800E2180020E08000FDE7380026A1B8E7689A
+:10CA38000026069CF01F010A30788748CF18069C0C
+:10CA4800F01F0115FEF804081188E2180020C4C080
+:10CA5800FEF803C41188E2180010C3B06778FEF925
+:10CA680003B272091238C351E7380026A1B8E76843
+:10CA78000026069CF01F00FA069CF01F0109FEF82C
+:10CA8800039E700A1433C04166399109C188FEF8C3
+:10CA98000412910A580AC13074391233C0B114997A
+:10CAA800C04872381033C04166389338C08810992E
+:10CAB800C038FEFA03EE95095809CF413008873887
+:10CAC80030A88748FEF903E0720887389303CA88BC
+:10CAD800E7380026A1B8E7680026069CF01F00E0AA
+:10CAE80030888748C9D8FEF8032E1188E21800104C
+:10CAF800E08000976778FEF9031A72091238E0811E
+:10CB0800009030688748C8C8069CF01F00E3FEF80C
+:10CB1800033E1188E2180020E0800083E7380026F1
+:10CB2800A1B8E7680026069CF01F00CD069CF01F00
+:10CB380000DCFEF802EA70091233C0416639910937
+:10CB4800C178FEF8035E91095809C1207238103384
+:10CB5800C0801099FEFA034CC08872381033C04167
+:10CB680066389338C058109995095809CF7130081C
+:10CB7800873830A88748FEF9032E72088738930350
+:10CB8800C4F8069CF01F00C4FEF8028C1188E21855
+:10CB98000010C4606778FEF9027A72091238C4017D
+:10CBA800069CF01F00BFFEF8027670091233C041E0
+:10CBB80066399109C178FEF802EA91095809C1203D
+:10CBC80072381033C0801099FEFA02D8C0887238C3
+:10CBD8001033C04166389338C058109995095809E0
+:10CBE800CF713008873830A88748FEF902BA720832
+:10CBF80087389303C158069CF01F00A7FEF8021857
+:10CC08001188E2180010C0C06778FEF902067209A0
+:10CC18001238C061FEF902381388A5A8B288FEF858
+:10CC2800022E11891298E2180008C110E6F800983F
+:10CC38005808C0403FAB666C5D18069B4F8CF01FD0
+:10CC4800009B069B302CF01F009AC5F81298E2183A
+:10CC58000010C0A0069B4F2CF01F0094069B302CA0
+:10CC6800F01F0093C528E70A0070580AC090E6F83C
+:10CC780000885808C0505C7A069B666C5D184F386F
+:10CC880070095809C2704E481188E2180008F3F874
+:10CC9800180DF9BA0101F1DAE138F3F81E0DE6F7DB
+:10CCA800008C5807C09030094E88700A069B666C45
+:10CCB8005D175C5CC09830094E48700A069B129C50
+:10CCC800F01F006E5C5C580CC0504E087008E748B6
+:10CCD80000844DF81188E2180020C110E6F8008C95
+:10CCE8005808C0703009129A069B666C5D18C078A7
+:10CCF8003009129A069B129CF01F006030094E08FA
+:10CD08009109069CF01F005630084DD993084CE84D
+:10CD1800701C580CC300F01F003B30094CA8911937
+:10CD2800C2A84B39F30800A02FF8F35800A0F30865
+:10CD380000962FF8F35800964AF8700E4AD8700AF1
+:10CD4800201D1DA81DB64B59928B4B1972051D8CC1
+:10CD58001D99F3EC10891AD9EDE81088F4C9FFF48D
+:10CD68002F0A0A0B4ABC780CF01F003B2FED0E9CD3
+:10CD7800F01F0024F01F004FC371201D4A981AD8D5
+:10CD8800E06801771AD84CC81AD84A8CF01F0028D6
+:10CD98002FCDC0084C48700C580CFE90FB687848A2
+:10CDA80058A8FE91FADB4948700E1D891D98F1E9D3
+:10CDB8001088EDD8B01048F8700AFE9FFADF48E6F0
+:10CDC8006C08F13C000DF9DCC006F01F001E6C0871
+:10CDD800F138000DE2180004CCB1CA4B580AFE9095
+:10CDE800FC8CFE9FFC9AE3CD80E8000000007EB03A
+:10CDF800000017A0000017888000D0268000E1BC42
+:10CE08008000E5388000F8A48000FEB40000178C8C
+:10CE180000001794000017980000179000007E98F3
+:10CE2800800393908003952080038E6880002D4CAA
+:10CE380080039548800395748003959C800395C86A
+:10CE48008000D024000017A40000179C0000179948
+:10CE5800800395F48000A50000007E9C8000A6D089
+:10CE680000007EA08000DBE88000B2148000D2CCF5
+:10CE78008000AAE88000DB288000DFB400007E94F0
+:10CE88008003962480039370800396448000D3C463
+:10CE98008003965C8000B3C88000A21A8000D42466
+:10CEA80000007EA400007EAC8000D4848000ED1CCD
+:10CEB8008000D06080039670E06C00FB5EFCEBCDD8
+:10CEC800408078ABF907002CF1D7C010F00B000EAA
+:10CED80078CAF909003CE0680400F0091900E08804
+:10CEE8000005E0690400C0285C79FC0A01081218F2
+:10CEF800C086F957002E78C8FC08010CE3CD808065
+:10CF0800F60A01085808E08A00073008F958002E88
+:10CF1800E3CF8080F40B010BF95B002EE3CF808018
+:10CF2800EBCD40F84A98700B4A98700C4A98700EEE
+:10CF38004A98900A3007E064100016961C931895DA
+:10CF4800F4C8FFFFF5D8B010F4071900E80A1790E5
+:10CF5800580BC100F708001CF4081900CF200C99E1
+:10CF6800C068F308001CF4081900CEB072395809DB
+:10CF7800CF91580CC100F908001CF4081900CE1014
+:10CF88000A99C068F308001CF4081900CDA072398A
+:10CF98005809CF91580EC04148F8B00AC128FD0879
+:10CFA800001CF4081900CCD00699C068F308001CCE
+:10CFB800F4081900CC6072395809CF914868B00A52
+:10CFC8004858900CE3CD80F800007E9800007EACB5
+:10CFD80000007EA0000001F4F96B00145EFC996B60
+:10CFE8005EFCF94B008C5EFCF94B00885EFCF94B4B
+:10CFF80000985EFC998B5EFCF94B0094F96A003945
+:10D008005EFCD70348494858700C7208100C930C02
+:10D018005EFC0000000001F000007E9C5EFC5EFCEF
+:10D0280048B870085808C04070385808CFE1489888
+:10D0380070085808C04070385808CFE14868700830
+:10D0480058085E0C70385808CFE15EFC00007E98E6
+:10D0580000007EA000007EACD4014AD870085808B1
+:10D06800C3A070495809C0905819C16058A9C30194
+:10D07800C22870495809C0E1201D4A681AD8E068DA
+:10D0880005AC1AD84A481AD84A4CF01F00252FCDAB
+:10D09800C0085819C0E1201D49E81AD8E06805AD54
+:10D0A8001AD84A081AD849DCF01F001D2FCDC0082D
+:10D0B80058A9C0E1201D49781AD8E06805AE1AD8E9
+:10D0C80049981AD8495CF01F00162FCDC00870384F
+:10D0D8005808CD01495870095809C180724858A8A4
+:10D0E800C120C048724858A8C0E0201D48981AD8E6
+:10D0F800E06805B11AD848E81AD8488CF01F00082B
+:10D108002FCDC00872395809CEE1DA0A00007E989E
+:10D118008003969C800396E080038E6880002D4CE7
+:10D128008003970C8003973800007EAC80039768D3
+:10D13800EBCD40E018951697149678485808C0E04B
+:10D14800201D4D781AD8E068011A1AD84D581AD8F7
+:10D158004D5CF01F00562FCDC008580AC051F01F73
+:10D168000054EDDCB0104D38700A580AC200F508BA
+:10D17800001CEC081900C181580AE080008C740B6F
+:10D18800580BE08000885807E08000850F890F98C9
+:10D19800B168F1E911880FA9F1E910880FB91049B0
+:10D1A800C790123BC770743A580ACE214C28700AAF
+:10D1B800580AC1D0F508001CEC081900C151580ADA
+:10D1C800C690740B580BC6605807C6400F890F9855
+:10D1D800B168F1E911880FA9F1E910880FB9104970
+:10D1E800C590123BC570743A580ACE514B38700A34
+:10D1F800580AC1D0F508001CEC081900C151580A9A
+:10D20800C490740B580BC4605807C4400F890F981A
+:10D21800B168F1E911880FA9F1E910880FB910492F
+:10D22800C390123BC370743A580ACE514A48700AE8
+:10D23800580AC160F508001CEC081900C0E10F8904
+:10D248000F98B168F1E911880FA9F1E910880FB9B1
+:10D25800104974081238C1E0743A580ACEC1580708
+:10D26800C1100F890F98B168F1E911880FA9F1E988
+:10D2780010880FB91049C060304A0E9B0A9CF01FF5
+:10D288000011EB56001C48D972088B389305E3CF80
+:10D2980080E0E06C00F5E3CD80E000008003969C20
+:10D2A8008003979480038E6880002D4C8000CF28DF
+:10D2B80000007EA000007E9800007EA800007EACE2
+:10D2C8008002DD14EBCD40801897169CF01F0009F2
+:10D2D800C0D0F90C002C580CC090F8C80028EE08F3
+:10D2E8001900EE081720EFD8B0100E9CE3CD80800F
+:10D2F8008000FADCEBCD40801897169AF90B002CC9
+:10D30800F3DAC010F1DBC010E06CFFFFF808010889
+:10D318001039E08A000F201D49581AD8E06801BD6D
+:10D328001AD849481AD8494CF01F00142FCDC00804
+:10D33800F40B0008EF58002CE0690800F208190007
+:10D34800F20817B0EFF8BC160E9CF01F000DE04C69
+:10D3580001FFE08A000AEF380026A1B8EF6800262E
+:10D368000E9CF01F0008E3CD808000008003969C8F
+:10D37800800397BC80038E6880002D4C8000CEC649
+:10D388008000A6D0EBCD40C01896304CF01F000AA4
+:10D398001897C0E0ECE80000F8E90000ECE80008A5
+:10D3A800F8E900086C489948781CF01F00040E9CA6
+:10D3B800E3CD80C08000ED7C8000E106EBCD40C06D
+:10D3C8001897580CC0313006C0D8781C580CC0319A
+:10D3D8003006C048F01F000518960E9B304CF01F11
+:10D3E80000040C9CE3CD80C08000E5388000ED1C73
+:10D3F800EBCD40C0580CC0C030077806F01F0007BE
+:10D408000E0CEFDCC0085806C0400C9CCF7B3007E0
+:10D418000E9CE3CD80C000008000D3C4EBCD40C09B
+:10D428001897784A580A5F1858AA5F191268C200F4
+:10D43800581AC1E0F8FC0084580CC060F01F000EB8
+:10D448003008EF4800843FF8EF58003AEEFC0080BF
+:10D45800F01F000A3006EF4600806FECF01F00074F
+:10D468006FFCF01F0006EF460078EF46007CE3CD26
+:10D4780080C000008000E5388000D3F8EBCD40C0C4
+:10D48800169778091639C04172389908C1684BC88F
+:10D4980091095809C12072381638C0B1C05870397E
+:10D4A8000E39C05110996E389338C0781298C02838
+:10D4B8004B3A95085808CF4130068F360E9CF01F1E
+:10D4C80000316E4858A85F1958185F181069EC09A0
+:10D4D8001800C0D0EF390026F1D9C001C0801298D9
+:10D4E800A1B8EF6800260E9CF01F00276E48581858
+:10D4F800C3206FE85808C0E0201D4A481AD8E068E1
+:10D5080004F91AD84A281AD84A2CF01F00232FCD1C
+:10D51800C0086FF85808C0E0201D49C81AD8E0684C
+:10D5280004FA1AD849D81AD849ACF01F001B2FCDD5
+:10D53800C008EEF800805808C0E0201D49381AD805
+:10D54800E06804FC1AD849681AD8492CF01F001260
+:10D558002FCDC00830088F48F01F0012C0E1201DF1
+:10D5680048A81AD8E06805021AD848F81AD8489C7A
+:10D57800F01F00092FCDC008E3CD80C000007EA4B5
+:10D588008000D4248000A6D08003969C800397E076
+:10D5980080038E6880002D4C800397F880039814D0
+:10D5A8008000D0608003982CEBCD40C01897784855
+:10D5B8005808C0E0201D4AC81AD8E06801751AD872
+:10D5C8004AA81AD84AACF01F002B2FCDC008303C0F
+:10D5D800F01F00291896C031E3CF80C06E689968A3
+:10D5E800EF08001CF958001C301899488E48A1B85B
+:10D5F800B848EF38000BF968000BEF38000AF968F3
+:10D60800000A5807F9B80000EFF81000990849B85F
+:10D61800700A0E3AC04174399109C1684988910A63
+:10D62800580AC12074390E39C0B11499C0487238EB
+:10D638000E38C0416E389338C0781099C028490A0E
+:10D6480095095809CF5130088F380E9B302CF01FA0
+:10D65800000D48D88D8848D972088D3893060C9CDF
+:10D66800E3CD80C08003969C8003984C80038E682D
+:10D6780080002D4C8000ED7C00007EA800007EA478
+:10D688008000ED1C8000CEC000007EA0D431FEF8E2
+:10D69800043270092FF99109FEF8042C7007580715
+:10D6A800E08001B26E485808C0F05818C1F058A878
+:10D6B800C2F0300430C3FEF2040A30010890C39867
+:10D6C8006C485808C111201DFEF804001AD8E068FB
+:10D6D80002571AD8FEF803F81AD8FEFC03F6F01F12
+:10D6E80000FE2FCDC0085818C111201DFEF803DC1C
+:10D6F8001AD8E06802581AD8FEF803E01AD8FEFCD7
+:10D7080003D2F01F00F52FCDC00858A8C111201D65
+:10D71800FEF803B81AD8E06802591AD8FEF803C010
+:10D728001AD8FEFC03AEF01F00EC2FCDC0080C97F2
+:10D738005828C081EF38004E306AF4081800E0809D
+:10D7480001B7EF38004EE6081800C0313016C71888
+:10D75800EF3800A4E2081800C210EEF800A02FF875
+:10D76800EF4800A0EF3900A4FEFA0378F409000995
+:10D77800F339FFFF1238C5C3EF4000A0EF3800A40B
+:10D788003069F2081800E08B00052FF8EF6800A454
+:10D798000E9CF01F00D50096C4C8EF08003A300A66
+:10D7A800F4081900F9B90401F1D9E408EFF84C1D9F
+:10D7B8006FF85808C3D0EF09003AEF08004CF00999
+:10D7C8001900C3656E485828C110EF080048A358CF
+:10D7D800EF09004A1208EF39004EFEFA030EF40969
+:10D7E8000709F0090948EF58004C3009EF59003A89
+:10D7F800EF090060EF080056F2081900F20817B0A8
+:10D80800F1D8C02FEF580058EF09003CF208190072
+:10D81800C062F1D9C010A178EF580058EF08003C59
+:10D82800EF5800560E9CF01F00B20096C0280096D4
+:10D838006E4A586AC0E164086ED91218E048002898
+:10D84800F9B90B01EDD9EB08E06900FFF1D9EB2636
+:10D858008EC8E2180008C3D0584A5F08587A5F0992
+:10D868001248E2081800C35064096ED8F208010C87
+:10D87800EEFB009CEA684CB8F6080009E06A4DD354
+:10D88800EA1A1062F20A0648A599123CE0880008D4
+:10D89800ECC8FFFFEDD8C0083015C1C8EF3900A5A6
+:10D8A800E07A24F8B5391609E06A4DD3EA1A10620D
+:10D8B800F20A0648A599123CE088000C0E9CF01F5D
+:10D8C800008DEF3800A52FF8EF6800A50095C02857
+:10D8D8000095EEFC0080580CC0E064096ED8101961
+:10D8E800EF08004CF00810061039C053F01F0082F2
+:10D8F800EF4000806E4A583AC0D164086ED91218B9
+:10D90800E0480028E0880007ECC8FFFFEDD8C00811
+:10D91800C108589AC0E164086ED91218E04800F0AE
+:10D92800F9B90B01EDD9EB08E06900FFF1D9EB2655
+:10D938005806C4B00E9CF01F00715804C1504E2800
+:10D9480070081037C0E1201D4E081AD8E06802E4BC
+:10D958001AD84EB81AD84DFCF01F005F2FCDC0085A
+:10D968006E388938C1584D8870080E38C0E0201DBF
+:10D978004D681AD8E06802E81AD84E281AD84D5CC3
+:10D98800F01F00552FCDC00870394CF89109EEF8FA
+:10D9980000985808C0403FBB6E6C5D185805C0F031
+:10D9A800201DEF1800241AD8EF18001CEEC9FFFC40
+:10D9B8000E9A6EAB6F7CF01F00542FED6E360E9BE7
+:10D9C800302CF01F0052C1C8EF3800382FF8EF682C
+:10D9D8000038EF390039F0091800E08B0010EF61CA
+:10D9E8000038EEF800945808C0600E9B6E6C5D1805
+:10D9F8005C5CC0410E9CF01F00466E360E945806C3
+:10DA0800FE91FE604C3870075807C5A06E4858A8AC
+:10DA1800C09130054AB330224BE4C1286C4858A85D
+:10DA2800C0E0201D4A981AD8E068030C1AD84BA801
+:10DA38001AD84A8CF01F00282FCDC0080C9766080A
+:10DA48006ED91218E04800F0E08B00356E360E955E
+:10DA5800C2B868081037C0E1201D49C81AD8E06864
+:10DA6800031B1AD84AD81AD849ACF01F001B2FCD6F
+:10DA7800C0086E388B38C13868080E38C0E0201DE1
+:10DA880049281AD8E068031F1AD84A581AD8491CD6
+:10DA9800F01F00112FCDC008703889086E360E9B14
+:10DAA800049CF01F001A5806CBA1D8326E4A3016D3
+:10DAB800CD0A0E9CF01F00115805CCC1CDEBD83211
+:10DAC80000007E9C00007E988003969C80039870DE
+:10DAD80080038E6880002D4C8003989C800398C832
+:10DAE80080039A6C8000A3148003968C8000AAB0EF
+:10DAF8008000A4448000D3F88000D424800398F8E0
+:10DB0800800399248000A5008000ED1C8000A6D029
+:10DB180000007EAC8003995080039980800399A807
+:10DB2800D431202D18971694784858A8C0A1189B6E
+:10DB38004A6CF01F00270E9B302CF01F0026C438BB
+:10DB4800797078A1580CF9B80000F9F8100050085D
+:10DB5800F8C8FFFCEFF810015018F902001CF9038F
+:10DB68000024F8F600987865189B49BCF01F001847
+:10DB78006FFC580CC030F01F00196FEC580CC03007
+:10DB8800F01F0016EEFC0080580CC030F01F001388
+:10DB98000E9B302CF01F000F5806C0403FBB0A9C5C
+:10DBA8005D165804C100201DF1D3C0101AD8F1D257
+:10DBB800C010FAC9FFF4FACAFFF8029B009CF01FD4
+:10DBC80000082FED2FEDD83200007EAC8000D48401
+:10DBD8008000ED1C00007E988000D3F88000A5002E
+:10DBE800EBCD40C01896302CF01F00521897C58115
+:10DBF8004D18700A580AC1704D08700B3009129CF4
+:10DC080074D8F60801081238F40C1720F2081730F7
+:10DC1800743A580AC0301099CF4B580CC040301B8A
+:10DC2800F01F0047302CF01F00431897C3314C58A1
+:10DC3800700A580AC2404C18700737FB300E1C9CFB
+:10DC4800F5390014F2061800C0D3F6091800E08B65
+:10DC5800000A74D8EE080108103EE08B0004149CFA
+:10DC6800C03816991C98743A580AC040129B109EE6
+:10DC7800CE8B580CC040301BF01F0031302CF01FE9
+:10DC8800002D1897C5304B09F30800D42018F35815
+:10DC980000D44AD9F30800D42018F35800D4E06A15
+:10DCA80000A8300B0E9CF01F00293408EF68001400
+:10DCB800E0681000EF5800723006EF560074E06814
+:10DCC8000800EF58002CEF58002EEF66000A3FF8C6
+:10DCD800EF68000BE0680200EF58003C3068EF582E
+:10DCE800004CEF560048EF58004A3FF8EF58003A0A
+:10DCF8003018EF580056F01F0016EF4C0068EF4C34
+:10DD0800005CEF4C0050EF4C006C48C870088FD88E
+:10DD1800EF66003848F8EF48008CE068DD00EA1844
+:10DD2800006DEF48009CEF6600A50E9CE3CD80C017
+:10DD38008000ED7C00007EAC00007E9C8000DB282B
+:10DD480000007E9800007EB08002DE9A8000D00C31
+:10DD58008000DFB4D401340CF01F0002D8020000A8
+:10DD68008000DBE8D4211897169614951294784809
+:10DD78005808C0E0201D4C281AD8E068020A1AD8B2
+:10DD88004C081AD84C0CF01F00412FCDC008580B76
+:10DD9800C041E06600F7C718304A140CF01F003C79
+:10DDA800EF550024EF09001C3008F0091900C05194
+:10DDB800F01F0038EF5C001CF01F003730098FA9F6
+:10DDC800EF4C005C201CEF4C0050EF4C006CE068FE
+:10DDD8000800EF58002CEF58002E8FC9EF5800604C
+:10DDE800E0680200EF58003C0C9BE06C0200F01F5A
+:10DDF800002BEF5C003C3018EF580056F1DCC010E7
+:10DE0800F0080028A178EF58005830288F48EF44D0
+:10DE180000904A38700A0E3AC04174399109C168B5
+:10DE28004A08910A580AC12074390E39C0B11499A8
+:10DE3800C04872380E38C0416E389338C07810998F
+:10DE4800C028498A95095809CF51300B8F3B496939
+:10DE580072088F389307201D30181AD81698302961
+:10DE6800169A0E9CF01F0011EDDCC0082FED580625
+:10DE7800C0410E9CF01F000E0C9CD8228003969C7B
+:10DE8800800399D080038E6880002D4C8002DD14B9
+:10DE98008000CF288000D00C8000D2CC00007EA863
+:10DEA80000007EA400007E988000AAE88000A6D02A
+:10DEB800EBCD40C0189778485828C3D0E08B0007AE
+:10DEC8005808C0B05818C071C2C85848C460C3D3F5
+:10DED8005878C4B03007C5084AD870091839C04105
+:10DEE80072399109C1584AB891095809C110723854
+:10DEF8001838C07010994A7AC08872380E38C041F4
+:10DF08006E389338C058109995095809CF71300662
+:10DF18008F360E9B302CF01F00200C9CE3CD80C068
+:10DF2800189B49ECF01F001E0E9B303CF01F001A96
+:10DF3800E3CF80C0189B49BCF01F00190E9B302C02
+:10DF4800F01F0015E3CF80C0301BF01F00175C5C8A
+:10DF5800C1B130588F48C108301BF01F00135C5CFA
+:10DF6800C13130588F48C088301BF01F000F5C5CEF
+:10DF7800C0B130988F485807C031E3CF80C00E9C9D
+:10DF8800F01F000A300CE3CD80C0000000007EA81E
+:10DF980000007EA48000ED1C00007EA08000D484D8
+:10DFA80000007E988000B1F48000A6D0EBCD4080C0
+:10DFB800169C1497580AC09094CBF01F00090E9C29
+:10DFC800F01F0008E3CF80805809C030E3CF80807D
+:10DFD800F01F00055C5CE3CD808000008000D2FC6F
+:10DFE8008000E5388000DEB8EBCD40C049A8700756
+:10DFF8005807C2E03006EEFA0084580AC140EEF82D
+:10E00800008C5808C0700C990E9B6E6C5D185C5C97
+:10E01800C0780C990E9B0C9CF01F00105C5C580C8F
+:10E02800EFF60A21EF390026F1D9C001C0E01298B5
+:10E03800A1B8EF6800260E9CF01F0009EF380026F3
+:10E04800E018FFFCEF6800266E375807CD51E3CD86
+:10E0580080C0000000007E988000DFB48000A6D059
+:10E06800D401F01F0007487913882FF85C58B2884C
+:10E07800F1D8C001C030F01F0004D8028000DFF0E2
+:10E08800000017B88000D694EBCD40F818947819A2
+:10E09800F3350009494870075807C230F2C3FFF446
+:10E0A8003006EF3800100A38C1616E585808C13080
+:10E0B8000699089A0E9B6E6C5D18C0D05806C03140
+:10E0C800E3CF90F86E388D38487972088F38930707
+:10E0D800E3CF90F86E385808C0400E961097CE2BB4
+:10E0E800E3CF80F8000017BC580CC0313008C07866
+:10E0F80030082FF85C58780C580CCFC15EF8580CD3
+:10E10800F9F81207F9B90101F1D9E108F9F81C0782
+:10E118005EFCD703D401580C5F08580B5F091248FE
+:10E12800C05178085808C0F1C168201D49681AD83C
+:10E13800E068028F1AD849581AD8495CF01F0015B0
+:10E148002FCDC008984896491208B848780C780826
+:10E158005808CF9198499858F2081900C0E0201D36
+:10E1680048981AD8E06802971AD848B81AD8488C3C
+:10E17800F01F00082FCDC00896481208B848990B20
+:10E18800D802000080039A7480039AB880038E68CE
+:10E1980080002D4C80039AF0EBCD40401696F01F7E
+:10E1A80000040C9CF01F0003E3CD80408000E11CBC
+:10E1B8008000E106EBCD40C0580CC0E1201D4B7833
+:10E1C8001AD8E06801B01AD84B581AD84B5CF01F1F
+:10E1D80000362FCDC008580BC031E3CF80C03008BF
+:10E1E800F00B1900C164F6081100EFD8B010985868
+:10E1F800EE081900C0F2201D4A881AD8E06801B755
+:10E208001AD84AA81AD84A7CF01F00272FCDC00870
+:10E218001697F93E000C78163009F20E19005F0ABD
+:10E228003038F00E19005F08104AF20A1800C0B022
+:10E23800EC0B01099919F8C8FFF01039C232991688
+:10E24800E3CF90C0FCC900013018F0091900E08B39
+:10E25800000D3008F00B1900C1D49858EE081900C9
+:10E26800C19316169916C0E8201D48C81AD8E06848
+:10E2780001E61AD848E81AD848ACF01F000B2FCD91
+:10E28800C00898581608B85898481608B848E3CFF0
+:10E2980080C0E3CF90C0000080039A748003A54C2F
+:10E2A80080038E6880002D4C80039B2080039B4058
+:10E2B800D43116921495129A580CC0E1201D4AE8E0
+:10E2C8001AD8E068033E1AD84AC81AD84ACCF01FB0
+:10E2D800002D2FCDC008580BC0E1201D4A681AD860
+:10E2E800E068033F1AD84A881AD84A5CF01F00250C
+:10E2F8002FCDC0085805C0313003C3B81897300374
+:10E30800069430010290580AC0B08E59F4091900D9
+:10E31800E08B0007F4090108F5D8B010C2088E5642
+:10E328001416EA061900EA0617B0F9D4C010F1DA93
+:10E33800C0106E1BF5D6C010100BE40C000CF01FBB
+:10E348000013EC030008E7D8B010EC040008E9D883
+:10E35800B010EA060106EBD6B010300A6E07E205E7
+:10E3680019005F1858075F191268E0081800CCC137
+:10E37800069CD83280039A7480039BB480038E680D
+:10E3880080002D4C80039BD48002DD14EBCD40FC33
+:10E3980018941693580C5F0A580B5F08F5E8100894
+:10E3A800C06198499648F0091900C0E2201D4D88BF
+:10E3B8001AD8E06802FE1AD84D681AD84D6CF01FBA
+:10E3C80000572FCDC008580AC110C0385804C111D1
+:10E3D800201D4CF81AD8E06803031AD84D081AD83B
+:10E3E8004CDCF01F004E2FCDC00830050A960A926B
+:10E3F800885C865BF5DCC010F1D5C010101AF1DB23
+:10E40800C010F3D6C0101218103AC065F6060108FD
+:10E41800EFD8B010C058F8050108EFD8B010F3D500
+:10E42800C010681CF1D6C010661BF5D7C010100BC1
+:10E43800120CF01F003CEE050008EBD8B01088580D
+:10E44800F0051900E088000F201D4B181AD8E06865
+:10E45800030F1AD84B481AD84AFCF01F00302FCDAA
+:10E46800C008F0051900E9F40000E4051700EE06FD
+:10E478000008EDD8B0108658F0061900E088000FA3
+:10E48800201D4A381AD8E06803151AD84A781AD8CD
+:10E498004A1CF01F00222FCDC008F0061900E7F330
+:10E4A8002000E40617205803C16086598648F00901
+:10E4B8001900C11166085808C0E0201D49481AD83B
+:10E4C800E068031F1AD849A81AD8493CF01F00135E
+:10E4D8002FCDC0085804C16088598848F009190030
+:10E4E800C11168085808C0E0201D48981AD8E0688B
+:10E4F80003241AD848E81AD8487CF01F00082FCD02
+:10E50800C0085803FE91FF64E3CF80FC80039A742F
+:10E5180080039BF880038E6880002D4C80039C2824
+:10E528008002DD1480039C3880039C5080039C6C1F
+:10E53800EBCD40FC580CC0E1201D4B381AD8E068E0
+:10E54800021C1AD84B181AD84B1CF01F00322FCDBA
+:10E55800C008F939000C3038F0091800E08B0011B8
+:10E5680098785808C1D020185C88B878C030300630
+:10E57800C46830063035301430733082C238201DFC
+:10E588004A181AD8E06802281AD84A381AD84A0C01
+:10E59800F01F00202FCDC0088E785808C0E1201D3C
+:10E5A80049981AD8E06802351AD849C81AD8498C47
+:10E5B800F01F00182FCDC00820185C88AE78C1F174
+:10E5C8000E9C7807F938000CEA081900C061189BFE
+:10E5D800049CF01F0013C0D82018E8081900E08B2D
+:10E5E8000007189B069CF01F000EC038F01F000D96
+:10E5F800ECC8FFFFEDD8C0085807CCF10C9CE3CD60
+:10E6080080FC000080039A748003A54C80038E6808
+:10E6180080002D4C80039C9880039CB08000ED1CEA
+:10E628008002D83CEBCD4080580CC0E1201D4C48FE
+:10E638001AD8E068015F1AD84C281AD84C2CF01F59
+:10E6480000432FCDC008F93A000C3038F00A180002
+:10E658005F193018F00A18005F181069C140580A8D
+:10E66800C1203028F00A1800C0E0201D4B481AD8F5
+:10E67800E06801631AD84B681AD84B3CF01F003386
+:10E688002FCDC0089848F6081900E0880057F3DB3A
+:10E69800C0105C78101918975C8BC298E049FFFE8F
+:10E6A800E08A000F201D4A681AD8E06801771AD856
+:10E6B8004A881AD84A4CF01F00252FCDC0088E482A
+:10E6C8001208AE486E075807C0E1201D49C81AD87D
+:10E6D800E068017B1AD84A081AD849BCF01F001B09
+:10E6E8002FCDC008F60A0108F7D8B0108E5AF40BDF
+:10E6F8001900FE9BFFD5EF39000C3008F00918000F
+:10E70800C131F60A1900C1005807C0E1201D48C8E8
+:10E718001AD8E06801851AD849081AD848ACF01FF9
+:10E72800000B2FCDC008AE5BAE4B6E0C580CC03042
+:10E73800F01F000B30088F08E3CD808080039A74A7
+:10E7480080039D0480038E6880002D4C80039D1CEF
+:10E7580080039D3880039D4C80039D648000E538CC
+:10E76800D431201D16951494581CC0B0C083582C61
+:10E77800C040583CC0C1C1B83008C0583148C02852
+:10E7880030082EC82E48EDD8B010C128201DFEF83C
+:10E7980002121AD8E06800D11AD8FEF8020A1AD86C
+:10E7A800FEFC0208F01F00822FCDC0083006582456
+:10E7B800E08B00065814E08200D3CB385834E0814F
+:10E7C80000DC308CF01F007B1897E08000E83038C0
+:10E7D800F968000C30089908F1D6C010F0C9FFEDAF
+:10E7E800F8090009E019FFFC9919B8452FD8E01875
+:10E7F800FFFCE06A0244101AF9D5C010F40C0D4869
+:10E80800AE58EEC4FDAC5C7810091234C0E2201D8D
+:10E818004E481AD8E06800EB1AD84E781AD84E3C01
+:10E82800F01F00632FCDC008580AE089000F201D93
+:10E838004DC81AD8E06800ED1AD84E081AD84DBC51
+:10E84800F01F005B2FCDC0083018AE788ED8F808BE
+:10E8580001065806E08A009E0E953083303230015A
+:10E868003000E06B0244500B069CF01F0052C06160
+:10E878000E9CF01F00533007C918F962000CF961AB
+:10E88800000D99008B0CE046FFFEE08A000F201D6A
+:10E898004C481AD8E06801071AD84CA81AD84C3C3A
+:10E8A800F01F00432FCDC008F3D6B010B849129816
+:10E8B800E06A0243F4091900400BF20A1900F6084D
+:10E8C8001730B858F8C8FFF09918F1D8C002C0E05E
+:10E8D800201D4B481AD8E068010D1AD84BA81AD841
+:10E8E8004B2CF01F00332FCDC0088ED96E1812089C
+:10E8F8001034C0E2201D4AB81AD8E06801101AD8AE
+:10E908004AD81AD84A9CF01F002A2FCDC008301ABE
+:10E91800B87A98D810165806E08A003C1895CA5B51
+:10E92800F1D6C010F0C6FFED0C98E018FFFCF9D541
+:10E93800C0102FDCE01CFFFCF00C000CF01F0023C3
+:10E948001897C2C0F8060008E018FFFC9918B845E7
+:10E95800B85530089908F968000CC1B8307CF01F28
+:10E9680000151897C1B030089918B845B8559908D6
+:10E97800F964000CC0E8201D48A81AD8E068013DD9
+:10E988001AD849381AD8489CF01F00092FCDC0085A
+:10E998003018AE783008EF68000D0E9C2FFDD83285
+:10E9A80080039A7480039D8080038E6880002D4CBC
+:10E9B8008000ED7C80039D9C80039DD08000E5381D
+:10E9C80080039E0480039E188002D85480039E749E
+:10E9D800580BC0C017891798B168F1E9118817A9B1
+:10E9E800F1E9108817B9F3E8100B993B5EFC580B56
+:10E9F800C0C017891798B168F1E9118817A9F1E91A
+:10EA0800108817B9F3E8100B992B5EFC4828910C75
+:10EA18005EFC000000007FECEBCD40801897F939D0
+:10EA28000035F1D9C001C0E01298A1C8F9680035D5
+:10EA380078885808C0205D186E785808C0300E9C39
+:10EA48005D18E3CD8080F93C0035F9DCC0015EFC3F
+:10EA5800580CF9FB1A075EFCEBCD40E018951696AA
+:10EA6800300A96CB302CF01F001B1897C041E06687
+:10EA780000FFC2B80C9BF01F0018EDDCC008C050A6
+:10EA88000E9CF01F0016C2180E9972085808C03064
+:10EA98001099CFCB6AF85808C1506B085808C0E1E4
+:10EAA800201D48F81AD8E06802531AD848D81AD84E
+:10EAB80048DCF01F000E2FCDC0089107EB4900403D
+:10EAC800C0488BF7EB4900400C9CE3CD80E0000088
+:10EAD8008000E7688000E3948000E53880039EA406
+:10EAE80080039F4080038E6880002D4CEBCD4080D2
+:10EAF8001897F9390035F1D9C001C1811298A1A838
+:10EB0800F968003578885808C0205D186E7858086C
+:10EB1800C0300E9C5D18EF380035E2180020C06048
+:10EB2800EECBFFFC0E9CF01F0003E3CD80800000BD
+:10EB380080008E88D4211895169717891798B16880
+:10EB4800F1E9118817A9F1E9108817B9104978185F
+:10EB58001039C3204A18700C580CC0F030147809CA
+:10EB68006A181039C0717836089BF01F001D0C9C7C
+:10EB7800C028783C580CCF4149A8700A580AC1C02F
+:10EB8800300B580AC16074095809C1306A18103925
+:10EB9800C1015807C0311699C0B80F890F98B168DC
+:10EBA800F1E911880FA9F1E910880FB91049950901
+:10EBB800743A580ACE715807C031300BC0C80F8953
+:10EBC8000F98B168F1E911880FA9F1E910880FB918
+:10EBD800F3E8100B8B1BD82200007E988000DB28FE
+:10EBE80000007EA0EBCD4068189614951293F01F94
+:10EBF80000070A9B0C9CF01F0006069B0C9CF01F4C
+:10EC08000005E3CD806800008000EB3C8000E9F659
+:10EC18008000E9D8EBCD40E0FACEFFF018977C05EC
+:10EC28007C16300E991E992E993EF96E003599AED4
+:10EC3800997E998E99FEF94E0040999848BE1D8894
+:10EC4800F96800382FF8BC889946F01F00090E9C17
+:10EC58005D155C5CC0303007C058486972088F0881
+:10EC680093070E9CE3CD80E0000017C08000EBEC1A
+:10EC780000007FE8EBCD40FE4A28F0C9FF54F0CAF7
+:10EC8800FF504A1C300BF0CEFEC4930B950BB42BEF
+:10EC98001928F348FFFC2F092F0A1C39CF7149B8EE
+:10ECA8002FD81096E016FFFC499E30070E95496351
+:10ECB80049821C91FCC4FFDC9D05E607040B580B38
+:10ECC800C1A0E407050C0A9A0C990A98930A2FF830
+:10ECD8005C88129A1809F00B1900FE9BFFF9F6C818
+:10ECE80000015C78F00C0249EC0900092FF8F00CDF
+:10ECF80003469D092FCE2FE7083ECDF1E3CD80FED8
+:10ED080000007EB080039F6C000017C4000069E01B
+:10ED18008003A028D401580BC200F1DBC002C0E078
+:10ED2800201D48F81AD8E068016B1AD848D81AD8B4
+:10ED380048DCF01F000E2FCDC008F808150448C99C
+:10ED48001009F2C9FF547208201893084899F20C68
+:10ED580003289708F20C092BD802000080039F8033
+:10ED680080039FC480038E6880002D4C00007EB015
+:10ED7800000069E0D401588CE088000F201D4A4843
+:10ED88001AD8E068013D1AD84A281AD84A2CF01F28
+:10ED980000232FCDC0084A28F00C032E580EC2C0FD
+:10EDA8007C09F00C092949FAF8081504F408000848
+:10EDB800F0C8FF547009F2CBFFFF910BF8C8FFF5BC
+:10EDC800A568F4080308103BE0880007F8C8FFF5B9
+:10EDD800A568F408090BF1DEC002C160201D48C80F
+:10EDE8001AD8E068014F1AD848F81AD848ACF01F6A
+:10EDF800000B2FCDC008F8C8FFF5A5684899100981
+:10EE080092282FF8B2281C9CD802000080039F800B
+:10EE180080039FE480038E6880002D4C000069E029
+:10EE280000007EB08003A004D43120AD1896505B5A
+:10EE3800504A781C507C19E919F8F1E91088F3D880
+:10EE4800B010129AE21A20008C482148E1D8B0107C
+:10EE5800F718002CF0CB0014506B20D8580BF6088C
+:10EE68001740A35850885800E08000AEF3D9C00D71
+:10EE78005099F1D8B00D31473005BA7AA3785018B7
+:10EE8800409AF1DAC00D9A791248E3D8B010F1D05F
+:10EE9800C010F3D0B010406C103CC0351292C0388E
+:10EEA800ADB14012300A314B302CF01F0049189494
+:10EEB800E08000878C58313BF6081900E08B000F82
+:10EEC800201D4C481AD8E06802C31AD84C281AD812
+:10EED8004C2CF01F00432FCDC008314A407B781CD2
+:10EEE800F01F00406813F1D7C0106C1910098D1974
+:10EEF8008C580E18AC585802C2A0EFD2B0108C58DB
+:10EF0800EE081900EE081720EBD8B010C0516C06B7
+:10EF18005807CF61C1C8302A300B303CF01F002C95
+:10EF2800C071089CF01F0030E06C00FFC4D86C185A
+:10EF38009918B845B855189B089CF01F002CEE0589
+:10EF48000108EFD8B010C0306C06CDABF3D1C010BB
+:10EF5800F2081608A6E8A6F9E4C8FFEC5C78F00900
+:10EF68001608A6A9A6B8300AE76A000AE76A000BDD
+:10EF7800314B069CF01F001E5C7CF8081608E768F9
+:10EF8800000AE76C000B40597258404A089B129CD3
+:10EF98005D18498CF90800302FF8F9580030089CA2
+:10EFA800F01F0011E0020108E1D8B010C0C040987D
+:10EFB800408B16085C885098EFD5B010C62BE06CD3
+:10EFC80000FFC028300C2F6DD83200008000E768A1
+:10EFD8008003A03C8003A08880038E6880002D4CAD
+:10EFE8008002DD148000E5388000E11C8000FF8489
+:10EFF80000007EB0D40148F870091839C041720980
+:10F008009109C128580BC0E1201D48B81AD8E068FA
+:10F0180001341AD848981AD8489CF01F000A2FCDF6
+:10F02800C00878089708189B305CF01F0007D802C2
+:10F0380000006A048003A03C8003A0A880038E68B7
+:10F0480080002D4C8000ED1CEBCD40F818941693F1
+:10F05800183BC0E1201D4BE81AD8E06800A41AD874
+:10F068004BC81AD84BCCF01F003D2FCDC008580B09
+:10F07800C11076081838C0E0201D4B581AD8E0682F
+:10F0880000A61AD84B681AD84B3CF01F00342FCD75
+:10F09800C00868176E1A15C915D8F1E91088C0306C
+:10F0A8003005C1D815891598B168F1E9118815A9F5
+:10F0B800F1E9108815B910498919314AE8CBFFF8E8
+:10F0C8006E1CF01F0028301B0E9CF01F00270E9CA2
+:10F0D800F01F002618950E9CF01F0025681758078A
+:10F0E800C1806E1A15891598B168F1E9118815A9BA
+:10F0F800F1E9108815B9F3E810060E9CF01F001B03
+:10F1080018050E9CF01F001A5806C0300C97CEAB9D
+:10F11800069B089CF01F001749789009F1D9C01088
+:10F128000A38C0E4201D48A81AD8E06800C71AD8D1
+:10F1380049281AD8488CF01F00092FCDC00848E884
+:10F148000A19B0090A9CE3CD80F800008003A03CAE
+:10F158008003A0C480038E6880002D4C8003A0D05B
+:10F168008002DD14800102948000E0F08000E53820
+:10F178008000EFFC00006A088003A0E4D4311896F0
+:10F18800169330054AB10A920A943000620A580A66
+:10F19800C4E0ED39000CED38000DB168F1E91188D3
+:10F1A800ED39000EF1E91088ED39000FF3E8100E83
+:10F1B800049C089B089774581C38C1A1ED390010AD
+:10F1C800ED380011B168F1E91188ED390012F1E963
+:10F1D8001088ED390013104974681238C0910DC8B1
+:10F1E8000DD9F3E810899468F2081900C0D02FF7F8
+:10F1F800580CC090F539001FF938001FF0091800A5
+:10F20800E08B0003149C74085808C040149B109AA3
+:10F21800CD3B580CC040F01F0008180506355F5854
+:10F2280058175F991268E0081800CB110A9CD83269
+:10F2380000006A048000F050EBCD40C048D8700C44
+:10F24800580CC1403006F938001F5808C070201803
+:10F25800F968001F78071896C05878070C9BF01FAC
+:10F2680000065807C0300E9CCEFBE3CD80C00000DE
+:10F2780000006A048000F050D431201D1893FEF974
+:10F2880005CEF30800322FF8F358003278160D88AF
+:10F29800E3D8C004E20815025948C080F3080044C6
+:10F2A8002FF8F3580044E08F026F0DE90DF8F1E9EB
+:10F2B80010885C8850080DA90DB8F1E91088E1D8CC
+:10F2C800B010F01F016418951894FEF8058A90880C
+:10F2D800F808000858A8E08A0018189B0C9CF01F32
+:10F2E800015FC090FEF805709088EA08000858A8E9
+:10F2F800E08A000BFEF90558F308003C2FF8F35894
+:10F30800003CE08F0241FEF8055670075807C041DF
+:10F318003002E08F0249ED39000CED38000DB1687C
+:10F32800F1E91188ED39000EF1E91088ED39000F87
+:10F33800F3E8100A30026E581438C2A1ED390010F3
+:10F34800ED380011B168F1E91188ED390012F1E9E1
+:10F358001088ED39001310496E681238C1910DC834
+:10F368000DD9F3E810898E68F2081900C1110E9CB6
+:10F37800FEF904DCF30800462FF8F35800460DE9BF
+:10F388000DF8F1E91088F1D8C00DC370C3F86E0804
+:10F398005808E08002080E921097CCEB089B0C9C52
+:10F3A800F01F012E1834E0890007305CF01F012D92
+:10F3B8001897C0A1FEF90498F308003C2FF8F358F9
+:10F3C800003CE08F01E130090E9810A910A910A99E
+:10F3D80010A910A910A910A991093038EF68001FC9
+:10F3E800FEF9047C72088F089307314A0C9BEECC17
+:10F3F800FFF8F01F011DC0A88EF8F1D8C00DC0603D
+:10F40800314A0C9B2F8CF01F0118FEF8044A900912
+:10F418000A09B0090DE8A598EDB80000C110EF3849
+:10F42800001EA1A8EF68001E4009F1D9C00DA378FD
+:10F438000008E20915025C391208EF58001C661929
+:10F4480013A813BCF9E8108C138BF7DBC004A36B6B
+:10F4580013EA13F8F1EA1088F1D8B00DA3781294E2
+:10F468003009A889A899A8A9A8B9F5D8C010F4099D
+:10F478001608A8C9A8DA180816185C78F00916083A
+:10F48800A8E9A8F86E1A580AE08001DF741E09C9B5
+:10F4980009D8F1E91088EDD8B0101DC91DD8F1E9D7
+:10F4A80010885C88EC081900E08B01C2F00619008E
+:10F4B800E080013C1DE91DF8F1E91088EC0819000D
+:10F4C800E08B01343015C548781B17C917D8F1E906
+:10F4D8001088F5D8B010EC0A1900E0880033F80855
+:10F4E8001618A888F8081610A898F8081608A8A8E2
+:10F4F800A8BC580EC24009C809D9F3E810891DEA0A
+:10F508001DF8F1EA1088F0091900E083010F09E8F5
+:10F5180009F9F3E8108917CA17D8F1EA1088F00931
+:10F528001900E08B0103E6081618BC88E6081610D7
+:10F53800BC98E6081608BCA8BCB3C6688F13C648B2
+:10F54800EC0A1900E08000F217E917F8F1E91088D1
+:10F55800EC081900E08B00EA580EC0901DE91DF870
+:10F56800F1E91088F00A1900F9B50100169E1D8905
+:10F578001D98B168F1E911881DA9F1E910881DB934
+:10F58800F3E8100CCA21C1791DE91DF8F1E91088CA
+:10F59800EC081900E0880012201DFEF802CE1AD8E7
+:10F5A800E068018E1AD8FEF802C61AD8FEFC02C41A
+:10F5B800F01F00B12FCDC008E6081618BC88E60871
+:10F5C8001610BC98E6081608BCA8BCB31DE81DF9BF
+:10F5D800F3E8108909CA09D8F1EA1088F009190076
+:10F5E800F9B50100C118201DFEF802801AD8E0689C
+:10F5F80001971AD8FEF802841AD8FEFC0276F01F8A
+:10F60800009E2FCDC008EF38001EF1D8C001E08061
+:10F6180000C65805E08000C36E1E7C1C19C919D8A5
+:10F62800F1E91088E08100BB09890998B168F1E91E
+:10F63800118809A9F1E9108809B91049E08000C0CA
+:10F64800721B09E809F9F3E8108917CA17D8F1EA13
+:10F658001088F0091900E08100A21694C0F8721B06
+:10F6680009E809F9F3E8108917CA17D8F1EA1088E8
+:10F67800F0091900E0810093169409890998B16886
+:10F68800F1E9118809A9F1E9108809B91049CE8171
+:10F69800C968201D4F581AD8E06801B71AD84F8892
+:10F6A8001AD84F4CF01F00742FCDC008083CC0E199
+:10F6B800201D4EE81AD8E06801B91AD84F081AD8A0
+:10F6C8004ECCF01F006D2FCDC00809890998B1688C
+:10F6D800F1E9118809A9F1E9108809B91049C0E0D0
+:10F6E800201D4E281AD8E06801BB1AD84E581AD8DF
+:10F6F8004E0CF01F00612FCDC00809E809F9F3E8A6
+:10F7080010895C89EF08001CF2081900C5C0201D8B
+:10F718004D681AD8E06801BD1AD84DB81AD84D5CA2
+:10F72800F01F00552FCDC0084CB68C05069CF01F65
+:10F7380000491815AC05069CF01F00543003C2F8A8
+:10F748003EC568160A9B089CF01F0051089B069C42
+:10F75800F01F00500D890D98B168F1E911880DA9C5
+:10F76800F1E910880DB9F3E81004CEC1049B0E9C92
+:10F77800F01F00494B868C05069CF01F00361815B3
+:10F78800AC05C0D84B29F30800362FF8F3580036DB
+:10F79800069CF01F003E3003C0283003069C2FFD56
+:10F7A800D8320E92305CF01F002F1897FE91FE0D94
+:10F7B800FE9FFDF6580EFE91FEE9C16B580EFE91B4
+:10F7C800FF77C68BF2C8FFECEF58001C6E18701656
+:10F7D8000D890D98B168F1E911880DA9F1E9108832
+:10F7E8000DB9F3E8100431450A9AEECBFFF80C9CEA
+:10F7F800F01F001D3009EF38001CACA8EF38001DC1
+:10F80800ACB8ACE9ACF9ED69000AED69000B0A9BEC
+:10F818000C9CF01F00225C7CF8081608ED68000AB2
+:10F82800ED6C000B6E135804C8C1CA1BF4081618F7
+:10F83800A888F4081610A898F4081608A8A8A8BA62
+:10F848003015FE9FFE7D8F133015CDEA00007EB087
+:10F858008000E0F000006A088000F18400006A047B
+:10F868008000ED7C8002DD148003A03C8003A100B1
+:10F8780080038E6880002D4C8003A1208003A1584E
+:10F888008003A1688003A18C8000E5388000E1BC7A
+:10F898008000E11C8000EFFC8000FF841989199822
+:10F8A800B168F1E9118819A9F1E9108819B9F3E8E3
+:10F8B800100AF4C800015BD8E08800035EFFF7383F
+:10F8C8000035E2180002C0F076181438C0C0762B54
+:10F8D80014581668C081F60911FFF3EA00081039B8
+:10F8E8005F0C5EFC5EFDD703D431FACEFFDC1895C1
+:10F8F80016931496129210907C017C14580AE0809A
+:10F9080000A2314BF01F006AC0A04EA9F308005CAA
+:10F918002FF8F358005CE06C00FED8326A1C8A5954
+:10F928003138F0091900E08B000F201D4E281AD835
+:10F93800E068022C1AD84E181AD84E1CF01F006125
+:10F948002FCDC0081897E3E210885C78300AF009D8
+:10F958001608F9690008F96800090D890D98B16859
+:10F96800F1E911880DA9F1E910880DB91049F208DB
+:10F978001618F9680010F2081610F9680011F20854
+:10F988001608F9680012F96900130098E81845008C
+:10F998005C78F0091608B889B898EB380008B8A858
+:10F9A800EB380009B8B8B8EAB8FA4C7B9609F5D92B
+:10F9B800C010F4081608B8C8B8DA2FF9B609580301
+:10F9C800C0D007890798B168F1E9118807A9F1E95A
+:10F9D800108807B9F3E8100BC161E8C8FFFCF9B952
+:10F9E8000000E9F91001F2081618EF68000CF20897
+:10F9F8001610EF68000DF2081608EF68000EEF69A0
+:10FA0800000FC0F8F6081618F968000CF60816106A
+:10FA1800F968000DF6081608F968000EF96B000F72
+:10FA28003008EF68000AEF68000B314B0E9CF01F9E
+:10FA380000275C7CF8081608EF68000AEF6C000BDA
+:10FA4800C0487818F0C6FFF049A9F30800482FF815
+:10FA5800F35800480D890D98B168F1E911880DA98E
+:10FA6800F1E910880DB9104968181039C0810C9A4D
+:10FA78000A9B089CF01F00165C5CD832E909002C30
+:10FA88005809C0D08A48F2081900E08800090C9A81
+:10FA9800089B0A9CF01F000F5C5CD83268580C9ACF
+:10FAA8000A9B089C5D185C5CD83200008000E1BCB1
+:10FAB80000007EB08003A1C48003A20C80038E687E
+:10FAC80080002D4C00006A0A8000FF848000EA60F4
+:10FAD8008000EE30EBCD40C0189649887007580773
+:10FAE800C1700E9CF01F0016C1000D890D98B168F9
+:10FAF800F1E911880DA9F1E910880DB910496E18BE
+:10FB080010596E281069C1506E075807CEB148D8F1
+:10FB1800700C580CC040F01F000AC09148A9F308A7
+:10FB280000562FF8F35800563007C0384858700769
+:10FB38000E9CE3CD80C0000000007FE88000EA4E04
+:10FB480000007FEC00007EB0EBCD40FC18921693CD
+:10FB58001496129410954077149CF01F000EC0B1B3
+:10FB680048D9F30800562FF8F3580056E06C00FC0B
+:10FB7800E3CD80FC1ADC1AD70A9808990C9A069BE0
+:10FB8800049CF01F00065C5C2FEDE3CD80FC0000B8
+:10FB98008000FADC00007EB08000F8F0D4311895BF
+:10FBA8001694FEF9024AF308004A2FF8F358004A5F
+:10FBB80078160D890D98F1E91088F5D8B010F3DAA8
+:10FBC800C1843048F0091900C100F01F008AFEF80E
+:10FBD800021EF109005C2FF9F159005CF109004E91
+:10FBE8002FF9F159004EC019F1DAC104F0031502DA
+:10FBF8000DA90DB8F1E91088EFD8B0109858E608AB
+:10FC08001900C0539848EE081900C1020A9CF01F59
+:10FC180000794F78F10900522FF9F1590052F10992
+:10FC2800004E2FF9F159004ECE08069B0C9CF01F90
+:10FC380000725C8CC1000A9CF01F006E4EC8F1096E
+:10FC480000502FF9F1590050F109004E2FF9F159E0
+:10FC5800004ECCB8F7D7C0100A9CF01F0068ECC063
+:10FC6800FFF00897301230010E9CF01F0065C1C0EC
+:10FC7800EEC8FFFCC1906E1A580AC160ED39001039
+:10FC8800ED380011B168F1E91188ED390012F1E998
+:10FC98001088ED3900131049123AC1300E9B009CB0
+:10FCA800F01F0058C0E15802C0404D797207C028C3
+:10FCB8006E070837E9F700005807C0500292CD5B7D
+:10FCC8005807C0F1ED3800095918C0B1EC03000815
+:10FCD80011A911B8F1E910883449F2081900C29045
+:10FCE800ED39000CED38000DB168F1E91188ED39F6
+:10FCF800000EF1E91088ED39000F1049C1B0089BDA
+:10FD0800ECCCFFF4F01F003FC0A1ED38000CB9683F
+:10FD1800E618F000FC19E0001238C0C10A9CF01F78
+:10FD280000354B39F308004E2FF8F358004EC5D86C
+:10FD380008975807C0510A9CF01F002EC5680DE9A6
+:10FD48000DF8F1E91088F1D8C00EC0700A9CF01FB8
+:10FD5800002F1895C4A078164AD891044AD891065D
+:10FD6800089B0A9CF01F002CC3B1ED3800095868A5
+:10FD7800C0B05918C0405818C111C0B8089B0A9C97
+:10FD8800F01F0026C2D8089B0A9CF01F0025C288D5
+:10FD9800089B0A9CF01F0023C238089BECCCFFF09C
+:10FDA800F01F0018C0F1ED380010B968E618F0002F
+:10FDB800FC19E0001238C0608B16302B0A9CF01F2B
+:10FDC800001A0A9CF01F000B4898F10900582FF9F7
+:10FDD800F1590058F109004E2FF9F159004E300839
+:10FDE80048B9930848B99308D83A000000007EB093
+:10FDF8008000E5388000FF848000E62C8000EA4E11
+:10FE08008000F8A400007FE88000F28000007FF006
+:10FE180000007FF48000E09080009E748000BFDCCA
+:10FE2800800102BC800102A8EBCD4080169918978A
+:10FE38003018F00B1900E08B0004300BC1F8189A49
+:10FE4800300BF2C80002FDD8B010F1DEC010A19846
+:10FE58005C782FF8A178100CF52900001598F1E9C5
+:10FE680010882FEA5C78100B1C98183ACF61F3DEE3
+:10FE7800C001E218FFFE2FE810075809C0400F889C
+:10FE8800A968100BF6081610F3DBC010F208000C76
+:10FE98001898E0180000C070F8091610F1DCC010BE
+:10FEA800F009000C5C8CE3CD8080D703EBCD40FEDD
+:10FEB8001694149312921091580CC0313006C2D87F
+:10FEC800189730060C958EDB6E1CF01F002C5C7C9E
+:10FED8000C0CF8081610F9DCC010F80800068ED8CB
+:10FEE800F1D8C001C0D0EA081101EBD8C008EC086D
+:10FEF8001508F1D8C010F3D6C108F3E810066E074C
+:10FF08005807CE215805C090EC081508F1D8C01044
+:10FF1800F3D6C108F3E8100609890998B168F1E930
+:10FF2800118809A9F1E9108809BA104A07890798C0
+:10FF3800B168F1E9118807A9F1E9108807B91049F2
+:10FF4800F40C1610F5DAC010140CF1D9C010100C0E
+:10FF5800B189120C040CF1D1C010100C0C0CF8086B
+:10FF68001610F9DCC010100CF8081610100C5CDC28
+:10FF78005C8CE3CD80FE00008000FE30D4015C7B09
+:10FF8800F01F00035CDC5C8CD80200008000FE30AF
+:10FF9800EBCD40E0580CC0313006C2D81897300677
+:10FFA8000C958EDB6E1CF01F00175C7C0C0CF8089F
+:10FFB8001610F9DCC010F80800068ED8F1D8C00178
+:10FFC800C0D0EA081101EBD8C008EC081508F1D830
+:10FFD800C010F3D6C108F3E810066E075807CE2103
+:10FFE8005805C090EC081508F1D8C010F3D6C10820
+:08FFF800F3E81006EC0C11FF08
+:02000004800179
+:100000005C8CE3CD80E000008000FE30D431204DD8
+:100010001690198AF4C900303098F0091800E08B66
+:1000200000C31A9233011096310330543195E20A1D
+:100030001800C03030AEC1482FFC198A3788F00A4A
+:1000400018005F093588F00A18005F081049F9BEEA
+:100050000008F7BC01FFF9FA1800F9BE01102FFCE7
+:10006000300BC0282FFCF8C70001F4C80030EC08A2
+:100070001800E08B0009F60E02481408F0CB00309F
+:10008000198ACF1BE60E1800C1C1F4C80061F3D86D
+:10009000C008E8091800E0880008F4C80041E80832
+:1000A0001800E08B000FF2051800F9B90261F9B9E8
+:1000B0000341F4C8FFF61218F1EB104B198ACD3B3F
+:1000C00032E8F00A1800C111FAC8FFF41032C6B2C3
+:1000D000850BEECCFFFF198AF4C80030EC0818003D
+:1000E000E08B00622FC2CA4B169C580AC1F032083E
+:1000F000F00A18005F1930C8F00A18005F1810697C
+:10010000C15030A8F00A18005F1930D8F00A180062
+:100110005F181069C0B03098F00A18005F1930B845
+:10012000F00A18005F181069C3E1E40D0108A34844
+:100130002FF85828C0B0E08900055808C340C2B85D
+:100140005838C0F05848C271C188E068FFFFEA180B
+:1001500000FF103CE08B00284008F9E8118BC1B883
+:10016000E04CFFFFE08B00204008B9684019F1E93E
+:100170001108F1EC100BC0F8E04C00FFE08B00140C
+:100180004008B9684019F1E911084029F1E91088DF
+:10019000F1EC100B5800F9BC0001E1FB1A00F9BCAE
+:1001A0000101C028300C2FCDD832D703D401202D27
+:1001B000FACBFFFCF01F0004F9BC00FFFBFC1001B0
+:1001C0002FEDD8028001000CEBCD40FC1894169561
+:1001D0001492300A324B301CF01F00251897C4408F
+:1001E00098593238F0091900E08B000F201D4A1889
+:1001F0001AD8E068012E1AD849F81AD849FCF01F1D
+:1002000000202FCDC00868137816AC85AC9230055D
+:10021000ACC5ACD5ACE5ACF5781C31CA681B2F8CED
+:10022000F01F0018ACA5ACB58EDB0C9CF01F0016BF
+:100230005C7CF8081608ACA8ACBC4949F30800601F
+:100240002FF8F3580060201D30181AD80A98E0697A
+:1002500000FFE6CAFFF40A9B0E9CF01F000D0E9CE7
+:10026000F01F000C2FEDE3CD80FC00008000E7685C
+:100270008003A23C8003A28480038E6880002D4C02
+:100280008002DD148000FF8400007EB08000FB50FF
+:100290008000E538D401F5DBC00830BBF01F000258
+:1002A000D8020000800101C8D401F5DBC008303B52
+:1002B000F01F0002D8020000800101C8EBCD40FC15
+:1002C00018961692FEF90328F30800622FF8F358E7
+:1002D000006278170F88F1D8C004F0041502E8080E
+:1002E0001100E7D8B010069BF01F00C2E081016941
+:1002F0008C493038F0091900E08801636C181189C5
+:100300003088F0091800E081014CEF390010EF3817
+:100310000011B168F1E91188EF390012F1E9108894
+:10032000EF390013F3E81005049BEECCFFF0F01F4B
+:1003300000B2C0810A98E618F000FC19E0001238FB
+:10034000C0D1FEF902AAF30800742FF8F358007424
+:100350000C9CF01F00AAE3CD80FC8C493078F0099A
+:100360001900E088012E0C9CF01F00A55C8CC0D009
+:100370000C9CF01F00A2FEF90276F30800682FF82B
+:10038000F3580068E3CD80FC330B0C9CF01F009900
+:10039000C5F0089B0C9CF01F0097C110201DFEF8B3
+:1003A00002621AD8E06800981AD8FEF8025A1AD8E1
+:1003B000FEFC0258F01F00962FCDC008300A8CCBEF
+:1003C000302CF01F00941895E080010698D9E8C8F9
+:1003D000FFF81039C112201DFEF802281AD8E06873
+:1003E00000A21AD8FEF802301AD8FEFC021EF01F36
+:1003F00000882FCDC0080C9BF01F00885C5CC100FA
+:10040000201DFEF801FE1AD8E06800A51AD8FEF8F3
+:10041000020E1AD84FDCF01F007E2FCDC0086A17DD
+:10042000069B0A9CF01F0073C0E0201D4F581AD88D
+:10043000E06800AB1AD84FB81AD84F4CF01F0074C0
+:100440002FCDC0080C9CF01F006D0A96C1383D0BE3
+:100450000C9CF01F0068C0E0201D4EA81AD8E06870
+:1004600000B51AD84EF81AD84E8CF01F00692FCD5F
+:10047000C0086C1BEF39000CEF38000DB168F1E9D2
+:100480001188EF39000EF1E91088EF3A000F104A99
+:10049000EF390010EF380011B168F1E91188EF3938
+:1004A0000012F1E91088EF3900131049F20816180C
+:1004B000EF68000CF2081610EF68000DF20816083D
+:1004C000EF68000EEF69000FF4081618EF680010CF
+:1004D000F4081610EF680011F4081608EF6800120F
+:1004E000EF6A00133008B68817A917B8F1E9108829
+:1004F000F3D8B010FE78F7FEF0091900E088000A82
+:10050000F2C8F7FF5C78F0091608B6A9B6B8C0883B
+:10051000F2C8F8005C78F0091608B6A9B6B8EF384A
+:100520000009E818FF00300AF0091608EF69000812
+:10053000EF680009EF6A000AEF6A000B314B0E9C6E
+:10054000F01F00395C7CF8081608EF68000AEF6CB1
+:10055000000B4A79F30800602FF8F3580060089BFD
+:100560000C9CF01F0024C0E0201D4A681AD8E068E7
+:1005700000D71AD84AD81AD84A4CF01F00252FCDD8
+:10058000C0081AD230181AD83008E06900FF109A53
+:10059000EECBFFF40C9CF01F00262FEDC0C849489D
+:1005A000F10900702FF9F1590070F10900662FF977
+:1005B000F15900660C9CF01F0011E3CD80FC0C9CEF
+:1005C000F01F000E48A9F308006A2FF8F358006ADC
+:1005D000E3CD80FC0C9CF01F00094859F30800741F
+:1005E0002FF8F3580074E3CD80FC000000007EB0CB
+:1005F0008000E1BC8000F8A48000E5388000FF980E
+:100600008003A23C8003A2B080038E6880002D4C42
+:100610008000E7688003A2E48000E3948003A31CC9
+:100620008003A3448000FF84800390748000F8F06E
+:10063000D401F01F0003F01F0003D8028000EC7CFF
+:1006400080010BF0D401189E3018F00C1800E08BDC
+:10065000001B48E8700858085F18580B5F191268AB
+:10066000C12017891798B168F1E9118817A9F1E934
+:10067000108817B91049C070304A485CF80E002C39
+:10068000F01F0004D802000000006E7800006E70B9
+:100690008002DD14EBCD4080189716993018F00BCE
+:1006A0001800E08B0009304A487BF609002BF01F48
+:1006B0000007C058304A486BF01F00040E9CE3CD81
+:1006C0008080000000006E708002DD148003A1BDF8
+:1006D000300A19391298E21800C0E04800C0C0C0C2
+:1006E0005809C060F2C800015C582FF8100C198836
+:1006F000F4081800CEF12FFC5EFCD703EBCD40FCD4
+:10070000202D1894169614953018F00C1800E088D7
+:10071000000F201D4DA81AD8E06802461AD84D983F
+:100720001AD84D9CF01F00592FCDC0084D8AF40CEB
+:100730000729F40C002A1598B168F1E9118815A968
+:10074000F1E9108815B91049C0E1201D4CC81AD82C
+:10075000E06802471AD84CF81AD84CBCF01F004B7E
+:100760002FCDC008300AE06B0110149CF01F004A26
+:100770001897C041E06600FFC7E878085808C0E055
+:10078000201D4BF81AD8E068024D1AD84C381AD8F8
+:100790004BDCF01F003E2FCDC008781A3009F4C89A
+:1007A000FFFD10C910C910C910C910C910C910C95E
+:1007B00010C9B089F7D5C010F6081608B488B49BE4
+:1007C0003018B4A8B4C9B4D82F4AECCB000132E336
+:1007D000129530022FFBF4C6FFFF178CE60C1800B1
+:1007E0005F18EA0C18005F191268EA081800C03197
+:1007F000049EC138049E0CCCFCC8FFFFFDD8C00885
+:100800002FFB178CE60C18005F18EA0C18005F1914
+:100810001268EA081800CF01B48E1788EA08180099
+:10082000C0300C9ACD8B0C9C300818C83018BA28F0
+:10083000BA38304AFA0A000BF01F0019ECCBFFFB64
+:100840006E18101B5C7B0E9CF01F00164906EC0412
+:1008500000264955335A0C9B6A0CF01F001433597B
+:100860000C9A0E9B6A0CF01F0012EDDCC0080E9C67
+:10087000F01F00100C9C2FEDE3CD80FC8003A378CB
+:100880008003A3BC80038E6880002D4C00006E7036
+:100890008003A3D48000E7688003A3F88002DD14FE
+:1008A0008000E62C00006E7880009C2480009E185A
+:1008B0008000E538EBCD40803038F00C1800E0883F
+:1008C000000F201D4C881AD8E068028A1AD84C788C
+:1008D0001AD84C7CF01F00472FCDC008E0680118E3
+:1008E000F80802484C49F20800070F893018F0094F
+:1008F0001800C0B0C7633028F0091800C150303864
+:10090000F0091800C611C5683028AE883009AE99C4
+:100910003018AEA8AEB9189AEECBFFF4300CF01F29
+:100920000037E3CD80800FA820185C58AEA8C59191
+:100930000FB82FF8F3D8C008AEB93048F009180046
+:10094000C3010F9BF6C8FFFF5818E089001A4ACA76
+:10095000F4080729F408002A1598B168F1E911880C
+:1009600015A9F1E9108815B91049C0A0F6C8FFFF14
+:10097000AE983018AEA83008AEB8E3CD8080EEF85F
+:1009800001105808C070EEFA0114300BEECCFFF4E1
+:100990005D183008AE883008EF480110E3CD808044
+:1009A000AEA9189AEECBFFF40F9CF01F0014E3CD14
+:1009B00080806E2820188F28C141AE883008EF480B
+:1009C0000110E3CD8080201D48781AD8E06802C667
+:1009D0001AD848C81AD8486CF01F00062FCDC00896
+:1009E000E3CD80808003A3788003A41480038E6805
+:1009F00080002D4C00006A10800106FC00006E7023
+:100A00008003A430D43118961697149512944E682A
+:100A1000700858085F08580B5F091248E08100B160
+:100A2000580CE08000AE1989F0091800E08000A998
+:100A3000F01F005EE04C00FFE08B00A34DCB0C9C50
+:100A4000F01F005CC0A1300837F9AE89AE98AEA89F
+:100A50003019AEB9109CD8320C9CF01F0057F80822
+:100A60001618AE88F8081610AE98F8081608AEA842
+:100A7000AEBC5BFCE08100884D0130033030069253
+:100A80000388E0081800C241E6030028F00B1503B4
+:100A9000101B2FFB4C98F00B003B2FCB0C9CF01F36
+:100AA0000045C161E0690118E60902494C381208A5
+:100AB000F0F9010CF2081618AE88F2081610AE987C
+:100AC000F2081608AEA8AEB95BF9C5D1C6282FF357
+:100AD000E2C1FEE85843CD41C578169C17885808F6
+:100AE000C1A0E2081800C0D117CAE40A01080638FC
+:100AF000FDDAE918E06A00FFF1DAE923F20717905E
+:100B0000F2C8FFFFF3D8C008F6CBFEE8E0091800F2
+:100B1000CE51C0783048F0091800C0301297C18813
+:100B20003038F0071800E08B0029E0680118EE0863
+:100B300002484A29F20807093038F0091800C1D1E3
+:100B4000E0680118EE08024849C9F208000C3018A4
+:100B5000B888B8CEFC0800094998B089F945011059
+:100B6000F94401140C9B2F4CF01F00160E9CF01F33
+:100B70000016E06C00F2D832E06C00FFD832E06C76
+:100B800000F7D832D83A3FF8AE88AE98AEA8AEB8E3
+:100B900048B8118E1C92489B30091293129730313D
+:100BA0003040C9CB00006E788002E3E08003A4509F
+:100BB0008002E2D8800101AC00006A1000006A0CDB
+:100BC0008002E380800108B4EBCD40804878700853
+:100BD0005808C08030070E9CF01F00052FF75847BB
+:100BE000CFB1E3CD8080000000006E78800108B4B2
+:100BF000D401202D490CF01F001149187008580825
+:100C0000C171501CF01F000F48D8910C580CC10046
+:100C1000300A48DBF01F000D300A48DB4888700CB2
+:100C2000F01F000CFACBFFFC300CF01F000B2FED77
+:100C3000D80200008003A45C800101AC00006E7843
+:100C400080009AE48003A1BD80009B5080010C5875
+:100C500080009ADC80010644D431204D1497944AD8
+:100C6000E0680200F00A1900E08B00CE3198F00A2B
+:100C70001900E08800C930095C7A4E6B0E9CF01FA9
+:100C800000668E48F8081900E08100BE4E1B1799D7
+:100C90003038F0091800E08B00B7E0680118F2085E
+:100CA00002484DE9F20800060D893028F0091800C5
+:100CB000E08100AA3038AC8817B8F9D8C004ACDCA1
+:100CC00017C917D8F1E91088F5D8B01017E917F847
+:100CD000F1E91088FDD8B01017A93008F009180004
+:100CE000E0840083109BF00C18005F193018F00AA4
+:100CF00018005F181049F6091800C761ECC0FFF42E
+:100D0000009C4C48F0CAFFF41695158B1698E21813
+:100D100000C0E04800C0C1C02FFA580BC13019898B
+:100D20001588F0091800C070C5F819891588F009F0
+:100D30001800C5A12FFA2FFCF6C80001F7D8C0088B
+:100D4000CF511588EA081800C0302FFCCDFBE9DE32
+:100D5000C0084B0C2F4CF01F00325804C4502FCC4D
+:100D6000FAC3FFFA30A23011F01F002D1895049A33
+:100D7000189B069CF01F002B9A38E2081900C281CC
+:100D80009A48E2081900C2419A783049F2081900DD
+:100D9000C1F19AD99AE8F1E911088D28E8583A800A
+:100DA000E0880005E8783A808D28ECC4FEF4304AEB
+:100DB000EACBFFF6089CF01F001BECF80110580866
+:100DC000C220ECFA0114089B009C5D18C1C89A79F6
+:100DD000E8C80001E9D8C008C070F1D9C0102F6878
+:100DE000EA08000CCC2BECF801105808C070ECFAA3
+:100DF0000114300BECCCFFF45D183008AC883008DF
+:100E0000ED4801100E9CF01F00082FCDD8320000D5
+:100E100000006E7C8000E2B800006A10800106D0FD
+:100E20008002DD148000E538F9380012F608180059
+:100E3000F9FB1E12F9B80100F9F81E135EFCEBCDA8
+:100E400040F8189E169778385808C780F9060010A1
+:100E50005806C740109B11893FF8F0091800C6E0FA
+:100E6000169C30050A9A33441093E8091800C0B163
+:100E7000F4C8FFFEF3D8C010F60907052FF8F5D81F
+:100E8000B010C0E8EE091800C5A0F4C8FFFFF3D801
+:100E9000C010F60907092FF81208F5D8B010F406AB
+:100EA0001900E088000AF1DAC010F608000C198970
+:100EB000E6091800CDB15805C4103018F005180027
+:100EC000C0717C28F0CCFF94E06B0080C0F8302823
+:100ED000F0051800C0617C28F0CCFFD4340BC0684A
+:100EE0007C28F0CCFFD4E06B00C019893FF8F009F2
+:100EF0001800C240F2071800C091E3CD80F8F00757
+:100F00001800C061149CE3CD80F830093FFEF2C8A0
+:100F1000FFFFF3D8C010F80907092FF81208F3D81B
+:100F2000B010F20B1900E088000AF1D9C010F808DF
+:100F3000000A1588FC081800CE31300CE3CD80F88B
+:100F4000198C5EFC1938F8C9FFFF198CB16CF9E8EF
+:100F5000118C1388F9E8108C1398104C5EFCD703A1
+:100F6000D401149EF90A001CF1DAC0102FE81C0805
+:100F7000E0480044E088000F201D49081AD8E068C6
+:100F800004E31AD848E81AD848ECF01F000F2FCD18
+:100F9000C0087868F3DAC0101208F16B00F0F4C9E9
+:100FA000FFFF7868F5D9C0101408F16E00F02FF932
+:100FB000F959001CD80200008003A46C8003A4B07F
+:100FC00080038E6880002D4CD401F90A001C34384F
+:100FD000F00A1900E088000F201D48C81AD8E06800
+:100FE00004EE1AD848A81AD848ACF01F000B2FCD31
+:100FF000C0087868F3DAC0101208F16B00F0F4C88A
+:10100000FFFFF958001CD8028003A46C8003A4F8E9
+:1010100080038E6880002D4CD401580CC0E1201D47
+:101020004B481AD8E068062B1AD84B381AD84B3CD4
+:10103000F01F00332FCDC00878695809C0E1201D8A
+:101040004AC81AD8E068062C1AD84AE81AD84ABC06
+:10105000F01F002B2FCDC008F90A001C3438F00A0D
+:101060001900E088000F201D4A281AD8E068062DD4
+:101070001AD84A581AD84A1CF01F00212FCDC00890
+:10108000F1DAC010F20800083FF9F16900F0F4C885
+:10109000FFFFF5D8B010F95A001C3438F00A1900D7
+:1010A000E0880010C218201D49281AD8E0680632CE
+:1010B0001AD849581AD8491CF01F00112FCDC00862
+:1010C000300B343E7868F3DAC0101208F16B00F090
+:1010D000F4C8FFFFF5D8B010F95A001CFC0A19003B
+:1010E000FE98FFF2D802F1DAC002CDE1D80200008A
+:1010F0008003A46C8003A53480038E6880002D4C8F
+:101100008003A5588003A584D401F90A001CF1DAF4
+:10111000C0102FE8E0480044E088000F201D491867
+:101120001AD8E06804F51AD848F81AD848FCF01F15
+:1011300000102FCDC0087868F3DAC0101208F3DB76
+:10114000C108F16900F0F4C9FFFF7868F5D9C01053
+:101150001408F16B00F02FF9F959001CD8020000B7
+:101160008003A46C8003A5C480038E6880002D4C8E
+:10117000D401F90A001CF1DAC0102FC8E04800447D
+:10118000E088000F201D49A81AD8E06804FD1AD88D
+:1011900049881AD8498CF01F00192FCDC0087868EB
+:1011A000F3DAC0101208F6091618F16900F0F4C855
+:1011B000FFFF7869F5D8C0101409F5DBC208F36A9F
+:1011C00000F02FF87869F5D8C0101409F5DBC108D4
+:1011D000F36A00F02FF87869F5D8C0101409F36BA2
+:1011E00000F02FF8F958001CD80200008003A46C0E
+:1011F0008003A60880038E6880002D4CEBCD40C094
+:10120000189678A7580CC0E1201D49D81AD8E06874
+:1012100004B21AD849B81AD849BCF01F001C2FCD07
+:10122000C008F9380035A3D8F96800355807C2500E
+:101230006E1C580CC050F01F001630088F186E2816
+:101240005808C0916E385808C061EF090010F009C5
+:101250001900C0E0201D48A81AD8E06804C51AD8B3
+:1012600048C81AD8488CF01F00092FCDC0080E9C22
+:10127000F01F000930088DA8E3CD80C08003A46C66
+:101280008003A64880038E6880002D4C80009B1050
+:101290008003A6648002D83CEBCD40801897782C60
+:1012A000580CC050F01F000830088F286E3C580CB6
+:1012B000C070F01F000530088F38EF580010E3CDE4
+:1012C000808000008002D83CEBCD40E01896580C9E
+:1012D000C111201DFEF802281AD8E06805D11AD8DD
+:1012E000FEF802201AD8FEFC021EF01F00882FCD47
+:1012F000C00878A75807C101201DFEF802021AD8BD
+:10130000E06805D31AD8FEF802061AD84FECF01F91
+:10131000007F2FCDC0086E585808C0E0201D4F88B0
+:101320001AD8E06805D41AD84FA81AD84F6CF01F05
+:1013300000772FCDC0086E685808C0E0201D4F0808
+:101340001AD8E06805D51AD84F381AD84EECF01FD5
+:10135000006F2FCDC008300AE06B0134149CF01FE1
+:10136000006F8F5CC051E06C00FFE3CD80E09859C6
+:10137000E0680133F0091900E08B000F201D4E08D2
+:101380001AD8E06805DD1AD84E581AD84DECF01F6F
+:10139000005F2FCDC008EF3900133008F0091800A6
+:1013A000C0514E0972082FF893084DE870088F0855
+:1013B0006E5870188F683019B0896E68B0996E6970
+:1013C0003068B2A86E68300AB0BA6E690F88B2C8C9
+:1013D0000F98B2D80FA8B2E80FB8B2F86E68F16AE9
+:1013E0000008F16A00096E68F16A000AF16A000BF0
+:1013F0006E68F16A000CF16A000DF16A000EF16A84
+:10140000000FEF3B001230A8F00B18005F093058B6
+:10141000F00B18005F081049F4091800C05130485B
+:10142000F00B1800C0E16E690DC8F368000C0DD810
+:10143000F368000D0DE8F368000E0DF8F368000F77
+:101440006E693008F3680010F3680011F368001249
+:10145000F36800136E69F3680014F3680015F3680D
+:101460000016F36800176E69F3680018F368001936
+:10147000F368001AF368001BECCBFFD110991095AC
+:101480006E6EED38002EF2081900EA0A1780F7FA9E
+:10149000B800FC090008F16A001C2FF92FFB59095C
+:1014A000CF013009300A6E681208F16A002C2FF95A
+:1014B000E0490040CF913009300A6E681208F16AA5
+:1014C000006C2FF9E0490080CF916E69300B363AFD
+:1014D000F36A00EC3828F36800ED3538F36800EE65
+:1014E000F36A00EFEF5B001C6E681608F16B00F00A
+:1014F0002FFBE04B0044CF91E3CF80E08003A46C4E
+:101500008003A67880038E6880002D4C8003A69C03
+:101510008003A6C08003A6EC8000E7688003A718BC
+:10152000000001F8EBCD4080580CC0E1201D4A2896
+:101530001AD8E06806141AD84A081AD84A0CF01FBC
+:1015400000212FCDC00878A75807C0E1201D49A869
+:101550001AD8E06806161AD849B81AD8498CF01F6C
+:1015600000192FCDC0086E5C580CC0E1201D492821
+:101570001AD8E06806171AD849481AD8490CF01F3B
+:1015800000112FCDC0086E685808C0E1201D48A882
+:101590001AD8E06806181AD848D81AD8488CF01F0C
+:1015A00000092FCDC008F01F000B30088F588F683E
+:1015B000E3CD80808003A46C8003A75C80038E68E9
+:1015C00080002D4C8003A7808003A7A48003A7D0B0
+:1015D0008000E538EBCD40E0189778A630DB0C9C16
+:1015E000F01F003430088D988DB88DA88DD88DC827
+:1015F000ED48004CED480048ED4800448DE80E9C55
+:10160000F01F002DEBDCC008C201301A335B0C9CCC
+:10161000F01F002A307B0C9CF01F00290C9CF01F4F
+:101620000029ED0B001CF6CBFF105C7B6C5CF01FFF
+:1016300000260E983439ECCAFFDC6C5B6C1CF01F82
+:1016400000230E9CF01F0022ED3800132FF8F3D872
+:10165000C008ED6900133098F0091800E088000513
+:10166000E0692710C078E06803E8F2080248F3D880
+:10167000B0105C79F2C9FE0DE06A4DD3EA1A10622F
+:10168000F20A0448A559ED59001E0E9CF01F0011E6
+:1016900049160C9B0E9CF01F00110C9B0E9CF01F1A
+:1016A00000100C9B0E9CF01F000F0A9CE3CD80E005
+:1016B00080010E28800112C880010F6080010FC8D0
+:1016C000800110188000E62C80009CA88001152461
+:1016D0008000EA208003A1BD8000EB3C8000E9D8B7
+:1016E0008000E9F6EBCD40E0189678A7305B0E9CC1
+:1016F000F01F002B0C9CF01F002BEBDCC008C2A1DC
+:10170000301A335B0E9CF01F0028303B0E9CF01FFC
+:101710000027302A339B0E9CF01F0023ED1B002C6A
+:101720000E9CF01F00230E9CF01F0022EF0B001CEC
+:10173000F6CBFF105C7B6E5CF01F001F0C983439F9
+:10174000EECAFFDC6E5B6E1CF01F001C0C9CF01FD1
+:10175000001CEF3800132FF8F3D8C008EF6900130E
+:101760003098F0091800E0880005E0694E20C07844
+:10177000E06807D0F2080248F3D8B0105C79F2C9EB
+:10178000FE0DE06A4DD3EA1A1062F20A0448A55928
+:10179000EF59001E0A9CE3CD80E0000080010E2876
+:1017A000800112C880010F6080010FC880011108FC
+:1017B000800110188000E62C80009CA88001152470
+:1017C000EBCD40C01896580CC0E1201D4AE81AD84D
+:1017D000E06802F51AD84AD81AD84ADCF01F002D62
+:1017E0002FCDC00878A75807C4C0EF390012308841
+:1017F000F0091800C46117891798B168F1E91188D8
+:1018000017A9F1E9108817B910496EA81039C391CA
+:1018100030CB0E9CF01F00200C9CF01F00205C5C65
+:10182000C281301A335B0E9CF01F001D304B0E9CA2
+:10183000F01F001C304A332B0E9CF01F00196EABBA
+:101840000E9CF01F00190E9CF01F0018EF0B001CDF
+:10185000F6CBFF105C7B6E5CF01F00150C983439E2
+:10186000494A6E5B6E1CF01F00140C9CF01F0013A5
+:10187000EF3800132FF8EF6800133148EF58001EBF
+:10188000E3CD80C08003A46C80038EDC80038E686F
+:1018900080002D4C80010E28800112C880010F604D
+:1018A00080010FC880011170800110188000E62CA3
+:1018B0008003A1B980009CA880011524EBCD40E0F5
+:1018C000189678A7303B0E9CF01F002F0C9CF01F41
+:1018D000002FEBDCC008C321301A335B0E9CF01FD5
+:1018E000002C303B0E9CF01F002B302A339B0E9CAB
+:1018F000F01F0027E06B02400E9CF01F0027304ACB
+:10190000332B0E9CF01F00226EAB0E9CF01F0023A9
+:101910000E9CF01F0023EF0B001CF6CBFF105C7B2E
+:101920006E5CF01F00200C98343949FA6E5B6E1C17
+:10193000F01F001E0C9CF01F001EEF3800132FF844
+:10194000F3D8C008EF6900133098F0091800E08858
+:101950000005E0692710C078E06803E8F208024853
+:10196000F3D8B0105C79F2C9FE0DE06A4DD3EA1AE3
+:101970001062F20A0448A559EF59001E0A9CE3CDF3
+:1019800080E0000080010E28800112C880010F60F5
+:1019900080010FC8800111088001117080011018AA
+:1019A0008000E62C8003A1B980009CA8800115244A
+:1019B000EBCD40E0189678A74BCA15891598B16809
+:1019C000F1E9118815A9F1E9108815B910498FA915
+:1019D000306B0E9CF01F00360C9CF01F0036EBDCC9
+:1019E000C008C3E1301A335B0E9CF01F0033301B7C
+:1019F0000E9CF01F0032302A339B0E9CF01F002EED
+:101A0000ED1B002C0E9CF01F002E304A337B0E9CE9
+:101A1000F01F0029301B0E9CF01F0028303B0E9C4D
+:101A2000F01F002631CB0E9CF01F0024306B0E9C63
+:101A3000F01F00220E9CF01F0023EF0B001CF6CBC2
+:101A4000FF105C7B6E5CF01F00200C98343949FA63
+:101A50006E5B6E1CF01F001E0C9CF01F001EEF380A
+:101A600000132FF8F3D8C008EF6900133058F009BD
+:101A70001800E0880005FE79EA60C078E06803E8B5
+:101A8000F0090948F3D8B0105C79F2C9FE0DE06A9C
+:101A90004DD3EA1A1062F20A0448A559EF59001E04
+:101AA0000A9CE3CD80E000008003A1BD80010E28E8
+:101AB000800112C880010F6080010FC880011108E9
+:101AC000800110188000E62C8003A1B980009CA83A
+:101AD00080011524EBCD40E0189678A7301B0E9CB2
+:101AE000F01F003E0C9CF01F003EEBDCC008C5015F
+:101AF000301A335B0E9CF01F003B303B0E9CF01FF6
+:101B0000003A302A339B0E9CF01F0036ED1B002C50
+:101B10000E9CF01F0036304A332B0E9CF01F003114
+:101B20006EAB0E9CF01F0032304A336B0E9CF01FE0
+:101B3000002D6E9B0E9CF01F002E304A337B0E9CB6
+:101B4000F01F0028301B0E9CF01F0027303B0E9C1E
+:101B5000F01F002531CB0E9CF01F0023306B0E9C34
+:101B6000F01F00210E9CF01F0023EF0B001CF6CB92
+:101B7000FF105C7B6E5CF01F00200C98343949FA32
+:101B80006E5B6E1CF01F001E0C9CF01F001EEF38D9
+:101B900000132FF8F3D8C008EF6900133058F0098C
+:101BA0001800E0880005FE79EA60C078E06803E884
+:101BB000F0090948F3D8B0105C79F2C9FE0DE06A6B
+:101BC0004DD3EA1A1062F20A0448A559EF59001ED3
+:101BD0000A9CE3CD80E0000080010E28800112C83D
+:101BE00080010F6080010FC8800111088001117011
+:101BF000800110188000E62C8003A1B980009CA809
+:101C000080011524EBCD40E0189678A7304B0E9C50
+:101C1000F01F002A0C9CF01F002AEBDCC008C291C8
+:101C2000301A335B0E9CF01F0027303B0E9CF01FD8
+:101C30000026302A339B0E9CF01F0022ED1B002C47
+:101C40000E9CF01F00220E9CF01F0021EF0B001CC9
+:101C5000F6CBFF105C7B6E5CF01F001E0C983439D5
+:101C600049DA6E5B6E1CF01F001D0C9CF01F001CFF
+:101C7000EF3800132FF8F3D8C008EF69001330983D
+:101C8000F0091800E0880005E0692710C078E068D6
+:101C900003E8F2080248F3D8B0105C79F2C9FE0DEF
+:101CA000E06A4DD3EA1A1062F20A0448A559EF59C6
+:101CB000001E0A9CE3CD80E080010E28800112C83E
+:101CC00080010F6080010FC8800111088001101889
+:101CD0008000E62C8003A1B980009CA88001152417
+:101CE000EBCD40FC4A6870075807C46030163014CA
+:101CF00030A3300530526EAA580AC3B0F50900224D
+:101D0000F2C80001F5580022EC091900C1516EA873
+:101D1000F13A0012E80A18005F08E60A18005F09A5
+:101D20001248EA081800C041E40A1800C2210E9CBB
+:101D3000F01F0014C1E86EA8F10A0020F4C90001E8
+:101D4000F1590020EC0A1900C1416EA8F13A0012C5
+:101D5000E80A18005F08E60A18005F091248EA0856
+:101D60001800C041E40A1800C0410E9CF01F000694
+:101D70006E075807CC11E3CD80FC000000007FE81F
+:101D800080011C04800116E4EBCD40E01895580C4E
+:101D9000C0E1201D4C481AD8E068024E1AD84C38D1
+:101DA0001AD84C3CF01F00432FCDC00878A7F93853
+:101DB0000035A3D8F9680035F909002CE068023F26
+:101DC000F0091900E088006C5807C081350CF01F3D
+:101DD000003A1897C6408BACC2E86E1C580CC03055
+:101DE000F01F00366E585808C0E0201D4AE81AD887
+:101DF000E068026C1AD84B281AD84ADCF01F002D74
+:101E00002FCDC0086E285808C0916E385808C061A0
+:101E1000EF090010F0091900C0E0201D4A281AD867
+:101E2000E068026E1AD84A781AD84A1CF01F0021BE
+:101E30002FCDC008350A300B0E9CF01F0023F01F79
+:101E400000238F1CC0A10E9CF01F002130088BA81E
+:101E5000E06C00FFE3CD80E049E6344A0C9BF01FC4
+:101E6000001E343A0C9B6E1CF01F001C0A9A49CBD2
+:101E70006E1CF01F001C0A9CF01F001B5C5CC080E5
+:101E80000A9CF01F001AE06C00FFE3CD80E0EB3805
+:101E90000035A3B8EB680035E3CD80E0E06C00FFCF
+:101EA000E3CD80E08003A46C80038EDC80038E6829
+:101EB00080002D4C8002D85480009B108003A7FC2A
+:101EC0008003A6648002DE9A80009AE48002D83CF7
+:101ED0008003A1BD80009B5080009C248001206075
+:101EE00080009ADC800119B0800111FCEBCD4060CC
+:101EF000189578A6308B0C9CF01F0009300AECCBAB
+:101F0000FFD80A9CF01F0007ED3800132FF8ED688A
+:101F100000133018ED58001EE3CD806080010E28BC
+:101F2000800092F4EBCD40C0202D1896580CC0E1F3
+:101F3000201D4C281AD8E06803781AD84C081AD803
+:101F40004C0CF01F00412FCDC00878A75807C0E106
+:101F5000201D4BA81AD8E068037A1AD84BB81AD8B3
+:101F60004B8CF01F00392FCDC0086F295BF9C15091
+:101F70002E29E06A8889EA1A8888F20A0648A59913
+:101F8000E049FFFFE08B004FF1D9B010EF5800207F
+:101F9000F9B80001EFF80C106F395BF9C1502E2928
+:101FA000E06A8889EA1A8888F20A0648A599E04911
+:101FB000FFFFE08B003CF1D9B010EF580022F9B8D8
+:101FC0000001EFF80C11EEC8FFD4C0506EB85018E5
+:101FD0005808C041FC18FF005018EEC8FFD0C2A03E
+:101FE0006EC850085808C0616EA940181268A1A8B0
+:101FF0005008EECBFFD80C9CF01F0015FACBFFFC6D
+:102000000C9CF01F00141A9B0C9CF01F00130C9CDE
+:10201000F01F001230AB0E9CF01F00112FEDE3CD2E
+:1020200080C03FF8EF580020CB8B3FF8EF580022DC
+:10203000CCBB30085008CD9B8003A46C8003A8144F
+:1020400080038E6880002D4C8003A8308000EB3C1C
+:102050008000E9F68000E9D88000EAF480010E28CB
+:10206000EBCD40FC1492189378A7741A6E28580888
+:10207000C0916E385808C061EF090010F0091900CE
+:10208000C110201DFEF803C81AD8E06805651AD8EB
+:10209000FEF803C01AD8FEFC03BEF01F00F02FCDDF
+:1020A000C008845932B8F0091900E08801C2149BB5
+:1020B00015893028F0091800E08101BBF936002E9F
+:1020C0005806C1C0F939002FF538001CF009180076
+:1020D000E08101AFF8CEFFD0F4CCFFE3300AC07846
+:1020E0001D391938F0091800E08101A3F4C8FFFF79
+:1020F000F5D8C008EC0A1800CF4317C917D8B16843
+:10210000F1E9118817E9F1E9108817F910496E080B
+:102110001039E081018E5807C111201DFEF80330EF
+:102120001AD8E06805121AD8FEF803341AD8FEFC53
+:102130000326F01F00CA2FCDC0080E9CF01F00C957
+:10214000844CE06800F0F00C1900E0880010F8CC36
+:1021500000F0EF5C00105C7CF01F00C38F3CC0619E
+:102160003008EF580010E08F0164E06C00F0F01FC1
+:1021700000BE8F2CC0C16E3C580CE080015AF01F8D
+:1021800000BB30088F38EF580010C5293009E06ACD
+:1021900000F0189B049CF01F00B6E06800F0F00C03
+:1021A0001900C110201DFEF802A61AD8E068052EFD
+:1021B0001AD8FEF802BE1AD8FEFC029CF01F00A737
+:1021C0002FCDC0086E3B580BE080013BE06900F06A
+:1021D000EF1A0010049CF01F00A6EF080010F8088A
+:1021E0001900E080012E201DFEF802641AD8E06874
+:1021F00005351AD8FEF802801AD8FEFC025AF01FE4
+:1022000000972FCDC0082FECF01F009C3058F00C29
+:102210001800E08100ABEF3900123018F009180007
+:10222000E081009766A530088BB88BC88BD8333B0C
+:102230000A9CF01F0093C0602FECF01F0092EB4C43
+:10224000004433AB0A9CF01F008EC0702FECF01FCF
+:10225000008DEB4C0048C0586B18A198EB48004823
+:1022600033BB0A9CF01F0086C0702FECF01F008566
+:10227000EB4C004CC0486B18EB48004C6A2AF4C881
+:10228000FFF0C0313009C0F8F5390010F538001101
+:10229000B168F1E91188F5390012F1E91088F539D2
+:1022A000001310498BA9301B0A9CF01F0075C05009
+:1022B0002FECF01F00748BBC303B0A9CF01F0070A9
+:1022C000C0502FECF01F006F8BCC31CB0A9CF01F5D
+:1022D000006CC0502FECF01F006B8BDC306B0A9C45
+:1022E000F01F00671894C2D02FFCF01F0064F9DCC7
+:1022F000C0488BEC582CE088000630288BE830066C
+:10230000C058580CCFD13006C188EC0C15022FEC08
+:10231000E80C000CF01F005BECCBFFF2EA0B002B8B
+:10232000971C2FCB0C9CF01F0058ECC8FFFFEDD87A
+:10233000C0086AE81036CEA34D4B0C9CF01F00522B
+:102340003008EF58001E069CF01F0051C7182039B6
+:102350003028F0091800E08B006C3008EF58001EA0
+:10236000069CF01F004CC6483068F00C1800C311E2
+:10237000EF3A00123038F00A18005F093018F00AFE
+:1023800018005F081049C0913048F00A1800C0508A
+:102390003058F00A1800C4C13008EF58001E66A576
+:1023A000069CF01F003D4B960C9B069CF01F003BCB
+:1023B0000C9B069CF01F003A0C9B069CF01F0039FA
+:1023C00030CB0A9CF01F0038069CF01F0038C30871
+:1023D0003028F00C1800C2C1EF3900123068F00943
+:1023E0001800C2613008EF58001E66A6336B0C9CC3
+:1023F000F01F0023C1D02FECF01F00228D9C6C2A0F
+:10240000F4C8FFF0C0313009C0F8F5390010F538D4
+:102410000011B168F1E91188F5390012F1E910886D
+:10242000F539001310498DA9069CF01F00210E9C60
+:10243000F01F000C049CF01F001FE3CD80FC335BF9
+:102440000E9CF01F000FFE91FEE0CF2B8003A46CCA
+:102450008003A66480038E6880002D4C8003A8480A
+:10246000800112988002D8548002D83C8000E2B8E3
+:102470008003A8588003A88C80010F4080010E3E85
+:1024800080010F44800106448003A1BD80011EEC41
+:1024900080011F248000EA208000EB3C8000E9D806
+:1024A0008000E9F680010E28800119B080011AD45D
+:1024B0008000E538D4314C4870075807E08000832D
+:1024C0003016300330C230610695301430806EA96A
+:1024D0005809C750F308001EEC081900E0880006F0
+:1024E0002018F358001EC6B8EC081900C681F35333
+:1024F000001E6EABF73A0012E40A18005F08E20A09
+:1025000018005F091248EA081800C0500E9CF01F1E
+:10251000002FC558E80A1800C131F73800133059A8
+:10252000F2081800E08B00060E9CF01F0029C4780A
+:102530000E9CF01F00280E9CF01F0024C408E00A27
+:102540001800C0F1F7380013E8081800E08B000607
+:102550000E9CF01F0021C3380E9CF01F0020C2F813
+:102560003058F00A1800C0510E9CF01F001DC278B0
+:102570003049F20A1800C121F7380013E0081800AA
+:10258000E08B00060E9CF01F0017C1980E9CF01FF8
+:1025900000110E9CF01F000DC1283038F00A180001
+:1025A000C0E1F7380013E8081800E08B00060E9C25
+:1025B000F01F000DC0480E9CF01F00046E07580766
+:1025C000C871D83200007FE8800119B080011AD4A8
+:1025D000800115D480011EEC80011F24800116E4C7
+:1025E00080011C04800118BC4828910C5EFC00008E
+:1025F0000000707CD401189E1499F60A1504123A52
+:10260000F9BC0810F9BC0B08F80B024BF60A1601CE
+:10261000F4090039F20B0D08109BF00A1603F4C8F8
+:102620000001E048FFFEE0880003DA0A7C19590C3B
+:10263000E8680000F9B80000E419FFF7E019FECFE0
+:1026400012489D18F1DBC003F5E811089D88D80AEF
+:102650007858E2180002F9BC0002E06901FFF7D9DE
+:10266000E128F9F81A07F9BC01005EFC7858E21875
+:1026700000E0C030304C5EFC7858F1D8C001F9BCA5
+:102680000003F9F81006E06901FFF1D9E128F7F835
+:102690001A00F9BC01005EFCE1B80000E618000178
+:1026A000C071D3033FF899387858D503C0483FF834
+:1026B0009938785830089918999899A8EA68610C5F
+:1026C00099085EFCEBCD40E0189616971495F01F24
+:1026D000002F5807C5800FC93048F0091800E0885E
+:1026E00000533098F0091800E08B004E0FD9307875
+:1026F000F0091800E08B00488E39E0680101F0090C
+:102700001900E08B0041EF3900083038F00918005B
+:10271000E08B003A0A9A6E0B0C9CF01F001D581CAF
+:10272000C3200FC93098F0091800C0516C18B1B817
+:102730008D18C0686C182059F1E910688D186C1A52
+:10274000EF3900080FD8A978F1E910E814488D187E
+:102750008E393028F0091900E08800096C18ADB8EE
+:102760008D188EB820288DA8C0686C185C79F1E9A6
+:1027700010C88D186C18E018FFF08D1835088D08FA
+:10278000E3CF80E0E3CF90E080012698800125F43C
+:10279000D401189E760C582CE0880003DC0A7619C8
+:1027A000F1D9C003AFB8129AE61AC0001448129AC1
+:1027B000E61A30001448129AE61A0C001448129ACD
+:1027C000E61A03001448129AE61A00C01448129A36
+:1027D000E61A00301448129AE61A000C1448129AAD
+:1027E000E61A00031448129AE21A60001448F5D958
+:1027F000C181F1EA10C8129AE21A0C001448129A28
+:10280000E21A03001448F5D9C0E1F1EA1078F5D9CD
+:10281000C0C1F1EA1068129AE21A00301448F3D9E4
+:10282000C061F1E91038F8091506FC0900092FC943
+:102830009308D80AF6081506582BF9BC0BFFF9D8EF
+:10284000E809F9B80805F3F88A00F9BC08005EFC4D
+:10285000D401149E582BE0880003DC0AF608150604
+:10286000F80800082FC87008E2188000C0C0F608F9
+:102870001506F80800082EC870095C7AE0190000F7
+:10288000124A910AF9DEC010D802D401149E582BC6
+:10289000E0880003DC0AF6081506F80800082FC8CF
+:1028A0007008E2188000C0C0F6081506F808000895
+:1028B0002E4870095C7AE0190000124A910AF9DE8C
+:1028C000C010D802D401189E149C3038F00A1800A9
+:1028D0005FB93078F00B18005F881049C18131086A
+:1028E000F00B1800E08B0014E06800809D08F3DA1C
+:1028F000C001F9B90002F9B90100F6CA0008F808E8
+:102900001601F1EA104812489DC8D80A302CD802A6
+:10291000F739000D3018F0091800E0880004302C59
+:102920005EFCE0680080990878183019F1D9D00170
+:10293000F739000DF1D9D081300AF1DAD0E130F960
+:10294000F1D9D20499185EFAD401129E3018F00B16
+:1029500018005FB9F00A18005FB81049C030302C79
+:10296000D8027818F1DBD021F1DAD041F1DED308BA
+:102970009918D80A7818EA18000F99187818E218E8
+:102980000004C10030E8F00B1800E08B001B781940
+:10299000F6081510EA18FFF0E818FFFF12689918FA
+:1029A0005EFD3038F00B1800E08B000C781AF6C989
+:1029B000FFF03018F00909485CD8146899185EFDDA
+:1029C000302C5EFCE0692710C0585809C0215EFF1A
+:1029D00020197848E2180200CF907818EA18000F02
+:1029E0009918FC18010099085EFDEBCD40E01895A0
+:1029F000169CF73E000C3038F00E1800E08B0059A2
+:102A0000F736000B3018F0061800E08B0052F7374D
+:102A100000083078F0071800E088004B3108F00714
+:102A20001800E08B00467618F00B1601F40B000B33
+:102A3000F6080D0AF4C80001E04800FEE08B0039FA
+:102A4000580AC3653009FC081601F3D8D0011C9858
+:102A5000EC180001F3D8D021F3D6D061EEC80008FD
+:102A6000F3D8D084F3DAD108F9380009F3D8D208C2
+:102A7000F938000AF3D8D308198B3018F00B180076
+:102A8000C0E0C0A33028F00B1800C0C03038F00BF5
+:102A90001800C0E1C0A88BC9E3CF80E08BD9E3CF99
+:102AA00080E08BE9E3CF80E08BF9E3CF80E0302C4E
+:102AB000E3CD80E0301899085EFC784CF9DCC02149
+:102AC0005EFCE0692710C0585809C0215EFF20193C
+:102AD0007848E2180002CF90F1DBC01099385EFD13
+:102AE000E0692710C0585809C0215EFF20197848B6
+:102AF000E2180201E0480201CF717828B6085EFDB5
+:102B0000780CF9DCC0815EFCEBCD40C018971696BE
+:102B10000E9CF01F0006CFD18F160E9CF01F0003F5
+:102B2000CFD1E3CD80C0000080012B00EBCD4080F1
+:102B300018970E9CF01F0006CFD16E08A1A88F0831
+:102B40000E9CF01F0003CFD1E3CD808080012B00CD
+:102B5000301899485EFCD703EBCD40C01897169605
+:102B60000E9CF01F0006CFD18F260E9CF01F000395
+:102B7000CFD1E3CD80C0000080012B00EBCD40E041
+:102B80001897169614953018F00B18005FB930F8A6
+:102B9000F00A18005FB81049C030E3CF80E0301869
+:102BA000F00B1800C0A1FE7C0C00F01F0010300BD1
+:102BB000FE7C0C00F01F000E0E9CF01F000ECFD10B
+:102BC000EC081503B1A8F1E510888F080E9CF01FE2
+:102BD0000009CFD1300B0E9CF01F00073FFB0E9C6D
+:102BE000F01F0006E3CF90E080012C9480012CA41C
+:102BF00080012B0080012B0880012B5878A8F1DB85
+:102C0000D00399A85EFCD703D401EC5BBB9FE08B9B
+:102C10000004304BC188E068C6BFEA18002D103BA5
+:102C2000E08B0004305BC0F8E06811FFEA18007A1E
+:102C3000103BE0681200EA18007A103BF9BB03066B
+:102C4000F9BB0207F01F0002D802000080012BFC34
+:102C500078A8F1DBD10399A87808A3A899085EFCAD
+:102C60007958E2180080CFD05EFCD703EBCD40400E
+:102C70001896F01F00040C9CF01F0003E3CD804069
+:102C800080012C5080012C6078C8F1DBD10399C8F9
+:102C90005EFCD703D401301BF01F0002D8020000F5
+:102CA00080012C8878C83019F1D9D001F1DBD2032A
+:102CB00099C85EFCEBCD40C0FACEFFF41897300CFB
+:102CC0001DF6EDD6C003F9D6D0031DBEFDDEC00152
+:102CD000F9DED0E1F9D6D103F9DED1E1F9DAD20398
+:102CE000F9DBD2E1F9D8D303F9D9D3E18F1C6F58BE
+:102CF000E2180020CFD0E3CD80C0EBCD404040268D
+:102D0000300EFDD8D021FDD9D104FDDAD204FDD694
+:102D1000D3062F8BF80B092EE3CD8040D4012F8BE7
+:102D2000F80B032EF5E91019F3E81029FDD9D0436B
+:102D3000F80B092ED8022F8BF80B0328A1A8F80B4B
+:102D400009285EFC7958F1D8C001CFD05EFC780824
+:102D5000F1DBD00299085EFCEBCD4060189514962B
+:102D6000F01F00060C9B0A9CF01F0005301B0A9CFC
+:102D7000F01F0004E3CD806080012C0880012C6CE2
+:102D800080012D4EC008D703D401F60E160548A8C1
+:102D9000F00E0038F7DBC0057018F00B092CF5DADF
+:102DA000C0024868F00A0329FE780800F00E0929DD
+:102DB000D80200008003A8A880036D3CEBCD40C082
+:102DC0004918E3B800013009129A490B490C491619
+:102DD000FE7E08001297C078F60A00387018F009D5
+:102DE000092C2FF9F60A03381039CF736C08FC0A46
+:102DF00009282FFA593AE08B00040E99CF4BE3CD06
+:102E000080C0000080036C008003A8A880012D848E
+:102E100080036D3CFE780800E0690083F20C010C31
+:102E2000F00C032AF4C9FFC0F00903285808C02198
+:102E30005EFDF00812004859F20A0039F008111F2F
+:102E40007219F208032C5EFC8003A8A8F808160586
+:102E5000A968FE7A1000F00A0009581BC0D0C063B0
+:102E6000582BC100583BC1405EFF3018F00C094898
+:102E7000936893A8C1283018F00C0948935893A878
+:102E8000C0C83018F00C094893689398C06830188F
+:102E9000F00C0948935893983018F00C094893287F
+:102EA0005EFDD703D42118961694580BC031300517
+:102EB000C0D830050A970D9B0D8CF01F00061845F1
+:102EC0002FE62FF70E34FE9BFFF80A9CD822000055
+:102ED00080012E4CF8091605A969E029F000301888
+:102EE000F00C0948F348004893185EFCF8091605F1
+:102EF000A969E029F0003018F00C0948F348007483
+:102F00005EFCF8091605A969E029F0003018F00CFC
+:102F10000948F34800785EFCF8081605A968E0281F
+:102F2000F0003019F20C0949F1490054F14900440C
+:102F300091195EFCF8081605A968E028F000301920
+:102F4000F20C0949F1490058F149004491195EFC1D
+:102F5000F8081605A968FE7A1000F00A0009301872
+:102F6000F00C0948F34800C4581BC0A0C043582BBC
+:102F7000C111C0B8F34800A8F34800B8C0C8F3486E
+:102F800000A4F34800B8C078F34800A8F34800B4A0
+:102F9000C0285EFFF34800945EFDF8091605A96994
+:102FA000E029F0003018F00C0948F34800985EFC66
+:102FB000F8081605A968E028F000F0F800D0F00C39
+:102FC0000A48F9D8C0015EFCF8091605A969E0298C
+:102FD000F0003018F00C0948F34800D85EFCFE6998
+:102FE00014007208F1DCD0C193085EFCE1B8000067
+:102FF000E6180001C091D3033018F00B0948994836
+:10300000783CD5035EFC3018F00B09489948783CB1
+:103010005EFCD703D401580BC090F8CBFFFE5C5B7D
+:10302000FE7C2800F01F0006D802F8CBFFFE5C5B98
+:10303000FE7C2800F01F0003D802000080012974E4
+:10304000800129C4EBCD40E048F8700CF1DCC008E9
+:10305000C1003005FE76280048B70A9B0C9CF01F83
+:10306000000B6E08F0CCFFFF8F0CF1DCC008CF61C5
+:10307000300BF9DCC288F01F000630194858B089BF
+:10308000E3CD80E00000715880012AC28001301435
+:103090000000715CD4014868700C300BF9DCC28808
+:1030A000F01F000430094848B089D8020000715868
+:1030B000800130140000715CEBCD40E0202D4958B8
+:1030C000700C301BF9DCC288F01F0013E06B00D7D6
+:1030D000FE7C2800F01F0011E06500FFFE7728004D
+:1030E000FAC6FFFA0A9B0E9CF01F000C0C9B0E9C6C
+:1030F000F01F000B9AB8E2180080CF504858700CAF
+:10310000300BF9DCC288F01F00042FEDE3CD80E026
+:10311000000071588001301480012AC280012AE029
+:10312000EBCD4040202DA96C49B8910C49B81189CC
+:103130003008F0091800C030F01F00193009497834
+:10314000B08949566C0C301BF9DCC288F01F0015A1
+:10315000E06B0082FE7C2800F01F00136C0BF1DB9B
+:10316000C10CF7DBC008F7E8109BFAC6FFF80CDBD0
+:10317000B18BFE7C2800F01F000C0DABFE7C2800FC
+:10318000F01F00090DBBFE7C2800F01F00072FED8B
+:10319000E3CF9040000071580000715C800130B8AE
+:1031A0008001301480012AC2EBCD40E018974948D5
+:1031B00011893008F0091800C1C04928700CA98C89
+:1031C000F01F0011C1680F3B0A9CF01F00100C3764
+:1031D000CFB148C8700CF8CCFF00910C300BF9DC73
+:1031E000C288F01F000B30194858B089E3CF90E037
+:1031F0000E98FE752800F0C6FF00CE6B0000715CD3
+:10320000000071588001312080012AC280013014F1
+:10321000EBCD4040202DA96C4A78910C4A78118959
+:103220003008F0091800C030F01F002530094A3876
+:10323000B0894A166C0C301BF9DCC288F01F0021E3
+:10324000E06B00D2FE7C2800F01F001F6C0BF1DB4E
+:10325000C10CF7DBC008F7E8109BFAC6FFF80CDBDF
+:10326000B18BFE7C2800F01F00180DABFE7C2800FF
+:10327000F01F00150DBBFE7C2800F01F0013E06B53
+:1032800000FFFE7C2800F01F0010E06B00FFFE7CBA
+:103290002800F01F000DE06B00FFFE7C2800F01FEF
+:1032A000000AE06B00FFFE7C2800F01F00072FEDF6
+:1032B000E3CF9040000071580000715C800130B88D
+:1032C0008001301480012AC2EBCD40F8202D1897E0
+:1032D00049B811893008F0091800C260109949886E
+:1032E000B0894988700CA98CF01F0017C1D8069BC3
+:1032F0000A9CF01F0016089B0A9CF01F00159A38C4
+:103300000EC80C37CF5148F8700CF8CCFF00910C68
+:10331000300BF9DCC288F01F000F30194888B089E3
+:103320002FEDE3CF90F80E98E06300FFFE752800C4
+:10333000FAC4FFFAF0C6FF00CDBB00000000715CCC
+:10334000000071588001321080012AC280012AE0F9
+:1033500080013014EBCD40C01897580CC0D048867F
+:103360000C9CF01F00080C9CF01F0007EEC8000129
+:10337000EFD8B010CF61E3CF90C0000000007160C3
+:1033800080002EE4800131A8EBCD40C01897580C86
+:10339000C0D048860C9CF01F00080C9CF01F000752
+:1033A000EEC80001EFD8B010CF61E3CF90C00000AD
+:1033B00000007160800132C880002F00D421FAC75C
+:1033C000FFEC18963028AE88FE74280010950C9AF1
+:1033D0000E9B089CF01F0009C020D82A0F882FF8E8
+:1033E0005C58EA081800E08B0004AE88CF1B300957
+:1033F0004838B089DA2A0000800129EA0000715CAF
+:10340000106104000000000040200700FFFFFFFFE4
+:10341000000000004869F2F802045828C0205EFE4F
+:10342000580CCFE0F2C8FFF099085EFF0000726010
+:103430005EFDD7034828912C913B5EFF000072602F
+:1034400048384849910C930B5EFC0000000075243D
+:10345000000074985EFCD703D431202D500C300846
+:10346000FAC1FFF81690109402D84A424A43E26922
+:103470005A4C089A0819029B009C40085D18189540
+:103480005804C0B1584CF80A1780F9BA0B0449DB4C
+:10349000401CF01F001DC2E140165805C1000A97EC
+:1034A0005907EE0A1780F9BA0B100C9B1417140673
+:1034B00064085C7A660C5D185807CF310A04E24450
+:1034C0005A4BFE98FFD65875E088000D4018EACC9C
+:1034D000000848CBF00C000C2F8B308AF01F000A3C
+:1034E000C0913009009C129A129B40085D182FED84
+:1034F000DA3A30DC2FEDD8320000752400007498E1
+:103500008001340080002D94EBCD40FC49F81894E4
+:10351000F0C3FDDCF0C7FFBC3072C0B8321A089BA4
+:103520000A9CF01F001B1896C1D02C470637C160BB
+:10353000EEC5002C5804CF316E08109C5808CF609F
+:10354000F01F00148F04EF44FFF86E185808CEE106
+:103550008F248F322C470637CEC15804C0D0E3CF1A
+:10356000C0FC6ABC580CC080F01F000A8B968BB65A
+:103570006AC85808C030E3CF90FC8BD8301C307834
+:103580008BE8E3CD80FC00000000726080002D9489
+:1035900080002E00EBCD40FE1091149618951692E7
+:1035A0001293F4C80008E0480037E08B001858591F
+:1035B000C18049D8F0C4FE08F0C7FFE86EB85808CB
+:1035C000C1300E9C321A0A9BF01F0018C1D02C4744
+:1035D0000837CF51307CE3CD80FE30ACE3CD80FEA8
+:1035E000129CE3CD80FEECCBFFFF049CF01F00108B
+:1035F0000A9B8FBC8F968FD18FE30E9C321AF01FDF
+:10360000000DE3CF90FE6EBCF01F000B049CECCBD2
+:10361000FFFFF01F00078FE38FBC8F968FD1E3CFA2
+:1036200090FE00000000726080002D9480002DA0AC
+:1036300080002DF480002E00D401487BF6F80204AF
+:103640005828C020DC0AF6CBFE04306AF01F0003C5
+:10365000DA0A00000000726080002DF4EBCD40FE1D
+:10366000209D580B5F09580A5F081693149410693F
+:10367000C341580BC4514A9264585808C2E03005FF
+:10368000FAC1FFFD0A970A9CC0D8ED3A0020FB382A
+:103690000023F4081800C2E00E9C64580E38E0883D
+:1036A000001E64482FF7F00C03265803CEF1306A51
+:1036B000089B5804C0A0202D1A9CF01F0019F01F71
+:1036C00000192FED580CC0E05805C0506AC96CC8ED
+:1036D0001238CE350C95CE1B30050A9C2F7DE3CDDC
+:1036E00080FE306A089BECCCFFDFF01F000FCD514D
+:1036F000CECB029B0C9CF01F000CCCF1CD9B189BF9
+:10370000069AFACCFFFDF01F0009FB630023483244
+:1037100064585808CB51CE1B000072608002DD1443
+:103720008001C22480002D9480002DF4EBCD4060F8
+:10373000306A202D169618951A9CF01F0009F01F6C
+:1037400000090C9A5F0B0A9CF01F00072FED581C14
+:10375000F9BC0001F9BC01FFE3CD80608002DD14FB
+:103760008001C22480017F58D4015C6CF01F0004EA
+:10377000581CF9BC0001F9BC01FFD80280017EF49D
+:10378000EBCD406E202D1293189116921495300BAC
+:10379000308A1A9CF01F0012306A069B1A96202D60
+:1037A0001A9CF01F0010F01F001030085F091AD893
+:1037B0000A9A1AD6049B1AD3029C1AD83038F01FE2
+:1037C000000B2FAD5BFCC070581CF9BC01FF2FED46
+:1037D000E3CD806E304C2FEDE3CD806E80002DE880
+:1037E0008002DD148001C224800180F4EBCD406EA4
+:1037F00010911892169314951296F01F001130082C
+:103800000C991AD80A9A1AD1069B049CF01F000D35
+:103810002FED583CE0890007582CC085306CE3CD73
+:10382000806E584CC070E3CFC06E5BECC050581C2B
+:10383000CFB1E3CF906E30BCE3CD806E800146EC1B
+:1038400080018BF0EBCD4040201D10964978F0FEB2
+:103850000204582EC0503FFC2FFDE3CD804030EED7
+:10386000FAC8FFFC10DE300E1A985C761ADE1AD603
+:10387000F01F000F2FEDFE5CFC17E0890010FE5CCE
+:10388000FC16C114FE5CFB4FC070FE5CFBB4C0B004
+:10389000FE5CFAECCE11307CCE0B5BECC040581CC9
+:1038A000CDB1CDBB30BCCD9B000072608001895C86
+:1038B000D4014858F0F902045809C030F01F000341
+:1038C000D8020000000072608001473CEBCD40E868
+:1038D0004D56189514971693E06A0218300B0C9CFD
+:1038E000F01F00524D288D05700C8D133005A36C10
+:1038F000ED450204F01F004F8D4CC031E3CFC0E80E
+:103900000A9CF01F004D581CCFA11AD5F1D7C00852
+:103910000A990A9A310B320CF01F00482FFD581CEF
+:10392000CEE1F01F0047581CCEA11AD50A980A997B
+:103930004C4A0A9B302CF01F00442FFD580CCDF050
+:1039400030670A981AD70A994BEA0A9B322CF01F63
+:10395000003E2FFD580CCD3030780A991AD84B9A7A
+:103960000A980A9B323CF01F00382FFD580CCC708F
+:103970001AD50E9C0A980A994B2A0A9BF01F00320E
+:103980002FFD580CCBC030270A981AD70A994ADA6B
+:103990000A9B304CF01F002C2FFD580CCB001AD77F
+:1039A0000A984A8A0A990A9B305CF01F00272FFD6B
+:1039B000580CCA50301C0A981ADC0A994A1A0A9BF9
+:1039C000F01F00212FFD580CC9A030390A981AD9D0
+:1039D00049CA0A990A9B31CCF01F001B2FFD580CD5
+:1039E000C8E0F01F001A581CC8A1F01F0019581C8D
+:1039F000FE91FF860A980C9730490C9A495B0A9C05
+:103A0000F01F0015FE90FF7C189A308B493CF01F88
+:103A10000014581CFE91FF74ED4C0204EF45020C9B
+:103A2000E3CD80E80000726080002DE8000001FC1A
+:103A300080002E18800196E48001A4F0800195ECAE
+:103A400080013D5C800192C8800193C480014510D3
+:103A500080013A60800185CC8003A94880019FB035
+:103A6000EBCD40E078185B98C031E3CFC0E07856EA
+:103A70005866CFC1783B0C9A4985EAC7FE040E9C74
+:103A8000F01F0017303A497B0E9CF01F0017C13120
+:103A9000F01F00163026EB460204F01F00150C9CA8
+:103AA000F01F00146A195809C14048C8700C5D190C
+:103AB000E3CF80E037A83C49EB6801FC30E80C9B81
+:103AC0000E9CEB6901FDEB6801FEF01F000BCE1BA5
+:103AD000129CE3CD80E000000000726080002DF4B5
+:103AE0008003A95080002D94800193B8800198C86C
+:103AF0008001986C8001A888EBCD40FC7875580B4C
+:103B0000F9B80100F7F81A001693EB3900C83FF82E
+:103B1000F0091800C250EB0900D03008F009190074
+:103B2000C4D0307430073022EE061502EAF800D80F
+:103B30000C082FF711BC089BF01F0027E08A000932
+:103B4000EAF800D80C0811B45803E7F21A00EB1891
+:103B500000D00E38FE99FFEA089CE3CD80FCEB38DC
+:103B600000A4F2081800C250EB0900B03008F009B8
+:103B70001900C240307430073012EE061502EAF820
+:103B800000B80C082FF711BC089BF01F0013E08A47
+:103B90000009EAF800B80C0811B45803E7F21A005B
+:103BA000EB1800B00E38FE99FFEA089CE3CD80FCCC
+:103BB000787992D8EDB80004C040307CE3CD80FC29
+:103BC000307B305CF01F0004FE9AFFF9305CE3CDDF
+:103BD00080FC00008001B7D4D431201D4D876E5881
+:103BE0005808C0E030060C996E48F009032CF01F0D
+:103BF00000552FF66E580C990C38FE9BFFF73006D7
+:103C00001A9B8F560C9CF01F00501A94400C580CB5
+:103C1000C0312FFDD832A36CF01F004C1890CFA0FC
+:103C2000400A0C9BA36AF01F004A40085808E08A2B
+:103C300000260C950096C0782FF52FC640080A384C
+:103C4000E08A001D350CF01F00418D0CCF6140094A
+:103C50005809E08A000F009530062FF66A0C580CC0
+:103C6000C040F01F003840092FC50C39FE99FFF7FE
+:103C7000009CF01F00342FFDD8321A9B009CF01FCF
+:103C800000324B4972084009F0090D488F58580816
+:103C9000CE00300408930891A363E0030002640897
+:103CA0006E467135344CF01F0029F941004006067C
+:103CB0008D0C6A796E48F2CBFFF2F0030306F33AFB
+:103CC000000D0C9CF01F00246A78F139000D306A59
+:103CD000ED690020ECCCFFDF640B2E2BF01F001EE3
+:103CE000029B0A9CF01F001DED6C00386A498DC9CB
+:103CF0006A585808F9B805008DD86A79F338005E1B
+:103D0000ED6800276A7992C88DA80BF9ED59002C4F
+:103D100030290BEAF20A1800E2081710F9B800017E
+:103D20008DF830286E49F20309062FF4F00A1800C6
+:103D300008936E580838FE9BFFB1C8AB0000726054
+:103D400080002E008001B24480002E1880002DE8F3
+:103D5000000001FC80002DF480013AF8EBCD40C05A
+:103D6000201D1696582BC680E0880013586BC5900E
+:103D7000587BC2D0583BC4804C076E295809C050AC
+:103D80004BE80C9C703B5D192FFDE3CD80C0580BB8
+:103D9000C0F14BA7EEF902085819C6C0EEF8020CA4
+:103DA0003019A1D8EF690210EF48020CCE7B581BE6
+:103DB000CE414B273008EEF9020C4B1AA3A9EF684D
+:103DC0000210A1D9B488EF49020CCD8B4ACA300841
+:103DD0001589F0091800C4C14A87EEF8020CEDB845
+:103DE0000001CD31EF380210F2081800CCE1F01FCD
+:103DF0000025F01F0025EEF8020C3016E018FFF940
+:103E0000EF48020CCBBBF01F002049C7EEF9020CB3
+:103E1000EDB90004CBA11298A5C8EF48020CCAEB7B
+:103E200049673019EEF8020CEF690210A1D830068C
+:103E3000EF48020CCA3B4917EEF8020CA3C81A9CC3
+:103E4000EF48020CF01F001140085828C050F01F26
+:103E5000000DF01F000D300A4898B08AEF390210AB
+:103E6000F4091800C9204858F16A0210C87BB488C8
+:103E7000C8CB4838B089C89B0000726000007478D5
+:103E80008001B48480013BD88001A6A8D401201D04
+:103E900048F9F2F802045828C0302FFDD80AF33947
+:103EA00002103008F0091800C0711A9CF01F0009B8
+:103EB00040085828CF31F01F0008CF00F8CAFFE2B1
+:103EC000300B169CF01F00052FFDD8020000726019
+:103ED0008001A6A88001B2E88001365CEBCD40806D
+:103EE000201D4967EEF802045828C0503FFC2FFD02
+:103EF000E3CD8080F01F0012C051302C2FFDE3CDA8
+:103F00008080EEF9020CEDB90002CF10EDB900018E
+:103F1000C031309CCEDB1A9CF01F000A40085808C4
+:103F2000CED0F01F0009581CCE21EEF8020CA3A839
+:103F3000EF48020CCDDB0000000072608001B2E8A7
+:103F40008001B2F4800178C4EBCD40C020AD189858
+:103F50001697580BC07076DC581CC0402F6DE3CD0F
+:103F600080C0109BF13A0020FAC6FFFE0C9CF01FA7
+:103F7000001B0C9B209D322A1A9CF01F0019F01F79
+:103F800000192F7D580CCEB0793CFACBFFDCF01F26
+:103F9000001640985818C150C0923058F8081800C0
+:103FA000F9BC0003F9BC0102CDAB5828C030301C6D
+:103FB000CD6B5807C0D06EC85808C0A0305CCCFB91
+:103FC0005807C0806EC85808C050304CCC8B307C2D
+:103FD000CC6B306CCC4B00008001B3288002DD1428
+:103FE0008001781080013AF8D43120EDFEF3029C74
+:103FF000FAC1FFA4E6F8020C18971694E21800061E
+:10400000C040309C2F2DD832F01F00A1C040308C12
+:104010002F2DD832E74C02085807C130BA8CF5D49E
+:10402000C008FAC6FFFEBA9A0E9B0C9CF01F0099BE
+:104030000C9C1B9BF01F0098581CC0802F2DDC3A55
+:10404000BA97BA87FAC6FFFECF4B029CF01F0093C7
+:104050001892581CCF41029A089B0E9CF01F0090AA
+:104060001890C580E6C7FFE8E6C6FE08EF3A0020D4
+:10407000E1380020F4081800E08000A02C470C373D
+:10408000CF6130070E950E9B009CF01F0086E13635
+:1040900000381897CD40585CE08000C2E08B00B932
+:1040A000583CE08000B4584CC020300CF01F007E1B
+:1040B0003048F0061800E08000A83054E8061800E8
+:1040C000E08000983028F0061800E080009A300C5C
+:1040D000F01F0076E8061800E080008F300CF01F1B
+:1040E00000745837E08B007960F85818C710301CFE
+:1040F000F01F0070300B4F0CF01F0070CA00F01F53
+:104100000070581CC9C1E6F8020CA1B8E748020CBF
+:10411000C7ABFAC5FFCE306A029B0A9CF01F005D58
+:10412000FAC6FFDE0C9CF01F00673FF81AD00C9B0C
+:104130001AD2310A1AD8204D1A9CF01F00630A9B2C
+:10414000202D306A1A9CF01F00600499209DE6CC57
+:10415000FDECFB380069FAEA0048FAE20050FB681F
+:104160000021FAEB0000FB380068FAEA0058FAE395
+:104170000008FAE20060FAEB0010FAE30018FB68AE
+:104180000020303A0098129B4C03F01F00502EED97
+:104190001895581CFE91FF54009BE6FC0214F01F7A
+:1041A000004C5BBCC620580CC3E1189BE6FC021413
+:1041B000F01F00483FFCC27B0E9C009BF01F004696
+:1041C000FE91FF5E6EB55805EA071700C5DB302C7F
+:1041D000F01F0038C90B5805FE90FF320A9AE13BE8
+:1041E0000020009CF01F003D3018E7480208C7DBA4
+:1041F000301CF01F002E301CF01F002DC73B302C50
+:10420000F01F002AC6CB303CCFCB301CC50B586CFE
+:10421000C080587CFE91FF4B308CC49B307CC47BAB
+:10422000305CC45B344CF01F002E089A18960E9B2D
+:10423000F01F0018029B306AED640020ECCCFFDF19
+:10424000F01F001400991AD60A984A6A009B31CCD4
+:10425000F01F00252FFD580CC0E0E6F8020C0A9C68
+:10426000A1B8E748020CCCFA009BE6FC0214F01F50
+:104270000019CC8A189BE6FC0214F01F00160C9C57
+:10428000F01F001A3FFCCBFA000072608001B2E818
+:1042900080002DF48001A7C08001A87C8001365CDD
+:1042A00080013F4880017A3880017E2080017E7441
+:1042B0008001A9148001343080019158800178F484
+:1042C0008001A6C48002DD148001ADE88001AC5CF1
+:1042D0008001AD2C80002D948001CA3080002E1802
+:1042E00080014310800192C880002E00D401202D4F
+:1042F000FACAFFF415D8BAD87409500915C8300B9A
+:10430000BAC8169CF01F00022FEDD80280013FE8CA
+:10431000EBCD40E049F51697EAFC0214300BF01F94
+:10432000001EF01F001EEEC6FFDFEF3B00200C9AC0
+:104330000E9CF01F001BC150EAF8020CA1D8202DE2
+:104340000C9BEB48020C306A1A9CEF360020F01FE1
+:1043500000150C9B0E9CF01F00142FED581CC06024
+:10436000EAF8020CEDB80001C0600E9CF01F000FCF
+:10437000E3CD80E0301B300CF01F000D302B300CF3
+:10438000F01F000B0E9CF01F0009E3CD80E0000041
+:10439000000072608001AD2C80013BD88001365C4A
+:1043A0008002DD1480013FE880002E0080013D5C2A
+:1043B000EBCD40E0202D18951697580CC0513FFCCE
+:1043C0002FEDE3CD80E0580BCFB0E04B0020FE9BFB
+:1043D000FFF8FAC6FFFE306AE06B00FF0C9CF01F8E
+:1043E0000008306A202D0C9B1A9CF01F00060E9BC3
+:1043F0000A9CF01F00052FEDCE4B000080002DE839
+:104400008002DD1480013FE8EBCD408048B7EEF834
+:1044100002045828C030E3CFC080F01F0009581CA8
+:10442000F9BC0109EFF80083F9B90010F1D9E038BF
+:10443000EFF80A83E3CD8080000072608001AC70E9
+:10444000D40148B9F338000A104CF36C000A721812
+:104450005808C0B05828C0803028726C9318301BA0
+:1044600072595D19D80AD80ADA0A00000000747C73
+:104470004828916B915C5EFC0000747CEBCD40C0E1
+:10448000203D5CBBBA89502B109714965CC85C88A1
+:104490005807C0513FFC2FDDE3CD80C05C784959FF
+:1044A0005018B28C3048FAC9FFF8300A306B492CEA
+:1044B000F01F0012581CCEF11B89491A1898B489B4
+:1044C000306B1A99300A48FCF01F000C581CCE3192
+:1044D00048D8300AB007306B304848CCFA08000999
+:1044E000F01F0006581CCD7148989146CD5B000026
+:1044F000000075688003A9548001A0F40000020246
+:104500008003A95C000002048003A9640000747C9D
+:10451000EBCD40C030074A161AD78D078D17ED67CF
+:104520000008ED670009ED67000A8D378D470E988A
+:104530000E9949BA0E9B302CF01F001A2FFD580C13
+:10454000C0413FFCE3CD80C01AD70E980E99496A4E
+:104550000E9B304CF01F00132FFD580CCF301AD794
+:104560000E980E99491A0E9B32ECF01F000E2FFD8B
+:10457000580CCE8031483019E06A138830AB0E9C5D
+:10458000F01F000B581CCDE10E9BECCCFFF4F01F8C
+:104590000009581CCD71CD7B0000747C8001460061
+:1045A000800192C8800146B0800145B48001447CFE
+:1045B000800147B4D401F01F000E48EA740858384F
+:1045C000C12030289508F539000A3008F009180094
+:1045D000C020D8023018300B9518487C487AF01F5C
+:1045E0000008D80230089508D802000080014A96D9
+:1045F0000000747C80014AB88001C7A880015F80F8
+:10460000EBCD408048973018EF6800086E49580994
+:10461000C0A0308CF01F00066E4C3009485A6E3B2B
+:10462000F01F0005E3CD80800000747C80014440D1
+:10463000800146DC80014814D4014989F80C11FF3F
+:10464000F338000A106CF36C000AC1E1F33800097A
+:10465000F8081800C19072185808C161F3380008B2
+:10466000F8081800C06072085808C0F05818C0C098
+:104670003018300B931848AA48ACF01F000B300BD1
+:10468000331CF01F000AD802301B485A930B488C89
+:10469000F01F0005D80200000000747C8001C7A84C
+:1046A00080014AB880015F80800191BC80014AE4AA
+:1046B000EBCD404048766C3CF01F0007308CF01F7B
+:1046C000000730083009ED6800088D09E3CD80400F
+:1046D0000000747C800147EC80014638D401308CA6
+:1046E000F01F0002D80A000080014638EBCD408060
+:1046F00048E76E185828C030E3CD80806E58300BE4
+:104700006E6C5D18300B8F1B4899F2FA0324F2F897
+:1047100003201438C040169CF01F0006300B332CC9
+:10472000F01F0005E3CD80800000747C000083C092
+:104730008001C658800191BC5EFCD703EBCD40F8E8
+:1047400049C56A096A181039C2F08B0CEAC7FFF034
+:10475000EAC6FFF4EEC30010EAC4FF700F89EDB99A
+:104760000000C091EDB90001C0616C096A08103900
+:10477000E08800082F072F060837CF11E3CD80F817
+:104780006E19300B169C5D190F883FDAF1EA0009AB
+:10479000EDB80002C0716609EEF8FFF812088D0846
+:1047A000CEABAE89CE8B5809CD118B1C8B0CCCFBBC
+:1047B0000000749CEBCD408048CE1897300AFCCBAB
+:1047C000FFF0F408150417892F88FC08000CEDB9D8
+:1047D0000000C0512FFA2F0B588ACF413018F968CA
+:1047E00000088F0AE3CF90800000749C2FFC48499A
+:1047F000A56C18091388A1D8B2885EFC0000749CCF
+:104800002FFC4848A56C30091808B0895EFC0000F0
+:104810000000749CEBCD40E0189E14971295587BD5
+:10482000E08B002C496AF6C8FFFFA568F408000C6D
+:104830001989EDB90001C1F0F60815041296F408C3
+:104840000008A1B6F60915012FF9F409093E740A0A
+:10485000B8869157FC0A000A913A5805F9BC000144
+:10486000F9B90104EDD9E138F9F81E00F9BC0101EC
+:10487000E3CD80E0E3CF80E0E3CFC0E00000749CB4
+:1048800048387019700C121C5EFC00000000749C0B
+:104890005EFC300899085EFC1899780C580CF9B841
+:1048A0000001F3F80A005EFC300899085EFC30084D
+:1048B00099085EFC5EFC5EFC5EFC5EFCD401580B5D
+:1048C000C110F80B000B300A487E7C09F40900097E
+:1048D0002FDAF208141FB9881009101918C9163CEC
+:1048E000CF51D8020000749C5EFD5EFF5EFF5EFF4C
+:1048F0005EFF3FDC5EFC78082FF899085EFCD4016F
+:10490000780820189908C020D80A5D1BDA0A3018E8
+:1049100099085EFCD401F01F0002D802800191BC0E
+:10492000EBCD406048784889F5DBC0101895189B9E
+:104930007006720C5D160A9CF01F0004E3CF9060B5
+:10494000000075240000749880002E00D401E06AF5
+:104950000088300B485CF01F0006F01F0006486816
+:10496000300C9118910CD8020000749C80002DE846
+:104970008001497C00008A4C5EFCD703D401F01F03
+:104980000011F01F0011301B4909169C490AF01F45
+:1049900000114919491A301B303CF01F000EF01F5E
+:1049A0000010300A301BE06C00F0F01F000EF01F0A
+:1049B000000E300A302C149BF01F000CD80A0000A7
+:1049C000800161D8800160A08003A96C80014978D2
+:1049D0008001616C8003A970800170BC800162B4A9
+:1049E000800160F88001630C80016048D401E068B8
+:1049F0000081301999489959189A7408129C11CE5F
+:104A0000F20E18005F089708D802D70348683039BB
+:104A1000F0FA00F830089569985BF00B19005F0C0C
+:104A20005EFC0000000086E819C8300A4869F2F907
+:104A300000F8F4081800F9BC0001F9BC0100F3FC0F
+:104A40001A065EFC000086E848483009F0FA00F8D3
+:104A5000301C95695EFC0000000086E848B8985A52
+:104A6000F0FB00F83178F00A1900E08B000B3018E9
+:104A7000F00A0948E4180080E01803FEC0205EFF39
+:104A80003008301C97685EFC000086E878185808EB
+:104A90005F0C5EFC5EFF19C830192018F208180080
+:104AA0005FBC5EFC5EFD5EFD19C93008F0091800B0
+:104AB0005F0C5EFC5EFD5EFFEBCD4080308B189797
+:104AC000991B300CF01F00078F0CC0803078E06914
+:104AD00000818F588F49E3CF9080E3CD8080000024
+:104AE00080022444EBCD40C018971696308B991B5A
+:104AF000300CF01F00108F0CC160301830298F5817
+:104B00008F4948D8B826118948C8B8E948C71189DB
+:104B1000B8F96EB899086EBC580CC0752FFC8FBCE4
+:104B2000E3CF90C0E3CD80C0F01F0006CF9B000014
+:104B3000800224440000756800000202000086E83C
+:104B40008001BDC4EBCD40FE1897FACCFFE016946F
+:104B5000781330CB14928F1B129178061095300C7D
+:104B6000F01F00118F0CC1A0307830498F588F4949
+:104B70009905B8E6B8F1F9630008B8C4B8D248B8E6
+:104B800048B9B084B28248B76EB899086EBC580C68
+:104B9000C0752FFC8FBCE3CF90FEE3CD80FEF01FED
+:104BA0000006CF9B800224440000781D0000781C82
+:104BB000000086E88001BDC4EBCD40FC1897FACC1C
+:104BC000FFE4314B781414938F1B129278061095E2
+:104BD000300CF01F00158F0CC2003018F3D4C01039
+:104BE0008F488F589913B8429935F9560010F954E7
+:104BF000001248E7F1D6C0100A481248F9B800FF81
+:104C0000F9B80100B8586EB999096EBC580CC07556
+:104C10002FFC8FBCE3CF90FCE3CD80FCF01F0004A1
+:104C2000CF9B000080022444000086E88001BDC4C0
+:104C3000D401780A3009740B15F8129C129AF01FEF
+:104C40000002DA0A8001BDD4D401780A3009740B5D
+:104C5000F538000B129C129AF01F0002DA0A0000CD
+:104C60008001BDD4D401780A3009740BF538000BEB
+:104C7000129C129AF01F0002DA0A00008001BDD4D3
+:104C8000D401780A3009740BF538000B129C129A83
+:104C9000F01F0002DA0A00008001BDD4D401780AB6
+:104CA0003009740BF538000B129C129AF01F0002A9
+:104CB000DA0A00008001BDD4D401780A3009740BEF
+:104CC000F538000B129C129AF01F0002DA0A00005D
+:104CD0008001BDD4D401780A3009740B15F8129CF8
+:104CE000129AF01F0002DA0A8001BDD4EBCD40F821
+:104CF00030C618979916169414930C9B300CF01F1D
+:104D000000108F0C1895C160307831690C9A8F585B
+:104D1000089B8F49F01F000B48B66CB88B086CBC21
+:104D2000580CC0A52FFC8DBC301C6A088708E3CD49
+:104D300080F8E3CD80F8F01F0005CF6B800224449B
+:104D400080002DF4000086E88001BDC4EBCD40F862
+:104D5000308618979916169414930C9B300CF01FFC
+:104D600000108F0C1895C160307831490C9A8F581B
+:104D7000089B8F49F01F000B48B66CB88B086CBCC1
+:104D8000580CC0A52FFC8DBC301C6A088708E3CDE9
+:104D900080F8E3CD80F8F01F0005CF6B800224443B
+:104DA00080002DF4000086E88001BDC4EBCD40F802
+:104DB00033C618979916169414930C9B300CF01F59
+:104DC00000108F0C1895C160307831390C9A8F58CB
+:104DD000089B8F49F01F000B48B66CB88B086CBC61
+:104DE000580CC0A52FFC8DBC301C6A088708E3CD89
+:104DF00080F8E3CD80F8F01F0005CF6B80022444DB
+:104E000080002DF4000086E88001BDC4EBCD40F8A1
+:104E1000318618979916169414930C9B300CF01F3A
+:104E200000108F0C1895C160307831190C9A8F588A
+:104E3000089B8F49F01F000B48B66CB88B086CBC00
+:104E4000580CC0A52FFC8DBC301C6A088708E3CD28
+:104E500080F8E3CD80F8F01F0005CF6B800224447A
+:104E600080002DF4000086E88001BDC4EBCD40F841
+:104E7000330618979916169414930C9B300CF01F58
+:104E800000108F0C1895C160307831090C9A8F583A
+:104E9000089B8F49F01F000B48B66CB88B086CBCA0
+:104EA000580CC0A52FFC8DBC301C6A088708E3CDC8
+:104EB00080F8E3CD80F8F01F0005CF6B800224441A
+:104EC00080002DF4000086E88001BDC4D42118972D
+:104ED000169530CB991B300CF01F00128F0C1896D2
+:104EE000FAC4FFEC580CC190302830098F588F4914
+:104EF00048D76EB899086EBC580CC1052FFC8FBC02
+:104F00005805EDF81000EBF81A00089BECCCFFFCFC
+:104F1000308AF01F0006DA2AD822F01F0005CF0BD6
+:104F200080022444000086E880002DF48001BDC486
+:104F3000EBCD40E018961695310B991B300CF01F05
+:104F400000108D0C1897C1503078317A0A998D581D
+:104F50008D4A48CBF8CAFFFCF01F000B48B56AB871
+:104F60008F086ABC580CC0752FFC8BBCE3CF90E057
+:104F7000E3CD80E0F01F0006CF9B000080022444B8
+:104F800080021F5480021CC0000086E88001BDC45E
+:104F9000EBCD408078076E285808C0B0300C189AC6
+:104FA0005C586E0B3109300CF01F0009E3CF908084
+:104FB000310CF01F00086E189908EF390016991986
+:104FC0006E3899286E4999396E28CEAB8001BDD4D0
+:104FD00080002E18EBCD40FC189716931495314B9A
+:104FE0001294991B300CF01F001C8F0C1896FAC2FB
+:104FF000FFE4580CC200302830198F588F495805EB
+:10500000C1C18D455C7549576EB88D086EBC580C92
+:10501000C1F52FFC8FBC5804EDF81000E9F81A0018
+:10502000049B308AECCCFFFCF01F000D301C8D354A
+:10503000E3CD80FCE3CF80FC5C750A9CF01F000987
+:105040008D4CCF90069B0A9AF01F0005CDDBF01F18
+:105050000006CE1B80022444000086E880002DF468
+:1050600080002E188001BDC4EBCD40801897F93C1C
+:10507000000BF01F00084888F0F900F85809C070CC
+:10508000EECBFFFC310A313CF01F0004E3CF9080EF
+:1050900080017A88000086E880014914D42130C854
+:1050A0001896109B4904300CE8F500F88D18F01F95
+:1050B000000F8D0C1897C120301830D98D582FCC87
+:1050C000EACBFFE28D49F01F000A68B88F0868BC80
+:1050D000580CC0552FFC89BCDA2AD822F01F0005D5
+:1050E000CFBB0000000086E8800224448001BDB4EC
+:1050F0008001BDC4D42130CB1897991B300CF01F10
+:10510000000B8F0C1894C1004898301530868F55CD
+:105110008F462FCCF0FB00F82E2BF01F00060A9CC8
+:10512000E966000AD822D82280022444000086E8DA
+:105130008001BDB4EBCD40E030CB1896991B300C0C
+:10514000F01F00108D0C1897C1703018305948E5C9
+:105150008D588D492FCCEAFB00F82E2BF01F000B49
+:105160003028AE586AB98F096ABC580CC0752FFC3C
+:105170008BBCE3CF90E0E3CD80E0F01F0005CF9B38
+:1051800080022444000086E88001BDB48001BDC4D3
+:10519000EBCD40FC30C518969915169414931292D5
+:1051A0000A9B300CF01F00138D0C1897C1D03018DB
+:1051B0008D458D580A9A300BF01F000FEECCFFFC86
+:1051C000089BF01F000E078848D6EF68000A058983
+:1051D000EF69000B6CB88F086CBC580CC0752FFCC5
+:1051E0008DBCE3CF90FCE3CD80FCF01F0006CF9B8D
+:1051F0008002244480002DE88001BDB4000086E8D0
+:105200008001BDC4EBCD40FC30C5189699151694AD
+:10521000149312920A9B300CF01F00128D0C1897F9
+:10522000C1B0301830B98D588D490A9A300BF01F33
+:10523000000E306AAEC4AED3049BEE0A000CF01F21
+:10524000000B48B66CB88F086CBC580CC0752FFCAE
+:105250008DBCE3CF90FCE3CD80FCF01F0006CF9B1C
+:105260008002244480002DE880002DF4000086E8B0
+:105270008001BDC4D431203D502B5018FACEFFD050
+:1052800033857C3499157C181896149312917C0000
+:1052900050087C220A9B300CF01F00228D0C1897BE
+:1052A000C370301830A98D580A9A8D49300BF01F01
+:1052B000001E069A029BEECCFFFCF01F001CEF5371
+:1052C00000244028049BEF680026EF600027306A26
+:1052D000EECCFFD8F01F00155804C1C0089B308ADF
+:1052E000EECCFFD2F01F00114008EF6800364018E6
+:1052F00048F6EF6800376CB88F086CBC580CC05586
+:105300002FFC8DBC2FDDDA3AF01F000ACFBB2FDD5A
+:10531000D832089B308AEECCFFD2F01F0003CE5B60
+:105320008002244480002DE880002DF4000086E8EF
+:105330008001BDC4D4012FCC7808202D500819C994
+:10534000BAC919D8BAD8F01F00052FED580CF9B812
+:10535000010DF9F81A06DA0A800171ECD40148D877
+:10536000F8CBFFF5F0F900F8733C7808204D502891
+:1053700019C9FB69000C19D8306AFB68000D1A9C2A
+:10538000F01F0005F01F00052FCD580C5F1CD80240
+:10539000000086E88002DD148001C20CEBCD40FEE7
+:1053A0003007FAC5FFE0189116924A134A146608AE
+:1053B0000E38E08A00216A08204D50280BC9FB698D
+:1053C000000C0BD8EE061504FB68000DE806000A79
+:1053D00015D8BAD87409500915C8BAC8F01F0016F4
+:1053E0002FCD580CC0A12FF75907CE2118970E9C2E
+:1053F000E3CD80FEEE061504E80600060A9B0C9C31
+:10540000F01F000EF3D2C001EE081501AC692FF8B1
+:10541000E808093166090E39FE99FFEBEEC9FFFF76
+:1054200048380E9C9109E3CD80FE0000000080F812
+:1054300000007FF88001C20C8001BDB4EBCD40803C
+:10544000300819C9F0091800C10048E8F0F700F861
+:105450005807C130F01F000C0E9CF01F000C0E9C72
+:10546000F01F000BE3CF8080486830A9F0FA00F805
+:10547000301C9569E3CD80800E9CE3CD80800000D8
+:10548000000086E8800176A4800172C480017668FD
+:10549000EBCD40E01896F01F00224A2A0DE9F4F700
+:1054A00000F85809C1103018F0091800C32030283E
+:1054B000F0091800C31030488F687498300CABC8DE
+:1054C0009598E3CD80E06F3930D8322A8F68496CE7
+:1054D000727B2F4BF01F00156F3C3FF8787BF7393C
+:1054E00000C8F0091800C130202DF71600D4784507
+:1054F000306AEECBFFE21A9CF01F000C0C9B0A9C5A
+:10550000F01F000B301C2FEDE3CD80E0E3CF90E0E7
+:1055100030088F68CD3B30588F68CD0B8001717497
+:10552000000086E8000080FC8002DD148001539CAE
+:10553000EBCD40E01896F01F00284A8A0DE9F4F7F9
+:1055400000F85809C1503018F0091800C36030281D
+:10555000F0091800C3906F0830492FF88F69EF48A1
+:1055600000407498300CABC89598E3CD80E06F395B
+:1055700030D8322A8F6849AC727B2F4BF01F00194C
+:105580006F3C3FF8787BF73900C8F0091800C1304C
+:10559000202DF71600D47845306AEECBFFE21A9C36
+:1055A000F01F00100C9B0A9CF01F000F301C2FED09
+:1055B000E3CD80E0E3CF90E06F0830092FF88F69EA
+:1055C000EF480040CCFB6F0830592FF88F69EF4847
+:1055D0000040CC8B80017174000086E8000080FCE4
+:1055E0008002DD148001539CD421310B1896991B45
+:1055F000300CF01F00198D0C1897C28030183049FC
+:105600008D588D494955302CEAF400F8F01F0014EC
+:10561000E8CBFFE21896EECCFFF8F01F00126C38D2
+:10562000AE38EAF901045819C0D03008AE2830B8B5
+:1056300089686AB98F096ABC580CC0952FFC8BBC6D
+:10564000DA2AEAF8011C5818CF20D82AF01F0006E1
+:10565000CF7B000080022444000086E880015FCCFC
+:105660008001BDB48001BDC4EBCD40F818971694FD
+:1056700030CCF01F0046303CF01F00441895302C11
+:10568000F01F0042E06A00EC1896E06B00FF0E9CF1
+:10569000F01F003FE8CBFFE2EECCFFF6F01F003D2D
+:1056A0006C384BD9AE289208AE483DD86939727B28
+:1056B000F73A009AF00A1800C480F73900803DD804
+:1056C000F0091800C52030050A93F01F00349838FF
+:1056D000AE381896F93900A83FF8F0091800C090C4
+:1056E000F8C9FF58EECAFF584ADB0E9CF01F002D88
+:1056F000ED3900CC3FF8F0091800C1900E9CECC9C0
+:10570000FF34EECAFF344A6BF01F0027089CF01FDD
+:105710000027583CE089000C4A587099ABC9919910
+:105720003FFA301CEF6A009EE3CD80F85805CF5059
+:10573000EECCFF62069BF01F001F49D9301C729807
+:10574000ABA89398E3CD80F8F73900A03008F009B2
+:105750001800CB41EAF900B85819CB01F72800A28C
+:105760001295F003161FCB2BF73900863018F0097D
+:105770001800CAA1EAFC00B8581CCA61F7280088C2
+:105780001895F003161FCA2B80015FCC80002DE80E
+:105790008001BDB4000002048001716880021F54C2
+:1057A00080021D5080021D848001BA02000086E83C
+:1057B0008001BE64D421E06800EC1897109B492456
+:1057C000300CE8F500F88F18F01F00108F0C1896B9
+:1057D000C090301830798F588F490A9BF01F000C09
+:1057E000C021D82A0C9CF01F000B30C88B6868B908
+:1057F0008D0968BC580CC0452FFC89BCDA2AF01F03
+:105800000006CFCB000086E8800224448001566861
+:10581000800171A08001BDC4D421E06800EC18971C
+:10582000109B4924300CE8F500F88F18F01F001089
+:105830008F0C1896C090301830698F588F490A9B8A
+:10584000F01F000CC021D82A0C9CF01F000B30C8A0
+:105850008B6868B98D0968BC580CC0452FFC89BCA1
+:10586000DA2AF01F0006CFCB000086E8800224442D
+:1058700080015668800171A08001BDC4EBCD40401D
+:10588000201D18961A9CF01F001849888C69F0FB9F
+:1058900000F85809C1203018F0091900C0B03028AC
+:1058A000F0091900C170770830492FF89769F74857
+:1058B00000402FFDE3CF80407738301911EA301CCB
+:1058C000F20A1800F9B8000CF7F80A062FFDE3CD2C
+:1058D0008040770830592FF89769F74800402FFD2E
+:1058E000E3CF80408001A6A8000086E8D401496883
+:1058F00019C9F0FA00F85809C1803028F0091800D9
+:10590000C1803048F0091800C0503018F009180064
+:10591000C180750830492FF89569F548004019CBCA
+:10592000302CF01F000AD80A3088301C9568D80245
+:10593000750830592FF89569F548004019CBCF1BF1
+:10594000301BCEFB000086E88001BD04D431215D10
+:10595000303C169614911290F01F00584D83F8C4F5
+:10596000FFB0189531CA089B069CF01F0056C0A1D5
+:105970006D3830AA707BE6CCFFE42D2BF01F005170
+:10598000C7B06D38FAC7FFC8707B0E9CF6CAFFC857
+:105990002D2BF01F004D089B0E9CF01F004CC041AA
+:1059A000300C2EBDD83231CA0E9BFA0A0002049C7C
+:1059B000F01F0047049CF01F004730080E9A500863
+:1059C0001A97089B1A9CF01F00446D38707930E8D4
+:1059D000F33A005EF00A1800C670EB3A0074580AF9
+:1059E000CE006D387079EB380075F33B005EF60839
+:1059F0001800C0F0EACCFF8A3009C0581938F60800
+:105A00001800C0502FF9123AFE99FFFA123ACC90C2
+:105A1000049CF01F0032CC50049B1A9CF01F0030F5
+:105A20001A9B029CF01F002F049B009CF01F002D6E
+:105A3000089B31CA4A2CF01F00266D3830AA707BB3
+:105A4000E6CCFFE42D2BF01F00226D38312A707B4D
+:105A5000E6CCFFDA2C8BF01F001E029B304AE6CC0E
+:105A6000FFC8F01F001B009BE6CCFFC4304AF01FAC
+:105A70000018301CC97B6D38312A707BE6CCFFDA08
+:105A80002C8BF01F0010FE91FF7E304AE6CBFFC842
+:105A9000029CF01F000FE6CBFFC4009C304AF01FB1
+:105AA000000C301CC7FB049CF01F000FFE90FF7A17
+:105AB0001A9CF01F000EC92B80015FCC00007528D6
+:105AC00080002D948001BA988001BC3080002DF4B4
+:105AD0008001BFCC8001BB5C8001BBD48001BAF2E5
+:105AE0008001BA408001BCD48001BF68EBCD40FC8E
+:105AF000FACD0110300733095407FEF3022EE6F801
+:105B000000F854281896129B0E9C8D19F01F0088DF
+:105B10008D0C1895E080008A3018303C8D588D4CE3
+:105B2000F01F0084FACBFEFC1894FACAFEF8FACCF7
+:105B3000FEF2F01F0081442871390E9CE06B00ECEE
+:105B40007277F01F007BC710540CE0680420B8384F
+:105B5000442B7738707992D9EDB90000C6B0EDB911
+:105B60000001C06144099238A1B8B238442BE8F86A
+:105B700000B85808C0C07738707A94D9EDB90009D8
+:105B8000C06144099238A9B8B238442BFAC2FEF178
+:105B9000441A049CF01F006944185818E08000A5BE
+:105BA000C6823079FB38010FF2081800C050440952
+:105BB0009238A5A8B238440CF01F0061049CF01F75
+:105BC00000614428E74C0100EACAFFF071390A9CE1
+:105BD0004DDBF01F005E6858AA286869AA394D3C61
+:105BE00069B85808C440442B773870793078F33A54
+:105BF0000074F00A1800C240EAC9FFF4EACAFFF8CC
+:105C0000300CF01F0053581CC53030063018E748E0
+:105C1000004444095809C0A0FACCFF00F01F004D11
+:105C20000C9C2BCDE3CD80FC30060C9C2BCDE3CD22
+:105C300080FC44099238A1A8B238442BC99BF8F8DB
+:105C400001AC5808C050F8CCFE54F01F004230CBD5
+:105C5000300CF01F0037E74C01AC189AC080442884
+:105C6000713B76794B8B28C9F01F003B442BCC5BF2
+:105C70005828CA51442C1A9B2E2CF01F00381A9613
+:105C80001AD61ADC442BFB380116FB390117EF3A00
+:105C900000CF169CF6CBFF34F01F00314428328928
+:105CA000F15900D8442CF01F00262FEDC88BE8F8DE
+:105CB00000B85808C2916AB93FF8F368009A3028D2
+:105CC0003039E7480044442891694426F01F0025F4
+:105CD000ED4C004466B88B0866BC580CC2352FFCEE
+:105CE00087BC3016C94B440BEF3A00AF169CFB380B
+:105CF000010EFB39010FF6CBFF58F01F001B440CBF
+:105D0000F01F000FC5CB44287139727A94D8EDB8D2
+:105D10000001CD21189B6ABCF8CCFF66F01F001370
+:105D2000CCFBF01F0013CDDB000086E8800224448A
+:105D300080015FCC8001B5B88001B854800171A0AA
+:105D40008001B54C80021F548001F8A88001594C95
+:105D500080021F1080021CC08001C1E48001C5A028
+:105D6000800148808001C4E88001BE648001BDC418
+:105D7000D431203D189616971493303CF01F0070D4
+:105D8000301831798D588D4930086C068F085803CA
+:105D9000EDF81805E7F81A0018950DC40898A7D86B
+:105DA000C0505898C0302FDDD83A0DD93018F009BE
+:105DB0001800C1003008F0041800F9B80500EFF829
+:105DC0005A00F9BC0501F9BC0401EFFC4A002FDDC3
+:105DD000D832303CF01F005A6C98F93A0074F13B0D
+:105DE000005E580ACE80F9380075F6081800C0A089
+:105DF00028AC30092FF91439CDE41938F00B18000C
+:105E0000CFA1ECC0FFF8009CF01F004E1891CD30E0
+:105E10006BB85808C090793870793078F33A0074CC
+:105E2000F00A1800C6E0FACCFFF8F01F0047581C33
+:105E3000C0A0F01F0046029B835C350A31DCF01FD6
+:105E40000044CB9B40285818CF51FACCFFFCF01FE0
+:105E50000041581CCEF1401820785818FE9BFFEBEB
+:105E60004BD8F0F900F85809CE501A9CF01F003BAF
+:105E7000581CCE01400820285818FE9BFFDC6C9E61
+:105E80002F4EFCE80000212DFAE90024FCE8000870
+:105E9000FAE9002CFCE20010FAE30034FCE80018F8
+:105EA000FAE9003CFD3C0020FB6C0044FD38002179
+:105EB000322AFB6800454AAB1A9CF01F002AF01FEB
+:105EC000002A2EED580CCB606C9A3FF8F53900C8CB
+:105ED000F0091800CAF06008F51B00D4202D6C6C86
+:105EE000500801C9BAC901D8BAD8F01F0020A56C62
+:105EF00049FB310A180B315CF01F00152FEDC9ABBF
+:105F00004955EAF801AC5808C050EACCFE54F01FDD
+:105F1000001930CB300CF01F0018EB4C01AC189A74
+:105F200048D5580CFE90FF816338494B707928C9D9
+:105F3000F01F00136A98ABB88B98C76B80015FCCD9
+:105F4000800176D08001A6A8800148808001491494
+:105F500080017A1C000086E880017A00000080FC45
+:105F60008002DD148001C2848001539C00007FF810
+:105F700080021F108002244480021F5480021CC033
+:105F8000EBCD40E0206D300818991495502850084A
+:105F90001A9C1A965D191897C10140085808C0400C
+:105FA0001A9CF01F0009402C580CC030F01F00074D
+:105FB0000E9C2FADE3CD80E01A9C5D15581C5F0749
+:105FC000CEDB000080021F1080002E0058DCE0882D
+:105FD00000035EFD49B8F00C032F49B8F0CCFFF484
+:105FE0005EFC4998F0CCFFE45EFC4978F0CCFFD42D
+:105FF0005EFC4958F0CCFFCC5EFC4938F0CCFFC4C5
+:106000005EFC4918F0CCFF305EFC48F8F0CCFF1C79
+:106010005EFC48D8F0CCFEF45EFC48B8F0CCFEBC88
+:106020005EFC4898F0CCFE945EFC487C5EFC4868C0
+:10603000F0CCFFFC5EFC4848F0CCFE785EFC000033
+:106040008003A974000002AC4828F00C092B5EFC08
+:1060500000007570EBCD40E04905189716966A0868
+:106060005808C0205D1848E8F007032C580CC061A0
+:10607000C088F0061800C0902F8C19885808CFA14E
+:106080006A085808C080C00878193028F00918003C
+:10609000FE9BFFF8E3CD80E00000756C000075709A
+:1060A0005EFCD703EBCD40FC4935189630120A94BC
+:1060B000EAC3FFF46A085808C0D068385808C1908D
+:1060C00030185806CF805816C0305808CF40E3CD5E
+:1060D00080FC48976E287019703C700B5D196E2813
+:1060E00070296E188F291039EFF20A003008CEABF4
+:1060F0000697CF1B000083A0EBCD40C018961497E5
+:10610000580BC24049789009F6091900E088001B35
+:10611000F60B00184949F208002C781A7408580840
+:10612000C171741E7428103EC1507C283009951826
+:1061300095099D369D07FD6B001078089D18E3CDED
+:1061400080C0307B305CF01F0009E3CD80C0741E3E
+:10615000CEDB306B305CF01F0005E3CD80C000006B
+:10616000000002000000758480016054EBCD408087
+:1061700049281497129E581B5F8A9009F809190044
+:106180005FB81468C130F80C001AF60B0019F4CC93
+:10619000FFFF48BB48B8F60A002AF0090029952EEF
+:1061A000F60C09299507E3CD8080302B305CF01F79
+:1061B0000006E3CD8080000000000200000075842E
+:1061C000000083A080016054D401307B305CF01F5C
+:1061D0000002D80280016054EBCD404030084AB93B
+:1061E000B2884ABA94085808C4D04AA95C784AAB25
+:1061F000F00800184A9EA368300C2F88F6CAFFF4F6
+:10620000F20800082F89930CF34AFFFCF34EFFF8C5
+:106210002F491039CF91F6CEFFE84A1A49EB301CCE
+:10622000970C972A971A1498F4C9FED42EC8F148EF
+:10623000FFF41238CFC1F54A01342F4BF4CAFEC027
+:106240001C3BCEF1E06A0080300B496CF01F001659
+:106250004948F0C9FF902F08F148FFFC491A12384D
+:10626000CFB130064918F546007C910A9116310AE3
+:106270000C9B48FCF01F000C48E80C9C9106E3CDF9
+:106280008040485BCC9B0000000075C0000002000D
+:1062900000007584000083A0800161C80000812097
+:1062A000000075C480002DE8000076580000764894
+:1062B0000000764448484859485A91099119913A42
+:1062C000912A5EFC00000208800162EC80016304F8
+:1062D00048484859485A91199109913A912A5EFCC7
+:1062E00000000208800162EC8001630448494858BC
+:1062F000311AEA1A4000143C5E085E19800162EC13
+:1063000080016324481C5EFC80016304D4013019C1
+:10631000300A303BFC1C4000F01F0002D802000095
+:106320008001C03CEBCD40804B373099EA194000EA
+:10633000123CC310E088001F30B9EA194000123C3B
+:10634000C2A0C4233139EA194000123CC500E069FB
+:10635000078AEA198000123CC241761CF01F002710
+:10636000300A4A77149B314CF01F00260E9CE3CD77
+:1063700080803019EA194000123CC320E0880015E3
+:106380003079EA194000123CC0603089EA194000B7
+:10639000123CC0713019300A303BF01F001B49B766
+:1063A0000E9CE3CD8080FC194000123CCFA1301937
+:1063B0004978300AF1490044304C149BF01F001119
+:1063C0000E9CE3CD80803019300A303B30ACEA1CA3
+:1063D0004000F01F000D48D70E9CE3CD8080302B8D
+:1063E000300CF01F000C0E9CE3CD808048470E9CC3
+:1063F000E3CD80808001632480014A8C800162ECBF
+:10640000800149148001C03C80016C08000086E8CE
+:106410008001BD04D401201D1A9CF01F0008C0702B
+:1064200040085818E0880006F01F00052FFDD8022C
+:10643000F01F00042FFDD80280017A1C800179B47E
+:106440008001798CEBCD40F8201DFEF805EA189705
+:1064500016951496103AC3A0FEF805E0103AC6103F
+:10646000FEF805DC103AC0600C970E9C2FFDE3CDC2
+:1064700080F8E068018CEA188000103CE08000F7AA
+:10648000E068078AEA188000103CE08000ADE06810
+:106490000186EA188000103CCE8176170E9CF01F12
+:1064A0000169F01F0169C091FEF805A0EEEA000045
+:1064B000F0EB00006E2991290C97FEFA0592300B43
+:1064C000FEFC0590F01F0164CD1BF01F015F1894C6
+:1064D000C4D1E0680184EA1880001037E0800185AB
+:1064E000E08B00D2E0680107EA1880001037E080F6
+:1064F00001A0E0680183EA1880001037CB616A17B9
+:106500000E9CF01F0156E0800230FEF90552304823
+:10651000F34800440E9B334C0C97F01F0152CA6B9A
+:10652000FEF4053CE0680112EA188000E8F300F888
+:10653000103CC540E08B0063E0680107EA1880006A
+:10654000103CE08000F7E068010DEA188000103C84
+:10655000E080010DE0680105EA188000103CC85198
+:10656000761C1497F01F0140C81BFEF304F2E0688C
+:106570000188EA188000E6F400F81037E08001B0E6
+:10658000E08B00ABE0680183EA1880001037E08000
+:10659000018BE0680184EA1880001037E080016E0A
+:1065A000E0680107EA1880001037FE91FF5F6A1863
+:1065B000303CF13B000BF01F012D3019300A303B0D
+:1065C00030CCEA1C4000F01F012A300AFEF70470AC
+:1065D000149B301CF01F0127C49B761C1497F01FDE
+:1065E0000126C44B6A1CF01F0125300AFEF70490F7
+:1065F000149B314CF01F011FC39BE068018AEA180D
+:106600008000103CE08000CBE068078AEA18800038
+:10661000103CCE90E0680115EA188000103CFE9115
+:10662000FF2576150A9CF01F01170BC93048F009A9
+:106630001800E08001BBE08B019B3008F0091800D6
+:10664000E08001BF6738301911EAF20A1800E080D3
+:1066500001DD0A9CF01F010CFE90FF08300A0C9728
+:10666000305C149BF01F0103C01B76170E9CF01FBB
+:106670000107F01F00F5C4F10E9B33DC0C97F01FEF
+:1066800000F9CF4AE068018AEA1880001037E080FC
+:1066900000BDE068078AEA1880001037E0800099A2
+:1066A000E0680188EA1880001037FE91FEDF6A1763
+:1066B0000E9CF01F00F7C0A0F01F00F63069FEF836
+:1066C000039EFEF60376F14900440E9B336C0C9753
+:1066D000F01F00E4CCBAE068018EEA1880001037A1
+:1066E000E08000B7E068078AEA1880001037FE9063
+:1066F000FF7BE068018AEA1880001037FE91FEB641
+:106700006A160C9CF01F00E41897E0800114FEF755
+:10671000032ACACA3099FEF803460C97F14900448F
+:10672000FEFA032C300BFEFC0372F01F00CBC9EA0B
+:1067300076150A9CF01F00DA302B169CF01F00D94A
+:10674000FEF702FCF01F00C01896E08100DD0A9BF6
+:10675000337CF01F00C40C9A3019303B30ECEA1C3B
+:106760004000F01F00C3FE9FFE8276160C9CF01FB7
+:1067700000CE302B304CFEF702C6F01F00CAF01FCF
+:1067800000B2E08000EC3019300A303B310CEA1CDA
+:106790004000F01F00B7FE9FFE6A76150A9CF01FAE
+:1067A00000BE1897E08000BA300A302C149BF01F0E
+:1067B00000B13078E9480044F01F00A3FE91FE5676
+:1067C0000A9B0C9733BCF01F00A7FE9FFE506A1C6B
+:1067D000F01F00AA089AFEF702A6089B314CF01F92
+:1067E00000A5FE9FFE446A170E9CF01F00B0C0601B
+:1067F000FEF9026C3058F34800440E9B335C0C9752
+:10680000F01F0098FE9FFE336A170E9CF01F00A237
+:10681000C0803069FEF80248FEF60220F1490044CB
+:106820000E9B33BC0C97F01F008FFE9FFE206A1B4F
+:10683000337CF01F008C089AFEF702043019303BBD
+:1068400030ECEA1C4000F01F008AFE9FFE10693801
+:10685000301911EAF20A1800FE90FE086A1CF01FB7
+:106860000094FE91FE03189A189BFEF70246301C16
+:10687000F01F0080FE9FFDFB6A150A9CF01F008B35
+:106880001897E08000874F2A300BFEFC022AF01F89
+:1068900000721897E08000AE30580C97E74800442B
+:1068A000FE9FFDE56A150A9CF01F006C1897E080BA
+:1068B00000956938301911EAF20A1800FE91FDD6E8
+:1068C0004E3A300B4FDCF01F00641897E08000A9AF
+:1068D00030480C97E7480044FE9FFDC96A160C9C9F
+:1068E000F01F006B1897C260F01F006A30684D37C8
+:1068F000E7480044FE9FFDBBEACBFFFC301A30DCCA
+:10690000F01F005C3019300A303B30CCEA1C4000EC
+:10691000F01F0057FE9FFDABF01F004BFE90FF4E97
+:106920000E9A3019303B30CCEA1C4000F01F00506A
+:10693000C44B303B30CCEA1C400030190E9AF01F9B
+:10694000004C0DEB304CF01F00490E9A0E9B301C92
+:106950004BB7F01F0048FE9FFD8A0C9B33ACF01F25
+:106960000041FE9FFD844D36FE9FFDD63068F00944
+:106970001800FE98FE693828F0091800FE91FD768F
+:10698000300A0C97325C149BF01F003AFE9FFD6F9B
+:10699000189A303B30CCEA1C40003019F01F00340C
+:1069A000EB3B000D303CCD0B3008FACBFFFC0C97D5
+:1069B00016F8301A30ECF01F002FFE9FFD580A9C8D
+:1069C000F01F003FFE90FD52300A0C97306C149B74
+:1069D000F01F0028FE9FFD4B0BCB302CF01F002337
+:1069E0000E9A0E9B301C4B37F01F0022FE9FFD3F7E
+:1069F000189A303B30CCEA1C40003019F01F001CC4
+:106A0000EB3B000D301CCA0B48D7F01F000FFE9166
+:106A1000FF750A9B338CF01F0013FE9FFD28189A08
+:106A2000303B30CCEA1C40003019F01F00110BCB7A
+:106A3000301CC8AB80016C0880016AC080016F50B7
+:106A400080014A0C8001BF58000076608001C810A8
+:106A50008001509C80015F80800158EC000086E836
+:106A6000800191BC800153348001BD048001C03C91
+:106A7000800149148001506880014A8C800162ECD9
+:106A80008001535C8001919A80014A288001553031
+:106A900080016414800154908001513480014A5C6B
+:106AA0008001BD1480014A488001587C8001543C1B
+:106AB0008001632480015818800155E88001919875
+:106AC000EBCD40C04C9618973138EA184000103C86
+:106AD000E0800087E0880024E068010DEA1880006B
+:106AE000103CC150E0880040E0680115EA188000C1
+:106AF000103CC0D0E068018AEA188000103CC070E9
+:106B0000E0680112EA188000103CC3910E9C4B7A99
+:106B1000F01F003718960C9CE3CD80C03018EA189F
+:106B20004000103CC510E088002E30D8EA18400024
+:106B3000103CC1003108EA184000103CC3F030C8D6
+:106B4000EA184000103CC1B1301C302BF01F002966
+:106B50000E9C3019300A303BF01F00274A760C9CFF
+:106B6000E3CD80C0E0680105EA188000103CCCF05D
+:106B7000E0680107EA188000103CCC900C9CE3CD43
+:106B800080C0E04C008ACC30FC184000103CCF7133
+:106B9000307949B8300AF1490044149B302CF01F79
+:106BA0000019300A30FC149BF01F0016302B300CFB
+:106BB000F01F00100C9CE3CD80C0303C302BF01F48
+:106BC000000D0E9CCC7B48E97298ABC8300A9398B4
+:106BD000149B303CF01F000B0C9CE3CD80C048A6FA
+:106BE0000C9CE3CD80C0000080016AC08001644439
+:106BF0008001BD148001C03C80016F50000086E818
+:106C000080014914800162ECD421FACD00E4FEF643
+:106C100002E21898FEF502E0ECF700F83109EA19F3
+:106C20004000123CE08000D5E08B003630A9EA1924
+:106C30004000123CE08000C2E088005330C9EA19ED
+:106C40004000123CE08000A8C6A330D9EA194000F9
+:106C5000123CE080011930F9EA194000123CC3D11E
+:106C6000FEFA0298300BFEFC0296F01F00A6189662
+:106C7000C341189BFEFA0284FEFC028CF01F00A1A7
+:106C8000304C301BF01F00A10C9A0C9B301CF01FE5
+:106C900000A0C238E0690184EA198000123CE08853
+:106CA0000011E0690188EA198000123CC100E08B04
+:106CB00000A5E0690186EA198000123CC0E1C078B5
+:106CC000E0690183EA198000123CC363109CFEFA5C
+:106CD0000226F01F009018950A9C2C7DD82230794E
+:106CE000EA194000123CC7C0E08800973089EA19D1
+:106CF0004000123CE08000CF3099EA194000123C7D
+:106D0000CEC14FEA300BFEFC020EF01F007E18943D
+:106D1000E08000CF3048ED480044CDFB4F7A300B87
+:106D20004FECF01F0078CD91189A189B4FC5301C7E
+:106D3000F01F0077CD2BE0690107EA198000123CB3
+:106D4000CC60E0690115EA198000123CC12031399C
+:106D5000EA194000123CCC11300A301C149BF01F81
+:106D6000006C300A304C149B4EE5F01F0069CB5B81
+:106D70006F38301911EAF20A1800C72076160C9CF9
+:106D8000F01F00690C9CF01F00694E98580CF0052C
+:106D90001710CA3B303B3019300AF01F0066302B09
+:106DA000303CF01F005A300A301C149BF01F005872
+:106DB0004E150A9C2C7DD8224D0A300B4DFCF01F3D
+:106DC00000511897C3B03058ED480044C86B303BB1
+:106DD0003019300AF01F0057302B304CCE3B6C9BE3
+:106DE000E21B0040C2414C5A4D5CF01F0046C9D026
+:106DF0003028ED480044C71BE069018AEA19800089
+:106E0000123CFE90FF65E069018EEA198000123C99
+:106E1000FE91FF64C5CBFC194000123CFE91FF5E61
+:106E2000300A149B149CF01F003AC57B300A4BC5F6
+:106E3000149B301CF01F0036C50B30481A9BBAE873
+:106E4000336CF01F00400E9A3019303B30ECEA1CD6
+:106E50004000F01F00384B894BB89119C3EB7617EF
+:106E60000E9CF01F00310FC93068F0091800FE9B1E
+:106E7000FF354B15F01F0035C2A10E9B338CF01F60
+:106E80000031C2BB4AC53019300A303BF01F00291F
+:106E9000C24B49AA300B4AACF01F001ACAA13048B5
+:106EA00049F5BAC81A9B334CF01F0026C16B306AF3
+:106EB000EECBFFE2FACCFFFCF01F002530481A9B16
+:106EC000BA68335CF01F001F089ACBFB3019300AF8
+:106ED000303B30CCEA1C4000F01F00160FCB305C7A
+:106EE000F01F000A300A301C149BF01F0009CF5A13
+:106EF000000086E880016C088001C810800157B44A
+:106F000080015F808001509C8001BD048001491494
+:106F100080016444800155E880014AB48001632403
+:106F2000800162EC8001535C8001919880016AC00D
+:106F30008001C03C80016F508001581880015AECDC
+:106F4000800191BC000002088001BF588002DD145E
+:106F5000EBCD40804C973108EA184000103CC6F059
+:106F6000E088001DE068018CEA188000103CC3B086
+:106F7000E088002EE0680193EA188000103CC440CD
+:106F8000E0680194EA188000103CC2714BC7761C7F
+:106F9000F01F003C0E9CE3CD808030C8EA18400012
+:106FA000103CC400E088001D30D8EA184000103CB6
+:106FB000C21030E8EA184000103CC0F14B2A300BF8
+:106FC0004B2CF01F00330E9CE3CD8080E0680186DF
+:106FD000EA188000103CC0700E9CE3CD8080E04C2D
+:106FE000008ACFB14A5AF01F002B18970E9CE3CDB0
+:106FF0008080F01F00294A4A300B4A8CF01F002481
+:107000000E9CE3CD8080761CF01F0025F01F00252C
+:10701000C0514A5B33CCF01F002549970E9CE3CD4D
+:1070200080804A3973185898CD803098496AF3485F
+:107030000044300B49FCF01F0016CCFB49C9731803
+:107040005888CCB03088F3480044F2F900F873381F
+:10705000301911EAF20A1800C0A03019300A303B8A
+:1070600030DCEA1C4000F01F0014CB7B486A300B78
+:10707000492CF01F0007CB1B80016F508001632457
+:1070800080014AA68001C8108001509C80015F8069
+:1070900080016444800177C080014AA480014AA82D
+:1070A0008001BF5800007660800191BC000086E836
+:1070B000800151348001C03C800150F4EBCD40F898
+:1070C0004A37189416956E186E090E930E96C118CD
+:1070D000300B301CEA1C40005D19300B6C39FC1C75
+:1070E00040005D196C388D286E186E091238C20088
+:1070F0001039C190300B301CEA1C40005D19300B78
+:107100006E19FC1C40005D196E188F086E296E38D0
+:107110001039CDF10A9B089C5D19873C6629123C09
+:10712000CF71CE3B0A9B089C5D198F1CCF0B580575
+:10713000C0706A085818C0600A9CF01F0006E3CDB2
+:1071400080F8EACCFFFCF01F0004CF7B00000208AF
+:1071500080002E0080021F104839300893189308D1
+:107160005EFC0000000083B84828700C5EFC000044
+:10717000000083B8EBCD40C0487618976C1C580CC3
+:10718000C030F01F00060E9CF01F00058D1CE3CDE3
+:1071900080C00000000083B88001C4488001C46042
+:1071A000EBCD40C0487618976C0C580CC030F01FDF
+:1071B00000060E9CF01F00058D0CE3CD80C0000082
+:1071C000000083B88001C4308001C4A44878F14C29
+:1071D00000F8580CF9F81004F9B90101F1D9E108E7
+:1071E000F9F81A045EFC0000000086E8EBCD40C010
+:1071F0004948FAC6FFF4F0F700F45807C051C1E857
+:10720000F8C70008C1B0EECAFFDC7408204D502852
+:1072100015C9FB69000C15D8FB68000D6C085008F7
+:107220000DC9BAC90DD8BAD8F01F00072FCD580C18
+:10723000C0516E2C580CCE5118970E9CE3CD80C0D7
+:10724000000086E88001C20CD40149D9F2F800F4AC
+:107250001838C0B078285808C2B078482018994823
+:107260002F8CF01F0018D802580CF9F81004F9BA46
+:1072700001FFF1DAE108F9F81A043008F34800F4E4
+:1072800048FA78285808C180F0C90008F54900F488
+:10729000CE8072482FF89348F4F900F45809CE10C4
+:1072A000724820182F8C9348F01F0006D8027838B7
+:1072B0005808CD41D802F54800F4CD3B000086E8DF
+:1072C00080022738D4014989F2F800F01838C0A0AC
+:1072D00078085808C240784820189948F01F0013D1
+:1072E000D802580CF9F81004F9BA01FFF1DAE108F4
+:1072F000F9F81A043008F34800F0780AF34A00F06D
+:10730000580ACED074482FF895484879F2F900F021
+:107310005809CE50724820189348CE1B7818580848
+:10732000CDB1CDFB000086E880022738EBCD408050
+:107330001897580AC2C07858F60801081438E0882F
+:1073400000274948F0FB00F8580BC190F8CAFFDC51
+:1073500015D8204DFB68000D7409502915C8F6CAD0
+:10736000FFDCFB68000C7408500815C9BAC915D8B1
+:10737000BAD8F01F00092FCD580CC0910E9CF01FF9
+:1073800000070E9CF01F0006E3CF9080E3CF8080C3
+:10739000000086E88001C20C800172C4800172483E
+:1073A000D4214A141895E8F700F05807C2707938CC
+:1073B0003006704AC02810976F3870491439E08A37
+:1073C00000086E080E965808CF710E9610970A376F
+:1073D000C0D06A085808C0B00A9CF01F00145806B4
+:1073E000C1300A9B0C9CF01F0012D8226A18580862
+:1073F000CF416A482FF88B48CF3BE94C00F07848E2
+:107400002FF89948D8220A9B0E9CF01F00090E9C69
+:10741000E94500F0F01F00050E9B0A9CF01F0004D8
+:10742000D8220000000086E8800227388002272446
+:10743000EBCD40C04A48FAC7FFF4F0F600F058061A
+:10744000C051C3D86C065806C3A06D38707C2F4C51
+:10745000F8E80000212DFAE90024F8EA0008FAEB28
+:10746000002CF8E80010FAE90034F8EA0018FAEB0A
+:10747000003CF9380020FB680044F9390021FB6921
+:107480000045EEE80000FAE90000EEEA0008FAEB39
+:107490000008EEE80010FAE90010EEEA0018FAEB36
+:1074A0000018EF380020FB680020EF390021FB694D
+:1074B0000021F01F00062EED580CCC500C9CE3CDA3
+:1074C00080C00000000086E88001C284EBCD40E06F
+:1074D000205D7608502817C9FB69000C17D816974D
+:1074E000FB68000DF8CBFFE2306A18961A9CF01F7B
+:1074F0000034F01F00342FCD580CC051300C2FFD3C
+:10750000E3CD80E06E7C2F4CF8E80000212DFAE9F5
+:107510000024F8EA0008FAEB002CF8E80010FAE979
+:107520000034F8EA0018FAEB003CF9380020FB6858
+:107530000044F9390021FB6900456D38707C2F4CFF
+:10754000F8E80000FAE90000F8EA0008FAEB0008A1
+:10755000F8E80010FAE90010F8EA0018FAEB001851
+:10756000F9380020FB680020F9390021FB6900216F
+:10757000F01F00152EED580CCC20320B300CF01FF4
+:1075800000131895CBC0189A0E99491BF01F0011D3
+:107590000BF93008F0091800EDF80013F1F90807AD
+:1075A000EBF90E07FACCFFFC6D3818D81A9CED45A4
+:1075B000004CF01F0009301CCA3B00008002DD14A3
+:1075C0008001C20C8001C2848002244480021F54C6
+:1075D0008001F8A880021F10EBCD40C049C649D8F1
+:1075E0006C09700A1439C05530070E9CE3CD80C079
+:1075F000350CF01F00191897CF906C082FF8350A3A
+:107600008D08300BF01F0015320B300CF01F0014EA
+:10761000EF4C004C1898C160300849298F680E9CC7
+:10762000F30A017C8F28EF5A001CEF68002A8FF8BC
+:107630008F488F58EF4800408F188F088F38E3CD60
+:1076400080C00E9C1097F01F0008CD0B0000766CD8
+:10765000000001FC80002E1880002DE880022444E8
+:10766000000002AC80002E00EBCD408018977848D7
+:107670005808E08A0004E3CD808079385808C0407B
+:107680002B4CF01F00064869720820180E9C9308C6
+:10769000F01F0004E3CD808080021F100000766C94
+:1076A00080002E00D4014899F2FC00F8580CC0A0CC
+:1076B0007848201899483008F34800F8F01F000473
+:1076C000D802F34C00F8D802000086E88001766802
+:1076D000EBCD40F84B131894E6F700F85807C0605C
+:1076E000189B0E9CF01F002EC1D1E6F700F0580742
+:1076F000C4203006C1285806C0706F386D39704AF2
+:107700007248103AC064E6F800F80E38EE0617101A
+:107710006E070E955807C0900E9C089BF01F002026
+:10772000CEB00E9CE3CD80F8F01F001E58065F1807
+:10773000580C5F0918971069EA091800C201089BE4
+:10774000306AEECCFFDCF01F0018089B306AEECCEC
+:10775000FFE2F01F00156F3A0899149C493BF01F97
+:10776000001430080E9C8F088F18F01F00120E9C1A
+:10777000E3CD80F8F01F000B1897CE2B0C9CF01F68
+:10778000000E0C9CF01F000D0C9CF01F000DF01F54
+:1077900000051897CD51CC6B000086E8800174CCB1
+:1077A000800175D880002DF480021F548001F8A854
+:1077B000800173A0800172C48001724880017668E4
+:1077C000EBCD40E04905EAF700F45807C0D1C158B5
+:1077D000F0C600080E9CF01F000D0E9CF01F000C60
+:1077E0005806C0B00C976E285808CF310E9CF01F79
+:1077F00000070E9CF01F00063008EB4800F4E3CDB4
+:1078000080E00000000086E8800172488001766810
+:10781000D4014938FACEFFFC709CE21C0002C1D0B2
+:10782000209DFD3A0021FB6A0021FCE80000FAE9F6
+:107830000000FCEA0008FAEB0008FCE80010FAE996
+:107840000010FCEA0018FAEB0018FD380020FB6875
+:107850000020F01F00042F7DD8020000000086E801
+:1078600080017430D4014898709CE21C0002C0C0B2
+:10787000300930CCEA1C4000303B129AF01F000463
+:10788000F01F0004301CD802000086E88001C03CD4
+:107890008001C0C8D4014898709CE21C0002C0C09E
+:1078A000300930DCEA1C4000303B129AF01F000423
+:1078B000F01F0004301CD802000086E88001C03CA4
+:1078C0008001C0C8D4014898709CE21C0002C0C06E
+:1078D0003009310CEA1C4000303B129AF01F0004C2
+:1078E000F01F0004301CD802000086E88001C03C74
+:1078F0008001C0C8EBCD4080495818977098E218B5
+:107900000002C041109CE3CD8080F01F00126F3850
+:10791000302911EAF20A1800C0D03009303B129A1F
+:10792000307CEA1C4000F01F000CF01F000CE3CF7D
+:1079300090806E685898CF213009303B129A30BC45
+:10794000EA1C4000F01F0004CF1B0000000086E886
+:10795000800171CC8001C03C8001C0C8580CC0407F
+:1079600078185B98C110489A74991298EDB9000183
+:10797000F9BC0101F9BB0010F3DBE038F5F80A09A6
+:10798000F9BC00015EFC5EFD000086E8489A749830
+:10799000109CF0091604E21C0002F9BB0110F1DB97
+:1079A000E138F5F81A09F9B80101F3D8E12C5EFCC9
+:1079B000000086E8489A7498109CF0091604E21CAE
+:1079C0000002F9BB01EFF1DBE128F5F81A09F9B87B
+:1079D0000101F3D8E12C5EFC000086E8488870992C
+:1079E000129CA589E21C0002F9BA0101F3DAE14810
+:1079F000F9B90101F1D9E12C5EFC0000000086E834
+:107A000018994868709CE21C0002F1F8103FF3F8E6
+:107A10001A00F9BC01015EFC000086E8189948686C
+:107A2000709CE21C0002F1F81041F3F81A00F9BC56
+:107A300001015EFC000086E818984859729CE21C1F
+:107A40000002F3F81A41F9BC01015EFC000086E86F
+:107A50004839300C7298A7C893985EFC000086E8FD
+:107A60004839300C7298A5D893985EFC000086E8DF
+:107A7000D401E06A0100300B482CF01F0003DA0A41
+:107A80000000767080002DE8EBCD40C04A0A1896C1
+:107A90007498109CE21C0002C1D0F4F700F858075B
+:107AA000C1801099E2190020C270A5C8A7A8F4FBF4
+:107AB00000BC95983009497AE06CEA60F01F001626
+:107AC0003008F0061800C1003018F0061800C04059
+:107AD000301CE3CD80C0311CEECBFFE2306AF01FDA
+:107AE000000FE3CF90C0312CEECBFFE2306AF01FE5
+:107AF000000BE3CF90C0A5B8F4FB00B89598E06CFC
+:107B0000EA60487AF01F0004CDCB0000000086E850
+:107B100080017A50800148148001491480017A6004
+:107B2000D401F01F0002D8028001B9B4D401486822
+:107B30007098E2180002C031109CD802F01F0003B8
+:107B4000D8020000000086E88001BD70D4014868BA
+:107B50007098E2180002C031109CD802F01F000398
+:107B6000D8020000000086E88001BD4CD431FACD77
+:107B70000188E06A0168300B1A9CF01F002CFAC6DD
+:107B8000FE541A901A9CF01F002A581CC03029ED90
+:107B9000D832FAC5FFF84018F0081016EA080008B5
+:107BA0001035C4120A97FAC4FE98ECC1FFF8C098C9
+:107BB00040182EA7F0081016EA0800081037C33244
+:107BC0006C08204D50280DC9FB69000C0DD80E9B88
+:107BD000FB68000D306A1A9CF01F0016F01F00169B
+:107BE0002FCD580CCE60EECBFFFA310AFACCFE88CE
+:107BF000F01F0010E2E80000310AE8E90000089BED
+:107C0000E2E20008FACCFE88E8E30008F01F000B6F
+:107C1000CD01189B316A0E9CF01F0004009CF01FE0
+:107C20000008CB6B29EDD83A80002DE880017B4C11
+:107C30008002DD148001C20C80002D9480017B2C19
+:107C4000D431FACD018CE06A0168300BFACCFFFC2C
+:107C5000F01F0050FAC5FE50FACCFFFCF01F004E9A
+:107C6000581CC03029DDD832402858F8E088007F01
+:107C7000F0081016FAC1FFF4E20800081031E082A3
+:107C80000087E06801685018EACBFFF8FAC6FFF0F9
+:107C900002973004FAC0FE94500BC0C85804C36069
+:107CA00040282EA7F00810162EA6E208000810376C
+:107CB000C4926A08204D50280BC9FB69000C0BD8F0
+:107CC0000E9BFB68000D306A1A9CF01F0034F01FF9
+:107CD00000342FCD580CCE30ECCBFFFE310AFACC5D
+:107CE000FE84F01F002E400BF6E80000310AE0E9A8
+:107CF0000000FACCFE84F6E20008009BE0E30008F6
+:107D0000F01F0028CB005804CCC10F89E8091800E7
+:107D1000CC810F98F2081800CC410FA9F009180087
+:107D2000CC010FB8F2081800CBC10D89F00918007A
+:107D3000CB810FD8F2081800F9B40100EE04170047
+:107D4000CB0B5804C2400A9B306A089CF01F0013FA
+:107D5000EACBFFF8310AE8CCFFFAF01F0010FACCAA
+:107D6000FFFCF01F001129DDD832F00A1110FAC112
+:107D7000FFF4F40A1016E208000C300BF01F0005A7
+:107D80003108E069016850285019C7FB3FDCC6BBC9
+:107D900080002DE880017B4C8002DD148001C20C44
+:107DA00080002D9480017B2CEBCD40C0208DBACB80
+:107DB000BA8A189B4968709CE21C0002C06118973F
+:107DC0000E9C2F8DE3CD80C03008FAC6FFF85048D6
+:107DD00050281A99FACAFFFC0C9CF01F000EC11122
+:107DE000189740285808C0400C9CF01F000B404CCE
+:107DF000580CCE70F01F00090E9C2F8DE3CD80C073
+:107E00000C9CF01F0007581C5F07CECB000086E8D3
+:107E10008001519080021F1080002E008001C81048
+:107E2000EBCD40C0201D491718966E9CE21C000245
+:107E3000C0412FFDE3CD80C01A9CF01F000DEF461E
+:107E400000FCEEF801105808C051301C2FFDE3CDA6
+:107E500080C0EECCFEECEF3A011BEF3B011AF01FA5
+:107E60000005301CCF4B0000000086E88001A6A86A
+:107E700080017DA8EBCD4080201DBA8C48C76E984C
+:107E8000EDB80001C0402FFDE3CF808030181A9973
+:107E9000300A308B487CF01F0008581CCF511B88DB
+:107EA000EF4801202FFDE3CD80800000000086E830
+:107EB0008003A9B48001A0F4D401201D48B918980A
+:107EC000729CE21C0002C0E0300AF368004C308B68
+:107ED000FAC9FFFC486C12F83018F01F0006581C55
+:107EE0005F0C2FFDD8020000000086E88003A9BCCB
+:107EF0008001A0F4D401203DBA8C496A749CE21C34
+:107F00000002C0312FDDD8021B8B3038F00B180077
+:107F1000E089001DE0683200EA18312EE069352E54
+:107F2000EA19312EFAE90004F4F800F8F3DBB0089E
+:107F3000300A5808F1F91A0F308B30181A99FACC18
+:107F4000FFFCF01F0005581CCDE03FECCDCB00003E
+:107F5000000086E88001A0F4D421206D4A0618971D
+:107F60006C98EDB80001C040300C2FADD822584CB1
+:107F70005FB8E04C00FF5F191268C0303FECCF6B78
+:107F8000300814995028169A5008189B1A951A9C74
+:107F9000F01F0014CEA01A9CF01F00134008189484
+:107FA0005808C0401A9CF01F0011402C580CC030DB
+:107FB000F01F000F5814CD916C98EDB80007C0C1A8
+:107FC0005837E08B000AEE08150648A9300A100958
+:107FD000089C930ACCBB301CCC9B0000000086E8B8
+:107FE000800152048001C81080021F1080002E0002
+:107FF00000007670EBCD40C0202D496718966E9832
+:10800000E2180002C2103FF8FACAFFFEBAF8BAA896
+:10801000BAB8BAC8BAD8BAE8300BF01F000F6E98D9
+:10802000EDB80007C0E15836E08B000CEC081506EF
+:10803000300A48A9301C1009930A2FEDE3CD80C007
+:108040002FEDE3CF90C0109C2FEDE3CD80C000005A
+:10805000000086E880017F5800007670EBCD40C0BC
+:10806000202D49F66C9CE21C0002C2703FF8BAF861
+:10807000BAA8BAB8BAC8BAD8BAE8ECFB00F8580B34
+:10808000C260F6CCFFE2303A300BF01F0016FAC7A0
+:10809000FFFE301CF01F0014303B0E9A300CF01F16
+:1080A00000136C99300B1298ED4B0110A3D88D98EA
+:1080B000EDB90007C050301C2FEDE3CD80C0E06A61
+:1080C000010048BCF01F000B301CCF7BFAC7FFFE3D
+:1080D000303A0E9CF01F0003CDDB0000000086E864
+:1080E00080017DA880017FF480017F5800007670B8
+:1080F00080002DE8D43120DDFB690010FB68000C06
+:10810000FAC9FFA8FEF7023C18956E9816961492CD
+:1081100072307201E218000272147223C041300CF6
+:108120002F3DD832E04B0020E08800043FFCCF9B7D
+:10813000584CE08B002158DB5FBA301BFB38001035
+:10814000F60818005F09126AC030580CC141307837
+:10815000FACCFFD4FB680033F01F007B3008303CC2
+:1081600050785058F01F007958D6C070E08B00311D
+:108170005856C0303FECCD5B30683019FB68003397
+:10818000EF49011CFACCFFCDF01F0071501C1AD32F
+:108190001AD41AD1FB38001C04991AD80C9AFB384F
+:1081A0000043FACCFFDC0A9BF01F006A2FCD580C6D
+:1081B000C1B140585808C050FACCFFECF01F00661F
+:1081C000407C580CCAD0F01F0065300CCAAB590671
+:1081D000C6C0E0460020CCF130283029FB680033CF
+:1081E000EF49011CCD0BFACCFFECF01F005D500CE9
+:1081F00040585808C050FACCFFECF01F0057407CA4
+:10820000580CC030F01F005540085818C89158004D
+:10821000EFF81009F9B90108F1D9E138EFF81A09B6
+:108220003009FB380010F2081800C051F9D5B00829
+:10823000F01F004C6E98EDB80001C0514C18F0F8DA
+:1082400000FC501840185808C080FB3A0010FB3B57
+:10825000000C089CF01F0044306A089BEECCFEEC3A
+:10826000F01F0042301AFACBFFF4EECCFEE6F01F0E
+:10827000003FEECCFEE5301AFACBFFF0F01F003BDA
+:108280003018EF480110FB6800326E9C4AD7EDBCF5
+:108290000001C120EDBC0007C061FB38000C502874
+:1082A0005845C1E1301CC3DB30483039FB6800332E
+:1082B000EF49011CC68B30084ADB1099109A109CBC
+:1082C000F01F002CC3401ADC3018FAC9FFCA300A6C
+:1082D000308B4A9CF01F00296E9C2FFDCDCBEA0904
+:1082E00015064A780C9AF0090007049BEF650026F2
+:1082F000EF560024EECCFFFCF01F001C089BEF6142
+:108300000036306AEECCFFD8F01F00185803C110B9
+:10831000069B308AEECCFFD2F01F001440288FF06D
+:10832000EF68003830188F08109CCFBA6E9CCB3B9A
+:10833000069B308AEECCFFD2F01F0012CF0B00005C
+:10834000000086E88001A6A880015FCC8001B54CC2
+:108350008001527480021F1080002E008001C8101E
+:1083600080017EF480017DA880002DF48001795C7D
+:10837000800185CC8003A9AC8001A0B80000767094
+:1083800080002DE8EBCD40C0300749A60E98A768C5
+:108390002FF7EC08000B76085808C0F10E985847E4
+:1083A000CF714957EF3C004CF01F0014EEFC010068
+:1083B000F01F0013E3CF90C076F8F6C9FFD2F73C68
+:1083C00000261AD8F6C8FFD81AD91AD8F7390036B5
+:1083D000F6CAFFFC1AD9F7380038F7390027F71B1F
+:1083E0000024F01F00082FCD581CCD90E3CF80C093
+:1083F00000007670000086E880017EB880017E2053
+:10840000800180F47808301CF80A094C201C106C9C
+:108410005EFCD703487870085808C0901838C041EF
+:10842000C078103CC05070B85808CFC15EFD5EFFE8
+:10843000000077B4189A48F8709CE21C00025E0CA9
+:1084400070A8EDB80000C030305C5EFC48AC780B22
+:10845000583BE089000D30094888F00B003891182E
+:108460009109950BF6C8FFFF99085EFF3FDC5EFCA3
+:10847000000086E8000077B00000779048D972A825
+:10848000EDB80000C1313008780A99D848ABF60A37
+:10849000003A741999E97418F8C9FFCC910C78085E
+:1084A000301CF608003891195EFC305C5EFC000060
+:1084B000000086E800007790EBCD40C0189778B9AF
+:1084C0005809C18078C893C86EC891096E3C580C91
+:1084D000C050F01F000B30088F3833CA6EA635AB82
+:1084E0000E9CF01F00080C9B0E9CF01F0007E3CFB2
+:1084F00080C078C94858911978B9CE7B80002E0089
+:1085000080002DE88001BD24000077B4EBCD4080D1
+:108510001897580CC18078985D1848F97209580965
+:10852000C051C11872B95809C0E01237CFC16E7876
+:108530005808C0B06E3C580CC060F01F00083008EE
+:108540008F588F38E3CF90800E9C301BF01F0004B3
+:10855000E3CF9080000077B480002E00800184B8C3
+:10856000EBCD4080496972A8EDB80000C040305C96
+:10857000E3CD8080493870091839E08A001E492807
+:10858000F00C00376E095809C15072DA580AF3F836
+:10859000000EEFF80A01F3FA000DF3F8100EF5F8EB
+:1085A0001A0E72E8129C910AF01F00086E09580911
+:1085B000CED1E3CF90803FCCE3CD8080000086E831
+:1085C000000077B0000077908001850CEBCD40F87B
+:1085D0001897169614951294109333CCF01F000C34
+:1085E000C1403008990799B899389958998899964F
+:1085F000994599649973487A301899A8741999C95A
+:10860000930CF8C8FFD49518E3CD80F880002E189D
+:10861000000077B4D401202D500A48C972A8EDB8E3
+:108620000000C040305C2FEDD80248981A99F00B3A
+:10863000032A3048FA08000BF01F0006581CF9BC4A
+:108640000001F9BC01FECF0B000086E80000777046
+:1086500080022670EBCD40C0201D4AC618976CA83A
+:10866000EDB80000C441580CC3F0789B580BC3C050
+:10867000780A580AC3954A69F20A0338500858081C
+:10868000C061C1A870D850085808C1601037CFB178
+:10869000F40815036EDA580AF3D8E009EFF8000E73
+:1086A000F3F80A01EFF8100EF5F81A0E400870DA28
+:1086B00070E9930A6E9B3F988F18580BC0300E9C40
+:1086C0005D1B6E8B581BC050582BC150580BC051AE
+:1086D0006E2A1A9CF01F000F0E9C301BF01F000E1C
+:1086E0002FFDE3CF90C02FFDE3CF90C0305C2FFD76
+:1086F000E3CD80C0ECF801B80E38CEF1300948382F
+:10870000F14901B8CEAB0000000086E80000779088
+:1087100080018614800184B8D40148C9169E72A8CD
+:10872000F1D8C001C031305CD8024898304A76A9EF
+:10873000F00C032C1ADAF6C8FFF833CAF01F000554
+:108740002FFD581C5F0CD802000086E800007770EF
+:10875000800225FCD431204D30084931189650282C
+:108760005018FAC5FFF4FAC2FFF802901A93FAC43F
+:10877000FFFCC098E006032AF01F000C0E9B401C73
+:10878000F01F000B3049049B0A9AE206032CF01FED
+:108790000009304818970A991A9B089C5817CEB0C0
+:1087A0002FCDD83200007770800226708001865469
+:1087B0008002254CEBCD40E0201D49356AA8A1A8D8
+:1087C000300A49298BA81497930A14984906EC0893
+:1087D000002C2FF748FA303BF01F000F581CC0F157
+:1087E0000E985887CF5148D8300991189109301BFD
+:1087F0001A9CF01F000B2FFDE3CD80E06AA8A1C8F2
+:108800008BA8CF2B000086E8000077B000007770BF
+:1088100080018404800224F4000077B48001843451
+:1088200058DBE08A0012F939000C3078F0091800A2
+:10883000E08B000C595BE08A0008F939000E3AA879
+:10884000F0091800C0D05EFD3888F0091800CFC1CB
+:10885000F939000D38E8F00918005F0C5EFCF938B2
+:10886000000FF2081800CF01F93900103038F00974
+:108870001800CEA1F93900113008F0091800CE41D6
+:10888000F93A0012F20A1800CDF1F9380013F40891
+:108890001800CDA1F93900143888F0091800CD412D
+:1088A000F939001538E8F00918005F0C5EFCD703B1
+:1088B0003019482891095EFC000077CCEBCD40C010
+:1088C000208D48D730088E09F0091900C101E06AEF
+:1088D000FFFF300B1A9CF01F00091A9B302AFACCBC
+:1088E000FFE8F01F00079A181A96AE088E0C2F8D1D
+:1088F000E3CD80C0000077BC800213208001F0002F
+:10890000D401F01F00054858F139010B120C5C8CA2
+:10891000D8020000800188BC000086E8EBCD4060F2
+:10892000208D306AFAC5FFE6300B0A9CF01F000963
+:108930001A9CE06AFFFF300BF01F00070A9C1A9B8D
+:10894000302AF01F00061A969A1C2F8DE3CD806006
+:1089500080002DE8800213208001EFACD43120DDAF
+:10896000FEF60234FACEFFA8189516916C9C14946A
+:10897000129310907C177C02E21C0002C0312F3D44
+:10898000D832FEF8021670095809C041FE7CFBB4CB
+:10899000CF7BECF801245818C041FE7CFC17CF0BAC
+:1089A000ECC9FFE85019129CF01F007D581CE080B4
+:1089B00000E30D890D98F0091800E08200E6302CE4
+:1089C000F01F0078E08000D26CB850282FF88DB8E6
+:1089D0005807FBF91002EFF91A00F01F0073C0E00E
+:1089E000029B0A9CF01F0071E08000C96C98EDB8F2
+:1089F0000006C0414E88402991D9F01F006D6008E3
+:108A0000EFDCB010F3D7C01050091039E08B006CC8
+:108A10000D882FF8AC880D99F0091800C061300A54
+:108A2000320C149BF01F0063E8C800020E08FB58CC
+:108A3000002EED38010B3004FB680032400A300B89
+:108A4000FB640030FB640031FB640033069CF01FC4
+:108A5000005A069BFAC7FFF4400A0E9CF01F00570D
+:108A6000300A0E9BFACCFFD2F01F0055ED38010BF7
+:108A7000F9D2C003BA78F01F0053300CFB52002823
+:108A8000FB5C002AE041003EE0880008EB39000C66
+:108A90003888F0091800C2D04028300A50980E9B40
+:108AA000FACCFFDCF01F00484009ECCCFFE881095C
+:108AB000F01F0046F01F00463008ED4C00CCED588A
+:108AC00000D04C49F30A0142F00A1900C0604B295A
+:108AD0007298EDB8000EC031301CC52BF01F003E5F
+:108AE000301CC4EBECCCFFE8F01F00383FFCC48B1B
+:108AF000EB39000D38E8F0091800CCF1EB39000E25
+:108B00003018F0091800CC91EB39000F3038F0091B
+:108B10001800CC313028EB3B0012F00B18005F1A24
+:108B20003FE8F00B18005F19126AE80A1800CB51F1
+:108B3000EB380013E218001D5818CAF1EB38001486
+:108B4000E21800C85888CA91189A31F9EA0907084A
+:108B5000F4081800CA212FF9E049003FCF81E068EE
+:108B60000400FB58002AC99B401CF01F0018FE7C23
+:108B7000FAECC06BFE7CFC16C03BECCCFFE8F01FAF
+:108B800000133FECCFDA401CF01F0010FE7CFB4FBF
+:108B9000CF7A0000000086E8000077CC800148987A
+:108BA00080014440800179DC8001882080018900B7
+:108BB0008001491480002DE8800213208001EFAC71
+:108BC0008001BF108001F000800148A8800148802A
+:108BD000000002AC80019014D401302CF01F00037F
+:108BE000300948389109D80280014638000077CC16
+:108BF000D431FACD01385009FACEFEA41697189652
+:108C0000FEFB031C14947C137C00F6F80124581816
+:108C1000C460FEFA030A749CE21C0002C05118975B
+:108C20000E9C2B2DD832E06800F8FAC5FEFCF5D773
+:108C3000C0100C9B0A9C5488549654A7300254725E
+:108C4000F01F00B8FAC1FEE40A9B029CF01F00B6B8
+:108C500044C95879E08B00283018F0090948E21817
+:108C60000085C2104488FAC9FFF45012502854D924
+:108C700044D80A9B5478029CF01F00ACC1C1302735
+:108C800044D95809CCE0FAC8FFF41039CCA0FACC8A
+:108C9000FECCF01F00A70E9C2B2DD83230270E9C47
+:108CA0002B2DD832448B300CF01F00A2E08000B393
+:108CB00054DCCDFB44C9E049003FE088000B30079D
+:108CC00044B8EDB80007E080009EF01F009BCD9BEC
+:108CD000FEF80268F009032FECCAFFFC1588EC08C7
+:108CE000000889080DD81589400BEE090109306785
+:108CF000F208010A970A44B8CE5B44B8F0C90001F3
+:108D0000E0490097E0880089447CF01F008D44C84A
+:108D1000189A300944BC303BBFBCF9E8108CF01FF6
+:108D20000089F01F0085301B300CF01F008744B80D
+:108D30003027CC8B44B8E0480082C090E08900A97D
+:108D4000E0480080C040E0480081CEE10E9B0C9CD2
+:108D5000F01F007ECE9B44B8E0480082E08000C453
+:108D6000E08900915978E08000C4E0480081CCD1CE
+:108D7000029CF01F0077CD8B44B85808C7E144D659
+:108D80005803EDF81000E7F81A008C28A008FB1A29
+:108D90000106445814088908FB190104F20A010568
+:108DA000400A30EB950568070E9CF01F006AE080D2
+:108DB00000AE4DB9F2F801D05808E080009E0A9B41
+:108DC0000E9C5D18E080009930270DE84D4BF76848
+:108DD000007B44B8C77B44B85818CB90E04800806B
+:108DE000CA31CB5B447B44BCF01F005B44BCF8C879
+:108DF00000805818FE9BFF99029B5C5CF01F005797
+:108E0000C93B30084C69300BB2A8169CF01F0054C7
+:108E1000C5DB3FD7C06B4D38F009032F029CF01F14
+:108E20000052C82B029CF01F0051C7EB029CF01FA0
+:108E30000050C7AB029CF01F004FC76B029CF01F95
+:108E4000004EC72B029CF01F004DC6EBF01F004CDC
+:108E50004B3AF54C00D4C68B029CF01F004AC64B1F
+:108E6000029CF01F0049C60B029CF01F0048C5CBB6
+:108E7000447CF01F0047C58BE0480081C14030278B
+:108E8000C21BF0C8008F5828FE9BFF40C4DBE0489F
+:108E90000084FE90FF5DFE95FF5BE0480085FE913B
+:108EA000FF44C55B49E9138820185C58B28844D751
+:108EB000C29049BB7698E2180040C20076D96E088D
+:108EC0001039E088002944B8A7D854B85803F9B736
+:108ED0000003EFF81000E7F81A00F9B70103FBF8F8
+:108EE000104BCF0A447B32ECF01F002AC1DB029CFE
+:108EF000F01F0029C19B3047C69B0FD8F768007A46
+:108F0000CE3B302CF01F0025CD5BF01F0025CF405D
+:108F10003FE7C5CBF01F0023CD7B0000000086E8B3
+:108F20008002132080020A7880020AAC80021F109F
+:108F3000800224448001C0C88003A9C48001C0808D
+:108F40008001C03C800185608002276C8001AA807E
+:108F50008001882080019A1480019BDC8001C65822
+:108F60008003AAC48001AA2C8001AA448001AA50CF
+:108F70008001AA5C8001AA688001AA7480014880EF
+:108F80008001AA388001AA208001ABA080014A9408
+:108F9000800191BC8001AB2C80014638800179DCD6
+:108FA00080017864EBCD40683006493C1AD61AD669
+:108FB00049250C9899064929492A302B0A9CF01F0B
+:108FC000001249231AD60C981AD60699490A303B42
+:108FD000EACCFFFCF01F000C0C981AD606991AD6A2
+:108FE000EACCFFF848BA305BF01F0007301C2FAD09
+:108FF000E3CD8068000077CC000077C0800188B0A6
+:109000008003AD248001930880018BD88003AD3CA0
+:109010008003AD585EFCD703EBCD40E0203D1897B0
+:10902000580CC1F07938707A94D9EDB90001C1D0EB
+:109030004C166C785828C1500E9CF01F0040C1108F
+:10904000ED3900943FF8F0091800C1405017FACAF2
+:10905000FFFC1A9BFACCFFF6F01F0039581CC180A8
+:10906000301C2FDDE3CD80E04B366C785818CE51A4
+:10907000CF8B202D306A1A9C4AFBF6CBFF4AF01F9B
+:109080000031F01F00312FED580CCEB1CE0BFAC5D8
+:10909000FFF5400A401B0A9CF01F002C581CCE1103
+:1090A0003079FB38000BF2081800C35140187139B1
+:1090B000727A94D8EDB80004CD404A5AF4F801040D
+:1090C0005818C3206DE85808C1D1ED3B008049AA6B
+:1090D000580BC2806F387079F5380081F33C005E20
+:1090E000F8081800C1F0F4CAFF7E3009C0581538DE
+:1090F000F8081800C0402FF91639CFA516395F0CB3
+:10910000CB1B48D973F85808CE10F4F801AC5808B6
+:10911000CDD1CA7B0A9CF01F000FF01F000FCA10B0
+:10912000CCDB3009CECB3059FB38000BF2081800ED
+:10913000C981CC9B000002AC8001C3448001B5B85A
+:109140008002DD148001C2248001B854000086E84A
+:109150008001B54C8001B584EBCD40E048D818962D
+:109160001695F0F700F05807C0E00E9CF01F000ABB
+:10917000C0715806C0A00E9C0A9B5D16C0606E07A9
+:109180005807CF41E3CF80E00E9CE3CD80E00000A4
+:10919000000086E8800190185EFD5EFFEBCD408008
+:1091A000189778785808C030788C5D180E9CF01F9E
+:1091B0000003E3CD8080000080002E00D4314B10EE
+:1091C0001895169260095809C580300472587219B2
+:1091D0000A38F7B400FF5809CFA10891E80C15022E
+:1091E000F01F00291893C46060075807C23030068A
+:1091F000C0486E175807C1E06E580A38CFB10E9CB0
+:10920000F01F0022E60609276E485808C0F06E19C4
+:109210005809EFF80002E1F80A01EFF90001EFF850
+:109220001002F3F81A026E2891092FF66E175807EC
+:10923000CE415804C1A006953006C0380836C15446
+:109240006A07049C6E686E8B5D18491B0E9CF01FAC
+:1092500000112FF62FC56E485808CF100E9C48CB32
+:10926000F01F000C0836CED5069CF01F000B029CA8
+:10927000D8321891029CD83212941291CB0B000074
+:10928000000077D080002E18800148F68001919C64
+:10929000800148FE80002E00EBCD4080324CF01F54
+:1092A00000081897C080324A300BF01F00060E9C51
+:1092B000F01F00050E9CE3CD8080000080002E187A
+:1092C00080002DE88001490EEBCD40FC18961695E4
+:1092D0001494129310924077F01F000AC10099561F
+:1092E00099359964998799739942487A3008991801
+:1092F00074199929930CF8C8FFFC9518E3CD80FCEC
+:1093000080019298000077D0D431FACEFFDC189714
+:1093100016901491129310927C157C04580CC26024
+:1093200078095809C26049A66C085808C051C0980D
+:1093300070185808C0601039CFC13018109CD8324E
+:10934000F01F0014C1309950993199639985997231
+:109350009944300899186C199929930CF8C8FFFCA6
+:109360008D188F0C3018109CD8323008109CD832D1
+:1093700008981AD50499069A029B009CF01F0006D3
+:109380002FFD580C5F188F0CCDAB0000000077D07C
+:1093900080019298800192C8EBCD40404856ECCCB9
+:1093A000FFF8F01F000530088D168D08E3CD8040D2
+:1093B000000077D080014892D401F01F0002D8024B
+:1093C0008001CAC0EBCD40F8204DE0683100EA18BA
+:1093D000312EE069312EEA19322E306CFAE90000A4
+:1093E000F01F00631894E08000B9303CF01F00616A
+:1093F0001896301CF01F005F306A202D189B1895BE
+:109400001A9CF01F005DF01F005D2FED580CE080EE
+:10941000008732B80A9C1AD8308930084D8A306BE0
+:10942000F01F00582FFD1A93ECFC00D8F01F0056D7
+:10943000ECFC00DCF01F0055ECFC00E4F01F0054D5
+:10944000ECFC00E8F01F0053ECFC00ECF01F0052B5
+:10945000ECFC00F0F01F0051ED3C00B7F01F005095
+:109460006DC85808F9B80101EDF81A1BED3C006F02
+:10947000F01F004CECFC012CF01F004BF01F004BC8
+:10948000F01F004BF01F004BF01F004BECF800F8F2
+:109490005808C6616D084C97EF4800D8ECFC0130C5
+:1094A000F01F0047300830A932B54C6A1AD5E06B7E
+:1094B0000080EECCFED8F01F0033EEC6FE58304AD6
+:1094C000300B0C9CF01F004030081AD530594BFA75
+:1094D0000C9C304BF01F002B4BD82FEDF10A0142B2
+:1094E0003009F20A1900C2606E99EDB9000EC2018E
+:1094F000A7B930688F9950381A9CFAC8FFF8FAC992
+:10950000FFF4089A308BF01F00331897581CC140A5
+:10951000089CF01F00312FCDE3CF80F8189A0A99EC
+:109520001A933068308B1A9CF01F002CC7EBF01F89
+:10953000002C6E99CDEB089CF01F00273009303BC2
+:10954000129A311CEA1C4000F01F0026F01F002672
+:109550000E9C2FCDE3CD80F82FCDE3CD80F8300ADF
+:10956000301B149CF01F0021C96B000080002E18D6
+:1095700080015FCC8002DD148001C2248003A948F1
+:109580008001A04C8001A4088001A3AC8001A350FD
+:109590008001A2F48001A2988001A23C8001A16C0C
+:1095A0008001A1E88001A1488001A6008001838498
+:1095B000800197A88001B0E8000086E88001A190B2
+:1095C0008003AD7880002DE88003AD84000002ACFC
+:1095D00080019E5080002E008001A0F48001901434
+:1095E0008001C03C8001C0C88001AD20EBCD406847
+:1095F00030094AF63068ACA9AC893129314AAC98B7
+:109600008D99300530130A9BED4500ECED4500E8DF
+:109610008DA58DC5ED550040ED550042ED55004E30
+:10962000ED4500D88DB3ECCCFEF0F01F0022ED45E7
+:109630000124F01F0021ED5500D0ED4C00CCED557C
+:1096400000D249ECF01F001EF01F001EED4501B8CE
+:10965000F01F001DF01F001DF01F001D0A9BECCC29
+:10966000FF48F01F001C0A9BECCCFF44F01F0019C0
+:10967000069BECCCFF40F01F0017069BECCCFF3C98
+:10968000F01F0014ED430044F01F0013F01F0013FF
+:1096900030DCF01F0013F93C000FF01F0012F01F28
+:1096A0000006ED4C01CC069CE3CD8068000086E806
+:1096B00080002DE880014880000083C08001B498BC
+:1096C00080022754800187B480018FA480017158E3
+:1096D000800147B48001C13C8001A46080015FCC5F
+:1096E0008001A12CEBCD4060E06A01F8300B49D538
+:1096F00018960A9CF01F001CF01F001C0C9CF01F09
+:10970000001CEACCFFF4F01F001BEACCFFE0F01FC6
+:109710000019EACCFFF0F01F0017EACCFFECF01FB5
+:109720000016EACCFFE8F01F0014EACCFFE4F01FBB
+:109730000012300930DC1AD91298129A129BF01FCD
+:10974000000FF01F000FF01F000FF01F000FF01FA1
+:10975000000FF01F000F301C2FFDE3CD80600000D4
+:10976000000086E880002DE8800193988001B31006
+:1097700080014892800148AE8001A4F08001494CEC
+:10978000800162D08001B9B480017A708001979025
+:109790004848300A48499118910A930A5EFC000033
+:1097A000000077DC000077E4D421219D4A8468081A
+:1097B000F3D8C001FB690063E2180002C140301811
+:1097C0003005FB6800634A3CF01F00233018189BEB
+:1097D000FAC9FF9D300A49FCF01F0020581CC280C6
+:1097E0002E7DD8225809C1C0109549D87006580658
+:1097F000CEB0EA050019FA0900170C9B0E9C306ADE
+:109800002FA72FF5F01F00176C265806CDD059054D
+:10981000CF516808F1D8C001F0051700CD5B306A60
+:10982000E06B00FF1A9C3015F01F000FCDFB48FCC9
+:10983000F01F0009EA050018189BA1781A99300A50
+:1098400048ACF01F00062E7DD8220000000077E40F
+:109850008003AD8C80002DD08001A0F4000077DC67
+:1098600080002DF480002DE88003AD94D401486978
+:109870007208104C930CEDBC0002C021DA0AF01FF4
+:109880000003D802000077E4800197A8EBCD408068
+:1098900048C76E095809C130722A580AF3F8000304
+:1098A000EFF80A01F3F81003F5F81A037238129C66
+:1098B000910AF01F00056E095809CEF1E3CF9080A0
+:1098C000000077DC80002E00D401F01F0007581C38
+:1098D000C020D80248597208EDB80002CFB0F01F7E
+:1098E0000004D8028001988C000077E4800197A8DA
+:1098F000EBCD40807847785A6E18103AE088000423
+:10990000E3CF8080783B6E0CF01F000B6E28580868
+:10991000C0406E1B6E0C5D186E3CE04C002BC050BE
+:10992000300A149BF01F00050E9CF01F0005E3CFCA
+:109930009080000080002DF48001491480002E00EA
+:10994000EBCD40C0203D300818979928990814960F
+:109950001A9C308AF01F0011FACBFFF80E9CF01F02
+:1099600000102FED580CC1016E085808C0400E9C25
+:10997000F01F000C6E2C580CC040F01F000B300C78
+:109980002FFDE3CD80C05806FBF81000EDF81A005B
+:109990002FFDE3CF90C000008002DD1480014ECC8B
+:1099A00080021F1080002E00EBCD40C01897781861
+:1099B0005B98C0C0783B580BC17078465806C040D1
+:1099C00078685908C050E3CF90C0E3CF80C0785A80
+:1099D000590AE08800153FF88D28ECCCFFF4F01F01
+:1099E000000CE3CF90C0784C580CCEE06E6859085C
+:1099F000CEB12F4CF01F0006E3CF90C06C0CF01FCF
+:109A000000056E5830198D188D29CE8B8001EDC45C
+:109A100080002DF4EBCD40E0201D1697E04C008136
+:109A2000E0800088E08A0027E04C0083C2F0C2B4E6
+:109A3000760A1A9C300BF01F0064E08A004F585CD5
+:109A4000C490314CF01F00614008913C4009723ACB
+:109A5000580AC7A06E083009990899399919EF3842
+:109A60000008992840083149301A91594008911A44
+:109A7000C1D8584CC4A0E04C0080C330300C2FFD3E
+:109A8000E3CD80E0E04C0085CFA16E0A300B1A9C3C
+:109A9000F01F004DE08A0022585CC1C0EF39000879
+:109AA0004008300A91194008915A301B400CF01FB1
+:109AB0000048581CCE41400CF01F0046C0B0400B7F
+:109AC00076785808C070300CF01F0043581C5F0CAB
+:109AD000CD7B2FFDE3CF90E03FEC2FFDE3CD80E089
+:109AE0007645760A1A9C300BF01F0037FE9AFFF677
+:109AF000585CCF005805C4914008913540099355F2
+:109B00000FCA4008911ACD2B7626760A1A9C300B84
+:109B1000F01F002DFE9AFFE2585CCDC05806C1919F
+:109B20004008301A9136400993564008911ACBEB01
+:109B3000760A1A9C300BF01F0024FE9AFFCF585C67
+:109B4000CC900FC9CAEB3FD893184009935ACAEB7F
+:109B5000ECC5FFED0A9CF01F001D4008913C1899D0
+:109B6000400A743B580BC2406E080C9A9308933617
+:109B7000EECBFFF430162F0C9316F01F00184008A0
+:109B8000915540099316C92B40060A9CF01F000FFF
+:109B90008D3C4009723C580CC1000A9A6E5BF01F64
+:109BA000000F400891550FC940089119C7FB3FD8D5
+:109BB00095184009935BC7AB3FD893184009935C55
+:109BC000C75B00008001861480002E188001847C11
+:109BD000800184148001871880002DF4EBCD40FCB7
+:109BE0004C151696189476026A095909E088001BEC
+:109BF0004BE7C15878BA580AF9F8000CEFF80A0197
+:109C0000F9F8100CF5F81A0C201978C8910A8B098C
+:109C1000F01F00376A095909E08800056E0C580CDE
+:109C2000CEA16C2338086C36ECCCFFCCF0041800C5
+:109C3000C260F01F00301897C2F0B8C464080C9AD4
+:109C4000990899A6069B2CCC8F9CF01F002B3808F6
+:109C5000F0041800C2303818F0041800C2B04A3BB3
+:109C600030088FB8761A8FCA9507EEC9FFD46A08F4
+:109C700097192FF8301C8B08E3CD80FC64495809F4
+:109C8000CD90ECC8FFC9E018FFFCF009000CF01FF4
+:109C900000191897CD31E3CD80FC318A049BEECCBE
+:109CA000FFF4F01F00156E7A8F2A580AC1018F8ABF
+:109CB000CD7BEEC6FFF4318A300B0C9CF01F000FF9
+:109CC000049B0C9C308AF01F000CCCAB6EA82FD8E4
+:109CD000E018FFFC6E9C100C8F8C645BF01F00067C
+:109CE000CBFB0000000077E80000021880002E0087
+:109CF00080002E1880002DF480002DE8D421207DD6
+:109D00001297FACEFFD04B2918947298EDB8000143
+:109D1000C040300C2F9DD822FCE800003006BB2943
+:109D20005C7A50265046FAC5FFF8FAC9FFE00A9C53
+:109D3000F01F00282FED580CC2D05807C0B08F3646
+:109D40008F5640680E9B0C9C8F28F01F0023581CD8
+:109D5000C2E11A9CF01F00215BBCC29040076E4C10
+:109D6000580CC070F01F001E30088F388F48400715
+:109D70005807C0401A9CF01F001B402C580CC030E4
+:109D8000F01F00175804FBF81006E9F81A002F9D81
+:109D9000DA2A40085808C0401A9CF01F0012402CD4
+:109DA000580CCB80F01F000E2F9DD82A4008580871
+:109DB000C0401A9CF01F000B402C580CC0313FDCF7
+:109DC000CAABF01F00073FDCCA6B0000000086E84A
+:109DD00080014FD4800187188001C81080002E00B8
+:109DE00080021F10EBCD40E0208D14961695189739
+:109DF000308A300BF01F001359F6E08800052F8DD4
+:109E0000E3CF80E00A9B0C9A1A9CF01F000FFAC95E
+:109E1000FFE030080C09FACC0001F368FFE0F8C657
+:109E2000FFFF300B30AA0C9CF01F000832EB0ECC69
+:109E30000C9CF01F0007CF412F8DE3CF90E0000076
+:109E400080002DE880002DF480002D8880002D7C7E
+:109E5000D43120AD189E109514974C781292709CB6
+:109E6000E21C0002C05118960C9C2F6DD832169A35
+:109E7000FAC6FFE41C9B0C9CF01F00400C9BFAC32D
+:109E8000FFFCFACAFFDC069CF01F003D1896581C28
+:109E9000CEC15807C2F10E910E90069CF01F0039FA
+:109EA000401818945808C040069CF01F0037403CEA
+:109EB000580CC030F01F00355BB4C4D05807C170D7
+:109EC000E06B0BB8E0CCFFF4F01F00315BDCC3A00B
+:109ED000582CC07060285BF8C04060188508CC5BC7
+:109EE000029C301B3006F01F002BCBFB40988B08E8
+:109EF000CBCB3FF8310C8B08F01F0027189418903B
+:109F0000C280F8C8FFF45008109CF01F0024890795
+:109F1000640930088919089A31094A1B109CF01FFE
+:109F200000211891C2004098189B9928300CF01F0E
+:109F3000001E581CCB300C9B029C3FD6F01F001B10
+:109F4000C94B029C301BF01F001340988B08C8DBE4
+:109F50003FD6C8BB5807CFD0029C301B3FD6F01F5E
+:109F6000000DC83B400CF01F0012089C3FD6F01FAC
+:109F70000007C7BB000086E880019DE4800199408E
+:109F80008001C81080021F1080002E008001ED901B
+:109F90008001865480002E188001EDF4800199A87C
+:109FA000800185CC80018718800184B88001EDE4B0
+:109FB000EBCD40E0209D49F818991495709CE21C67
+:109FC0000002C06118960C9C2F7DE3CD80E0169AAC
+:109FD000FAC6FFE8129B0C9CF01F00170C9B1A9707
+:109FE000FACAFFE01A9CF01F00151896581CCEC143
+:109FF0001A9CF01F0013400818965808C0401A9C7D
+:10A00000F01F0010402C580CC030F01F000F5BB642
+:10A01000C0313FD6CD9B300C8B3C8B5C40880A9B7B
+:10A020008B28F01F000A581CCCF03FD6CCDB000078
+:10A03000000086E880019DE4800199408001C810FD
+:10A0400080021F1080002E0080018718EBCD40FC9D
+:10A05000189516941492129310974076310CF01FB5
+:10A060000012C1D09936990599149927189A300889
+:10A07000310948EB109CF01F000E1896C100069B9A
+:10A08000049C0C9AF01F000B1897581CC0500C9C95
+:10A09000301BF01F00090E9CE3CD80FC30070E9CA6
+:10A0A000E3CD80FC80002E18800198F0800185CCE3
+:10A0B00080019FB0800184B8EBCD406E202D40869A
+:10A0C000129310951491169A189B1A9CF01F000871
+:10A0D000069B0C99FAE200000A9ABB23029CF01F2F
+:10A0E00000052FED2FEDE3CD806E000080019DE493
+:10A0F00080019CFCEBCD4068202D129310961495A6
+:10A10000169A189B1A9CF01F0008FAE800000C9A97
+:10A11000BB29069B0A9C3009F01F00042FED2FED90
+:10A12000E3CD806880019DE480019CFCF8C90001BA
+:10A130003058F0091800E08B00054838B09C5EFFED
+:10A140003FCC5EFC000086E8D401201DFAC9FFFC6C
+:10A1500012DC1A993048300A307B483CF01F00036B
+:10A160002FFDD8028003ADB48001A0F4D401201DDE
+:10A170003018BA8C1A99300A306B484CF01F000422
+:10A18000581C5F0C2FFDD8028003ADD48001A0F4D1
+:10A19000EBCD4068201D48F61893FAC5FFFC2F064A
+:10A1A0000AFC0C9CF01F000C303CF01F000CF94323
+:10A1B00001300C9CF01F000A0A993018300A307BDD
+:10A1C000488CF01F0009581C5F0C2FFDE3CD806800
+:10A1D000000086E8800148B880015FCC800148BA61
+:10A1E0008003ADE48001A0F4EBCD4040201D48E6A3
+:10A1F000BA8C2F060C9CF01F000D303CF01F000C99
+:10A200001B88F948006C0C9CF01F000A30181A9942
+:10A21000300A309B488CF01F0009581C5F0C2FFD42
+:10A22000E3CD8040000086E8800148B880015FCC23
+:10A23000800148BA8003ADEC8001A0F4EBCD40680A
+:10A24000201D18985CB81895FAC3FFFC48D606D8AC
+:10A250002F060C9CF01F000C303CF01F000CF94541
+:10A2600000F00C9CF01F000A1A993048300A309B0D
+:10A27000488CF01F0009581C5F0C2FFDE3CD80684F
+:10A28000000086E8800148B880015FCC800148BAB0
+:10A290008003ADF88001A0F4EBCD4068201D189834
+:10A2A0005CB81895FAC3FFFC48D606D82F060C9C5C
+:10A2B000F01F000C303CF01F000CF94500EC0C9C2A
+:10A2C000F01F000A1A993048300A309B488CF01F62
+:10A2D0000009581C5F0C2FFDE3CD8068000086E864
+:10A2E000800148B880015FCC800148BA8003AE0489
+:10A2F0008001A0F4EBCD4068201D18985CB818953B
+:10A30000FAC3FFFC48D606D82F060C9CF01F000CA1
+:10A31000303CF01F000CF94500E80C9CF01F000ACF
+:10A320001A993048300A309B488CF01F0009581C9D
+:10A330005F0C2FFDE3CD8068000086E8800148B8FF
+:10A3400080015FCC800148BA8003AE108001A0F488
+:10A35000EBCD4068201D18985CB81895FAC3FFFC37
+:10A3600048D606D82F060C9CF01F000C303CF01F7E
+:10A37000000CF94500E40C9CF01F000A1A993048C3
+:10A38000300A309B488CF01F0009581C5F0C2FFDD1
+:10A39000E3CD8068000086E8800148B880015FCC8A
+:10A3A000800148BA8003AE1C8001A0F4EBCD406868
+:10A3B000201D18985CB81895FAC3FFFC48D606D83B
+:10A3C0002F060C9CF01F000C303CF01F000CF945D0
+:10A3D00000DC0C9CF01F000A1A993048300A309BB0
+:10A3E000488CF01F0009581C5F0C2FFDE3CD8068DE
+:10A3F000000086E8800148B880015FCC800148BA3F
+:10A400008003AE288001A0F4EBCD4060201D48F50C
+:10A41000BABC2F050A9CF01F000E303CF01F000D47
+:10A42000FAC6FFFC0D78F94800D80A9CF01F000A14
+:10A430000C993018300A306B488CF01F0009581CFA
+:10A440005F0C2FFDE3CD8060000086E8800148B8F6
+:10A4500080015FCC800148BA8003AE348001A0F453
+:10A46000EBCD40C0206D49EC3008F939010DF93BC6
+:10A470000108500850281AD9F93A010C1ADAFAC71B
+:10A48000FFF8F939010AF93A01090E9CF01F00158D
+:10A490002FED580CC10140085808C0401A9CF01F0D
+:10A4A0000012402C580CC040F01F0010300C2FAD93
+:10A4B000E3CD80C01A9CF01F000E40081896580883
+:10A4C000C0401A9CF01F0008402C580CC030F01FF0
+:10A4D000000758165F0C2FADE3CD80C0000086E862
+:10A4E00080014B4480021F1080002E008001C810A4
+:10A4F000D4214C07405EEF6C0108EF6B0109EF6E51
+:10A50000010D14951294109A3019F2081800C12008
+:10A51000EEF801B05808C3D05828C4C04B5CEF3BDC
+:10A5200001B53388F00B1800C5403398F00B1800C4
+:10A53000C440EF6A010CF01F0030EDDCB010F01FDA
+:10A54000002F0C0C5C5C5805C1E11895F01F002A27
+:10A550001815EF65010AF01F0029EDDCB010F01F9F
+:10A5600000260C0C5C5C5804C3F11894F01F002208
+:10A570001814EF64010B6E98EDB80001C031F01FA4
+:10A580000020DA2AEA0C1800FE98FFE23FCCD8221D
+:10A59000EF3901B53348F0091800CC11EF3901B695
+:10A5A0003418F0091800FE98FFC630E8EF68010C77
+:10A5B000CC3BEF69010CCC0BEF3901B63408F00944
+:10A5C0001800FE98FFB8301948A8F169010CCB4B70
+:10A5D000F93901B63408F0091800FE98FFA835A82B
+:10A5E000F968010CCA9BE80C1800FE9BFFD1CBFB5D
+:10A5F000000086E8800188BC8001891C8001A4607D
+:10A60000EBCD40E0303CF01F002330CB18954A26BC
+:10A61000300CF01F0022ED4C01AC1897C360303BAA
+:10A62000F01F001F8F2CECF901AC72275807C29065
+:10A630003078300BB2883068ECFA01ACB498ECF9A1
+:10A6400001ACB2ABECF801ACB0BBECF901ACB2CBF5
+:10A65000ECF801ACEB390075702AB489ECF801AC68
+:10A66000EB390074702AB499ECF801ACEAFB008471
+:10A670007029B2ABECFC01ACF01F000AE3CF90E014
+:10A68000ECCCFE54F01F00080E9CE3CD80E00000EF
+:10A6900080015FCC000086E88002244480021F54C1
+:10A6A0008001AAC080021F10EBCD40401896303CBC
+:10A6B000F01F00047848301C8D08E3CD8040000076
+:10A6C00080015FCCEBCD406048A618952F060C9C0E
+:10A6D000F01F0009303CF01F0009310AF8CBFF8C55
+:10A6E0000A9CF01F00070C9CF01F0006E3CF90604F
+:10A6F000000086E8800148B480015FCC80002DF422
+:10A70000800148B6D42149461894ECC5FFF00A9C54
+:10A71000F01F0012ECF700F85807C0C06F38707BCC
+:10A720002F4B322A089CF01F000E0A9CF01F000DD0
+:10A73000DA2A303CF01F000CC060F9380088EE08BF
+:10A740001800C060ECCCFFF0F01F0006D82AF8CB50
+:10A75000FF78CE8B000086E8800148B48002DD14CB
+:10A76000800148B680015FCCEBCD40E049061895EA
+:10A77000ECC7FFF00E9CF01F000F303CF01F000EE6
+:10A78000ECF600F85806C0C0ECCBFFE2306A0A9C39
+:10A79000F01F000A0E9CF01F000AE3CF90E00E9C11
+:10A7A000F01F00070C9CE3CD80E00000000086E86D
+:10A7B000800148B480015FCC8002DD14800148B67E
+:10A7C000EBCD4040209DE04B0020E08B001CBABB4D
+:10A7D000580BC1B13FF8BAA849162F060C9CF01FC0
+:10A7E0000011303CF01F0010322AFACBFFFEF8CCEB
+:10A7F000FF78F01F000E0C9CF01F000D2F7DE3CFA3
+:10A8000090402F7DE3CFC0403008169ABAA8189B1D
+:10A81000FACCFFFCF01F0007CE0B0000000086E81A
+:10A82000800148B880015FCC8002DD14800148BA05
+:10A8300080002DF4EBCD40E01895303CF01F000B6C
+:10A840001897C11048A62F060C9CF01F000A0A9BFF
+:10A85000306AEECCFF56F01F00080C9CF01F00077A
+:10A86000E3CF90E0E3CD80E080015FCC000086E89C
+:10A87000800148B880002DF4800148BAD401F01F4F
+:10A880000002D8028001A834EBCD40EC202D1896B0
+:10A890001697586BC0503FFC2FEDE3CD80ECFACCFF
+:10A8A000FFF8E063312EEA13322EE0623100EA1243
+:10A8B000312EB92316980C99300A308B1A9CF01F50
+:10A8C0000010301CF01F000F48F81893F0C5FFF07F
+:10A8D0000A9CF01F000E5803C0C00E9A0C9B069CE9
+:10A8E000F01F000B0A9CF01F000B2FEDE3CF90EC44
+:10A8F0000A9CF01F0008069CCD0B00008001A0F40C
+:10A9000080015FCC000086E8800148B880002DF40B
+:10A91000800148BAEBCD40E01897303CF01F00189A
+:10A92000EEC8000118955818E0880004E3CF80E0D5
+:10A9300058175F0949366D1858385F0AF5E900095C
+:10A94000C0E158275F08F5E80008C030E3CF90E089
+:10A95000F01F000DC0A18B47E3CF90E0F01F000B6C
+:10A960006D1858385F0ACEEB303CF01F0005784870
+:10A970005818CF20F01F0005CEFB000080015FCCEF
+:10A98000000086E88001B53C80017894EBCD40F86A
+:10A990001696189376085858E08A002A49A8306419
+:10A9A000F0C5FFF097040A9CF01F0018301CF01F40
+:10A9B00000181897C160202D189B089A1A9CF01F48
+:10A9C0000015F01F00152FED580CC1616C0A0E9B8D
+:10A9D000069CF01F00120A9CF01F0011E3CF90F8B4
+:10A9E0000A9CF01F000F0E9CE3CD80F830683FFCFE
+:10A9F0009708E3CD80F80A9CF01F00093FBCE3CD27
+:10AA000080F80000000086E8800148B480015FCC37
+:10AA10008002DD148001C22480002DF4800148B63C
+:10AA2000D401F01F0002DA0A80014AB6D401F01FF7
+:10AA30000002DA0A80014F90D401F01F0002DA0A06
+:10AA400080014C48D401F01F0002DA0A80014C64F6
+:10AA5000D401F01F0002DA0A80014C80D401F01FFB
+:10AA60000002DA0A80014C9CD401F01F0002DA0ACD
+:10AA700080014CB8D401F01F0002DA0A80014CD4E6
+:10AA8000D401201D1A9BF01F000CC09040085808EC
+:10AA9000C06048AA7499EDB90000C0302FFDDA0AF1
+:10AAA0001298A1C831CC9598300A149BF01F00046D
+:10AAB0002FFDDA0A800149EC000086E88001491484
+:10AAC000EBCD40C0206D4958189B709CE21C0002E1
+:10AAD000C06118970E9C2FADE3CD80C030081A9648
+:10AAE000502850081A9CF01F000EC11118974008FA
+:10AAF0005808C0401A9CF01F000B402C580CCEB0D8
+:10AB0000F01F00090E9C2FADE3CD80C01A9C3017BA
+:10AB1000F01F0006CEDB0000000086E880014F3009
+:10AB200080021F1080002E008001C810EBCD4080F5
+:10AB3000201D300A1A9BF01F0017C0F0400858086B
+:10AB4000C0F149576E99EDB9000BC071EEF801A83C
+:10AB50004917F1D8C001C1212FFDE3CF908048E70C
+:10AB60006E99EDB90000CF01A1C9300A8F9931CC9F
+:10AB7000149BF01F000A6E99CE7BEEFC01ACF01F17
+:10AB800000086E98301CABD88F982FFDE3CD8080E5
+:10AB900080015D70000086E8800149148001AAC030
+:10ABA000D401F01F0002DA0A80014C30EBCD40FCEA
+:10ABB000206D4A5318951097169266981496109C1B
+:10ABC0001294E21C0002C2D05BF5C301303CF01FBE
+:10ABD000001F300BF3D7C010F5D4C0101AD90C9851
+:10ABE0001ADAF3D2C010504B502BFAC6FFF8F93BDB
+:10ABF00000F70A9A0C9CF01F00162FED580CC1B1FB
+:10AC0000189740085808C0401A9CF01F0012402CAA
+:10AC1000580CC030F01F00100E9C2FADE3CD80FC0F
+:10AC200018970E9C2FADE3CD80FCEDB80000CCF161
+:10AC30003FB7CF3B6698A1A81A9C87983017F01FA2
+:10AC40000007CE0B000086E880015FCC80014BB886
+:10AC500080021F1080002E008001C810D40130082F
+:10AC60005C7B1099109AF01F0002D8028001ABACF7
+:10AC7000D4013008364B1099109A109CF01F000236
+:10AC8000D80200008001ABACEBCD40E020AD300637
+:10AC9000507CFB6B00201497500650261A95FACA78
+:10ACA000FFDCFACBFFE81A9CF01F0019C1111896BF
+:10ACB00040085808C0401A9CF01F0016402C580C41
+:10ACC000C030F01F00150C9C2F6DE3CD80E05807BD
+:10ACD000C09040980E9B0C9C8F28F01F0010581CB1
+:10ACE000C0611A9C3016F01F000ECE3B4008580879
+:10ACF000C0401A9CF01F0007402C580CC0313FD6B2
+:10AD0000CE3BF01F00053FD6CDFB000080014CEC90
+:10AD100080021F1080002E00800187188001C8105B
+:10AD2000D401F01F0002D8028001AC88EBCD40E0D6
+:10AD3000209D3018189A1697F00C09484A5B76093E
+:10AD4000F1E9000CC06118970E9C2F7DE3CD80E0E7
+:10AD5000F00811FF12683006507A97085006502606
+:10AD60001A95FACAFFE0FACBFFE81A9CF01F001A06
+:10AD7000C1E05807C09040880E9B0C9C8F28F01FA4
+:10AD80000017581CC1611A9C3017F01F00154008AD
+:10AD90005808C0401A9CF01F0013402C580CCD508E
+:10ADA000F01F00110E9C2F7DE3CD80E01897CF0B94
+:10ADB00040085808C0401A9CF01F000A402C580C4C
+:10ADC000C0313FD7CC2BF01F00083FD7CBEB0000A2
+:10ADD000000077F080014D4C800187188001C81079
+:10ADE00080021F1080002E00EBCD40F8216DFAC6C6
+:10ADF000FF901897FB69000EFB68000FFB6B0010BB
+:10AE0000FB6A00116CF46D036D15ECCCFFD4F01FE0
+:10AE10000038306ABA6CECCBFFDCFACCFFEDF01FE7
+:10AE200000350D88FB6800190D99ECCBFFFEFB691E
+:10AE3000001A320AFACCFFE5F01F002E4AEE300964
+:10AE40007C0B301CF809094AF5EB0008C0902FF97B
+:10AE50005899CF9130060C9C2EADE3CD80F8F7EADF
+:10AE600010089D085BF9CF705024FB630012501945
+:10AE70005807EFF91A003006FAC7FFC450F651160A
+:10AE8000FACAFFAC1A9B0E9CF01F001CC111189649
+:10AE900040F85808C0400E9CF01F0019411C580C87
+:10AEA000CDB0F01F00180C9C2EADE3CD80F85805F6
+:10AEB000C09041580A9B0C9C8B28F01F0013581C13
+:10AEC000C0610E9C3016F01F0011CE3B40F85808B0
+:10AED000C0400E9CF01F000A411C580CC0313FD6E8
+:10AEE000CBBBF01F00083FD6CB7B00008001B9CC64
+:10AEF00080002DF4000077F080014DAC80021F101F
+:10AF000080002E00800187188001C810D42120DD28
+:10AF10004B0510946A0E4126F1DEC001C0B0EDBEB3
+:10AF20000001C411EDBE0002C41130070E9C2F3D7C
+:10AF3000D82210973018FB6B002A508A5077FDE812
+:10AF4000100850998B08FB540028580CF9F71A0088
+:10AF50001A953007FACAFFD050075027FACBFFE8FE
+:10AF60001A9CF01F001DC101189740085808C040E6
+:10AF70001A9CF01F001A402C580CCD90F01F00189E
+:10AF80000E9C2F3DD8225806C09040C80C9B0E9CAA
+:10AF90008D28F01F0014581CC0C11A9C3017F01FD8
+:10AFA0000012CE4B30173028CC7B30273048CC4BAA
+:10AFB00040085808C0401A9CF01F0008402C580C4C
+:10AFC000C0313FD7CB4BF01F00063FD7CB0B000063
+:10AFD000000077EC80014E0C80021F1080002E00D4
+:10AFE000800187188001C810EBCD40E0207D30063D
+:10AFF00016975006189B50261A95FACAFFE81A9C15
+:10B00000F01F001AC111189640085808C0401A9C39
+:10B01000F01F0017402C580CC030F01F00160C9C7D
+:10B020002F9DE3CD80E05807C19040680E9B0C9C9B
+:10B030008F28F01F0011581CC11040085808C0404C
+:10B040001A9CF01F000B402C580CC0D0F01F0009B8
+:10B0500030060C9C2F9DE3CD80E01A9C3016F01F2B
+:10B060000007CD3B1896CDCB80014E6C80021F109F
+:10B0700080002E00800187188001C810D40120CDE7
+:10B08000FB5A0012FB590014FACAFFCC502874195D
+:10B090007408FB590016501874397428FB59001AAB
+:10B0A000FB580018745974485039FB58001C7479C7
+:10B0B0007468FB590020FB58001E7499748850A9CD
+:10B0C0005098300974A8FB6C0022FB5B0010FB68F1
+:10B0D000002C74BBFB6900231A9CF01F00032F4D4A
+:10B0E000D80200008001AFE8EBCD40EE20CD3FF963
+:10B0F0004CC850A950B94CC93005303C9105930556
+:10B10000F01F004A322A18961A971A9C0A9BF01FC1
+:10B110000048FAC3FFDE306AE06B00FF069CF01FB8
+:10B1200000441AD5ED38004F1AD86D281AD86D1979
+:10B130001AD9ED1800361AD8ED1900321AD96CE870
+:10B140001AD8ED19002E1AD9ED18002A1AD8ED19BF
+:10B1500000261AD9ED1800221AD86C6930BB1AD90A
+:10B16000301C6D08ED1900FEED3A001FF01F003194
+:10B17000ECFB01282F4DF6C800015818E088004567
+:10B18000ED3100F7ECCAFF8C301530061AD61AD50F
+:10B1900040D81AD8F4E80000206D069BFAE90008B0
+:10B1A0001A9CF4E20008306AFAE30010F01F002253
+:10B1B000EF380021209DFB680021EEE80000FAE94D
+:10B1C0000000EEE20008FAE30008EEE80010FAE9F9
+:10B1D0000010EEE20018FAE30018EF380020029B9E
+:10B1E000FB6800200A990C98FACCFF90303AF01FC7
+:10B1F00000130C9A2EED0C9B40ACF01F00110A9C22
+:10B200002F4DE3CD80EE1AD50A98FACCFFD05C5BC7
+:10B210000A99FE7AFF6AF01F000B2FFDCB2B00006E
+:10B22000000077F0000077EC80015FCC80002DE813
+:10B230008001B07C8002DD148001ADE88001AC8823
+:10B240008001AF0CD431202D500B18914A17760293
+:10B250006E9CE21C0002C350304C50115801E202B7
+:10B260001700F01F001DEEF700F018905807C2D02D
+:10B2700030043013C0A82FF45802C1B15801F9B3FB
+:10B2800001FF5805C1100A9760B66E05F01F001344
+:10B290000C9A189B0E9CF01F0012CEE00E9CF01F23
+:10B2A00000115805CF114008069C91042FEDD832AB
+:10B2B00040182012110C0E9B5018F01F000BCE2BC3
+:10B2C0001893069C2FEDD8320E943013CEDB00007D
+:10B2D000000086E880015FCC800148808001732CEB
+:10B2E000800176688001BD9C4828F0FC00F85EFC77
+:10B2F000000086E8486871195879F9B80001F9F832
+:10B300000A00F9B80100F9F81A005EFF000086E8AB
+:10B310004828F14C007C5EFC000086E84828F14C8F
+:10B3200001D05EFF000086E8EBCD40C01897149670
+:10B33000E04A0020E088000830083FF9B898B88952
+:10B34000E3CF80C02FECF01F00043008AE96AE882B
+:10B35000E3CF90C080002DF4EBCD40FC206D18941D
+:10B360001695F01F00431897C1A0F93900CC3FF89B
+:10B37000F0091800C3910896EF3900A83FF8F009CA
+:10B380001800C5414BB8F0F700F85807C0A1EC040D
+:10B390000104301C8B042FADE3CD80FC0896CF3B1D
+:10B3A000E06AFFFF300B1A9CF01F00336F38302A21
+:10B3B000707C1A9B2F4CF01F00311A926A0A9A93E4
+:10B3C000063AC0442FADE3CFC0FC0C9B1A9C5C7ABC
+:10B3D000F01F00296F380606707C1A9B2F4C300A2C
+:10B3E000F01F0026CD5BE06AFFFF300B1A9CF01FB8
+:10B3F0000022302AEEC2FF341A9B049CF01F00206A
+:10B400001A966A0A9A93063ACDE55C7A089B1A9CCA
+:10B41000F01F00191A9B049C300AF01F00196A08DB
+:10B42000E803000606188B08CA8BE06AFFFF300BA2
+:10B430001A9CF01F0011302AEEC7FF581A9B0E9C71
+:10B44000F01F00101A926A0A9A93063ACBC50C9B19
+:10B450005C7A1A9CF01F00081A9B0E9C300AF01FA1
+:10B4600000096A08060606188B08C8DB80017168A7
+:10B47000000086E88002132080021EAC80022218A1
+:10B48000800220C0D401F01F0002D802800176A4FF
+:10B490000050F200000FAC003008F9480320F948D2
+:10B4A00003245EFCEBCD40C016971496F8FE0320F3
+:10B4B000FCCBFFFFF60A141FE069851FEA1951EB68
+:10B4C000F6090448A5591419F8FA0324F20910647E
+:10B4D000121B143BC0B0F94B0320F80E0927FCC81F
+:10B4E000FF9CF8080926E3CF90C0E3CF80C0D401C9
+:10B4F000189EF8FC0324FCF803201838C1F0F8C8A3
+:10B50000FF9CFC0C032CFC08032930089709E06918
+:10B51000851FEA1951EBFCFB0324FC0B09282FFBC8
+:10B52000F6090448F60A141FA5591419F209106403
+:10B53000F6090109FD490324D802D80A4838F0F970
+:10B5400000F858095F1C5EFC000086E83018198C72
+:10B55000F00C18005F0A3058F00C18005F09124A0E
+:10B56000C0F13068F00C1800C0B03028F00C1800A2
+:10B57000C080584CF9BC0003F9BC01005EFC5EFFC2
+:10B58000302C5EFC48C8F0F800FC5818C0D0C063EE
+:10B590005828C0D05838C0505EFF580C5F0C5EFC75
+:10B5A000583C5F8C5EFC581C5F8C5EFC582C5F8C9A
+:10B5B0005EFC0000000086E8EBCD40C01897169EA8
+:10B5C000740A580AC0D0753A580AC0A0747A580A4A
+:10B5D000C0704FF8F0F901045889E0880004E3CF07
+:10B5E00080C04FC8F009032F94D8EDB80004CF8174
+:10B5F0003008301C9D08E3CD80C0F53900C83FF805
+:10B60000F0091800CED0F51B00D2580BCE90F51CD7
+:10B6100000D03026F4FA00D8F40C002811B9EC0957
+:10B620001800E08000BFF8C8FFFF3009F4080028C8
+:10B630000C9CF0CAFFFDC07815882FCAF8081800C6
+:10B64000E08000B02FF91639CF85CCABF53900C8B2
+:10B650003FF8F0091800CC40F51B00D2580BCC0085
+:10B66000F51C00D03016F4FA00D8F40C002811B9FB
+:10B67000EC091800E08000A4F8C8FFFF3009F408C6
+:10B6800000280C9CF0CAFFFDC07815882FCAF80866
+:10B690001800E08000952FF91639CF85CA1BF539BF
+:10B6A00000A43FF8F0091800C9B0F51B00B2580B10
+:10B6B000C970F51C00B03026F4FA00B8F40C00286C
+:10B6C00011B9EC091800C660F8C8FFFF3009F4088A
+:10B6D00000280C9CF0CAFFFDC06815882FCAF80826
+:10B6E0001800C5802FF91639CF95C7ABF53900A4DE
+:10B6F0003FF8F0091800FE90FF74F51B00B2580BDC
+:10B70000FE90FF6FF51C00B03026F4FA00B8F40C80
+:10B71000002811B9EC091800C3D0F8C8FFFF3009A0
+:10B72000F40800280C9CF0CAFFFDC06815882FCAD9
+:10B73000F8081800C2F02FF91639CF95C51BF53956
+:10B7400000A43FF8F0091800FE90FF4BF51B00B273
+:10B75000580BFE90FF46F51C00B03016F4FA00B806
+:10B76000F40C002811B9EC091800C220F8C8FFFF3A
+:10B770003009F40800280C9CF0CAFFFDC068158849
+:10B780002FCAF8081800C1402FF9123BFE99FFF9A3
+:10B79000C27B3028AE8830199D09129CE3CD80C051
+:10B7A0003028AE883029301C9D09E3CD80C0301888
+:10B7B000AE8830199D09129CE3CD80C03018AE8848
+:10B7C0003029301C9D09E3CD80C00000000086E8D0
+:10B7D0008003AE743028F00C1800C390E088001B82
+:10B7E0003048F00C1800C3503058F00C1800C2104C
+:10B7F00030093028F00B1800C160F00B1800E08B06
+:10B80000001B3018F00B1800C100300812385F5CC4
+:10B810005EFC3018F00C1800CEC130193028F00B47
+:10B820001800CEC13038C02830181039CF045EFE61
+:10B830003029CE0B3048F00B1800C0703058F00B98
+:10B840001800CE413028CF2B3048CF0B3039CD2BCC
+:10B850003049CD0BD431307977387075B889189468
+:10B86000581AC0D0C043582AC4C0D83A7738707A22
+:10B8700094D9EDB90004E0800087DA3AEB3900A4EE
+:10B880003FF8F0091800CF20EB0800B03009F208AB
+:10B890001900CF40149112923006307B3053306043
+:10B8A000C1A8E0071800C2B03028F0071800C7A0F0
+:10B8B0003048EE081800F9BC0003F9BC0100F01F85
+:10B8C000003CE9F71E002FF6EB1800B00C38FE9A8A
+:10B8D000FFD6098BEAF800B8F006002811B70E9CD5
+:10B8E000F01F0034FE9AFFF1E20718005F08E60738
+:10B8F00018005F091248E4081800CD40301CCE0B38
+:10B90000EB3900C83FF8F0091800CB00EB0800D075
+:10B910003009F2081900CB2012913006307B30122A
+:10B9200030533060C1A8E0071800C2B03028F007DB
+:10B930001800C3A03048EE081800F9BC0003F9BC99
+:10B940000100F01F001BE9F71E002FF6EB1800D0D6
+:10B950000C38FE9AFF94098BEAF800D8F00600280C
+:10B9600011B70E9CF01F0013FE9AFFF1E4071800B8
+:10B970005F08E60718005F091248E2081800CD408A
+:10B98000301CCE0B307B305CF01F000AFE9AFF7734
+:10B99000301CF01F0007FE90FF723058301CA88842
+:10B9A000D832302CC8DB302CCCDB00008001B584D1
+:10B9B0008001B7D43008484A48499508951893083B
+:10B9C0005EFC0000000088E0000080F8EBCD4080C5
+:10B9D000189E198B580BC130300A3017149CFC0A82
+:10B9E00000092FFA13982018EE080948F9E8100802
+:10B9F000F9D8B010163ACF45E3CD8080169CE3CD40
+:10BA000080807938707A3308F53900C8F009180059
+:10BA1000C0205EFDF51800D4E218000C5848C0E0C4
+:10BA2000E08A00085888C08058C8CF41310C5EFCBD
+:10BA30005808CF015EFF304C5EFC302C5EFCD70313
+:10BA4000EBCD40E030081896109A169C8D084927D7
+:10BA5000760E3015109BC0A8F80A00082FFA11C9FD
+:10BA6000EE0B0708A7D91039C0A01C3ACF652FFBF1
+:10BA700058DBE08B000E300A780ECF8B6C08EA0B97
+:10BA8000094912488D082FFB58DBFE98FFF6E3CFDB
+:10BA900090E000008003AEB8EBCD40C030069906C0
+:10BAA000149EF8C7FFFC1799EC091800C0E00C9A27
+:10BAB000F60A000811A90EC978082FF899082FFA7C
+:10BAC00017981438FE99FFF61D993008F0091800F0
+:10BAD000C0F0300BFC0B000811A9EE0B0B09780825
+:10BAE0002FF899082FFB1D981638FE99FFF5E3CF24
+:10BAF00090C0EBCD40F816941897780B680658065E
+:10BB0000E08A002CF6C8FFFCE8C5FFFCF80800033B
+:10BB1000300E2FCCEA0E070A580BE08A00130FC82C
+:10BB20001458F1D8C007C1503009C078F809070887
+:10BB30001458F1D8C007C0D02FF9123BFE99FFF876
+:10BB4000597BE08B000706CA6E0B2FFB8F0B680634
+:10BB50002FFE1C36FE99FFE0E3CF90F8EBCD40FEC0
+:10BB6000189416921497780676055805E08A0025F1
+:10BB7000ECC8FFFCF6C3FFFCF8080001300EF4CC63
+:10BB8000FFFCE60E070A6E0B580BE08A00120FC886
+:10BB90001458F1D8C007C1203009C078F809070847
+:10BBA0001458F1D8C007C0A02FF91639CF852FFE41
+:10BBB0001C35FE99FFE8E3CF90FE5976FE9BFFF916
+:10BBC00002CA68062FF689062FFE64051C35FE9909
+:10BBD000FFDACF2BD42178045804E08A0027F8C775
+:10BBE000FFFC49380F8B700C11C6580CE08A001707
+:10BBF000F0C5FFFC300EEDEB2008F1D8C007C0F017
+:10BC00000A9A3009C0782FFA15881658F1D8C0075B
+:10BC1000C0602FF9123CFE99FFF8D82A2FFE2FF7AB
+:10BC2000083EC0340F8BCE8BDA2A000000000220C1
+:10BC3000D421189776055805E08A0026F6C6FFFC41
+:10BC4000F8CEFFFC300B1694C0482FFB0A3BC1B462
+:10BC5000EC0B070AE80A1800CF946E0C580CE08A27
+:10BC600000120FC81458F1D8C007CF003009C078AF
+:10BC7000FC0907081458F1D8C007CE802FF91839ED
+:10BC8000CF85D82ADA2A3248F00C1800C110E08893
+:10BC900000113488F00C1800C0B0E0880018360895
+:10BCA000F00C1800C05036C8F00C1800C0E15EFF60
+:10BCB0003128F00C1800CFC03188F00C1800CF806C
+:10BCC00030C8F00C1800CF405EFD3308F00C1800AF
+:10BCD000CFC1CEEBEBCD40E078055805E08A0010EF
+:10BCE000F8C6FFFC3007C0380A37C0940D8C2FF718
+:10BCF0002FF6F01F0004CF90E3CF90E0E3CF80E079
+:10BD00008001BC864838F14B01DCF14C01D85EFC67
+:10BD1000000086E84838F14B01ECF14C01E85EFC8C
+:10BD2000000086E8EBCD40801697581BC050582B7A
+:10BD3000C080E3CF8080F01F00050E9CE3CD8080A3
+:10BD4000F01F0002E3CF908080002E00D401580C39
+:10BD5000C070486B760AE04A0168E0880003D80AA0
+:10BD6000F01F0003DA0A0000000088E080002DF4D4
+:10BD7000D401580CC0A078185908E08B0007780A45
+:10BD8000E04A0168E0880003D80A189B482CF01F9D
+:10BD90000003DA0A000088E080002DF4EBCD40407B
+:10BDA000350A1896F01F000330088D48E3CD804017
+:10BDB00080002DF4D401306AF01F0002D802000088
+:10BDC00080002DF4D401300CF01F0002DA0A0000CC
+:10BDD00080018754D421201D189414971296169A26
+:10BDE0001095189B1A9CF01F001CE08A0032585CCA
+:10BDF000C27058065F1858075F191268C2413008B0
+:10BE000040099338400A95584008301B9115400C62
+:10BE1000F01F0012581CC100400C78785808C090E0
+:10BE2000189B089CF01F000E581CC0A03FDCC09857
+:10BE3000301BF01F000C400C78785808CF21301CC4
+:10BE40002FFDD8224008913740099356CDEB3FECA7
+:10BE50002FFDD822800186148001847C8001871800
+:10BE6000800184B8EBCD40C018971696303CF01F87
+:10BE700000283DD83079AE88AE9935083F29300B7F
+:10BE8000AEB8AEC930283019AED8EF6B0008AEABF3
+:10BE9000AEEBAEF958065F1AF8F900BC58095F1806
+:10BEA0001468F6081800C310F8F800D05818F9B84C
+:10BEB0000008EFF80E08F8F800CC5818EFF808085A
+:10BEC000F9B90004F1D9E038EFF80E08F8F800C825
+:10BED0005818EFF80808F9B90002F1D9E038EFF87E
+:10BEE0000E08F8F800C45818EFF80808F9B900016E
+:10BEF000F1D9E038EFF80E08F8F900D4EF3800086F
+:10BF0000F1E91048EF680008E3CD80C080015FCC04
+:10BF1000EBCD40401896303C5C76F01F000E587612
+:10BF2000E0880004E3CF804048B8F006032FF90C06
+:10BF300000C6E3CD8040F90C00CAE3CD8040F90C87
+:10BF400000CEE3CD8040F90C00D2E3CD804000006C
+:10BF500080015FCC8003AE98D40130DCF01F00027A
+:10BF6000784CD80280015FCCEBCD40FC207D31CAFB
+:10BF70001893300B1A9C1A92F01F00126604580492
+:10BF8000E08A0018E6C6FFFC30070D852FF72FF674
+:10BF90000A9CF01F000DC0A14008FACAFFE4F0C9D6
+:10BFA000FFFF100A5009F565FFE80E34FE99FFEF18
+:10BFB0001A9B069C31CAF01F00052F9DE3CD80FC23
+:10BFC00080002DE88001BC8680002DF4EBCD40E0A0
+:10BFD000207D300B189731CA1A9CF01F00171A9554
+:10BFE0006E0B580BE08A0024300AFAC6FFFCEEC93B
+:10BFF000FFFC0C9C149EC0582FF9143BE08A000DE6
+:10C000002FFA1388FC081800CF8418C82FF96E0B7C
+:10C01000143BFE99FFF7F80601061A9B50060E9C8A
+:10C0200031CAF01F00062F9DE3CD80E0FAC6FFFC69
+:10C030000C9CCF2B80002DE880002DF4D42112968B
+:10C04000189716951494580CC1205809C111314CF9
+:10C05000F01F0009C0C09907B8C599249936487ADD
+:10C0600074199949930CF8C8FFF49518D822F01F59
+:10C070000004D82280002E18000077F4800160F8B8
+:10C08000EBCD40C01896580CC110308CF01F000C3E
+:10C090001897C0900C9CF01F000B8F1C1898C0A024
+:10C0A00030188F080E9CE3CD80C018970E9CE3CD0E
+:10C0B00080C00E9C1097F01F0004CF5B80002E18EC
+:10C0C0008002248880002E00EBCD40C049566C07CA
+:10C0D0005807C1806E395809EFF80004EDF80A01DD
+:10C0E000EFF81004F3F81A046E4891096E2A0FCB8A
+:10C0F0006E0CF01F000D0E9CF01F000C6C07580713
+:10C10000CEA148B8F0C7FFEC0E9CF01F000AC0712A
+:10C11000302CF01F00090E9CF01F0008E3CD80C0FA
+:10C12000000077F4800160F880002E00000086E8AF
+:10C1300080014898800160A4800148A8D401484843
+:10C14000300991189109F01F0003D802000077F41C
+:10C150008001C0C8EBCD40FE4A0618976C081695C2
+:10C1600014942018E0480167E0880004E3CFC0FE83
+:10C17000580A5F196C1A300B580A5F181268F608D3
+:10C180001800CF50183A5FB858FC5F891268F6085B
+:10C190001800CED016910C92C0B82FF7641958F73A
+:10C1A0005F8A0E395FB81468E2081800CE00EE030B
+:10C1B0001016306AE6CCFFF80A9BEC0C000CF01F5E
+:10C1C0000008CEC1485B089C060B310A2F2BF01FDC
+:10C1D00000050E9CE3CD80FE000088E080002D94D9
+:10C1E00080002DF4EBCD40E018951697300C189692
+:10C1F0000E9A0A9B2F07F01F0005C0452FF62FFC53
+:10C20000CF8B0C9CE3CD80E08001C154D401306A17
+:10C21000FACCFFFCFACBFFF4F01F00025F0CD8024F
+:10C2200080002D94EBCD4068205D3FF8FACAFFDC1A
+:10C2300015D9FB680013FB68000EFB68000FFB6854
+:10C240000010FB680011FB680012FAC6FFF8ACD9B9
+:10C2500074088D0815C9FAC3FFFEACC93065FACB66
+:10C26000FFF20A9A069CF01F00060A9A069B0C9C95
+:10C27000F01F00045F0C2FBDE3CD80688002DD1449
+:10C2800080002D94D401FACBFFFCF73900241788E5
+:10C29000F0091800C020D80AF73A00251798F408CA
+:10C2A0001800CFA1F6CCFFFE2DABF01F00035F0CF2
+:10C2B000D802000080002D94EBCD4040211D303C81
+:10C2C000F01F001E322A1896FACBFFB4FA0A000CAF
+:10C2D000F01F001BECC6FF78ECE80000FAE9000054
+:10C2E000ECEA0008FAEB0008ECE80010FAE90010AC
+:10C2F000ECEA0018FAEB0018ED380020FB6800208B
+:10C30000ED390021FB690021FB3A00221B88F4086B
+:10C310001800C050300C2EFDE3CD80401B9AFB3836
+:10C320000023F4081800CF71FACBFFFEFACCFFDC33
+:10C33000F01F00045F0CCF0B80015FCC8002DD1486
+:10C3400080002D94EBCD40E0203D4B571896EF39FF
+:10C3500000943FF8F0091800C3507938707C2F4CD6
+:10C36000F8E80000209DFAE90000F8EA0008FAEB7E
+:10C370000008F8E80010FAE90010F8EA0018FAEBF3
+:10C380000018F9380020FB680020F9390021FB690A
+:10C390000021F01F00242F7D580CC0412FDDE3CD7C
+:10C3A00080E0202DEEC7FF4A306A0E9B1A9CF01FDA
+:10C3B000001EF01F001E2FED580CC1C02FDDE3CF73
+:10C3C00090E0F8CBFFE2306A1A9CF01F0017EECB2A
+:10C3D000FF4AFAC6FFFA306A0C9CF01F00130C9B50
+:10C3E0001A9C306A1A95F01F00125F0C2FDDE3CD06
+:10C3F00080E0ECCBFFE2FAC5FFFA306A0A9CF01F3E
+:10C40000000A0E9B306A1A9CF01F00071A9B0A9CB8
+:10C41000306A1A96F01F00065F0CCC1B000002ACBD
+:10C420008001C2B88002DD148001C22480002D94F6
+:10C43000D401201D500C580CC0401A9CF01F000263
+:10C440002FFDD80280021F10D401201D500C580C63
+:10C45000C0401A9CF01F00022FFDD80280021F105E
+:10C46000EBCD40C0E06B00E41896300CF01F000AE2
+:10C470001897C0E0E06A00E40C9BF01F0008ECC9CC
+:10C48000FFF8EECAFFF8486B0E9CF01F00060E9CEA
+:10C49000E3CD80C08002244480002DF480021F542C
+:10C4A0008001F810EBCD40C0E06B00EC1896300C2A
+:10C4B000F01F000A1897C0E0E06A00EC0C9BF01F28
+:10C4C0000008ECC9FFF0EECAFFF0486B0E9CF01FAD
+:10C4D00000060E9CE3CD80C08002244480002DF431
+:10C4E00080021F548001F810EBCD40FE1292109193
+:10C4F0004A88F0F900F818933DD8733C31691697D3
+:10C500007874AE88AE9930083509AEA8AEB93F2828
+:10C510003019301614954A0B303AAEC8AED9AE3643
+:10C52000EECCFFF8F01F001D069CEF65000BAE7609
+:10C53000AE66308BF01F001A8F5CC290303A496BA8
+:10C54000F01F00166E58B0B28EE86E5C303AF808F4
+:10C55000002C491BF01F00116E598EE8F2080028CC
+:10C56000B0B1E91900B0E91800B21208E93900A524
+:10C57000A3682F081039C030E3CF90FE0F98300920
+:10C580002FE8EF590010AE98E3CF90FEE3CD80FE88
+:10C59000000086E88001B49080002DF480021F54D2
+:10C5A000D431201D314E1697330BAE9EAE8B1090BA
+:10C5B000FACBFFD87618500818921493129176058A
+:10C5C0005805E08A0006EA0815042EA8AE98301631
+:10C5D000303AAE1649E4EECCFFFCE8CBFFFCF01F8E
+:10C5E000001D049CAEF3AE56AE46AE75EA0B1504C4
+:10C5F0002F8BF01F00198F4CC280303AE8CBFFFC24
+:10C60000F01F00146E48B0B18EC86E4CE8CBFFFC32
+:10C61000F808002C303AF01F000F6E498EC8F2085F
+:10C620000028B0B03289AE695805E08A000D6E4826
+:10C630008EC98EDCEA0A1504120C400BF00C002C9B
+:10C64000F01F00042FFDDA3A2FFDD8328001B4909C
+:10C6500080002DF480021F54EBCD40E0201D500BD4
+:10C660001897580CC070169A4C4C0E9BF01F004443
+:10C67000C6404C4630080DA9F0091800C050301CC7
+:10C680002FFDE3CD80E0ECCCFFE4F01F003FCF8135
+:10C690005807C2F0301CF01F003DC3304B751A9B89
+:10C6A0004B6CF01F003B1897C320F01F003A301866
+:10C6B000ED4C00CCACA80E9C3005400BED5500D0E5
+:10C6C0004B07F01F00351896581CC3F1EECCFFE461
+:10C6D000F01F00324B28F1090142EA091900CD0090
+:10C6E0006E98EDB8000ECCC0F01F002E0C9CCC9BB9
+:10C6F0004A25EAF90320EAF803241039CCC1CD0B0E
+:10C70000ECCCFFE4F01F0025301CCBBBECF801247F
+:10C710005818C040301CF01F0024ECCCFFE4F01F80
+:10C72000001FEAF90324EAF803201238CA90301CEB
+:10C73000F01F0016301CCA5B492AF50B00D2F80B1B
+:10C740001900C0A03FBCC9DBEECCFFE4AEA5F01FD2
+:10C7500000133FBCC96B3018F55800D24909F308E3
+:10C760000142F6081900CEF07498EDB8000ECEB074
+:10C77000F01F000C3FBCC85B000083C08001B4A464
+:10C78000000086E880014898800144408001B4EEB2
+:10C790008001488080014920800148A8000002AC47
+:10C7A0008001901480014638EBCD40C01897F01FEF
+:10C7B0000015C1B06E4849468D186E598D29300953
+:10C7C0006E2C8F296E486E3BE2180080F9B800018C
+:10C7D000EDF80E02F01F000D1897581CC0803008AD
+:10C7E000300CACA8E3CD80C0E3CF90C0F01F0008B0
+:10C7F0003008ED4C00CCED5800D00E9CE3CD80C04D
+:10C8000080021208000086E88001492080014880EB
+:10C81000EBCD4080491A18977498EDB80001C1110A
+:10C82000F4F801245818C0A078489518785995292B
+:10C83000F01F000BC091E3CD8080109CE3CD808081
+:10C840003FBCE3CD808030086E2C6E3B8F28F01FFC
+:10C850000005E3CD80800000000086E88002120819
+:10C860008001C658EBCD40F8FACD008032251493F4
+:10C8700018941297BA85FAC6FFFF0C9CF01F001B94
+:10C88000300806063019AC85AC981A951A9A498B6F
+:10C89000089CF01F0018C0503FFC2E0DE3CD80F81F
+:10C8A0000E9CF01F0015E04C0040C1701AD7493AA9
+:10C8B000E06B00800A9CF01F00120A9A3019491B95
+:10C8C000089CF01F000C2FFD1897580CCE61089C97
+:10C8D000F01F000D0E9CCE2B0E9A089C3019489B21
+:10C8E000F01F0004CDB0CD9B80002DF48003AEC8B6
+:10C8F00080022B3C80002DD08003702080002D60B2
+:10C900008003AED0800232ACD421210D300B4B66B7
+:10C91000169CF01F00368D0CC2B078075807C2A0D5
+:10C920006F985808C2704B283014EF4400641A9571
+:10C93000340B1AD84AFA0A9CF01F002F08990A9A59
+:10C940004AEB0E9CF01F002E2FFD580CC2506C08B5
+:10C95000700CF01F002C6C09300893086C087009EB
+:10C960004A98722A910A6C09300893486C0C2F0D72
+:10C97000D822F01F00261897CF70F01F00254A58C4
+:10C980004A59118A4A5B0E9CF01F0025C2056E2988
+:10C9900049D89109CE9B08994A2A4A3B0E9CF01F20
+:10C9A0000018C1C14A18340B1AD8492A0A9CF01F32
+:10C9B000001208990A9A49EB0E9CF01F00112FFDF6
+:10C9C000580CC0C13088EF480054CC9B0E9CF01F1F
+:10C9D000000D6C0930089308CC7B0E9CF01F0009F9
+:10C9E000CB7B000000008A4880022AD08003AED4AE
+:10C9F0008003702080002D608003AEC880022B3C35
+:10CA0000800231140000023C80023EC480022AA64B
+:10CA10000000024000000268000002448001C86477
+:10CA20008003AEDC8003AEE08003AEE48003AF049D
+:10CA3000D421169849871495189B109A49740E9C16
+:10CA4000A888F01F00170A9B30064965EF66002092
+:10CA5000341A0A9CF01F001449484959EB660040FB
+:10CA6000700B720CF01F00131896C0C0F01F00125C
+:10CA70000A99098A0E9B0C9CF01F00106D1858082B
+:10CA8000C021D822ECCAFFDC0A9C3209341BF01FFB
+:10CA9000000CD822000002440000024080002DF467
+:10CAA0000000026880002DC40000023C00008A489B
+:10CAB00080022A8A80022AA68001C864800229ECAA
+:10CAC000D421210D328A300B1A9CF01F00301A9CA1
+:10CAD00030073014504750544AD5F01F002E8B0CAD
+:10CAE0001A96C4A0FAC6FFD8318A0E9B0C9CF01F80
+:10CAF00000274A984A990C9B50E850A96A0CF01FED
+:10CB000000281896C3B04A7CF01F00274A761AD72F
+:10CB1000304B1AD70E984A694A6AEC0B000CF01F8A
+:10CB200000260E981AD74A591AD74A5A302B0C9C0D
+:10CB3000F01F00210E981AD74A291AD74A2A311B0A
+:10CB4000ECCCFFF8F01F001C0E981AD749F91AD741
+:10CB500049FA312BECCCFFF4F01F00170E982F8D03
+:10CB6000ECCCFFF01AD749B91AD749BA315BF01F9C
+:10CB70000012089C2FED2F0DD8226A0CF01F001711
+:10CB80000C9C8B06CF9B000080002DE8000077FCFA
+:10CB90008001E10C8003AF108003AF188001E1C475
+:10CBA0008001CCBC8001B31C000078008001CC3037
+:10CBB0008003AF20800193088001CD008003AD2465
+:10CBC0008001CC848003AF3C8001CC4C8003AF5803
+:10CBD0008001CBDC8003AF708001E0B8EBCD40C0BA
+:10CBE00021AD189798E8EDB80000C181368A300B66
+:10CBF0001A9CF01F000C306A0E9B1A9CF01F000A52
+:10CC00006E2830195C3850395028488870091A96B7
+:10CC10001A9A720C306BF01F00062E6DE3CD80C0A7
+:10CC200080002DE880002DF4000077FC800268B0C1
+:10CC3000D40148587009300A720C301BF01F0003F1
+:10CC4000D8020000000077FC800268B0EBCD4040C5
+:10CC500021AD368A300B1A9CF01F00083008488935
+:10CC6000500872081A961A9A700C302BF01F0005A3
+:10CC70002E6DE3CD8040000080002DE8000077FCA1
+:10CC8000800268B0EBCD404021AD368A300B1A9C53
+:10CC9000F01F000830184889500872081A961A9A2E
+:10CCA000700C302BF01F00052E6DE3CD804000008E
+:10CCB00080002DE8000077FC800268B0D40148783D
+:10CCC000700EF6C9000E189AF8CBFFFA2F2A7C0CCA
+:10CCD000F01F0003DA0A0000000077FC8001DAA0F0
+:10CCE000D401580CC051304CF01F0004D802304C15
+:10CCF000F01F0003D8020000800146388001444044
+:10CD0000EBCD40E0FACD0170FACCFE98F01F00198F
+:10CD1000581CC22145A85818E088001FE06801008F
+:10CD2000FACBFE901A9C16D8F01F00131A9518968D
+:10CD3000FAC7FF00368A300B0E9CF01F0010581601
+:10CD4000C11048F870090E9A720C300BF01F000DDC
+:10CD50002A4DE3CD80E0300CF01F000B2A4DE3CDCF
+:10CD600080E045B85808FE9AFFEE540D5418CEAB3B
+:10CD700080017A1C8001B35880002DE8000077FC08
+:10CD8000800268B08001CCE00000000000000000DC
+:10CD9000EBCD40C0F8F800D418971696F0F800884C
+:10CDA000F8FA00E85808C040F8FC00C45D1858764E
+:10CDB000C1A058065F0858365F091248C1103018E4
+:10CDC000EF4800ECEEF900D473985808C050300BCF
+:10CDD000EEFC00C45D18EF4600E8E3CD80C0584685
+:10CDE000CEF0CFABEEF800EC5808CF603008301B27
+:10CDF000EF4800ECEF4B00F0EEF800D471985808C3
+:10CE0000CE81CEABD401F01F0002D8028001CD90BC
+:10CE1000F8FC00E85EFCD401F8F800D471A85808CA
+:10CE2000C050F8FC00C45D18D802109CD802D40190
+:10CE3000F8F800D471185808C050F8FC00C45D1808
+:10CE4000D802DC0AD401F8F800D471285808C05080
+:10CE5000F8FC00C45D18D802DC0AD703EBCD408093
+:10CE60003008F8F90108F94801085809C031C088AC
+:10CE70000E997207129CF01F00045807CFA1E3CD52
+:10CE80008080000080002E00D401F8FC00DCF01F40
+:10CE90000002D8028002A428D401F8FC0090F01F00
+:10CEA0000002D80280022B10D401F8FC0090F01F81
+:10CEB0000002D80280022C08EBCD40C01696F8F78D
+:10CEC00001085807C051C0B86E075807C080EECCA3
+:10CED000FFFC306A0C9BF01F0004CF710E9CE3CD69
+:10CEE00080C0000080002D94D4011699F8F8011834
+:10CEF0005808C0A1F8F800D470285808C0C0F8FC41
+:10CF000000C45D18D802F8CBFF64306A129CF01F91
+:10CF10000003D80ADC0A000080002DF4EBCD40F8B5
+:10CF200020AD1897F8F801185808C06030070E9C1B
+:10CF30002F6DE3CD80F8F8F800D470385808CF7022
+:10CF4000F8FC00C41A9B1A935D181895CF05EEF8EB
+:10CF500001185808C431EEF800D470285808CE7073
+:10CF6000FAC4FFE0EEFC00C4089B5D18CE05EEFCA1
+:10CF7000009078465806C301EEF800D45808C2C0A5
+:10CF8000700C49BBF01F001BEFFC0024F9B6000138
+:10CF9000EFFC102478075807C111CCAB5806C0B07D
+:10CFA0006E885808CC50EECBFFE8306A089CF01F22
+:10CFB0000012CBE06E075807CBB0EEF8019458088A
+:10CFC000CFA16E581035CEB16E4B0A9A1A9CF01F45
+:10CFD000000ACE70CE4B3006CDEBFAC4FFE0306ACB
+:10CFE000EECBFF64089CF01F0005CC2B8003B0281B
+:10CFF00080002DB880002D9480002DF4D401F01F06
+:10D000000002D8028001CF1CD42120AD3008FB588B
+:10D010000024508816961897F6F801845818C040D6
+:10D020003FFC2F6DD82277185808CFB0F8F500B81C
+:10D030005885C2205905CF512DCB0A9A1A9CF01F52
+:10D0400000171A940A9A303BEEFE00D47C58580818
+:10D05000CE801ADA1AD43009EF490104EEFC00C47C
+:10D0600030681AD8FACAFFD430181ADA48CA7C567F
+:10D070005D162FCDCD7B2DCB318A1A9CF01F00077A
+:10D080000A9AECCBFFCCFACCFFE8F01F00041A940C
+:10D09000320A302BCDAB000080002DF480036F2CC2
+:10D0A000D42118951696F01F000F1897C0507838A5
+:10D0B0002FF89938D82A310CF01F000B1894C0F0C3
+:10D0C0000C9B306A2FCCF01F000930188938EAF920
+:10D0D00001088909EB4401080E9CD822DC2A0000D3
+:10D0E0008001CEB880027EA880002DF4EBCD40FCFC
+:10D0F000EDD9C010407218941693ECCCFFFC149537
+:10D10000910CF01F00161897C190E8F80090703944
+:10D11000EC081608B893B889B8B6B8A85805C10085
+:10D120000C9A0A9BF8C6FFFC0C9CF01F000D0E9C8D
+:10D130005802E5F61A00E3CD80FCE3CD80FC0C9AA2
+:10D140000A9BF8C6FFFC0C9CF01F00060E9C5802C0
+:10D15000E5F61A00E3CD80FC80002E1880002DF447
+:10D1600080002DE8D401401E5C791ADEF01F000219
+:10D170002FFDD8028001D0ECEBCD40F8203DF8F82F
+:10D1800000BC1493129458485F0A58285F091897F6
+:10D1900016961449C0603FF70E9C2FDDE3CD80F852
+:10D1A000F8FC00DCF01F002BC0305816CF50EEC545
+:10D1B000FF64306A4A8B0A9CF01F0028C0D1EEF849
+:10D1C00000D470285808C060EEFC00C41A9B5D189B
+:10D1D000C370EEC5FF043008F7D6C0081AD8F3D4E0
+:10D1E000C010FAC8FFF4069A0E9CF01F001D2FFD18
+:10D1F0001896580CCD1040296E2C580CC10012986E
+:10D200000A9B0C99E06A888EF01F001618970C9CF8
+:10D21000F01F00150E9C2FDDE3CD80F8EEF800D452
+:10D2200071845804C0B01298EEFC00C40A9B0C999B
+:10D23000E06A888E5D141897CEBB3FF7CE9B306AAC
+:10D24000485B1A9CF01F0005CC501A95CC5B00007F
+:10D2500080027EFC8001CD8880002D948001D0EC7E
+:10D26000800270D880002E00EBCD40C0189EEFDA0F
+:10D27000C010782C580CC0600E9AF01F0009E3CD46
+:10D2800080C0FCFA00D475865806C0700E9AFCFC6B
+:10D2900000C45D16E3CD80C0E3CFC0C0800270D86B
+:10D2A000D421497A1894301BF01F0016300A089BCD
+:10D2B000495CE8C5FF64F01F0015E8F7010858074E
+:10D2C000C1C03006C0680E966E0C580CC16018972D
+:10D2D000306A0A9BEECCFFFCF01F000DCF515806C0
+:10D2E000EFF80000E9F80A42EFF81000EDF81A0034
+:10D2F0000E9CF01F0008D822D82200008003B03016
+:10D300008002299E8001E6188002638480002D94AB
+:10D3100080002E00D401F01F0002D8028001D2A0AC
+:10D32000EBCD408048FA1897301BF01F000FEEF845
+:10D3300000BC5818C0F00E9B300A48CCF01F000CFF
+:10D340000E9CF01F000C0E9C307BF01F000BE3CDF9
+:10D3500080800E9C305BF01F0008E3CD80800000D1
+:10D360008003B0548002299E8001EBC08002638458
+:10D370008001D2A08001CD90EBCD4040486A189644
+:10D38000301BF01F00060C9B300A485CF01F0005A4
+:10D39000E3CD80408003B0748002299E8001EBC001
+:10D3A00080026384EBCD40F81894F8FC00CC580C54
+:10D3B000C360E8F800D05808E08A00321897E8C344
+:10D3C000FF643005C0A8580AC200EEC7FF64E8F841
+:10D3D00000D00A38E08A00242FF5E8F600B0306A61
+:10D3E000069B0E9CF01F0015CF115806C0E06C5A2A
+:10D3F0006EA81438CE91EECCFFFA6C4BF01F000FE4
+:10D40000C0406C5A580ACE215807C0906F5AEECBD4
+:10D41000FFD4E8FC00DCF01F000AC0403FFCE3CD75
+:10D4200080F8EECBFFA8E8FC00DCEEFA0080F01FED
+:10D430000005CF60CF4B000080002D948002A51026
+:10D440008002A4B0D4211895E06C009CF01F001B52
+:10D450001897C310EAF401185804C2A1EAF800D4DE
+:10D4600070C85808C250189B301AEAFC00C45D18F6
+:10D470001898C1E50E9C3016E06B009CF0060D4636
+:10D48000EC0B024BF01F000E58065F09580C5F189A
+:10D490001248E8081800F8071710EAFC00CCF01F43
+:10D4A0000009089CEB4600D0EB4700CCD8220E9C2C
+:10D4B000F01F0004DC2A000080002E1880002E0CD3
+:10D4C00080002E00EBCD40801897F01F0008C0317F
+:10D4D000E3CD80800E9CF01F0006C0550E9CF01F0F
+:10D4E0000003CF7BE3CFC0808001D3A48001D4446C
+:10D4F000EBCD40FE208D1896169714951292109140
+:10D50000580BC580F6FB0080580BC0E16F5B580BD1
+:10D51000C3210C9CFEFA02E4303BF01F00B93FFC33
+:10D520002F8DE3CD80FE7568EDB80001CF011A9A0A
+:10D53000EECCFFA8F01F00B3CEA16B4840291268C3
+:10D54000CE606B3840191268CE206B584039126893
+:10D55000CDE0FEFA02B2301B0C9CF01F00A9EEC415
+:10D56000FFD4302A303BECFC00DCF01F00A8089C04
+:10D570006F5AC4386B68EDB80000CCC1EEC4FFD45C
+:10D580001A9A089CF01F009FCC516B4840291268E2
+:10D59000CC106B3840191268CBD06B5840391268E8
+:10D5A000CB90FEFA026A301B0C9CF01F0095301ADB
+:10D5B000CDAB7568E21800021A93F9B40102F9B410
+:10D5C0000001F8FC00DC1A9BF01F0092C1F05BEC3C
+:10D5D000C4001A9C320A300BF01F008F6B48502891
+:10D5E0006B3950196B585038089A303BECFC00DC12
+:10D5F000F01F0086300C189A189BECFC00DCF01F22
+:10D600000087C3602F8DE3CFC0FE402A6B49F3EA49
+:10D610000008C0D0401A6B39F3EA0008C110403A44
+:10D620006B59F3EA0008C1B04004CDFB1AD9302B86
+:10D630001ADA0C9C4FAAF01F00722FEDCCBB1AD93E
+:10D64000302B1ADA0C9C4F7AF01F006D2FEDCC2B8B
+:10D650004F5A302B0C9CF01F006ACBCB1AD9302BC1
+:10D660001ADA0C9C4F1AF01F00662FEDCB3B5807BF
+:10D67000EE0B1700F60A1700F9B80158EFD8E10BC6
+:10D68000EFFA1020ECFC00DCF01F0069CBC16B4806
+:10D690004029F1E90009EDB90004C5D0EDB9000356
+:10D6A000C750EDB90002E081009430484E1AED48B1
+:10D6B00000B8301B0C9CF01F00526B384019F1E988
+:10D6C0000009EDB90004C500EDB90003C751308869
+:10D6D0004D9AED4800B4301B0C9CF01F00496B586C
+:10D6E0004039F1E90009EDB90000E080007FEDB9B3
+:10D6F0000001C55130284D1AED4800BC301B0C9C70
+:10D70000F01F003FECFA00BC306BECFC00DCF01FBB
+:10D71000003FECFA00B4304BECFC00DCF01F003BA7
+:10D72000ECFA00B8305BECFC00DCF01F0038029A29
+:10D73000049BECFC00DCF01F00421894FE91FF6497
+:10D740006B57E2170002C191ECFC00DCF01F003DBA
+:10D750000E9CCE7A31084BCAED4800B8301B0C9CA9
+:10D76000F01F0027CABB31084B8AED4800B4301BBC
+:10D770000C9CF01F0023CB4BECFC00DCEACBFFDC65
+:10D78000320AF01F0033089CCCCA30884B1AED488F
+:10D7900000B8301B0C9CF01F001AC90BEDB9000437
+:10D7A000FE91FF3231084ACAED4800BC301B0C9C88
+:10D7B000F01F0013CA8BEDB90000FE91FF25301B4E
+:10D7C0004A6AED4B00B40C9CF01F000DC89BEDB9EC
+:10D7D0000001FE91FF1930284A1AED4800B8301BAD
+:10D7E0000C9CF01F0007C6AB301B49EAED4B00BC98
+:10D7F0000C9CF01F0003C87B8003B2B88002299EF6
+:10D800008002ACEC8003B08C8002A4588003B0ACE2
+:10D810008002AFD080002DE88002A5108003B10007
+:10D820008003B1448003B0CC8003B1888002A4B0EF
+:10D830008003B1F48003B2388003B27C8002A5D0AB
+:10D840008002A9708003B1CC8003B2248002A8A01A
+:10D850008003B1E08003B2988003B24C8003B20C25
+:10D860008003B260EBCD40C07758EDB80003F9B843
+:10D870000008F9F80A2FF9B80104F9F81A2F1897D7
+:10D88000300A1696F8FC00DC149BF01F0025300AC5
+:10D89000EEFC00DC149BF01F0023300AEEFC00DCE1
+:10D8A000149BF01F002130183009ECCBFECCEF4860
+:10D8B00000B8EF4800B4EF4900C02FF97608585877
+:10D8C000E08B00225808C2512FCB5849CF71EEFA95
+:10D8D00000BC306BEEFC00DCF01F0014EEFA00B46C
+:10D8E000304BEEFC00DCF01F0011EEFA00B8305BAC
+:10D8F000EEFC00DCF01F000DEEFC00DCF01F000C65
+:10D90000E3CD80C03048EF4800B8EF4800B4CE0BFC
+:10D910003028EF4800B8EF4800B4CDAB8002A51026
+:10D920008002A4B08002A5708002A45880027F0407
+:10D93000EBCD40E0205D1897F8F600B0F8F800BC99
+:10D940005828C57059085F0958485F081248C290A6
+:10D95000302BEEFC00E0F01F002F314A300B1A9CF8
+:10D96000F01F002D1A95EEFA00BC588AC200EEF89E
+:10D9700000905808C03070785028149958895F1862
+:10D9800058195F191069ECF8017CEEFC00E01A9A56
+:10D990000C9B50495038F01F00212FBDE3CD80E093
+:10D9A000300BEEFC00E0F01F001BCD8B3008501850
+:10D9B000301B500BECF900F0F3EB0008FBFB1A01F5
+:10D9C000EDB90001C120EEF800905808C1F0EEFC5E
+:10D9D00000D4580CCD10780C491BF01F0012FBFC32
+:10D9E0000A01EEFA00BCCC4B4018A1B85018CECBBF
+:10D9F000300BF8FC00E0F01F000C300BEEFC00E0F8
+:10DA0000F01F000AEEF800BCC9EB3089CB8B000098
+:10DA1000800250FC80002DE8800247A08003B028DF
+:10DA200080002DB88002512880025110EBCD40E0DB
+:10DA3000189716951496F8F800905808C0D07048BA
+:10DA40005808C0A1F8FC00D4580CC060780C48EB12
+:10DA5000F01F000EC1501AD648DA1AD5301B0E9CA2
+:10DA6000F01F000C300A0E9B48BCF01F000C0E99F2
+:10DA70000C9B0A9C3008488AF01F00092FEDE3CD6B
+:10DA800080E000008003B02880002DB88003B32C14
+:10DA90008002299E8001E61880026384800263F878
+:10DAA000D4211295169614941897F8F900BC584989
+:10DAB000C1C0F8FA00F4580AC10158895F08581922
+:10DAC0005F0B104BF40B1800F9BB000AF9BB0146C1
+:10DAD000F01F0019EEFA00F4F4C8FFFFEF4800F45D
+:10DAE000EEF900945809C020D822306A0C9BEECC85
+:10DAF000FF04F01F0012EEF800BC5828C111EEF828
+:10DB000000D471585808C040EEFC00C45D180A9952
+:10DB1000089A0C9BEEFC00DCF01F0009D8220A9941
+:10DB2000089A0C9BEEFC00E0F01F0006FE99FFDE59
+:10DB3000CE7B00008001DA2C80002DF48002B350EF
+:10DB400080025180EBCD406C1ADA18951ADB1692E0
+:10DB50001493301B48AAF01F000B48B6300A0A9BEA
+:10DB60000C9CF01F000A0A990C9A069B049C300832
+:10DB7000F01F00072FEDE3CD806C00008003B35C45
+:10DB80008002299E8001EBC080026384800263F8DA
+:10DB9000D401F01F0002D8028001DB44EBCD40C06D
+:10DBA000189E1497109CFCF800BC5888C240580B73
+:10DBB000C1A0FCCAFF64FCF600D46C585808C190A0
+:10DBC0001ADC16981AD9300BFCFC00C41ADBFD4B8A
+:10DBD0000104490E0E991ADE301B6C565D162FCDCE
+:10DBE000E3CD80C0FCF600D448BA6C585808CE91FA
+:10DBF000E3CFC0C0585CF9B80002F9B80104580B73
+:10DC0000C040FD4800B4CD6BFD4800B8482ACD4B5C
+:10DC100080038BD480036F2CEBCD40F8FACEFFE865
+:10DC200018967C35F8F400D47C037C17685C7C2E55
+:10DC3000580CC0F01AD51ADE300E1AD71AD3ED4E92
+:10DC40000104ECFC00C468565D162FCDE3CD80F8CE
+:10DC5000E3CFC0F8D42118951694F8F701045807BB
+:10DC6000C020D822F8F900D472585808C4C01AD776
+:10DC7000F94701041AD70E981AD74B6A1AD70E9B88
+:10DC80007256F8FC00C40E995D16EAF900D42FCD47
+:10DC900072585808C3801AD7EB4701041AD70E9858
+:10DCA0001AD74ACA1AD70E9B7256EAFC00C430191A
+:10DCB0005D16EAF900D42FCD72585808C2401AD721
+:10DCC000EB4701041AD70E981AD74A2A1AD70E9B87
+:10DCD0007256EAFC00C430295D16EAF900D42FCD53
+:10DCE00072585808C1001AD7EB4701041AD70E988A
+:10DCF0001AD7498A1AD70E9B7256EAFC00C43039EB
+:10DD00005D162FCD5804C200EAFA00D474585808A2
+:10DD1000C12030091AD91AD9EB4901041AD912982D
+:10DD20001AD9129B7456EAFC00C4089A5D16EAFAE6
+:10DD300000D42FCD75A85808C070089B3019300A40
+:10DD4000EAFC00C45D183018EB480104D82200003A
+:10DD500080036F2CD421204DF8F900D41897169524
+:10DD600073885808C2C11094F8C6FFEAC1C8EEFC17
+:10DD700000C45D1B1AD4189B0E984C19E06A888E5B
+:10DD80000C9CF01F00408F2C2FFD580CC111580522
+:10DD9000C140189B305CF01F003CEEF900D4738842
+:10DDA0005808C0D1737B580BCE31169CCE4BEECBAE
+:10DDB000FFF0F01F0036C1302FCDDC2A73785808F1
+:10DDC000C0B0EEFC00C45D18C070189B306AEECC89
+:10DDD000FFF0F01F002F6E2C580CCEA1EF39007A07
+:10DDE0003008F0091800C3A1EEF800D470485808B4
+:10DDF000C100301BEEFC00C45D18C0B4EEF800D4C6
+:10DE000071485808C0601A9BEEFC00C45D18C2142B
+:10DE1000300B0E9CF01F001FEEF800D470995809CB
+:10DE2000C070300BEEFC00C45D19EEF800D470A891
+:10DE30005808C050301BEEFC00C45D183018EF4885
+:10DE400000C84959300C72082FF893082FCDD822FA
+:10DE50004038F1D8C002CDD0CB0B300848891AD851
+:10DE6000E06A888E0E98EECBFFF0EECCFF86F01FB6
+:10DE700000058F3C2FFD580CCB81C9FB8001DAA037
+:10DE80008002712080027EA08002716880002DF4E3
+:10DE90008001DC5400007818EBCD40E0189716950F
+:10DEA000300BF01F001DEEC6FF64306A49BB0C9CAE
+:10DEB000F01F001BC2E0EEF801185808C1F00C9BDF
+:10DEC0000E9CF01F00183006EEFC00DC0C9BEF46A9
+:10DED00000B0F01F00150C9A0C9BEEFC00E0F01F48
+:10DEE00000130C9BEEFC00E0F01F00110C9BEEFCFD
+:10DEF00000E0F01F0010E3CD80E0EEF800D470D811
+:10DF00005808CDE00A9A0C9BEEFC00C45D18CD8B3E
+:10DF10001896CD6B8001CD908001CD8880002D9426
+:10DF20008001DC548002A958800247A08002516C15
+:10DF300080025158D401F01F0002D8028001DE98FF
+:10DF4000EBCD40C01897F8F800C45808C230303BF9
+:10DF5000F01F003DEEF800D470495809C070300B36
+:10DF6000EEFC00C45D19EEF800D470A95809C07029
+:10DF7000300BEEFC00C45D19EEF800D47098580820
+:10DF8000C050300BEEFC00C45D18300B0E9CF01F2F
+:10DF9000002F6E2C3006F01F002E8F266E3C580C82
+:10DFA000C040F01F002B8F36EEF800E45808F9B897
+:10DFB0000100EFF81A39EEFC0090580CC060F01F19
+:10DFC00000253008EF480090EEFC008CF01F002286
+:10DFD0003006EEFC00DC0C9BEF46008CF01F001FAF
+:10DFE000EEFC00E0F01F001EEEFC00DCEF4600E05F
+:10DFF000F01F001CEEFC00DCF01F001BEEFC00DC40
+:10E00000F01F001A0E9CEF4600DCF01F0019EEFC1A
+:10E0100000CCF01F00110E9CEF4600D0EF4600CC64
+:10E02000F01F00140E9CF01F0014EEFC00C4580CEE
+:10E03000C070EEF800D470785808C0205D18E3CDA9
+:10E0400080C000008001DE988001DC54800270F8FE
+:10E050008002323880002E008002A4508002467078
+:10E06000800283BC8002838C8002AFFC8001CE5C86
+:10E070008001D3788001D2A0EBCD4080169778093B
+:10E080001639C0F1761899080E9CF01F000A0E9CF4
+:10E09000F01F0009E3CF808072180E38C06010991D
+:10E0A0005809CFB1E3CFC0806E189318CEEB0000B3
+:10E0B0008001DF4080002E00EBCD40801897580C87
+:10E0C000C051C1980E9CF01F000D6E0B580BCFB1C4
+:10E0D000F01F000BF01F000B6E4C580CC060F01FBF
+:10E0E000000A6E4CF01F00096E8CF01F00080E9C99
+:10E0F000F01F0006E3CD80808001E078800261D0CF
+:10E100008002620880027EA480002E00EBCD40C019
+:10E110001897580CC05130060C9CE3CD80C0F01FFE
+:10E120000021CFA1334CF01F00201896CF606E085D
+:10E130006E19991899296E286E89993899996E3CAB
+:10E14000580CC040F01F00198D4C6E7C580CC0401C
+:10E15000F01F00168D8C6E498D59495891096E5AE1
+:10E160008D6A4948910A49486E698D7991090C9CDC
+:10E17000F01F0012C11130196C988DB95808EDF9D3
+:10E180001A0C6C285808CC906C185808CC606C4C51
+:10E19000F01F000BCC200C9C3006F01F000ACBDBDC
+:10E1A0008002618C80027EA880002DAC00000448B3
+:10E1B00000007854000078508002657C80027EA2C6
+:10E1C0008001E0B8D431204D580C5F08580B5F092E
+:10E1D000189316971248C05030050A9C2FCDD8329C
+:10E1E000E06C011CF01F00C01895CF803018F94872
+:10E1F000010CFEF102F66E22620B580BC1005802B0
+:10E20000E0800144E2C4FFFC3006760B049CF01F62
+:10E2100000B8C0C02FF6090B580BCF810A9CF01F25
+:10E2200000B50A9CF01F00B4CD8BE2060328EB4832
+:10E2300000D46E0C580CE0800122F01F00B0EB4CB3
+:10E24000008CF01F00AFEB4C0090CE906E18580879
+:10E25000C0A0785CF01F00A86E1CEAF60090F01FCA
+:10E2600000A78D5C6E385808C0C0EAF8009070BCFA
+:10E27000F01F00A16E3CEAF60090F01F00A08DBCDC
+:10E28000EAF800905808CCB06E4C580CCC80F01FC7
+:10E29000009DE04C0063FE9BFFC3EAC1FFEA364AE3
+:10E2A0006E4B029CF01F00986E5C580CE08100F9E8
+:10E2B0006620340CF01F008C1897CB10FEF8024C2F
+:10E2C0008F78FEF8024AFEF9024A8F98FEF802485B
+:10E2D0008F058F458F658F898FC83006FEF4023C0D
+:10E2E0008F168FA4FEF202388FB2EAF9009072887E
+:10E2F0008FD8EAF9009072988FE8EAF9009072A836
+:10E300008FF8F01F0088EB4C00E0E08000C20C9B0F
+:10E31000F01F00850C9BEAFC00E0F01F0084EAF887
+:10E3200000D470685808E08000A7029B0A9C5D1822
+:10E33000EB4C00C4FE90FF74EAF8009070BBEAF862
+:10E3400000D470895809C0605D19FE95FF69EAF82C
+:10E3500000D471685808C0F0EAFC00C45D18189732
+:10E36000C0A0029BF01F0062C0600E9B364A029C58
+:10E37000F01F006534CCF01F005CFE90FF514EC8CA
+:10E380004EC9991899294EC84EC9993899494EC80D
+:10E390004EC9995899694EC84EC9997899894EC8FD
+:10E3A0004EC9999899A94EC84EC999B899D94EC8DD
+:10E3B0004EC999C899E94EC84EC9F9440040F9427E
+:10E3C0000044990599F8F9490048F01F0069EB4CA1
+:10E3D00000DCFE90FF25EB39007A3008F0091800C8
+:10E3E000C5C1300A029BF01F0063EAF80090EAFC06
+:10E3F00000DC707BF01F0060EAFB00E0EAFC00DC60
+:10E40000F01F005EEAFA009074C85808C60174D87C
+:10E410005808C52174EA580AC080302BEAFC00DC99
+:10E42000F01F0057FE91FEFC009B0A9CF01F005558
+:10E43000FE95FEF6EACBFFF0EAFC00DCF01F00528E
+:10E440003FF8EB4800E4EAF900D473485808C0D01C
+:10E450001A9BEAFC00C45D18C0814038EDB8000288
+:10E46000C0413018EB4801188B0366088B188705EC
+:10E47000FE9FFEB5EB4800C4CD2A6E3B6E1CF01F1C
+:10E480000043EB4C0090CFDAF94B00D4CD3A0E9C10
+:10E49000F01F0019FE9FFEC4EACAFF86CA4BF01F98
+:10E4A000001958FCFE9BFEBC6E5B310AEACCFF866D
+:10E4B000F01F0015CFEA109A301BEAFC00DCF01FB9
+:10E4C0000030FE91FEADEAFA0090CA5B109A300B64
+:10E4D000EAFC00DCF01F002AFE91FEA2EAFA00909E
+:10E4E000C97B000080027EA80000044C80002DB88B
+:10E4F0008001DF4080002E0080002DAC8001C90823
+:10E5000080002DD080002DC48001D3208001DB9CB1
+:10E510008001D1788001CE888001CEA88001CE987C
+:10E52000800250208002516C800251588001CE043C
+:10E530008001CE108001DB908001DF348001E60C89
+:10E540008001DC188001EBC08001CFFC8001CEE8A7
+:10E550008001D2688001D4C48001D1648001D314C9
+:10E560008001CE2E8001CE448001CE168002B060A4
+:10E570008002A4448002A43C8002A4508002A458DB
+:10E580008001DD548002A88880022AD0EBCD40E0D3
+:10E59000306A18971695F8C6FF64497B0C9CF01FEB
+:10E5A0000017C270EEF801185808C1800C9B0E9C31
+:10E5B000F01F00130E9CF01F00133006EEFC00DC71
+:10E5C0000C9BEF4600B0F01F00100C9A0C9BEEFC69
+:10E5D00000E0F01F000EE3CD80E0EEF800D470E81C
+:10E5E0005808CE500A9A0C9BEEFC00C45D18CDFB77
+:10E5F0001896CDDB8001CD8880002D948001DC54FD
+:10E60000800265E88002A958800247A0D401F01F6B
+:10E610000002D8028001E58CEBCD40C0499BF8C7D1
+:10E62000FF641896306A0E9CF01F0017EDFB189CD3
+:10E63000E06800A2EDD8E007EDFB08A20FD81AD8D9
+:10E640000FC91AD90FB81AD80FA91AD90F9848FAB2
+:10E650001AD80C9C1ADB302BF01F000D0E9B0C9C63
+:10E66000F01F000CECFC00DCF01F000B303B0C9C9E
+:10E67000F01F000A30182FADED4800A8E3CD80C090
+:10E680008001CD8880002D948003B3848002299E70
+:10E690008001D0A08002A9A08001E58CD431FACD00
+:10E6A00000D03007F94700A8189516941491580B1C
+:10E6B000E0800217F6F60084E8CCFFFA76ABF01F94
+:10E6C000012A1AD61ADC09D81AD809C91AD909B8E0
+:10E6D0001AD809A91AD909981AD809890A9C1AD9E5
+:10E6E000FEFA0488302BF01F01220E9B306A2F8D1A
+:10E6F000EACCFF64F01F011F306A089BEACCFF5E82
+:10E70000F01F011D0A9CF01F011D300AEAFC00DC0D
+:10E71000149BF01F011B635AEDBA0003C061E2F8BD
+:10E7200001745808E08100B1301063795809C0E0E5
+:10E73000E1D9C0011298EDB90001E08000A4EDB963
+:10E740000002F9B80004E1D8E030EAF800D471081A
+:10E750005808C060009BEAFC00C45D18635A580466
+:10E76000C07069585808C5A0F1DAC002C6E1149714
+:10E77000E2170013C5B1029B0A9CF01F0102FAC800
+:10E78000FF9453375028089B0A9CF01F00FFEAF8BB
+:10E7900000B45828E08001BAE089007F5818E08072
+:10E7A000017130285038EAF800B85828C7F05828C6
+:10E7B000E08900805818E080016230285048EAF96A
+:10E7C00000BC58495F0B58895F08F7E81008C780FC
+:10E7D000E2C9FECCE2C8FF0C16963007EC16000129
+:10E7E0005019500812931092505766095809E08149
+:10E7F00001122FF72FC32F025847CF81EAF900BC2F
+:10E800005889C671E2F800F04059F1D8C002F3E827
+:10E810001008E08101311096C5F8E8F8008058082A
+:10E82000CA70F1DAC002CA40C1083509FAC8FF301F
+:10E8300010D9029AFAC9FF94300B50290A9CF01F94
+:10E8400000D3CA202CCDD832E2F801485808E08124
+:10E85000010FEAF900B0089A300BEAFC00DCF01F67
+:10E8600000CCE080017A3509FAC8FF3010D9029A4D
+:10E87000FAC9FF94089B50290A9CF01F00C4C840A5
+:10E88000CE2BA1B0C5DBE2F801785808F9B000043E
+:10E89000F9B00105C4BB5848C8605908C8313039BF
+:10E8A0005039EAF800B85828C83130195049C88B97
+:10E8B0005848C8505908C82130395049C81B300839
+:10E8C0005058E2C8FECC30165018E2C8FF0C500871
+:10E8D0005909E080011FEAF800D470A85808C05018
+:10E8E0000C9BEAFC00C45D18303B0A9CF01F00A999
+:10E8F000354AFAC7FFE8300B0E9CF01F009E580403
+:10E90000E0800126E8F8008450645098E8C8FFFAD7
+:10E91000507868A95089E2FA0184581AE080009E74
+:10E920004029403850A950C84049433850D950B8C0
+:10E93000EAF800BC5848E08000E7E08900885818F1
+:10E94000E08000A43018510A4014400350E850F011
+:10E95000FACAFFAC0899069BFACCFF9C72085808CB
+:10E96000C040F54BFFF0720814A82FC92F0B183ABE
+:10E97000CF61E2F801445198EAF601185806E080A8
+:10E980000089FEFA0212302B0A9CF01F0079301920
+:10E99000EAF800BC5908E080008F5809E080009830
+:10E9A000305B300A0A9CF01F007D40585808C1C0F7
+:10E9B000EAF800D471485808C170FACBFF44EAFC69
+:10E9C00000C45D18C1114328EDB80001C0D11897EB
+:10E9D0004F30189268095809E08100A12FF72FC421
+:10E9E0002F035847CF81EAF800B05808C0701031A3
+:10E9F000C050EAFC00E0F01F006BEAFC00DC029B68
+:10EA0000EB4100B0F01F00680A9CF01F00682CCD9D
+:10EA1000D832EAFB00D4E2FA014476585808C130F3
+:10EA20001AD91AD23009EB4901041AD94DC90E3A44
+:10EA30005F081AD94DEA76560E99301BEAFC00C4DD
+:10EA40005D162FCD30165056CD5A5888C200590841
+:10EA5000FE91FF7A3048C78BE2F901A45809FE9A6B
+:10EA6000FF6140985808FBF90A09C5BB6368F1D8F3
+:10EA7000C021CF0A50375047C2FB30085048CA0A5D
+:10EA800030085038FE9FFE913008C5EB3038C5CBBA
+:10EA9000EAF800D470F85808FE90FF750E9BEAFC67
+:10EAA00000C45D18FE95FF6F0C99EAF800BC590888
+:10EAB000FE91FF75029B0A9CF01F003E0A9CF01F0E
+:10EAC000003E307B0A9CF01F0033C70BEAF8009031
+:10EAD00070495819F9BB000AF9BB013CC63B745B8D
+:10EAE000744CF01F00214B5A1ADC302B0A9CF01F8B
+:10EAF0000020306A089BEACCFF5EF01F001E2FFD4D
+:10EB0000FE9FFE023028C20B30195039FE9FFE4D89
+:10EB1000029B0A9CF01F0027CDFAEAFB00D4E2FA20
+:10EB2000014476585808FE90FF5B1AD91AD3EB427D
+:10EB300001041AD20E3A5F081AD00E99765649CAC5
+:10EB4000301BEAFC00C45D162FCDC49B6248507890
+:10EB500062595089CE1A301BEAFC00E0F01F001801
+:10EB6000FE9FFE83800229A08003B3C48002299EF9
+:10EB700080002DE880002DF48001D3788002A570FC
+:10EB80008001D8648001DC548001D4F080028304C9
+:10EB90008001CD908003B4388001DA2C80038BD4BF
+:10EBA000800246CC8002A9588001D93080036F2CA6
+:10EBB0008001D0088001D2A08003B4148002451ADD
+:10EBC000EBCD40C021AD1897F8F800AC5808C681CD
+:10EBD000F8F6010CEEFB009076095809C061C8F800
+:10EBE00072095809E080008CF2F801945808CF911E
+:10EBF0003008EF48010C76495809C670EEFC00D485
+:10EC0000580CC0E04DAB780CF01F005AEFF8002410
+:10EC1000F1FC0A04EEFB009076485808C560EEF857
+:10EC200000E85818E088008D760AEEF800C85818F9
+:10EC3000C3F0580AC090103AC041C3981438C3704A
+:10EC4000740A580ACFC15826C04076485828C69042
+:10EC5000580AEFFA1A32F9B80001EFF80A32EEF961
+:10EC600001105809C04176485818C710EEF801182D
+:10EC70005808C4F1580AF40B1700F60A1700F5FB00
+:10EC80001004F5FA1005EEF800D470B85808C41056
+:10EC9000EEFC00C45D18C3D12E6DE3CD80C0F8F644
+:10ECA000010C5806C9812E6DE3CD80C0740A580A44
+:10ECB000CCB0F4F801945808CFA175885808CC411D
+:10ECC00076485828CF41CC0B0E9CF01F002BCE501D
+:10ECD000EEF800B05808EFFC0A2C0E9CF01F00273D
+:10ECE000300B1A9C368AF01F00261A961A9A0E9C30
+:10ECF000300BF01F00242E6DE3CD80C05806FE912E
+:10ED0000FF790E9C301BF01F00202E6DE3CD80C0DC
+:10ED10000E9C300A30ABF01F001D2E6DE3CD80C07D
+:10ED2000580AC1D074085808EFFA1A32F9B800012D
+:10ED3000EFF80A320E9C300BF01F0015CAEB302B97
+:10ED40000E9CF01F0011EEFB0090C6FBEF48011077
+:10ED5000129A0E9C303BF01F000BC9FB30180E9C22
+:10ED6000EF4800C8149BF01F0009C97B8003B0283E
+:10ED700080002DB88001CF1C8001D93080002DE8A3
+:10ED8000800268B08001CD908001DB448001E69C68
+:10ED9000EBCD40C018971696F01F0009C0C06E0C4E
+:10EDA000581CC0700C9B0E9CF01F0006CF91302C9D
+:10EDB000E3CD80C03FDCE3CD80C00000800148E8A7
+:10EDC000800148F2EBCD4040301818969908F01FAA
+:10EDD00000040C9CF01F0003E3CD8040800148EE4E
+:10EDE000800148F0D401580CC030F01F0002D80256
+:10EDF000800148ECD40130089908F01F0002D802C5
+:10EE0000800148EAD401189E580AC0C19619968814
+:10EE1000F9D9C010103CC165F2C8FFFF973AB61887
+:10EE2000D802581AC0609619F2C8FFFFB618D80267
+:10EE3000969996881039C0F47648F0090709B88980
+:10EE4000CF3B1D897648F00C0B099619F2C8FFFFDD
+:10EE5000B618D80230089738B8889619F2C8FFFF5C
+:10EE6000B618D802EBCD40801897580AC1D1961C2D
+:10EE70009689FDDCC010FCC8FFFF1238F7FA4A0380
+:10EE8000F7F85004F1DEE508EFF95801F1F95E00FA
+:10EE9000EFFA5800F1FA5E01F7FC5201F8C8FFFEE4
+:10EEA000B618E3CD8080581AC070961CF8C8FFFED3
+:10EEB000B618E3CD8080969A9689F4C8FFFF123881
+:10EEC000C094764814081199B889118AB89A961C8A
+:10EED000CEEB30089738B808961CF8C8FFFEB61875
+:10EEE000E3CD8080EBCD4080189E169C580AC0F17F
+:10EEF000961B9889EFDBC010EEC8FFFD1238C205E3
+:10EF0000F6C8FFFC993AB818E3CD8080581AC07053
+:10EF1000981BF6C8FFFCB818E3CD8080969B9889B3
+:10EF2000F6C8FFFD1238C1C4784A160A15B8BC8865
+:10EF300015A9BC991598BCA81589BCB9CEAB1DB84C
+:10EF4000784A0E0AB4881DA9B4991D98B4A81D89E1
+:10EF5000B4B9981BF6C8FFFCB818E3CD8080300820
+:10EF600099389D08981BF6C8FFFCB818E3CD80803F
+:10EF7000EBCD4068189316951496F01F000C0C9A70
+:10EF80000A9BE6CCFFFFF01F00090C9A0A9BE6CC17
+:10EF9000FFFEF01F00060C9A0A9BE6CCFFFDF01F57
+:10EFA0000003E3CD806800008001EE04D4211697B1
+:10EFB000189596141496F01F00080C9A0E9BEACC34
+:10EFC000FFFEF01F00060BC85808F1D4E108EFF867
+:10EFD0001C01D8228001EE648001EF70EBCD406807
+:10EFE000189316951496F01F00060C9A0A9BE6CC0F
+:10EFF000FFFCF01F0003E3CD806800008001EEE419
+:10F00000EBCD4068189316951496F01F00090C9AE2
+:10F010000A9BE6CCFFFCF01F00070C9A0A9BE6CC8B
+:10F02000FFFAF01F0004E3CD806800008001EEE4E9
+:10F030008001EE64EBCD4068189316951496F01F8E
+:10F04000000F0C9A0A9BE6CCFFFCF01F000D0C9AF7
+:10F050000A9BE6CCFFFBF01F000A0C9A0A9BE6CC49
+:10F06000FFFAF01F00070C9A0A9BE6CCFFF9F01F8D
+:10F070000004E3CD806800008001EEE48001EE042E
+:10F08000EBCD4068189316951496F01F000C0C9A5F
+:10F090000A9BE6CCFFFCF01F000A0C9A0A9BE6CC08
+:10F0A000FFFAF01F00080C9A0A9BE6CCFFF9F01F4C
+:10F0B0000005E3CD806800008001EEE48001EE648D
+:10F0C0008001EE04EBCD4068189316951496F01F5E
+:10F0D00000150C9A0A9BE6CCFFFCF01F00120C9A5C
+:10F0E0000A9BE6CCFFF8F01F00100C9A0A9BE6CCB6
+:10F0F000FFF6F01F000D0C9A0A9BE6CCFFF4F01F00
+:10F1000000090C9A0A9BE6CCFFF0F01F00070C9A4E
+:10F110000A9BE6CCFFEEF01F0004E3CD8068000000
+:10F120008001EEE48001EE64EBCD40681893169503
+:10F130001496F01F00090C9A0A9BE6CCFFFCF01F06
+:10F1400000060C9A0A9BE6CCFFF8F01F0003E3CD03
+:10F15000806800008001EEE4EBCD406818931695BE
+:10F160001496F01F00060C9A0A9BE6CCFFFCF01FD9
+:10F170000003E3CD806800008001EEE4EBCD406841
+:10F18000189316951496F01F000C0C9A0A9BE6CC67
+:10F19000FFFCF01F00090C9A0A9BE6CCFFF8F01F59
+:10F1A00000060C9A0A9BE6CCFFF4F01F0003E3CDA7
+:10F1B000806800008001EEE4EBCD4068189316955E
+:10F1C0001496F01F00330C9A0A9BE6CCFFFCF01F4C
+:10F1D00000300C9A0A9BE6CCFFF8F01F002D0C9A29
+:10F1E0000A9BE6CCFFF4F01F002B0C9A0A9BE6CC9E
+:10F1F000FFF2F01F00280C9A0A9BE6CCFFF0F01FEC
+:10F2000000250C9A0A9BE6CCFFEEF01F00220C9A18
+:10F210000A9BE6CCFFECF01F001F0C9A0A9BE6CC81
+:10F22000FFEAF01F001C0C9A0A9BE6CCFFE8F01FD7
+:10F2300000190C9A0A9BE6CCFFE6F01F00160C9A08
+:10F240000A9BE6CCFFE4F01F00130C9A0A9BE6CC65
+:10F25000FFE2F01F00110C9A0A9BE6CCFFE1F01FC1
+:10F26000000E0C9A0A9BE6CCFFE0F01F00090C9AF6
+:10F270000A9BE6CCFFDCF01F00060C9A0A9BE6CC4A
+:10F28000FFD8F01F0005E3CD806800008001EEE4A8
+:10F290008001EE648001EE04EBCD40681893169572
+:10F2A0001496F01F00120C9A0A9BE6CCFFFCF01F8C
+:10F2B00000100C9A0A9BE6CCFFFBF01F000D0C9A85
+:10F2C0000A9BE6CCFFFAF01F000A0C9A0A9BE6CCD8
+:10F2D000FFF9F01F00070C9A0A9BE6CCFFF8F01F1D
+:10F2E0000004E3CD806800008001EEE48001EE04BC
+:10F2F000EBCD4068189316951496F01F00060C9AF3
+:10F300000A9BE6CCFFFCF01F0003E3CD8068000001
+:10F310008001EEE4EBCD4068189316951496F01F2B
+:10F3200000060C9A0A9BE6CCFFFCF01F0003E3CD1D
+:10F33000806800008001EEE4EBCD406818931695DC
+:10F340001496F01F00060C9A0A9BE6CCFFFCF01FF7
+:10F350000003E3CD806800008001EEE4EBCD40685F
+:10F36000189316951496F01F00060C9A0A9BE6CC8B
+:10F37000FFFCF01F0003E3CD806800008001EEE495
+:10F38000EBCD4068189316951496F01F00060C9A62
+:10F390000A9BE6CCFFFCF01F0003E3CD8068000071
+:10F3A0008001EEE4EBCD4068189316951496F01F9B
+:10F3B00000060C9A0A9BE6CCFFFCF01F0003E3CD8D
+:10F3C000806800008001EEE4EBCD4068189316954C
+:10F3D0001496F01F00060C9A0A9BE6CCFFFCF01F67
+:10F3E0000003E3CD806800008001EEE4EBCD4068CF
+:10F3F000189316951496F01F00060C9A0A9BE6CCFB
+:10F40000FFFCF01F0003E3CD806800008001EEE404
+:10F41000EBCD4068189316951496F01F00060C9AD1
+:10F420000A9BE6CCFFFCF01F0004E3CD80680000DF
+:10F430008001EEE48001F1B8EBCD40681893169599
+:10F440001496F01F00060C9A0A9BE6CCFFFCF01FF6
+:10F450000003E3CD806800008001EEE4EBCD40685E
+:10F46000189316951496F01F00090C9A0A9BE6CC87
+:10F47000FFFCF01F00060C9A0A9BE6CCFFF8F01F79
+:10F480000003E3CD806800008001EEE4EBCD40682E
+:10F49000189316951496F01F00060C9A0A9BE6CC5A
+:10F4A000FFFCF01F0003E3CD806800008001EEE464
+:10F4B000EBCD4068189316951496F01F00090C9A2E
+:10F4C0000A9BE6CCFFFCF01F00060C9A0A9BE6CCD8
+:10F4D000FFF8F01F0003E3CD806800008001EEE438
+:10F4E000EBCD4068189316951496F01F00090C9AFE
+:10F4F0000A9BE6CCFFFCF01F00060C9A0A9BE6CCA8
+:10F50000FFF8F01F0003E3CD806800008001EEE407
+:10F51000EBCD4068189316951496F01F00060C9AD0
+:10F520000A9BE6CCFFFCF01F0003E3CD80680000DF
+:10F530008001EEE4EBCD4068189316951496F01F09
+:10F5400000090C9A0A9BE6CCFFFCF01F00060C9AFF
+:10F550000A9BE6CCFFF8F01F0003E3CD80680000B3
+:10F560008001EEE4EBCD4068189316951496F01FD9
+:10F5700000060C9A0A9BE6CCFFFCF01F0003E3CDCB
+:10F58000806800008001EEE4EBCD4068189316958A
+:10F590001496F01F00090C9A0A9BE6CCFFFCF01FA2
+:10F5A00000060C9A0A9BE6CCFFF8F01F0003E3CD9F
+:10F5B000806800008001EEE4EBCD4068189316955A
+:10F5C0001496F01F00090C9A0A9BE6CCFFFCF01F72
+:10F5D00000060C9A0A9BE6CCFFF8F01F0003E3CD6F
+:10F5E000806800008001EEE4EBCD4068189316952A
+:10F5F0001496F01F00060C9A0A9BE6CCFFFCF01F45
+:10F600000003E3CD806800008001EEE4EBCD4068AC
+:10F61000189316951496F01F00060C9A0A9BE6CCD8
+:10F62000FFFCF01F0003E3CD806800008001EEE4E2
+:10F63000EBCD4068189316951496F01F00060C9AAF
+:10F640000A9BE6CCFFFCF01F0003E3CD80680000BE
+:10F650008001EEE4EBCD4068189316951496F01FE8
+:10F6600000060C9A0A9BE6CCFFFCF01F0004E3CDD9
+:10F67000806800008001EEE48001EE04EBCD40687C
+:10F68000189316951496F01F00060C9A0A9BE6CC68
+:10F69000FFFCF01F0004E3CD806800008001EEE471
+:10F6A00080021F9CEBCD4068189316951496F01FAE
+:10F6B00000330C9A0A9BE6CCFFDEF01F00310C9A57
+:10F6C0000A9BE6CCFFD4F01F002F0C9A0A9BE6CCD5
+:10F6D000FFC2F01F002D0C9A0A9BE6CCFFBFF01F63
+:10F6E000002B0C9A0A9BE6CCFFBCF01F00290C9A59
+:10F6F0000A9BE6CCFFB0F01F00270C9A0A9BE6CCD1
+:10F70000FFACF01F00250C9A0A9BE6CCFFA4F01F6B
+:10F7100000230C9A0A9BE6CCFF9CF01F00210C9A58
+:10F720000A9BE6CCFF98F01F001F0C9A0A9BE6CCC0
+:10F73000FF8CF01F001D0C9A0A9BE6CCFF72F01F95
+:10F74000001B0C9A0A9BE6CCFF68F01F00190C9A6C
+:10F750000A9BE6CCFF44F01F00170C9A0A9BE6CCEC
+:10F76000FF50F01F00150C9A0A9BE6CCFF30F01FEB
+:10F770000013E3CD8068000080021EAC80021E44AE
+:10F7800080021DDC8002166080021540800223C8C2
+:10F79000800215D080021604800215748002150CB8
+:10F7A00080021F9C8002191C800219EC800220C07C
+:10F7B000800222188002204C80021B64EBCD40683E
+:10F7C000189316951496F01F000F0C9A0A9BE6CC1E
+:10F7D000FFFCF01F000D0C9A0A9BE6CCFFFAF01F0D
+:10F7E000000B0C9A0A9BE6CCFFF9F01F00080C9A5C
+:10F7F0000A9BE6CCFFF8F01F0006E3CD806800000E
+:10F800008001EEE48001EE648001EE048001F6A444
+:10F81000EBCD406C1495129618921693E06A00DCBA
+:10F82000129B0A9CF01F001AECC9FF98EACAFF98C5
+:10F83000069B049CF01F0017ECC9FFBCEACAFFBC82
+:10F84000069B049CF01F0014ECC9FF68EACAFF681D
+:10F85000069B049CF01F0011ECC9FF50EACAFF5040
+:10F86000069B049CF01F000EECC9FF44EACAFF444B
+:10F87000069B049CF01F000BECC9FF30EACAFF3066
+:10F88000069B049CF01F0008E3CD806C8002DD1411
+:10F8900080021CC080021DB480021D5080021D2801
+:10F8A00080021D8480021B04EBCD40EC1296F2E82E
+:10F8B0000000F4E90000ECE80008F4E90008ECE2DC
+:10F8C0000010F4E30010ECE8001814971695F4E922
+:10F8D0000018E06B00E85D158F7CC0D030CA6C7BEF
+:10F8E000F01F00066E7A6C79149C0A9B2F492F4AF0
+:10F8F000F01F0003E3CD80EC80002DF48001F810B0
+:10F90000EBCD40C01497169674385808C160949E89
+:10F91000948AF60E00081438F5DEE916F9B80900E5
+:10F92000EFF89A03580CC0905809C0C1189B0C9A64
+:10F930006E4C1C0CF01F000A8E180C08AE18E3CD9C
+:10F9400080C05819CFA16E4B0C9A1C0BF01F0004FD
+:10F950008E180C08AE18E3CD80C0000080002DF496
+:10F96000EBCD40E0169714961895581AC0B0F01FCA
+:10F97000000C0C99189B0E9A0A9CF01F000AE3CD0C
+:10F9800080E09698968614991016169A0C9BF01F94
+:10F9900000053008EA060B08E3CD80E080002DD09A
+:10F9A0008001F900EBCD4068189316951496F01F6E
+:10F9B00000060C9A0A9BE6CCFFFCF01F0004E3CD86
+:10F9C000806800008001EEE48001F960EBCD4068C2
+:10F9D000189316951496F01F00060C9A0A9BE6CC15
+:10F9E000FFFCF01F0004E3CD806800008001EEE41E
+:10F9F0008001F960EBCD4068189316951496F01FBE
+:10FA0000000F0C9A0A9BE6CCFFFCF01F000C0C9A2E
+:10FA10000A9BE6CCFFF8F01F00090C9A0A9BE6CC83
+:10FA2000FFF4F01F00060C990A9AE6CCFFF0320BA7
+:10FA3000F01F0003E3CD80688001EEE48001F9004F
+:10FA4000EBCD4068189316951496F01F000C0C9A95
+:10FA50000A9BE6CCFFFCF01F00090C9A0A9BE6CC3F
+:10FA6000FFF8F01F00060C990A9AE6CCFFF4320B5F
+:10FA7000F01F0003E3CD80688001EEE48001F9000F
+:10FA8000EBCD4068189316951496F01F000C0C9A55
+:10FA90000A9BE6CCFFFCF01F00090C9A0A9BE6CCFF
+:10FAA000FFF8F01F00070C990A9AE6CCFFF7303BED
+:10FAB000F01F0004E3CD80688001EEE48001EE04D5
+:10FAC0008001F900EBCD4068189316951496F01F4D
+:10FAD00000180C9A0A9BE6CCFFFCF01F00150C9A4C
+:10FAE0000A9BE6CCFFF8F01F00120C9A0A9BE6CCAA
+:10FAF000FFF4F01F000F0C9A0A9BE6CCFFF0F01FFA
+:10FB0000000C0C9A0A9BE6CCFFECF01F000A0C9A42
+:10FB10000A9BE6CCFFEAF01F00080C990A9AE6CC93
+:10FB2000FFE9303BF01F0005E3CD80688001EEE483
+:10FB30008001EE648001EE048001F900EBCD4068A5
+:10FB4000189316951496F01F00280C9A0A9BE6CC81
+:10FB5000FFFCF01F00250C9A0A9BE6CCFFF8F01F73
+:10FB600000220C9A0A9BE6CCFFF4F01F00200C9AAE
+:10FB70000A9BE6CCFFF2F01F001E0C9A0A9BE6CC13
+:10FB8000FFF1F01F001B0C9A0A9BE6CCFFF0F01F60
+:10FB900000180C9A0A9BE6CCFFEFF01F00150C9A98
+:10FBA0000A9BE6CCFFEEF01F00120C990A9AE6CCF5
+:10FBB000FFED306BF01F000F0C9A0A9BE6CCFFE7BD
+:10FBC000F01F000B0C9A0A9BE6CCFFE6F01F000822
+:10FBD0000C990A9AE6CCFFE5320BF01F0006E3CD44
+:10FBE000806800008001EEE48001EE648001EE0494
+:10FBF0008001F900EBCD4068189316951496F01F1C
+:10FC000000150C9A0A9BE6CCFFFCF01F00120C9A20
+:10FC10000A9BE6CCFFF8F01F000F0C9A0A9BE6CC7B
+:10FC2000FFF4F01F000C0C9A0A9BE6CCFFF0F01FCB
+:10FC3000000A0C9A0A9BE6CCFFEEF01F00080C9914
+:10FC40000A9AE6CCFFED303BF01F0005E3CD80685B
+:10FC50008001EEE48001EE648001EE048001F90091
+:10FC6000EBCD4068189316951496F01F00120C9A6D
+:10FC70000A9BE6CCFFFCF01F00100C9A0A9BE6CC16
+:10FC8000FFFBF01F000D0C990A9AE6CCFFFA302B0F
+:10FC9000F01F000A0C9A0A9BE6CCFFF8F01F000543
+:10FCA0000C9A0A9BE6CCFFF4F01F0002E3CD8068BB
+:10FCB0008001EEE48001EE048001F900EBCD4068A4
+:10FCC000189316951496F01F00120C9A0A9BE6CC16
+:10FCD000FFFCF01F00100C9A0A9BE6CCFFFBF01F04
+:10FCE000000D0C990A9AE6CCFFFA302BF01F000A9F
+:10FCF0000C9A0A9BE6CCFFF8F01F00050C9A0A9BB1
+:10FD0000E6CCFFF4F01F0002E3CD80688001EEE452
+:10FD10008001EE048001F900EBCD40681893169540
+:10FD20001496F01F000C0C9A0A9BE6CCFFFCF01F07
+:10FD3000000A0C9A0A9BE6CCFFFBF01F00070C9907
+:10FD40000A9AE6CCFFFA302BF01F0004E3CD80685E
+:10FD50008001EEE48001EE048001F900EBCD406803
+:10FD6000189316951496F01F00090C9A0A9BE6CC7E
+:10FD7000FFFCF01F00070C990A9AE6CCFFFB303B12
+:10FD8000F01F0004E3CD80688001EEE48001EE0402
+:10FD90008001F900EBCD4068189316951496F01F7A
+:10FDA00000090C9A0A9BE6CCFFFCF01F00070C9997
+:10FDB0000A9AE6CCFFFB303BF01F0004E3CD8068DD
+:10FDC0008001EEE48001EE048001F900EBCD406893
+:10FDD000189316951496F01F00090C9A0A9BE6CC0E
+:10FDE000FFFCF01F00070C990A9AE6CCFFFB303BA2
+:10FDF000F01F0004E3CD80688001EEE48001EE0492
+:10FE00008001F900EBCD4068189316951496F01F09
+:10FE1000000C0C9A0A9BE6CCFFFCF01F00090C9A20
+:10FE20000A9BE6CCFFF8F01F00070C990A9AE6CC73
+:10FE3000FFF7303BF01F0004E3CD80688001EEE463
+:10FE40008001EE048001F900EBCD4068189316950F
+:10FE50001496F01F000C0C9A0A9BE6CCFFFCF01FD6
+:10FE600000090C9A0A9BE6CCFFF8F01F00070C99DA
+:10FE70000A9AE6CCFFF7303BF01F0004E3CD806820
+:10FE80008001EEE48001EE048001F900EBCD4068D2
+:10FE9000189316951496F01F000C0C9A0A9BE6CC4A
+:10FEA000FFFCF01F00090C9A0A9BE6CCFFF8F01F3C
+:10FEB00000070C990A9AE6CCFFF7303BF01F0004CC
+:10FEC000E3CD80688001EEE48001EE048001F9005A
+:10FED000EBCD4068189316951496F01F000C0C9A01
+:10FEE0000A9BE6CCFFFCF01F00090C9A0A9BE6CCAB
+:10FEF000FFF8F01F00070C990A9AE6CCFFF7303B99
+:10FF0000F01F0004E3CD80688001EEE48001EE0480
+:10FF10008001F900EBCD4068189316951496F01FF8
+:10FF200000090C9A0A9BE6CCFFFCF01F00070C9915
+:10FF30000A9AE6CCFFFB303BF01F0004E3CD80685B
+:10FF40008001EEE48001EE048001F900EBCD406811
+:10FF5000169514961893F01F00220C990A9AE6CC75
+:10FF6000FFFC308BF01F001F0C9A0A9BE6CCFFF4BD
+:10FF7000F01F001B0C9A0A9BE6CCFFF0F01F001844
+:10FF80000C9A0A9BE6CCFFECF01F00150C9A0A9B1A
+:10FF9000E6CCFFE8F01F00120C9A0A9BE6CCFFE4C7
+:10FFA000F01F000F0C9A0A9BE6CCFFE0F01F000E3A
+:10FFB0000C9A0A9BE6CCFFDEF01F000B0C9A0A9B02
+:10FFC000E6CCFFDCF01F00080C990A9AE6CCFFDAB9
+:10FFD000302BF01F0004E3CD806800008001EEE4C8
+:10FFE0008001F9008001EE64EBCD4068189316950E
+:10FFF0001496F01F00090C9A0A9BE6CCFFFCF01F38
+:02000004800278
+:1000000000070C990A9AE6CCFFFB303BF01F000476
+:10001000E3CD80688001EEE48001EE048001F90008
+:10002000EBCD4068169514961893F01F00060C99B6
+:100030000A9AE6CCFFFC308BF01F0003E3CD80680A
+:100040008001EEE48001F900EBCD4068189316952D
+:100050001496F01F00090C9A0A9BE6CCFFFCF01FD7
+:1000600000070C990A9AE6CCFFFB303BF01F000416
+:10007000E3CD80688001EEE48001EE048001F900A8
+:10008000EBCD4068189316951496F01F00100C9A4B
+:100090000A9BE6CCFFFCF01F000E0C990A9AE6CCF6
+:1000A000FFFB306BF01F000B0A9AE6CCFFF50C99B2
+:1000B000306BF01F00080C9A0A9BE6CCFFEFF01F94
+:1000C0000004E3CD806800008001EEE48001EE04CE
+:1000D0008001F900EBCD4068169514961893F01F37
+:1000E000000C0C990A9AE6CCFFFC306BF01F00095B
+:1000F0000C9A0A9BE6CCFFF6F01F00070C9A0A9BAD
+:10010000E6CCFFF5F01F0004E3CD80688001EEE44B
+:100110008001F9008001EE04EBCD4068169514963D
+:100120001893F01F000D0C990A9AE6CCFFFC306B77
+:10013000F01F000A0A9AE6CCFFF60C99302BF01F4C
+:1001400000070C9A0A9BE6CCFFF4F01F0005E3CDF4
+:10015000806800008001EEE48001F9008001F6A4CF
+:10016000EBCD4068169514961893F01F000D0C996E
+:100170000A9AE6CCFFFC306BF01F000A0A9AE6CC24
+:10018000FFF60C99302BF01F00070C9A0A9BE6CC67
+:10019000FFF4F01F0005E3CD806800008001EEE46D
+:1001A0008001F9008001F6A4EBCD40681695149605
+:1001B0001893F01F00100C990A9AE6CCFFFC306BE4
+:1001C000F01F000D0C9A0A9BE6CCFFF6F01F000B07
+:1001D0000C9A0A9BE6CCFFF4F01F00080C990A9ACF
+:1001E000E6CCFFF2302BF01F0004E3CD8068000066
+:1001F0008001EEE48001F9008001EE64EBCD4068FF
+:10020000169514961893F01F000A0C990A9AE6CCDA
+:10021000FFFC306BF01F00070C990A9AE6CCFFF642
+:10022000302BF01F0004E3CD806800008001EEE475
+:100230008001F900EBCD4068169514961893F01FD5
+:10024000000A0C990A9AE6CCFFFC306BF01F0007FD
+:100250000C990A9AE6CCFFF6302BF01F0004E3CD90
+:10026000806800008001EEE48001F900EBCD406879
+:10027000189316951496F01F00220C9A0A9BE6CC50
+:10028000FFFCF01F00200C9A0A9BE6CCFFFAF01F3F
+:10029000001D0C9A0A9BE6CCFFF8F01F001A0C997F
+:1002A0000A9AE6CCFFF6306BF01F00170C9A0A9BF7
+:1002B000E6CCFFF0F01F00150C9A0A9BE6CCFFEF8E
+:1002C000F01F00120C990A9AE6CCFFEE302BF01FBB
+:1002D000000E0C9A0A9BE6CCFFECF01F00090C9A6A
+:1002E0000A9BE6CCFFE8F01F00060C9A0A9BE6CCBE
+:1002F000FFE4F01F0007E3CD806800008001EEE41A
+:100300008001EE648001F9008001EE048001F6A412
+:10031000EBCD4068169514961893F01F000C0C99BD
+:100320000A9AE6CCFFFC306BF01F00090C9A0A9B7E
+:10033000E6CCFFF6F01F00070C9A0A9BE6CCFFF50F
+:10034000F01F0004E3CD80688001EEE48001F90035
+:100350008001EE04EBCD4068169514961893F01FBB
+:10036000000C0C990A9AE6CCFFFC306BF01F0009D8
+:100370000C9A0A9BE6CCFFF6F01F00070C9A0A9B2A
+:10038000E6CCFFF5F01F0004E3CD80688001EEE4C9
+:100390008001F9008001EE04EBCD406818931695BA
+:1003A0001496F01F00120C9A0A9BE6CCFFFCF01F7B
+:1003B00000100C9A0A9BE6CCFFFAF01F000D0C9A75
+:1003C0000A9BE6CCFFF8F01F000A0A9AE6CCFFF67B
+:1003D0000C99306BF01F00070C9A0A9BE6CCFFF0DB
+:1003E000F01F0005E3CD80688001EEE48001EE643B
+:1003F0008001F9008001F6A4EBCD406818931695B2
+:100400001496F01F00100C9A0A9BE6CCFFFCF01F1C
+:10041000000E0C9A0A9BE6CCFFFAF01F000B0C9919
+:100420000A9AE6CCFFF8306BF01F00080C990A9A84
+:10043000E6CCFFF2302BF01F0005E3CD8068000012
+:100440008001EEE48001EE648001F900EBCD4068AC
+:10045000189316951496F01F00090C9A0A9BE6CC87
+:10046000FFFFF01F00060C990A9AE6CCFFFE302B26
+:10047000F01F0003E3CD80688001EE048001F900E5
+:10048000EBCD4068169514961893F01F00130C9945
+:100490000A9AE6CCFFFF306BF01F00100C9A0A9B03
+:1004A000E6CCFFF9F01F000C0C9A0A9BE6CCFFF893
+:1004B000F01F00090A9AE6CCFFF70C99306BF01F89
+:1004C00000070C9A0A9BE6CCFFF1F01F0003E3CD76
+:1004D000806800008001EE048001F900EBCD4068E7
+:1004E000189316951496F01F00060C9A0A9BE6CCFA
+:1004F000FFFCF01F0004E3CD806800008001EEE403
+:1005000080020480EBCD40681696149518931499D8
+:10051000169A306BF01F00080A9A0C9BE6CCFFFA83
+:10052000F01F00060A9A0C9BE6CCFFF9F01F0003AF
+:10053000E3CD80688001F9008001EE04EBCD4068D6
+:10054000189316951496F01F00060C9A0A9BE6CC99
+:10055000FFFCF01F0004E3CD806800008001EEE4A2
+:1005600080020504EBCD4068189316951496F01F91
+:1005700000090C9A0A9BE6CCFFFFF01F00060C99BD
+:100580000A9AE6CCFFFE306BF01F0003E3CD8068D3
+:100590008001EE048001F900EBCD406818931695B8
+:1005A0001496F01F00060C9A0A9BE6CCFFFCF01F85
+:1005B0000004E3CD806800008001EEE48002056461
+:1005C000D4011499169A308BF01F0002D802000053
+:1005D0008001F900EBCD4068169514961893F01F32
+:1005E00000090A9AE6CCFFFC0C99306BF01F00065C
+:1005F0000C9A0A9BE6CCFFF6F01F0004E3CD80685E
+:100600008001EEE48001F9008001EE64EBCD4068EA
+:10061000189316951496F01F00090C9A0A9BE6CCC5
+:10062000FFFCF01F00070C990A9AE6CCFFFB303B59
+:10063000F01F0004E3CD80688001EEE48001EE0449
+:100640008001F900D4011499169A320BF01F0002B0
+:10065000D80200008001F900EBCD40681893169590
+:100660001496F01F00180C9A0A9BE6CCFFE0F01FCE
+:1006700000160C9A0A9BE6CCFFDEF01F00140C9AC1
+:100680000A9BE6CCFFDDF01F00110C990A9AE6CC1C
+:10069000FFDC306BF01F000E0C9A0A9BE6CCFFD6F5
+:1006A000F01F000C0C9A0A9BE6CCFFCEF01F00074F
+:1006B0000C9A0A9BE6CCFFCDF01F0004E3CD8068C6
+:1006C000800206448001EE648001EE048001F9009E
+:1006D000800205C0EBCD4068189316951496F01F64
+:1006E00000060C9A0A9BE6CCFFFCF01F0004E3CD49
+:1006F000806800008001EEE480020658D40114995D
+:10070000169A303BF01F0002D80200008001F90069
+:10071000EBCD40E0189716951496F01F000D6E1C57
+:10072000580CC0800C990A9A6E0BF01F000AE3CD9A
+:1007300080E05816C0918A996A4812088F186E098D
+:100740008A181208AA18E3CD80E000008001EEE4C8
+:100750008001F900EBCD4068189316951496F01FB0
+:1007600000060C9A0A9BE6CCFFFCF01F0004E3CDC8
+:10077000806800008001EEE480020710EBCD406845
+:10078000189316951496F01F00100C9A0A9BE6CC4D
+:10079000FFFCF01F000E0C990A9AE6CCFFFB303BE1
+:1007A000F01F000B0A9AE6CCFFF80C99308BF01F73
+:1007B00000080C9A0A9BE6CCFFF0F01F0006E3CD80
+:1007C000806800008001EEE48001EE048001F90001
+:1007D00080020710EBCD4068169514961893F01F11
+:1007E00000090A9AE6CCFFFC0C99308BF01F00063A
+:1007F0000C9A0A9BE6CCFFF4F01F0004E3CD80685E
+:100800008001EEE48001F90080020710EBCD40800A
+:100810001697189B580AC0F18E1C8E89FDDCC010FB
+:10082000FCC8FFF91238C285F8C8FFF88F3AAE1835
+:10083000E3CD8080581AC0708E1CF8C8FFF8AE183F
+:10084000E3CD80808E9A8E89F4C8FFF91238C2C435
+:100850006E48140811F9B88911EAB89A11D9B8A9E3
+:1008600011CAB8BA11B9B8C911AAB8DA1199B8E958
+:10087000118AB8FACE2B17F86E4A1C0AB48817E909
+:10088000B49917D8B4A817C9B4B917B8B4C817A978
+:10089000B4D91798B4E81789B4F98E1CF8C8FFF8D2
+:1008A000AE18E3CD8080300B308A8F3BF01F000202
+:1008B0008E1CCC4B80002DE8EBCD4068189316952C
+:1008C0001496F01F000C0C9A0A9BE6CCFFF8F01F60
+:1008D000000A0C9A0A9BE6CCFFF6F01F00070C9A60
+:1008E0000A9BE6CCFFF4F01F0005E3CD8068000012
+:1008F0008002080C8001EE648001F6A4EBCD40F884
+:10090000206D1697149614991895169A306BF01F4F
+:10091000002D0C9A0E9BEACCFFFAF01F002B0C9ACC
+:100920000E9BEACCFFF9F01F00280C9A0E9BEACC34
+:10093000FFF8F01F00260C9A0E9BEACCFFF0F01F88
+:1009400000240C9A0E9BEACCFFECF01F0021318AA8
+:100950000E9B1A9CF01F001FEAC3FFE81A940C9A22
+:100960001A9B069CF01F001A5816C1801A9B0C9AFD
+:100970006A7CF01F00199A988E992048F0090109A5
+:100980008B690C9A069C0E9BF01F00116A698E18E9
+:100990001208AE182FADE3CD80F86A698E182FC803
+:1009A0001208E06B00E8BA086E5CF01F000C8B7C4C
+:1009B000CF20505C1A9B0C9AF01F0007CE3B000022
+:1009C0008001F9008001EE048002080C8001EEE451
+:1009D00080002DF4800208B880021F54EBCD4068DF
+:1009E000189316951496F01F00120C9A0A9BE6CCE9
+:1009F000FFFCF01F00100C9A0A9BE6CCFFFAF01FD8
+:100A0000000D0C9A0A9BE6CCFFF8F01F00090C9A27
+:100A10000A9BE6CCFFF4F01F00060C9A0A9BE6CC7A
+:100A2000FFF0F01F0005E3CD806800008001EEE4D8
+:100A30008001EE64800208FCEBCD40E0189716952B
+:100A40001496F01F000B0C9A0A9BEECCFFFCF01FD3
+:100A500000090FD93008F0091800C0700C9A0A9BE1
+:100A6000EECCFFF8F01F0004E3CD80E08001EEE45F
+:100A70008002044C800208FCEBCD4060202D301A2F
+:100A800018951696FACCFFFEF01F00089A181BF96D
+:100A90002FE8F0090109AC091BCA8B5A1BD88B48F7
+:100AA0002FEDE3CD806000008001EFACEBCD40E0A6
+:100AB00078089758189716967859E049003FE088CB
+:100AC0000004E3CF80E0FEF8029AF009032F784596
+:100AD0005815E0800127E0450080CF41780C301A9E
+:100AE000F01F00A1E3CF90E078485808C391780C3C
+:100AF000301AF01F009EE3CF90E07848F0C900055F
+:100B0000E049008FFE9BFFDFFEF80264F009032F2F
+:100B10007848E0480081E080010CE08A002BE04842
+:100B20000083E0800118E0850110E0480085CCA139
+:100B3000780C301AF01F008FE3CF90E0780C301A59
+:100B4000F01F008DE3CF90E07848F0C90001E04944
+:100B5000009BFE9BFFB8FEF80222F009032FE0483D
+:100B60000081CB01780C301AF01F0085E3CF90E0B4
+:100B70005848E08000E4E0480080CA41781A300B11
+:100B8000780CF01F00806E0C0C9B301AF01F007E5A
+:100B9000E3CF90E0780C301AF01F007CE3CF90E0B8
+:100BA000780C301AF01F007AE3CF90E0780C301AFE
+:100BB000F01F0078E3CF90E0780C301AF01F007639
+:100BC000E3CF90E0780C301AF01F0074E3CF90E090
+:100BD000780C301AF01F0072E3CF90E0780C301AD6
+:100BE000F01F0070E3CF90E0780C301AF01F006E19
+:100BF000E3CF90E0780C301AF01F006CE3CF90E068
+:100C0000780C301AF01F006AE3CF90E0780C301AAD
+:100C1000F01F0068E3CF90E0780C301AF01F0066F8
+:100C2000E3CF90E0780C301AF01F0064E3CF90E03F
+:100C3000780C301AF01F0062E3CF90E0780C301A85
+:100C4000F01F0060E3CF90E0780C301AF01F005ED8
+:100C5000E3CF90E0780C301AF01F005CE3CF90E017
+:100C6000780C301AF01F005AE3CF90E0780C301A5D
+:100C7000F01F0058E3CF90E0780C301AF01F0056B8
+:100C8000E3CF90E0780C301AF01F0054E3CF90E0EF
+:100C9000780C301AF01F0052E3CF90E0780C301A35
+:100CA000F01F0050E3CF90E0780C301AF01F004E98
+:100CB000E3CF90E0780C301AF01F004CE3CF90E0C7
+:100CC000780C301AF01F004AE3CF90E0780C301A0D
+:100CD000F01F0048E3CF90E0780C301AF01F004678
+:100CE000E3CF90E0780C301AF01F0044E3CF90E09F
+:100CF000780C301AF01F0042E3CF90E0780C301AE5
+:100D0000F01F0040E3CF90E0780C301AF01F003E57
+:100D1000E3CF90E0780C301AF01F003CE3CF90E076
+:100D2000780C0A9AF01F003A0A9CE3CD80E0780C18
+:100D3000301AF01F0038E3CF90E0780C301AF01F23
+:100D40000036E3CF90E0780C301AF01F0034E3CF88
+:100D500090E0780C301AF01F0032E3CF90E00000F2
+:100D60008003B5C48001F6548001F0008003B6C44E
+:100D70008001FE8C8001EEE48003B9048001F03430
+:100D800080002DE88002077C8002060C8001EFDCE9
+:100D9000800205D48001F7BC8001F5E88001F9F4F8
+:100DA0008001F6308001F60C8001F5888001FAC4DC
+:100DB0008001F5348001F4E08001F4B08001F45C3E
+:100DC0008001F4388001F3EC8001F3C88001FCBCA1
+:100DD0008001FD188001FD5C8001F3808001F5B881
+:100DE0008001FC608001F3A48001F35C8002004874
+:100DF000800200D48002011880020160800201A8F4
+:100E000080020A3880020080800204DC8001F9A49C
+:100E10008001FF148001F17C8001FED08001FE483A
+:100E2000EBCD40C0129714998E96109A582CC28020
+:100E3000E08A0008584CC360587CC190E3CF80C062
+:100E4000580CC0A0581CCFB158EBFE9BFFF9FEF820
+:100E50000312F00B032F580BCF21129C0E9BF01F97
+:100E600000C28E98F006010CE3CD80C0202BE04B31
+:100E7000007FFE9BFFE5FEF802F2F00B032F582BDC
+:100E8000E080015DE089001A580BC260581BCD71EB
+:100E9000129C0E9BF01F00B68E98F006010CE3CD5D
+:100EA00080C0580BCCC1129C0E9BF01F00B28E98D4
+:100EB000F006010CE3CD80C0584BC170E0850148BD
+:100EC000585BCBD1129C0E9BF01F00AB8E98F006A6
+:100ED000010CE3CD80C0129C0E9BF01F00A88E98E1
+:100EE000F006010CE3CD80C0129C0E9BF01F00A405
+:100EF0008E98F006010CE3CD80C0129C0E9BF01F73
+:100F000000A18E98F006010CE3CD80C0129C0E9BD0
+:100F1000F01F009D8E98F006010CE3CD80C0129C5E
+:100F20000E9BF01F009A8E98F006010CE3CD80C056
+:100F3000129C0E9BF01F00968E98F006010CE3CDDC
+:100F400080C0129C0E9BF01F00938E98F006010C3F
+:100F5000E3CD80C0129C0E9BF01F008F8E98F00690
+:100F6000010CE3CD80C0129C0E9BF01F008C8E986C
+:100F7000F006010CE3CD80C0129C0E9BF01F008890
+:100F80008E98F006010CE3CD80C0129C0E9BF01FE2
+:100F900000858E98F006010CE3CD80C0129C0E9B5C
+:100FA000F01F00818E98F006010CE3CD80C0129CEA
+:100FB0000E9BF01F007E8E98F006010CE3CD80C0E2
+:100FC000129C0E9BF01F007A8E98F006010CE3CD68
+:100FD00080C0129C0E9BF01F00778E98F006010CCB
+:100FE000E3CD80C0129C0E9BF01F00738E98F0061C
+:100FF000010CE3CD80C0129C0E9BF01F00708E98F8
+:10100000F006010CE3CD80C0129C0E9BF01F006C1B
+:101010008E98F006010CE3CD80C0129C0E9BF01F51
+:1010200000698E98F006010CE3CD80C0129C0E9BE7
+:10103000F01F00658E98F006010CE3CD80C0129C75
+:101040000E9BF01F00628E98F006010CE3CD80C06D
+:10105000129C0E9BF01F005E8E98F006010CE3CDF3
+:1010600080C0129C0E9BF01F005B8E98F006010C56
+:10107000E3CD80C0129C0E9BF01F00578E98F006A7
+:10108000010CE3CD80C0129C0E9BF01F00548E9883
+:10109000F006010CE3CD80C0129C0E9BF01F0050A7
+:1010A0008E98F006010CE3CD80C0129C0E9BF01FC1
+:1010B000004D8E98F006010CE3CD80C0129C0E9B73
+:1010C000F01F00498E98F006010CE3CD80C0129C01
+:1010D0000E9BF01F00468E98F006010CE3CD80C0F9
+:1010E000129C0E9BF01F00428E98F006010CE3CD7F
+:1010F00080C0129C0E9BF01F003F8E98F006010CE2
+:10110000E3CD80C0129C0E9BF01F003B8E98F00632
+:10111000010CE3CD80C0129C0E9BF01F00388E980E
+:10112000F006010CE3CD80C0129C0E9BF01F003432
+:101130008E98F006010CE3CD80C0129C0E9BF01F30
+:1011400000318E98F006010CE3CD80C0129C0E9BFE
+:10115000F01F002D8E98F006010CE3CD80C000003A
+:101160008003BB748001F0008003BBB0800207D411
+:101170008001F9CC8001F128800200208001F15823
+:10118000800203988001FE04800201FC8002023488
+:101190008002053C80020598800206D48002026C21
+:1011A00080020354800205D4800203F8800209DC27
+:1011B0008001F0808001F0C4800203108001F29869
+:1011C0008001F2F08001F9F48001FA408001F338E7
+:1011D0008001F67C8001FA808001F5648001F510C1
+:1011E0008001FB3C8001F48C8001FBF48001F41051
+:1011F0008001FD948001F3148001FDCC800207542E
+:101200008001FFE88001FF4CEBCD40FE208D306A6D
+:101210001897785378457801FAC2FFE6300B049CA2
+:10122000F01F00384B88F139010BE06AFFFFFB69C2
+:10123000001E300B1A9CF01F0035302A1A9B049CAC
+:10124000F01F0033029A30281A990A9B069CF01F5F
+:1012500000319A194B08F9D9C0101188103CF9B621
+:101260000200F1DCE318E06A00FFF1DAE326EDD9D1
+:10127000E309FBF93C01F9D6E30C1A944A78118A88
+:10128000580AC060F4C80001F9E80008C2918F3C18
+:10129000F01F00238F2CC3106E3A300BF01F001983
+:1012A000FB66001F6E2BFB63001CFB65001D8E7828
+:1012B000F5D8C01020281A9CFB58001AF01F001304
+:1012C000049C1A9B300AF01F00121A99029A0A9B7A
+:1012D000069C3008F01F000F2F8DE3CF90FE9A1868
+:1012E000F4C90001F9E90009F40901095C5912087F
+:1012F000120CBA181206CCCB2F8DE3CD80FE000065
+:1013000080002DE8000086E8800213208001EFAC09
+:1013100080020E200000781D0000781C80002E182E
+:1013200030083019B838B818B828B80A3008994BBE
+:10133000993999285EFCD703EBCD40681893169530
+:101340001496F01F00090C9A0A9BE6CCFFFFF01FD1
+:1013500000060C9A0A9BE6CCFFFEF01F0004E3CDCA
+:10136000806800008001EE048001EE64EBCD4068EF
+:101370001696149518931499169A303BF01F000591
+:101380000A9A0C9BE6CCFFFDF01F0003E3CD8068BA
+:101390008001F9008001EE04EBCD406816961495AB
+:1013A00018931499169A303BF01F00050A9A0C9B6B
+:1013B000E6CCFFFDF01F0003E3CD80688001F9005B
+:1013C0008001EE04D431FACEFFDC189616971494FF
+:1013D000129210907C157C01581AC2D0C153582A21
+:1013E000C1300D893FF8F0091800C2100D98E208CD
+:1013F0001900E08B0005E0081900C6E23FF830094B
+:10140000AC88AC99D83A8E18AE383FF80D89F009FF
+:101410001800C0D00C9C089A0E9BF01F0034089A4C
+:101420000E9BECCCFFFFF01F0031CDCB3008300C11
+:10143000AC98D83296285808C4C0B618AE383008D0
+:101440008B08AC983FFAAC8A8E198E08F208190006
+:10145000FE98FFEE1494ECC3FFFFC1D8E808180013
+:10146000EDF41E000D9A8E188E89F408000B5C783E
+:101470001019123AE0890026AE1B6A082FF88B0873
+:101480000D89E8091800CB318E198E08F208190071
+:10149000FE98FFCEAE39301A0E9B0C9CF01F001345
+:1014A000301A0E9B069CF01F00110D88E4081800EE
+:1014B000CD618E888E990D9A1218103AE08A000E2E
+:1014C0003FF83009AC88AC998E182028AE08C8AB1C
+:1014D0009618B628CB4BDA3A6A0A6E293018F00A09
+:1014E000094810498F29C7EB8001EE04EBCD40403D
+:1014F000201D1A9E9AF65C781ADE1AD6F01F000399
+:101500002FED2FFDE3CD8040800213C4EBCD40E0F2
+:10151000302818951AD8169614973069F01F0007CE
+:101520002FFD580CC0700E9A0C9BEACCFFFEF01FEA
+:101530000004E3CD80E00000800214EC8001EE6442
+:10154000EBCD40E0301818951AD81696149732A9AA
+:10155000F01F00072FFD580CC0700E9A0C9BEACCB0
+:10156000FFFEF01F0004E3CD80E00000800214ECD9
+:101570008001EE04EBCD40E0305818951AD816964D
+:1015800014973029F01F00102FFD580CC190EACCA1
+:10159000FFFE0E9A0C9BF01F000D0E9A0C9BEACCDE
+:1015A000FFFCF01F000B0E9A0C9BEACCFFFBF01F18
+:1015B00000080E9A0C9BEACCFFFAF01F0005E3CD61
+:1015C00080E00000800214EC8001EE648001EE04F3
+:1015D000EBCD40E0301818951AD81696149730398C
+:1015E000F01F00072FFD580CC0700E9A0C9BEACC20
+:1015F000FFFEF01F0004E3CD80E00000800214EC49
+:101600008001EE04EBCD40E0306818951AD81696AC
+:1016100014973049F01F00102FFD580CC190EACCF0
+:10162000FFFE0E9A0C9BF01F000D0E9A0C9BEACC4D
+:10163000FFFDF01F000A0E9A0C9BEACCFFFCF01F86
+:1016400000080E9A0C9BEACCFFFAF01F0005E3CDD0
+:1016500080E00000800214EC8001EE048001EE6462
+:10166000EBCD40E0301818951AD81696149730A98B
+:10167000F01F00072FFD580CC0700E9A0C9BEACC8F
+:10168000FFFEF01F0004E3CD80E00000800214ECB8
+:101690008001EE04D43120BD5019500818961697D9
+:1016A000581AC390C272E06800FDE06900DD1AD8E4
+:1016B000300A3018F01F005C2FFD580CC1E0300AD2
+:1016C0000E9BECCCFFFEF01F0059300A0E9BECCCB9
+:1016D000FFFDF01F0056300A0E9BECCCFFFCF01F04
+:1016E0000053ECCCFFFB0E9B300AF01F0050301C67
+:1016F000C048582AC040301C2F5DD83219893FF8A5
+:10170000F0091800E080008B9618301C2FA8B6183E
+:101710002F5DD83276185058B1485038760A504A62
+:10172000F6E80008F8C2FFFEFAE90018F8C3FFFD6A
+:10173000F6EA0010F8C9FFFBFAEB0020F8C4FFFC42
+:1017400050293FF5FAC0FFD8E06100FDC0680D994F
+:101750008E382FE81208AE281AD030181AD1E06956
+:1017600000DD109A0E9B0C9CF01F00312FED580CE1
+:10177000C4105805FBF5500AFBF8400AF9B90401FA
+:10178000F1D9E408EBD8E405301A0E9B049CF01F55
+:101790000027301A0E9B069CF01F0024301A0E9B67
+:1017A000089CF01F00220DA83009F2081800CD0196
+:1017B0000DB83509F2081800CCB10DC83F29F20860
+:1017C0001800CC61301A0E9B402CF01F00180DD869
+:1017D0004019F2081800CBC14038301CAE28F8057B
+:1017E00009496E2812488F2840095809C8509305A6
+:1017F000C84B4038FB580014FAE80020EEE900100E
+:10180000FAEA0010EEEB0000FAE80018EEE9000832
+:10181000AC9C3FF8AC882F5DD8323008B898300CBB
+:10182000C6CB0000800214EC8001EE04800213C4D9
+:10183000D431207D1895169714961293581AC1101A
+:10184000C0B2300830290C9A0E9B0A9CF01F00325F
+:10185000C5712F9DD832582ACF50301C2F9DD832B9
+:1018600076185018760AF0001410500A1A91F6E80B
+:101870000008F8C4FFFAFAE900083FF6F6EA00109B
+:10188000FAC2FFE8FAEB0010C1A85806FBF65006B2
+:10189000FBF84006F9B90401F1D9E408EDD8E406F3
+:1018A000301A0E9B089CF01F001D0BE8E60818007C
+:1018B000C1D00B998E382FE81208AE280498302931
+:1018C000301A0E9B0A9CF01F0014CE01BA20E2E8E9
+:1018D0000010EEE90010E2E80000EEE90000E2EAA4
+:1018E0000008EEEB00082F9DD83230186E29F00664
+:1018F000094AAE201449109C8F292F9DD8320B988D
+:101900002FF8EACCFFFA0C9A0E9BAA98F01F00035E
+:10191000301CCA5B800216948001EE04EBCD40ECD3
+:10192000206D3019189716931495F01F002DC041A3
+:101930002FADE3CD80ECEECCFFF90A9A069BF01FA9
+:1019400000290A9A069BEECCFFF8F01F00260A9A9F
+:10195000069BEECCFFF7F01F00230A9A069BEECC05
+:10196000FFF6F01F00210A9A069BEECCFFF2F01F53
+:10197000001E0A9A069BEECCFFEEF01F001B0A9A8F
+:10198000069BEECCFFEAF01F001858055F085825AB
+:101990005F091248CCE066085008661886160A9A55
+:1019A0005018EBD8B010BA15E6E80008FAE90008BC
+:1019B0002026E6E20010E06800FD0A16AE961A9BAB
+:1019C000FAE300100E9C1AD8E06900DD3018F01F11
+:1019D00000072FFD2FADE3CD80EC00008002183012
+:1019E0008001EE0480021338800214ECEBCD40EC51
+:1019F000206D189716931495582AC18119893FF8BC
+:101A0000F0091800F9F91801F7F81201F9BA010202
+:101A1000F1DAE108F1D9E108F7F81C01F9B80000A2
+:101A2000F9F80E012FADE3CD80EC3009F01F00195D
+:101A3000CFA0EECCFFF90A9A069BF01F00170A9A76
+:101A4000069BEECCFFF8F01F00145805CEC16608C7
+:101A50005008661886160A9A5018EBD8B010BA15B6
+:101A6000E6E80008FAE900082026E6E20010E0684F
+:101A700000FD0A16AE961A9BFAE300100E9C1AD8C7
+:101A8000E06900DD3018F01F00052FFDCCCB000011
+:101A9000800218308001EE04800214ECD4211295EB
+:101AA0001497580A5F0958055F08169A1248C251E0
+:101AB0000B986E29F0C4FFFEF2C800015BD8E08BE2
+:101AC0000015129C089B5D1A18965806C0C06E0837
+:101AD0006E192FF80809089A0A9B8F088F190C9C19
+:101AE000F01F00080C9CD822089B5D1A300818963D
+:101AF0008F2C8F188F08CEAB30060C9CD82200009C
+:101B000080002DF4EBCD40FC12951494580A5F0927
+:101B100058055F08189212481693C191300995290B
+:101B20006A085808E08A001612966A270E99089AE1
+:101B3000069B049CF01F000B2FF6EEF7FFF86A08D7
+:101B40005807F7B701F80C38FE99FFF2E3CD80FC97
+:101B5000EAE80000F4E900006A2A892AE3CD80FC63
+:101B600080021A9CEBCD40FC18931695581AC2C0FF
+:101B7000C053582AC5E0E3CD80FC78277808580880
+:101B8000FE9AFFFB78195809FE9AFFF796983006DF
+:101B900012087649F20800040F9A0E9B2FEA1414DB
+:101BA000089CF01F00332FF6EEF7FFF86608580781
+:101BB000F7B701F80C38FE99FFF166198A18120878
+:101BC000AA18E3CD80FC96285808C3C0B618F9D8E7
+:101BD000B010AA3C30083012870887188728109464
+:101BE0008A1C8A0E189AFC0C1900C212F7DAC0106F
+:101BF0006A46EC0B00081199F2C7FFFE5827C25045
+:101C0000F1DEC01016181037E0890020E4040949FD
+:101C10006A2B2FF4F3EB0008C1C0F4070008AA18E0
+:101C2000F9D8B010189AFC0C1900CE13E3CD80FC43
+:101C3000781C580CFE9AFFA196181808B618E3CD28
+:101C400080FC961CB62CCC6BAA0CFDDCB010CCBB77
+:101C5000F3EB1008069A8A998B28EC090009485B77
+:101C60006A5CF01F00058A1A8A0ECD8B80002DF465
+:101C700080021F5480021A9CEBCD40F83FF510946F
+:101C80001697149340661388EA081800C05130076D
+:101C90000E9CE3CD80F858045F1858065F991268CF
+:101CA000CF700C9B5D171897C0600C9A089BF01FB3
+:101CB0000004CEFBA685A69CCECB000080002DF4B0
+:101CC000EBCD40C0129EF2E80000F4E9000014974A
+:101CD0007C2A8F2A18961D89169C3FF8F009180057
+:101CE000C1401D993058F0091800E088000F2039D4
+:101CF000E06A5556EA1A5555F20B141FF20A0448C9
+:101D00001619F2090019C02830091AD9189B1C9914
+:101D10000C9C7C280E9AF01F00042FFD8F2CE3CD25
+:101D200080C0000080021C78EBCD406CF2E2000025
+:101D3000F4E30000722895281495722813961AD699
+:101D4000F01F00032FFD8B2CE3CD806C80021C78EC
+:101D5000EBCD406FF2E20000F4E30000F2E0000897
+:101D6000F4E10008F2E20010F4E300101495725858
+:101D700013961AD6F01F00032FFD8B5CE3CD806F06
+:101D800080021C78EBCD406FF2E20000F4E300002B
+:101D9000F2E00008F4E10008724895481495724892
+:101DA00013961AD6F01F00032FFD8B4CE3CD806FE6
+:101DB00080021C78EBCD406CF2E20000F4E30000FE
+:101DC000722895281495722813961AD6F01F0003CE
+:101DD0002FFD8B2CE3CD806C80021C78D421310444
+:101DE00018971AD41696149530183329F01F00143A
+:101DF0002FFD580CC0B05805C0E18C986C4C0F9A60
+:101E0000100CEECBFFFEF01F000F0F998C1812087C
+:101E1000AC18D8225815CFA10F9AE80A1800E0880C
+:101E200000073FF83009AE88AE99CF0B8C986C4B09
+:101E3000EECCFFFE100BF01F0003CE8B800214ECE3
+:101E400080002DF4D42130181897169614953084FC
+:101E500010991AD4F01F00142FFD580CC0B058056B
+:101E6000C0E18C986C4C0F9A100CEECBFFFEF01F6B
+:101E7000000F0F998C181208AC18D8225815CFA152
+:101E80000F9AE80A1800E08800073FF83009AE888A
+:101E9000AE99CF0B8C986C4BEECCFFFE100BF01F65
+:101EA0000003CE8B800214EC80002DF4EBCD40E0DB
+:101EB000320930081AD91895169714961099F01F00
+:101EC00000132FFD580CC0F05806C0F18E986E4CD0
+:101ED0000B9A100CEACBFFFEF01F000D0B998E1829
+:101EE0001208AE18E3CD80E05816CF918E986E4B55
+:101EF0000B9A100BEACCFFFEF01F00050B998E1811
+:101F00001208AE18CF0B0000800214EC80002DC424
+:101F1000D421201D78091896F2C800015BD8E08B07
+:101F20000014F2C80008C0E01A943005C0280E98CA
+:101F3000500870079105680CF01F00068D055807C2
+:101F4000CF712FFDD822300899082FFDD82200002C
+:101F500080002E00EBCD40C018971696F6CCFFF807
+:101F6000F01F000DC130EEF8FFF8EEC90008990827
+:101F7000F8C7FFF8930C99160C9AE06B00FF0E9CC3
+:101F8000F01F00060E9CE3CD80C018970E9CE3CD99
+:101F900080C0000080002E1880002DE8EBCD40FCB2
+:101FA00032E818931AD81692149430683079F01FDA
+:101FB00000232FFD580CC031E3CD80FC089A049B10
+:101FC000E6CCFFFEF01F001E07993058F0091800FC
+:101FD000E088001F2039E06A5556EA1A5555F20B81
+:101FE000141FF20A0448F20B01055814C180300690
+:101FF0000C972FF6662C08990E0C049A2FD7303BBD
+:10200000F01F00100C35FE99FFF6E3CD80FC58144C
+:10201000F9B80000E7F80A02E3CD80FCEA050017F2
+:10202000645C0E9BF01F0008872CCC700E9A300B5E
+:10203000F01F0006CDDB0000800214EC800206FCDD
+:102040008001F90080021F5480002DE8D4211896E9
+:1020500016951497582AC16119893FF8F00918009C
+:10206000F9F91801F7F81201F9BA0102F1DAE108F9
+:10207000F1D9E108F7F81C01F9B80000F9F80E01F0
+:10208000D82230083049F01F000CC0C00D98F0C4B1
+:1020900000045817C0800E990A9A089B6C2CF01FF8
+:1020A0000007D822089B6A5CF01F00058D2CCF41E9
+:1020B000CF9B0000800216948001F90080021F541B
+:1020C000EBCD40FC206D189416951493582AC181CD
+:1020D00019893FF8F0091800F9F91801F7F8120109
+:1020E000F9BA0102F1DAE108F1D9E108F7F81C01C7
+:1020F000F9B80000F9F80E012FADE3CD80FC3008EF
+:102100003019F01F0040CF906A1E501E6A0A500A14
+:10211000EAE80008FAE90008EAEA0010FAEB001021
+:10212000EDDEB0105813C600E8C7FFFA0999ECC8F5
+:10213000FFFE12080E9CE5D8B010069A0A9BF01F0D
+:1021400000328A18E4081900CD82069A0A9BE8CC6E
+:10215000FFF8F01F002E8A18E4081900CCE2E8CC42
+:10216000FFF4069A0A9BF01F0028685C8869300813
+:10217000F0091900C0E0189630070C9C2FF7069A5A
+:102180000A9BF01F00222FC688E80E38FE99FFF741
+:102190008A18E4081900CB12069AE8CCFFF20A9BD1
+:1021A000F01F0019685888E9887AF009002C300877
+:1021B000F00A1900C0E0189630070C9C2FF7069A19
+:1021C0000A9BF01F00132FC688F80E38FE99FFF700
+:1021D0008A18E4081900C912069A0A9BE8CCFFF095
+:1021E000F01F0009C8ABE8C7FFFA30EA300B0E9CBD
+:1021F000F01F0008099B6A5CF01F0007895CC97B1F
+:10220000800216948001EE64800213988002136CA1
+:1022100080002DE880021F54EBCD40FC206D189407
+:1022200016951493582AC18119893FF8F0091800AE
+:10223000F9F91801F7F81201F9BA0102F1DAE10827
+:10224000F1D9E108F7F81C01F9B80000F9F80E011E
+:102250002FADE3CD80FCE06800FF33091AD83008C9
+:10226000F01F00532FFD580CCF406A1E501E6A0A03
+:10227000500AEAE80008FAE90008EAEA0010FAEB76
+:102280000010EDDEB0105813E0800085E8C7FFFEB7
+:102290000999ECC8FFFE12080E9CE5D8B010069A0A
+:1022A0000A9BF01F00448A18E4081900CD22069A00
+:1022B0000A9BE8CCFFFCF01F00408A18E4081900D4
+:1022C000CC82E8CCFFF8069A0A9BF01F003A684CD3
+:1022D00088493008F0091900C0E0189630070C9CB6
+:1022E0002FF7069A0A9BF01F00342FC688C80E38B5
+:1022F000FE99FFF78A18E4081900CAB2069AE8CCDA
+:10230000FFF60A9BF01F002B684888C9885AF0091D
+:10231000002C3008F00A1900C0E0189630070C9C19
+:102320002FF7069A0A9BF01F00252FC688D80E3873
+:10233000FE99FFF78A18E4081900C8B2069A0A9BAA
+:10234000E8CCFFF4F01F001B8A18E4081900C8123B
+:10235000069AE8CCFFF20A9BF01F001688C988D8BD
+:102360001208684A8879F408002C3008F00919002E
+:10237000FE90FF70189630070C9C2FF706990A9A6A
+:10238000310BF01F000F2F0688F80E38FE99FFF66C
+:10239000C60BE8C7FFFE30EA300B0E9CF01F0009A9
+:1023A000099B6A5CF01F0008894CC73B800214EC53
+:1023B0008001EE64800213988002136C8001F900A2
+:1023C00080002DE880021F54EBCD40E0E06800FE65
+:1023D00018971AD81695149630483059F01F0016E1
+:1023E0002FFD580CC031E3CD80E0EECCFFFE0C9AFF
+:1023F0000A9BF01F00120C9A0A9BEECCFFFDF01F07
+:10240000000F0C9A0A9BEECCFFFCF01F000C581634
+:10241000C0A00F9B0C990A9A6E2C203BF01F00085D
+:10242000E3CD80E00F9B6A5C203BF01F00068F2C01
+:10243000CF11CDAB800214EC8001EE048001F900D5
+:1024400080021F54EBCD40E018951696F6CCFFF8AD
+:10245000F01F000CC120991630089908F8C7FFF842
+:102460000C9A5805EBF71A05E06B00FF0E9CF01F65
+:1024700000060E9CE3CD80E018970E9CE3CD80E033
+:1024800080002E1880002DE8EBCD40C0201DF8C63E
+:102490000008300C6C1BF01F0014C1A0500C30075A
+:1024A000C1286C1B400CF01F00111897C1406C1A1A
+:1024B000ECCBFFF8EF4AFFFC0E9CF01F000D6C0602
+:1024C0005806C0505807CEE14007CF2B400C2FFDD7
+:1024D000E3CD80C01A9CF01F00070E9C2FFDE3CDBA
+:1024E00080C000008002244480021F5480002DF42C
+:1024F00080021F10D42118941696149530CCF01F2A
+:1025000000121897C1D0301899069915F00609469F
+:10251000EC0C1502F01F000C8F2CC0F05806E08A5E
+:10252000000B3009129A6E28F009092A2FF9123689
+:10253000FE99FFFB8907DA2A0E9CF01F00043FDC9E
+:10254000D822000080002E1880002E00D43118936D
+:10255000169214901291580CC36078093018760CBA
+:10256000F0090945580CC390189468160A36C1A49E
+:1025700068075807C0606E480238C1B03FCCD832F7
+:10258000662CF80603275807CF71ECC8FFFFF80840
+:10259000002CC0582FF819075807CEE110960A38BA
+:1025A000CFA5089CF01F001330083FEC8508D832F7
+:1025B000029A009C6E3BF01F0010301C89166E08BA
+:1025C0008908D832760C580CC040F01F000ADA3A5D
+:1025D00066093018F0090945308CF01F000818947E
+:1025E000C060850C300899189908CC0BD8320000CF
+:1025F00080002E0080002DF480002E18D43110941D
+:102600001290781840961895169214910C9B780A9F
+:10261000089C5D181893318CF01F00131897C1F0B7
+:102620000C9CF01F00118F3CC170089B0C9AF01F8E
+:10263000000F30088F468F128F218F508F086A2924
+:10264000F203002C78085808C0C010997008580888
+:10265000CFD19307DA3A0E9CF01F00053FDCD83249
+:102660009907DA3A80002E1880002DF480002E00A1
+:10267000D431203D501C500B149112921090580AE6
+:10268000C4307418009B740A129C5D18A36C502C03
+:102690006228F00C03075807C3706E450A9900358D
+:1026A000C3610E940E93C0986E075807C2D008936A
+:1026B0006E490A39C2C10E946E3B0A9A049CF01FFF
+:1026C00000181896CF2140196E18930840086E29FB
+:1026D00091098F1C8F2C6E3CF01F00128F468F3695
+:1026E00040296228F009000C78090E39EFF8000043
+:1026F000F9F80A00EFF81000E7F81A000E9CF01F36
+:1027000000092FDDDA3A3FEC2FDDD8326E38580859
+:10271000CFB00039CF903FCC2FDDD83280002D9440
+:1027200080002E00163C5E0C7808971C990B9708C9
+:102730005808F1FB1A015EFC78195809F9F81000E5
+:10274000F3F81A0078085808F1F91A0130089908C6
+:1027500099185EFC4848300A48499118910A930A32
+:102760005EFF00000000782000007828EBCD406874
+:1027700016951893F6CCFFEDF01F0022314A1896FB
+:10278000300BF01F00210A9A8D15ECCCFFF0069B50
+:10279000F01F001E49EAF5090042AC09F5080042A5
+:1027A0002FF8F558004249B530088D286A198D393F
+:1027B00093062F868B1649866C08F0C9FFFF8D099A
+:1027C0005909E08800180A936A0C782A580AF9F81F
+:1027D0000003E7F80A01F9F81003F5F81A032019C5
+:1027E0007838910A8D09F01F000D6C095909FE9B7C
+:1027F000FFED300A326C149BF01F0009E3CF9068A4
+:1028000080002E1880002DE880002DF4000086E85E
+:10281000000078200000782880002E0080014914F4
+:10282000EBCD40E030961697305E300B33A519891A
+:10283000F2C80030EC081800E08B0019F2CA003032
+:10284000580AC2C51999F2C80030EC081800E08B8C
+:102850000017F2C800305808C215F1EA1048EE0B14
+:102860000B08585BC291E3CF80E0F2C80061FC081E
+:102870001800E08B000EF2CA0057CE3BF2C8006190
+:10288000FC081800E08B000DF2C80057CE5BF2C8C0
+:102890000041FC081800E088000DE3CFC0E0F2C85A
+:1028A0000041FC081800FE9BFFFAF2C80037CD4B30
+:1028B000F2CA0037CC6B19A8EA081800CEF12FFB3A
+:1028C000586BCD202FDCCB4BEBCD40E01696149708
+:1028D000580AC4C0300B3095305EC1B8F2CA00301F
+:1028E000580AC3651999F2C80030EA081800E08B4D
+:1028F0000021F2C800305808C2B5F1EA1048580863
+:10290000C275EC0B0B082FFB1637E08800302FEC5C
+:102910001989F2C80030EA081800FE98FFE1F2C8F1
+:102920000061FC081800E08B000EF2CA0057CD9B36
+:10293000F2C80061FC081800E08B000DF2C80057D7
+:10294000CDBBF2C80041FC081800E088000DE3CFC1
+:10295000C0E0F2C80041FC081800FE9BFFFAF2C874
+:102960000037CCABF2CA0037CBCBE3CF80E0F6CA5E
+:1029700000015E6CF80A000913882FF85C58B288D1
+:102980005E1CF6C80002100CC08819882FF85C582D
+:10299000B888201C58085E1C201ACF875EFC5EFC9D
+:1029A000EBCD40C049071696189BE0460020F9B6CB
+:1029B0000B200E9C0C9AF01F000D3008EE060B0841
+:1029C0000F885808C0D00E9C35E935FA2208F20865
+:1029D0001800F9FABE002FFC19885808CF81482C3E
+:1029E000E3CD80C00000782C80002DF4EBCD40FEBC
+:1029F00018911492169C1293580BC2A0E20B00047B
+:102A00005809C20002973006C0881835E08A0014C1
+:102A100018070C33E0880018E4060708E8070105EA
+:102A20001AD80E9C48CA0A9B2FF6F01F000C2FFDE7
+:102A3000580CCEC43008EE01010CE968FFFFE3CD6D
+:102A400080FE02973008EE01010CE968FFFFE3CD3C
+:102A500080FE00008003CBE880002D60580CC14050
+:102A6000F8FC00D0580CC1002FCCF8F8FFFC580837
+:102A7000C04178095809C0901638C0302F8CCF6BF0
+:102A800078081438CFC15EFF5EF9780C580C5E0CE4
+:102A900078281638C0515EFC782816385E0C780C01
+:102AA000580CCFB15EFC30383189F94800F0F94854
+:102AB0000058F948005431E8F949004CF9480050F1
+:102AC0003FF9E0680576F949017CF948019C5EFC14
+:102AD000EBCD40E018961695344CF01F000C18977B
+:102AE000C11030189978993899485806C0500C9CF4
+:102AF000F01F00078F5C5805C0500A9CF01F0004AF
+:102B00008FBC0E9CE3CD80E080027EA880002DACBF
+:102B1000EBCD40C0169679075807C051C0C86E3734
+:102B20005807C0906E0C0C9BF01F0004CF910E9CB8
+:102B3000E3CD80C0E3CF80C080002DB8EBCD40FC5A
+:102B400016951894580C5F0B58055F081493104B9A
+:102B50001292C0403FFCE3CD80FC580ACFC048E74A
+:102B60003006C0682FF62E07E0460038CF406E0BC7
+:102B70000A9CF01F000ACF710699049A089B0E9CCC
+:102B80006E185D18F9BC01FFF9BC0000E046003882
+:102B9000CE31CE1B8003BDB880002DB8EBCD408078
+:102BA0001897580CC0A0780CF01F00056E1CF01F81
+:102BB00000040E9CF01F0002E3CD808080002E00F8
+:102BC000D4211894169579075807C1A03006C0681B
+:102BD0000E966E3C580CC14018970A9B6E0CF01F65
+:102BE0000009CF715806EFF81003EDF81A03EFF85B
+:102BF0000003E9F80A100E9CF01F0003D82ADC2A13
+:102C000080002DB880022B9CEBCD40601696189565
+:102C1000760BF01F00056B088D38EB460040E3CDC6
+:102C20008060000080022BC0D431202D500B129CFC
+:102C3000F01F003C1890C730198A580AC67030013E
+:102C400018965011320230930294C0382FF60D8A34
+:102C5000E40A18005F08E60A18005F091248E8084D
+:102C60001800CF51580AC2C00D87E40718005F183A
+:102C7000E60718005F191268E8081800C4505807E2
+:102C8000C4300C95C0385807C0D02FF50B87E40727
+:102C900018005F18E60718005F191268E8081800A6
+:102CA000CF31AA844A0B0C9CF01F0020C171A1A156
+:102CB0005807C060EAC6FFFF0D8A580ACCA1009CE5
+:102CC000F01F001B5801C2404008F141005C401950
+:102CD0005809C251129C2FEDD832496B0C9CF01F41
+:102CE0000013C031A1B1CE5B0C9C493BF01F000F1B
+:102CF000F9B80004E3D8E031FBF91001F7B901FF9E
+:102D0000FBF91A01CD6B0C95CCDBF01F00093008E4
+:102D100040093FFCF348005C2FEDD8322FEDDC3A40
+:102D200080002DAC8003C4BC80002DB880002E0034
+:102D30008003C4C48003C4CCEBCD40FE169CF01FBE
+:102D400000451891C6B0198A580AC7A018963002D3
+:102D500032033094E80A18005F08E60A18005F0999
+:102D600010493008F0091800C0E0109B2FF60D8ABA
+:102D7000E60A18005F08E80A18005F091248F6081A
+:102D80001800CF51580AC4500D87E80718005F1883
+:102D9000E60718005F1910693008F0091800C370C1
+:102DA0005807C350109A0C95C0385807C0D02FF55B
+:102DB0000B87E60718005F18E80718005F1912680C
+:102DC000F4081800CF3130084A3BAA880C9CF01F49
+:102DD0000023C0F1A5A25807C060EAC6FFFF0D8A14
+:102DE000580ACB91029CF01F001E049CE3CD80FE8C
+:102DF00049CB0C9CF01F0019C031A3B2CEDB49AB0C
+:102E00000C9CF01F0016C0E1A3A2CE6B0C95CDCB9D
+:102E1000029CF01F00135802CE913FF2049CE3CDB8
+:102E200080FE492B0C9CF01F000DC031A1B2CD4B90
+:102E30000C9C48FBF01F0009C071A1A2CCDBF01F65
+:102E400000083FF2CD3B029C3FF2F01F0005CCEBA7
+:102E500080002DAC80036FC080002DB880002E0054
+:102E600080036FCC8003C4D48003C4DC8003B2B081
+:102E7000EBCD40801697149C129BF01F00085BFC62
+:102E8000C031E3CFC0801898E018FFE1CFB1EF4C1C
+:102E90000050109CE3CD808080022D38EBCD408027
+:102EA0001697149C129BF01F00085BFCC031E3CF07
+:102EB000C0801898E018FFE6CFB1EF4C004C109C92
+:102EC000E3CD808080022D38D431201D500B129C20
+:102ED000F01F00481891E080007F198A580AC6B098
+:102EE00030021896049032033094E80A18005F0804
+:102EF000E60A18005F0910493008F0091800C0E020
+:102F0000109B2FF60D8AE60A18005F08E80A1800E1
+:102F10005F091248F6081800CF51580AC2F00D8711
+:102F2000E80718005F18E60718005F1910693008F5
+:102F3000F0091800C3E05807C3C0109A0C95C038B8
+:102F40005807C0D02FF50B87E60718005F18E80771
+:102F500018005F191268F4081800CF3130084A6B66
+:102F6000AA880C9CF01F0025C161A1B25807C0605F
+:102F7000EAC6FFFF0D8A580ACB91029CF01F002081
+:102F80005802C1B04009F34200545800C241009CAD
+:102F90002FFDD83249BB0C9CF01F0018C031A1A2F4
+:102FA000CE6B499B0C9CF01F0015C0E1A3B2CDFB7A
+:102FB0000C95CD5BF01F0012300840093FFCF34830
+:102FC00000542FFDD832491B0C9CF01F000CC0513F
+:102FD000A3A2CCDB2FFDDC3A0C9C48DBF01F0007E2
+:102FE000F9B80010E5D8E032F7B001FFCC0B0000D3
+:102FF00080002DAC8003B29080002DB880002E00A0
+:103000008003C4E48003C4EC8003B2B08003B2AC9C
+:10301000D431202D500B129CF01F00391890C6D0CF
+:10302000198A580AC610300118955011320230938F
+:103030000294C0382FF50B8AE40A18005F08E60AEC
+:1030400018005F091248E8081800CF51580AC2C09A
+:103050000B87E40718005F18E60718005F1912686D
+:10306000E8081800C3F05807C3D00A96C0385807BC
+:10307000C0D02FF60D87E40718005F18E607180088
+:103080005F191268E8081800CF31AC8449DB0A9C4C
+:10309000F01F001DC171A1A15807C060ECC5FFFF62
+:1030A0000B8A580ACCA1009CF01F00185801C1E0FF
+:1030B0004008F141005840195809C1F1129C2FED08
+:1030C000D832493B0A9CF01F0010C031A1B1CE5B41
+:1030D0000A9C490BF01F000CCFA040192FF9501982
+:1030E000CDCB0A96CD3BF01F0009300840093FFCCC
+:1030F000F34800582FEDD8322FEDDC3A80002DAC8C
+:103100008003C4F880002DB880002E008003C4FC2A
+:103110008003C500EBCD40401896784CF01F004668
+:103120006D2CF01F0045ECFC00D0F01F00436DAC8F
+:10313000F01F00416DCCF01F00406DECF01F003E11
+:10314000ECFC0080F01F003CECFC0088F01F003A13
+:10315000ECFC0090F01F0038ECFC0094F01F0036EF
+:10316000ECFC0098F01F0034ECFC009CF01F0032D7
+:10317000ECFC00A0F01F0030ECFC00A4F01F002EBF
+:10318000ECFC00A8F01F002CECFC00ACF01F002AA7
+:10319000ECFC00B0F01F0028ECFC00B4F01F00268F
+:1031A000ECFC00B8F01F0024ECFC00BCF01F002277
+:1031B000ECFC00C0F01F0020ECFC00C4F01F001E5F
+:1031C000ECFC00C8F01F001CECFC00CCF01F001A47
+:1031D000ECFC00D4F01F0018ECFC00D8F01F001627
+:1031E000ECFC00DCF01F0014ECFC00E0F01F00120F
+:1031F000ECFC00E8F01F0010ECFC00ECF01F000EEF
+:10320000ECFC0150F01F000CECFC016CF01F000AFC
+:10321000ECFC0180F01F0008ECFC018CF01F0006A4
+:10322000ECFC01A0F01F00040C9CF01F0003E3CD98
+:103230008040000080002E00EBCD40C0189678083A
+:103240005808C031C0880E987007109CF01F0015F8
+:103250005807CFA16D085808C031C0880E98703744
+:10326000109CF01F00115807CFA16C5CF01F000FDD
+:103270006C6CF01F000E6C8CF01F000C6C9CF01F2F
+:10328000000B6CACF01F00096CBCF01F00086C1C3C
+:10329000F01F00060C9CF01F0005E3CD80C000006D
+:1032A0008002311480022B9C80002E00EBCD404028
+:1032B000320818961AD8E0691000F8C8FFDC785A6E
+:1032C000784B792CF01F000430182FFDED48004496
+:1032D000E3CD80408002A1D8D421F60815011695CF
+:1032E000F0C6FFFF18940C9CF01F00061897C060F2
+:1032F0000A99089A0C9BF01F00040E9CD82200002B
+:1033000080027EA8800229ECEBCD40E0169518964D
+:10331000F6CCFFFDF01F00091897C0C00C9B0A9A5D
+:10332000322618C6F01F0006EE0500093008B296D6
+:10333000B2A80E9CE3CD80E080002E1880002DF412
+:10334000D401580CC1D0580BC160198835E9220846
+:10335000F2081800E08B0013129A3009C088F809AF
+:1033600007082208F4081800E08B00092FF9123B27
+:10337000FE9BFFF7F01F0003D802F01F0003D802E6
+:1033800080023308800232D8D4011698F6FC01403E
+:10339000580CC060189BF0CCFEDCF01F0002D80275
+:1033A00080023340D4011698F6FC013C580CC060F2
+:1033B000189BF0CCFEECF01F0002D80280023340D4
+:1033C000D4011698F6FC0138580CC060189BF0CC5C
+:1033D000FEFCF01F0002D80280023340D401169890
+:1033E000F6FC0134580CC060189BF0CCFF0CF01FA9
+:1033F0000002D80280023340EBCD40F831EC169445
+:10340000F01F00281896C3906979F8C3FFE2EDB960
+:103410000000C3601897EDB90001C1614A294A381C
+:103420000C37F2081710E60701051AD84A0A0A9B5A
+:103430000E9CF01F00202FFD580CC1C51835E08AE6
+:10344000001A18076979EDB90002C1714969497814
+:103450000C37F20817100E9C1AD8E6070107496AC4
+:103460000E9BF01F00142FFD580CC0451837E08943
+:1034700000053008E768FFFF0C9CE3CD80F848B8F2
+:1034800048EA1AD831EBF01F000B2FFD580CCF255E
+:1034900059DCFE99FFF0EC0C00076979CBDB0000EA
+:1034A00080027EA8800376B080038BD48003C51091
+:1034B00080002D608003C51C8003C508EBCD40F85B
+:1034C0001894332CF01F003E1896C650F8C3FFCE58
+:1034D000EDB40004C6301897EDB40003C1514B9908
+:1034E0004B980C37F2081710E60701051AD84B7AEB
+:1034F0000A9B0E9CF01F00362FFD580CC495183502
+:10350000E08A00471807EDB40002C1514AD94AE8E1
+:103510000C37F2081710E60701051AD84ADA0A9B99
+:103520000E9CF01F002B2FFD580CC3251835E08A88
+:1035300000301807EDB40001C1514A294A280C3760
+:10354000F2081710E60701051AD84A3A0A9B0E9CA2
+:10355000F01F001F2FFD580CC1B51835E08A001967
+:103560001807EDB40000C171496949780C37F208B9
+:1035700017100E9C1AD8E6070107498A0E9BF01F08
+:1035800000142FFD580CC0451837E089000530089D
+:10359000E768FFFF0C9CE3CD80F848B8490A1AD8C9
+:1035A000332BF01F000B2FFD580CCF25E04C0031C2
+:1035B000FE99FFEFEC0C0007C90B000080027EA80B
+:1035C000800376B080038BD48003C52C80002D60EF
+:1035D0008003C5348003C5408003C5488003C524EB
+:1035E000D401774CF01F0002D8020000800234BCE6
+:1035F000D401773CF01F0002D8020000800234BCE6
+:10360000EBCD40F8332C1693F01F00401896C6906F
+:103610006759F8C4FFCEEDB90001C6601897EDB93F
+:103620000000C1614BA94BB80C37F2081710E8072E
+:1036300001051AD84B8A0A9B0E9CF01F00382FFDFB
+:10364000580CC4C51835E08A004A18076759EDB907
+:103650000003C1614AE94AF80C37F2081710E8077D
+:1036600001051AD84AEA0A9B0E9CF01F002C2FFD78
+:10367000580CC3451835E08A003218076759EDB970
+:103680000002C1614A294A380C37F2081710E807CE
+:1036900001051AD84A3A0A9B0E9CF01F00202FFD04
+:1036A000580CC1C51835E08A001A18076759EDB9DA
+:1036B0000004C171496949780C37F20817100E9C53
+:1036C0001AD8E8070107498A0E9BF01F00142FFD46
+:1036D000580CC0451837E08900053008E968FFFF3D
+:1036E0000C9CE3CD80F848B8490A1AD8332BF01F58
+:1036F000000B2FFD580CCF25E04C0031FE99FFEF59
+:10370000EC0C00076759C8CB80027EA8800376B016
+:1037100080038BD48003C55C80002D608003C56866
+:103720008003C5488003C5748003C550EBCD40C0FD
+:1037300030AC1696F01F00181897C1806D69EDB96E
+:103740000000C170189A301BEDB90001C0F1493872
+:103750004939580BF0091700149C1AD9EECBFFF623
+:10376000141B490AF01F00102FFD0E9CE3CD80C0F2
+:1037700048B848EA1AD830ABF01F000B2FFD580CA0
+:10378000CF55589CFE99FFF3EE0C000A6D69300B83
+:10379000CDCB000080027EA8800376B080038BD45E
+:1037A0008003C58880002D608003C580EBCD40C0BC
+:1037B0001697768C580CC05118960C9CE3CD80C09F
+:1037C000314CF01F00101896CF90EF38001DEF3AE3
+:1037D00000181AD8EF39001C1AD9EF38001B1AD874
+:1037E000EF39001A1AD9EF380019314B1AD81ADA02
+:1037F000485AF01F000630082FADED680013CDEBDE
+:1038000080002E188003CC0080002D60EBCD40E0BE
+:1038100078351696314CF01F000A1897C0C0EC0599
+:103820000308488A1AD8314BF01F000730082FFDD3
+:10383000EF6800130E9CE3CD80E0000080002E189E
+:103840008003CF1880002D60EBCD40801697772C39
+:10385000580CC090F01F0009189B6F2CF01F000837
+:10386000E3CD8080771C580CC060F6CCFFDC320BB7
+:10387000F01F0004E3CD808080002DD0800233084B
+:10388000800232D8EBCD40807838F60800076E0809
+:103890005808C0C0784C580CC0C0F60C030C189BDC
+:1038A000109CF01F0007E3CD8080109CE3CD80804A
+:1038B000109CF01F00046E08CF3B000080023340D4
+:1038C00080002DD0EBCD40F8322816941896198937
+:1038D000F0091800C0A0F01F001BEBDCC001C19074
+:1038E00030070E9CE3CD80F8F8C7FFFF322B0E9C0B
+:1038F000F01F0015CF6019985808CF31B8880E9C7A
+:10390000F01F0010890C0E9CF01F00101897CEAB12
+:10391000F8031601E6CCFFFFF01F000D1897CE202C
+:103920000C9C069A0E9BF01F000BC051EE030B0C73
+:103930008903CD8B0E9C0A97F01F0007CD3B00003A
+:1039400080002DD080002D7080002DAC80002E18BE
+:10395000800228C880002E00D421205D1895109484
+:10396000129C1696F01F000F1897C1906C0A590A06
+:10397000E08B0014189B0A9CF01F000B0E9CF01F9C
+:10398000000B48BA1AD4314BFACCFFFCF01F0009E7
+:10399000300C2FFD2FBDD822F01F00042FBDDC2AD4
+:1039A000800238C480002DF480002E008003C59072
+:1039B00080002D60D4013038F6CCFEDCF6CBFEC0A2
+:1039C000F01F0002D802000080023958D4013028CC
+:1039D000F6CCFEECF6CBFEC4F01F0002D8020000CD
+:1039E00080023958D4013018F6CCFEFCF6CBFEC864
+:1039F000F01F0002D802000080023958D4013008BC
+:103A0000F6CCFF0CF6CBFECCF01F0002D802000073
+:103A100080023958EBCD40F8201D18971693129C60
+:103A20001A9BF01F00171895C2306E595809C050E4
+:103A300040081039E08B00206E695809C0404008EA
+:103A40001039C1336E366E44E60600066C0CF01F6A
+:103A5000000D8D056E4C580CC0504008300CE6042B
+:103A600009082FFDE3CD80F80A9CF01F00062FFD0A
+:103A7000E3CFC0F8F01F00033FFCCF4B800238C4F7
+:103A800080002E00EBCD40FEF6F700D05807C05165
+:103A90000E94089CE3CD80FE364CF01F001918945C
+:103AA000CF90EEC6FFFCF8C3FF9C189749514962BE
+:103AB000ECFCFFFC580CC2116C0B580BC1A02F86FC
+:103AC000F01F0012CF600837E2081700E408171053
+:103AD0001ADCE60701051AD80E9C48DA0A9BF01F8B
+:103AE000000D2FED1807580CC0451835FE99FFE260
+:103AF0003008E768FFFFCCEB6C0BCE2B80027EA872
+:103B000080038BD4800376B0800261408003C59C23
+:103B100080002D60D431205D500B129CF01F0056A8
+:103B2000502CE080008E198A580AE080009B3009F2
+:103B30004026501950391290504932023093129455
+:103B4000C0382FF60D8AE40A18005F08E60A18004C
+:103B50005F091248E8081800CF51580AC4E00D87E1
+:103B6000E40718005F18E60718005F191268E808F4
+:103B70001800C6405807C6200C95C0385807C0D05A
+:103B80002FF50B87E40718005F18E60718005F1988
+:103B90001268E8081800CF31AA842FF0403CE00BEF
+:103BA0001503F01F00361891C4E040490C9CE2094F
+:103BB00000060C9BF01F00328D1C6C085808C14198
+:103BC000580CC10140182FF850185807C1504048F0
+:103BD0002F885048EAC6FFFF0D8A580AC3C05031EB
+:103BE000CB3B591CC2404009F2F801782FF8F3484A
+:103BF00001785807CED15031E0C8FFFFF007150318
+:103C0000402CF01F00200E9B403CF01F001CC2E027
+:103C1000F80000393008931893084008F14C00D0A0
+:103C200040195809C0D1129C2FBDD8324009F2F872
+:103C300001742FF8F3480174CC9B0C95CAEB3FFC40
+:103C40002FBDD832403CF01F000F402CF01F000D5C
+:103C50002FBDDC3AE0C8FFFF5031F0071503CD1B44
+:103C6000501A3087503A1490CCCB403CF01F0005DE
+:103C70003FFCCE7B80002DAC80002E0C800261903A
+:103C800080002E00D4213228129716951389F0094E
+:103C90001800C0A0320A2DCB0E9CF01F00271896EA
+:103CA000C2F03FFCD822EEC6FFFF322B0C9CF01F67
+:103CB0000023C3C0F8060107EEC80008E04800373B
+:103CC000FE9BFFF16B2C580CC060F01F001D0E3CDA
+:103CD000C2606B2C3004EB440044F01F001AEECCA1
+:103CE000FFFFF01F0019EB4C0048CDC00C9B0E9A53
+:103CF000F01F00166B28089CF0070B04D822EF3940
+:103D00000040F8091800CCE16B2CF01F000E3018B1
+:103D1000EB4600480C9CEB480044D8220E9A0C9BC2
+:103D20006B2CF01F000BCD61CBEB0C9CF01F000443
+:103D30001897CC3B800228C880002D7080002DD0C1
+:103D400080002E0080002E1880002DF480002D941D
+:103D5000EBCD40801697129C2E8BF01F0006F9BC0D
+:103D600001FFF9B80001EFF80A08E3CD80800000F8
+:103D700080022820EBCD40C018976E38129CF00BC3
+:103D8000000630AA300BF01F000C8D0C18996E58ED
+:103D90005808C030103CC0956E6C580CC0401839A3
+:103DA000E0890007E3CF80C08D08E3CFC0C08D0C51
+:103DB000E3CFC0C080002D88D42116941895782BAD
+:103DC000580BE08A00557817683E6E0C78381C381E
+:103DD000C410EECAFFFC3009C058150C78381C38E6
+:103DE000C3902FF91639CFA52FFB0E9CA36BF01FA4
+:103DF00000241896C3506A2C580CE08A003B6C08CB
+:103E0000683E70391C39C355ECC8FFFC300AC0A8A5
+:103E100010977008F40B15027039EEC8FFFC1C39BE
+:103E2000C2052FFA143CFE99FFF5F4C8FFFFEC0A17
+:103E3000002BA3681697F80A010AEC08000CA36A85
+:103E4000F01F00108F048B166A28300C2FF88B2877
+:103E5000D8221898781C580CCFD19114D822DC2A7B
+:103E6000F4C8FFFFEC0B000BA368CE6B7817CBDB1D
+:103E70000C97300A30480C9BCDFB000080002E0CC4
+:103E800080002DDCD4211895781CF01F000D300C1B
+:103E90008B1C8B2C6A075807C0F0189618948F1447
+:103EA0000E9B0A9CF01F00076E07F9B605FF580726
+:103EB000CF710C9CD8220E96CFDB000080002E0024
+:103EC00080023DB8D421189578095809C1E03FFA1D
+:103ED000C02810997228F4080C4A72085808CFA11B
+:103EE000F4C4FFFF1296E06C01A8F01F000A1897B7
+:103EF000C0A099245806EDFC1A00EBFC0A000A9CAD
+:103F0000F01F00050E9CD82212961294CEDB000002
+:103F100080027EA880023E845EFD5EFD5EFD5EFD49
+:103F20005EFD5EFDD401584BC0E0E0880007586B91
+:103F3000C0A0587BC040D802580BC091300CF01F75
+:103F40000005D802301CF01F0003D802D802000080
+:103F50008001CCE0D401581BC070300A323C149B65
+:103F6000F01F0005D80A300A322C149BF01F000203
+:103F7000D80A000080014914EBCD40FE201D1094AA
+:103F800012921695F01F0057E8C8FFF25C7C4D694D
+:103F9000F00C0006F33A0109580AC060EC0A0D085B
+:103FA0005809E081008F3003500CE6060001029CA6
+:103FB000F01F004E0A9B1897306A400CEE0C000C64
+:103FC000F01F004B400C306A4CAB140CEE0C000C94
+:103FD000F01F0047400C302A4C7B2F4CEE0C000C9D
+:103FE000F01F0043400C089A049B2F2CEE0C000C91
+:103FF000F01F003FFAC8FFFC3005114A0E991AD590
+:10400000EE0A000C1AD5EC0A010A30EBF01F003B57
+:104010002FED581CC5914009EC090108E048003E0D
+:10402000E08B00108E085CC806085CC8AED3029B0B
+:104030000E9CAE08F01F0032300C2FFDE3CD80FE49
+:10404000EE09000E3888FD39000CF0091800CEB1D9
+:10405000FD39000D38E8F0091800CE51FD38000E8A
+:10406000F8081800CE01FD39000F3038F0091800AB
+:10407000CDA13028FD3A0012F00A18005F1B3FE87E
+:10408000F00A18005F19126BEA0B1800CCC1FD385A
+:104090000013E218001D5818CC61FD380014E21816
+:1040A00000C85888CC01FCCAFFC1FCC9FFE1C04868
+:1040B0002FF91439C0E01388F6081800CFA0CB3BC5
+:1040C000F4090103C72B0E9CF01F000E3FFCCB6BC5
+:1040D0000FC92FA9EE0900091388A3A8B288CA3B0B
+:1040E00080018900000086E880002E1880002DF4F1
+:1040F000000078588003C80C8001895C8001492049
+:1041000080002E00D401201D3068FACBFFFC16D8A9
+:104110001A9B486CF01F00064848581CF00C17000A
+:10412000F9BC01002FFDD802000078588001A98C4D
+:10413000EBCD4040310A1696300B0C9CF01F000668
+:1041400030F930788D198D09300C30398D288D3942
+:10415000E3CD804080002DE8D401F01F0002D80A92
+:1041600080017B20EBCD4068206DFAC3FFEE1496F2
+:10417000069C306AF01F0010FAC5FFFE0C9B310A46
+:104180000A9CF01F000D0A9B204D310A1A9CF01F5B
+:10419000000B069B202D306A1A9CF01F0008F01FB0
+:1041A00000082FAD581CF9BC01FFF9BC00002FAD71
+:1041B000E3CD806880002DF48002DD1480017B6CEB
+:1041C000EBCD4068206DFAC3FFEE1496069C306A72
+:1041D000F01F0010FAC5FFFE0C9B310A0A9CF01F6D
+:1041E000000D0A9B204D310A1A9CF01F000B069B04
+:1041F000202D306A1A9CF01F0008F01F00082FAD18
+:10420000581CF9BC01FFF9BC00002FADE3CD80685C
+:1042100080002DF48002DD1480017C40D401F01F69
+:104220000005581CF9BC01FFF9BC0000D8020000D1
+:10423000800178C4D401F01F0005581CF9BC01FFAF
+:10424000F9BC0000D802000080017864D401169CFB
+:10425000F01F0004581CF9BC01FFF9BC0000D80293
+:1042600080017EB8D431207DFACEFFC050287C0278
+:104270007C387C1750087C2E501E16901894149B86
+:104280001293580AC5C0FAC5FFEA306A0A9CF01FAB
+:104290000031202D306A0A9B1A9CF01F002FF01F5E
+:1042A000002F58025F1858075F1918912FED1268F8
+:1042B000C18130065800C26168193018F0030948FE
+:1042C000F00811FFF1E9000C891C580CC365BFBC54
+:1042D000891CF01F002318975817C2F02F9DDC3A55
+:1042E0005887FE9BFFFDFAC6FFF2308A300B0C9C0C
+:1042F000F01F001C0E9A049B0C9CF01F0016580027
+:10430000CDC0402858015F091AD8069C1AD630380B
+:104310001AD53016404A403B1AD6F01F00136819D0
+:10432000EC0309481248F1D8C01F189789180C9C53
+:10433000F01F000E2FCDCD1B2F9DD83AFAC5FFEAF6
+:10434000306AE06B00FF0A9CF01F0006CA3B0000C9
+:1043500080002DF48002DD148001C2248001805C85
+:1043600080002DE8800180F480017E74EBCD40C098
+:104370001896308CF01F00091897C0C030089906B5
+:104380009918F01F0007301CF01F00060E9CE3CDAB
+:1043900080C0E3CD80C0000080027EA880017B2029
+:1043A0008001A914EBCD4080209D1697FACCFFFE2A
+:1043B000F01F0009581CC0402F7DE3CFC0800E9C29
+:1043C0001BBAFACBFFFCF01F00051BBC2F7DE3CD11
+:1043D000808000008001A70480002DF4EBCD408098
+:1043E000202D580BC120FAC7FFFE306A0E9CF01F2B
+:1043F000000C0E9CF01F000B581CF9BC01FFF9BC0F
+:1044000000002FEDE3CD8080FAC7FFFE306AE06B3D
+:1044100000FF0E9CF01F0004CEDB000080002DF496
+:104420008001A83480002DE8EBCD4040485B189611
+:10443000F01F00050C9CF01F0005E3CD804000003C
+:1044400080036F2C800243DC80002E00EBCD40C047
+:10445000202DFAC7FFFE16960E9CF01F0008581C70
+:10446000C0402FEDE3CFC0C00E9B0C9C306AF01F04
+:1044700000042FEDE3CF80C08001A76880002DF4F9
+:10448000EBCD40C018977939580BC0305839C0E08F
+:104490003018EF4800BC3038EF48004C1039C0806D
+:1044A0008F2830088F58E3CD80C0F949004C6F68E1
+:1044B0002FF8EEFA010CEF4800586FA830098F284A
+:1044C0008F59301B746C7486487A5D16EEF8009430
+:1044D000EEF900902FF82FF9EF480094EF49009083
+:1044E000E3CD80C080038BD4580C5E0C580BF9FBD5
+:1044F0004A19580AF9FA4A225809F9F94A1A580881
+:10450000F9F84A1B5EFC580CF9F81024F9B90101BE
+:10451000F1D9E108F9F81A245EFC580C5E0C580B2E
+:10452000F9B80101F9F81A45F9FB0A455EFCD70311
+:10453000EBCD40C01897580CC04079385858C0305F
+:10454000E3CD80C0F8F8010C3009706C7086488AA1
+:10455000301B5D16EEF80094EEF900902FF82FF95D
+:10456000EF480094EF490090E3CD80C080038BD4E6
+:10457000580CF9FC10315EFC580CC0B0F8F800D4AF
+:104580005808C070F8F800D89708F8FC00D45EFC12
+:10459000300897085EF8D703580CC040588BE08865
+:1045A00000035EFD48D8F00B032FF8FC00E05EFC32
+:1045B000F8FC00DC5EFC78BC5EFCF8FC00805EFC75
+:1045C00079FC5EFCF8FC00845EFC784C5EFC797C37
+:1045D0005EFC786C5EFC00008003C8B4580C5E0C76
+:1045E000588B5EBC48E8F00B032FF94A00E05EFCF4
+:1045F000F94A00DC5EFC99BA5EFCF94A00805EFC78
+:10460000F94A007C5EFCF94A00845EFC994A5EFC33
+:10461000F94A005C5EFC996A5EFC00008003C8D821
+:10462000580CC050580BC031783C5EFC5EFD580CF5
+:104630005E0C580BF9FA0A035EFCD401580CC0A0BA
+:10464000F8FC010C580CC06078A85808C030780CF1
+:104650005D18D802D401580CC021D80AF8FC010C0E
+:10466000580CCFC078B85808CF90780C5D18D80295
+:10467000EBCD40801897580CC1E0189A300B48FCDD
+:10468000F01F000F0E9A300B48ECF01F000DEEFCEF
+:1046900000C0F01F000DEEFC00CCF01F000CEEFC83
+:1046A00000D4F01F000AEEFC010CF01F00080E9C65
+:1046B000F01F0006E3CD80808002501080026384EA
+:1046C00080024FA48002606480002E00D401580C48
+:1046D000C050F8FC00C0F01F0002D80280025394C2
+:1046E000D401580CC050F8FC00C0F01F0002D802E2
+:1046F000800253ACD401189A580CC0A0305830191D
+:10470000F8FC00C0F548004C95C9F01F0002D80223
+:104710008002533EEBCD40801897580BC04079E89B
+:104720005888C0403018EF4800BC30193088EF4935
+:104730000044EF4800788F99EEFC00C0F01F0004A1
+:10474000F9B80100EFF81A39E3CD808080025336C2
+:10475000EBCD40E0201D189716951496580CC051CB
+:104760003FFC2FFDE3CD80E0F8FC00C0F01F000A05
+:10477000CF801A9BEEFC00C0F01F0008189BCF10E2
+:10478000400C0C3CCEF30C9A0A9CF01F0005300C38
+:10479000CE9B0000800253368002535280002DF4DD
+:1047A000EBCD40C018971496580CC1F0F94B00C4DB
+:1047B000580AC1B074087419F94800F8F94900FCA6
+:1047C0007428F9480100F8FC00C0580CC0E0742BB4
+:1047D000F01F00076C3BEEFC00C0F01F00066C4BA6
+:1047E000EEFC00C0F01F0004E3CD80C08002532A1D
+:1047F000800253308002538CD431FACD00A8189730
+:10480000F8F600CC5806C0F0F8F800F85808C0B028
+:104810000DA80DB9F3E81089F8F800D02FC91039A8
+:10482000E08800042D6DD832ECC4FFFC09995009D2
+:1048300009A0F01F006FFAC1FFF8340A029B0E9C1A
+:10484000F01F006C1895CEF5590CE0800090580CC4
+:10485000CEA132025012EEF800E45808C7D1E8C5E4
+:10486000FFE4FAC3FF68310A0A9B069CF01F00624E
+:10487000310A300B0A9CF01F00610DAA0DB9049B90
+:10488000F3EA1089FACCFFD8EEFA00CC0A982FC9C7
+:10489000F01F005B310A0A9B069CF01F005AC7619B
+:1048A0004009E1E910880DB9EBD8B0100DA8F3E884
+:1048B00010893208F2CE002CF00519005FB9E04EE5
+:1048C00000205F9A124AF80A1800CAD15C751C359C
+:1048D000C630580ECA81FAC3FF88029B0A9A069C0A
+:1048E000F01F00453018308AEF4800E4E8CBFFFDA8
+:1048F000EECCFF18F01F0040EEFC010C7896580635
+:10490000C0D0E93A001B0A98149B0699780CE21B68
+:104910000080F5DAC0025D16C865E939001B300871
+:10492000F0091800C5753018EF48011CEEF90118A0
+:104930005809C071EEF800FCEDB80000FE90FF745D
+:1049400030188FD8EEFC010C78785808FE90FF6C78
+:10495000780C5D18C68B308AE8CBFFFDEECCFF18D3
+:10496000F01F0028FE94FF60C7BB189A029B0E9CA4
+:10497000F01F0020FE91FF580A9A029BFACCFFD844
+:104980000A92F01F001D5015C67B069B0A9C310A37
+:10499000F01F0019C48BFAC6FFB8E8CBFFF50C9CDA
+:1049A000310AF01F0015049A029BFACCFFA8F01FF1
+:1049B0000012FAC3FF880A9AE8CBFFD4069CF01FC6
+:1049C000000E40190C9A2F090A9B069CF01F000E3E
+:1049D000C8AB3018EF480118EEF9011C5809CB118B
+:1049E000EEF800FCEDB80001CAC1C1DB800246E070
+:1049F0008002475080002DF480002DE880027E7CEC
+:104A000080002D9480028BBCD431201D3003189778
+:104A10003014069530213040EF4500BC6F4A580AEB
+:104A2000E08000C96F585808E08100C56E7C580CC2
+:104A3000E08100C26EB85808E08000BE6F38582888
+:104A4000EFF41A2FEEF8010CEF41004C3009706CB6
+:104A50007086FEFA051E029B5D16EF4400548FC55A
+:104A6000EEF80098EEF900902FF82FF9EF48009833
+:104A7000EF4900906E7C580CC0516EB85808E08128
+:104A800000EC6FC8EF4400705818EFF41A2F6FD87D
+:104A90005808E08100F8580CE08100A76EE858083B
+:104AA000E08100A36FE8F0C900015879E08B000EA7
+:104AB000FEF804C4F009032FEF4400BCEF41007876
+:104AC000EF450040EF4400C8EEFC00C0F01F012B92
+:104AD000E08000B5EF4400BC2FF3E0430064C9D18F
+:104AE0000E9A300BFEFC0498F01F012630090E9838
+:104AF000FEFA048C129B129CF01F0123EEF9010CAC
+:104B000072285808C0E0EEF801105808C0A05818E4
+:104B10005F0B30080E9CEF480110723A72285D1846
+:104B20002FFDD832EEF80088EF4400BCEF4000784B
+:104B30008F55EF45007CEF4500C88F08CC6B6E5851
+:104B40005808E08100DF6E4B580BE08100D06E0802
+:104B50005808C1613078EF4400BCEF480078EF445A
+:104B60000048CB3BEEF900845809E08101846FF8DE
+:104B70005808E081015C6E4B580BE08100B86E680C
+:104B80005808CA300E9CF01F0101C9FB6E48580836
+:104B9000E08100A96E585808E08100B06E6858089E
+:104BA000C9406F085808C910300B0E9CF01F00F761
+:104BB000C8CB6E7C6EA95809C2F16F885808C2C074
+:104BC0006F38EF4500605818EFF41A2FEF44004C8F
+:104BD000EF450058EF4500548FC58FE4EF450118AD
+:104BE000EF45011CC49B6FE8EEFC00CC5818EFF4B5
+:104BF0001A2FEF440078F01F00E6EEFC00D4EF45DA
+:104C000000CCF01F00E3EEFC00C0EF4500D4F01F25
+:104C100000E18FE5C5AB580CCD416EB85808CD10FA
+:104C20005829C3B05819C4706F3820185878FE9BA3
+:104C3000FF26FEF90362F208032FEEF800BC5808C5
+:104C4000FE91FF4CC5CB6E585808E08100FE6ED82F
+:104C50005808E08000FE6FC95819FE90FF1A5829C5
+:104C6000FE91FF1E6FD85808FE90FF1A0E9CEF4968
+:104C70000070EF4400BCF01F00C96E7CEF4500746B
+:104C8000C0BB0E9CEF4400BCEF410070F01F00C39E
+:104C90006E7CEF450074C00B6F885828CC606F386D
+:104CA0008FC45898EFF41A2FEF4100603098EF4806
+:104CB000004CCE4A6F885818CB806F3858A8EFF94F
+:104CC0001A2FEEF9010C30A88FC5EF440060EF48B1
+:104CD000004CFEFA029E7286726C302B0A995D16A9
+:104CE000CC0A6F085808FE90FF573068EF4400BCAC
+:104CF0008FF4EF480078CE9A6F085808FE90FF5066
+:104D00003038EF4400BC8F05EF440080EF48007856
+:104D1000CDCA6E695809C0A06ED85808E081011745
+:104D2000EEF800F85808E08100FC6E485808E08171
+:104D300000EB6E885808C0506ED85808E08000E438
+:104D40006F285808C050300B0E9CF01F00956E7CE9
+:104D5000C93A6F785808C8018F88EF4400BCEF400B
+:104D6000004CEF480058EF4800448FF8EF480048E7
+:104D70008F98EF440040C82A6E1B580BCE606E58C7
+:104D80005808FE90FF6A3089EF4400BCEF49004CA0
+:104D9000EF44005CC73A6E2B580BC2716F696FB855
+:104DA0001039CD336ED85808C2003058EF4400BCDB
+:104DB000EF48004C8FC4EF440110FE9FFE60580A7C
+:104DC000FE91FF4BEF4A011CEF4400BCEF44004C46
+:104DD000EF4A0060EF4A0058EF4A00548FCA8FE450
+:104DE000EF4A0118FE9FFE4B6E685808C7B16E4827
+:104DF0005808C7816E585808CC71580BFE91FF2D8A
+:104E00006F696FB81039FE93FF286ED85808FE916D
+:104E1000FF2430788FCBEF48004CEF4400BC6F98F4
+:104E2000EF4101108F18FE9FFE2AEEF80088EF492F
+:104E300000C8EF4400BCEF4000788F59EF49007C78
+:104E40008F08FE9FFE436ED85808E081008AEF4429
+:104E500000BCEF44004CEF450060EF450058EF45C3
+:104E600000548FC58FE4EF450118EF45011CFE9FEC
+:104E7000FE063059EF4400BCEF4900781A9BEEFC67
+:104E800000C0F01F00481892C290EEF8010C4009D3
+:104E9000189A7086706C300B5D16049CF01F003CF5
+:104EA000EEF800C85808EFF81028F9B90101F1D957
+:104EB000E108EFF81A28EFF80029F9B90001F1D953
+:104EC000E008EFF80A29EEF90090EEF8009C2FF9BF
+:104ED0002FF8EF490090EF48009CEF450084FE9FBB
+:104EE000FDF5EF4400BCEF40004CEF450058EF45A6
+:104EF00000448FF5EF4500488F958F85EF440040C3
+:104F0000FE9FFDBD3078EF4400BCEF48004C8FC5DC
+:104F10006F98EF4101108F186E7CFE9FFDAEEEF88A
+:104F200000FC5808FE91FF038FD4EEFC010C78784A
+:104F30005808C040780C5D186E695809FE90FEF75D
+:104F40006ED85808FE90FEF36E7C3059EF4400BCDA
+:104F5000EF49004C8FC4EF440110FE9FFD8E308856
+:104F6000EF4400BCEF48004CEF44005CFE9FFD871F
+:104F700080038BD48003C8FC800257B48002501099
+:104F800080026384800263F88002471480002E0050
+:104F9000800254C08003C91C800247F8800244800C
+:104FA0008002536AEBCD408076085808F9B901FFBA
+:104FB000F1D9E108F7F81A0076185808F9B901FF95
+:104FC000F1D9E108F7F81A0176285808F9B901FF74
+:104FD000F1D9E108F7F81A0276385808F9B901FF53
+:104FE000F1D9E108F7F81A03169718991698486A44
+:104FF000300B301CF01F00050E9CF01F0005E3CDA8
+:105000008080000080024FA4800263F880024A087A
+:10501000D401169CF01F0002D802000080024A084A
+:10502000D421203D1895E06C0120F01F0022189734
+:10503000C38031E83039F9480088F948006833C83E
+:10504000F949006CF9480064F945010C300430CA94
+:1050500099A4089B1A9CF01F00186AF850286ADA75
+:10506000500A6AE85018EEF8010C1A99704A493B48
+:105070000E9CF01F0013EF4C00C01A961898C14008
+:1050800030160E9C8F76F01F000F0E9C8F74F01F51
+:10509000000D0E9808990C9C48BA089BF01F000B55
+:1050A0000E9C2FDDD8220E9C1097F01F0009CF9B7D
+:1050B00080027EA880002DE800000454800260A0D9
+:1050C00080024A0880024FA4800263F880002E000C
+:1050D000D401580CC090F8F800D45808C050F8F823
+:1050E00000805808C020D8023018F948008099582C
+:1050F000F01F0002D802000080024A08D401580CB8
+:10510000C04099ABF01F0002D802000080024A089C
+:10511000D401580CC060F94B00E0994BF01F00021D
+:10512000D802000080024A08EBCD40801897580C46
+:10513000C090996BF94B00DC580BC0610E9CF01FBE
+:105140000005E3CD8080F8FC00C0F01F0003CF7B9A
+:1051500080024A088002533ED401580CC04099DBBB
+:10516000F01F0002D802000080024A08D401580C47
+:10517000C04099BBF01F0002D802000080024A081C
+:10518000EBCD40E0189714951296580CC3A0F8F890
+:10519000008C2FF8F948008C5839E08B0009F8F89A
+:1051A00000A82FF8F94800A8E3CF80E01588306AFE
+:1051B000F94800B0F8CCFF4CF01F0042ECCA0004E4
+:1051C0000BA90BB8F1E910861436E08B00130B998C
+:1051D000300CF8091800C4603038F0091800C130EC
+:1051E000EEF800A8301C2FF8EF4800A8E3CD80E0CF
+:1051F000EEF800AC300C2FF8EF4800ACE3CD80E0C7
+:10520000E3CF80E0E046002BE088004C3FE80BCB8A
+:10521000F00B18005F0A3028F00B18005F09124AE3
+:10522000F80A1800CEE13018F00B1800C3A1EEFC0C
+:1052300000CCF01F00252FC60C9CF01F0024EF4C63
+:1052400000CCC2F00C9A0A9BF01F001E0E9CEF4689
+:1052500000D03016EF460074F01F001D0C9CE3CD0B
+:1052600080E0EEF801145808C100300830398FC8CA
+:10527000EF4801148F29EF49004CEEFC010C78C86F
+:105280005808C030780C5D18EEFC00D4F01F000EFA
+:105290000C9CEF4600D8F01F000DEF4C00D4C0313D
+:1052A000E3CF90E0EACBFFFCEEFA00D8F01F000558
+:1052B0000E9C30168F56F01F00060C9CE3CD80E04C
+:1052C00080002DF480002E0080002E1880024A08F5
+:1052D000EBCD4080189779685808C0B079BB580B5F
+:1052E000C08070495D193008EF480058EF48006CE5
+:1052F000E3CD8080EBCD40C01897580BC0407808B4
+:105300005878C0403018EF48006030786FA68F089A
+:105310006F9C6C29300A305B5D196FA86F9C7029F7
+:10532000301A304B5D19E3CD80C0F94B00745EFC40
+:10533000F94B00B05EFC580CF9FC10135EFC580CE5
+:10534000F9B80101F9F81A06F9B9010BF9F91A00CF
+:105350005EFC580CC08079485808C05079589708AE
+:10536000794C5EFC300897085EF8580CC0C0791A7A
+:10537000580AC090792897083009F9490048F94936
+:1053800000445EFA3008109A97085EFAF94B00C4A0
+:105390005EFCD703D401580CC040483BF01F00030B
+:1053A000D80200008003C968800252D0EBCD408053
+:1053B0001897580CC0F079A8300B7019799C5D19BA
+:1053C000C0916E685808C0606E2820385818E08870
+:1053D0000004E3CD80806F485808F9B80101EFF868
+:1053E0001A136FA86F9C7029301A300B5D19EEFCF0
+:1053F00000A4483A302BF01F0003CECB8003C974C1
+:105400008002299EEBCD40801897580BC040780849
+:1054100058B8C0403018EF4800606F4930B88F0866
+:105420005809F9B80101EFF81A136FA86F9C702999
+:10543000301A300B5D196FA86F9C7029300A305BF1
+:105440005D196FA86F9C301A7029304B5D19EEFC06
+:1054500000A4484A302BF01F0004E3CD80800000F8
+:105460008003C9D48002299EEBCD40C01897580B09
+:10547000C040780858C8C0403018EF48006030C8B5
+:105480006FA68F086F9C6C29301A302B5D196FA89E
+:105490006F9C7029300A305B5D196FA86F9C301AC1
+:1054A0007029304B5D19EEFC00A4484A302BF01FE8
+:1054B0000004E3CD80C000008003CA188002299E4A
+:1054C000EBCD40601896784CF01F000B30056D1C3A
+:1054D0008D45F01F00096D4CED450044F01F00069E
+:1054E0006DA8ED4500500A9A6D9C70290A9B5D19C4
+:1054F000E3CD806080002E00EBCD40E01897580B84
+:10550000C4F078085808C4C130088F086FD958090A
+:10551000C0B06F685808C08070985808C0506FBB02
+:105520000E9C5D18C4114A4B0E9CF01F00246FA8FE
+:10553000300630158F16EF4500408F268F666EFAC5
+:1055400070490C9B6F9C5D196FA80C9A70290C9B7D
+:105550006F9C5D196FA80C9A7029302B6F9C5D1998
+:105560006F4CF01F00176FA80A9BEF460050EF46E4
+:10557000004C0C9A70296F9C5D193FF80C9A8F387B
+:105580006FA5303B6F9C6A295D196FA80C9A702932
+:10559000304B6F9C5D19EF4600C0E3CD80E03018C2
+:1055A000EF480060CB2B6F686FBB70A90E9C5D1934
+:1055B000CBFB00008003CA4C800252D080002E003A
+:1055C000EBCD40E0205D1897580BC0407808585844
+:1055D000C0403018EF48006030588F086F69580994
+:1055E000C4406FA8FACBFFF070596F9C5D19310A67
+:1055F000300B18951A9CF01F00256F1C6EE85008A0
+:105600006E2950196E6850286F095039F01F00201C
+:1056100030086F6BEF48005CEF480044EEC8FFB8FD
+:105620001A9A0A991AD80E9C405876566FBB5D1686
+:10563000EF4C004440188FE82FFD5808C1616F7887
+:105640005808C13140188F2840298F694038EF48E9
+:1056500000406F6870695809C08070785808C05061
+:105660006FBB0E9C5D19C0412FBDE3CD80E06F4C38
+:10567000F01F00076F68EECAFFAC70796FBB0E9C1D
+:105680005D19EF4C0050CF1B80002DE880002E00EC
+:10569000EBCD40801897580BC04078085868C04040
+:1056A0003018EF48006030686E4C8F08F01F001A09
+:1056B0006F185808C2E0EEF800B05808C2216EA872
+:1056C0006F2C8F38F01F00158F4CC0706F2A6F1B26
+:1056D000F01F00136F288F586FA8301A7029303BC5
+:1056E0006F9C5D196FA86F9C7029300A305B5D1943
+:1056F0006FA86F9C70496EFA300B5D19E3CD808006
+:10570000310AEECBFF7CEECCFF6CF01F0005CD8B99
+:105710008F48CE9B80002E0080002E1880002DF434
+:10572000EBCD40FC201D79A8189716921493129483
+:10573000799C70095D191896C2F06F685808C230DC
+:1057400070C85808C2000E9C1A9A6FBB5D18189555
+:10575000C1A0400C2FBC870CF01F0015C1D0302811
+:10576000B892B88830188699B8B9A9891897B8A995
+:10577000B8C80A9B400A2FBCF01F000E0E9C2FFDDC
+:10578000E3CD80FC5804C0416DCC580CC0A16DB86D
+:105790006DA55805C0A130070E9C2FFDE3CD80FC00
+:1057A0006DD818955008CD6B5008CD4B80002E1841
+:1057B00080002DF4D431209D3004F8C9FF7CF8C856
+:1057C000FF6C189750195008F8C0FFB808956FA8DB
+:1057D000EF450060301B70196F9C5D19C0706FA899
+:1057E000306B70196F9C5D19C2F16FA8306B701926
+:1057F0006F9C5D19C140EEF800C45808C101EEF875
+:1058000000C0E0480032E08A0025E0480033E08034
+:10581000011C6F885808C1003014CDAB6E085818B1
+:10582000F9B80101EFF81A18EF4500C030188F08D9
+:105830006F885808CF216F7C580CE80C1700F9BC12
+:1058400001012F7DD832301B0E9CF01F01EECE2BB4
+:105850006E0958A9FE9BFFDFFEF807ACF009032F85
+:1058600030183029EF4800608F09CD4B300B0E9C6B
+:10587000F01F01E6CCFB6E196EB81039C760300B13
+:105880000E9CF01F01E2CC6B6EA96E381039E080DF
+:105890000137300B6E8E580EC1B06E685808C1804B
+:1058A0006EAA6E39123AE08000BBEEF800B05808DC
+:1058B000C0F0F2C8FFFFF1D8C008103AE08000B095
+:1058C000F2C8FFFEF1D8C008103AE08000A96E2CA3
+:1058D000582CC2006E985808E08001236E68582842
+:1058E000E080011F6EAA6E39123AE0800146EEF8A0
+:1058F00000B05808C0F0F2C8FFFFF1D8C008103A55
+:10590000E080013BF2C8FFFEF1D8C008103AE08009
+:1059100001346E7858085F1A3008F5EB0009F00979
+:105920001800E081010FEC1B0001F5EB0008F20804
+:105930001800E08001056EBB1699582BE080012A03
+:105940006E165806C071581BE080021B582BE08170
+:1059500001630C3BE080014F0C995919C0F1580EBE
+:10596000C0416FE85808C0A0300B0E9CF01F01A882
+:10597000C51B6EEB580BFE90FF7C300B0E9CF01F8E
+:1059800001A5C48B6FA8305B70196F9C5D19C701AE
+:105990006FA8307B70196F9C5D19C0506E685808F5
+:1059A000FE91FF396FA8300B70396F9C5D19C051A3
+:1059B0006E685828FE90FF2F6FA8308B70196F9C6F
+:1059C0005D19FE91FF286FA8189B70396F9C5D19B7
+:1059D000C0516E685828FE91FF1E6FA8307B701969
+:1059E0006F9C5D19C0806E285828C0506E6858089A
+:1059F000FE90FF116E185918E080025C5998FE91D4
+:105A0000FF0AEEF800805808FE90FF056E685808FF
+:105A1000FE90FF016E285848FE91FEFD300B0E9C53
+:105A2000F01F017DCF7A6FA8306B70196F9C5D19E4
+:105A3000FE90FEF1EEFB00C4580BFE91FEEC0E9CB6
+:105A4000F01F0170CE7A3328EEFC00A4FEFA05CCDC
+:105A50001AD8302BF01F0172EEF800C0301B160868
+:105A60000E9CEF4800C0F01F016F2FFDCD3A6FAACA
+:105A70003038FACBFFE08F0830136F9CEF430060A3
+:105A800074595D198F95507C8F85EF4500788F751F
+:105A90008FA58FB58FC58FD55F0A408B1896583B61
+:105AA0005F88104AEA0A1800C23119A919B8F1E949
+:105AB00010885068103BC1C319988FA8EEF900B048
+:105AC0005809C090069C4019FACAFFE8FACBFFE4D7
+:105AD000F01F01550D893028F0091800E080011CE5
+:105AE000E08B008D3018F0091800E0800123EEF8FB
+:105AF00000C02FF8EF4800C0FE9FFE8D6E7858085A
+:105B0000FE90FEC9EEF800B05808C080310A400B84
+:105B1000401CF01F0146FE91FEBE301BCBCA580E42
+:105B2000FE90FEF96E685808FE91FEF56E18591841
+:105B3000FE91FEDA583CFE91FED7CECA6E19C0EB3C
+:105B4000301830A9EF4800608F096F1CF01F013832
+:105B50006E485808C1A06E5CF01F0136EF4C00443F
+:105B6000FE90FE596E5A6E4BF01F01336E58EF488F
+:105B70000048FE9FFE50300B0E9CF01F012AFE9F36
+:105B8000FE4A300950494048EF480044FE9FFE431A
+:105B90006F085808FE90FED6301830996FAA8F090A
+:105BA000EF4800607458FACBFFE86F9C5D1819A9A4
+:105BB00019B81896F1E910885848E08B01476F1C16
+:105BC000F01F011B305CEF450044EF4C00486EA60F
+:105BD000F01F0118E08001853029B896B889EF18C8
+:105BE000004AB8C9B8B8A988B8A8EF4C0044FE9FCD
+:105BF000FE12584CFE90FEB3CB8A3038F0091800E4
+:105C0000E08000DC3048F0091800FE91FF72301887
+:105C10008F98C6EB30181693EF48006030496FA894
+:105C2000E04B00FEEFF3000D8F096EC670096F9C0C
+:105C30005D19069A0C9BF01F0101E08100C36F1CE7
+:105C4000F01F00FB6FA8EF4500446EA270096F9C27
+:105C50005D19503CFACCFFE8F01F00F91893C920F9
+:105C60006EB8E04800FEE08101516FA840667009FF
+:105C70006F9C5D1930C8505CA376EF480048ECCCAF
+:105C8000FFECF01F00EC1891E080012E3FE9B89284
+:105C9000B8C93029B889F8C8FFFBB0A5B085B09560
+:105CA000F8C9FFF83038B285B295B2A5B2B8504CF9
+:105CB000F8C2FFF40A96C298661A6ED81438C21059
+:105CC000405CF01F00DE049AE4CBFFFC580CC1904E
+:105CD0003FE814C88689B4896608A988B49866091B
+:105CE000B4A907C8B68886A9B6996618A988B6A8BF
+:105CF0006619B6B9F6C2FFFC60082FF62F88810836
+:105D000066F35803E0800099660B6EC81638CD50D4
+:105D1000661ACD7B6E185918FE91FEEB4068584804
+:105D2000FE98FEE73018EF4800780DC98FB9CE0A0B
+:105D3000406A584AFE98FEDD30188F780DC98FB939
+:105D4000E04900FEFE91FED558BAFE98FED2ECC99D
+:105D5000FFFB139C138A13A8F1EA1108F1EC1088D9
+:105D6000ECCBFFF88FC817AC17B81789179AF1E971
+:105D70001188F1EA1108F1EC10888FD8CB9A6FA83E
+:105D80003089EF4B00608F09FACBFFE0705A6F9CAF
+:105D90005D1AFEFA02AE302BEEFC00A4F01F00A04C
+:105DA0006F1CF01F00A30C99EF460044009A6EABE5
+:105DB0000E9CF01F00A5C1AB30188F88FE9FFE9986
+:105DC0000C9C069BF01F00A1FE90FF3B6FD858086B
+:105DD000C0906F6A580AC06074096EC81039E080BC
+:105DE0000086FEFB026A0E9C3006F01F009A6EB819
+:105DF0008F186F6C580CE08000CD5806C54078B8FD
+:105E00006FBB0E9C5D18EF4C006C6FB65806E080BF
+:105E100000CA6F6A6ECB30188F287429FEFA0238D8
+:105E20001AD91AD31ADB302BEEFC00A4F01F007C29
+:105E30002FDDFE9FFCF05806C4206F285C78A2B8C6
+:105E4000A988A2A8FE9FFEA1F0CC0004F0C2000524
+:105E5000F01F00781893FE90FEB45802C120ECCCDD
+:105E6000FFFB300A35DB1938F0C90021F6091800AC
+:105E7000F9B80B5FE60A0B082FFA1432FE9BFFF508
+:105E80003008E6020B084F581AD34F5A1AD8302B55
+:105E9000EEFC00A4F01F0062069CF01F00652FEDD1
+:105EA000FE9FFE8F78380E9C5D18EF4C006CCAEB9D
+:105EB0006FF85808FE90FCAFFE9FFDAA04983FE9DA
+:105EC00010C9B0A6B086B096E4C9FFFCB2B6B286DF
+:105ED000B296B2A66F282F88EF480048CB0B0A9CD9
+:105EE000FE9FFE855045FE9FFE5074181033FE91B4
+:105EF000FF7A74995809FE90FF766FBB0E9C5D196E
+:105F0000FE90FF713016C74B3058406CEF48004888
+:105F10002FACF01F00481896FE90FE35B89230283E
+:105F20003039B888B8C9504CF8C2FFFB50250A91E7
+:105F3000C1A8661A6EB8103AC130403CF01F003F4D
+:105F4000C0F066085808C5A040285808C0913FE92D
+:105F500004C93018502860082FF12FF8810866F323
+:105F60005803C060660B580BCE50661ACE7B5801A2
+:105F7000EFF81012E5F10E00EFF80012F7B800FF8D
+:105F8000EFF80A125C78ACB8A988ACA8FE9FFDFDBA
+:105F9000069B6ECCF01F002DEF4C0058FE90FE517A
+:105FA000C2DB6FA86F9C70095D196F6870291AD9E0
+:105FB0001AD36EC818921AD8302B4AAAEEFC00A445
+:105FC000F01F0017EF4600588F268F1658025F1BF0
+:105FD0006EB92FDD58D95F081668EC081800FE90DE
+:105FE000FE30E4F801605808FE91FC15E4F8016801
+:105FF0005808FE90FE26FE9FFC0E661804C8CACB09
+:10600000800254F88003C93C80025690800255C03B
+:10601000800252F4800254048003CA588002299EF0
+:106020008002546880027D2080002D9480002E0024
+:1060300080002E1880002DF480022A5C80026168A6
+:106040008003CAA880025720800261148003CADC42
+:10605000800252D08003CB288003CA888003C59C6D
+:106060008003CAE8EBCD40801897580CC0E0488BFD
+:10607000F01F00080E9CF01F0008EEFC00ACF01FA3
+:1060800000070E9CF01F0006E3CD80808003CB64E8
+:10609000800252D0800254C08002C21C80002E00B8
+:1060A000EBCD40F8203D1896169414931295E06CB1
+:1060B00000C8F01F00151897C1C033C8F946006426
+:1060C00099F8F9440068F94300A430CA300B1A9CCF
+:1060D000F01F000E6A2850286A0950096A181A9C95
+:1060E0005018F01F000BEF4C00AC1A961898C050D7
+:1060F0000E9C2FDDE3CD80F80E9C1097F01F00055D
+:10610000CF8B000080027EA880002DE88002C2486C
+:1061100080002E00189948A8700C580CC051C0D8A7
+:1061200078FC580CC0A078081238CFB1781816380F
+:106130005E0C78FC580CCF815EFD0000000078609A
+:1061400018994898700C580CC051C0C878FC580C6D
+:10615000C09078081238CFB178181638CF81782CD3
+:106160005EFC5EFD00007860189B4888700C580C3F
+:10617000C0A01899300A2FFA72F95809CFD1149893
+:1061800097085EFC1898CFDB000078605EFDD703AF
+:10619000EBCD40E048D81896169570075807C051C7
+:1061A000C0E86EF75807C0B06E2C0C9BF01F0008BB
+:1061B000CF916E088B086E1CE3CD80E030088B0811
+:1061C000109CE3CD80E000000000786080002DB8D6
+:1061D000EBCD40C048B70E966E095809C0B072F8B2
+:1061E0008D08129C72D85808C0705D186E09580945
+:1061F000CF71E3CD80C0129CF01F0003CEEB0000F6
+:106200000000786080002E00EBCD40C048D66C487E
+:106210005808C031C0880E987057109CF01F000AB3
+:106220005807CFA16C6CF01F000930086C3C8D68DA
+:10623000F01F00056C8CF01F0004E3CD80C000004F
+:1062400000008A5480002E0080014800EBCD40F809
+:1062500049571896169314946E2B12952FFB6E3C8B
+:10626000A56BF01F0012C1D06E28A568F8080906BA
+:106270006E29A569F8090009932593146E2AF4087C
+:106280001504F808000891336E188F3C2FFA103669
+:10629000EFF69A018F2A3018300C8FC8E3CD80F8C2
+:1062A000E3CFC0F800008A5480002E0CEBCD404CA8
+:1062B000E0634DD3EA1310621896F01F000DF80347
+:1062C0000648A789E06A03E8F20A0248F8080109CB
+:1062D000121CF20A024AF80304428D1ABF5CA7435B
+:1062E000E60C010C8D0CE3CD804C00008001488051
+:1062F000EBCD4080202D4A076E495809C2C06E5828
+:106300001039C2901A9CF01F001D6E484009700A97
+:106310001439C2447018401BF40901091618C276DA
+:10632000F00B141FE06A03E8F20A024AE0694DD359
+:10633000EA191062F0090448A7491619F20A000C7C
+:10634000580CE08A000E300948DA6E6BF01F000D21
+:106350006E488F582FEDE3CD80801439C030301C4B
+:10636000CF3B7018401B103BCFB4CD7B2019F028D9
+:10637000BDC0CD7B00008A54800262AC8002649C68
+:1063800080014814D43149A0189516931492604C9A
+:10639000580CC2B030060C940C91785778480A38E3
+:1063A000C09018960E9C5807CF91F01F0012089CC1
+:1063B000D8325BF35F0A782906395F081448E2088F
+:1063C0001800CF005BF25F0A783904395F0814487F
+:1063D000E2081800CE705806E1F70A04EDF71A0536
+:1063E0002FF4F01F0005CDFB1894CE0B00008A544B
+:1063F000800262F080002E00EBCD40FC18961695CE
+:10640000149212941093318CF01F00211897C3A09E
+:10641000F01F00206E0A6E1B0C0AEA0B000B8F0A9D
+:106420008F1BEE5B423FE08A000B2FFAEE3B4240AF
+:106430008F0A8F1BEE5B423FFE99FFF98F248F334B
+:106440008F4230088F58494C78495809C1D072089A
+:106450001438E089001A2F0CC0A8F2CCFFEC725956
+:106460005809C0A072081438E0890007103ACF61BB
+:106470007218103BCF348F599907F01F0008E3CFF3
+:1064800080FCE3CFC0FC2F0CCF7B000080002E18D7
+:10649000800262AC00008A54800262F0EBCD40E0E2
+:1064A000202D49661A9CF01F00166C475807C1F052
+:1064B00040096E081238E089001B3005C0584009B9
+:1064C0006E081039C1451039C0516E194018123884
+:1064D000C0E56E588D558D486E3B6E486E2C5D182C
+:1064E0000E9CF01F00086C475807CEA1F01F000655
+:1064F0002FEDE3CF80E0000000008A54800262AC00
+:1065000080002E00800262F0EBCD408049A76E3EF5
+:10651000580EC2B06E2A580AC280E08A002B7C084E
+:106520001838C270FCC9FFF0300BC05872082F0930
+:106530001838C0502FFB163AFE99FFFA143BC17071
+:10654000201A163AC0F0161AF60C1504A56AFC0CAF
+:10655000000C2FFBA56BFC0B000BF01F00086E2A34
+:10656000201A30188F2A8FC8E3CD8080E3CD808039
+:10657000300BCE7B00008A5480002DDCEBCD4060D8
+:1065800048861895334A300B0C9CF01F0007ECCC62
+:10659000FFE88D05301BF01F0005E3CF8060000091
+:1065A00000008A5480002DE8800147B40050F201B9
+:1065B000010000000000000000000000F6F800DC10
+:1065C0005808C050F8F800F85808C0205EFDF6FBE7
+:1065D00000D0580BCFC076085808C041761858082C
+:1065E000CF602F8BCF9BD703EBCD4080300B18971C
+:1065F000F01F0013306A300BEECCFF64F01F001167
+:10660000306A300BEECCFF5EF01F000E300BEEFC5C
+:1066100000E0F01F000D300BEEFC00E0F01F000B5F
+:10662000EEF800BC5828C030E3CD8080EEFC00E0DE
+:10663000300BF01F0007E3CD808000008001CD907B
+:1066400080002DE88002516C800251588002512850
+:10665000EBCD40801897F8F800945808C160300BD3
+:10666000F94B0094F8F800D470985808C040F8FC32
+:1066700000C45D18486A302B0E9CF01F0006300ADB
+:106680000E9C149BF01F0004E3CD80808003CB8C14
+:106690008002299E8001DB44D431209D500C761568
+:1066A00058155F987607169058075F1910693008DB
+:1066B000F0091800E08000B8EEC4FFFF0989F2C6B7
+:1066C000FFFE0C35E08500B010923DD33301C16868
+:1066D000E2081800C2800C0758155F9958075F1828
+:1066E0001268E4081800E080009EEEC4FFFF0989EC
+:1066F000F2C6FFFE0A36E08900960C150F88E60800
+:106700001800CE71305AF4091800FE98FFE6EECC5E
+:10671000FFFE306A4DFBF01F0060C0B00F88E2083A
+:106720001800CDA109883019F2081800FE98FFD58D
+:1067300040080E9B0C9AF0FC00DCF01F00581897E4
+:10674000C711400AFACBFFFCF4FC00DCF01F005438
+:10675000C21540795809C1E040685808E08900072F
+:10676000C19840681037C1644079EE0B1504F20BF4
+:10677000000B40093008F2FC00DC2FF71099109A4A
+:10678000F01F0048CEF14008301BF0FC00E0F01F85
+:1067900000466046605558065F1958155F981069A5
+:1067A000C760ECC4FFFF0989F2C7FFFE0E35C6F5CE
+:1067B000300306920691C1A85802C0610D88330AC1
+:1067C000F4081800C3A00E060E1558065F185815D9
+:1067D0005F991268E2081800C3F0ECC4FFFF098952
+:1067E000F2C7FFFE0A37E08900385803CE610D88F2
+:1067F0003DDAF4081800CE113058F0091800FE9860
+:10680000FFDD306A4A3BECCCFFFEF01F0023CD5188
+:1068100040090E9A0C9BF2FC00DC3013F01F0023A1
+:10682000CCCB60075807CB604009300AF2FC00DC93
+:10683000149BF01F001ACAEB09883019F2081800DF
+:10684000FE98FFC340080E9A0C9BF0FC00DC30124F
+:10685000F01F0017CB9B5803C0F05802C0B160482E
+:106860005808C0804008049AF0FC00DC049BF01F2C
+:1068700000102F7DD83260465806CF004009300AFC
+:10688000F2FC00DC149BF01F0009CE8B3002CF5BC2
+:10689000800265AC80002D948002A5708002AFD08C
+:1068A000800283048002451A8002A5108002A4B0F1
+:1068B000D431FACD009018911497586BE08B00C436
+:1068C000FEF80748F00B032F580AC0A0F8F8009014
+:1068D0007009739A580AC0410E9BF01F01CD304BCE
+:1068E000029CF01F01CCE2F801185808E081031265
+:1068F000FAC7FF94E2F800D470285808C4C00E9B71
+:10690000E2FC00C45D18C475E2C6FF64306A0C9BEB
+:106910000E9CF01F01C1C3F0FB3800711AD8FB397F
+:1069200000741AD9FB3800771AD8FB39007A1AD9C3
+:10693000FB38007D1AD8FB390080FEFA06DE1AD932
+:10694000301B029CF01F01B6306A0E9B0C9CF01F9E
+:1069500001B5306A300BE2CCFF5EF01F01B3E2FA02
+:1069600000BC2FAD584A5F08590A5F091248C08120
+:10697000588AE080030C0E9B029CF01F01ACE2F8E9
+:10698000009070495819E08102D5E2F800B058082B
+:10699000E08002D0FB3800711AD8FB3900741AD994
+:1069A000FB3800771AD8FB39007A1AD9FB38007DFA
+:1069B0001AD8FB390080302B1AD9FEFA0672029CD5
+:1069C000F01F0197E2FB00B02FAD580BC040029CB6
+:1069D000F01F01980E9BE2FC00DCF01F0197622C77
+:1069E000F01F0196300BE2FC00E0F01F0195300B28
+:1069F000E2FC00E0F01F0193E2F800BC5828C061FF
+:106A0000300BE2FC00E0F01F0190301BE2FC00E0E4
+:106A1000F01F018B300BE34B00F4E2F900BC590985
+:106A20005F0A58495F081448F6081800E08002160B
+:106A3000029CF01F0186307B029CF01F0176029CB5
+:106A4000F01F01832DCDD832580ACFD0149B743952
+:106A5000F8FC00DC742AF01F017F2DCDD832F8FB42
+:106A600000BC590BCF00F8F800E85858E080023518
+:106A70005838E08B0234E2C7FF64306AFEFB05D869
+:106A80000E9C2F8BF01F0164EE0B1710E06800A224
+:106A9000E3D8E00B029CF01F0171E2FC00DCF01F68
+:106AA0000170FEFA05BE302B029CF01F015DE2FA78
+:106AB00000BC584A5F08590A5F091248C0B1588A99
+:106AC000E080029730080E9BE3480104029CF01F0F
+:106AD0000157029CF01F01642DCDD832FEFA058CBF
+:106AE000303BF01F014F5807E08002806E085808C5
+:106AF0005F1B169AE2FC00DC301BF01F015DFACC34
+:106B0000FF94F01F015CE2F800985808E08001D57E
+:106B100041B9F2080108E048003CE08A01A6E349D7
+:106B200000982DCDD832F01F0154E08501EBE2F939
+:106B3000009072485828C870E2F800AC5808C83174
+:106B4000E2FA00CC1094500AE2F000D07228580803
+:106B5000E08A00A9300850187218401AF00A032879
+:106B600050585800E08A0097400530020A96C11834
+:106B70000897300330142FF2ECC6FF6404305F989E
+:106B80003009E9E80008F2081800E08000970E9448
+:106B90000C9B029C0C93F01F0139C0507838581898
+:106BA000FE99FFE86D585808C051ECF8008058086D
+:106BB000CE0040595809CDD0ECC8FFFAECCAFFA866
+:106BC000ECC9FFD45048502A50394057C0486E177E
+:106BD0005807CCF0EEF801945808CFA16CAA6E5873
+:106BE000103ACF616E4B404CF01F010BCF116E88F5
+:106BF0005808E08100E16F6AEDBA0001C061ECFB6A
+:106C00000080580BE08100E3F1DAC001300AF4089B
+:106C10001800CDE06D5B580BCDB0FACAFF94403C34
+:106C2000F01F0117CD516F6841B91268CD106F3850
+:106C300041C91268CCD06F4841D91268CC906F58C6
+:106C400041E91268CC5058065F04C96B149BF01FD1
+:106C500000F02DCDD832149B2EACF01F010A1896EF
+:106C6000FE91FEF26F9B580BE080012A581BFE91AB
+:106C7000FEEBE34B00D8029CF01F00FB622CF01FE0
+:106C800001028326CE0A5803E08100BF0E94E2F988
+:106C9000009040182FF850187228401A103AFE95AC
+:106CA000FF5DE2F801085808E0800121029CF01F16
+:106CB00000F7E2F90090C4BB5804CE600E92300693
+:106CC000C1080497089930032FF6EAC5FF640C3019
+:106CD0005F98F3E800083009F2081800CD500E92D2
+:106CE0000A9B029C0A93F01F00E5C05078385818A0
+:106CF000FE99FFE940585808CE50EACAFFFA4057BB
+:106D0000506AC0786AA8103AC5006E175807CDA01F
+:106D1000EEF801945808CFA16E5A580ACF416E88F8
+:106D20005808C1E16F5BEDBB0002C040EDBB000342
+:106D3000CED1F1DBC002C0806B585808CE71EAF8A2
+:106D400000805808CE31EEF8014C5808C110EB19FC
+:106D50000088EDB90001CDA058055F09CB6B306A02
+:106D6000EECBFFE80A9CF01F00ACCD01CDCB109913
+:106D7000EEC8FECC2FF9700A580AC2612FC85849D4
+:106D8000CFA1EDBB0003C071EEF800F0F1D8C00256
+:106D9000F9BA0101EB190088EDB90004C030580AB6
+:106DA0005F0A580ACB30CD6B6E4B406CF01F009AD7
+:106DB000CAD1CB6B306AEECBFFE80C9CF01F00967B
+:106DC000FE91FF07C19B301ACDDBFACAFF94402C1D
+:106DD000F01F00ABC0306F6AC18B6F6A41B8F5E835
+:106DE0000008FE90FF136F3841C91268FE90FF0E35
+:106DF0006F4841D91268FE90FF096F5841E9126847
+:106E0000FE90FF04C21BE2F800A85808C131306AA6
+:106E1000E2CBFF64069CF01F0080C170E2F800E83E
+:106E20005838C081306AE2CBFF5E069CF01F007AC2
+:106E3000C0C00E9B029CF01F007FE08100B50E9A3F
+:106E4000069B029CF01F0092009A400BE2FC00DCC3
+:106E5000F01F0090FE9FFDF8169A029C30ABF01FC9
+:106E6000008EFE9FFDEE3017FEFA0230303B029C92
+:106E7000E3470094F01F006AE06B2710300CF01F0E
+:106E80000088E2F800D470985808C0500E9BE2FCCD
+:106E900000C45D1830EB029CF01F0082300A029B98
+:106EA000FEFC0204F01F0081300802994FEA109B9B
+:106EB00033CCF01F007F41B9FE9FFE33E2F800D8CB
+:106EC0005808FE90FDC1E34B00D8029C301BF01F18
+:106ED0000079FE9FFDB9582BC780E07A86A0300B61
+:106EE000029CF01F0075FE9FFDC8305BE2F80110A8
+:106EF0005818C720029C300AF01F006FFE9FFDA4A7
+:106F0000E2F9009072485828FE90FD9E301BCEFB9F
+:106F1000FAC7FF94E2C6FF64306A0C9B0E9CF01F18
+:106F20000041E2F801185808FE91FCF8FE9FFCE4CD
+:106F3000029CF01F00621896C230F8FB0194580BB7
+:106F4000C1F17958E2180013C351189B029CF01F3D
+:106F5000005CE2F800B05808C0701036C050E2FC87
+:106F600000E0F01F0058E2FC00DC0C9BE34600B0A0
+:106F7000F01F0055029CF01F0055FE9FFD0D029C66
+:106F8000303BF01F0053FE9FFD5FE2F800B0580851
+:106F9000FE90FCF3F0F800F0F1D8C002FE91FCED99
+:106FA000FE9FFCEF029C300A30ABF01F0043FE9FB7
+:106FB000FD4B3509FAC8FF70189A10D9029CFAC91E
+:106FC000FFE4F01F0044CC6B4C3AF01F0015E2F8D0
+:106FD00000E8FE9FFD4F72485818F9B80002E3F828
+:106FE0000A44F9BB0000C87B0E9BFE9FFD84E2F8BB
+:106FF00000B05808FE90FD68F0F800F0F1D8C0022B
+:10700000FE91FD62FE9FFD678003CB708002669853
+:107010008001CD9080002D948003CBB08002299E0A
+:1070200080002DF480002DE88001DC548003CBF03B
+:10703000800265BC8002A9D0800270F68002516C8B
+:1070400080025158800251288001D2A08001D3785B
+:1070500080028720800265AC8001D0A08002A9A0B8
+:107060008003CC60800265E88003CC9C8002C12054
+:1070700080027ED88001D4448001CEB88002ACEC7E
+:1070800080002DB8800270F88001CE5C8001E69C03
+:10709000800288288001DA2C8003CCBC80027EA08C
+:1070A0008001DE988002665080026384800263F86B
+:1070B0008001DD548001DB448001CF1C8001D86455
+:1070C000800246CC8002A9588001D9308001E58C2D
+:1070D0008001D4F08003CC20580C5E0E5E1DD401DC
+:1070E000201D3008767C3009BA881A9A7668129B7F
+:1070F0005D182FFDD8025EFCEBCD40801897580C30
+:10710000C090789C580CC035F01F00040E9CF01FF6
+:107110000004E3CD808000008002650880002E001E
+:10712000EBCD40F81896129510944063328CF01F06
+:10713000000B1897C0F00C9B311AF01F00093FFCA0
+:107140008F658F748F838F9C30090E9A485BF01F78
+:1071500000060E9CE3CD80F880027EA880002DC43E
+:10716000800270DE8002624CD4011698306AF8CB3F
+:10717000FFEF109CF01F0002D80A000080002DF4E1
+:10718000D431213D76FE511E760A503A7619504987
+:1071900076285058763E506E764A507A76695089F5
+:1071A00076785098768E50AE769A50BA76B950D995
+:1071B00076C850E876DE189850FEF8C9FFF876EAEF
+:1071C000510A765476AB500C5019E02BA44F50CB9B
+:1071D000110EF8CBFFF45008512E403A700340488E
+:1071E0007205502BE069A478EA19D76AFC090009F6
+:1071F0001409760AE06BB756EA1BE8C7F40B000BDC
+:10720000100BF5E52008066814581009E06870DBDB
+:10721000EA182420EBE3200AF20E1507FDE9139E7D
+:10722000060EFDEA000A0A5A1005140BFDE32008B9
+:10723000F606150CEDEB13461C06EDE800080658A3
+:10724000405AE069CEEEEA19C1BD14051005EDEE15
+:107250002008EA0B1511F7E512FB0C0BF7E8000804
+:107260001C5812034069120310034078E6051516F6
+:10727000E0690FAFEA19F57CEBE312A5F00900090C
+:107280001605F7E62008EBE800080C581C09100961
+:10729000EBEB2008F2031507E7E913930A03E7E88D
+:1072A00000081658E06AC62AEA1A4787E80A000A60
+:1072B0000C0A100AE7E52008F402150CE5EA13426F
+:1072C0000602E5E800080A58408EE0694613EA190C
+:1072D000A830FC09000916091009E5E32008F206A8
+:1072E0001511EDE912F60406EDE800080658409A7B
+:1072F000E06B9501EA1BFD46F40B000B0A0B100B2B
+:1073000040A840C9F60E1516FE395BB1FDEB12AE72
+:10731000E06A98D8EA1A69800C0E40BBF00A000AAD
+:10732000EDE22008FDE80008045840C1060A50C9F3
+:10733000100AE069F7AFEA198B44FDE62008F60968
+:107340000009F40B1507F7EA139B1C0BF7E800087C
+:107350000C58F7EE200A0C0104091009F206150C6E
+:10736000EDE913461606EDEB2008EDEA000A1C5A7B
+:107370001401E2051511EBE112F50C05EBE800082C
+:10738000165840DAE069D7BEEA19895CF4090009A9
+:107390001C09100940E8F20E1516E06A1122EA1ADB
+:1073A0006B90FDE912AEF00A000A0A0EEBE6200827
+:1073B000160AFDE8000840FB0C58E0697193EA19D1
+:1073C000FD98100AF6090009FDE52008F40B1507E1
+:1073D000F7EA139B1C0BF7E800080A580C09100980
+:1073E0004108F206150CE06A438EEA1AA679EDE927
+:1073F0001346F00A000A1606F7EE2008EDE800082A
+:107400001C580A0A100A4118F4051511E0690821F0
+:10741000EA1949B4EBEA12F5F00900090C05EDEBA5
+:107420002008EBE8000816581C091009F20315168D
+:10743000E7E912A30A03E7E520080C680A58404E62
+:10744000E06A2562EA1AF61EFC0A000A160A408B58
+:10745000100A40D8F40E1505E069B340EA19C0409F
+:10746000FDEA13BEF6090009060E403B0C09E06672
+:107470005A51EA16265EF0060006FDE320080A6867
+:1074800006581009E062C7AAEA12E9B6F60200023D
+:10749000F20B1509F7E9137B41191C0BF7EE2008D5
+:1074A00006681C580A0606021006E063E681EA1325
+:1074B000D8A1F2030003EC09150EF3E6132916090F
+:1074C000F3EB20081C68165840CA10024078E065AB
+:1074D000105DEA15D62FE0611453EA110244E80565
+:1074E0000005F40100011C051601E40A1514E06E04
+:1074F000FBC8EA1EE7D3F5E212CAF00E000E120A2C
+:10750000F5E92008166840BB125812031005E06622
+:10751000CDE6EA1621E1F6060006EA0B1505F7E5C9
+:1075200013BB140BF7EA2008126841091458E065F0
+:1075300007D6EA15C3371001F2050005E20915095F
+:10754000F3E113791609F3EB2008146816581003B9
+:107550004068140E1606E60A150EE0620D87EA1260
+:10756000F4D5F5E3132AF0020002120AF5E9200827
+:10757000166840AB12581205100EE06314EDEA13C2
+:10758000455AF6030003FC0B1514F7EE12CB140B4F
+:10759000F7EA2008126840F91458E061E905EA1199
+:1075A000A9E31006F2010001EC091505F3E613B991
+:1075B0001609F3EB200814681658100540581402F9
+:1075C000E066A3F8EA16FCEFEA0A1509F0060006E1
+:1075D000F5E5137A120AF5E9200816681258409E5C
+:1075E00010021603E40B150EF7E2132B140BF7EA47
+:1075F000200812681458E06502D9EA15676F100375
+:10760000FC050005E60E1514FDE312CE160EFDEB8B
+:107610002008146816581201100140A840E9140609
+:10762000E060F681EA108771E20A1505F0000000BB
+:10763000F5E113BA1C0AF5EE200816681C58E06242
+:107640004C8AEA128D2A1006F2020002EC09150992
+:10765000F3E613791409F3EA20081C681458160598
+:1076600040DB10054108E434C6BEE0616122EA1146
+:107670006D9DE80A0007F6010001E066380CEA1685
+:10768000FDE5F0060006EA08150EF1E513281208DC
+:10769000F1E9200BF7EA000A125A1C021402407AA0
+:1076A000404E12001001E063CFA9EA134BDEF40351
+:1076B0000003E40A1514F5E212CA100AF5EB200BD8
+:1076C000F5E82008EE0B000BF6091504F3EB13C9DF
+:1076D0001409125814061000F3EA200AE065EA447F
+:1076E000EA15A4BEE008150BFC050005F1E01358EF
+:1076F00012051208105A10031401F1E92009E20BD7
+:107700001510F7E1130B100B1659F7E820081206B5
+:10771000EC0E1517FDE6129E160E1C58100540982B
+:10772000FDEB200AEA061504E0694B60EA19F6BB96
+:10773000EDE513C6F00900091C0616090C5AEDEE1A
+:107740002008140340CBE605150BEBE313550C059D
+:107750000A58E06ABC70EA1ABEBF1009F60A000AAD
+:10776000EBE62008F20B1510F7E9130B0A0B16587D
+:107770001C0A100A40F8F40E1517E0697EC6EA19D3
+:10778000289BFDEA129EF0090009160EF7E5200875
+:107790001C580C0910094038F2061504E06A27FA53
+:1077A000EA1AEAA1EDE913C6F00A000A1C06FDEB8D
+:1077B00020080C580A0A100A4068F405150BE06905
+:1077C0003085EA19D4EFEBEA1355F00900090C05EE
+:1077D000EDEE200816090A58408B1009E06A1D05D5
+:1077E000EA1A0488EBE62008F60A000AF20B1510E4
+:1077F000F7E9130B0A0B16581C0A100A40B8F40ECE
+:107800001517E069D039EA19D9D4FDEA129EF009BA
+:107810000009160EF7E520081C580C09100940E86D
+:10782000F2061504E06A99E5EA1AE6DBEDE913C60B
+:10783000F00A000A1C06FDEB20080C580A0A100A80
+:107840004118F405150BE0697CF8EA191FA2EBEA70
+:107850001355F00900090C05EDEE200816090A5829
+:10786000405B1009E06A5665EA1AC4ACEBE62008F2
+:10787000F60A000AF20B15101C0AF7E9130BE0696F
+:107880002244EA19F4290A0B1658100A4032F40E61
+:1078900015171202FDEA129EEA0811FF160E409A11
+:1078A000FDE81008E069FF97EA19432A1658F40921
+:1078B00000090A090C0241061002F60811FFE40A49
+:1078C0001506F5E213AA1C0AF5E810081C58F20880
+:1078D0000005E06923A7EA19AB941206FC0811FF22
+:1078E000EC0B000BEA06150AEDE513661406EDE84D
+:1078F00010081458F6080008E069A039EA19FC934A
+:10790000F00B150FFA243942F7E8131BE8090005BC
+:107910000C0BEA0E000EF40811FFF7E810080C58E3
+:10792000E06959C3EA19655BFC08000540E2EA0E0C
+:1079300015151202FDE512BEEC0811FF160EFDE84A
+:1079400010081658E40A000AE069CC92EA198F0C74
+:10795000F40800024068F00900090C09E40A150661
+:10796000F60811FFF5E213AA1C0AF5E810081C58E6
+:10797000F2080002E069F47DEA19FFEF40C1FC085B
+:1079800011FF1201E406150AE20B000BE0695DD15C
+:10799000EA198584EDE213661406EDE81008145820
+:1079A0004045F60800011205E20B150FEA0E000E25
+:1079B000F7E1131BF40811FF0C0BE0697E4FEA1985
+:1079C0006FA8F7E8100840A30C581203E60A000A53
+:1079D000FC080005EC0811FFEA0E1515FDE512BEC6
+:1079E000160EFDE810081658F4080003411AF608B0
+:1079F00011FFE069E6E0EA19FE2CF4090009E60A45
+:107A000015060C09F5E313AA1C0AF5E810081C5822
+:107A1000F20800034088E0694314EA19A301F00961
+:107A200000091609FC0811FF40FBE605150AEBE307
+:107A300013651405EBE810081458F2080008E06913
+:107A400011A1EA194E08F6090009F20E000EF0061F
+:107A5000150FE0697E82EA19F753EDE81316F40872
+:107A600011FF0A06EDE810080A58FC080001407EE4
+:107A7000120EEA0811FFFC0A000AE20E1515FDE1DC
+:107A800012BE0C0EFDE810080C58F408000941283D
+:107A9000F20A1506F5E913AA1C0AF4080009E068C1
+:107AA000F235EA18BD3A990940D91009EC0811FFDE
+:107AB000F205000BF5E8100840091C58720CF60896
+:107AC0000001E069D2BBEA192AD740581208E20B3C
+:107AD000150AF0060009F7E1136BFC0811FF140BFF
+:107AE000F7E810081458F208000640B8E069D3918E
+:107AF000EA19EB86F0090009F20E0008F40A11FFFA
+:107B0000400EEC09150FF3E613191609F20C000CE0
+:107B1000F3EA100A165AF00A0006EC081515F1E609
+:107B200012B8100C9D0C401A7408120895084028D1
+:107B30007009160991092EDDD832D703EBCD40E04C
+:107B400038097648F1D8C066F608000AF5690018C9
+:107B50001895F00A113F1697F6080008F0CCFFE7D9
+:107B6000587AE08B0056300BF01F002DEEC6FFE870
+:107B7000EECCFFA80C9B1798178917BAF3E8108969
+:107B800017A8F1EA1088F3E8110916A9183BCF41AC
+:107B90000C9B0E9CF01F0023338A300B0C9CF01FB3
+:107BA00000200C9BECCCFFC81798178917BAF3E894
+:107BB000108917A8F1EA1088F3E8110916A9183BF3
+:107BC000CF416E486E590C9B0E9CEF480050EF4918
+:107BD0000054F01F00140E9BEECCFFF0179817898D
+:107BE00017BAF3E8108917A8F1EA1088F3E8110929
+:107BF00016A9183BCF410E9B0A9C310AF01F000AC0
+:107C00000E9C304A300BF01F0006E3CD80E0208A46
+:107C1000300BEEC6FFE8F01F0002CC4B80002DE8D1
+:107C20008002718080002DF4EBCD40FC1493784AE3
+:107C3000F4030038103AF9F98005F9F9B005F7B9FD
+:107C40000BFFF9F9BA059948E608161DF208000875
+:107C5000995818941692F1DAC066C381F8C5FFE806
+:107C6000E043003FE088002C3006EAC7FFC0E4068E
+:107C7000000B340A0A9CF01F00290A9B17981789E9
+:107C800017BAF3E8108917A8F1EA1088F3E8110988
+:107C900016A90E3BCF410A9B089CF01F00212C0621
+:107CA000E6060108E048003FFE9BFFE3E6C800400F
+:107CB000E7D8C006E018FFC02C081002069A049B03
+:107CC0000A9CF01F0016E3CD80FCF00711402E88BF
+:107CD000100C0E33C1D30E9AF01F0010E8C5FFE858
+:107CE000E8CCFFA80A9B1798178917BAF3E8108900
+:107CF00017A8F1EA1088F3E8110916A9183BCF413B
+:107D00000E130E020A9B089CF01F0005CAAB069AD0
+:107D1000F01F0002E3CD80FC80002DF48002718012
+:107D2000EBCD40FC216DE0682301EA186745E06E69
+:107D3000AB89EA1EEFCD30075008501EE068DCFE2C
+:107D4000EA1898BAE06E5476EA1E1032504750573F
+:107D50005028503E18931292580CC1401494169516
+:107D60001A962FF7090A0B0B1A9CF01F00080E3306
+:107D7000FE9BFFF91A9B049CF01F00052EADE3CD7E
+:107D800080FC1A96CF8B000080027C2880027B3C0E
+:107D9000D431FACD0088501C500B149312921091DC
+:107DA00042B0585AE08B0056E04B0040E08B005444
+:107DB000FAC4FFF8340A300B089CF01F002E400A6A
+:107DC000401B089C0896F01F002CFAC5FFB80897C6
+:107DD0000D88EC1800360CC80A36CFB1340851842F
+:107DE00051285803C110FACCFF9CFACBFFB4300ADB
+:107DF000E60E1502E40A030818A8E20A030916A908
+:107E00002FCA1C3ACF81E6CCFFFF00990A9AFAC329
+:107E1000FFA0069BF01F0019340A300B089CF01FCE
+:107E20000015400A401B089CF01F00130F88EC1837
+:107E3000005C0EC80C37CFB1310C3408513C518472
+:107E4000519000990A9A069B5128302CF01F000B84
+:107E50002DEDD832FAC6FF881A9A0C99FACBFFFC9E
+:107E6000301CF01F0006310850165008CA2B0000C5
+:107E700080002DE880002DF480027D20D401202D8B
+:107E8000501A5009301A1AD8FAC9FFF8FAC8FFFC7C
+:107E9000F01F00032FFD2FEDD802000080027D901F
+:107EA0005EFC5EFE5EFCD703EBCD40C01896F01F73
+:107EB00000061897C0500C9A300BF01F00040E9C5F
+:107EC000E3CD80C080002E1880002DE8D401F01F83
+:107ED0000002D80A800148BCD401F8CBFFFCF01F97
+:107EE0000002D80A80014890780C580C5E0C3008CB
+:107EF000F948004C780C580CCFC15EFC580CF9FCCA
+:107F000010435EFC580CF9B80100F9F81A435EFC06
+:107F1000EBCD40E0189716961495314CF01F0005F4
+:107F2000F9F71A03F9F61A04F9F51A02E3CD80E01D
+:107F300080027EA8EBCD40E016961495780758078E
+:107F4000C1605806C080306A0C9BEECCFFC0F01FA9
+:107F5000000AC0A15805C0B0EECCFFFC310A0A9B54
+:107F6000F01F0005C0406E075807CEC10E9CE3CD40
+:107F700080E0000080002D94EBCD40407818201860
+:107F800016969918784B78390C9C5D190C9CF01F4B
+:107F90000003E3CD8040000080002E00EBCD408048
+:107FA000202D300A1897189B49BCF01F001C300A7E
+:107FB0000E9B49BCF01F00196E085808C2201A9C7D
+:107FC000F01F00186E08400A70EC0E993008141C5F
+:107FD000109BF8080C4C490A2FFCF01F00136E2B65
+:107FE000F6FA010C580AC1006E08400A712C0E996D
+:107FF000141C300848AAF8080C4C109BF01F000A0B
+:108000002FEDE3CD8080F6CBFEB80E9CF01F00076D
+:10801000CF80CEBB8002806880026384800280B4FF
+:1080200080027ED8800263F880027F34EBCD40C0AE
+:108030001896580CC1407809300899085809C03181
+:10804000C0880E997207129CF01F00065807CFA136
+:108050000C9CF01F00050C9CF01F0002E3CD80C0BB
+:1080600080002E0080027F9CEBCD4080202D189751
+:108070001A9CF01F000E6E0A580AC0C1C10874088D
+:10808000149B8F08300A0E9CF01F00096E0A580AD4
+:10809000C06074E940081039FE9AFFF30E9CF01F8F
+:1080A00000052FEDE3CD808080027ED880027F78AE
+:1080B00080027F9CD4013008782AF548010C782989
+:1080C000F2FC0104F01F0002D802000080024530DB
+:1080D000D43120CD1096782814941293E04A0020D1
+:1080E0005FBAF0F90160189758295F18169241514C
+:1080F0001448C05030060C9C2F4DD832354CF01F20
+:1081000000621890CF80089A049B2ECCF01F005F6D
+:1081100081D4FAC9FFE450965083FAC5FFF84DC8E0
+:108120001AD5303A089B049C4DA65086F01F005A81
+:10813000E0C8FFFC0A9B5018310A109CF01F005346
+:10814000FACCFFD4F01F0055E0C8FFC0502840BC57
+:108150006E29F2F80150F808000881E86E2AF4FB55
+:108160000150F4F90154E06A851FEA1A51EBB7395E
+:10817000F20A0648301AA599180981FAE14900481F
+:10818000306A402C069BF01F0041E141004C2FFD5E
+:108190006E065806C2903005C0680C956C0C580CE1
+:1081A000C5801896ECCBFFC0306A069CF01F003CDF
+:1081B000CF516CD80838C5505805EDF80000EFF8DD
+:1081C0000A00EDF81000EBF81A006E29F2F8010C25
+:1081D0000C38F9B80000F3F80A430C9B301A0E9CD7
+:1081E000F01F00306E066E1859F8E08A0015580628
+:1081F000C3200C9A15088F086E28F0F90128ECCBE3
+:10820000FFC0720C72F85D180C9B300A0E9CF01FB8
+:1082100000256E065806C1F060EA6CE8103AC0749A
+:10822000C1A872E81438E089000612966C09580952
+:10823000CF9181098D006E2C6E18400A401B2FF8DB
+:108240008F18F8F901280096720C72E85D18C54B7A
+:108250006E06CCAB81068F000E9CF01F0013CECBB8
+:10826000089A049BECCCFFECF01F000DCA61310AA8
+:10827000400BECCCFFFCF01F000AC9F1009CF01F82
+:10828000000BC3AB80027EA880002DF48003CCDC01
+:108290008003CD4C8002A0C880027ED880002D943F
+:1082A00080027F7880027F9C80002E00EBCD408092
+:1082B000189E7807580BC06116970E9CE3CD8080FE
+:1082C0006E075807CFB06F381638CFB11AD8149947
+:1082D0007C286EDAF0C8FEC8EECBFFEC1C9CF01FC9
+:1082E00000092FFD580CF8071700EFF8100EF9F8E9
+:1082F0001A0EF8071710F9B80101F9F81A14CDEBA6
+:10830000800280D0EBCD40FC1897300CEF4C010C74
+:10831000149612921094EEF50108580BC080169A2C
+:10832000189B0A9CF01F0016EF4C010C58065F13B7
+:10833000EEFC010C580C5F09F3E30008C16158041E
+:108340005F18F3E80008C0A05803C0800C9A049B93
+:108350000A9CF01F000CEF4C010C580CF9BC00FFFC
+:10836000F9BC0100E3CD80FC300A0C9B0A9CF01F95
+:1083700000045F09EF4C010CCE3B000080027F340B
+:10838000800282AC0000000000000000EBCD4080C5
+:10839000580CC100F8F901103008F94801105809CB
+:1083A000C031C0880E997207129CF01F0004580754
+:1083B000CFA1E3CD8080000080002E00EBCD40C037
+:1083C0001897580CC250F8F801245808C210189B8E
+:1083D000300A491CF01F0011EEFC0124F01F0010B0
+:1083E0003006306A0C9BEF460124EECCFEE4F01F11
+:1083F000000DEEFC0114F01F000CEF460114EEFC22
+:108400000118580CC050F01F0008EF460118E3CDCA
+:1084100080C00000800288EC800263848002467085
+:1084200080002DE8800270F8EBCD40F8205D1897B1
+:1084300016951494F8F601245806C0503FFC2FBD41
+:10844000E3CD80F8F8FA012817D81AD817C91AD935
+:1084500017B81AD817A91AD917981AD81789301B1C
+:108460001AD9740C4C6AF01F0047EEC3FEC81AD626
+:108470000E984C59E06A88C7069BEEFC0140F01F3D
+:108480000043EF4C01142F9D580CC6F0EEFC014444
+:10849000580CC0E01AD6069B0E984BB9E06A88C704
+:1084A000F01F003AEF4C01182FFD580CC5E0340CBA
+:1084B000F01F00371896C5B0EEF801287009990929
+:1084C000EEF801283019700A4B2899199928994A11
+:1084D00099374B18EEF9012C998899599967EEF85C
+:1084E0000128710999A9EEF80128711999B9F01FAD
+:1084F000002BEF4C0124C3D0314A300B1A9CF01FE3
+:108500000028EEF901305804E9F8105FFBF81A036F
+:10851000300650291A9A089B50165006EEFC01248A
+:10852000F01F0020306830593FFAEEFC0124149B04
+:10853000F01F001D306A0A9BEECCFEE4F01F001B0A
+:10854000301BEEFC0124F01F001A301BEEFC01244E
+:10855000F01F00180C980E99497A0C9BEEFC0158FC
+:10856000F01F00160C9CC6CB3FECC6AB3FCCC68BB5
+:108570000C9CF01F00133FDCC63B00008003CD586D
+:108580008002299E80028A748002712080027EA867
+:10859000800289A8800289488002502080002DE84E
+:1085A000800247A0800244E880002DF480025158E8
+:1085B0008002516C800288EC800263F880002E00FB
+:1085C000EBCD40FC1897F8F801105808C6F0F8F801
+:1085D00001284CAA700C301BF01F0049EEF8012452
+:1085E0005808C0A0EEF801284C6A700C301BF01F30
+:1085F0000044E3CD80FCEEF801605828CF41EEF84E
+:108600000128700C70295D19587CCED1EEF8016CF0
+:108610005818CE91EEF501105805C410EEC2FEB800
+:10862000EAC3FFFC300A069BEEFC0108F01F00368F
+:10863000306A1894069B049CF01F0034C0605804F4
+:10864000C37069485808C341EB3800091AD8EB38A1
+:1086500000081AD80BF81AD80BE8EEF601281AD839
+:108660000BD91AD90BC84AAA1AD8301B6C0CF01FA8
+:1086700000242FAD5804C090EEF90128E8CAFFFC91
+:10868000069B720C72E85D186A080A9CEF4801109C
+:10869000F01F0020EEF501105805CC31EEF801284E
+:1086A00049DA700C301BF01F0016E3CD80FCEB386C
+:1086B00000091AD8EB380008EEF601281AD80BF892
+:1086C0001AD80BE81AD80BD91AD90BC8493A1AD8B4
+:1086D000301B6C0CF01F000A6A08069BEEFA01348E
+:1086E000EF4801100E9CF01F000E0A9CF01F0009BD
+:1086F0002FADE3CD80FC00008003CD9C8002299E3D
+:108700008003CDC480027F3480002D948003CE503E
+:1087100080002E008003CEAC8003CDFC8002842834
+:10872000EBCD40F81695189414931297F8FB01348A
+:10873000580BC050F6F801485808C5D15807C4C0B6
+:10874000E8F601105806C4A03007C0680C976C0CFE
+:10875000580CC4401896306A0A9BECCCFFFCF01F02
+:10876000002CCF515807EDF81000EFF81A00EDF883
+:108770000000E9F80A44E04303E7E08A003BE8FA36
+:108780000110580AC4006C3B74381638C065C3B871
+:1087900072381638C054129A74095809CFA18D093D
+:1087A00095061AD30BD80B8CE8F601281AD80BC9FA
+:1087B0001AD90BB81AD80BA91AD90B98495A1AD832
+:1087C000301B1ADC6C0CF01F0014089CF01F001307
+:1087D0002F9DE3CD80F8E3CD80F8310CF01F001021
+:1087E0001896C0F0306A0A9BECCCFFFCF01F000D1D
+:1087F0008D33CC6B0A9AF8FC0108F01F000BC9FB03
+:10880000E3CD80F88D0AE9460110CCCB80002D9491
+:108810008003CED48002299E800285C080027EA87B
+:1088200080002DF4800282ACEBCD40F8208D1694B0
+:1088300014971895F8F801345808C470F01F0027F1
+:10884000EEC60001C426E068009C1A93EC080248BA
+:10885000E8080007EAC4FEB8C0682016EEC7009C0E
+:108860005806C335EAF901346EAA7258103ACF613E
+:10887000724BEECCFFFAF01F001ACF01306A089B52
+:108880000E9CF01F0017CEA0EEFB0080580BCE60B0
+:108890001A9AEECCFFA8F01F0013CE01189A0E9B77
+:1088A000EAFC0108F01F0010C13079485808CD607B
+:1088B0004048EDB80000CD213019E06A03E80E9B76
+:1088C0000A9CF01F000ACCAB2F8DE3CD80F8404806
+:1088D000F3D8C001CF3B00008002838C80002D9430
+:1088E0008002ACEC80027F3480028720EBCD4060B8
+:1088F000F9380121F8F501281AD8F93901201AD9D7
+:10890000F938011F1AD8F939011E1AD9F938011D91
+:108910001AD8F939011C489A1AD9302B18966A0CC2
+:10892000F01F00070C9CF01F00070C9CF01F0006B6
+:108930002FADE3CD806000008003CF1C8002299E14
+:10894000800283BC800285C0EBCD40E0201D1897DB
+:10895000F8F801145808C0613FF60C9C2FFDE3CDD8
+:1089600080E0F8F80128300C5C791ADC5C5B700C54
+:1089700070D6FAC8FFFC5D162FFD1895580CCED0A6
+:1089800018994008E06A88C7EECBFEE4EEFC0114BB
+:10899000F01F000418960A9CF01F0003CDFB000096
+:1089A000800270D880002E00EBCD40E0208D14971F
+:1089B0001896580BC2614A781AD8EEF60128EF389B
+:1089C00001211AD8EF3901201AD9EF38011F1AD81E
+:1089D000EF39011E1AD9EF38011D1AD8EF39011CE1
+:1089E00049DA1AD9302B6C0CF01F001C0E9CF01FBA
+:1089F000001C0E9CF01F001B2F9D2F8DE3CD80E0EF
+:108A00001A95320A1A9BF01F0018C1211A9B320ACC
+:108A1000EEF801348F8A1AD8EEC9FEE4EEC8FEC81B
+:108A2000EEFC0108F01F001149182FFDCC6B0C9CC7
+:108A3000310A1A9BF01F000CC090EEF8012848DAAA
+:108A4000700C302BF01F0005CB7B1A9B310ACE1B1C
+:108A50008003945C8003CFC88002299E800283BC7F
+:108A6000800285C080024750800280D08003CF649E
+:108A70008003CF7CEBCD40F8189716951493129491
+:108A8000F8F801245808C090F8C6FEE4306A48BBE4
+:108A90000C9CF01F000BC031E3CD80F80C9C306AB9
+:108AA0000A9BF01F0007CF910899069A0A9BEEFCDB
+:108AB0000124F01F0004CF1B8002838480002D94CA
+:108AC00080025180EBCD40F8FACD01001293109452
+:108AD00018961697149530081A99F2080B082FF873
+:108AE000E0480100CFB1300E1A9C1C9BEC0B07092B
+:108AF000198AFC0A00081208FAC9FF00FDD8C0084C
+:108B00001C09F338FF0018C8F36AFF002FFBFAC8EE
+:108B1000FF000E3BF9BB0200103CCE915805C4C0CB
+:108B2000300E1C971C9CF8C8FFFFFACAFF00F9D84A
+:108B3000C008180AF53BFF00F60E0008FAC9FF004E
+:108B4000FDD8C0081C09F338FF00F568FF00F36B7F
+:108B5000FF002FF70E35FE9BFFE85804C2A00696D3
+:108B60003007F8C8FFFFFACAFF00F9D8C008180A92
+:108B7000F539FF00F20E0008FACBFF00FDD8C0085F
+:108B80001C0BF738FF00F568FF00F769FF00F538A8
+:108B9000FF001009F3D9C008FACAFF00120A0D89B4
+:108BA000F538FF0012580CC82FF70E34FE9BFFDB80
+:108BB0002C0DE3CD80F80A9E0A9CCD0BD401129EA9
+:108BC000169818991C9B149C300AF01F0002D802BA
+:108BD00080028AC400000000D431FACD0180340A3A
+:108BE000FAC4FEC0510C089CF01F04BF688A516A89
+:108BF000689950A968A8509868B650866845682159
+:108C00006830416650E5685250D2686A50CA687947
+:108C100050B968085158E3E8200868D50C580A583C
+:108C20006812F00A150150F2F5E813FA517A68E873
+:108C300068F640E540A9105940980C580A58025867
+:108C40000059F00A15010459F5E813FAF20215016A
+:108C50004178E5E913F2519A518240C54089105993
+:108C600068C8045840E20A58045840D6F00A150172
+:108C70000C59F5E813FA005951AA419840B640D56D
+:108C8000416240CAF2071501EFE913F768D910599C
+:108C900068E80E58045814580C590A59F005150183
+:108CA000F2061501EBE813F5EDE913F640B851C5EE
+:108CB00051B641A268F940AA4165045914591059A6
+:108CC00041780C5840960C580A58F2021501F00AE7
+:108CD0001501E5E913F2F5E813FA41C851EA51D25A
+:108CE000408640A5409A418910594198045868C26D
+:108CF000045814580C590A59F0051501F2061501CB
+:108D0000EBE813F5EDE913F6408851F6520541E220
+:108D100068DA68C5EFE220091459105941A80C58C7
+:108D200068E60C580A58F2021501F00A1501E5E947
+:108D300013F2F5E813FA52124208522A41B968F6C2
+:108D400068D568EA105941C804584172045814584B
+:108D50000C590A59F0051501F2061501EBE813F557
+:108D6000EDE913F65245523668F84222418A4175C0
+:108D700041D904591459105941E80C5841960C58DE
+:108D80000A58F2021501F00A1501E5E913F2F5E8B7
+:108D900013FA4248418641A5525241F910594208FE
+:108DA0000E5904580C5941920A580458526AF20A52
+:108DB0001501F5E913FAF0091501F3E813F9426812
+:108DC00041B641C541A2527A5289421910594228EE
+:108DD0000C5914580E590A580458F20A1501F5E9AD
+:108DE00013FAF0091501529AF3E813F9428852A9CF
+:108DF00041D641B541E2423910594248145841CA5E
+:108E0000045814580C5941FA0A59F0051501F20694
+:108E10001501EBE813F5EDE913F641D852C542A26E
+:108E200041E552B642590459145942CA1059426890
+:108E30000C5842060C580A5841F6F20E1501F00281
+:108E40001501FDE913FEE5E813F2421942781458C2
+:108E5000420A4225125842890C581C59F006150145
+:108E60000A59EDE813F61459F20A1501F5E913FA57
+:108E70000C951493423952E652FA4216424A52D2A3
+:108E800042980458125842A90C580A5942261459BB
+:108E9000F00A1501F5E813FA0C59530A1496F20872
+:108EA0001501425AF1E913F84239109C531842B89F
+:108EB00006581458426A125842C90C591459424A69
+:108EC0001459F00A1501F5E813FAF2081501F1E951
+:108ED00013F8109B53384278FDEC20091059425882
+:108EE000105950194289E5EA20081258426912586F
+:108EF000401950084018A178F1E913F84009534887
+:108F00004008A178F1E913F853584298EBEB200997
+:108F100010594278105942A850194349E7E92009ED
+:108F200010594288105940185009532A4019A17904
+:108F3000F3E813F9400853694009A179F3E813F9FC
+:108F400053794358EDE8200942B810594298105916
+:108F500042C850194369F9E92009105942A810592B
+:108F6000401850094019A179F3E813F940085389D2
+:108F70004009A179F3E813F943785399F5E82009FA
+:108F800042B81C59105950194389F7E92009129821
+:108F900042C904581258401950084018A178F1E904
+:108FA00013F8400953A84008A178F1E913F84349A0
+:108FB00053B8439810590A591C59501943A943589A
+:108FC00012584019065804584012A172E5E913F2EC
+:108FD00053C2F0021501E5E813F243B84369105992
+:108FE00043780C590A5943C50A581858065853D2A1
+:108FF000F2021501E5E913F2F0091501F3E813F99E
+:1090000043D853F9438910594398145904580C59BB
+:109010001658185853E243F54342F20C1501F00676
+:109020001501F9E913FCEDE813F643A943B80A5911
+:10903000185804591459435A145816585406436A78
+:109040004402F2061501F0051501EDE913F6EBE80F
+:1090500013F5434854255416435543C9045914592C
+:10906000105943D8F20215010C58E5E913F2437682
+:1090700054320C580A58F00A1501F5E813FA544A0C
+:10908000890A442943864365437A43E8125843F9E1
+:109090000C5804590A584392F0061501EDE813F6EE
+:1090A0005456891604591459F2051501EBE913F5C4
+:1090B00054658925444243AA4389F9E2200814589B
+:1090C0001258F0021501E5E813F254724395440971
+:1090D0000C5943B689320C590A59F20A1501F5E9BF
+:1090E00013FA548A894A43C6446943A5441812585E
+:1090F0000C580A58F0061501EDE813F6549643BAD9
+:109100004429045943D2895604591459F2051501CA
+:10911000EBE913F554A58965448243EA43C9443811
+:10912000045814581258F0021501E5E813F254B22D
+:1091300043D544490C5943F689720C5944080A59DD
+:10914000446A045A105A0C5AF2061501EDE913F656
+:1091500054C6447B89860C5BF4061501EDEA13F6D0
+:1091600054E6441544A243E9445889A60A5B0458CE
+:1091700018581258F0051501EBE813F554D58995E8
+:10918000185BF6021501E5EB13F254F289B2444A7A
+:109190004489449B0A590C5B4405442644A804585E
+:1091A0001458F3E6200A0C580A5A5028E0657999B9
+:1091B000EA155A82504A410644325116441AEE05C5
+:1091C0000009F7E220081458E062EBA1EA126ED918
+:1091D00050385079040E0C99506EE068BCDCEA18E7
+:1091E0008F1B0C9A100C2F8A505C512A13065119B0
+:1091F00041087403720C2F485138410A2F0A514A12
+:10920000700A4148700941580A08F0090009EC0841
+:109210001505F1E613B8F2080008F5E3200918690E
+:109220001459F009000740F80A08F00A0009F80B81
+:10923000151EF7EC122BF7E320080C680658F2080D
+:109240000008EE091505F3E713B9EC0A151EF0093D
+:10925000000EF5E6122AFC091505F7EA2008F3EEE0
+:1092600013B9EFE8000816580A01EE0C151E0601A6
+:10927000F9E7122C1001F9EA200812011C68E20932
+:1092800015051458F3E113B90A001600100040E860
+:1092900012000A08F00A0009FC0B151EF7EE122B4B
+:1092A000F7EC200802681858F2080008E0091505D4
+:1092B000F3E013B9F009000640D80A08F00C0009E1
+:1092C000E20A151EF5E1122AF5EB2008006816588F
+:1092D000F2080008EC091505F3E613B9F009000ED1
+:1092E00040C80A08F00B0009E00C151EF9E0122C2A
+:1092F000F9EA20080C681458F2080008FC09150562
+:10930000F3EE13B9F009000340B80A08F00A0009A7
+:10931000EC0B151EF7E6122BF7EC20081C6818580A
+:10932000F2080008E6091505F3E313B9F009000691
+:1093300041680A08F00C0009FC0A151EF5EE122A15
+:10934000F5EB200806681658F2080008EC09150528
+:10935000F3E613B9F009000E40A90A091609E60C54
+:10936000151EF9E3122CF9EA20080C681458F208CB
+:109370000008FC091505F3EE13B9F0090003409845
+:109380000A08F00A0009EC0B151EF7E6122BF7ECA1
+:1093900020081C681858F2080008E6091505F3E3D0
+:1093A00013B9F009000640890A091809FC0A151EBC
+:1093B000F5EE122AF5EB200806681658F2080008A8
+:1093C000EC091505F3E613B9F009000E68C80A08A0
+:1093D000F00B0009E60C151EF9E3122CF9EA20083F
+:1093E0000C681458F2080008FC091505F3EE13B9CF
+:1093F000F009000168D90A091409EC0B151EF7E6FB
+:10940000122BF7EC20081C681858F2080006E20935
+:109410001505F3E113B968E8EC0900030A08F00C3C
+:109420000009FC0A151EF5EE122AF5EB2008026869
+:109430001658F2080008E6091505F3E313B9F00918
+:10944000000E68F90A091609E20C151EF9E1122C42
+:10945000F9EA200806681458F208000BFC09150503
+:10946000F3EE13B94178F60900000A08F00A000982
+:10947000E606151EEDE31226EDEC20081C681858D0
+:10948000F208000AE0091505F3E013B9F409000336
+:1094900041890A091809FC0A151EF5EE122AF5E69B
+:1094A000200800680C58F208000CE6091505F3E3E3
+:1094B00013B94198F80900010A08F0060009E00B09
+:1094C000151EF7E0122BF7EA200806681458F20878
+:1094D0000008E2091505F3E113B94077F009000E21
+:1094E0001407FC091505E60A151EF3EE13B9F5E39A
+:1094F000122AF5EB200802681658EE080008F00959
+:10950000000341A80408F00B0009E20C151EF9E164
+:10951000122CF9EA20081C58F2080008E609150583
+:10952000F3E313B9F009000541B904091409FC0B70
+:10953000151EF7EE122BF7EC20080658F20800086B
+:10954000EA091505F3E513B9F009000641C8040856
+:10955000F00C0009E60A151EF5E3122AF5EB2008C7
+:109560000A58F2080008EC091505F3E613B9F009EA
+:10957000000E41D904091609EA0C151EF9E5122C52
+:10958000F9EA20080C58F2080008FC091505F3EE6A
+:1095900013B9F009000541E80408F00A0009EC0BD2
+:1095A000151EF7E6122BF7EC20081C58F2080008ED
+:1095B000EA091505F3E513B9F009000641F90409B4
+:1095C0001809FC0A151EF5EE122AF5EB20080A58B8
+:1095D000F2080008EC091505F3E613B9F009000ECE
+:1095E00042080408F00B0009EA0C151EF9E5122CDC
+:1095F000F9EA20080C58F2080008FC091505F3EEFA
+:1096000013B9F0090005421904091409EC0B151EE1
+:10961000F7E6122BF7EC20081C58F2080008EA09BC
+:109620001505F3E513B9F009000642280408F00C0B
+:109630000009FC0A151EF5EE122AF5EB20080A585F
+:10964000F2080008EC091505F3E613B9F009000E5D
+:10965000423904091609EA0C151EF9E5122CF9EA3B
+:1096600020080C58F2080008FC091505F3EE13B9A0
+:10967000F009000542480408F00A0009EC0B151E29
+:10968000F7E6122BF7EC20081C58F2080008EA094C
+:109690001505F3E513B9F009000642590409180944
+:1096A000FC0A151EF5EE122AF5EB20080A58F208FE
+:1096B0000008EC091505F3E613B9F009000E42683D
+:1096C0000408F00B0009EA0C151EF9E5122CF9EA62
+:1096D00020080C58F2080008FC091505F3EE13B930
+:1096E000F0090003427904091409EC0B151EF7E692
+:1096F000122BF7EC20081C58F2080008E6091505A3
+:10970000F3E313B9F0090005428904091809FC0ABA
+:10971000151EF5EE122AF5EB20080658F20800088F
+:10972000EA091505F3E513B9F009000E4299040999
+:109730001609E60C151EF9E3122CF9EA20080A585E
+:10974000F208000BFC091505F3EE13B9F609000049
+:1097500042A904091409EA06151EEDE51226EDECEE
+:1097600020081C58F208000AE0091505F3E013B9B7
+:10977000F409000342B9FC0A151E0409F5EE122A89
+:109780001809F5E6200800584065F208000C140599
+:10979000E6091505E00B151EF3E313B9F7E0122BEC
+:1097A000F8090001F7EA200AE2081505065AF1E176
+:1097B00013B842C904090C091409E60A151EF20877
+:1097C000000EF5E3122AF5EB20080258EA0800081B
+:1097D000E066BCDCEA168F1BFC091505F3EE13B935
+:1097E000F009000042D80C08E20C151EF00B000234
+:1097F000F9E1122CFDEC0008FDEC10091469104988
+:10980000E0081505F1E013B8E4090009F2080002C8
+:1098100042E80C08FC0B151EF00A0005F7EE122BAF
+:10982000E1EB0008E1EB100918691049E40815059F
+:10983000EA090009F1E213B8E00A151EF208000572
+:10984000F5E0122A42F9E5EA00080C09F20C0003DF
+:10985000E5EA100916691049EA081505F1E513B89B
+:10986000E6090009F208000343080C08E40C151E81
+:10987000F00B0006F9E2122CEBEC0008EBEC1009FF
+:1098800014691049E6081505EC090009F1E313B85D
+:10989000EA0B151EF2080006F7E5122B4319E065E6
+:1098A000BCDCEA158F1BE7EB00080A09F20A000A84
+:1098B000E7EB100918691049EC081505F1E613B833
+:1098C000F4090009F208000243280A08E60A151EF6
+:1098D000F00C000CF5E3122AEDEA0008EDEA10099D
+:1098E00016691049E4081505F8090009F1E213B8F2
+:1098F000EC0C151EF208000EF9E6122C4339E5ECCB
+:1099000000080A09F20B000BE5EC10091469104974
+:10991000FC081505120BF1EE13B84349F6080005D3
+:10992000E40B151EF7E2122BE062BCDCEA128F1B7F
+:10993000FDEB00080409F20A000AFDEB10091869A2
+:109940001049EA081505F1E513B8F4090009F20811
+:10995000000643580408FC0A151EF00C000CF5EE36
+:10996000122AEBEA0008EBEA100916691049EC0824
+:109970001505F8090009F1E613B8EA0C151EF208FE
+:10998000000EF9E5122C4369EDEC00080409F20B16
+:10999000000BEDEC100914691049FC081505F1EEF7
+:1099A00013B8F6090009F208000543780408EC0B27
+:1099B000151EF00A000AF7E6122BFDEB0008FDEB7E
+:1099C000100918691049EA081505F4090009F1E5BC
+:1099D00013B8FC0A151EF2080006F5EE122A438998
+:1099E000EBEA00080409F20C000CEBEA1009166916
+:1099F0001049EC081505F1E613B8F8090009F2085A
+:109A0000000E43980408EA0C151EF00B000BF9E554
+:109A1000122CEDEC0008EDEC100914691049FC085B
+:109A20001505F6090009F1EE13B8EC0B151EF20846
+:109A30000005F7E6122B43A9FDEB00080409F20A22
+:109A4000000AFDEB100918691049EA081505F1E54F
+:109A500013B8F4090009F208000643B80408FC0A28
+:109A6000151EF00C000CF5EE122AEBEA0008EBEAEA
+:109A7000100916691049EC081505F8090009F1E606
+:109A800013B8EA0C151EF208000EF9E5122C43C9B2
+:109A9000EDEC00080409F20B000BEDEC1009146961
+:109AA0001049FC081505F1EE13B8F6090009F20893
+:109AB000000343D80408EC0B151EF00A000AF7E671
+:109AC000122BFDEB0008FDEB100918691049F40991
+:109AD0000009E6081505F1E313B8F208000543E9AB
+:109AE0000409FC0A151EF20C000CF5EE122AE7EA36
+:109AF0000008E7EA100916691049F8090009EA08A0
+:109B00001505F1E513B8F208000E43F90409E60C57
+:109B1000151EF20B000BF9E3122CEBEC0008EBEC3A
+:109B20001009146910494057FC0815051407F1EE97
+:109B300013B8F609000AEA0B151EF7E5122BFDEB28
+:109B40000009F4080003FDEB1008E60A1505186883
+:109B5000F5E313BA1248EE080009F20A00054409B9
+:109B6000E06AC1D6EA1ACA6214091809FC06151E71
+:109B7000EDEE1226EDEB20080658F2080008EA097F
+:109B80001505F3E513B9F009000A4419E068C1D6D8
+:109B9000EA18CA6210091609E60C151EF9E3122C20
+:109BA000F9E620080A58F2080008F4091505F3EA56
+:109BB00013B9EA0B151EF0090003F7E5122B44292F
+:109BC000E065C1D6EA15CA620A090C09F7EC20085B
+:109BD0001458F2080008E6091505F3E313B9F00973
+:109BE000000EFC091505F3EE13B9F406151EEDEA97
+:109BF0001226443AEDEB20080A0A0658180A100A01
+:109C0000120A44490A091609E60C151EF9E3122C3A
+:109C1000F9E620081C58F2080008F4091505F3EAD3
+:109C200013B9FC05151EF0090003EBEE1225E60939
+:109C30001505EBEC2008F3E313B91458E062C1D624
+:109C4000EA12CA62445B040B0C0BF406151E100BDF
+:109C5000EDEA1226120BEDE52008F6091505065867
+:109C6000F3EB13B9446A040A180A100A4478F40999
+:109C7000000E0408F0050009E60A151EF5E3122A95
+:109C8000F5E620081658F2080008FC091505F3EE61
+:109C900013B9F0090005448904090C09F60C151ED6
+:109CA000F9EB122CF9EA20081C58F2080008EA091E
+:109CB0001505F3E513B9F009000344980408F00A08
+:109CC0000009FC0B151EF7EE122BF7EC20080A58C2
+:109CD000F2080008E6091505F3E313B9F009000ED0
+:109CE00044A904091809EA06151EEDE51226EDEB54
+:109CF00020080658F2080008FC091505F3EE13B910
+:109D0000F0090005EA091505F3E513B944BAE60CB4
+:109D1000151E040AF9E3122C160AF9E620081C584D
+:109D2000100A120A44C904090C09FC0B151EF7EEAF
+:109D3000122BF7EC20080A58F2080002F409150566
+:109D4000F3EA13B944D8E409000EE069C1D6EA1970
+:109D5000CA621208EA06151EF00C0009EDE512268B
+:109D6000EDEB20081458F2080008FC091505F3EE85
+:109D700013B9F009000CE068C1D6EA18CA62F4050C
+:109D8000151EF8091505EBEA1225F3EC13B944EAA0
+:109D9000100AEBE62008160A1C58100AFC02151ED1
+:109DA000F4090001E5EE1222E06AC1D6EA1ACA629D
+:109DB000E5E52008E20915051858F3E113B944FB5D
+:109DC000140B404A0C0BA17A100B44B8F609000E94
+:109DD0004049F5E913FA14584459F1E9200B443885
+:109DE000E069C1D6EA19CA6289CAF7E820074108C2
+:109DF000F806151E120AEDEC1226700CEDE2200892
+:109E0000120C0258FC091505F3EE13B90A0AE20315
+:109E1000151E100AE7E11223120AE7E62008E0699E
+:109E2000C1D6EA19CA621C5840354030A170E1E53C
+:109E300013F0E009000BF4091505040BF3EA13B95C
+:109E4000100B40284021120BE065C1D6EA15CA620A
+:109E5000A171E3E813F1E2050008F0060009FC0235
+:109E6000151EE5EE1222E5E320081458F20800085A
+:109E7000F6091505F3EB13B9F406151EF009000EEB
+:109E8000EDEA1226EE051501410AEBE713F5EDE2C6
+:109E900020080A0C1658060CFC091505100CF3EEE8
+:109EA00013B9120C950C411972081C089308F60995
+:109EB000151E412AF3EB122974081208950841383F
+:109EC00070090C09910989D089E189F541466C082E
+:109ED0000408089C8D08340A300BF01F00042A0D7A
+:109EE000D832000080002DF480002DE8EBCD40F842
+:109EF00078581494A37AF40800099959123AF9F998
+:109F00008006F9F9B006F7B90BFFF9F9BA06FDD8E2
+:109F1000C066E808161DF20800089968189516939F
+:109F2000E80E0009E049003FE08B000F3006FCCC52
+:109F3000FFE4E606000BEA0C000CE806010AF01F3D
+:109F40000014E3CD80F8FC061140FCCCFFE40C9A31
+:109F5000EA0C000CF01F000EEACBFFE40A9CF01F95
+:109F6000000DECC8FFC11034E088000FE6060007C2
+:109F70000E9B0A9C2C07F01F00072C06ECC8FFC1A3
+:109F80001034FE9BFFF7300ECD3B000080002DF417
+:109F900080028BD8D421202D16961895300B1A9458
+:109FA000583BF9B80B14F9B80818F60911FFEC087A
+:109FB000030AF3D9C002A379F4090A4AE80B0B0A91
+:109FC0002FFB588BCEE1301A49EBC038301A49EBE1
+:109FD0000C9CF01F001E6C58E21801F8E04801C00C
+:109FE000CF61308A1A9B0C9CF01F00183007EE08D6
+:109FF0001602EE0911FFEC08032AF3D9C002A37977
+:10A00000F4090A4AEA070B0A2FF75947CF11300B18
+:10A01000340AECCCFFE4F01F000E0E9A300B0C9CBF
+:10A02000F01F000BECCCFFEC308A300BF01F000867
+:10A030001A9C308A300BF01F00062FEDD82200004A
+:10A040008003D00880028BD480029EEC80002DE833
+:10A05000EBCD40FC217DE0682301EA186745E06E06
+:10A06000AB89EA1EEFCD5008E068DCFEEA1898BA2A
+:10A070003007501E5028E06E5476EA1E1032E06819
+:10A08000E1F0EA18C3D250675057503E5048189339
+:10A090001292580CC140149416951A962FF7090A7B
+:10A0A0000B0B1A9CF01F00070E33FE9BFFF91A9B47
+:10A0B000049CF01F00052E9DE3CD80FC1A96CF8BEB
+:10A0C00080029EEC80029F94D431FACD008C501C0B
+:10A0D000500B14931292109142C0585AE08B0056C4
+:10A0E000E04B0040E08B0054FAC4FFF8340A300B18
+:10A0F000089CF01F002E400A401B089C0896F01F89
+:10A10000002CFAC5FFB808970D88EC1800360CC86B
+:10A110000A36CFB13408518451285803C110FACC03
+:10A12000FF9CFACBFFB4300AE60E1502E40A0308DE
+:10A1300018A8E20A030916A92FCA1C3ACF81E6CC57
+:10A14000FFFF00990A9AFAC3FFA0069BF01F0019AF
+:10A15000340A300B089CF01F0015400A401B089C75
+:10A16000F01F00130F88EC18005C0EC80C37CFB13D
+:10A17000314C3408513C5184519000990A9A069B05
+:10A180005128302CF01F000B2DDDD832FAC6FF8885
+:10A190001A9A0C99FACBFFFC301CF01F00063148CC
+:10A1A00050165008CA2B000080002DE880002DF4C6
+:10A1B0008002A050D401202D501A5009301A1AD80C
+:10A1C000FAC9FFF8FAC8FFFCF01F00032FFD2FEDBE
+:10A1D000D80200008002A0C8D43121AD5009502B14
+:10A1E000501A189242395809C6D050485059300870
+:10A1F000FAC7FFAC5038FAC3FFD4FAC0FFC0FAC4A4
+:10A20000FFE8049CF01F003140382FF850381AD373
+:10A210004038518840285168FAC8FF985198304812
+:10A2200040465178B986FB380013FAC9FFA0FB6895
+:10A23000006B189B0E98FB66006840454046302A2C
+:10A240001891B185049CFB650069A986FB66006ACC
+:10A25000F01F001F314A069B009CF01F001E2FFDBF
+:10A2600040085818E08A001C301608983149069AB0
+:10A27000029B049CF01F0018314A089B069CF01FAB
+:10A280000015009A089B17381589125814C80E3A01
+:10A29000CFB12FF640080C38FE99FFE940560C98D4
+:10A2A0005946F9B60B140C180C9A5058009B404CA8
+:10A2B000F01F000840585808C05040480C0850484B
+:10A2C000CA1B2E6DD832000080002DD08002A0C89D
+:10A2D00080002DF48002A1B4D43120EDFACEFFA489
+:10A2E0001095300818927C14149716911296FB68FA
+:10A2F0000036FB6800377C00149CF01F00275804D0
+:10A30000C3003018FAC9FFC9508850685097FAC87E
+:10A31000FFCA505C50B6507550A950C85934E088F7
+:10A3200000233007FAC3FFECFAC6FFDCC088FB68E5
+:10A330000036E80701055935E088001CE0070008F1
+:10A340000C991AD82EC70698304A029B049CF01F1D
+:10A3500000132FFDFB3800362FF80E34FE9BFFE96B
+:10A360002F2DD83208953007FAC3FFECFAC6FFDC70
+:10A370000C9906981A96049C1AD6029B304AF01F34
+:10A3800000070A9A0C9BE007000CF01F00052FFD48
+:10A390002F2DD83280002DD08002A0C880002DF44F
+:10A3A0000000000000000000EBCD4080129E1097DE
+:10A3B000584CC260E08A0013588CC140590CC1014E
+:10A3C000590B5F1858FA5FA91248C0A130689D0860
+:10A3D0003039300C8F09E3CD8080582CC1E0E3CFB9
+:10A3E000C080E04B00205F1859FA5FA91248CF8166
+:10A3F00030689D083029300C8F09E3CD808058DB10
+:10A400005F1858CA5FA91248CEB130099D093018AB
+:10A41000129C8F08E3CD8080585B5F18584A5FA973
+:10A420001248CF40E3CFC080580C5E0CF8F8010C06
+:10A430005808F9B80100F9F81A435EFC580CF9FB0A
+:10A440001A4C5EFC580CF9FA1A51F9FB1A505EFCD2
+:10A45000580CF9FB1A415EFC580CC080586BE08820
+:10A4600000035EFD4928F00B032F5EFEF94A016CE4
+:10A470005EFDF94A01685EFDF94A01645EFDF94A34
+:10A4800001605EFD580ACF20F94A01585EFDF4C80C
+:10A490000001E0480063FE9BFFEAF94A01545EFDBB
+:10A4A000580ACE40F94A01505EFD00008003D00CEE
+:10A4B000EBCD40E0189716951496580CC130F8FC77
+:10A4C0000180F01F001158055F0858065F09124807
+:10A4D000C0B03008EF480188EF480180109CE3CD00
+:10A4E00080E0E3CFC0E00C9CF01F0008EF4C01803F
+:10A4F000CF900A9B0C9AF01F0006300CEF460188A3
+:10A50000E3CD80E080002E0080002E1880002DF426
+:10A51000EBCD40E0189716951496580CC130F8FC16
+:10A52000017CF01F001158055F0858065F091248AA
+:10A53000C0B03008EF480184EF48017C109CE3CDA7
+:10A5400080E0E3CFC0E00C9CF01F0008EF4C017CE2
+:10A55000CF900A9B0C9AF01F0006300CEF46018446
+:10A56000E3CD80E080002E0080002E1880002DF4C6
+:10A57000EBCD40E0189716951496580CC130F8FCB6
+:10A580000174F01F001158055F0858065F09124852
+:10A59000C0B03008EF480178EF480174109CE3CD5B
+:10A5A00080E0E3CFC0E00C9CF01F0008EF4C01748A
+:10A5B000CF900A9B0C9AF01F0006300CEF460178F2
+:10A5C000E3CD80E080002E0080002E1880002DF466
+:10A5D000EBCD40FE189716961493580CC031E3CF7C
+:10A5E000C0FE7409F8F801605828C5E0F8F1016C64
+:10A5F000F8F50168F8F201645979FE98FFF23DD848
+:10A60000304AB688ECCCFFFEFEFB0238F01F008E0D
+:10A6100030083019ACF8ACE9ECC4FFF85905E0801B
+:10A6200000A15885E08000AA5845E08100BC0A9A44
+:10A63000FEFB0218089CF01F00843018A8C8E8C967
+:10A64000FFFB3008B288E8C5FFFA5902E0800090AD
+:10A650005882E081009F304A4FDB0A9CF01F007A4D
+:10A660003018AAC8EAC9FFFB3008B2882FA55811D4
+:10A67000E080008A5821E08100A5304A4F5B0A9CA7
+:10A68000F01F0071EAC9FFFCEC0811FE1208AC983B
+:10A69000F206010CCA56870CEEF501745805E080ED
+:10A6A00000C1E3CF80FEF8F8010CF8F2016C580805
+:10A6B000F9B80128F9B80016F8FA0168F8F401644D
+:10A6C0001039C8E333083009B688B6B93018B6A8CF
+:10A6D000F6C5FFFC590AC6F0588AE0800082584A45
+:10A6E000E08100974DCB0A9CF01F00573018AAC894
+:10A6F000EAC9FFFB3008B2882FA55904C6B05884B8
+:10A70000E081007E304A4D5B0A9CF01F004F3018FC
+:10A71000AAC8EAC9FFFB3008B2882FA55812C66143
+:10A72000304A4CFB0A9CF01F0048EAC8FFFC300A84
+:10A73000B08AB09AEAC9FFFAEEF8010C5808CA507C
+:10A740003018B288EAC9FFF9EACCFFF8B28A310AB8
+:10A75000EEFB010C2FCBF01F003CEAC9FFE8C95B00
+:10A76000304A4C0B089CF01F0038C68B304A4BDB3C
+:10A770000A9CF01F0035C75B304A4B5B089CF01FFA
+:10A780000032C5CB304A4B8B0A9CF01F002FC7BB51
+:10A790005812FE91FF26304A4B4B0A9CF01F002AAC
+:10A7A000C60B5825FE91FF1D304A4B1B089CF01F1D
+:10A7B0000026C44B304A4AFB0A9CF01F0023C97B89
+:10A7C0005901FE91FF0E304A4ABB0A9CF01F001E41
+:10A7D000C5AB304A4A7B0A9CF01F001BC99B304A1C
+:10A7E00049EB0A9CF01F0018C82B5822FE91FEF975
+:10A7F000304A4A2B0A9CF01F0014C98B5814FE9152
+:10A80000FEF0304A49EB0A9CF01F000FC81B582A83
+:10A81000FE91FEE7304A49BB0A9CF01F000BC67B45
+:10A82000F01F0019EF4C0174FE90FEDB0C9B660AD2
+:10A83000F01F000566080A9CEF480178E3CD80FE12
+:10A840008003D04880002DF48003D0508003D03C9A
+:10A850008003D02C8003D0388003D0308003D39C79
+:10A860008003D3948003D04C8003D0548003D04421
+:10A870008003D0648003D0608003D3988003D058D5
+:10A880008003D03480002E18D401580CC060F8CC5E
+:10A89000FEC8306AF01F0002D802000080002DF4CC
+:10A8A000D4011898580CC040918AF01F0002D802B9
+:10A8B00080002DF4EBCD40F8208D1894169714935A
+:10A8C000F6C6FFF0F8F501685885C2E0E8F80164C3
+:10A8D0005818C1606EC8E8F901286E0B1AD81AD64C
+:10A8E0006E2849CA1AD81AD3720C72666E186E395D
+:10A8F0005D162FCD580CC1552F8DE3CF80F86EC952
+:10A90000E8FA01286E0B1AD91AD66E291AD91AD369
+:10A91000740C74666E3948FA5D162FCD580CCED47F
+:10A920002F8DE3CFC0F80C9B310A1A9CF01F000A50
+:10A930000A9AEECBFFD8FACCFFF0F01F00070A9A74
+:10A94000EECBFFE0FACCFFE81A96F01F0003CBFB3A
+:10A9500080036F2C80002DF4D401580CC070F94B8B
+:10A960000134F8FC0108F01F0002D80280027EE8E2
+:10A97000D401580CC110F8F8010C5808C08070DAE6
+:10A98000F0CBFFEC998AF01F0005D802320A109B29
+:10A99000998AF01F0003D80280002DF480002DE872
+:10A9A000EBCD40801897F01F000AEEF801287029BF
+:10A9B000700C5D19585CEFF80057F9B90001F1D936
+:10A9C000E008EFF80A57E3CD80800000800283BCE6
+:10A9D000EBCD40C018971696580CC190306AF8CC51
+:10A9E000FEB8F01F000F308A300BEECCFF10F01FC6
+:10A9F000000D300830190C9BEF4800F8EF4900ECCF
+:10AA0000306AEECCFEE4F01F0008C030E3CD80C019
+:10AA10000E9CF01F0006E3CD80C0000080002DF4E6
+:10AA200080002DE880002D94800283BCEBCD40C0D7
+:10AA300016971496F6F8010C1838C0D0768A78D894
+:10AA4000103AC030E3CD80C0F8CBFFEC0E9CF01F75
+:10AA5000000ECF913008EF48010C5806CF41320A62
+:10AA60000C9B0E9CF01F0009EEF90128301B720CA4
+:10AA700072485D18EEF801280C9A700C70390C9B26
+:10AA80005D19CE1B80002D9480002DE8D4311897DD
+:10AA900016941493300B324A069CEE040005F01F06
+:10AAA0000052EEC6FFFF0C35E0880034E8C8000114
+:10AAB0003DD2EE080004C0D8E4091800C2B01499D1
+:10AAC000F2C8FFFE1007EEC6FFFF0C35E08800223B
+:10AAD0000F89E4091800C4B10837C1B00D8A580ABB
+:10AAE000C180F4C8FFFEEE0800081035C4733308B7
+:10AAF000F0091800CE2187270D882FE887380D89A7
+:10AB0000F2C8FFFE1007EEC6FFFF0C35FE9BFFE20A
+:10AB1000D83A580ACFE03058F00A1800E08B003FCE
+:10AB2000EEC8FFFB1035E08B002B14993061E20971
+:10AB30001800FE98FFC7EEC0FFFE304A4ABB009CDB
+:10AB4000F01F002BC3900D89E2091800FE98FFBA90
+:10AB5000009C304A4A7BF01F0026C071EEC9FFFA04
+:10AB600087790D88204887880D89CABB0D8AF4C86B
+:10AB7000FFFEEE0800081035CBB2DC3A14993138EC
+:10AB8000F00A1800FE98FFD4304A49BBEECCFFFE15
+:10AB9000F01F0017C1900D89CCAB304A497BEECC39
+:10ABA000FFFEF01F0013C0610FE93018F009180014
+:10ABB000C1000D8ACB6BEEC9FFFA87590D8820487A
+:10ABC00087680D89C7EBEEC8FFFA87480D89C79BD8
+:10ABD0000FF8F8081800CEE187070D882FE88718CE
+:10ABE0000D89C6FB80002DE88003D02880002D94BD
+:10ABF0008003D05C8003D0408003D048EBCD408000
+:10AC0000304A1897496BF01F0017C031E3CF90808E
+:10AC1000304A495B0E9CF01F0013C041302CE3CD3D
+:10AC20008080304A491B0E9CF01F000EC041308CC2
+:10AC3000E3CD8080304A48EB0E9CF01F000AC041F3
+:10AC4000310CE3CD80800E9C304A48ABF01F0005EC
+:10AC5000F9BC0004F9BC0100E3CD80808003D0582A
+:10AC600080002D948003D0348003D0308003D064E2
+:10AC70008003D038EBCD4080304A1897496BF01FE5
+:10AC80000017C031E3CF9080304A495B0E9CF01F23
+:10AC90000013C041302CE3CD8080304A491B0E9C0C
+:10ACA000F01F000EC041308CE3CD8080304A48EB6D
+:10ACB0000E9CF01F000AC041310CE3CD80800E9C39
+:10ACC000304A48ABF01F0005F9BC0004F9BC010094
+:10ACD000E3CD80808003D05480002D948003D04445
+:10ACE0008003D03C8003D3948003D050EBCD40FC54
+:10ACF000189416961497580BC160198B3308F00BF3
+:10AD00001800C1D030083015957895489568955849
+:10AD1000950530889535952895185876E08B009BD9
+:10AD2000E3CFC0FC301830898F7B8F4B8F6B8F5BEC
+:10AD30009538950895299519E3CFC0FC3005310960
+:10AD400095459565955595759529951930289508DA
+:10AD5000301A8F3A5836FE98FFE51988F608180021
+:10AD6000CE011999ECC800021039CDB119B919A852
+:10AD7000F1E91088F4081900CD4120465836E08AE0
+:10AD800001112FC4089CF01F008A8F2C20465816F2
+:10AD9000E08A010B8F15E8CCFFFC19991988F1E9BD
+:10ADA0001082CBF0ECC30002E40815021033CB95FF
+:10ADB000F8C4FFFE30056E16089CF01F007D0C4C99
+:10ADC0008F1C2FC420432FF50A32FE99FFF658132B
+:10ADD000E08A00E5300A8F3A09990988F1E9108282
+:10ADE000CA002023E40815021033C9B5E8C6FFFEE7
+:10ADF00014956E34304A4EFB0C9CF01F006FE081BE
+:10AE000000C4301808488F382FC620432FF50A3267
+:10AE1000FE99FFF15813E08A00940D990D88F1E92D
+:10AE200010888F48E6CB0002581BE08A008AECCCE1
+:10AE3000FFFE19981989F3E810898F59F6C80002A6
+:10AE4000A5691238C7F5F8C8FFFE300C8F68E3CD4E
+:10AE500080FC19893DD8F0091800FE91FF6319990B
+:10AE6000ECC800021039FE91FF5D304A4D3B2FECDB
+:10AE7000F01F00511893FE91FF5509F909E8F1E917
+:10AE80001088EA081900FE91FF4DECCA0008583AF4
+:10AE9000E08A005EE8CCFFF8F01F00498F2CECCA76
+:10AEA000000C0A3AE08A00578F13E8CCFFF4199996
+:10AEB0001988F1E91082FE90FF35F4C30002E4081E
+:10AEC00015021033FE95FF2EF8C4FFFE30056E16F6
+:10AED000089CF01F003B0C4C8F1C2FC420432FF507
+:10AEE0000A32FE99FFF65813E08A0042300A8F3A80
+:10AEF00009990988F1E91082FE90FF142023E408E3
+:10AF000015021033FE95FF0EE8C6FFFE14956E3451
+:10AF10000C9C304A4ABBF01F0028C2113018084868
+:10AF20008F382FC620432FF50A32FE99FFF25813AF
+:10AF3000E08A00140D880D99F1E910888F48E3CF5D
+:10AF400080FC30088F58109CE3CD80FC580AFE9995
+:10AF5000FEE9581AFE90FEE6E3CF80FC304A49AB8A
+:10AF60000C9CF01F0015C0613028CDAB5813CF5199
+:10AF7000CD8A0C9C304A495BF01F000FF9B80010D5
+:10AF8000F9B80100CCDB0C9C304A491BF01F000AC9
+:10AF9000F9B80002F9B80100C36B5813CD11CC1AEF
+:10AFA0005806FE99FEBF5816CCB1CBBA8002ABFC56
+:10AFB0008003D39C80002D948003D0488002AC7421
+:10AFC0008003D04C8003D02C8003D0608003D398C2
+:10AFD000D401580CC021DC0AF8F801745808CFC01D
+:10AFE000169AF8FB0178109CF01F0004F9BC01FED2
+:10AFF000F9BC0000D80200008002ACECEBCD408030
+:10B000001897580CC1D0F8FC0108F01F000F300A47
+:10B010000E9B48ECF01F000EEEFC0174F01F000DBB
+:10B02000EEFC017CF01F000BEEFC0180F01F00091C
+:10B03000EEFC0128F01F00070E9CF01F0006E3CD78
+:10B04000808000008002802C8002B05480026384E3
+:10B0500080002E00D401F01F0002D802800285C0BB
+:10B06000EBCD40C01896E06C018CF01F00131897D0
+:10B07000C1903018E069A8C0F94800ECF9490150C6
+:10B08000346833C9F9480154F9460128F94901588F
+:10B09000189A189B489CF01F000AEF4C010818985A
+:10B0A000C0400E9CE3CD80C00E9C1097F01F0005A1
+:10B0B000CF9B000080027EA88002AA2C80027F1015
+:10B0C00080002E00EBCD4060149E1DD81896158C84
+:10B0D000ECF501281AD81DC91AD91DB81AD81DA90E
+:10B0E0001AD91D9848CA1AD81ADC1ADB303B6A0CE8
+:10B0F000F01F000AECF90128311B720C72585D1820
+:10B10000ECF90128300A720C7238149B5D182F9DDF
+:10B11000E3CD80608003D0F88002299EEBCD40C053
+:10B12000205D1097581BC130582BC0402FBDE3CD78
+:10B1300080C0310B1A98F01F00091A961A9B0E9CBA
+:10B14000310AF01F00072FBDE3CD80C0310BF01F87
+:10B1500000052FBDE3CD80C08002A1B480002DF496
+:10B1600080027E7CD431201DFACEFFD81894500B7B
+:10B170001490129610917C237C077C12306A49ABA4
+:10B18000129CF01F001AC1D05803C0800698009B83
+:10B19000400C04990E9AF01F00160C9BE8F501284C
+:10B1A0000498F5D1C0100E996A0C6AA65D16E8FCE9
+:10B1B0000104F01F00100E9CF01F000F2FFDD8326D
+:10B1C000E8C5FEB8306A488B0A9CF01F0008CDD154
+:10B1D000E8F801280A9B700C70995D19EA0617407F
+:10B1E000CD4B00008002A3A080002D948002B11CF2
+:10B1F0008002450680002E00EBCD40E018971696A1
+:10B200001495F8F801685848E0800081E08A004908
+:10B210005888C7805908C4F04C19EEF801645848A2
+:10B22000C4805848E089004A5818C6605828C6604B
+:10B230004BB81AD91AD8EEFA01280DD81AD80DC968
+:10B240001AD90DB81AD80DA91AD90D981AD80D897E
+:10B25000302B1AD9740C4B3AF01F0033EEF801284A
+:10B260002F8D700B707C300AF01F0030EEF9012832
+:10B27000720C72C85D18EEF90128307B720C7218DE
+:10B280005D185805C201EEFC010C580CC0707948DD
+:10B290005808F9B80100F9F81A14E3CD80E05818FD
+:10B2A000C3305828CBA14A29EEF801645848CBA1F5
+:10B2B0004A08CC0B4A09CB2B5888C2205908CB919D
+:10B2C00049D8CB8BEEF801280C9B700C71263019F5
+:10B2D000303A5D16301BEEFC0104F01F0018EEF84A
+:10B2E000016C5828C15030080E99495A109B301CE7
+:10B2F000F01F0014CC9B4948C9DB48D8C9BB49386A
+:10B30000C99B4929C8BB4909C89B48A9C87B301BB0
+:10B31000EEFC0104F01F000ECE7B00008003AFF4B2
+:10B320008003D1248002299E800263848003D0B8E8
+:10B330008003D0C080036FC0800251588002B05497
+:10B34000800263F88003B2B080036FCC8002512882
+:10B35000D431FACD00DC1897169314951296E04973
+:10B360000062E08B000630060C9C2C9DD832129CAB
+:10B37000F01F03441892E08000D60C9A0A9BF01F3D
+:10B38000034205A905B8F1E910880599F5D8B01070
+:10B390003038F0091800C0603006049CF01F033BF1
+:10B3A000CE4BECC80004EBDAC01030090A385F3A23
+:10B3B000E045005E5F88F5E8100CF20C1800CED175
+:10B3C0003FE8E4C1FFFC038AF00A18005F1B302845
+:10B3D000F00A18005F19F7E90004F8041800CDD14D
+:10B3E000EEFC0104F01F032A039903A8F1E9108879
+:10B3F000EDD8B010FDD6C003506E1C99301820193E
+:10B40000F0091900E08800043FF6CC8BEEF80164E7
+:10B4100059085F0A3028F00E19005F19126AE80A0D
+:10B420001800C080EEF801685908CEF0EDB60003B0
+:10B43000CEC0EEF800F85808E08100ABE1D6C010AD
+:10B440000098E2182080CE10009AE21A0800502AD4
+:10B45000CDC12FC500995055E21901005039C641A0
+:10B46000405AE339005DE338005E263AF1E910887E
+:10B47000F7D8B010E9DBC010083AE0830598EEF980
+:10B4800001605829E0800550EDB00003E0810333EE
+:10B49000E2100030CBA140395809E08001CAEEF932
+:10B4A0000128305B720C72185D18039903A8F1E94A
+:10B4B0001088E339005DEBD8B010E33B005EFACAB8
+:10B4C000FF50F7E9108BE2CCFFA1F01F02F2431806
+:10B4D0005808C040EDB5000CC231EEC3FEB8EEF620
+:10B4E0000134EEF8017C5808E08004E742C95809AD
+:10B4F000E08004C8EEFB017C580BC79042DAEEF8FE
+:10B500000184103AC70042FE42EC1ADE14981ADC9D
+:10B51000069A0E9CFEFB0B80F01F02E02FED30160A
+:10B52000C3DB3FF6C22BE2C6FFB3FAC4FF84310A85
+:10B530000C9B089CF01F02D440685C785048EEF8E1
+:10B5400000A85808C301EEF800A45808FE90FF5E5A
+:10B55000310A300B0C9CF01F02D2049A404BEECC07
+:10B56000FFDC0C984059F01F02CF0C9B089C310A5D
+:10B57000F01F02CDFE91FF4A308AE2CBFFFBEECCFA
+:10B58000FF10F01F02C13018EF4800F8C6AB308A38
+:10B59000EECBFF10E2CCFFFBF01F02C3FE99FF5081
+:10B5A0003FF6CFCA402B310A0C9CF01F02BD049A13
+:10B5B000404B0C984059EEC5FF9C0A9CF01F02B905
+:10B5C000310A0C9B089CF01F02B8CBE13018EF4CFD
+:10B5D00000A80A9BEF4800A4340AEECCFFDCF01F61
+:10B5E00002AACCBB129CF01F02B0C10142EC580C65
+:10B5F000C160EEFB0180580BC12042FEEEF80188CD
+:10B60000103EC09042C942DAC81B42FE42C942EC19
+:10B6100042DAC7CB1C9AF01F02A4CF81EEF801607A
+:10B620005818E08000E6320AE2CBFFF3EECCFF349C
+:10B63000F01F029DFE91FF7503B903C8F1E9108860
+:10B64000F3D8B010EEF801645888E08000CC5908B7
+:10B65000E08000CAEEF80128FAC9FF2C1AD970D68A
+:10B66000700C35F9FAC8FF24300A303B5D162FFD07
+:10B670001896580CFE90FF55EEF80160E06900FE48
+:10B680005828F2081710435AB48840680A99E219FA
+:10B690000200F1E910094358E8190108F20B1608F5
+:10B6A000B09B435AB4A9EEF801605828E08100939A
+:10B6B00030084359B2B8435AB4C8435C308AE2CB2D
+:10B6C000FFFB2FBCF01F02704358300AF16A005D87
+:10B6D0004359F36A005E4358406A2B381AD84379BD
+:10B6E000E068888E1AD9EECBFFDC1AD606990E9C3C
+:10B6F000F01F026E3018EF4800EC5C752FDDEDB5E1
+:10B700000006C0F1FEFA09A8F4E80000FAE9007C9E
+:10B71000EEF801645888E08003F65908E08003D908
+:10B720000A90E2100200C0E0EEFA01283019740C11
+:10B73000069B7528129A5D18301BEEFC0104F01F61
+:10B74000025DEEF80128306B700C70195D1943161C
+:10B750005806FE90FEE64328FAC4FF84F0C50002B6
+:10B76000334A300B089CF01F024EE0450020FE9B40
+:10B77000FED80D88F1D8C00252280D89F3D9C041F6
+:10B78000C050EEF8016458185F095209ECCBFFFE77
+:10B790000A9AFACCFF74F01F023C0A9A52B5089834
+:10B7A000FAC9FF7C0A9BEEFC0168F01F0243FE9180
+:10B7B000FEB8E2CAFFC3089B0E9CF01F0240FE9138
+:10B7C000FEB0009A069B0E9C3016F01F023DFE9FB5
+:10B7D000FDE6435C302AE2CBFFFD2FDCF01F022A9E
+:10B7E000C6DB3208F0091900FE91FE9BC34B42EB09
+:10B7F000580BFE90FF1A58065F1AEEF9018058099F
+:10B800005F081468FE90FF116D68EDB80001FE91AD
+:10B81000FF0C42F8069A1AD80E9C1ADBFEFB08A40D
+:10B8200042F842E9F01F021D2FEDFE9FFE7AEEF96D
+:10B830000128720C72885D18FE90FE73EEF80128E4
+:10B84000305B700C70195D19403BFAC6FF50324AEC
+:10B850000C9CF01F0213EEF801605828C0C1E338B9
+:10B86000005DE33B005E0C9AF7E8108BE2CCFFA191
+:10B87000F01F020843065806C0E0EEFC010C580C0D
+:10B88000E08003D1F8CBFFFC310A0C9CF01F0206CC
+:10B89000E08003C03005EEF8016C5818E08000D459
+:10B8A0005805C060EEFB016C581BE080029BEEF86F
+:10B8B00000EC5808E08102B5EEC8FF545008EECA0B
+:10B8C000FEB8EEC9FF9CE2C8FFF3508AEEC6FEC880
+:10B8D00050A95098306A6E85408B0C9CF01F01F285
+:10B8E000E08500FB306A408BFAC0FFD0009CF01F5F
+:10B8F00001E60C9B306AFACCFFCAF01F01E3320A62
+:10B90000409B400CF01F01E8E08500D0320A409BCC
+:10B91000FACCFFC4F01F01DC320A400BFACCFFA4C2
+:10B92000F01F01D9340E1ADE40BE00991ADE34C869
+:10B930000A9BFEFA07920E9CF01F01E4EEC5FF6C15
+:10B94000FAC3FF7C0A9B308A069CF01F01CF0A9C39
+:10B95000EEC6FF64308A0C9BF01F01CB069B0C9C4B
+:10B96000308AF01F01C93018EF4800A82FEDEEF51E
+:10B970000178EEF001745800FE90FDD3EEFA012834
+:10B98000FAC8FF28E9D5B0101AD8E8C9FFA1740C8D
+:10B9900074D6FAC8FF285C79300A303B5D162FFD5B
+:10B9A0001893580CFE90FDBDEEF80160E06900FEB2
+:10B9B0005828F2081710436AB48843683019B099C0
+:10B9C000406643685C760C9AA3BAB0AAEEF90160AF
+:10B9D0005829C63130084369B2B8436AB4C8436CC9
+:10B9E000E2CBFFFB308A2FBCF01F01A74368F3D4E2
+:10B9F000C108F169005D43680A9AF165005E009B29
+:10BA0000436C2A1CF01F01A0400B436C320A2F3CF0
+:10BA1000F01F019D408940AB43682B381AD8436C16
+:10BA20000C9A1ADCE068888E1AD30E9CF01F019FD6
+:10BA300040CBEECCFF34320A3016F01F01932FDDDD
+:10BA4000FE9FFCADEEFC0104580CFE90FF2B320A69
+:10BA50000E9BF01F019FC361320A8F8AEEF80134FA
+:10BA600006991AD80E9BEEC8FEC8EEFC0108F01F1E
+:10BA7000019958065F1AEEF9010C2FFD58095F086D
+:10BA80001468FE90FF0F0C9A069BEEFC0108F01F55
+:10BA90000192FE91FF0EC05B436C302AE2CBFFFDAA
+:10BAA0002FDCF01F0179C9CB400B320AFACCFFC45E
+:10BAB000F01F0175320A409BFACCFFA4F01F0172FF
+:10BAC000C32B310A0E9BEEFC0104F01F0181E081C3
+:10BAD00001B4310ACC3B0C9BFAC0FFD0306A009C09
+:10BAE000F01F0169306A408BFACCFFCAF01F016673
+:10BAF000C07B009BE21B2000FE91FD13403A580AD8
+:10BB0000FE90FD0F334AFAC0FFD0009CF01F016485
+:10BB1000EEF901287228720C5D1850BC039903A835
+:10BB2000F1E91088E339005DE7D8B010E338005E32
+:10BB3000F1E91088EEF90160F7D8B0105829E080DB
+:10BB4000011303B903C8F1E910895189EBDBC01077
+:10BB50000A34E08300CB3028406EF00E1900E080FC
+:10BB600001D80A96129B0098FAC9FFC80C9AEEFCFD
+:10BB70000168F01F0151E08100B9F5D3C010F1DA7E
+:10BB8000C082501A50F830194068F2081900E0805D
+:10BB900000C73028406EF00E1900E08000A4401A63
+:10BBA000F1DAC0C1C050EEF8016458185F0850D8EF
+:10BBB000EEF80128306B700C70195D19009BE2CA19
+:10BBC000FFC30E9CF01F013D1895FE91FCAAEEF8F4
+:10BBD0000128FAC9FF2C0A9A1AD9303B700C70D68A
+:10BBE00035F9FAC8FF245D162FFD1894580CFE9005
+:10BBF000FC98EEF80160E06900FE5828F208171082
+:10BC00004066435A5C76B488E21300304358E81328
+:10BC10000300E7E6100CF80B1608B09B4359B2ACD2
+:10BC2000EEF801605828E08102234358B0B543592B
+:10BC3000B2C5435CE2CBFFFB308A2FBCF01F011280
+:10BC40004358300AF16A005D4359F36A005E435875
+:10BC50002B381AD843790C9A1AD9EEC6FEB81AD4E2
+:10BC60000C99E068888EEECBFFDC0E9CF01F010F74
+:10BC70002FDD40B95879E08101F1EEF801685848AC
+:10BC8000E08001E6E08901DC5818E080014B58288B
+:10BC9000E0800146FEF804441AD8EEFA0128EF3895
+:10BCA000014D1AD8EF39014C1AD9EF38014B1AD887
+:10BCB000EF39014A1AD9EF3801491AD8EF3901484A
+:10BCC000302B1AD9740CFEFA0416F01F0106EEF898
+:10BCD0000128307B700C701930165D192F9DFE9F66
+:10BCE000FB5EF1D5C003C0A0EEF80128306B700CEC
+:10BCF000701930165D19FE9FFB52E0460020FE9B36
+:10BD0000FFF5EC0B1603FAC9FFC0E2CAFFA1EECCA7
+:10BD1000FFCCF01F00F5FE90FF44CE7B310AE2CB52
+:10BD2000FFD3FAC4FF84089CF01F00D7310AEECB82
+:10BD3000FFCCFACCFF74F01F00D4E0450020FE9B3E
+:10BD4000FFD5FAC6FFC00A9AE2CBFFA10C9CF01FF8
+:10BD500000CE0A980C99089CE06A0100320BF01F93
+:10BD600000E3C1EB5C7BFACAFF50E2CCFFA1F01FFD
+:10BD700000C943185808CB90F3D3C0105019EDB93F
+:10BD8000000CCB3143282028FAC9FFC8109A5188EB
+:10BD9000149B0098EEFC0168F01F00C7CA61431BAA
+:10BDA0001788F1D8C00250F81789F3D9C041C050A4
+:10BDB000EEF8016458185F0950D94328F0CA000210
+:10BDC000E04A0020FE9BFF922FEBFACCFFC0F01F51
+:10BDD00000AEEEF90128306B720C72185D18CEFAC5
+:10BDE000EEF8012830091AD9129A700C70D6FAC8E8
+:10BDF000FF285D162FFD1893580CFE90FB92EEF570
+:10BE000001281899EECBFEB84358E06A888E6A0C78
+:10BE10006AA65D16069CF01F009DFE9FFB82EECE7B
+:10BE2000FF54320B500E1C9CF01F00B1C1F1EF4CBF
+:10BE300000ECFE9FFD46EEF80128FEFA02B6700CFB
+:10BE4000303BF01F00A8EEF80128FEFA02AA700CA1
+:10BE5000303BF01F00A4EEF8010C5808FE90FB6187
+:10BE60003008EF48010CFE9FFD1FEEF80128FEFA96
+:10BE7000028A700C303B3016F01F009AFE9FFA8F3A
+:10BE800042EC580CFE91FBB7EEF8017C5808C061FB
+:10BE9000EEF801805808FE90FBC342F830091AD82A
+:10BEA000069A1AD90E9C42F8FEFB0254F01F007B42
+:10BEB0002FEDFE9FFB36EEF801805808FE91FB182F
+:10BEC000EEF90128720C72B85D18FE9FFB111099F3
+:10BED000303BEEF801605828C180E2CCFFC31AD98C
+:10BEE000EEC8FFBCEEFA012830691AD830181AD90A
+:10BEF00030091ADC740C7466069A5D162FCDFE9F0D
+:10BF0000FC11302B3209CE6BFACCFF84CE9B5875D6
+:10BF1000FE98FEECEAC60008FE9FFE264F98CBDA9C
+:10BF20004F98CBBAEDB0000CFE91FAB0EEF800A439
+:10BF30005808FE90FA6B3018406EF00E1900C4904D
+:10BF4000406AF20A1900FE91FAA1F1D4C003FE91F1
+:10BF5000FA5DF6C800085C88109550785C750A9CFC
+:10BF6000F01F00481896FE90FA51E2C4FFA11899FC
+:10BF7000089AEA0B1603EECCFFCCF01F005BC2312F
+:10BF80000A9A0C9B089CF01F00400C9CF01F003F7D
+:10BF90004078EA0916085C58E369005DE368005ED2
+:10BFA0005C59F1E91084FE9FFA711ADA1AD4EEF89E
+:10BFB00001284D6A700C302B3FF6F01F004A2FED20
+:10BFC000FE9FF9ED0C9C3FF6F01F0030FE9FF9E755
+:10BFD000FAC6FF84310AE2CBFFD30C9CF01F002A83
+:10BFE000310AEECBFFCCFACCFF74F01F0027089883
+:10BFF000E2C9FFA10C9CE06A0100320BF01F003B7C
+:10C00000E339005DE338005EF1E91084FE9FFA3EFB
+:10C010000E9CF01F003FEEFC0104F01F003EFE9F4F
+:10C02000FC480C9A069BEEFC0108F01F002BEF4C1D
+:10C03000010CFE91FC293015FE9FFC2F5888C0A0F2
+:10C040005908FE91FE294B48FE9FFE284B38FE9F63
+:10C05000FE254B38FE9FFE22401A0C9BE21A02007E
+:10C060000E9C3016F01F0016FE9FF999435C302A93
+:10C07000E2CBFFFD2FDCF01F0004FE9FFDDC000083
+:10C0800080002E1880002DF480002E00800246E0F3
+:10C090008002AA8C8003D1F88002B0C480002DE811
+:10C0A0008002B11C80002D948002B1648003D38C87
+:10C0B000800251588002A3A88002A8B48002B1F87F
+:10C0C0008003D2348003D3288002A2D88002475054
+:10C0D000800280D080027F348003AFF48003D3409D
+:10C0E0008002299E8002C82480028AC480027ECCFD
+:10C0F0008003D2A08003D2E08003D2FC8003D1B4BD
+:10C100008003D0B88003B2B08003D1788002A970D8
+:10C11000800246F480036FC08003D0C080036FCCE0
+:10C12000D431204D1894F8F80128E8F901641695E7
+:10C130005909F9B30002F9B301011492700C1A9075
+:10C1400070991A9B5D19C635E8F80128FAC9FFF8FD
+:10C15000300A1AD9303B700C70D635F9FAC8FFF0A6
+:10C160005D162FFD1891580CC520E8F80160E069B4
+:10C1700000FE402A5828F2081710B4880697E8F8FD
+:10C1800000A4ABB75808C050E0680900E7E8100702
+:10C190005805E0680400EFD8E1375802F9B8010803
+:10C1A000EFD8E1374028F3D7C108B09940283006CE
+:10C1B000B0A74029B2B64028308AB0C6E8C5FF040F
+:10C1C000402C0A9B2FBCF01F00130A9C308BF01FE1
+:10C1D00000124028F166005D4029F366005E0E996A
+:10C1E000E2190100FBF81002F9BA014DF1DAE10998
+:10C1F0001AD9404800991AD8069A1AD1089CE068C2
+:10C20000888EE8CBFFDCF01F00052FDD2FCDD83264
+:10C2100080002DF48002296E8002B164EBCD408055
+:10C2200048797208201893081897C031F01F00054C
+:10C230000E9CF01F0005E3CD8080000000007864B4
+:10C240008002C27C80002E00EBCD40C048976E0675
+:10C250005806C041F01F0008C0916E082FF8304CFE
+:10C260008F08F01F0006E3CD80C00C9CE3CD80C09A
+:10C27000000078648002C28880027EA8D401F01F8A
+:10C280000002D8028002C91AD401F01F0002D802AD
+:10C290008002C918D4211789179A17B8F1E91188B3
+:10C2A00017A9F1EA1108F1E91088990817CA17D8F7
+:10C2B000B168F1EA118817EA17F91258F1EA108803
+:10C2C0009918F73A0008F739000BF7380009B168F8
+:10C2D000F1EA1188F73A000A1258F1EA1088992811
+:10C2E000189EF73A000CF738000DF739000FF8C523
+:10C2F000FFE4B168F73C000EF1EA118830071258EC
+:10C3000049B4F1EC108C49B69D3CC038149C2F0503
+:10C31000E80707082F0EFCF9FFF0F3E82189EC0C81
+:10C320000F88E218FF001059EC0C0F98E61800FF78
+:10C330001059EC0C0FB8F1D8C1081059FCF8FFF4F3
+:10C34000EC0C0FABA96BE61BFF0016599D091059A9
+:10C35000FCF8FFF89D1910599D29FCF8FFFCF3E843
+:10C36000200A8B0A2FF758A7CD21D8228003D4A00A
+:10C370008003D8ACEBCD40FE1892F01F002F049341
+:10C38000E4CBFF60E4C4FFFCE4C5FF5CE4C6FFF857
+:10C39000E4C7FF58E4CEFFF4E4CCFF54E4C1FFB09F
+:10C3A0006609760887089709680A6A0889088B0A67
+:10C3B0006E086C098D088F097C0A78089D08990A17
+:10C3C0002F03210B2F0421052F0621072F0E210CEF
+:10C3D000023BCE71E4C4FFF03013498549860897CB
+:10C3E0002F046E0AEC0A0F98EA080F9EEC0A0F88D9
+:10C3F000EA080F9CEC0A0FB8EA080F9BEC0A0FA89A
+:10C40000F8091508FC0A1510F3EC1389F5EE130A68
+:10C410001659EA080F9BF6081518F1EB1288105907
+:10C4200014590EA90E34CDE12FF358A3CD91E3CDCD
+:10C4300080FE00008002C2948003D4AC8003D8AC9C
+:10C44000D431209DF736000E505A178A780917B854
+:10C45000F1EA1188179A1258F1EA210817AEF1EEA5
+:10C46000208E506E781817CA17F9105917D8F3EAAA
+:10C470002189F3E8210917EEF3EE208E507E78280B
+:10C48000F7390008F73A000B105AF7380009F5E9B8
+:10C49000218AF739000AF5E8210AF5E9208278397E
+:10C4A000F73A000CF738000FFEF7034412581894BF
+:10C4B000F1EA2188F739000DF8CAFF60F1E9210897
+:10C4C000500AF1E620800E91E0081618406AEE0846
+:10C4D0000326F3DAC008F1D2C208EE090329EE08F8
+:10C4E000032850495038407AEE0A0F99502968784D
+:10C4F000684B10564068EE000FACEE080FBA40795A
+:10C50000165AEE090F8BF6081508F1EB1388F80997
+:10C510001518105AF3EC1289EE020F9C125AF80803
+:10C520001510F1EC1308F5E82008685E686540799D
+:10C53000EE090FBB50884068EE020F8C1C5BEE08C2
+:10C540000FAEF8081508F1EC1388EE000F9A105B97
+:10C55000FC091518F4081510F3EE1289F1EA130816
+:10C56000125B4079F7E82003EE000F8BF608150800
+:10C57000F1EB1388EE020FBCEE090FAE0A5CFC096A
+:10C580001518105CF3EE12894068125CEE080F9BE0
+:10C59000404A4048F6091510A968F3EB1309F1EA7F
+:10C5A0001388F9E92000105640394038B968F1E99C
+:10C5B00012882E04105640294028B169400AF3E839
+:10C5C0001309EDE920021434C770E4081618408AF4
+:10C5D000F3DAC008E208032EE2090326F1D0C2080C
+:10C5E000E2030F99E20803255019E2020FACE203BF
+:10C5F0000F8B6809F6081508F1EB1388E20A0FBAE9
+:10C60000125AF8091518105AF3EC1289E2000F9C1F
+:10C61000125AF8081510F1EC1308F5E82008E203A7
+:10C620000FBB506840886819E2000F8AE2080FAC1F
+:10C63000125BF4081508F8091518F1EA1388F3ECF1
+:10C640001289E2000FBAE2020F9C105BF808151085
+:10C65000125BF1EC1308F7E8200850786829E20330
+:10C660000FAC125AF8091518F3EC1289E2020F8B7D
+:10C67000F6081508F1EB1388105A125A4089E2099E
+:10C680000F9B6839F6081510F1EB1308125EF5E8F8
+:10C690002002EC091508EA081518F3E61389F1E5FC
+:10C6A0001288125E4019105EB1694018F3E8130950
+:10C6B000FDE92000C0AB4089F1D3C1084CDBFDD9B6
+:10C6C000C008F6080706E40A1618EBD0C208F60AF6
+:10C6D0000709F6050708F60E070CF9E9118CF3D3E4
+:10C6E000C008F9E8110C4088B988F608070AF6096D
+:10C6F0000708F3D2C208F1EA1188F609070AF3D055
+:10C70000C108680EF1EA1108F609070AF1EA108873
+:10C710001C58F0091618405AB4B8B4894059F00AA8
+:10C720001610A988B29AB2A8E6091618F609070ADF
+:10C73000F3D0C008F6090708F1EA1188408AF3DA55
+:10C74000C208F609070AF3D2C108F1EA1108F6098E
+:10C75000070A4059681EF1EA10881C58B2F8F0091F
+:10C760001618405AB4C94059F00A1610A988B2DA0E
+:10C77000B2E8E0091618F609070AF3D2C008F6096C
+:10C780000708F3D3C208F1EA1188F609070AF1EAAB
+:10C790001108408AF3DAC108F609070A4059682EE1
+:10C7A000F1EA10881C58F368000BF0091618405A7B
+:10C7B000F56900084059F00A1610A988F36A0009C3
+:10C7C000F368000A6839405AF9E6108C125CF808E0
+:10C7D0001618F8091610F56C000FF568000CA98CF6
+:10C7E000F569000DF56C000E2F7DD8328003D4ACB6
+:10C7F0008003D3A0EBCD40C01897590BC030E3CFD6
+:10C8000080C0E06C00B0F01F00061896CF900E9B21
+:10C81000F01F00040C9CE3CD80C0000080002E18A7
+:10C820008002C374D431209D129714961895500B32
+:10C83000308A0C9BFAC2FFE4049CF01F0034ECCB5E
+:10C84000FFF8400A0E9CA37AF01F00300A9C310BBF
+:10C85000F01F002F1893C57040082018EE0800380C
+:10C86000400950285C39400A5C59F40A00285019E4
+:10C87000E9D8C0083050FAC7FFF4FAC1FFEC40090C
+:10C880005809E08A002940251296308A049B0E9CA4
+:10C89000F01F001EFB390013E806000812580A9B1F
+:10C8A000FB680013308A029CF01F00180E9A0E9B42
+:10C8B000069CF01F0018308A0E9B049CF01F00138A
+:10C8C00020160A9C308A2085029BF01F0010580613
+:10C8D000FE99FFDD401A2010E80A0008E9D8C008D8
+:10C8E0005BF0CCE1069CF01F000C049C3A691988AF
+:10C8F000F2081800C0812FFCFAC8FFDC103CCF8181
+:10C900002F7DD83A2F7DDC3A80002DF48002C7F4C9
+:10C910008002C44080002E005EFD5EFCD401301811
+:10C92000F968000878085808C030781C5D18D802EB
+:10C93000D4014869930C931BF33800085808C04091
+:10C94000129CF01F0003DA0A0000786C8002C91CF8
+:10C95000D421201D189516961494300B30CA49DC4A
+:10C96000F01F001D300B49DCF01F001D300B49DCAF
+:10C97000F01F001D497B49DCF01F001D1897581C53
+:10C98000C0400E9C2FFDD822F01F001A1897581C8B
+:10C99000CF910C9B0A9C49868D07F01F00181897B1
+:10C9A000581CC04030088D08CEDB30088D08F01FC1
+:10C9B00000141897581CCE61FACBFFFD302CF01FE5
+:10C9C0000011F9B701FFFBF80803E9F80A00CDAB45
+:10C9D0000000786C80002DE88002CA548001344049
+:10C9E0008002CA04800144708002C91C8002CF20EA
+:10C9F0008002CED400007868800134588002CEF8DE
+:10CA00008002CBD8D401169C580BC041F01F000403
+:10CA1000D802300B301CF01F0002D8028002CBD8A5
+:10CA2000D4014879F33800085808C021DC0A3008DE
+:10CA3000F3680008F01F0003DA0A00000000786CB9
+:10CA40008002CD4CD4015C7BF01F0002DA0A0000AA
+:10CA50008002CE04D401169CF7DAC010F01F000249
+:10CA6000D80200008002CE04EBCD40C0203DF01F74
+:10CA700000164969F33800085808C0407208580881
+:10CA8000C0402FDDE3CD80C0E0680100FAC6FFF4AE
+:10CA9000E06C01000CE8F01F000E0C9B1897F01FD3
+:10CAA000000D9A5B580BC0A05C7BFAC8FFF81A997E
+:10CAB000FACAFFFC0E9CF01F00080E9CF01F000736
+:10CAC000CE1B00008002CB6C0000786C80002E181A
+:10CAD0008002CA20800137EC80002E00D401485823
+:10CAE0003019701CF1690009700A5D1AD802000043
+:10CAF0000000787CEBCD40CC206D49A6FAC7FFF44E
+:10CB00006C2E8F2EECE20000EEE3000016961093E0
+:10CB1000FACEFFF0580CC2207C08FC1C8000F1EC1F
+:10CB2000100BF4081509BBB8F1E611C812481648F5
+:10CB3000301C9D08F01F000C0E9C30CA1A9BF01F81
+:10CB4000000BFB38000AA688FB39000B300CA699B5
+:10CB5000F01F00052FADE3CD80CC7C0BCE3B000059
+:10CB60008003DCB4800045C080004534EBCD4080BC
+:10CB7000201D4987EF380008EDB80000C071EF397B
+:10CB800000093008F0091800C0402FFDE3CD808077
+:10CB900030091A98129B129C305AF01F000F3FF96F
+:10CBA0001B88F2081800CF201B98EDB80001CEE1D9
+:10CBB0003008301C109B3029E06A00F0F01F00069E
+:10CBC00030186E1CEF6800096E095D19CDFB00007E
+:10CBD0000000787C8002CAF4EBCD40C0201D301AE2
+:10CBE000F40C1800C1B0C0833028F00C1800C260EB
+:10CBF0002FFDE3CFC0C01A97300630091A98E06ABB
+:10CC000000F1129B301CF01F00161B98EC08180056
+:10CC1000CF51300C2FFDE3CD80C018961A973019F4
+:10CC20001A98E06A00F1300B129CF01F000D1B985F
+:10CC3000EC081800CF51300CCEEB48A8F1390008B1
+:10CC4000F9D9C001F7FA1E00F9BC0100F9B8005A81
+:10CC5000F7F80E002FFDE3CD80C000008002CAF47B
+:10CC60000000787CEBCD406848F516961893AA4BE7
+:10CC7000301CF01F000E0A9C310A300BF01F000C14
+:10CC8000069BF5D6C010300CF01F0009304A300B5F
+:10CC9000488CF01F0007300CF01F00040C9CE3CD03
+:10CCA000806800000000048C800045C0800045348E
+:10CCB0008003DCC0EBCD404020ED30083009FAE9BC
+:10CCC0000018FAE90000FAE90008FAE9001049BB87
+:10CCD000FAC6FFD4762A8D2AF6E80000301CECE96B
+:10CCE0000000F01F0017320A300B1A9CF01F0015CD
+:10CCF0000C9C30CAFACBFFE0F01F0012300CF01F82
+:10CD000000103019FB38002AF2081800C0503FFC10
+:10CD10002F2DE3CD804048C8F1390008F9D9C00172
+:10CD2000CF8030083039304A109B301CF01F00078C
+:10CD30002F2DE3CF804000008003DCC4800045C07D
+:10CD4000800045340000787C8002CAF4D421300988
+:10CD50004A881695F16900091896320BF01F0026D3
+:10CD60008C085CC82FE8F7D8B010AA0BEFDCB01025
+:10CD7000F6C90007E06805F9F0091900E08B0030FA
+:10CD80000D890D98F2081800C220F6071900C1821B
+:10CD9000E0640200F9D7C0105C7B181BEC0C000C9F
+:10CDA000E04B0200E80B17B05C7BF01F00138A0B0E
+:10CDB0000E0CEFDCB010EE0B1900FE9BFFED48F8F7
+:10CDC0003009118AF20A1800C0D1D8220DA8F20841
+:10CDD0001800CDC10DB8F2081800CD813008AA089E
+:10CDE000D822F5DBC010486C0C9BF01F0006D8223F
+:10CDF0000000787C8002CC64000078788003DCAC92
+:10CE000080014738D4314A3818921695118A300972
+:10CE1000F20A1800C3615805C33049F83004F0C065
+:10CE2000FFF4E0610200C228E06602000C970C9358
+:10CE3000301CA006F01F0019300B497C314AF01F4E
+:10CE40000018E404000C0E9A300BF01F0015304A55
+:10CE5000300B494CF01F0012300CF01F0010EA0696
+:10CE600001080604EBD8B010C0B0E2051900FE9B23
+:10CE7000FFDDEDD5B010EFD6C0100E93CDABD8329C
+:10CE8000F5DBC010189B488CF01F0008CC5B00003D
+:10CE90000000787800000478800045C080004534A8
+:10CEA0008003DCC08003DCB080014738D401201D42
+:10CEB0003009301C1A98E06A00F5129BF01F00043C
+:10CEC000314CF01F00042FFDD80200008002CAF48C
+:10CED000800045E4D401F01F0007F01F0007C030B8
+:10CEE00030CCD802F01F0003F01F0003CFA1DA0AF4
+:10CEF0008002CEAC8002CCB4D401314CF01F0006CD
+:10CF0000F01F0006C03030CCD802301CF01F0004E7
+:10CF1000DA0A0000800045E48002CCB48000462C90
+:10CF2000D4014878910C911BF0CCFFF8F01F00055C
+:10CF3000F9BC010CF9BC0001D80200000000787CAB
+:10CF40008000464CEBCD40EF1A9714921095169640
+:10CF5000109C129E14935809C4311638E08B00952A
+:10CF60005808C0513019F2080D08109CF80E120034
+:10CF7000C4E1EC0C010BEBDCC010F806161030120B
+:10CF8000F6060D08E60A1610109EF5E91109AB38F1
+:10CF90001238E088000C201E1809123CE08B0007B4
+:10CFA0001238F7BE0B01F3DCEB091019F5D3C010F2
+:10CFB000F2060D08109BF5E9110AAB381438E08829
+:10CFC000000A201B180A143CE08B00051438F7BB3C
+:10CFD0000B01F7EE110C049B189AE3CD80EF163984
+:10CFE000E0880007300B169C189AE3CD80EFF2031F
+:10CFF0001200E081008916395F3814355F891248C4
+:10D00000E6081800CF00069B301CCEFBEC0E094B47
+:10D01000FC091120E4090A4AF80E094CF5EB10034B
+:10D02000EC090A49EBDCC010F8061610E60A1610E7
+:10D03000F2060D081091F5E9110BAB381638E088AF
+:10D0400000072011180B163CE08800B5F60801090E
+:10D05000F5D3C010F2060D08F5E9110BF0050249F1
+:10D060001639E088000C2018180B163CE08B0007DE
+:10D070001639F7B80B01F7DCEB0BE40E0943121B72
+:10D08000F1E11102C7EBF00A1200C0D0F60A09491B
+:10D09000F00A094CE40A0943F4081120E4080A489C
+:10D0A000F1E91006E6081610F8051610EC050D0A51
+:10D0B000EDDCC010F1EB110B149EF406024816389B
+:10D0C000E0880007201E180B163CE088007AF6085E
+:10D0D0000109F5D3C010F2050D08109BF5E9110AFE
+:10D0E000AD381438E088000A201B180A143CE08B85
+:10D0F00000051438F7BB0B01F7EE110C300B189A32
+:10D10000E3CD80EFF603094CF203094EE609112046
+:10D11000F0090A4BF4090A4AF7EE100EF5EC10017B
+:10D12000EC090A49F0030940FC061610EBDEC010BA
+:10D13000F2060D08E20A1610109BF5E9110CAB3847
+:10D140001838E088000C201B1C0C183EE08B0007F0
+:10D150001838F7BB0B01F9DEEB0CF8080109F5D123
+:10D16000C010F2060D08109CF5E9110AAB3814380E
+:10D17000E088000C201C1C0A143EE08B00071438C9
+:10D18000F5DEEB0AF7BC0B01F9EB110C101AF800F5
+:10D190000648109B123AC042201C300BC26B123A58
+:10D1A0005F08E403094916395F3A1468CF70201C00
+:10D1B000CF5B1638F7B10B01F7DCEB0BC48B1638DD
+:10D1C000F7BE0B01F7DCEB0BC83BD703D40130AA49
+:10D1D000300BF01F0002D8028002E710D40148484B
+:10D1E000169A189B700CF01F0003D80200000598D7
+:10D1F0008002D1F4D421F40B024BF01F00161897D3
+:10D20000C260F8F8FFFCE018FFFCF0CA0004E04A36
+:10D210000024E08B001A1899593AE0880011300B6D
+:10D22000189810AB109912AB59BAE088000912ABEC
+:10D2300012ABE04A0024C03112AB12AB300812A886
+:10D2400093189308C048300BF01F00030E9CD8229F
+:10D250008002D86C8002DE9AD4211897F608150255
+:10D26000169E14962048F6041401100C0E950E9B81
+:10D27000300AC0787808760916A899092FFA204C48
+:10D28000083ACF95EC0E00090E9CF2081502F20E3A
+:10D2900014012048300AEE08000BC078760878099F
+:10D2A00018A897092FFA204B1C3ACF95EC081502C5
+:10D2B000EC0A14012048300BEE08000CC078780806
+:10D2C0006A090AA899092FFB204C143BCF95D82254
+:10D2D000D431205D501C500816931491580C5F0BEC
+:10D2E00058035F0C1290184B40E53008F00B180003
+:10D2F000E081027E580A5F0658095F08EDE80008E1
+:10D30000F6081800E08102744C37401B6E0C163C86
+:10D31000E084026EE60C032C580CE08002694BFBA3
+:10D32000F01F003FC0616E082FF88F08E08F026089
+:10D330006E085808C05130194BA88F09910958063A
+:10D34000C17132D80389F00918005F0B32B8F009B7
+:10D3500018005F08F7E81008EC081800C090580B98
+:10D36000F9BB0101F9BB00022FF1502BC0984AEC28
+:10D37000F01F002EF9BC0102F9BC0000502C4A98A5
+:10D3800070085818C69140295819C300C04358293D
+:10D39000C631C4F84A083007109A700632DE32BB34
+:10D3A0007408F0C9FFFFE608032C580CE080023136
+:10D3B0001988FC081800C0805805E080021CF60897
+:10D3C0001800E081021850475036494BF01F0014F6
+:10D3D000C4610E9BE606002C301AF01F0015ECC944
+:10D3E000FFFF48D89109E08F020348B8700AE60AA7
+:10D3F000032B580BC310178932D8F0091800C2C08C
+:10D400005805E08001FC32B8F0091800E08101F70E
+:10D41000C23800000000788C8003DDD48002E2D89E
+:10D42000000078888003DDD880031B3C8002D2583E
+:10D430004BC87008E60803285808C0E0118932D8A4
+:10D44000F0091800C0905805E08001D232B8F00908
+:10D450001800E08101CD3008503850485800E08075
+:10D4600000974B076E08302AE608032C4AEBF01FA2
+:10D47000002FC0D05805E080008B6E08E608032816
+:10D48000118932B8F0091800E08100824A876E08DD
+:10D490005818C7D14A387008302AE608032C4A2B9E
+:10D4A000F01F0022F9B80002EFF80A0049D66C0814
+:10D4B000E608032849E533DB6A0CF00C000CF01F8A
+:10D4C000001D1897C0F16C08E608032CF01F001A25
+:10D4D0006A086C09F8080102E6090328F00C000745
+:10D4E000C0986C086A09E6080328F8080108F009E2
+:10D4F0000102009630053FF4C3F848A9720848C9F4
+:10D50000E6080328720C049AF00C000CF01F0007C8
+:10D51000C3116C0CF01F00081832C0F10A94C31834
+:10D520000000788C8003DDD48002DCEC0000788879
+:10D530008002E2BC8002E3E05BF4C1B04B8870087B
+:10D540005808C6306C081AD84B687008E6080329DA
+:10D55000E8081504E0080308660A1AD84B281AD907
+:10D560001ADA70084B1B702CF01F00312FCDC4D875
+:10D570000A942FF52F066C0B580BCC015BF4C0906E
+:10D58000E8081504E0080008701AC0483FF43007A6
+:10D59000089A58015F18F1E403F8C0313006C62834
+:10D5A0004A076E084A35E60803296A08029CF20811
+:10D5B000070BF01F00211896C2B14998700858084F
+:10D5C000C1106E086A09E6080328F00907081AD88E
+:10D5D00066081AD849487008498B702CF01F00144F
+:10D5E0002FED494A48FB7409760C2FF9E60C032805
+:10D5F0009509F00907093008F0091800C061F8C85A
+:10D60000FFFF97083018950833F9129CCFE8199A54
+:10D6100033A8F00A1800C130300AC188000004A401
+:10D620000000788C000005988003DDE88003149CDE
+:10D63000000078888002E2BC8003DE2419A8F40888
+:10D640001800F9BA0002F9BA01014B887008E6081F
+:10D6500003294B7870082FF8F20800070D894B5802
+:10D660009109581AC180582AC040580AC720C238A8
+:10D670000F8933D84B0AF0091800F7B700FF3008BC
+:10D680000F89F0091800C0309507C12830089508A7
+:10D690001097C7480F8933D8F0091800F7B700FF73
+:10D6A00030080F89F0091800C0804A3891073019F6
+:10D6B00049F891093007C62849C8401B70082FF85F
+:10D6C0001638C2A549D870085808C1D0660849C79D
+:10D6D0001AD86E0849BB702CF01F001B2FFD5BF49D
+:10D6E000C0A06E08E8091504498BE00903091AD99E
+:10D6F000702CC0686E090D88495B1AD8722CF01F17
+:10D7000000122FFD489972082FF833AA9308149C31
+:10D710004888910AC6D8E608032A48783019910A41
+:10D7200012974838C2A800000000788C0000788862
+:10D73000000004A000007890000004A400000598F8
+:10D740008003DE448003149C8003DE688003DE7067
+:10D750004B1B5BF4C0D176092FF997094AF8700882
+:10D76000E6080328F0090708F4081800C03130184B
+:10D77000970830094AA81297910940295809C1A170
+:10D780004048402B58085F194A38700858185F08FD
+:10D790001268F6081800C0E04039404BE609002C3A
+:10D7A000EECAFFFFF01F001F403849C92FF80E08CE
+:10D7B000C098499870085818C061498972082FF8B4
+:10D7C0000E0893085BF4C10040085808F1F41A00F1
+:10D7D000E8081504E0080008703C70295809C0806A
+:10D7E000930C300CC0584908700CC0283FFC2FBD6A
+:10D7F000D83295092FF7FE9FFDD548982FFA30199A
+:10D80000910B129C4858910A48789109CF1B4838CF
+:10D810009106CEDB000078880000788C00007890BC
+:10D820008002D258000004A0D40130091AD91298FD
+:10D83000F01F00022FFDD8028002D2D0D401484848
+:10D84000189B700CF01F0003D80200000000059820
+:10D8500080031630D4014848189B700CF01F000359
+:10D86000D8020000000005988002D86CD431F6C8B8
+:10D87000FFF518925968F9B50810F9B90BF8F1D904
+:10D88000EB2516355F38F1E513F8C05030C89938EC
+:10D89000E08F020BF01F0053E04501F7E08B001A08
+:10D8A000EA0916034D08F009003870361036C061D9
+:10D8B000ECC8FFF870361036C0906C19049CE01963
+:10D8C000FFFC6C3AEC090009C488F2C7FFFEC518DA
+:10D8D000EA081609C041EA091603C2A85848E08BB5
+:10D8E0000007EA081606F0C9FFC8C2285948E08BAD
+:10D8F0000005F0C9FFA5C1C8E0480054E08B00074F
+:10D90000EA08160CF0C9FF92C138E0480154E08BD8
+:10D910000007EA08160FF0C9FF89C0A8EA09161225
+:10D92000E0480554E088000437E9C02828494AE85F
+:10D93000F009003C7836C1986C18E018FFFCF0053F
+:10D94000010B58FBE08A00042019C1186C3A580BEF
+:10D95000C0B5EC080009049C6C289528913A72180F
+:10D96000A1A89318CCD814961836CE71F2C7FFFF31
+:10D9700049DBF6C4FFF868260836C7E06C19E019E1
+:10D98000FFFCF205010858F8E08A000EEC050009DA
+:10D9900089398929A1A5F20809088D1593249334A2
+:10D9A000049CCDFB893489245808C055EC09000932
+:10D9B000049CCD6BE04901FFE08B0018F20A1603CE
+:10D9C000F60A003870298D388D29933691267619FC
+:10D9D000A34A3018F00A094810499719C4D8000022
+:10D9E0008002DEA80000059CF20A1609584AE08B66
+:10D9F0000007F2081606F0CAFFC8C228594AE08B91
+:10DA000000042A5AC1D8E04A0054E08B0007F2080B
+:10DA1000160CF0CAFF92C148E04A0154E08B00079F
+:10DA2000F208160FF0CAFF89C0B8F2081612E04AD1
+:10DA30000554F9BA0B7EF9BB087CF1DBE80A4C7E91
+:10DA4000FC0A003C782B183BC0D1A34A3018F00ADE
+:10DA500009487C19104916989D19C0A8762B183BC7
+:10DA6000C0607618E018FFFC1039CF9376388D38F7
+:10DA70008D2B97369126EE09140230184B71F00960
+:10DA8000094B6219123BE08B006DF7E90008C0D129
+:10DA90000E98A17BE018FFFCF0C7FFFCC0382FC731
+:10DAA000A17BF7E90008CFC0E20700330E9C06997E
+:10DAB0007236C2C86C18E018FFFCF005010E58FE63
+:10DAC000E08A00136C396C2893289139EC05000921
+:10DAD00089398929A1A5F20E090E8D159324933455
+:10DAE000049C1C98C3EB6C3A580EC0F5EC08000877
+:10DAF000049C7019A1A991196C289528913AF01FDE
+:10DB00000018ECCCFFF8D83214961236CD412FFC19
+:10DB1000F1DCC002C0302F89CCCB0E99069AF1D926
+:10DB2000C002C051621816888318C078F4C8000873
+:10DB30002019740A103ACF40A17B6219123BE08B86
+:10DB40000011580BC0E01897C0382FC7A17BF7E928
+:10DB50000008CAB1CFBB00000000059C8002DEAA0D
+:10DB600062236614E014FFFC0A345F39E805010AF9
+:10DB700058FA5FA81049E08000A94CC870082F0827
+:10DB8000F00500074CA870085BF8F9B9017FEFD9E0
+:10DB9000E108F9B90180F1D9E127049C0E9BF01F3F
+:10DBA000004518965BFCC710E604000A143CC0321E
+:10DBB0000233C6B14C097208EE08000B930B143601
+:10DBC000C0A1F1D6C007C071EE0400086229A1A867
+:10DBD0009318C4F84B6972085BF8C0319306C068AB
+:10DBE000EC0B00094B4814199109F3D6C003F20855
+:10DBF00011085809F0091710EDD9E1062809EC07BA
+:10DC00000008F1D8C007F2080107049C0E9BF01F22
+:10DC100000295BFCEC0C1700F9B70000F8060108BE
+:10DC20000E08A1A84A498D1883267208EE0800083C
+:10DC300093080233C1E058F4E08B000530188D18CA
+:10DC4000C248305AE8C9000CE019FFF8E60900089C
+:10DC5000912A911A6618F1D8C001F3E810088718C4
+:10DC600058F9E0880007E6CBFFF8049CF01F00138A
+:10DC70004918493A700974081039F5F9BA00491A77
+:10DC800074081039F5F9BA0062287018E018FFFC22
+:10DC90000A385F39F005010A58FA5FA81049C150E7
+:10DCA000049CF01F0009D83A0000789C000009A8E5
+:10DCB0008002E1D8000078A0800316300000789838
+:10DCC000000078948002DEAA0A98A1A86226A1AA80
+:10DCD0008D18EC050008049C8328911AF01F00039E
+:10DCE000ECCCFFF8D83200008002DEAAD401300864
+:10DCF000189E149CC0D8FC08070AF6080709201CC7
+:10DD00002FF8F20A1800C040F409010CD802580C90
+:10DD1000CF31D802588AC2F5F9EB1009E219000395
+:10DD2000E0810097E04A0020C3B4F4081402F0092F
+:10DD30001108FE09002F7669996976599959764933
+:10DD4000994976399939762999297619991976094F
+:10DD50009909F608002BF8080028E01A0003F40AD5
+:10DD60001104FE0A002F17A9B0A91799B0991789B5
+:10DD7000B0895EFCF40A1109FE0A002F17F9B8F900
+:10DD800017E9B8E917D9B8D917C9B8C917B9B8B9CF
+:10DD900017A9B8A91799B8991789B8895EFCEBCD6E
+:10DDA00040C01899220AB707B326B707B326B707AA
+:10DDB000B326B707B326220ACF742F0AC065B70768
+:10DDC000B326B707B326210A5C3AFE0A003FD70301
+:10DDD000D703F736000EF366000EF736000DF36634
+:10DDE000000DF736000CF366000CF736000BF366F7
+:10DDF000000BF736000AF366000AF7360009F366EF
+:10DE00000009F7360008F3660008F7360007F366E6
+:10DE10000007F7360006F3660006F7360005F366DE
+:10DE20000005F7360004F3660004F7360003F366D6
+:10DE30000003F7360002F3660002F7360001F366CE
+:10DE40000001F7360000F3660000E3CD80C0201A21
+:10DE5000F60A0709F80A0B09CFB15EFCD401183B9A
+:10DE6000C192F60A000E1C3CC152F80A000B3009A0
+:10DE7000C068FC090708201AF6090B082019580A7F
+:10DE8000CF91D802F6090708201AF8090B082FF9D4
+:10DE9000C0283009580ACF71D8021898C03810CB62
+:10DEA000201A580ACFD15EFC5EFC5EFCD4014848C3
+:10DEB000169A189B700CF01F0003D80200000598FA
+:10DEC0008002DEC4D431201D169414911890580B92
+:10DED000C061149BF01F005A1893C739F01F0059F6
+:10DEE000E2C8FFF5E8C600085968F9B20810F9B9A8
+:10DEF0000BF8F1D9EB226C1E02325F38F1E213F815
+:10DF0000C05030C830038138C5C91C95E015FFFCEE
+:10DF10000435E084012C4CC8EC05000A702C183A3A
+:10DF2000C0907418A1C8F40800087018EDB800007B
+:10DF3000C270741BE01BFFFCF6050009183AC171A2
+:10DF4000E4C8FFF01039C1E5F2020108EC02000953
+:10DF5000A1A893184BCA6C189529F1D8C001009C50
+:10DF6000E5E81008ECC3FFF88D18C2991293043944
+:10DF7000C095742974380C9791299338CF98300B39
+:10DF8000169AEDBE0000E08000AA6C08EC080107BC
+:10DF90006E19E019FFFC580AC670F2050008183A1D
+:10DFA000C56116085008E4C8FFF0400A103AC5C51C
+:10DFB0006E396E2893289139EACB0004EEC3FFF83E
+:10DFC000E04B0024E08B00270899069A593BE08833
+:10DFD000001B680887082FC913088F38EECAFFF0A6
+:10DFE00059BBE08800111308950813088F58EECA32
+:10DFF000FFE8E04B0024C07113089508EECAFFE06B
+:10E0000013088F78130814A87208950872189518C9
+:10E01000C068169A069C089BF01F000C4008041864
+:10E02000A1A8EE02000993184878009C91296E1867
+:10E03000F1D8C001E5E810088F18CC188002D86C20
+:10E040008002DEA80000059C8002DE5CF00B00036D
+:10E050000433C0A574297438912993386E296E3819
+:10E0600091299338C098F20500030433C3756E39C3
+:10E070006E2893289139EACB0004EECCFFF8E04BF0
+:10E080000024E08B00270899189A593BE088001B70
+:10E09000680899082FC913088F38EECAFFF059BBDA
+:10E0A000E08800111308950813088F58EECAFFE89E
+:10E0B000E04B0024C07113089508EECAFFE0130876
+:10E0C0008F78130814A87208950872189518C50857
+:10E0D000169A089BF01F003DC4B8029B009CF01FDD
+:10E0E000003C1893C4106C18F8C90008A1C8EC08CB
+:10E0F00000081039C08172180C97E018FFFCF00579
+:10E100000003C368EACE0004E04E0024E08B002543
+:10E11000089B189A593EE088001808981899110A27
+:10E1200012AA109B129A170814A859BEE088000D75
+:10E13000170814A8170814A8E04E0024C0511708A7
+:10E1400014A8170814A81699130814A8720895089B
+:10E1500072189518C0581C9A089BF01F001C089B49
+:10E16000009CF01F001C009CC2A80C970A93E602BA
+:10E1700001096E1858F9E0880016F1D8C001E5E8E9
+:10E1800010088F181298A1A8EE02000BF6090009DA
+:10E1900097187218A1A82F8B9318009CF01F000DE0
+:10E1A000C0B8F1D8C001E7E810088F18EE030009E5
+:10E1B0007218A1A89318009CEEC3FFF8F01F000688
+:10E1C000069C2FFDD83200008002DE5C8002D86CF5
+:10E1D000800316308002DEAAD421300818964877D2
+:10E1E000169C8F08F01F00065BFCC0516E08580893
+:10E1F000EDF81A03D822000000008A888002E80C9B
+:10E200005EFDD703D421217DE06802041696BA682A
+:10E21000504C500CF01F000B3008512850D848A823
+:10E2200050983FF8BA784898505C501CFAC9FF9053
+:10E230000C9A700C1A9BF01F00062E9DD82200002D
+:10E240008002E3E08002E2000000059880030110F4
+:10E25000D421217D4988FAC9FF9016977006580B82
+:10E26000C064E068008B3FFC8D38C228580BF6086C
+:10E2700017005807F9BB01FFEFDBE10850585028A1
+:10E280003FF8BA78E0680208500C504CBA681A9B04
+:10E290000C9CF01F000A5BFCC044E068008B8D38CA
+:10E2A0005807F9B90100FBF81000F1F91E002E9D86
+:10E2B000D8220000000005988002EB885C5BC02833
+:10E2C0002FFC19885808C050F6081800CFA15EFC32
+:10E2D000580B5E0C5E1DD703F9EB100AE21A00031F
+:10E2E000C341780A76095CEAC170123AC151781AC2
+:10E2F00076195CEAC110123AC0F1782A76295CEAF4
+:10E30000C0B0123AC091783A76395CEAC0502F0C0E
+:10E310002F0B123ACE70F9DAC308F7D9C3085E0C96
+:10E32000161C5E1CF9DAC208F7D9C2085E0C161C6E
+:10E330005E1CF9DAC108F7D9C1085E0C161C5E1C18
+:10E340005C5A5C59121A5EFA178A1989580A5E09D2
+:10E3500014195E19179A1999580A5E0914195E1949
+:10E3600017AA19A9580A5E0914195E1917BA19B91A
+:10E37000580A5E0914195E192FCB2FCCCE6B000002
+:10E380003009F6090708F8090B082FF95808CFA13A
+:10E390005EFCD703D4014848189B700CF01F0003A3
+:10E3A000D8020000000005988002E3ACD421189642
+:10E3B0001695169CF01F0008F8C7FFFF0C9C0E9BDB
+:10E3C000F01F00061896C0500E9A0A9BF01F00041A
+:10E3D0000C9CD8228002E3E08002D86C8002DD141D
+:10E3E0001899300AC0282FFC1988F4081800CFC1EA
+:10E3F000121C5EFC1899149C580AC0815EFC580CD3
+:10E40000C0B0580AC0902FF92FFB201C138A178820
+:10E41000F4081800CF5013891788F208010C5EFC2D
+:10E420003008103A5E0CF6080709F8080B092FF8B7
+:10E430005809CF81103A5E0CF8080B092FF8CFBBB2
+:10E44000D4014848169A189B700CF01F0003D8029C
+:10E45000000005988002E458D42130091695C028A0
+:10E460002FFB580AC060201A1788F2081800CF91B5
+:10E47000F6050106ECCBFFFFF01F00071897C080E0
+:10E480000A9B0C9AF01F00053008EE060B080E9C44
+:10E49000D82200008002D86C8002DD14D4211898A4
+:10E4A0001696580BC0C03007C0481897F8C8FFFF31
+:10E4B000109C0C9BF01F0005CF91C048F01F00037B
+:10E4C00018970E9CD82200008002E2BCD4314A3555
+:10E4D00018936A061694ECF700E85807C331350C18
+:10E4E000F01F001F6A09ED4C00E8F2F800E89127E0
+:10E4F00091079117F2F800E891479137F2F800E898
+:10E5000091679157F2F800E891B791A7F2F800E807
+:10E5100091D791C7F2F800E891F791E7F2F800E897
+:10E52000F1470044F1470040F2F800E8F147004CA1
+:10E53000F1470048F2F800E8F167001CF2F800E843
+:10E54000919748687008089B069CF0FA00E830191B
+:10E55000F01F0004D8320000000005988002D85453
+:10E560008002E564D4211696189E1497129B580CCD
+:10E57000C041740E580EC2901C990C9A133CC0A84E
+:10E58000103CC081580BC030129ECF7B8F09BC8BD2
+:10E59000C17815385808CF51580CC0418F0CD8227B
+:10E5A0001699129B0C9C1738193A103AC0B15808AA
+:10E5B000F00B1700F9B80100F3F81E008F0B1C9C3C
+:10E5C000D822580ACF21CEDB1C9CD822D431203D42
+:10E5D0004CF8501B502C500A12957000169E1D3B93
+:10E5E000E00B0708E2180008CFB1E04B002DC04156
+:10E5F0001D3B3014C088E04B002BC0301094C03855
+:10E6000010941D3B58055F0659055F083007EDE87B
+:10E610001008EE081800C1D0E04B0030C121378847
+:10E620001D8AF00A18005F093588F00A18005F0893
+:10E630001049EE091800C0501D9B31052FEEC098FF
+:10E640005806C070E04B0030F9B50008F9B5010A72
+:10E65000300CE06AFFFFEA1A7FFFFC198000189671
+:10E660001834F40917001891F2050D08109312924E
+:10E67000E00B0709F6C70030F1D9C001F9BA01373C
+:10E68000F9BA0057EDB90002C060F60A0107F1D9E6
+:10E69000C002C1B00A37C194063C5FB8F1E613F876
+:10E6A000E2081800C0F1063C5F0804375F99126861
+:10E6B000E2081800C071F80502483016EE08000C98
+:10E6C000C0283FF61D3BCD5B5BF6C101E068FFFF54
+:10E6D000EA187FFFFC1980005804F20C1710F00CA8
+:10E6E0001700322840299338C0485804FBBC010069
+:10E6F00040085808C0A05806F9B801FFFDD8E10B42
+:10E70000FBFB00014009930B2FDDD8320000049C75
+:10E71000D40148581499169A189B700CF01F0003E6
+:10E72000D8020000000005988002E5CC3028D6739E
+:10E730003FFC358B580C5E4C482A950B5EFC000064
+:10E7400000008A883058D6733FFC358B580C5E4CDD
+:10E75000482A950B5EFC000000008A883038D6738A
+:10E760003FFC358B580C5E4C482A950B5EFC000034
+:10E7700000008A883048D6733FFC358B580C5E4CBD
+:10E78000482A950B5EFC000000008A8830B8D673DA
+:10E790003FFC358B580C5E4C482A950B5EFC000004
+:10E7A00000008A883098D6733FFC358B580C5E4C3D
+:10E7B000482A950B5EFC000000008A88D421210DB8
+:10E7C00016971A9BF01F0011C0343FFCC1C84008C7
+:10E7D000AE084018AE1840288F184038AE48404860
+:10E7E000AE584058AE684068AE7840888F4840A820
+:10E7F0008FB840C88FC840D88F5840E8300C8F7809
+:10E8000040F88F982F0DD8228002E7A4D40148C980
+:10E81000189B72085808C03148A89308488A48A82D
+:10E82000740CF80B00091039E08B00049509D8022C
+:10E83000F01F000630C89908DC0A0000000078C804
+:10E8400000008A900000F000800311D4D431206DC4
+:10E85000FACCFFC4502B5018780178287810700B30
+:10E86000401C580BF40B17005008402A12957806EC
+:10E87000505AC2692FFB3009178A325CF20A18001D
+:10E880005F18F80A18005F1912683009F2081800BA
+:10E89000CF21580AE080012230043FF80893504805
+:10E8A000089208994CDCF209003816970F3AF80ADA
+:10E8B00007094CBC1208F80807094CACF80807080F
+:10E8C000503820195879E08B00F54C78F009032F67
+:10E8D0003688F00A1800E08000ED3718F00A1800BA
+:10E8E000C07034C8F00A1800C051A3B3CE28A5B335
+:10E8F000CE080F8936C8F0091800C051A5B3EECB79
+:10E90000FFFFCD88A5A3CD58EDD6C005367CF80A0B
+:10E910001800E08B00273658F00A1800C48234F83B
+:10E92000F00A1800C480E08B000C3458F00A18007C
+:10E93000C3E03478F00A1800C3A03448C088358892
+:10E94000F00A1800C2C0E08B00073558F00A180022
+:10E95000C351C3183638F00A1800C2F03648C0E870
+:10E960003708F00A1800C250E08B000D36E8F00AB4
+:10E970001800C1F0E08B00143698F00A1800C1E1CD
+:10E98000C0E83758F00A1800C0A03788F00A18000D
+:10E99000C0603738F00A1800C111C0B8EDB30004E8
+:10E9A000C0A0EDB30005C0913022C0883042C068DD
+:10E9B0003032C0483012C0283002404A5BFAC040B2
+:10E9C000E00A0922C7685862E08B00746A09ECCA41
+:10E9D000FFFF4868F002032F8003DFE88003DF2891
+:10E9E0008003DEBC8003DE808003DEA0F2C8FFF877
+:10E9F0008B08F2E80000E2060838C0F8F2C8FFFC15
+:10EA00008B087208E2060938C088F2C8FFF88B0844
+:10EA1000F2E80000E20608380E9B1496C4B86008BD
+:10EA20005BF8C071E06A0080300B009CF01F004E64
+:10EA3000E8CC0001405A0E9BF40C0C4A504C505A42
+:10EA4000C39860085BF8C071E06A0080300B009CDE
+:10EA5000F01F0045201440583009F0040C480E9B6C
+:10EA6000E00409295058C26816976A08F0C9FFFCEB
+:10EA70008B0970080E9BE20609382FF6C1B8F4C462
+:10EA80000030C068E80400282FF7F20800140F884F
+:10EA90005808C0F0F0C900305899FE98FFF5C098AA
+:10EAA0002FF70F885808C05023085898FE98FFFA8F
+:10EAB0000E9B403930B8F0091800FE91FEF5402C4D
+:10EAC00017880C3C5F49300AF40818005F18126878
+:10EAD000F4081800FE91FED1402A0C9EE006002C9E
+:10EAE000178930084056F0091800EC071700F407A2
+:10EAF0001710E20E003AC2A878085838C1E0E08941
+:10EB000000075818C1A05828C181C0585858C0C023
+:10EB1000C0B5C1386A09F2C8FFF88B08F2E80000F6
+:10EB2000F4E90000C1086A09F2C8FFF88B08F2E8AE
+:10EB30000000F4E90000C0786A08F0C9FFFC8B0906
+:10EB4000700895082FFE2F8A2FCC0E3EFE9AFFD616
+:10EB5000401940084026930E910BE206003C2FAD71
+:10EB6000D83200008002DE9AD42114977428580805
+:10EB7000C0419518109CD822F01F000330088F1850
+:10EB80008F28D822800317DCD431FACD068C50B9F7
+:10EB9000500B501C1497580CC06078685808C0314E
+:10EBA000F01F00424C28400B103BC041401A740A31
+:10EBB000C0F84C0840091039C0514018701850086E
+:10EBC000C0884BD8400B103BC041401A742A500AF1
+:10EBD00040099268EDB80003C04172485808C071FE
+:10EBE000400B401CF01F0035E0810A894008906A04
+:10EBF0001498E218001A58A8C40140093008927B02
+:10EC0000F00B1900C3A5FB5B05BE400B7688FB48E3
+:10EC100005D076A8FB4805D8FAC8FFD0FB4805C048
+:10EC2000FB4805B0E0680400A1DAFB4805C4FB48D6
+:10EC300005B83008FB5A05BC40B90E9AFB4805C818
+:10EC4000FAC7FA50401C0E9BF01F001D505CC09587
+:10EC50000E9B401CF01F001B405AF9BA01FF505A8E
+:10EC6000FB0805BCEDB80006E0810A4B400992683C
+:10EC7000A7A8B268E08F0A4530081091FB48067CCF
+:10EC8000FB480678FB480680FB480684FAC8F9F47E
+:10EC90005097FB480674504850513FF85081FB484C
+:10ECA00005304093325AC108800313EC8003E11C05
+:10ECB0008003E13C8003E15C800310E88002EB8884
+:10ECC000800311E02FF30788300BF40818005F1958
+:10ECD000F60818005F181268F6081800CF41409A2D
+:10ECE000E60A0106C220FAF8067C0C084049FB48F7
+:10ECF000067C930AFAF8067893162FF8FB480678F4
+:10ED00005878E08900052F895049C0C8FACAF98CA3
+:10ED1000400B401CF01F0097E08109ECFAC8F9F4A1
+:10ED20005048405B0C0B505B0788300AF408180011
+:10ED3000E08009D23000E6C9FFFF3FF8FB6A068B8E
+:10ED4000509902970092506050A8C0683FFB5096BF
+:10ED500050ABC0283002409A1536509AC0285069EE
+:10ED6000E0460063E08001BBE089003DE0460039F9
+:10ED7000E0890024E0460031E0840187E046002B72
+:10ED8000E08000ECE089000DE0460023C720E0466B
+:10ED9000002AC710E0460020E08107BEC5F8E04623
+:10EDA000002EE08000DEE0460030E080016CE046AE
+:10EDB000002DE08107B1CCF8E046004FE08003A2CF
+:10EDC000E0890008E0460044E08107A6E08F01D218
+:10EDD000E0460055E0800534E0460058E081079C9D
+:10EDE000C398E046006FE080038EE089001BE04698
+:10EDF0000069E08001C0E089000BE0460064E0802B
+:10EE000001BAE0460068E0810787C599E046006CDA
+:10EE1000E0800158E046006EE081077EE08F0299B5
+:10EE2000E0460073E08004B2E089000BE046007029
+:10EE3000E080045DE0460071E081076EC4D9E046E1
+:10EE40000075E08004FEE0460078E0810765E08F11
+:10EE500005E902994C88E08F05E7FB38068B300BFB
+:10EE6000F6081800FE91FF793208FB68068BC74B45
+:10EE7000A1A0C72B409A1589F2C800305898E08BA2
+:10EE8000001E2FFA300BF2C80030F60B0029F009F3
+:10EE9000001B1539F2C800305898FE98FFF6E0497B
+:10EEA0000024FE91FF59E04B0020E0890923201B3C
+:10EEB000FAF80684103BC095C0E8FAF90684E2CA65
+:10EEC000FFFF1231C1E5C268FAC9F974509AF20B1A
+:10EED0000038C1C8FAC8F9801AD8FAC9FACC1AD9C8
+:10EEE000FAC8FBC850BA1AD8069AFAC8F970FAC913
+:10EEF000FFC8404CF01F00212FDD780C506CC25829
+:10EF0000FACBF9741491F6070038F0F8FDA45068B4
+:10EF1000C1C840BC59F9E0890013F8C8FFFC780C5F
+:10EF200050B8506CFACBF974F6090038F14CFDA4D6
+:10EF30001491F2C8FFFFFB480684C0787809F8C82E
+:10EF4000FFFC5069149150B840685808FE94FF05C2
+:10EF50005C385068A3A0C00BFB66068BCFDA409BE1
+:10EF60001736509BE046002AC0A0300CC7F80000BE
+:10EF70008002EB688003DF948002E84C409A158998
+:10EF8000F2C800305898E08B001F1496300B2FF613
+:10EF9000F2C80030F60B0029F009001B0D39F2C849
+:10EFA00000305898FE98FFF6E0490024FE91FED408
+:10EFB000E04B0020E089089E201BFAF80684103BF5
+:10EFC000C095C0D8FAF90684E2CAFFFF1231C1C564
+:10EFD000C258FAC9F974F20B0038C1C8FAC8F980EE
+:10EFE0001AD8FACAFACC1ADAFAC8FBC8069A1AD89A
+:10EFF000FAC8F970FAC9FFC8404CF01F02372FDD7C
+:10F00000780C50ACC288FAC9F97414914096F20792
+:10F010000038F0F8FDA450A8C1E840BC59F9E089D7
+:10F020000014F8C8FFFC780C50B850ACFACBF97457
+:10F03000F6090038F14CFDA41491F2C8FFFF409688
+:10F04000FB480684C0887809F8C8FFFC50A91491D1
+:10F05000409650B840A85808FE95FE7A5096C7CA08
+:10F06000409BF009001C1736509BF80C0029ECC897
+:10F0700000305898FE98FFF63FFAF80A0C4C50AC56
+:10F08000C70AA7B0C69A3009ECC80030F2090029B7
+:10F09000F0090019409811365098ECC80030589883
+:10F0A000FE98FFF4E0460024FE91FE5BE04900205C
+:10F0B000E0890820F2C700013012C4EAA7A0C4CA40
+:10F0C000409B1788EC081800C0512FFBA5B0509B3F
+:10F0D000C43AA5A0C41AA5B0C3FA0298FAFA0684E5
+:10F0E0005802C1D01437C064FACAF974F407003862
+:10F0F000C1D8FAC8F9801AD8FAC8FACC0E9B1AD827
+:10F10000FAC8FBC8069A1AD8FAC8F970FAC9FFC833
+:10F11000404CF01F01F12FDD19BBC2482FF114380C
+:10F12000C084FAC9F974F2070038F13BFDA7C1A801
+:10F1300040BC59FAE0890013F8C8FFFC50B87809C0
+:10F14000FACBF974F60A0038F149FDA4F7D9C008E2
+:10F15000F4C8FFFFFB480684C058F8C8FFFC19BB81
+:10F1600050B8300AFB6B064CFB6A068BE08F05DC5F
+:10F17000A5A00296EDB00005C4E1FAFA0684580293
+:10F18000C1D01437C064FAC9F974F2070038C1E875
+:10F19000FAC8F9801AD8FAC8FACC1AD8FAC8FBC843
+:10F1A0001AD8FAC9FFC8FAC8F970404C069A0E9BE3
+:10F1B000F01F01C92FDD7819C288E2C6FFFF1431A4
+:10F1C000C0A4FACBF974F6070038F0F9FDA8F0FCFA
+:10F1D000FDA4C1C840BC59FAE0890014F8C8FFF882
+:10F1E00050B87819FACBF974780CF60A0038F1495E
+:10F1F000FDA8F14CFDA4F4C8FFFFFB480684C068DD
+:10F20000F8C8FFF8781950B8780C0C91129A12943B
+:10F210001895C8F8EDB00004C460EDB00006C43124
+:10F22000FAFA06845802C1D01437C064FACBF974D4
+:10F23000F6070038C1E8FAC8F9801AD8FAC8FACC3B
+:10F240000E9B1AD8FAC8FBC8069A1AD8FAC8F970E1
+:10F25000FAC9FFC8404CF01F01A02FDD981BC6580B
+:10F26000E2C6FFFF1431C084FACAF974F40700380B
+:10F27000F10BFDA6C5A840BC59FAE0890013F8C8F7
+:10F28000FFFC50B87809FACBF974F60A0038F14956
+:10F29000FDA4F7D9B010F4C8FFFFFB480684C4589A
+:10F2A000981BC408FAFA06845802C1D01437C06407
+:10F2B000FACAF974F4070038C1E8FAC8F9801AD814
+:10F2C000FAC8FACC0E9B1AD8FAC8FBC8069A1AD804
+:10F2D000FAC8F970FAC9FFC8404CF01F017F2FDD52
+:10F2E000780BC238E2C6FFFF1431C084FAC9F97442
+:10F2F000F2070038F0FBFDA4C18840BC59FAE08950
+:10F300000011F8C8FFFC50B8FAC9F974780BF20A7A
+:10F310000038F14BFDA4F4C8FFFFFB480684C05839
+:10F32000780BF8C8FFFC50B80C911694F605141F22
+:10F3300058045C25C0A430083009F0040104F2052B
+:10F34000014532D8FB68068B301EE08F046B0299B2
+:10F35000EDB00005C461FAFA06845802C1D0143732
+:10F36000C064FACBF974F6070038C1D8FAC8F9803E
+:10F370001AD8FAC8FACC0E9B1AD8FAC8FBC8069A53
+:10F380001AD8FAC8F970FAC9FFC8404CF01F0152E8
+:10F390002FDD780BC2282FF11439C084FACAF97412
+:10F3A000F4070038F0FBFDA4C18840BC59FAE0899D
+:10F3B0000011F8C8FFFC50B8780BFAC9F974F20ACA
+:10F3C0000038F14BFDA4F4C8FFFFFB480684C05889
+:10F3D000F8C8FFFC780B50B840589718BF58C8E8D9
+:10F3E000EDB00004C490E2100040C460FAFA068454
+:10F3F0005802C1D01437C064FACBF974F60700384C
+:10F40000C1D8FAC8F9801AD8FAC8FACC0E9B1AD813
+:10F41000FAC8FBC8069A1AD8FAC8F970FAC9FFC820
+:10F42000404CF01F012D2FDD780BC2282FF114392D
+:10F43000C084FACAF974F4070038F0FBFDA4C1884F
+:10F4400040BC59FAE0890011F8C8FFFC50B8780BAD
+:10F45000FAC9F974F20A0038F14BFDA4F4C8FFFFB1
+:10F46000FB480684C058F8C8FFFC780B50B84058D9
+:10F47000B608FE9FFC18FAFA06845802C1D0143769
+:10F48000C064FACBF974F6070038C1D8FAC8F9801D
+:10F490001AD8FAC8FACC0E9B1AD8FAC8FBC8069A32
+:10F4A0001AD8FAC8F970FAC9FFC8404CF01F010A0F
+:10F4B0002FDD780BC2282FF11439C084FACAF974F1
+:10F4C000F4070038F0FBFDA4C18840BC59FAE0897C
+:10F4D0000011F8C8FFFC50B8FAC9F974780BF20AA9
+:10F4E0000038F14BFDA4F4C8FFFFFB480684C05868
+:10F4F000780BF8C8FFFC50B840589708FE9FFBD324
+:10F50000A5A00299EDB00005C501FAFA06845802DB
+:10F51000C2201437C084FACBF974F6070038F0E43F
+:10F52000FDA4C168FAC8F9801AD8FAC8FACC1AD86A
+:10F53000FAC8FBC8069A1AD80E9BFAC8F970FAC91D
+:10F54000FFC8404CF01F00E42FDDF8E40000300E4F
+:10F55000E08F03652FF11439C0A4FACAF974049E30
+:10F56000F4070038F0E4FDA4E08F035940BC59FAD9
+:10F57000E0890014F8C8FFF850B8F8E40000FAC9B0
+:10F58000F974F20A0038F0E5FDA4049EF4C8FFFF08
+:10F59000FB480684E08F0343F8C8FFF8F8E4000056
+:10F5A000049E50B8E08F033BEDB00004C101FAFAAD
+:10F5B00006845802C0801437C5E4FACBF974F60704
+:10F5C0000038C7582FF11439C754C508EDB00006EC
+:10F5D000C471FAFA06845802C1D01437C064FACB59
+:10F5E000F974F6070038C1D8FAC8F9801AD8FAC8F1
+:10F5F000FACC0E9B1AD8FAC8FBC8069A1AD8FAC8D1
+:10F60000F970FAC9FFC8404CF01F00B32FDD981BFA
+:10F61000C2482FF11439C084FACAF974F4070038CB
+:10F62000F10BFDA6C1A840BC59FAE0890013F8C847
+:10F63000FFFC50B87809FACBF974F60A0038F149A2
+:10F64000FDA4F7D9B010F4C8FFFFFB480684C058EA
+:10F65000F8C8FFFC981B50B8E9DBC010C438FAFAB0
+:10F6600006845802C1D01437C064FACAF974F4078A
+:10F670000038C1D8FAC8F9801AD8FAC8FACC0E9B5B
+:10F680001AD8FAC8FBC8069A1AD8FAC8F970FAC983
+:10F69000FFC8404CF01F00902FDD780BC2282FF1DF
+:10F6A0001439C084FAC9F974F2070038F0FBFDA4DC
+:10F6B000C18840BC59FAE0890011F8C8FFFC50B875
+:10F6C000FAC9F974780BF20A0038F14BFDA4F4C8BA
+:10F6D000FFFFFB480684C058780BF8C8FFFC50B801
+:10F6E0001694300E1C95E08F029A0298FAFA06845E
+:10F6F0005802C1C01437C064FACBF974F607003859
+:10F70000C1C8FAC8F9801AD8FAC8FACC1AD8FAC807
+:10F71000FBC8069A1AD80E9BFAC8F970FAC9FFC836
+:10F72000404CF01F006D2FDDC2182FF11438C0843B
+:10F73000FACAF974F4070038F0FCFDA4C18840BC93
+:10F7400059FAE0890011F8C8FFFC50B8FAC9F974F9
+:10F75000780CF20A0038F14CFDA4F4C8FFFFFB4816
+:10F760000684C058F8C8FFFC50B8780C3308FB6812
+:10F77000068837881894FB680689A1B04D78300553
+:10F78000302E5088E08F024B300BFB6B068B0298BB
+:10F79000FAFA06845802C1D01437C064FACAF97460
+:10F7A000F4070038C1D8FAC8F9801AD8FAC8FACCD8
+:10F7B0001AD8FAC8FBC80E9B1AD8069AFAC8F9706C
+:10F7C000FAC9FFC8404CF01F00442FDD7807C2285B
+:10F7D0002FF11438C084FAC9F974F2070038F0F731
+:10F7E000FDA4C18840BC59FAE0890011F8C8FFFCAB
+:10F7F00050B87807FACBF974F60A0038F147FDA43F
+:10F80000F4C8FFFFFB480684C058F8C8FFFC78071F
+:10F8100050B840AA580AC0F5300B0E9CF01F0030BB
+:10F82000E0800287F807010340A91233E0890281D2
+:10F83000E08F02800E9C3002E08F025CA5A002994E
+:10F84000EDB00005C4E1FAFA06845802C1E01437AD
+:10F85000C064FACBF974F6070038C1E8FAC8F98039
+:10F860001AD8FAC8FACC1AD8FAC8FBC8069A1AD815
+:10F870000E9BFAC8F970FAC9FFC8404CF01F001679
+:10F880002FDDF8E40000C2482FF11439C084FACA11
+:10F89000F974F4070038F0E4FDA4C1A840BC59FA9B
+:10F8A000E0890012F8C8FFF850B8F8E40000FAC97F
+:10F8B000F974F20A0038F0E5FDA4F4C8FFFFFB4834
+:10F8C0000684C068F8C8FFF8F8E4000050B8301E9D
+:10F8D000CA5900008002E84C8003DFA880031D5451
+:10F8E000EDB00004C101FAFA06845802C080143752
+:10F8F000C5E4FACBF974F6070038C7582FF114396C
+:10F90000C754C508EDB00006C471FAFA068458025F
+:10F91000C1D01437C064FACBF974F6070038C1D8E7
+:10F92000FAC8F9801AD8FAC8FACC0E9B1AD8FAC8C5
+:10F93000FBC8069A1AD8FAC8F970FAC9FFC8404C31
+:10F94000F01F008B2FDD981BC2482FF11439C084A3
+:10F95000FACAF974F4070038F10BFDA6C1A840BC3F
+:10F9600059FAE0890013F8C8FFFC50B87809FACBBF
+:10F97000F974F60A0038F149FDA4F7D9B010F4C8BB
+:10F98000FFFFFB480684C058F8C8FFFC981B50B81E
+:10F99000E9DBC010C438FAFA06845802C1D0143723
+:10F9A000C064FACAF974F4070038C1D8FAC8F980FB
+:10F9B0001AD8FAC8FACC0E9B1AD8FAC8FBC8069A0D
+:10F9C0001AD8FAC8F970FAC9FFC8404CF01F00688D
+:10F9D0002FDD780BC2282FF11439C084FAC9F974CD
+:10F9E000F2070038F0FBFDA4C18840BC59FAE08959
+:10F9F0000011F8C8FFFC50B8FAC9F974780BF20A84
+:10FA00000038F14BFDA4F4C8FFFFFB480684C05842
+:10FA1000780BF8C8FFFC50B81694301E3005CFE8BC
+:10FA200002994D485088EDB00005C461FAFA068489
+:10FA30005802C1E01437C064FACBF974F6070038F5
+:10FA4000C1E8FAC8F9801AD8FAC8FACC1AD8FAC8A4
+:10FA5000FBC8069A1AD80E9BFAC8F970FAC9FFC8F3
+:10FA6000404CF01F00432FDDF8E40000CC782FF16C
+:10FA70001439C084FACAF974F4070038F0E4FDA41C
+:10FA8000CBD840BC59FAE0890012F8C8FFF850B84A
+:10FA9000F8E40000FAC9F974F20A0038F0E5FDA4B0
+:10FAA000F4C8FFFFFB480684CA98F8C8FFF8F8E4DA
+:10FAB000000050B8CA38EDB00004C101FAFA06845B
+:10FAC0005802C0801437C624FACBF974F607003800
+:10FAD000C7982FF11439C794C548EDB00006C4B1DA
+:10FAE000FAFA06845802C1D01437C064FACBF9740C
+:10FAF000F6070038C1D8FAC8F9801AD8FAC8FACC83
+:10FB00000E9B1AD8FAC8FBC8069A1AD8FAC8F97018
+:10FB1000FAC9FFC8404CF01F00162FDD981BC248E1
+:10FB20002FF11439C084FACAF974F4070038F10BC4
+:10FB3000FDA6C1A840BC59FAE0890013F8C8FFFC33
+:10FB400050B87809FACBF974F60A0038F149FDA4E7
+:10FB5000F7D9B010F4C8FFFFFB480684C058F8C8B6
+:10FB6000FFFC981B50B8E9DBC010C4788002E84C59
+:10FB70008003DFA8FAFA06845802C1D01437C064A3
+:10FB8000FACAF974F4070038C1D8FAC8F9801AD84B
+:10FB9000FAC8FACC0E9B1AD8FAC8FBC8069A1AD82B
+:10FBA000FAC8F970FAC9FFC8404CF01F00A42FDD55
+:10FBB000780BC2282FF11439C084FAC9F974F207FE
+:10FBC0000038F0FBFDA4C18840BC59FAE08900115F
+:10FBD000F8C8FFFC50B8FAC9F974780BF20A00387B
+:10FBE000F14BFDA4F4C8FFFFFB480684C058780B16
+:10FBF000F8C8FFFC50B816943005EBE41008300B41
+:10FC00005F18E1E80008F6081800C0703308FB66CA
+:10FC10000689A1B0FB680688302E300AFB6A068B85
+:10FC200040A95809C025A7D040A8FAC3F98C5808A4
+:10FC30005F19EBE41008300B5F181248F608180043
+:10FC4000C5C03018F00E1800C070C0833028F00E08
+:10FC50001800C4C1C3880696C2780697F1D4C003C1
+:10FC6000F0CCFFD00EFCE80A1603EA0B1603F5E50C
+:10FC700011DA1695149458045C25CF11EDB00000EC
+:10FC8000C4713308F00C1800C4300EF8C418F01F0B
+:10FC9000006C2D0A0A9BAC8A30A8089A3009F01F24
+:10FCA000006914941695ECCC000130A83009089A2C
+:10FCB0000A9B189658945C25FE9BFFEB1897E8C8A2
+:10FCC000FFD0C2380697408AF1D4C004F408070870
+:10FCD0000EF8E80A1604EA0B1604F5E511CA1695A3
+:10FCE000149458045C25CF01C1384D7C40A218976C
+:10FCF000F01F00561893C1E8580EC091EDB00000F7
+:10FD0000C061FAC7F98D3308AE88C02806970E1374
+:10FD100040A2C1085806E08001DF3009FB66064CAE
+:10FD2000FB69068BFAC7F9B430023013C03840A320
+:10FD30003002E6020C48300B50780099FB38068BF5
+:10FD4000E2190002F6081800FBFA1007F7BA01FFE3
+:10FD5000FBFA1A0750295809FBF81007F7B801FEFB
+:10FD6000FBF81A07009BE21B0084503BC4914066DD
+:10FD7000407A14165806E089001DC42840494B48B3
+:10FD8000310AFB4C067C9308931AFB4B0678587B90
+:10FD9000E08900042F89C0B8FACAF98C400B401CD6
+:10FDA000F01F002CE08101A6FAC9F9F450492106A0
+:10FDB000FAF8067CFAF90678F0CCFFF0F2CBFFFFF8
+:10FDC0004A3A5906FE99FFDC0C08404BFB48067C7A
+:10FDD000970AF2C8FFFF9716FB4806785878E08923
+:10FDE00000052F8B504BC0C8FACAF98C400B401C41
+:10FDF000F01F0018E081017EFACAF9F4504AFB387E
+:10FE0000068B3009F2081800C310FAF8067C2FF8A8
+:10FE1000FB48067CFAC8F975FAF90678404B2FF9C9
+:10FE20009708FB490678301897185879E08900142C
+:10FE30002F8B504BC1B800008002E84C800367B0A4
+:10FE40008002CF448003DFBC8002E3E08003E0E86F
+:10FE50008002EB68FACAF98C400B401CF01F006A64
+:10FE6000E0810148FACAF9F4504A40295809C220F1
+:10FE7000FAF8067C2FE8FB48067CFAC8F978FAF90C
+:10FE80000678404B2FF99708FB49067830289718D9
+:10FE90005879E08900052F8B504BC0C8FACAF98CFD
+:10FEA000400B401CF01F0058E0810124FACAF9F40D
+:10FEB000504A4039E0490080C4A14066407810169D
+:10FEC0005806E089001EC438404A4D093108FB4CF1
+:10FED000067C95099518FB4B0678587BE089000550
+:10FEE0002F8A504AC0C8FACAF98C400B401CF01F38
+:10FEF0000046E08100FFFACBF9F4504B2106FAF8F6
+:10FF0000067CFAF90678F0CCFFF0F2CBFFFF4BFA53
+:10FF10005906FE99FFDB0C08404BFB48067C970A0C
+:10FF2000F2C8FFFF9716FB4806785878E08900056D
+:10FF30002F8B504BC0C8FACAF98C400B401CF01FE5
+:10FF40000032E08100D7FACAF9F4504AE40301060E
+:10FF50005806E089001DC44840494AC8310AFB4C94
+:10FF6000067C9308931AFB4B0678587BE0890005C2
+:10FF70002F895049C0A8FACAF98C400B401CF01FC9
+:10FF80000022E08100B750422106C038FAC2F9F4DD
+:10FF9000FAF8067CFAF90678F0CCFFF0F2CBFFFF16
+:10FFA00049AA5906FE99FFDA0C08404BFB48067C2B
+:10FFB000970AF2C8FFFF9716FB4806785878E08941
+:10FFC00000052F8B504BC0C8FACAF98C400B401C5F
+:10FFD000F01F000DE081008EFACAF9F4504AFAF8D9
+:10FFE000067C06084049FB48067C9307FAF8067829
+:10FFF00093132FF8FB4806785878E0890009129B84
+:02000004800377
+:100000002F8BC0E88002EB688003DFD8FACAF98C36
+:10001000400B401CF01F003DC6C1FACBF9F4E210C2
+:100020000004C3F04066407810165806E0890017B7
+:10003000C388FB4E067C97009712FB4C0678587CD1
+:10004000E08900042F8BC088069A400B401CF01FEB
+:10005000002FC4F10E9B2106C0784AD03102FAC3AA
+:10006000F98CFAC7F9F4FAF8067CFAF90678F0CEBA
+:10007000FFF0F2CCFFFF4A6A5906FE99FFDC0C083C
+:10008000970A9716FB48067CFB4C0678587CE08A5A
+:100090000009FACAF98C400B401CF01F001CC291E9
+:1000A0004059407B406AF60A0C4810095059FAF84A
+:1000B000067C5808C080FACAF98C400B401CF01F1F
+:1000C0000013C1713008FACBF9F4FB480678504BA5
+:1000D000FE9FF5E9FAF8067C5808C080401CFACA71
+:1000E000F98C400BF01F0009C0413008FB4806782E
+:1000F000400A9468EDB80006C0313FF95059405CA1
+:10010000FE3DF974D83200008002EB688003E0E81D
+:10011000D431FACD01DC1690500C300B1292501AEB
+:10012000502B503B1691505B506B1694401A15891A
+:1001300057695809E08007972FFA4D88501A700ABE
+:10014000F4090708E2180008C1D060185808E089CF
+:100150000007009B400CF01F0052CE9160084CFB42
+:100160001189F0CAFFFF7608F0090708EDB800030F
+:10017000CDE16018810A2018403A81182FFA503AD0
+:10018000CE5BE0490025E081008D1093029610952A
+:10019000504836CE344C358B3397401811395018AF
+:1001A0003648F0091800E08000C2E08B0041F809F1
+:1001B0001800E08000BBE08B0020EE091800E08B07
+:1001C00001E43308F0091800E082009A3258F0097F
+:1001D0001800C670E08B000B5809E08007423248D7
+:1001E000F0091800E08101D1C91832A8F0091800FF
+:1001F000E08101CBC738F6091800E08000AEE08B43
+:10020000000C34C8F0091800C76034F8F009180071
+:10021000E08101BBC97835B8F0091800E08000A47E
+:100220003638F0091800E08101B0CA7836F8F009D4
+:100230001800E0800089E08B00173698F00918005C
+:10024000C7B0E08B00083688F0091800E081019DF6
+:10025000C548FC091800C44036E8F0091800E081E0
+:100260000194C9783738F0091800C130E08B0008D4
+:100270003708F0091800E0810188C8383758F009BC
+:100280001800C6803788F0091800E081017EC64852
+:1002900050833027C85900000000049C80031D6C67
+:1002A00060185808E0890008009B400CF01F006AA5
+:1002B000E08106D0600A401B1588F739FFFFF2087D
+:1002C0001800E08106D0F4C8FFFF403A81082FFAF9
+:1002D0006018503A20188118C2ABA5A5C5FB40197B
+:1002E0001388FC081800C0512FF9A1B55019C56B2F
+:1002F000A1A5C54BA1B5C52BA3A5C50BE603002839
+:10030000A1782308F0090003C49BE0430020E08BA0
+:100310000008E6C60001301830035048C3FB3168BE
+:10032000400B9738E08F0696A1A54CCA5083506ABF
+:10033000303730A9C0D84C98508350683037300BD4
+:10034000C2E9A1A54C6A5083506A303730895059B0
+:10035000C2794C38C2094C2AA9B5506A508330374B
+:100360003109CF6B401BFACCFFD85083A7A5F01FF3
+:10037000003D3017501CC149A7A550833007C10963
+:100380004B78E8150220506850833037310BC07924
+:10039000EDB50004FE90FECCEDB50002C461404A0C
+:1003A000580AC2000836C064FAC9FE24F2060028C2
+:1003B000C228FAC8FED8049AF004002B0899150840
+:1003C00016A82FF91236CFC4E80811FF2FE80C0841
+:1003D000ECC4FFFFE4080022FAC8FED8F006032AA6
+:1003E000C218E2CBFFFF0831C094FACAFE2416916E
+:1003F000F4060028F0FAFF4CC158640CE4C9FFFC75
+:1004000059F4E089000D1292189AFAC9FE24169147
+:10041000F20400282FF4F14CFF4CC048189A1691B2
+:1004200012924038B408C83AEDB50000C1C1404B43
+:10043000580BE08000860836C665FAC8FED8049AD4
+:10044000F004002B0899150816A82FF91236CFC40E
+:10045000C6A8000080031D6C8002E5CC8003231C2D
+:1004600080031E9CE2150002C49040485808C20058
+:100470000836C064FACBFE24F6060028C228FAC863
+:10048000FED8049AF004002B0899150816A82FF935
+:100490001236CFC4E80811FF2FE80C08ECC4FFFFA8
+:1004A000E4080022FAC8FED8F006032AC218E2CBFC
+:1004B000FFFF0831C094FACAFE241691F406002802
+:1004C000F0FAFF4CC158640CE4C9FFFC59F4E08910
+:1004D000000D1292189AFAC9FE241691F20400280F
+:1004E0002FF4F14CFF4CC048189A169112924038E4
+:1004F0009518BF589508FE9FFE1B404B580BC20035
+:100500000836C064FACAFE24F4060028C228FAC8D5
+:10051000FED8049AF004002B0899150816A82FF9A4
+:100520001236CFC4E80811FF2FE80C08ECC4FFFF17
+:10053000E4080022FAC8FED8F006032AC218E2CB6B
+:10054000FFFF0831C094FAC9FE241691F206002874
+:10055000F0FAFF4CC158640CE4C9FFFC59F4E0897F
+:10056000000D1691189AFACBFE241292F604002878
+:100570002FF4F14CFF4CC048189A16911292403952
+:100580009509FE9FFDD5F4090708EDB80000C021CC
+:10059000A1A54C8850685083303730AB505B601851
+:1005A0005808E0890008009B400CF01F0043E081E0
+:1005B0000551EDB50006C131C1D860182018811869
+:1005C0005808E08A0004810AC078009B400CF01FA4
+:1005D000003AE081053F403A2FFA503A60084B7BE1
+:1005E0001189F0CAFFFF7608F0090708EDB800038B
+:1005F000CE505817E080012CE08900065807C0B0A3
+:10060000FE9FFD965827E08001C85837FE91FD9067
+:10061000E08F032B5803F9B3000150830A93E213D0
+:100620000010EDB50000E081009E5803C0300E952B
+:10063000C4A8404A580AC2000836C064FAC9FE2459
+:10064000F2060028C228FAC8FED8049AF004002B4B
+:100650000899150816A82FF91236CFC4E80811FF1B
+:100660002FE80C08ECC4FFFFE4080022FAC8FED80B
+:10067000F006032BC278E2CAFFFF0831C094FACB20
+:10068000FE241491F6060028F0FBFF4CC1B8640C60
+:10069000E4C9FFFC59F4E08900131491189BFACACD
+:1006A000FE241292F40400282FF4F14CFF4CC0A851
+:1006B0008002E5CC80031D6C0000049C189B149103
+:1006C000129216953006FAC7FE304CC972081036E1
+:1006D000E08004C060081189FAC8FE240C08F169A2
+:1006E000FFCC60182018811860082FF8308A810824
+:1006F000300B0E9CF01F00422FF60E980C99FACA90
+:10070000FE580A9B400CF01F003F5BFCE08004A2F7
+:10071000580CC0515803C0518B03C0385BECC0E08B
+:100720004038408B0C08201B5803F9B60100F7B580
+:1007300000FCE60617005038508B60185808E08916
+:10074000000B009B400CF01F0030C0505806C060EA
+:10075000E08F0480408A580ACB915803FE91FCE850
+:10076000C7185803C1C060196008408B1639C1040E
+:10077000121B1208508B81081207009B400CF01FBF
+:100780000022CF205807E0810103E08F0463408AF4
+:1007900014081419810881191407CF984048580883
+:1007A000C2000836C064FACBFE24F6060028C22830
+:1007B000FAC8FED8049AF004002B0899150816A868
+:1007C0002FF91236CFC4E80811FF2FE80C08ECC44B
+:1007D000FFFFE4080022FAC8FED8F006032CC27816
+:1007E000E2CAFFFF0831C114FAC9FE241491F206CF
+:1007F0000028F0FCFF4CC1B8000009AC8002DE9A72
+:1008000080031CF480031D6C640CE4C9FFFC59F4E4
+:10081000E089000CFACBFE241491F6040028129211
+:10082000F14CFF4C2FF4C03814911292408A009979
+:10083000301BF01F00CEE080040D403AF80A000A99
+:10084000503A40292FF95029FE9FFC725803F9B302
+:1008500000FF5083E2150010C27030070E96C138B9
+:1008600060188109201881182FF7408B0E3BE0801B
+:10087000008F5808E0890008009B400CF01F00BC66
+:10088000E08100866008FACAFE24F0C9FFFF1188E3
+:10089000F4080008F138FE4CEC081800CE21580787
+:1008A000C761E08F03E040495809C2000836C064C0
+:1008B000FACBFE24F6060028C228FAC8FED8049A0D
+:1008C000F004002B0899150816A82FF91236CFC48A
+:1008D000E80811FF2FE80C08ECC4FFFFE408002231
+:1008E000FAC8FED8F0060327C218E2CAFFFF083193
+:1008F000C094FAC9FE241491F2060028F0F7FF4CC8
+:10090000C158640CE4C9FFFC59F4E089000DFACB2E
+:10091000FE241897F604002814911292F14CFF4C13
+:100920002FF4C0481897149112920E963005C17892
+:1009300060182018811813380CC88109408A580A99
+:10094000C1D060185808E089000B009B400CF01FD4
+:100950000088C0500E36C121E08F037C40892019E9
+:1009600050896008FACBFE2410991188F608000817
+:10097000F138FE4CEA081800CDC1EC070107E08011
+:100980000372402A2FFA502A3008AC8840390E09E9
+:100990005039FE9FFBCD5803F9B300FF5083F1D5CA
+:1009A000C0010A93E21300105808E08000BC58030D
+:1009B000C040FAC5FE28C42840485808C20008367E
+:1009C000C064FACBFE24F6060028C228FAC8FED876
+:1009D000049AF004002B0899150816A82FF912366E
+:1009E000CFC4E80811FF2FE80C08ECC4FFFFE408AF
+:1009F0000022FAC8FED8F006032CC1F8E2CAFFFFB5
+:100A00000831C094FAC9FE241491F2060028F0FCC3
+:100A1000FF4CC138640CE4C9FFFC59F4E089000CB8
+:100A2000FACBFE241491F60400281292F14CFF4CEC
+:100A30002FF4C0381491129218953006FAC7FE3080
+:100A4000C5784CC972081036E0800304FAC8FE2449
+:100A50000C08F16AFFCC60182018811860082FF884
+:100A6000308A8108300B0E9CF01F00432FF60E9841
+:100A70000C99FACAFE580A9B400CF01F00405BFC20
+:100A8000E08002E8580CC0318B0CC0385BECC230FF
+:100A90006A0CF01F003BC120FAC8FE240C08FAC6FD
+:100AA000FE59F0C70035C0780F8B009A2017400C14
+:100AB000F01F00340C37CF91C2C84038408B0C086F
+:100AC000201B5803F8061710F7B500FCE6061700C0
+:100AD0005038508B60185808E089000B009B400C80
+:100AE000F01F0023C0505806C140E08F02B3408A77
+:100AF0006008580A5F19118A4A3B7608F00A07080D
+:100B0000EC180008F3E802393008F0091800C9A110
+:100B10005803FE91FB0D402B8B032FFB502BFE9FA8
+:100B2000FB075803C3201097C1186018810A2018CA
+:100B300081182FF7408A0E3AC1405808E089000713
+:100B4000009B400CF01F000AC0C1600848EB1189EF
+:100B5000F0CAFFFF7608F0090708EDB80003CE6180
+:100B6000403A0E0AE08F02698003156C80031D6C09
+:100B7000000009AC8002DE9A80031CF480031BF4A1
+:100B8000800324B40000049C40495809C200083680
+:100B9000C064FACBFE24F6060028C228FAC8FED8A4
+:100BA000049AF004002B0899150816A82FF912369C
+:100BB000CFC4E80811FF2FE80C08ECC4FFFFE408DD
+:100BC0000022FAC8FED8F0060327C218E2CAFFFFC7
+:100BD0000831C094FAC9FE241491F2060028F0F7F7
+:100BE000FF4CC158640CE4C9FFFC59F4E089000DC6
+:100BF000FACBFE241897F604002814911292F14CB7
+:100C0000FF4C2FF4C0481897149112920E96C138D9
+:100C100060182018811815380CC8810A408A580AB3
+:100C2000C17060185808E0890007009B400CF01F55
+:100C30000050C0E16008408920195089109A11893C
+:100C40004CCB7608F0090708EDB80003CE214038F8
+:100C5000402A0E182FFAEC080008502A50383008A5
+:100C6000AC88FE9FFA65E6C80001E0480026E08BEC
+:100C700000043003C0483279227350890A97FAC8B9
+:100C8000FE58300BE8170D805098507B4BA5C95883
+:100C90006008339A1189F4091800E08B0016338834
+:100CA000F0091800C5023308F0091800C290E08B63
+:100CB000004632B8F0091800C55032D8F0091800C3
+:100CC000E0810080C4F8358BF6091800C560E08B20
+:100CD000000AF2C80041305AF4081800E08B007294
+:100CE000C3A83618F0091800C6C3366BF6091800F9
+:100CF000E0880032378AF4091800C631C3E8EDB73E
+:100D0000000BC46140585808C041308BA9B7505BF4
+:100D1000EDB7000AC041E017FA7FC3A84079580335
+:100D2000F7B30101FBFA1008F7BA01FFFBFA1A0842
+:100D30002FF9E017FC7F5079C2E84058EA08041800
+:100D40005058C0D8405BEA0B041B505B588BE089BD
+:100D50000007C378405A58AAE08A0034E017F47FAD
+:100D6000C178EDB70007C2D1A7D7C12880031D6C99
+:100D70000000049C8003E0F80E98E2180600E048AA
+:100D80000200C1F1A9D73108E81705005058409B6F
+:100D900016C9509B6018201881185808E08A000670
+:100DA00060082FF88108C068009B400CF01F00A469
+:100DB000C081408A201A508A40895809FE91FF6AF2
+:100DC000EDB70008C141FAC8FE58409B103BE088CF
+:100DD00000091699009A137B400C5099F01F009956
+:100DE000FAC8FE58409B103BE080013D0E9AE21A83
+:100DF0000010E08101194099FAC5FE58B28A0A9B99
+:100E00004059400C40685D18189EEDB70005C1813F
+:100E1000404B580BE08000E60836C064FACAFE2456
+:100E2000F4060028CE78FAC8FED8049AF004002B05
+:100E30000899150816A82FF91236CFC4CC58EDB76B
+:100E40000002C431404A580AC2000836C064FAC9D8
+:100E5000FE24F2060028C228FAC8FED8049AF0043C
+:100E6000002B0899150816A82FF91236CFC4E808E8
+:100E700011FF2FE80C08ECC4FFFFE4080022FAC8B9
+:100E8000FED8F006032CC1F8E2CAFFFF0831C09477
+:100E9000FACBFE241491F6060028F0FCFF4CC13872
+:100EA000640CE4C9FFFC59F4E089000C149112921F
+:100EB000FACAFE24F40400282FF4F14CFF4CC03889
+:100EC00014911292B80ECAC8F5D7C001C13040497A
+:100ED0005809E08000870836C675FAC8FED8049A1B
+:100EE000F004002B0899150816A82FF91236CFC464
+:100EF000C6B8E2170002C5304D3840691039C071DC
+:100F00000A9B4059400CF01F0051C0680A9B405991
+:100F1000400CF01F004F40485808C2000836C0641B
+:100F2000FAC9FE24F2060028C228FAC8FED8049C9A
+:100F3000F004002E089919081CA82FF91236CFC406
+:100F4000E80811FF2FE80C08ECC4FFFFE4080022BA
+:100F5000FAC8FED8F006032CC1F8E2CEFFFF083134
+:100F6000C094FAC9FE241C91F2060028F0FCFF4C44
+:100F7000C138640CE4C9FFFC59F4E089000C1292FA
+:100F80001C91FAC9FE24F20400282FF4F14CFF4C06
+:100F9000C0381C911292991A990BC42840485808DD
+:100FA000C2000836C064FACBFE24F6060028C22828
+:100FB000FAC8FED8049AF004002B0899150816A860
+:100FC0002FF91236CFC4E80811FF2FE80C08ECC443
+:100FD000FFFFE4080022FAC8FED8F006032CC1F88F
+:100FE000E2CAFFFF0831C094FAC9FE241491F20648
+:100FF0000028F0FCFF4CC138640CE4C9FFFC59F434
+:10100000E089000CFACBFE241491F6040028129219
+:10101000F14CFF4C2FF4C03814911292990E402AD3
+:101020002FFA502AFAC8FE584039407BF2080108CE
+:10103000409A1608100A503AFE9FF87A80031D6CF9
+:10104000800324B48003231C8003219480031FE0C9
+:1010500040295809C0508068EDB80006C0313FF8FB
+:101060005028402C289DD832D421217D14971896E1
+:10107000129A10995807C064E068008B99383FFCB9
+:10108000C2185807EE0C1700F9B801FFEFD8E10CB1
+:101090003FF8BA78E0680208505C500B502C504B77
+:1010A000BA681A9B0C9CF01F00095BFCC044E06806
+:1010B000008B8D385807F9B90100FBF81000F1F9E1
+:1010C0001E002E9DD82200008002EB88D4011298C9
+:1010D0001499169A189B483C780CF01F0003D8020C
+:1010E0000000059880031068D4214B481896169785
+:1010F000700C580CC06078685808C031F01F003080
+:101100004B081037C0514AD870087007C0E84AE849
+:101110001037C0514A9870087017C0784AB8103715
+:10112000C0414A68700870278E69EDB90003C1E0BC
+:10113000EDB90004C401EDB90002C1516EDB580BDA
+:10114000C0A0EEC8FFBC103BC0400C9CF01F0020AC
+:1011500030088FD88E68E018FFDBAE6830088F1833
+:101160006E488F088E68A3B8AE686E485808C0B144
+:101170008E68E2180280E0480200C0500C9C0E9B72
+:10118000F01F00148E68F3D8C001C07030088F289B
+:101190006E585C388F68C088EDB80001F2081700FF
+:1011A000EFF810058F286E485808C0618E68EDB8BA
+:1011B0000007C021DC2AD82A00000598800313EC20
+:1011C0008003E11C8003E13C8003E15C8003163076
+:1011D00080031C1C4828700C2F4C5EFC00000598F6
+:1011E000D4211697189476485808C7E0580CC06068
+:1011F00078685808C031F01F003D4BD81037C03117
+:101200006807C0A84BB81037C0316817C0584BA842
+:101210001037E9F700028E6AEDBA0003C430ABBAAA
+:10122000AE6A6E185808E08900066F085808E08A10
+:10123000005C6EB85808C580E21A1000C0306F56C6
+:10124000C0F830196E8B089C5D1818965BFCC08145
+:10125000683859D8C4908E68A7A8AE68D8228E681E
+:10126000EDB80002C0916E1810166ED85808EFF84D
+:101270001010EDD8E1166EB8089C30090C9A6E8BF0
+:101280005D188E680C3CC281ABD8300CAE688F1CE8
+:101290006E488F088E68EDB8000CC261EF460054AE
+:1012A000D8226E455805C2006E09F1DAC0028F05DA
+:1012B000F9B80100EFF80005F20501068F28C11802
+:1012C0000C990A9A6EA86E8B089C5D181816580C1B
+:1012D000E08900078E68A7A83FFCAE68D8221805F1
+:1012E0005806FE99FFEFD82A800313EC8003E11C17
+:1012F0008003E13C8003E15CD401580CC071487864
+:10130000487B700CF01F0007D8024878189B700CBF
+:10131000F01F0003D80200008003DE7C800311E090
+:1013200080031A90000005985EFC5EFCD401483BE7
+:10133000F01F0003D80200008003569480031AE8CF
+:10134000D4211695F606105CECCBFFF4F01F0007D5
+:101350001897C0909915300B2F4C0C9A8F2C8F0B2F
+:10136000F01F00030E9CD8228002D86C8002DE9A07
+:10137000D42149C8189670076E685808C0410E9C61
+:10138000F01F0019EEC7FF2830056E2C6E19C068DB
+:101390009868EA081900C1202A4C2019CFA76E08C6
+:1013A0005808C071304B0C9CF01F00108F0CC030DF
+:1013B0006E07CECB30C88D38D8223008F948004CA3
+:1013C00099089928991899489958996899D899E845
+:1013D000F94800483FF8B8783018B868D8220000BB
+:1013E0008003DE7C800313EC80031340D431189417
+:1013F00078675807C4714A48301399A8F94700D84C
+:10140000F94700DCF94700E09963F01F0020890CE0
+:10141000089CF01F001E891C089CF01F001C680817
+:1014200030499107B069911791276819B0779147B2
+:1014300091579167918849654966919591A6496B45
+:10144000496A91BB91CA9307931793273098B26862
+:10145000B273312893CAB868892C9347935793671E
+:101460009389939593A693BB990799179927302849
+:10147000B87899CA9967999599A699BB9947995748
+:10148000998CD8328003132C8003137080031FBC07
+:1014900080031F8480031F5880031F48D4014858CD
+:1014A000169AFAC9FFFC189B700CF01F0003D802B3
+:1014B00000000598800328E0D4311490129116960C
+:1014C00010971893F20A02425802C0310491C418CE
+:1014D000580CC06078685808C031F01F001F49F8E8
+:1014E0001037C0316607C0A849D81037C031661719
+:1014F000C05849C81037E7F700026E185808C034C2
+:1015000030088F180C940495C138F01F00176E082E
+:101510000C080C040C158F080E9B069CF01F001382
+:10152000C070E4050109F2000D081091C1286E1683
+:101530006E08089C0C9A109B0C35FE9BFFE80A9ADB
+:10154000F01F00096E080A088F086E180A188F1815
+:10155000029CD832800313EC8003E11C8003E13C41
+:101560008003E15C8002DD1480031D6CD4011298BD
+:101570001499169A189B483C780CF01F0003D80267
+:1015800000000598800314B8D42116961897F01F10
+:1015900000234A3468287015E015FFFCEAC8FF9163
+:1015A0000C18E018FF80F0C60080E046007FE08A5B
+:1015B0000023300B0E9CF01F001B68280A08103C0B
+:1015C000C1A1EC0B11000E9CF01F00165BFCC17159
+:1015D000300B0E9CF01F00136829F809010858F819
+:1015E000E08A000AA1A8931848F8700948F8F80999
+:1015F000010991090E9CF01F000ED82A6829EA06FD
+:101600000108A1A89318489972080C180E9C930819
+:10161000F01F0007DA2A00008002DEA80000059C07
+:101620008002E1D8000009A8000078A08002DEAAAC
+:10163000D42116971895580BE08000CEF01F004C6F
+:10164000EECB000876184CB6109EEFD8C001A1CEA4
+:101650006C28F60E000A741CE01CFFFC103AC1D185
+:10166000F80E000A5807C0817608101B100A763958
+:1016700076289328913914988D2BA1A897184BE8B8
+:101680007008103AC0634BD80A9C700BF01F003CE6
+:101690000A9CF01F003CD822951C5807C030300728
+:1016A000C1087608101B100E7629ECC8FFF8103917
+:1016B000F9B70001F7F81003F1F91A02F3F81A0369
+:1016C000F40C00087018EDB80000C130180E58076F
+:1016D000C0C14A8874292F881039C071933B932B5D
+:1016E000972997393017C05874297438912993383D
+:1016F0001C98F60E090EA1A897185807C691E04E3F
+:1017000001FFE08B0013FC0A1603EC0A0038702975
+:1017100097389729933B912B6C19A34A3018F00AFC
+:10172000094810498D19C548FC0A1609584AE08B2A
+:101730000007FC081606F0CAFFC8C2F8594AE08B39
+:1017400000042A5AC2A8E04A0054E08B0007FC08B3
+:10175000160CF0CAFF92C218E04A0154E08B001444
+:10176000FC08160FF0CAFF89C18800008002DEA8BD
+:101770000000059C000009A40000789C80031588E7
+:101780008002DEAAFC081612E04A0554F9BA0B7E64
+:10179000F9B9087CF1D9E80AEC0A0039722C123C3C
+:1017A000C0D1A34A3018F00A09486C19104918989A
+:1017B0008D19C0A8782C123CC0607818E018FFFC86
+:1017C000103ECF9378389738972C993B912B0A9CF1
+:1017D000F01F0002D82200008002DEAAD431202DA2
+:1017E000500A501C169674285808E08001409668EC
+:1017F000EDB80003C04176485808C0D10C9B401C8E
+:10180000F01F009CC0808C68A7A84019AC68309875
+:101810009338C2A940098C6872001099E21900023D
+:10182000C2203007E06404000E95C04860056017D0
+:101830002F805807CFC0E0470400EE091780E80961
+:1018400017B00A9A6CA86C8B401C5D181817580CBE
+:10185000E08A01084009722818189328E0800107DF
+:101860001805CE8BF5D8C001C06012941292129167
+:101870001293C9B8149430211492C04860026014C5
+:101880002F805804CFC08C6C6C27189AE21A020083
+:10189000C5200E34C4031898E2180480C3C06C0835
+:1018A0006C4B6C59F00B0103F2090019F2010C08A2
+:1018B000E21C04001097E6C8FFFF08081037F00785
+:1018C0001730580CC1100E9B401CF01F006B189570
+:1018D000C150069A6C4BF01F00698C68E018FB7FC2
+:1018E000A7B8AC68C0F80E9A401CF01F00651895A8
+:1018F000C0916C4B401CF01F006330C840199338F6
+:10190000CB08EE0301088D578D288D45EA030008AA
+:1019100008978D080E34E8071730049B0E9A6C0C5C
+:10192000F01F00596C080E088D086C280E180897D7
+:101930008D28C2F80E345FB96C0C6C48103C5FB84F
+:101940001268F4081800C0E0049B0E9AF01F004EC5
+:101950006C080E080C9B8D08401CF01F004CC190B9
+:10196000C8086C591234C0A36CA8049A6C8B401C34
+:101970005D181897E089000EC748089A049BF01F6D
+:1019800000426C08080808978D086C2808188D28F4
+:10199000400972280E189328C6900E140E02C72B09
+:1019A0006002601430012F805804CFB05801C1117B
+:1019B000089A30AB049C3011F01F0035F9B90101D1
+:1019C000F9D9E108F1D2E113F9B80001E9D8E0034F
+:1019D0006C280833E6051780E80517B06C5BF6083D
+:1019E00000070E355F996C0C6C48103C5FB81268AC
+:1019F0003009F2081800C0E0049B0E9AF01F002284
+:101A00006C080E080C9B8D08401CF01F0020C19034
+:101A1000C2881635C0B516996CA8049A6C8B401C08
+:101A20005D181897E089000EC1C80A970A9A049BAE
+:101A3000F01F00156C080A088D086C280A188D28FC
+:101A40000E13C0710C9B401CF01F0010C0A106912A
+:101A5000400972280E189328C0900E140E02CA5B1B
+:101A60008C68A7A8AC683FFCC028300C2FEDD8329A
+:101A7000800310E88002D86C8002DD148002DEC48E
+:101A8000800316308002DE5C800311E080031D5469
+:101A9000D431300418931692E6C5FF28F01F0011C8
+:101AA00008903FF1C1886A286A16F0C7FFF4C0D8D1
+:101AB0008E08E0081900C0808E18E2081900C040A6
+:101AC000069C5D1218442A472016EECB000C5806DF
+:101AD000CF046A055805CE81F01F0003089CD83258
+:101AE000800313288003132AD43130041693F8C5D9
+:101AF000FF280891F01F00103FF2C1786A286A168B
+:101B0000F0C7FFF4C0C88E08E2081900C0708E1834
+:101B1000E4081900C0305D1318442A472016EECCA3
+:101B2000000C5806CF146A055805CE91F01F00032B
+:101B3000089CD832800313288003132AD401201D67
+:101B40004848189B1A9A700CF01F00032FFDD8020A
+:101B50000000059880031B58D431169314911894F3
+:101B6000F01F00214A1870065806C050300533DBBC
+:101B70000A9AC078089CF01F001E0C9CD8322FF5E2
+:101B8000E6050708F60818005F19F40818005F1842
+:101B90001268F4081800CF41C1C80E9C0A9A069B2F
+:101BA000F01F0014C1416C08F00500070F88E4081D
+:101BB0001800C0D148D87008EC080108A348089C58
+:101BC0008308F01F000BEECCFFFFD8322FC6C028D1
+:101BD00033D26C075807CE21089CF01F00050E9CDD
+:101BE000D8320000800355C0000009B0800355C200
+:101BF0008002E3F4E04C00FFE08800035EFD4858FB
+:101C00007008F00C07083089F1E9000C5EFC000058
+:101C10000000049C481C5EFC8003E17CD42120FD74
+:101C2000966816971894E2180002C3E1967BF00BB1
+:101C30001900C0551A9AF01F002BC1048E68E06984
+:101C40000400109A3005E21A0080ABB8580AF9B6C1
+:101C50000140F2061700AE68C1C84018E218F00053
+:101C6000E04820005F05E0488000C0E16EB949E827
+:101C70001039C0A18E68ABA8AE68E0680400EF48D8
+:101C800000501096C0688E68E0660400ABB8AE687D
+:101C90000C9B089CF01F00158E69C0D1EDB900099E
+:101CA000C1E0A1B9AE69EEC8FFB98F488F083018FE
+:101CB0008F58C158A7B948E88F4C8F56AE698F0C22
+:101CC00089A85805C0C08E7CF01F000AEFF81206E4
+:101CD000F9B90101F1D9E138EFF81C062F1DD8221E
+:101CE000800356AC80031F588002D86C8003132CED
+:101CF0008002E78CD42118961097580AC041149B93
+:101D00003019486AF01F00065BFCC06130088F087C
+:101D1000E068008A8D38D82280038BD480031D2090
+:101D2000201D58095F08580BFA0B1700580A5F1955
+:101D3000149C10693008F0091800C0303FECC098BE
+:101D4000580AC070158897081588F20818005F1C9B
+:101D50002FFD5EFCF7DBC008C068201A1988163812
+:101D60005E0C2FFC580ACFA15EFAD703D421169738
+:101D70001896580CC06078685808C031F01F0038B9
+:101D80004B881037C0316C07C0A84B781037C03172
+:101D90006C17C0584B581037EDF7000230088F18F9
+:101DA0008E69EDB90005C5A0EDB90002C1A0EDB97D
+:101DB0000004C060A7A93098AE698D38C4E8EDB9B9
+:101DC0000003C0B10E9B0C9CF01F0029C4718E68EB
+:101DD0008F6CA3D88F2CAE688E68A3A8AE68C1485C
+:101DE0006EDB580BC110EEC8FFBC103BC0400C9C12
+:101DF000F01F0020300C6F088FDC8F185808C0408F
+:101E00006EF88F08D8226E485808C0510E9B0C9C63
+:101E1000F01F00198E68F1D8C002C0604978498B64
+:101E2000700CF01F00186E4A6E980C9C8F0A6E5949
+:101E30006E8B5D188E688F1CADD8AE68580CE08A2A
+:101E40000003D82A580CC041A5B8AE68C0688E6897
+:101E5000A7A8AE6830088F18DC2ADC2A800313ECB0
+:101E60008003E11C8003E13C8003E15C800311E01E
+:101E70008003163080031C1C8003DE7C80031E84DC
+:101E800080031AE8D4019868E21800095898C02025
+:101E9000D80AF01F0002D802800312F8D431189734
+:101EA000173AE04A005EC0303009C038173A30199E
+:101EB0003008EE080B092FF8E0480100CFB1580AAE
+:101EC000C041F6CC0001D832129632D3EC16000194
+:101ED000300535D4C038109A1C9BEE0A0B06F6CE9E
+:101EE000FFFF17881C9CE6081800C090E80818003F
+:101EF000C1D0EA081800CF01169CD8321D8CE04CE6
+:101F0000005D5F08143C5F591248EA081800C030B1
+:101F100032DACE3BF4C8FFFFEE08000810C62FFAF5
+:101F2000183ACFD52FEB2FEECDDBD8321498F9DB52
+:101F3000C01F5C3A104AFC187FF0F9EA13FCF00C61
+:101F4000010CBF9C5EFCD703D401967BF01F0002FE
+:101F5000D8020000800347E4D4211697967BF01F37
+:101F600000098E681099ADC95BFCEFF90C06EFFC17
+:101F70001A15E0691000F1D9E138EFF81C06D822F3
+:101F8000800356D8D4219668169714941295E218B7
+:101F900001001896C0603029300A967BF01F0006B9
+:101FA0008E68ADC80A99089A8E7B0C9CAE68F01FAB
+:101FB0000003D822800356D8800347B8D42116974F
+:101FC000967BF01F0007C0656F581808EF48005453
+:101FD000D8228E68ADC8AE68D822000080035D6844
+:101FE000D431209D4D98502B7008503C501A1291BE
+:101FF0005048169205334049F2030708E2180008DA
+:10200000CFA1E043002DC04105333018C048E04364
+:10201000002BC0305058C0385058053358015F0C61
+:1020200059015F08300BF9E81008F6081800C1D014
+:10203000E0430030C1213788058AF00A18005F09A3
+:102040003588F00A18005F081049F6091800C050DA
+:10205000059331012FE2C098580CC070E043003066
+:10206000F9B10008F9B1010A40595809C0713FF6A9
+:10207000E067FFFFEA177FFFC0483006FC178000CB
+:10208000E208141F0C9A50080E9B02984009F01F9A
+:1020900000300E9B506A40090C9A0298F01F002DE8
+:1020A0000290FAEB001C3006300B3007169E4048B9
+:1020B000E6CC0030F0030709F1D9C001F9BA0137C5
+:1020C000F9BA0057EDB90002C060E60A010CF1D977
+:1020D000C002C300023CC2E4FAE8001C1036F2075A
+:1020E00013005FB8F1EB13F8FC081800C201FAE81E
+:1020F000001C1036F20713005F084069123C5F991C
+:102100001268FC081800C131EC00064AEE000248D3
+:102110004009F2060348F00B000B1894F805141F51
+:10212000E80A0006EA0B0047301BC0283FFB0533D6
+:10213000CBFB5BFBC17140585808C0D13FF6E0674C
+:10214000FFFFEA177FFFC0A80000049C800367B070
+:102150008002CF443006FC17800032284039933883
+:10216000C0A840585808C07030083009F006010671
+:10217000F207014740195809C0A0580BF9B801FFF0
+:10218000E5D8E10BFBFB00024018910B0C9A0E9B6B
+:102190002F7DD832D431208D4D18502B7008503CF3
+:1021A000501A12915048169205334049F20307081D
+:1021B000E2180008CFA1E043002DC04105333018DC
+:1021C000C048E043002BC0305078C0385078053309
+:1021D00058015F0C59015F08300BF9E81008F60848
+:1021E0001800C1D0E0430030C1213788058AF00AC9
+:1021F00018005F093588F00A18005F081049F609D1
+:102200001800C050059331012FE2C098580CC070DF
+:10221000E0430030F9B10008F9B1010AE209141FE6
+:10222000029850093FFA3FFBF01F002E4009FAEBDD
+:10223000001402983FFA3FFBF01F002B0290149EFF
+:10224000300B300630074048E6CC0030F003070979
+:10225000F1D9C001F9BA0137F9BA0057EDB9000256
+:10226000C060E60A010CF1D9C002C310023CC2F4FE
+:10227000FAE800141036F20713005FB83009F1EBEA
+:1022800013F8F2081800C201FAE800141036F20739
+:1022900013005F081C3C5F9912683009F2081800AF
+:1022A000C131EC00064AEE0002484009F20603483C
+:1022B000F00B000B1894F805141FE80A0006EA0B4F
+:1022C0000047301BC0283FFB0533CBEB5BFBC0D185
+:1022D000322840393FF693383FF7C1080000049C8C
+:1022E0008002CF44800367B040785808C07030083F
+:1022F0003009F0060106F207014740195809C0A04D
+:10230000580BF9B801FFE5D8E10BFBFB00024018C0
+:10231000910B0C9A0E9B2F8DD8320000D431203DAA
+:102320004C68501B502C500A12957000169E1D3B95
+:10233000E00B0708E2180008CFB1E04B002DC041C8
+:102340001D3B3014C088E04B002BC0301094C038C7
+:1023500010941D3B58055F0659055F083007EDE8EE
+:102360001008EE081800C1D0E04B0030C1213788BA
+:102370001D8AF00A18005F093588F00A18005F0806
+:102380001049EE091800C0501D9B31052FEEC09872
+:102390005806C070E04B0030F9B50008F9B5010AE5
+:1023A000300C3FF91897F2050D081891129210930E
+:1023B000E00B0709F6C60030F1D9C001F9BA0137C0
+:1023C000F9BA0057EDB90002C060F60A0106F1D96A
+:1023D000C002C1B00A36C194063C5FB8F1E713F8F9
+:1023E000E2081800C0F1063C5F0804365F991268E5
+:1023F000E2081800C071F80502483017EC08000C1C
+:10240000C0283FF71D3BCD5B5BF7C06132284029F8
+:102410000E9C9338C0485804FBBC01004008580883
+:10242000C0A05807F9B801FFFDD8E10BFBFB000184
+:102430004009930B2FDDD8320000049CD42116955F
+:1024400076DBEAC8FFBC103BC1B1E06B0400F01FB3
+:102450000017C2908BDCF8CBFC04E0680400F8CADB
+:10246000FC038BE8EAC9FFBAF8CCFC01C05813881A
+:102470002019B888201C163CCFB18B0AC1386AE6F7
+:10248000EC041501089AF01F000A1897C0C00C9AB6
+:10249000189BF80600060C9CF01F00068BE48B06C8
+:1024A0008BD7D82ADC2A00008002D86C8002DEC4D8
+:1024B0008002DD14D4211694149718965BFBC65045
+:1024C000580CC06078685808C031F01F00314B18B4
+:1024D0001037C0316C07C0A84AF81037C0316C17EC
+:1024E000C0584AE81037EDF700028E69A5D9AE69E9
+:1024F000EDB90002C140EDB90004C461EDB90003BB
+:10250000C0B10E9B0C9CF01F0026C3E18E688F6C3F
+:10251000A3D88F2CAE688E68A3A8AE68EBD4C00891
+:102520006ED85808C1006E196EE81039C0650C9C51
+:102530000E9BF01F001CC2816E0820188F08B0850A
+:102540000A94C0C86E495809C0C06E081238E088A5
+:10255000000911740A34C0518F086E182FF8C12871
+:102560006E18EF4800406E088FF8EEC8FFBC8FD899
+:1025700030388FE8EEC8FFBAEF6500468F080A943E
+:1025800030188F18C0283FF4089CD822800313EC21
+:102590008003E11C8003E13C8003E15C800311E0E7
+:1025A0008003243CD431206DFACCFFC4502B50184A
+:1025B000780178287810700B401C580BF40B17002A
+:1025C0005008402A12957806505AC2692FFB3009EC
+:1025D000178A325CF20A18005F18F80A18005F19AF
+:1025E00012683009F2081800CF21580AE080012251
+:1025F00030043FF808935048089208994CDCF209DF
+:10260000003816970F3AF80A07094CBC1208F80868
+:1026100007094CACF8080708503820195879E08BA6
+:1026200000F54C78F009032F3688F00A1800E08096
+:1026300000ED3718F00A1800C07034C8F00A18000E
+:10264000C051A3B3CE28A5B3CE080F8936C8F00970
+:102650001800C051A5B3EECBFFFFCD88A5A3CD5880
+:10266000EDD6C005367CF80A1800E08B00273658F6
+:10267000F00A1800C48234F8F00A1800C480E08B15
+:10268000000C3458F00A1800C3E03478F00A18003F
+:10269000C3A03448C0883588F00A1800C2C0E08B57
+:1026A00000073558F00A1800C351C3183638F00A2D
+:1026B0001800C2F03648C0E83708F00A1800C250C7
+:1026C000E08B000D36E8F00A1800C1F0E08B001432
+:1026D0003698F00A1800C1E1C0E83758F00A18002F
+:1026E000C0A03788F00A1800C0603738F00A180018
+:1026F000C111C0B8EDB30004C0A0EDB30005C09196
+:102700003022C0883042C0683032C0483012C02801
+:102710003002404A5BFAC040E00A0922C7685862AA
+:10272000E08B00746A09ECCAFFFF4868F002032FCF
+:102730008003E4608003E3D48003E3588003E1B8BE
+:102740008003E1D8F2C8FFF88B08F2E80000E20647
+:102750000838C0F8F2C8FFFC8B087208E206093896
+:10276000C088F2C8FFF88B08F2E80000E2060838DB
+:102770000E9B1496C4B860085BF8C071E06A0080D4
+:10278000300B009CF01F004EE8CC0001405A0E9B1D
+:10279000F40C0C4A504C505AC39860085BF8C07156
+:1027A000E06A0080300B009CF01F00452014405868
+:1027B0003009F0040C480E9BE00409295058C26807
+:1027C00016976A08F0C9FFFC8B0970080E9BE20699
+:1027D00009382FF6C1B8F4C40030C068E8040028F6
+:1027E0002FF7F20800140F885808C0F0F0C9003025
+:1027F0005899FE98FFF5C0982FF70F885808C050D9
+:1028000023085898FE98FFFA0E9B403930B8F0091B
+:102810001800FE91FEF5402C17880C3C5F49300AE9
+:10282000F40818005F181268F4081800FE91FED131
+:10283000402A0C9EE006002C178930084056F0090B
+:102840001800EC071700F4071710E20E003AC2A8B0
+:1028500078085838C1E0E08900075818C1A0582806
+:10286000C181C0585858C0C0C0B5C1386A09F2C843
+:10287000FFF88B08F2E80000F4E90000C1086A09DB
+:10288000F2C8FFF88B08F2E80000F4E90000C07815
+:102890006A08F0C9FFFC8B09700895082FFE2F8A83
+:1028A0002FCC0E3EFE9AFFD6401940084026930ECC
+:1028B000910BE206003C2FADD83200008002DE9A78
+:1028C000D421149774285808C0419518109CD82218
+:1028D000F01F000330088F188F28D822800317DCE0
+:1028E000D431FACD06CC504B51491497505CF01FAF
+:1028F000004B780C50DC405B580BC0707668580871
+:10290000C041169CF01F00464C68404A103AC05126
+:10291000405972095049C1284C38404B103BC051B6
+:10292000405A741A504AC0A84C0840491039FBF864
+:102930000005F1F80002FBF80A04404B9668EDB878
+:102940000003C04176485808C071404B405CF01FFE
+:102950000038E0810F284049926A1498E218001A62
+:1029600058A8C3F1927B3008F00B1900C3A5FB5B9C
+:1029700005E2404B7688FB4805F476A8FB4805FC49
+:10298000FAC8FFACFB4805E4FB4805D4E068040046
+:10299000A1DAFB4805E8FB4805DC3008FB5A05E0F6
+:1029A00041490E9AFB4805ECFAC7FA2C405C0E9B95
+:1029B000F01F002050ACC0950E9B405CF01F001E25
+:1029C00040AAF9BA01FF50AAFB0805E0EDB80006DD
+:1029D000E0810EEB40499268A7A8B268E08F0EE54F
+:1029E00030081090FB4806A0FB48069CFB4806C038
+:1029F000FB4806C4FAC8F9D05137FB480698109135
+:102A000050103FF85000FB48055450A050F05120A2
+:102A100051004133325AC12880031C14800313EC47
+:102A20008003E11C8003E13C8003E15C800310E84B
+:102A3000800328E0800311E02FF30788300BF408AF
+:102A400018005F19F60818005F181268F6081800D9
+:102A5000CF41413AE60A0106C1F0FAF806A00C0897
+:102A6000830AFB4806A08316FAF8069C2FF8FB4859
+:102A7000069C5878E08900042F81C0B8FACAF9682A
+:102A8000404B405CF01F0060E0810E88FAC1F9D035
+:102A900040A90C0950A90788300BF6081800E080FF
+:102AA0000E6F300A3FF9E6C8FFFFFB6B06CB509A6A
+:102AB00050C951380097149250BAC0683FFB513644
+:102AC00050CBC0283002413A1539513A5089C028BC
+:102AD00050B940882208E0480058E08B09C14CBB3F
+:102AE000F608032F4CAA0099512AE08F0828FB38DA
+:102AF00006CB3009F2081800CE713208C78840981A
+:102B0000A1A8C0F9413B1789F2C800305898E08B62
+:102B1000001E169A300B2FFAF2C80030F60B00296F
+:102B2000F009001B1539F2C800305898FE98FFF6DE
+:102B3000E0490024CC81E04B0020E0890E2F201BCF
+:102B4000FAF806C4103BC095C0E8FAF906C4E0CA1A
+:102B5000FFFF1230C1E5C268FAC9F934513AF20BED
+:102B60000038C1C8FAC8F940513A1AD8FAC8FAA8C8
+:102B70001AD8FAC8FBA4069A1AD8FAC8F930FAC9C2
+:102B8000FFA4408CF01F00232FDD780C50BCC258EE
+:102B9000FACBF9341490F6070038F0F8FD8850B8F5
+:102BA000C1C8414C59F9E0890013F8C8FFFC780C02
+:102BB000514850BCFACBF934F6090038F14CFD8885
+:102BC0001490F2C8FFFFFB4806C4C0787809F8C823
+:102BD000FFFC50B91490514840B85808FE94FF7556
+:102BE0005C3850B8409BA3ABCCE832B8FB6806CB4E
+:102BF000C6BB413A1539513A5089E049002AC0B064
+:102C0000300CC838800328C08003E1F48003DF94CF
+:102C1000800325A441381189F2C800305898E08B10
+:102C2000001F4136300B2FF6F2C80030F60B00299A
+:102C3000F009001B0D39F2C800305898FE98FFF6D5
+:102C4000E0490024FE91FF40E04B0020E0890DA602
+:102C5000201BFAF806C4103BC095C0D8FAF906C488
+:102C6000E0CAFFFF1230C1C5C258FACAF934F40BEA
+:102C70000038C1C8FAC8F9401AD8FAC8FAA81AD850
+:102C8000FAC8FBA4069A1AD8FAC8F930FAC9FFA400
+:102C9000408CF01F01662FDD780C50CCC288FAC939
+:102CA000F93414904136F2070038F0F8FD8850C826
+:102CB000C1E8414C59F9E0890014F8C8FFFC780CD0
+:102CC000514850CCFACBF934F6090038F14CFD8864
+:102CD0001490F2C8FFFF4136FB4806C4C08878094B
+:102CE000F8C8FFFC50C914904136514840C85808F4
+:102CF000FE95FEE65136CE8A413BF80C0028173A85
+:102D0000F208001C513B508A408923095899FE98CB
+:102D1000FFF53FF9F8090C4C50CCCDCA4098A7B844
+:102D20005098CD2A30094088413B2308173A513B3F
+:102D3000508AF2090029F0090019149823085898BC
+:102D4000FE98FFF3E04A0024FE91FEC4E049002013
+:102D5000E0890D24F2C700013012CB6A4099A3B973
+:102D6000C0E84098A7A8CDDB413B36CA1788F408D5
+:102D70001800C0712FFB4099513BA5B95099CA4A20
+:102D8000409BA5AB509BCA0A409AA5BA509AC9CAA3
+:102D90000098FAFE06C45802C1D01C37C064FAC9B4
+:102DA000F934F2070038C1D8FAC8F9401AD8FAC87D
+:102DB000FAA80E9B1AD8FAC8FBA4069A1AD8FAC821
+:102DC000F930FAC9FFA4408CF01F01182FDD19BBA0
+:102DD000C2482FF01C38C084FACBF934F60700380B
+:102DE000F13BFD8BC1A8414C59FEE0890013F8C8A6
+:102DF000FFFC51487809FACAF934F40E0038F14959
+:102E0000FD88F7D9C008FCC8FFFFFB4806C4C058BE
+:102E1000F8C8FFFC19BB5148FB6B0670E08F082611
+:102E20004098A5A8509800994098EDB80005C4C1F5
+:102E3000FAFE06C45802C1D01C37C064FACBF9347C
+:102E4000F6070038C1D8FAC8F9401AD8FAC8FAA863
+:102E50001AD8FAC8FBA41AD8FAC9FFA4FAC8F930DC
+:102E6000408C069A0E9BF01F00F12FDD7819C27876
+:102E70002FF01C39C0A4FACAF934F4070038F0F96D
+:102E8000FD8CF0FCFD88C1C8414C59FEE08900145E
+:102E9000F8C8FFF851487819FACBF934780CF60ED7
+:102EA0000038F149FD8CF14CFD88FCC8FFFFFB4860
+:102EB00006C4C068F8C8FFF878195148780C129A0F
+:102EC00012941895C9D84098EDB80004C101FAFED3
+:102ED00006C45802C0801C37C5A4FACAF934F407E6
+:102EE0000038C7182FF01C39C714C4C84098EDB873
+:102EF0000006C421FAFE06C45802C1D01C37C064C3
+:102F0000FAC9F934F2070038C1D8FAC8F9401AD81A
+:102F1000FAC8FAA80E9B1AD8FAC8FBA4069A1AD8BF
+:102F2000FAC8F930FAC9FFA4408CF01F00C02FDDA9
+:102F3000981BC6382FF01C39C084FACBF934F60739
+:102F40000038F10BFD8AC598414C59FEE089001309
+:102F5000F8C8FFFC51487809FACAF934F40E003871
+:102F6000F149FD88F7D9B010FCC8FFFFFB4806C443
+:102F7000C448981BC3F8FAFE06C45802C1D01C37D7
+:102F8000C064FAC9F934F2070038C1D8FAC8F94068
+:102F90001AD8FAC8FAA80E9B1AD8FAC8FBA4069A3F
+:102FA0001AD8FAC8F930FAC9FFA4408CF01F009F64
+:102FB0002FDD780BC2282FF01C39C084FACBF934EE
+:102FC000F6070038F0FBFD88C188414C59FEE089C6
+:102FD0000011F8C8FFFC5148FACAF934780BF40E16
+:102FE0000038F14BFD88FCC8FFFFFB4806C4C05801
+:102FF000780BF8C8FFFC51481694F605141F5804C6
+:103000005C25C0A430083009F0040104F205014534
+:1030100032D8FB6806CB301EE08F06A2009940989C
+:10302000EDB80003C3B1FAFE06C45802C1901C37C4
+:10303000C1A5FAC8F9401AD8FAC8FAA8069A1AD847
+:10304000FAC8FBA40E9B1AD8FAC8F930FAC9FFA433
+:10305000408CF01F00762FDD781A500AC6682FF0DA
+:103060001C39C094FAC9F934F2070038F0FBFD8C22
+:10307000500BC3A8414C59FEE089000E781AF8C8DD
+:10308000FFF8500A780CFAC9F9345148501CF20E76
+:10309000003AC3D878185008C458FAFE06C458023B
+:1030A000C1901C37C1A5FAC8F9401AD8FAC8FAA8C5
+:1030B0001AD8FAC8FBA41AD8FAC9FFA4FAC8F9307A
+:1030C000408C069A0E9BF01F00592FDD781950098D
+:1030D000C2C82FF01C39C0C4FACBF934F607003847
+:1030E000F0FAFD8C500AF0F8FD885018C208414CE7
+:1030F00059FEE0890016F8C8FFF878195148780C95
+:10310000FAC8F9345009501CF00E003A40081899DA
+:10311000F4E9FD88FCC8FFFFFB4806C4C088781BA3
+:10312000500BF8C8FFF85148780C501C4019400863
+:10313000129B109AF01F003E1896C190300830097B
+:10314000401B400AF01F003BC04032D8FB6806CB52
+:10315000409A4B99A7DA4B98408B509AE04B004825
+:10316000F0031750F20317403002C15840194008CD
+:10317000129B109AF01F0032C110409A4B19A7DA27
+:103180004B18408B509A0C92E04B0048F0031750BC
+:10319000F20317403037E08F067340CA5BFAC03144
+:1031A0003069C1284088408BE04800675F08E04BE9
+:1031B00000475F09300A1248F4081800C06040C98F
+:1031C0005809F9B9000150C9409BA9AB509B40195F
+:1031D0005809C085401A40093008503A502950E833
+:1031E000C098401B400AEE1B800032D9503B502A49
+:1031F00050E94088E04800665F09E04800465F0803
+:10320000F3E81007C04040C23039C238408BE04B71
+:1032100000655F08E04B00455F091248EE081800A2
+:10322000C14140C2C1580000800325A480035D94C1
+:103230008003641E8003E4408003E44480031F2C69
+:103240008003E4488003E44C40CAF4C2FFFF302905
+:10325000FAC8F94C1AD8FAC8F9441AD8FAC8F93C8D
+:103260001AD80498406B408C405AF01F01D9300B9B
+:103270002FDD18934089E04900675F18E049004757
+:103280005F191268F6081800C051409AEDBA0000A4
+:10329000C2C1E60200065807C13007893308F009A9
+:1032A0001800C0B130083009403B402AF01F01C966
+:1032B000FBB20001FBF20BAFFAF806BC1006403976
+:1032C0004028129B109A30093008F01F01C2C080BC
+:1032D000FB4606B4C05810C9FB4806B4C0283309E1
+:1032E000FAF806B40C38CF834089E04900675F08DC
+:1032F000E04900475F091248FAF906B40619510976
+:10330000300BF6081800C0D0FAF806BC5BD8C055E0
+:1033100040CA1438E08A0072408920295089C06868
+:103320004088E0480065E0890045FAF806BC408B1B
+:10333000F0C90001FB6B06ACFB4906BCC0475C3919
+:1033400032D8C02832B8FB6806AD5899E08A001A16
+:10335000FACEF95530AC1C9BF20C0C08F2CAFFD027
+:1033600016FA10995898FE99FFF9169A2D08FAC97D
+:10337000F95214F8C038153812C81C3ACFD3C0A877
+:10338000F2C8FFD0FAC9F950FB6806AF3308FB68F2
+:1033900006AEFAC8F954F208010850F8410AF00ADA
+:1033A0000007581AE08900364099F1D9C001C2F8E7
+:1033B0004088E0480066C231FAF706BC5807E08A48
+:1033C000001140CB580BC051409AEDBA0000C2B179
+:1033D000EEC8FFFF40C9F009000736685088C238C0
+:1033E00040CB580BC071409AEDBA0000C030301786
+:1033F000C1A840C72FE7C17836795089FAF706BCD3
+:1034000041081037C085409BF1DBC0015808C0B0AF
+:103410002FF7C098EE081102410A5807F9B80901C0
+:10342000F00A000740E95809E080052932D8FB6816
+:1034300006CBE08F052400994098EDB80005C461E3
+:10344000FAFE06C45802C1D01C37C064FACBF93466
+:10345000F6070038C1D8FAC8F9401AD8FAC8FAA84D
+:103460000E9B1AD8FAC8FBA4069A1AD8FAC8F930E3
+:10347000FAC9FFA4408CF01F01582FDD780BC22839
+:103480002FF01C39C084FACAF934F4070038F0FB75
+:10349000FD88C188414C59FEE0890011F8C8FFFC45
+:1034A0005148780BFAC9F934F20E0038F14BFD8817
+:1034B000FCC8FFFFFB4806C4C058F8C8FFFC780BE7
+:1034C000514840A89718BF58C9084098EDB8000463
+:1034D000C4A0409BEDBB0006C461FAFE06C45802BE
+:1034E000C1D01C37C064FACAF934F4070038C1D817
+:1034F000FAC8F9401AD8FAC8FAA80E9B1AD8FAC81E
+:10350000FBA4069A1AD8FAC8F930FAC9FFA4408C6D
+:10351000F01F01312FDD780BC2282FF01C39C08439
+:10352000FAC9F934F2070038F0FBFD88C188414C34
+:1035300059FEE0890011F8C8FFFC5148780BFACA1F
+:10354000F934F40E0038F14BFD88FCC8FFFFFB484E
+:1035500006C4C058F8C8FFFC780B514840A9B6090A
+:10356000FE9FFA59FAFE06C45802C1D01C37C06447
+:10357000FACBF934F6070038C1D8FAC8F9401AD89E
+:10358000FAC8FAA80E9B1AD8FAC8FBA4069A1AD849
+:10359000FAC8F930FAC9FFA4408CF01F010F2FDDE3
+:1035A000780BC2282FF01C39C084FACAF934F4070A
+:1035B0000038F0FBFD88C188414C59FEE0890011BC
+:1035C000F8C8FFFC5148FAC9F934780BF20E0038FC
+:1035D000F14BFD88FCC8FFFFFB4806C4C058780BC0
+:1035E000F8C8FFFC514840A89708FE9FFA14409B7A
+:1035F000A5AB509B00994098EDB80005C501FAFEB7
+:1036000006C45802C2201C37C084FACAF934F40731
+:103610000038F0E4FD88C168FAC8F9401AD8FAC841
+:10362000FAA81AD8FAC8FBA4069A1AD80E9BFAC8A8
+:10363000F930FAC9FFA4408CF01F00E72FDDF8E451
+:103640000000300EE08F03892FF01C39C0A4FAC9A6
+:10365000F934049EF2070038F0E4FD88E08F037D22
+:10366000414C59FEE0890014F8C8FFF85148F8E4CD
+:103670000000FACBF934F60E0038F0E5FD88FCC8FE
+:10368000FFFF049EFB4806C4E08F0367F8C8FFF8FD
+:10369000F8E40000049E5148E08F035F4098EDB8C5
+:1036A0000004C101FAFE06C45802C0801C37C5F4EC
+:1036B000FACAF934F4070038C7682FF01C39C76418
+:1036C000C5184098EDB80006C471FAFE06C4580249
+:1036D000C1D01C37C064FAC9F934F2070038C1D828
+:1036E000FAC8F9401AD8FAC8FAA80E9B1AD8FAC82C
+:1036F000FBA4069A1AD8FAC8F930FAC9FFA4408C7C
+:10370000F01F00B52FDD981BC2482FF01C39C08474
+:10371000FACBF934F6070038F10BFD8AC1A8414C09
+:1037200059FEE0890013F8C8FFFC51487809FACA2D
+:10373000F934F40E0038F149FD88F7D9B010FCC80F
+:10374000FFFFFB4806C4C058F8C8FFFC981B51484F
+:10375000E9DBC010C438FAFE06C45802C1D01C37D9
+:10376000C064FAC9F934F2070038C1D8FAC8F94080
+:103770001AD8FAC8FAA80E9B1AD8FAC8FBA4069A57
+:103780001AD8FAC8F930FAC9FFA4408CF01F009289
+:103790002FDD780BC2282FF01C39C084FACBF93406
+:1037A000F6070038F0FBFD88C188414C59FEE089DE
+:1037B0000011F8C8FFFC5148FACAF934780BF40E2E
+:1037C0000038F14BFD88FCC8FFFFFB4806C4C05819
+:1037D000780BF8C8FFFC51481694300E1C95E08F0A
+:1037E00002BC0098FAFE06C45802C1C01C37C0646F
+:1037F000FAC9F934F2070038C1C8FAC8F9401AD832
+:10380000FAC8FAA81AD8FAC8FBA4069A1AD80E9BC6
+:10381000FAC8F930FAC9FFA4408CF01F006F2FDD01
+:10382000C2182FF01C38C084FACBF934F6070038E0
+:10383000F0FCFD88C188414C59FEE0890011F8C8B0
+:10384000FFFC5148FACAF934780CF40E0038F14CF8
+:10385000FD88FCC8FFFFFB4806C4C058F8C8FFFC41
+:103860005148780C3308FB6806C837884099FB68D4
+:1038700006C9A1B937884D9B1894509930055088D6
+:10388000302E512BE08F0269300AFB6A06CB00987C
+:10389000FAFE06C45802C1D01C37C064FAC9F93414
+:1038A000F2070038C1D8FAC8F9401AD8FAC8FAA8FD
+:1038B0001AD8FAC8FBA4069A1AD80E9BFAC8F9308F
+:1038C000FAC9FFA4408CF01F00442FDD7803C22802
+:1038D0002FF01C38C084FACBF934F6070038F0F327
+:1038E000FD88C188414C59FEE0890011F8C8FFFCF1
+:1038F00051487803FACAF934F40E0038F143FD88D0
+:10390000FCC8FFFFFB4806C4C058F8C8FFFC78039A
+:10391000514840C95809C105129A300B069CF01F46
+:103920000030E08002ABF803010740C81037E0899F
+:1039300002A5E08F02A4069C3002E08F027D409B2E
+:10394000A5AB509B00994098EDB80005C521FAFE43
+:1039500006C45802C1E01C37C064FACAF934F4073F
+:103960000038C1E8FAC8F9401AD8FAC8FAA81AD833
+:10397000FAC8FBA4069A1AD80E9BFAC8F930FAC9FD
+:10398000FFA4408CF01F00142FDDF8E40000C2E813
+:103990002FF01C39C084FAC9F934F2070038F0E47A
+:1039A000FD88C248414C59FEE089001CF8C8FFF868
+:1039B0005148F8E40000FACBF934F60E0038F0E58F
+:1039C000FD88FCC8FFFFFB4806C4C10880034934DA
+:1039D00080036382800325A48003DFA880031D5435
+:1039E000F8C8FFF8F8E400005148301EE08F01B538
+:1039F0004098EDB80004C101FAFE06C45802C08028
+:103A00001C37C5F4FACAF934F4070038C7682FF038
+:103A10001C39C764C5184098EDB80006C471FAFE99
+:103A200006C45802C1D01C37C064FAC9F934F20781
+:103A30000038C1D8FAC8F9401AD8FAC8FAA80E9BBB
+:103A40001AD8FAC8FBA4069A1AD8FAC8F930FAC9E3
+:103A5000FFA4408CF01F00852FDD981BC2482FF07B
+:103A60001C39C084FACBF934F6070038F10BFD8A13
+:103A7000C1A8414C59FEE0890013F8C8FFFC514829
+:103A80007809FACAF934F40E0038F149FD88F7D9FB
+:103A9000B010FCC8FFFFFB4806C4C058F8C8FFFCC4
+:103AA000981B5148E9DBC010C438FAFE06C458021E
+:103AB000C1D01C37C064FAC9F934F2070038C1D844
+:103AC000FAC8F9401AD8FAC8FAA80E9B1AD8FAC848
+:103AD000FBA4069A1AD8FAC8F930FAC9FFA4408C98
+:103AE000F01F00622FDD780BC2282FF01C39C08434
+:103AF000FACBF934F6070038F0FBFD88C188414C59
+:103B000059FEE0890011F8C8FFFC5148FACAF9349F
+:103B1000780BF40E0038F14BFD88FCC8FFFFFB4822
+:103B200006C4C058780BF8C8FFFC51481694301EE4
+:103B30003005C1294CE8009951284098EDB800059E
+:103B4000C461FAFE06C45802C1E01C37C064FACB57
+:103B5000F934F6070038C1E8FAC8F9401AD8FAC8AB
+:103B6000FAA81AD8FAC8FBA4069A1AD80E9BFAC863
+:103B7000F930FAC9FFA4408CF01F003C2FDDF8E4B7
+:103B80000000CD682FF01C39C084FACAF934F4075C
+:103B90000038F0E4FD88CCC8414C59FEE0890012A1
+:103BA000F8C8FFF85148F8E40000FAC9F934F20EF9
+:103BB0000038F0E5FD88FCC8FFFFFB4806C4CB8851
+:103BC000F8C8FFF8F8E400005148CB284098EDB859
+:103BD0000004C1C1FAFE06C45802C0801C37C704E5
+:103BE000FACBF934F6070038C8782FF01C39C635FF
+:103BF000414C59FEE0890097F8C8FFFCFAC9F93436
+:103C00005148780BF20E0038C8684098EDB80006AD
+:103C1000C4C1FAFE06C45802C1D01C37C064FACB36
+:103C2000F934F6070038C1D8FAC8F9401AD8FAC8EA
+:103C3000FAA80E9B1AD8FAC8FBA4069A1AD8FAC892
+:103C4000F930FAC9FFA4408CF01F00082FDD981B43
+:103C5000C2982FF01C39C0D4FACAF934F4070038DE
+:103C6000F10BFD8AC1F80000800325A48003DFA8C2
+:103C7000414C59FEE0890013F8C8FFFC514878090F
+:103C8000FACBF934F60E0038F149FD88F7D9B010B7
+:103C9000FCC8FFFFFB4806C4C058F8C8FFFC981BCF
+:103CA0005148E9DBC010C438FAFE06C45802C1D03E
+:103CB0001C37C064FACAF934F4070038C1D8FAC80E
+:103CC000F9401AD8FAC8FAA80E9B1AD8FAC8FBA469
+:103CD000069A1AD8FAC8F930FAC9FFA4408CF01F26
+:103CE00000A52FDD780BC2282FF01C39C084FAC93B
+:103CF000F934F2070038F0FBFD88C188414C59FEC9
+:103D0000E0890011F8C8FFFCFACAF9345148780B71
+:103D1000F40E0038F14BFD88FCC8FFFFFB4806C4D9
+:103D2000C058780BF8C8FFFC514816943005EBE4F6
+:103D3000100840995F18300BF3E80008F6081800E7
+:103D4000C0A04099408AA1B93308FB6A06C95099BE
+:103D5000FB6806C8302E3008FB6806CB40CB580BFA
+:103D6000C045409AA7DA509A40C9EBE410085809B8
+:103D70005F1958085F18FAC6F9681248300BF60840
+:103D80001800C5D03018F00E1800C070C08330285D
+:103D9000F00E1800C4D1C3980C97C2D80C93F1D47C
+:103DA000C003F0CCFFD006FCE80A1603EA0B1603AA
+:103DB000F5E511DA1695149458045C25CF11409A54
+:103DC000EDBA0000C4813308F00C1800C44006F8B6
+:103DD000C428189730A83009089A0A9BF01F00667B
+:103DE0002D0A0A9BAE8A30A8089A3009F01F00639A
+:103DF00014941695EECC000158945C25FE9BFFEBC5
+:103E00001893E8C8FFD0C2480C93F1D4C0044129EC
+:103E1000F208070806F8E80A1604EA0B1604F5E5A6
+:103E200011CA1695149458045C25CF01C1484D4C15
+:103E300040C21893F01F00531897C218580EC0A123
+:103E4000409BEDBB0000C061FAC3F9693308A68846
+:103E5000C0280C93EC03010740C2C118408A580ADD
+:103E6000E080048EFB6A06703009FAC3F990FB69A2
+:103E700006CB30023017C03840C73002EE020C4883
+:103E8000300B51184099FB3806CBE2190002F608B6
+:103E90001800FBFA1011F7BA01FFFBFA1A1150696A
+:103EA0005809FBF81011F7B801FEFBF81A11409BF6
+:103EB000E21B0084507BC43140B6411A14165806E8
+:103EC000E089001EC3C82F084AF9FB4806A08309F1
+:103ED000F6C8FFFF310BFB48069C831B5878E0892E
+:103EE00000042F81C0B8FACAF968404B405CF01F4B
+:103EF0000027E0810453FAC1F9D02106FAF806A0A0
+:103F0000FAFB069C4A095906FE99FFDF0C08830953
+:103F1000FB4806A08316F6C8FFFFFB48069C5878AE
+:103F2000E08900042F81C0B8FACAF968404B405CB0
+:103F3000F01F0016E0810432FAC1F9D0FB3806CB3D
+:103F4000300AF4081800C2D0FAF806A02FF8FB488F
+:103F500006A0FAC8F935FAF9069C83082FF930183B
+:103F6000FB49069C83185879E08900122F81C1987B
+:103F7000800325A4800367B08002CF448003DFBCA8
+:103F80008002E3E08003E3C4800328C0FACAF96832
+:103F9000404B405CF01F0064E0810400FAC1F9D09E
+:103FA00040695809C1F0FAF806A02FE8FB4806A0BE
+:103FB000FAC8F938FAF9069C83082FF93028FB492A
+:103FC000069C83185879E08900042F81C0B8FACA8A
+:103FD000F968404B405CF01F0054E08103DFFAC1F8
+:103FE000F9D04078E0480080C43140B6411B161635
+:103FF0005806E089001EC3C82F084CCAFB4806A01B
+:104000003109F6C8FFFF830A8319FB48069C5878DC
+:10401000E08900042F81C0B8FACAF968404B405CBF
+:10402000F01F0041E08103BAFAC1F9D02106FAF885
+:1040300006A0FAFB069C4BD95906FE99FFDF0C0837
+:104040008309FB4806A08316F6C8FFFFFB48069CC1
+:104050005878E08900042F81C0B8FACAF968404B4B
+:10406000405CF01F0031E0810399FAC1F9D0E40708
+:1040700001065806E089001EC3E82F08310AFB48F4
+:1040800006A0831AF6C8FFFF4A8BFB48069C830BE9
+:104090005878E08900042F81C0A8FACAF968404B1B
+:1040A000405CF01F0021E081037904912106C038B3
+:1040B000FAC2F9D0FAF806A0FAFB069C49B95906EB
+:1040C000FE99FFDD0C088309FB4806A08316F6C89D
+:1040D000FFFFFB48069C5878E08900042F81C0B898
+:1040E000FACAF968404B405CF01F000FE0810356AC
+:1040F000FAC1F9D04098EDB80008C190FAF806A0CE
+:104100000E088303FB4806A08317FAF8069C2FF8D5
+:10411000FB48069C5878E08902C8E2CAFFF8E08FA5
+:1041200002CD0000800328C08003E4504089E049AC
+:104130000065E08A01F430083009401B400AF01F96
+:10414000004CC7B0FAF806A02FF8FB4806A04C9820
+:10415000FAF9069C83082FF93018FB49069C83184E
+:104160005879E0890005E2CAFFF8C0B8FACAF968D0
+:10417000404B405CF01F0040E0810310FACAF9D0C8
+:10418000FAF806BC410B1638C0654099EDB900003D
+:10419000E081029440D89508FAF806A02FF830196B
+:1041A000FB4806A09519FAF8069C2FF8FB48069CD8
+:1041B0005878E08900042F8AC0B8FACAF968404BE1
+:1041C000405CF01F002DE08102E9FACAF9D04106F7
+:1041D00020165806E089001CE08F02702F08950118
+:1041E000FB4806A09512F6C8FFFFFB48069C5878CE
+:1041F000E08900042F8AC098069A404B405CF01F6B
+:10420000001EE08102CB0E9A2106C07849B131022E
+:10421000FAC3F968FAC7F9D0FAF806A0FAFB069CC7
+:1042200049695906FE99FFDC0C089509FB4806A070
+:104230009516F6C8FFFFC6B9FAF906BC5809E08919
+:10424000009EFAF806A02FF8FB4806A04898FAF955
+:10425000069C83082FF93018FB49069C831858796F
+:10426000E089000EE2CAFFF8C148000080036382C3
+:1042700080039CC4800328C08003E450FACAF96814
+:10428000404B405CF01F006CE0810288FACAF9D014
+:10429000FAF806BC5808C091410B580BC061409910
+:1042A000EDB90000E081020A40D89508FAF806A0AE
+:1042B0002FF83019FB4806A09519FAF8069C2FF83C
+:1042C000FB48069C5878E08900042F8AC0B8FACAD7
+:1042D000F968404B405CF01F0058E081025FFACA69
+:1042E000F9D0FAF806BCF00611005806E089001C67
+:1042F000C3F82F089511FB4806A0F6C8FFFF4CFB3A
+:10430000FB48069C950B5878E08900042F8AC098DA
+:10431000049A404B405CF01F0048E081023F0E9A37
+:104320002106C0683101FAC2F968FAC7F9D0FAF873
+:1043300006A0FAFB069C4C195906FE99FFDC0C08F6
+:104340009509FB4806A09516F6C8FFFFFB48069C9A
+:104350005878E08900042F8AC0B8FACAF968404B3F
+:10436000405CF01F0035E0810219FACAF9D041091A
+:1043700095039519FAF806A0CC48FAF806A0FAFBBE
+:10438000069C410A1439C79514088303FB4806A00C
+:10439000831AF6C8FFFFFB48069C5878E0890005A1
+:1043A000E2CAFFF8C0B8FACAF968404B405CF01F97
+:1043B0000022E08101F3FACAF9D0FAF806BC4109FB
+:1043C000F00901065806E089001BC4382F08950142
+:1043D000FB4806A09512F6C8FFFFFB48069C5878DC
+:1043E000E08900042F8AC098069A404B405CF01F79
+:1043F0000012E08101D30E9A2106C07848F1310203
+:10440000FAC3F968FAC7F9D0FAF806A0FAFB069CD5
+:1044100048A95906FE99FFDC0C089509FB4806A03F
+:104420009516F6C8FFFFFB48069C5878E0890008FF
+:104430002F8AC0F8800328C08003E450FACAF968C4
+:10444000404B405CF01F00AEE08101A8FACAF9D0F1
+:10445000409BEDBB0000E081013140D9FAF806A095
+:104460002FF89509FB4806A03019FAF8069C951913
+:104470002FF8FB48069CC4D812088303FB4806A00B
+:104480008319F6C8FFFFFB48069C5878E0890005B1
+:10449000E2CAFFF8C0B8FACAF968404B405CF01FA6
+:1044A0000098E081017BFACAF9D040D89508FAF863
+:1044B00006A02FF8FAF9069CFB4806A02FF9301841
+:1044C000FB49069C9518FAF706BC5879E089000468
+:1044D0002F8AC0B8FACAF968404B405CF01F0088C8
+:1044E000E081015CFACAF9D0FAF906BCE6070008D7
+:1044F000410B9508121BFAF806A0951B12184109EA
+:104500001208FB4806A0FAF8069C2FF8FB48069C08
+:104510005878E08900CA2F8ACD0841085818E089E8
+:104520000007409BEDBB0000E081008DFAF806A07B
+:104530002FF83019FB4806A08303FAF8069C83196C
+:104540002FF8FB48069C5878E0890005E2CAFFF87E
+:10455000C0B8FACAF968404B405CF01F0069E081BE
+:10456000011DFACAF9D040D9FAF806A02FF895092A
+:10457000FB4806A03019FAF8069C95192FF8FB485D
+:10458000069C5878E0890005F4C7FFF8C0B8FACA5D
+:10459000F968404B405CF01F005AE08100FFFAC709
+:1045A000F9D030093008401B400AF01F005641097D
+:1045B0002019580CC0E1E6C8FFFF8F08FAF806A0E2
+:1045C00012088F19FB4806A0FAF8069C2FF8C3388A
+:1045D00012965809E089001CC5282F088F11FB4846
+:1045E00006A0F6C8FFFF4C8BFB48069C8F0B587843
+:1045F000E08900042F87C098049A404B405CF01F6C
+:104600000040E08100CB06972106C0683101FAC264
+:10461000F968FAC3F9D0FAF806A0FAFB069C4BA990
+:104620005906FE99FFDC0C088F09FB4806A08F167F
+:10463000F6C8FFFFFB48069C5878E08900172F87D3
+:10464000C1E8FAF806A02FF83019FB4806A083034A
+:10465000FAF8069C83192FF8FB48069C5878E089E5
+:104660000005E2C7FFF8C0B8FACAF968404B405CE1
+:10467000F01F0023E0810092FAC7F9D040FAFAF85F
+:1046800006A01408FAC9F954FB4806A08F1AFAF8D4
+:10469000069C8F092FF8FB48069C5878E089000596
+:1046A000EECAFFF8C0A8FACAF968404B405CF01F98
+:1046B0000014C731FACAF9D04099EDB90002C461BB
+:1046C00040B6411810165806E0890020C3F82F089C
+:1046D0009501FB4806A09512F6C8FFFFFB48069C13
+:1046E0005878E08900042F8AC088069A404B405CC5
+:1046F000F01F0003C5210E9A2106C0D8800328C0F0
+:10470000800363828003E4504AA13102FAC3F9684E
+:10471000FAC7F9D0FAF806A0FAFB069C4A595906DE
+:10472000FE99FFD70C089509FB4806A09516F6C818
+:10473000FFFFFB48069C5878E08A0009FACAF9682E
+:10474000404B405CF01F001CC28140A9411B40BA95
+:10475000F60A0C48100950A9FAF806A05808C080BB
+:10476000FACAF968404B405CF01F0013C161300881
+:10477000FAC1F9D0FB48069CFE9FF14DFAF806A05D
+:104780005808C080405CFACAF968404BF01F000A24
+:10479000C0413008FB48069C404B9668EDB80006C7
+:1047A000C0313FFA50AA40ACFE3DF934D832000087
+:1047B0008003E3C4800328C0D42116981896109C67
+:1047C0003008149B4867129A8F08F01F00065BFCA4
+:1047D000C0516E085808EDF81A03D82200008A88E4
+:1047E0008002E774D421300818964877169C8F0809
+:1047F000F01F00065BFCC0516E085808EDF81A0364
+:10480000D822000000008A888002E72CD431202DB5
+:10481000169318957848764B1638C034300CC86813
+:10482000F6CAFFFCF80A032CE60A0329500CE60A34
+:10483000002A501A2FF9E6C1FFECF8090D08F6C658
+:104840000001EAC0FFEC10925808C3D03007009E68
+:1048500002940E9C0908F00A1610E40A024A7C0928
+:10486000F1D8C010F20B1610E4080248F3D9C010BA
+:10487000F8080008EE090009F9D8C010B188181925
+:104880001408BC19F5D8C010B149141B120BBC0B8D
+:10489000F00C16102FCEF607141040181034FE98A6
+:1048A000FFDB400C580CC0F1ECC8FFFBEA08002904
+:1048B000C028201620490039E088000572085808F1
+:1048C000CF908B46069B0A9CF01F001AC2E52FF280
+:1048D000009C300E78080309F00B1610F20A16102F
+:1048E000F1D8C010141BF3D9C01012181C08B81846
+:1048F000B148100BB80BF60E14102FCC4018103125
+:10490000FE98FFEAECC9FFFBEA0903285808C0D16A
+:10491000EA090029C028201620490039E08800054E
+:1049200072085808CF908B46049C2FEDD8320000B7
+:10493000800357EED431219DFACEFF78505C504968
+:104940007C2C149050387C0A501C502A40591691E7
+:104950007C1672975807C0A1310CF01F004A4058CE
+:104960009937919C991799279907405C7899720A11
+:10497000580AC0F07218951830187219F0090948D1
+:10498000149B9528F01F0040405A300874999308F2
+:104990005801C054E3D1C01F3018C02830088D081A
+:1049A00002970298FC197FF0E6187FF01238C1E1F7
+:1049B000E068270F402C99085800C061F1D1C0145D
+:1049C000C0314B2CC0284B2C401A580AE08005E01F
+:1049D000F8CAFFFD30081589F0091800C030F8CA80
+:1049E000FFF84019930AE08F05D3FAE10050300830
+:1049F0003009009A029BF01F0027C1503018402C4C
+:104A0000401A99084A48580AF00C1700F00C171081
+:104A1000F9B90101F1D9E108FBF91001F3F81A0025
+:104A2000E08F05B6FAC8FFA0FAC9FFA4FAEA005061
+:104A3000405CF01F001A510CF9D1C28BC0D0FAEAC9
+:104A400000503008F8C503FF50F8F1DBC014109B8C
+:104A5000EA1B3FF0C32841794188F0090009F2CAF6
+:104A6000FBCEE04A0020E08A001BF2C9FBEEF4080E
+:104A70001140E0090A49E2080948F3E8100CC1387E
+:104A80008002D854800358288003E5608003E56CD9
+:104A90008003638280039CC4800358D8F4081120EB
+:104AA000E008094CF4C50433F01F0071FC18FE1037
+:104AB000301CF00B000B50FC3008FC193FF8F01FC5
+:104AC000006DE0684361EA18636FE06987A7EA193F
+:104AD0003FD2F01F0069E068C8B3EA188B60E06954
+:104AE0008A28EA193FC6F01F00650A9C14921693A3
+:104AF000F01F0063E06879FBEA18509FE0694413F7
+:104B0000EA193FD3F01F005C14981699049A069B8B
+:104B1000F01F005A169714960E9BF01F005A30088B
+:104B200050AC30090C9A0E9BF01F0057C10040ACEE
+:104B3000F01F0053149816990C9A0E9BF01F005307
+:104B4000FBFA000AF7BA0001FBFA0A0A40A9596900
+:104B5000E08800043018C11840AC4CD8FAEA005084
+:104B6000F00C0238F01F0048C041300A50BAC0684B
+:104B700040A93008201950A950B841882018F005E4
+:104B8000010AC056300C50DA506CC0585C3A506A7A
+:104B9000300A50DA40AA40A95C3A5809C08540D88A
+:104BA000300C120850E950D8507CC088406940A8A9
+:104BB000300C1019507A506950EC404A589AE08BEA
+:104BC0000026585AF9B60A01FBF99004F7B909040E
+:104BD000FBF99A04F9B6090040485828C230E08928
+:104BE00000055808C164C078404C584CC0A0C2951C
+:104BF000585CC0A03FFA3019508A50C9509AC30877
+:104C0000301850C8C118301CC1D8300A3016504A6C
+:104C10003FF93008301C508950383125509950CC1C
+:104C2000C1F8300A50CA40395809E08900073018E5
+:104C3000503810955088C038403550855095C1087F
+:104C4000300C40AA403950CC120A509A14952FF5D6
+:104C50005805E089000550853015C028508540581A
+:104C60007099300893183049C18800008003628C25
+:104C700080035FA080035DB88003613C8003629481
+:104C8000800362588003641E800363828003E570A2
+:104C90006E18A1792FF88F18405CF2C8FFEC789756
+:104CA0000A38FE98FFF76E1BF01F004A8F0C405C1D
+:104CB000789972095169408A58EA5F880C68E080E7
+:104CC000017F40AA580AE08A0035F1DAC0044C2975
+:104CD0001497F2080234A547EDB70004C030302322
+:104CE000C0D8EFD7C0044BD8FAEA0050F0E8002053
+:104CF0003033F01F003B149016914B86C0F8089A91
+:104D00000A9BEDB70000C081ECE800002FF3F01F14
+:104D1000003514941695A1572F865807CF11009A85
+:104D2000029B08980A99F01F002E14901691C288D1
+:104D300040A95C39C0313023C238F20414044A68F7
+:104D4000F3D9C004FAEA0050F00902384A35F01FDE
+:104D50000025302314961697C0F80C9A0E9BEDB4DC
+:104D60000000C081EAE800002FF3F01F001E149637
+:104D70001697A1542F855804CF110C900E9140B96D
+:104D80005809C33030080297FC193FF0009A029B83
+:104D9000F01F00154088F9BC0000F9BC010158085B
+:104DA0005F9800961868C210409C580CE08A010673
+:104DB00040AC201C009A029B3008FC194024513C56
+:104DC000F01F00082FF314901691409A512AC11831
+:104DD000800358608003E5708003E63880036498A0
+:104DE00080035DB88003641E408940A85129513872
+:104DF000069CF01F006A00980299F01F00693008B5
+:104E0000FC19401CF01F0067FC18FCC016970094AA
+:104E100002951496F0070007412C580CC201300887
+:104E2000FC194014009A029BF01F005F0C9316952A
+:104E3000149414980A990E9B0C9AF01F005CE08160
+:104E4000027D0E98EE188000089A10930A9B0C9829
+:104E50000699F01F0056E081026ACAF841284D49C0
+:104E6000201840CA580AC4C0F2080238300AFC1B95
+:104E70003FE0F01F00500E990C9830074161F01F81
+:104E8000004A14921693089A0A9BF01F004B18963A
+:104E9000F01F004214981699089A0A9BF01F0042CE
+:104EA0002D061695149402C62FF7049806990A9BAE
+:104EB000F01F003EE081035B08980A99300AFC1B52
+:104EC0003FF0F01F003904980699F01F0038049A4B
+:104ED000069B3008FC194024E08100EC412C183777
+:104EE000C6C4F01F002F300814921693089A0A9B2C
+:104EF000FC194024F01F002A14941695CC5B412C19
+:104F0000F208023A41610E990C981801F01F002432
+:104F1000416714921693089A0A9BF01F002718966F
+:104F2000F01F001E2D0614981699089A0A9BF01F70
+:104F3000001E0EC6149416950237C2613008FC1983
+:104F40003FE0049A069BF01F00170E9108980A99FB
+:104F5000F01F0016E08100AE04980699300AFC1B91
+:104F60003FE0F01F001114981699089A0A9BF01F51
+:104F7000000FC230330A02991378F4081800E08158
+:104F800002F61291CF9B0A9B3008FC194024F01FB7
+:104F9000000414941695CC0B8003629480035DB8D2
+:104FA0008003613C80035FA08003641E8003E57082
+:104FB0008003649880036258FAE0005040AA300BE6
+:104FC00058EA5FA9417AF40811FFF3E803F9F609FA
+:104FD0001800E080008B4089403C58095FA84CB91C
+:104FE00040AAF1EC03F8F20A0234F6081800C150A6
+:104FF00040895809E081019B3008FC194014089A47
+:105000000A9BF01F004300980299F01F0042E081C4
+:10501000018E4084E08F0195029700964161301324
+:1050200008980A990C9A0E9BF01F003BF01F003B5A
+:105030001892F01F003B08980A99F01F0035149849
+:1050400016990C9A0E9BF01F0037E4C8FFD002C8D7
+:10505000169714960E9B3008FC194024408C183388
+:10506000C3710C980E99F01F00301697149614987F
+:105070000E99089A0A9BF01F002DC1D108980A9931
+:105080000C9A0E9BF01F002AE080026FEDB2000028
+:10509000C120E08F026A41681039C0301291C0C847
+:1050A00040AC2FFC50AC3308416AB4884169C098C9
+:1050B000413950A9339A02991378F4081800CEC0E8
+:1050C00040A8513813882FF8B288E08F0250F01FA3
+:1050D00000102FF316971496300830090E9BF01F1E
+:1050E0000014C9F0E08F024140CC580CC04140652B
+:1050F0004077C4A840495819E089002240F8580870
+:10510000C180F4C8FBCDC1888003E57080035DB821
+:10511000800363B6800364988003625880036294BE
+:1051200080035FA08003613C8003641E8003638270
+:105130004188F008113640654077C1C8408A407CFC
+:10514000201A143CC04518971417C0A8407940ECA9
+:10515000F409010830071009100C507950EC408A0E
+:10516000580AC04514984065C058406540893008C9
+:10517000121540DC406A100C100A50DC506A301BDB
+:10518000405CF01F010458055F9840D918945809F5
+:105190005F991268C0A040DC406AF8050D48101CF9
+:1051A000101A50DC506A101540795809E08A002323
+:1051B00040C85808C1905807E08A0013089B0E9A0F
+:1051C000405CF01F00F5410A189B1894405CF01FEA
+:1051D00000F3410B1896405CF01F00F15106407A35
+:1051E0000E1AC080C028407A410B405CF01F00EAD4
+:1051F000510C301B405CF01F00E7511C40EC580C78
+:10520000E08A0008189A411B405CF01F00E3511C23
+:10521000404A581AE08900135800C1010299F1D19F
+:10522000C014C0C1E6197FF0C090406940D82FF982
+:105230002FF8506950D83017C028300740EC580C70
+:10524000C0313018C0A8411A74482FC8F408032C84
+:10525000F01F00D4F808112040D91208F1D8C00579
+:10526000C0F0F00811205848E08A00092048406C3E
+:105270001009100C50D9506CC0A85848C0902E4846
+:1052800040DA4069100A100950DA50691005406888
+:105290005808E08A0008109A410B405CF01F00C2D9
+:1052A000510C40DC580CE08A0008189A411B405C05
+:1052B000F01F00BD511C40BA580AC1F0411B410CFF
+:1052C000F01F00BAC1A440A92019410B50A930AA6F
+:1052D0003009405CF01F00B6510C40C85808C0416E
+:1052E000409C508CC0A8409A089B508A300930AA34
+:1052F000405CF01F00AF18944089404C58095FA8EB
+:10530000582C5F991268C250408A580AC1111499EA
+:10531000411B305A405CF01F00A6511C189B410CE9
+:10532000F01F00A2E089000EC0383004511440394B
+:1053300041615CD95139C0B84138412450A8511459
+:1053400040AC2FFC513C4161331802C83002CF7889
+:1053500040CA580AE08000AD5805E08A0008089B62
+:105360000A9A405CF01F009018945807C031089CBE
+:10537000C138681B405CF01F008F684A1896E8CB64
+:10538000FFF42FEA2F4CA36AF01F008B0C9B301AFE
+:10539000405CF01F008508924161E1D0C001029994
+:1053A00018945C395009411B410CF01F0084049B88
+:1053B000F8C6FFD0410CF01F007D089A1893411BDE
+:1053C000405CF01F007F189778385808C0303015BF
+:1053D000C068189B410CF01F00751895405C0E9B2F
+:1053E000F01F006F404CEBEC1008C0D15800C0B16A
+:1053F000E0460039C2E05803F7B609FF02C640AAEA
+:10540000513AC9D85803C0754049E7E91008C1B1FD
+:105410005800C1915805E08A0015410B301A405CD4
+:10542000F01F0061411B510CF01F0060E089000675
+:10543000C081EDB60000C051E0460039C0A02FF693
+:1054400002C6C7085805E08A000CE0460039C04192
+:10545000339802C8C5F8ECC8FFFF02C8C6E802C608
+:10546000400A4089E20A00081238C380410B300923
+:1054700030AA405CF01F004E510C0832C0A1049BC2
+:10548000300930AA405CF01F004A18921894C8CB2B
+:10549000049B300930AA405CF01F0045089B18921D
+:1054A000300930AA405CF01F00421894C7DB41610C
+:1054B0003017411B410CF01F0041F8C6FFD002C657
+:1054C00040881037C0A4410B2FF7300930AA405C48
+:1054D000F01F0037510CCEEB3002410B301A405C0C
+:1054E000F01F0031411B510CF01F0030E089001308
+:1054F000C1E1EDB60000C0E0C1A8416C1839C03070
+:105500001291C09840AA2FFA513A33184169B288D3
+:10551000C168339A02991378F4081800CEF02FF876
+:10552000B28840A85138C0B81291C028330A0299F5
+:105530001378F4081800CF9040AC513C411B405CFC
+:10554000F01F00175804C12058025F1808325F1975
+:105550001268C050049B405CF01F0011089B405C27
+:10556000F01F000FC03840AA513A405C410BF01FB9
+:10557000000C3008A28841382FF8402993084018C1
+:105580005808FBFC1001F9F11A00416C2E7DD8324D
+:1055900080035C1480035CBC80035B088003582894
+:1055A0008003570480035A70800357EE80035C2CFD
+:1055B000800358608002DD148003480C80035994F6
+:1055C0005EFC5EFCD42118961697580BC0311695D8
+:1055D000C508F01F00295806C0706C685808C04103
+:1055E0000C9CF01F00264A681037C0316C07C0A819
+:1055F0004A481037C0316C17C0584A381037EDF799
+:1056000000028E693008F0091900C051F01F001F18
+:105610003005C2F80E9B0C9CF01F001D6EC818953B
+:105620005808C0606E8B0C9C5D18F9B505FF8E683C
+:10563000EDB80007C0516E4B0C9CF01F00166EDBDE
+:10564000580BC0A0EEC8FFBC103BC0400C9CF01F24
+:10565000001130088FD86F2B580BC0700C9CF01FB6
+:10566000000D3008EF4800483008AE68F01F000712
+:105670000A9CD82280031328800313EC8003E11CCA
+:105680008003E13C8003E15C8003132A800311E086
+:1056900080031630D4014848189B700CF01F00039B
+:1056A000D802000000000598800355C4D421169844
+:1056B0001896109C30084877149B8F08F01F00063E
+:1056C0005BFCC0516E085808EDF81A03D8220000A0
+:1056D00000008A888002E7BCD42116981896109C96
+:1056E0003008149B4867129A8F08F01F00065BFC75
+:1056F000C0516E085808EDF81A03D82200008A88B5
+:105700008002E7441898F8091510E0180000F20C20
+:105710001700F9B90010F9B90100F80A150818982E
+:10572000E618FF00F7B900F8F40C17001898F80A0B
+:105730001504E618F000F7B900FCF40C17001898EF
+:10574000F80A1502E618C000F7B900FEF40C1700BD
+:10575000580CC075EDBC001EF9B90120F7B900FF67
+:105760005EF9189B780AF9DAC003C140EDBA00006F
+:10577000C0215EFDF4091601F4081602EDBA00011D
+:10578000F7F90A00F9BC0001F7F81A00F9BC0102A8
+:105790005EFCF1DAC010F40916105808F20A17007E
+:1057A000F9BC0010F40916085808F1DAC008F7BC73
+:1057B00000F8F20A1700F1DAC004F40916045808D8
+:1057C000F7BC00FCF20A1700F1DAC002F409160275
+:1057D0005808F7BC00FEF20A1700EDBA0000C060DE
+:1057E000A19AC031320C5EFC2FFC970A5EFCD401FA
+:1057F000169A78487649F009010BC151F2C8FFFBAF
+:10580000A368F408000EF80800082ECC114A1D49C0
+:10581000123AC060F9BB03FFF9BB0201C048183857
+:10582000FE9BFFF6169CD802D42118961695789701
+:105830005807C091310CF01F000A99378D9C9917B9
+:10584000992799075805C0906C986A19703AF4091D
+:1058500003288B08F4090925D82200008002D854B7
+:10586000D4211896169578975807C091310CF01FDF
+:10587000001999378D9C9917992799076C976E385D
+:105880005808C0B1310A304B0C9CF01F00138F3CFC
+:105890006C98703C580CC1B06C987038F0050029B9
+:1058A000720C580CC04078089308C0E830180C9C63
+:1058B000F0050947109BEECAFFFBA36AF01F000624
+:1058C000C06099159927300899389948D822000066
+:1058D0008002D8548002D1F4D431202D169714962A
+:1058E00012931092301BF01F0029F5D7C014500AF4
+:1058F0000E98F3D7C01FF2041614FC1B0010F5DB42
+:10590000E138FBF81A0018955806C1D0FACCFFF818
+:1059100018D6F01F001F401AC0C04009F808112017
+:10592000F208094814488B58F20C0A495009C0285B
+:105930008B5A40085808F9B70102F9B700018B6883
+:105940008B47C0A81A9CF01F001230182E0C8B48F1
+:10595000109740088B585804C090E8C804331808C2
+:105960008708F80C1135850CC0D8F8C804328708B0
+:10597000EA070028704CF01F0007EE0815051818FC
+:1059800085080A9C2FEDD832800358608003576247
+:1059900080035704D4317449764816971496F00959
+:1059A0000105C141F2C8FFFBEECEFFECA368F4088D
+:1059B000000BEE080008114A1749123AC030C0E245
+:1059C000C0781C38FE9BFFF9C4A85805C0640C9829
+:1059D00030150E961097C02830056E1BF01F00245E
+:1059E0006C482FB86E44EC0800239935E8C8FFFBDB
+:1059F000EEC5FFECEE0800222EC6F8CEFFEC300715
+:105A00000B080D09F00B1610F20A1610F1D8C01091
+:105A1000141BF3D9C01012180E08BC18B148100B93
+:105A2000BC0BF60714102FCE0636CEB3C0F80B0809
+:105A3000F0091610F1D8C010EE080008BC18B148E3
+:105A40001208BC08F00714102FCE0435CF13C0285D
+:105A500020141D485808CFD09944D832300BF01F7D
+:105A600000043018994830089958D832800358609B
+:105A7000D43176482FF81697F40414051493F004E3
+:105A800000061892761B6E28C0382FFBA1781036BE
+:105A9000FE99FFFD049CF01F001B3008189510991B
+:105AA0002ECCC03818A92FF80838CFD56E48F5D3BA
+:105AB000C0052FB8EEC9FFECEE080024580AC1401B
+:105AC000F40E1120300B7208F00A0948F7E81008AC
+:105AD00018A81308F00E0A4B0839CF63990B580B1E
+:105AE000C0702FF6C058130818A80839CFD3ECC8D7
+:105AF0000001049C8B480E9BF01F00030A9CD832C7
+:105B00008003586080035828D431202D1697764999
+:105B1000744814961039EC081750EE061750F00729
+:105B200017506E2876457444761BE8050003103341
+:105B3000F7BB09FFF01F0037E6C8FFFBF808002895
+:105B4000F8C9FFEC50081892300A1298C02810AA21
+:105B5000400B1638CFD3EAC8FFFBEEC1FFECEE08CE
+:105B60000020ECC5FFECE8C8FFFB1294EC0800280D
+:105B70005018C3E88A9C580CC1D00296089E300782
+:105B80007C0A0D08F40B1610F0091610F5DAC01097
+:105B9000B939F1D8C0101609B93814080E08BC1864
+:105BA000B1881009BC09F20716102FCE0036CE932B
+:105BB0009D078A875807C1A06809029E089B300686
+:105BC000968AB6191D09F1D9C010AF3814080C080F
+:105BD000B608B1892FCBAF39B188969A140910094C
+:105BE000F2061610003ECED397092FC52FC44018D9
+:105BF0001035CC134009C02820135803E08A000553
+:105C000013485808CFA08543049C2FEDD8320000DC
+:105C100080035860D4211696301BF01F0004301802
+:105C200099569948D822000080035860D4311697BD
+:105C300018937644F6CCFFEC149E1295300B78093D
+:105C4000F2081610FC080248F3D9C010FC090249FA
+:105C5000EA090009F5D9C010B1891009F208151038
+:105C6000140818A82FFBF2051610083BCE9558050E
+:105C7000C1E06E281034C1456E1B069C2FFBF01F3F
+:105C8000000D6E4AEECBFFF418962FEA2F4CA36A54
+:105C9000F01F00090E9B069CF01F00080C97E8C837
+:105CA000FFFF8F48E8C8FFFBEE0809250E9CD8329D
+:105CB000800358608002DD1480035828D431149783
+:105CC00018951693F3DAC002C09020194A18F0090B
+:105CD000032A3009F01F00201893EE041402C37049
+:105CE0006A965806C091310CF01F001C99368B9CA7
+:105CF0009916992699066A966C275807C0D1E06BC9
+:105D000002710A9CF01F00168D2C30081897990814
+:105D1000C0380C9C1897EDB40000C0C1069B0E9AC9
+:105D20000A9CF01F0010069B18960A9C0C93F01F0B
+:105D3000000EA154C0C06E065806CEC10E9A0E9B2E
+:105D40000A9CF01F00088F0C9906CE5B069CD83287
+:105D50008003E66080035C2C8002D85480035C14CE
+:105D600080035B0880035828D42116981896109C4D
+:105D70003008149B4867129A8F08F01F00065BFCDE
+:105D8000C0516E085808EDF81A03D82200008A881E
+:105D90008002E75C1498F7DBC01F5C3A104AFC18DD
+:105DA0007FF0F7EA13FBF00B010BF60C1100164C19
+:105DB000BF5C2FFC5EFCD703F5EB101CE08000DC21
+:105DC000D421F7E9200EEFDBC28B3015C430AB6B6A
+:105DD000F7EA136BAB6AF7D5D3C2EDD9C28BC5C056
+:105DE000A1785CF9F3D5D2ABE04707FFC770E04676
+:105DF00007FFC740EE06000CE02C03FEF608064441
+:105E0000F4090744F4080646F609064A0807F405AB
+:105E1000004A5C0BEDBB0014C050A1775CFA5CFB40
+:105E2000201C580CE08A006FE04C07FFE084009CC7
+:105E3000F7DCD28BEDEA11F6EFE61217EE178000D1
+:105E4000F1B704200E0A5C0BEDBE001FEFBB001F74
+:105E5000D822E41B000FF40C1200F6061200F7BC67
+:105E600003E1F8061730F7B60201E0460020C0D47F
+:105E7000EC0C1120F606094BF40C0A4C184BF406F6
+:105E8000094A20B60C17CAABF406094BC640300AC3
+:105E900020B60C17CA3BE419000FF00C1200F205F3
+:105EA0001200F7BC03EAF8051730F7B5020AE0451F
+:105EB0000020C0D4EA0C1120F2050949F00C0A4C6C
+:105EC0001849F005094820250A16C8FBF0050949BC
+:105ED000C420300820250A16C88BE419000FE41BE3
+:105EE000000F144B1049E04707FFC091580BC381C6
+:105EF000E04607FFC3815809C360C3285809C3306F
+:105F0000C2F85C3C2FFCF1BC04C0E04C0020C11482
+:105F1000F80811200E46EE0C0A47F408094912470A
+:105F2000F40C0A4AF6080949124AF60C0A4BC83B17
+:105F3000F8081120F9B90000C030F60809490E46EA
+:105F4000EDEA1016F40C0A4AF3EA1007F60C0A4AB6
+:105F5000300BC71B1C9BE61B8000300AD8223FFB7E
+:105F60003FFAD822F06B0000EDBE001FEFBB001F10
+:105F7000300AD822F7E9200BE61B8000F9D9C28B42
+:105F8000E04C07FF5E1C3FFA3FFB5EFC58175809C8
+:105F9000F5B800001B071B0E5EFC0000EE19800028
+:105FA000F7E9200CE08600CAEBCD40E0169CE61C29
+:105FB0008000BFDBBFD9103AF20B1300C0921697D6
+:105FC000129B0E991497109A0E98EE1C8000F607FB
+:105FD0001614AB7BF7EA135BAB7ABFBBF206161461
+:105FE000C440AB79F3E81359AB78BFB9E04707FF7A
+:105FF000C4F00E26C120EC051120E0460020C7C2E7
+:10600000F005094EF2050945F0060A48F2060A496C
+:106010000A48580E5F1E1C48101AF609014BF60676
+:106020001200C0E0C783EC0E1120F606094BF40EF7
+:106030000A4E1C4BF406094A0C17E08A0039F40991
+:106040001515AB9AF5EB115AAB9BF7D7D28B184BC2
+:10605000FC178000EDBA0000F7B701FF0E395F2989
+:10606000120A5C0BE3CD80E0AB79F3E81359AB780F
+:10607000F3E8100EF9B60101EE0E1100F9B70001B8
+:10608000EFBB001FF7EA100EF9B70000CB0BBFDB28
+:10609000F7EA100EC081E04607FFC050F9E7114B48
+:1060A000E3CD80E03FFA3FFBE3CD80E05C372FF7A4
+:1060B000F1B704C0E0470020C114EE081120F40835
+:1060C00009495F16F4070A4A0C4AF6080949F5E936
+:1060D000100AF4070A4B3007CB3BEE081140F608D4
+:1060E000094914495F16F6070A4A0C4A300B300773
+:1060F000CA7BE3CD80E0F1B604C0F00E1700C040CB
+:10610000F205094E104EF2060A483009580E5F1E7D
+:106110001C48C83BF4061200F9B70300F9B60300A7
+:10612000F9BC0300F7B602E0F406094B300A0C177D
+:10613000FE9AFFBEC85B0000EE198000F7E9200C54
+:10614000FE96FF2EEBCD40E0169CE61C8000BFDBE8
+:10615000BFD9123BC0721697129B0E991497109AD2
+:106160000E98300EEFDBC28BF7DBC014B5ABEDD968
+:10617000C28BC5F0F3D9C014B5A9E04707FFC250E0
+:106180000E26C0F0EC051120E0460020C352F005B9
+:10619000094EF2050945F0060A48F2060A490A487E
+:1061A000100AF609004BEDBB0015C340F7D7D28BA0
+:1061B000184BF9DAC001184EEE1E8000F1BE042023
+:1061C0001C0A5C0BE3CD80E0B5CBF7EA100EC101F1
+:1061D000E04607FFC030E3CD80E0B5C9F3E8100E1C
+:1061E000C071300AFC1B7FF0184BE3CD80E03FFA12
+:1061F0003FFBE3CD80E0F1B604C0F00E1700C060B5
+:10620000F205094E58085F18104EF2060A48300988
+:10621000CC8BFDEE101EA19B5D0A5D0E2FF7E047B3
+:1062200007FFF9BA0000F9BB0000F9BE0000CBFB84
+:1062300030165807CA31B5CB100AF609004B184B77
+:10624000E3CD80E058175809F5B800001B071B0E76
+:106250005EFC0000580B5E6DF60C1501B59CE02C41
+:1062600003FF5E3DF80C111F1699AB7BBFBBF7EA2D
+:10627000135BF60C0A4BA1795E2B5C3B5EFB581757
+:106280005809F5B800001B071B0E5EFCF8CB000098
+:10629000300CC038189B5C4B300A5E0BD401E069AF
+:1062A000041EF6081200C170C0C3F00E1120F608DB
+:1062B000094BF40E0A4E1C4BF408094A1019C0B8D9
+:1062C000F4081200F9B80300F7B802E0F408094B2B
+:1062D000300A10195809E08900305C392FF9E0497B
+:1062E0000036C043300B300AC2682F69F208112013
+:1062F000E0490020C0B2F408094EF6080948F40944
+:106300000A4AF6090A4B104BC088F608094E144E8B
+:10631000169A300BF4090A4AEDBA0000C0921C7EAE
+:10632000C041EDBA0001C0422FFAF7BB02FF5CFC8E
+:106330005D0B5D0AD802E06803FFEDBA000BF7B809
+:1063400000FF100A5C0BF7B903FEE04907FFC055D8
+:10635000300AFC1BFFE0C0C8EDBB001FF7B901010C
+:10636000AB9AF5EB115AA17BAB9BF7E9115BA17CD2
+:106370005D0BD80258175809F5B800001B071B0E13
+:106380005EFC103AF20B1300C080A17BA179144B84
+:10639000124B104B5E0F5EFDA17BFC1CFFE0580A08
+:1063A000F80B13005E8F5EFD58175809F5B8000012
+:1063B0001B071B0E5EFC1ADE1AD7A17B5F3CA1797E
+:1063C0005F375CFCFC1EFFE0580AFC0B1300E08BFF
+:1063D000001D5808FC091300E08B0018580BF5BA93
+:1063E0000000C1501B071B0E583CC0A0581CC033F6
+:1063F0005E0F5E1D103AF20B13005E2F5E3D1438E7
+:10640000F60913005E2F5E3D1B07D80A58175F0C74
+:106410005809F5B800001B071B0E5E0F5EFC1ADE64
+:106420001AD7A17B5F3CA1795F375CFCFC1EFFE0C3
+:10643000580AFC0B1300E08B001D5808FC091300E0
+:10644000E08B0018580BF5BA0000C1501B071B0E5B
+:10645000583CC0A0581CC0335E0D5E1F103AF20BB2
+:1064600013005E2D5E3F1438F60913005E2D5E3F6B
+:106470001B07D80A58175F1C5809F5B800001B07FE
+:106480001B0E5E0D5EFCD70358175809F5B80000C7
+:106490001B071B0E5EFC0000EBCD40FFF7E9200E52
+:1064A000F6071614A97BF7EA137BA97ABDBBE41B98
+:1064B0003FFFABD7E08000CCE04707FFE08400B5AA
+:1064C000F2061614A979F3E81379A978BDB9E4198D
+:1064D0003FFFABD6E08000E2E04607FFE08400B279
+:1064E0000C17FE37FC01FC1C8000F8031601E9D9EB
+:1064F000C3625CD4E7D4D382E6090644F8050125DB
+:10650000E6050644EA031502E6090644F8050125F6
+:10651000E6050644EA031502E6090644F8050125E6
+:10652000E6050644EA031502E6080640E4090740CA
+:10653000E609064402045C05A365EBE413E5A364E5
+:106540005C34F8050145E6040640E4050740E6052D
+:10655000064402045C05EA031502E7E413E3E802DB
+:106560001502E6080640E4090740E609064402046D
+:106570005C05A365EBE413E5A3645C34F805014511
+:10658000E6040640E4050740E605064402045C050F
+:10659000EA031502E7E413E3E8021502E60A0640FF
+:1065A000E40B0740E60B064202025C03EDB3001C5D
+:1065B000C090A1725CF32017A39AF5EB11DAA39BAC
+:1065C000C058A58AF5EB11CAA58B5807E08A008B45
+:1065D000E012FF00E8120080E6080640E4090740E8
+:1065E000E4080644E60906480005F00100485C0995
+:1065F000F9D2C10158045C25F4081300F609130010
+:106600005F36F8061700E40A1608F5E3118AE60B70
+:106610001608F7D7D28BEDBE001FEFBB001F0C0A88
+:106620005C0BE3CD80FFE41B000F144BE08100A75F
+:10663000F2061614ABD6E04607FFE08100A4C9E8D5
+:10664000E419000F1049E081009AC928A37BF7EAFA
+:1066500013DBA37AF5EB1004E08000A0F60412002F
+:10666000C170C0C3E8051120F604094BF4050A45C2
+:106670000A4BF404094A0817C0B8F4041200F9B42C
+:106680000300F7B402E0F404094B300A0817A38AA8
+:10669000F5EB11EAA38BC11BA379F3E813D9A37817
+:1066A000F3E81004C6F0F2041200C170C0C3E8059C
+:1066B0001120F2040949F0050A450A49F004094885
+:1066C0000816C0B8F0041200F9B40300F7B402E0F1
+:1066D000F004094930080816A388F1E911E8A389F4
+:1066E000CFCA5C372FF7F1B704C0E0470020C15490
+:1066F000EE061120E4070A42E606094C1842E607B6
+:106700000A43F4060941F4070A4AF606094C184AF6
+:10671000F6070A4B3000C158EE061120F9B0000010
+:10672000F9BC0000C050F4060940F606094CE60723
+:106730000A423003F4070A411841F6070A4A300BAF
+:10674000E012FF00E8120080E6080646E40907466A
+:10675000E4080644E60906480C05F00700485C0911
+:106760003007F9D2C1010034E2051300C46B1C9B51
+:10677000E61B8000300AE3CD80FF3FFB300AE3CD0B
+:1067800080FFF5EB1004C0901C9BE61B8000EA1B09
+:106790007FF0300AE3CD80FFF1E91015CEF0E9D9A2
+:1067A000C28BE04407FFCE41F1E910C5CE10CE6B9D
+:1067B000EBCD40EF1A97201D1095109C1492129E5D
+:1067C0001493169816965809C4011635E08B008C60
+:1067D0005805C0513019F2050D08109CF80E120032
+:1067E000C4B1EC0C010BEBDCC010F8061610E60A85
+:1067F0001610F6060D08F5E9110BEA08024A163ADA
+:10680000E0880009180B163CE08B0005163AF7DC0F
+:10681000EB0BF60A0109F5D3C010F2060D08F5E9F5
+:10682000110BEA08024A163AE0880009180B163CD8
+:10683000E08B0005163AF7DCEB0B141BF60E0A4A48
+:10684000300B2FFDE3CD80EF1639FE9BFFFCF201EC
+:106850001200E081008116395F3814355F891248D3
+:10686000E2081800C060E405010AF60E0146149320
+:106870000C9B069ACE7BEC0E094BFC091120E40917
+:106880000A4AF80E094CF5EB1003EC090A49EBDC57
+:10689000C010F8061610E60A1610F2060D08F5E903
+:1068A000110BEA0802491639E0880006180B163C5D
+:1068B000E08800BEF6090109F5D3C010F2060D0804
+:1068C000F5E9110BEA0802491639E0880009180BAE
+:1068D000163CE08B00051639F7DCEB0B121BE40EBF
+:1068E0000943C86BEA0E1200C0D0F60E0949FC0835
+:1068F0001120EA0E094CF4080A48F40E0943F1E9A4
+:106900001006F8051610E6081610EC050D0AEDDC69
+:10691000C010F1EB110BEC0A02491639E0880006B1
+:10692000180B163CE0880088F6090109F5D3C01061
+:10693000F2050D08F5E9110BEC0802491639E0885B
+:106940000009180B163CE08B00051639F7DCEB0B41
+:10695000121BC75BF201094BE2031120F401094944
+:10696000EA030A4AF001094CF5EB1006EF49FFFC77
+:10697000E4030A4AEA010940F5EC100BF0030A4966
+:10698000EC051610E5D6C010F2050D08F60A161033
+:10699000109EF5E9110CA5381838E088000C201E6F
+:1069A0000C0C1836E08B00071838F7BE0B01F9D62F
+:1069B000EB0CF8080109F5DBC010F2050D08109C7E
+:1069C000F5E9110BA5381638E088000C201C0C0BDB
+:1069D0001636E08B00071638F7BC0B01F7D6EB0B29
+:1069E000F9EE1109101BF2000648109E129C183B8C
+:1069F000C152FC000109F806014C129EEEFAFFFCA0
+:106A0000F40E0109F60C0148F0010A4BF2010A49A3
+:106A1000F0030948F3E8100AC15B183B5F08EEFA7F
+:106A2000FFFC1C3A5F391268CEA0CE4B1639F7DC5A
+:0C6A3000EB0BC41B1639F7DCEB0BC77B2B
+:106C0000C0080000C0080000C0080000C008000064
+:106C1000C0080000C0080000C0080000C008000054
+:106C2000C0080000C0080000C0080000C008000044
+:106C3000C0080000C0080000C0080000C008000034
+:106C4000C0080000C00800000000000000000000B4
+:106C5000C00800000000000000000000000000006C
+:106C6000C00800000000000000000000000000005C
+:106C7000C00800000000000000000000000000004C
+:106C80000000000000000000000000000000000004
+:106C900000000000000000000000000000000000F4
+:106CA00000000000000000000000000000000000E4
+:106CB00000000000000000000000000000000000D4
+:106CC00000000000000000000000000000000000C4
+:106CD00000000000000000000000000000000000B4
+:106CE00000000000000000000000000000000000A4
+:106CF0000000000000000000000000000000000094
+:106D0000C0080000300CF01F0012580CF80F1710CC
+:106D1000D603301CF01F000E580CF80F1710D603C6
+:106D2000302CF01F000B580CF80F1710D603303C16
+:106D3000F01F0007580CF80F1710D60300000104CD
+:106D40004000011280000120C000012E80012E149D
+:106D50000000000000000000000000000000000033
+:106D60000000000000000000000000000000000023
+:106D70000000000000000000000000000000000013
+:106D80000000000000000000000000000000000003
+:106D900000000000000000000000000000000000F3
+:106DA00000000000000000000000000000000000E3
+:106DB00000000000000000000000000000000000D3
+:106DC00000000000000000000000000000000000C3
+:106DD00000000000000000000000000000000000B3
+:106DE00000000000000000000000000000000000A3
+:106DF0000000000000000000000000000000000093
+:106E0000434D3A206F7574206F66206D656D6F720B
+:106E1000790A0000434D3A20636F756C64206E6FF1
+:106E200074207265676973746572206576656E7427
+:106E30002063620A00000000434D3A20696E6974C5
+:106E400069616C697A65640A00000000434D3A206C
+:106E5000636F6E6E656374656420746F2025730ABA
+:106E600000000000434D3A20636F6E6E656374202E
+:106E70006661696C65642C207363616E6E696E6710
+:106E80000A000000434D3A20636F756C64206E6FFA
+:106E900074207374617274207363616E2061667410
+:106EA000657220636F6E6E656374206661696C2124
+:106EB0000A000000434D3A20646973636F6E6E658B
+:106EC000637465640A000000434D3A20636F6E6E80
+:106ED000656374696F6E206C6F73742C20736361CB
+:106EE0006E6E696E670A0000434D3A20636F756CE1
+:106EF00064206E6F74207374617274207363616EAA
+:106F000020616674657220636F6E6E656374206CB9
+:106F10006F7374210A000000434D3A207363616E61
+:106F200020636F6D706C657465640A00FFFFFFFF7E
+:106F3000FFFF0000434D3A20526F616D696E67207C
+:106F400066726F6D207273736920256420746F20E0
+:106F500025640A00434D3A204E6F2063616E6469D8
+:106F60006461746520666F756E6420666F7220734D
+:106F700073696420222573220A000000434D3A20E1
+:106F80006661696C656420746F20636F6E6E656303
+:106F9000740A0000434D3A206661696C6564207490
+:106FA0006F207363616E0A00434D3A20756E68610D
+:106FB0006E646C6564206576656E740A000000007E
+:106FC00043434D500000000057455000544B49507A
+:106FD00000000000253032782D253032782D253004
+:106FE00032782D253032782D253032782D253032EB
+:106FF00078000000256C752E256C752E256C752E7D
+:10700000256C75007373696420746F6F206C6F6EEC
+:107010006720286D6178202564290A0025732000E7
+:10702000222573220000000020525353492025647A
+:107030002064426D200000002041642D486F6320D1
+:1070400000000000202857455020656E637279705B
+:1070500074696F6E290000002028544B4950206548
+:107060006E6372797074696F6E2900002028434343
+:107070004D5020656E6372797074696F6E290000DF
+:107080002020200025303258200000003A20000047
+:10709000256300006E6F206E65747320666F756ED9
+:1070A000640A0000496E76616C6964206C656E67E5
+:1070B00074680A0025642E25642E25642E2564003C
+:1070C000286E756C6C2900000200000000B71B00E0
+:1070D0000800000100010000696E69745368656C66
+:1070E0006C000000776C5F636D5F7363616E5F635C
+:1070F00062000000776C5F636D5F636F6E6E5F634D
+:1071000062000000776C5F696E69745F636F6D7019
+:107110006C6574655F636200492D5B25735D205368
+:1071200063616E20436F6D706C65746564210A0045
+:10713000492D5B25735D205374617274696E6720FD
+:10714000434D2E2E2E0A00006661696C6564207422
+:107150006F20696E697420776C20636F6E6E206D8E
+:1071600067720000572D5B25735D20537069206E98
+:107170006F7420696E697469616C697A65640A006C
+:10718000492D5B25735D20446973636F6E6E656383
+:1071900074696F6E2063622E2E2E0A006C696E6B0E
+:1071A00020646F776E2C2072656C65617365206456
+:1071B0006863700A000000006C696E6B20646F7772
+:1071C0006E0A0000492D5B25735D20436F6E6E656E
+:1071D0006374696F6E2063622E2E2E0A0000000019
+:1071E0006C696E6B2075702C20636F6E6E656374B6
+:1071F000656420746F20222573220A00492D5B25C7
+:10720000735D20537461727420444843502E2E2EB7
+:107210000A00000072657175657374696E67206499
+:10722000686370202E2E2E20000000004F4B0A00B5
+:10723000492D5B25735D20537461727420444E5355
+:107240002E2E2E0A00000000492D5B25735D20497B
+:1072500050207374617475732063622E2E2E0A00A1
+:10726000626F756E6420746F2025730A0000000041
+:10727000572D5B25735D20496E7465726661636589
+:10728000206E6F74207570210A000000492D5B2567
+:10729000735D205368656C6C20696E69742E2E2EA8
+:1072A0000A0000007363616E00000000636F6E6E81
+:1072B000656374007365746B657900007374617441
+:1072C0007573000064656275670000007474637014
+:1072D00000000000777061737300000064706173D8
+:1072E00073000000676574486F73740073657444BD
+:1072F0004E5300007374617274546370537276005D
+:1073000041726475696E6F205769666920537461B4
+:10731000727475702E2E2E205B25735D0A0000009E
+:10732000547565204F63742032332030383A343539
+:107330003A35362032303132000000006F7574204B
+:107340006F66206D656D6F7279000000492D5B25B9
+:10735000735D2068733A25702073697A653A3078D6
+:107360002578206E657469663A25702073697A65A0
+:107370003A307825780A00006661696C656420748B
+:107380006F207072657061726520666F7220666929
+:10739000726D7761726520646F776E6C6F61640ADD
+:1073A00000000000492D5B25735D204D6F64653A38
+:1073B00020307825780A0000436F756C64206E6F6A
+:1073C000742064657465637420776C2064657669E5
+:1073D00063652C2061626F7274696E670A00000039
+:1073E000496E76616C6964206669726D7761726559
+:1073F00020646174612C2061626F7274696E670A27
+:10740000000000004661696C656420746F2073742D
+:1074100061727420776C20696E697469616C697A35
+:107420006174696F6E0A0000312E302E300000004A
+:10743000776C5F636D5F646973636F6E6E5F6362C9
+:107440000000000069705F7374617475735F63623C
+:10745000000000006D61696E00000000636F756CD4
+:1074600064206E6F7420616C6C6F6361746520665C
+:1074700069726D77617265206275666665720A0071
+:107480000A24200024200000617661696C61626C2E
+:107490006520636F6D6D616E64733A0A00000000D1
+:1074A000202025730A000000636D645F64656C70C2
+:1074B0006173730075736167653A206474203C31B1
+:1074C0007C303E0A000000006F666600446562750D
+:1074D00067204F46460A00007072696E7400000013
+:1074E000446562756720656E61626C65643A203040
+:1074F0007825780A00000000566572626F73652077
+:10750000656E61626C65643A20307825780A000007
+:107510004465627567204F4E0A000000757361670D
+:10752000653A206465627567203C73656374696FB2
+:107530006E3E203C6C6576656C3E0A09736563742B
+:10754000696F6E3A20696E69742C20636D2C20730C
+:1075500070692C20746370202C207574696C2C2049
+:107560007761726E0A096C6576656C20203A20306E
+:1075700020286F6666292C203120286F6E292C2048
+:10758000322028766572626F7365290A096F723A34
+:10759000206465627567207072696E742F6F6E2F3C
+:1075A0006F66660A00000000696E697400000000E2
+:1075B0007370690074637000636D00007574696CAA
+:1075C000000000007761726E000000006E6F6E6553
+:1075D0000000000044656C6574696E672057455073
+:1075E000206B6579730A000075736167653A2073D3
+:1075F00065746B6579203C6B65795F6964782028D8
+:10760000302D33293E203C6B657920696E206865FA
+:10761000783E0A09206F723A207365746B65792091
+:107620006E6F6E650A00000020574550206B65792B
+:10763000206D7573742062652031302028574550C5
+:107640002D343029206F7220323620285745502D96
+:1076500031303429206469676974730A00000000BE
+:10766000776C5F6170692076657273696F6E2076E2
+:10767000322E372E300A00006661696C6564207412
+:107680006F20676574206D61632061646472657347
+:10769000730A0000687720616464723A2025730AD7
+:1076A000000000006C696E6B207374617475733A2E
+:1076B00020000000697020616464723A2025730A1A
+:1076C00000000000697020696E7465726661636510
+:1076D00020697320646F776E0A000000646863702D
+:1076E000203A2000656E61626C65640A000000004B
+:1076F00064697361626C65640A0000003D3D3E2070
+:10770000444E53313A2025730A0000003D3D3E208F
+:10771000444E53323A2025730A00000075736167A6
+:10772000653A207374617274546370537276203CAE
+:10773000706F72743E203C736F636B3E0A000000F2
+:10774000537461727420544350207365727665726D
+:10775000206F6E20706F727420256420736F636BCE
+:107760002025640A000000005374617274205443A1
+:107770005020736572766572206F6E20706F727420
+:1077800020256420736F636B202564204641494C9B
+:1077900045440A0075736167653A20736574646EC9
+:1077A00073205B312D325D206161612E6262622E39
+:1077B0006363632E6464640A0000000053657420F0
+:1077C000444E532073657276657220256420746F71
+:1077D0002025730A0000000075736167653A206711
+:1077E0006574486F7374203C686F73746E616D6567
+:1077F0003E0A000075736167653A207770617373A4
+:10780000203C737369643E203C70617373706872CE
+:107810006173653E0A0000002573203A20466169C5
+:107820006C656420746F2061646420706173737090
+:1078300068726173650A000075736167653A206458
+:1078400070617373203C737369643E0A000000002A
+:107850002573203A204661696C656420746F20644A
+:10786000656C6574652070617373706872617365AF
+:107870000A00000075736167653A206970203C69F1
+:10788000703E203C6E65746D61736B3E203C676199
+:1078900074657761792D69703E0A000020206F724F
+:1078A000203A206970206E6F6E652028746F206505
+:1078B0006E61626C652044484350290A0000000054
+:1078C00075736167653A20636F6E6E656374203C03
+:1078D000737369643E0A0000636D645F736574705E
+:1078E000617373000F011101100113010000E10029
+:1078F0000804000000000000060005000E01110150
+:1079000010010F01696E736572745F7042756600D5
+:1079100066726565744461746149647800000000B2
+:107920006765745F70427566000000006973417698
+:1079300061696C54637044617461427974650000DC
+:10794000492D5B25735D202570205B25642C256403
+:107950005D0A0000572D5B25735D206964784275D0
+:1079600066206F7574206F662072616E67653A20BD
+:1079700025640A00492D5B25735D2025702069640C
+:10798000783A25640A000000572D5B25735D20427C
+:107990007566203D3D204E554C4C2100492D5B2500
+:1079A000735D206765743A25642025702025640A7C
+:1079B00000000000492D5B25735D2046726565203F
+:1079C00025700A00492D5B25735D20636865636B34
+:1079D0003A25642025642025700A0000492D5B2586
+:1079E000735D2046726565202570206F746865722E
+:1079F00020627566202564207461696C3A256420D4
+:107A0000686561643A25640A00000000572D5B2513
+:107A1000735D204F76657277726974696E67206254
+:107A20007566666572202570206964783A25642140
+:107A30000A000000572D5B25735D20706275665F3C
+:107A4000636F70795F7061727469616C20666169DF
+:107A50006C65643A207372633A25702C20647374E9
+:107A60003A25702C206C656E3A25640A00000000EF
+:107A7000572D5B25735D204F766572777269746947
+:107A80006E672064617461205B25642D25645D212F
+:107A90000A000000492D5B25735D20496E736572F5
+:107AA000743A2025703A25642D2564205B25642CCA
+:107AB00025645D0A000000006672656574446174A7
+:107AC00061000000676574546370446174614279B9
+:107AD0007465000080005CE680005D1080005CF64C
+:107AE00080005D1080005D0680005D1080005CDE1F
+:107AF00080005D1080005CE280005D0280005CF22E
+:107B0000617463705F737461727400006172645FAA
+:107B10007463705F73746F70000000006973446178
+:107B2000746153656E740000617463705F706F6C94
+:107B30006C000000617463705F726563765F6362FE
+:107B400000000000636C6F7365436F6E6E65637455
+:107B5000696F6E73000000007463705F636F6E6E18
+:107B60006563745F636200007463705F6461746175
+:107B70005F73656E74000000617463705F706F6C9A
+:107B80006C5F636F6E6E0000636C6F73655F636F35
+:107B90006E6E0000636C65616E536F636B5374614E
+:107BA00074655F6362000000492D5B25735D2025CD
+:107BB0006429205761697420746F2073656E642096
+:107BC000646174610A000000492D5B25735D2054D7
+:107BD0004350206E6F7420696E697469616C697AB4
+:107BE000656420747463703A257020747063623A1F
+:107BF0002570206C7063623A25700A00492D5B2560
+:107C0000735D2054544350205B25702D25705D3AE0
+:107C100020636F6E6E6563742025642025640A00FE
+:107C2000492D5B25735D206C6566743D2564206C71
+:107C3000656E3A2564207463705F736E6462756666
+:107C40003A25640A00000000492D5B25735D20255C
+:107C50006429207463705F777269746520257020D1
+:107C600073746174653A2564206C656E3A256420EE
+:107C70006572723A25640A00492D5B25735D207494
+:107C800063705F6F75747075743A206C6566743DCF
+:107C90002564206E6577206C6566743A25640A0059
+:107CA000572D5B25735D2054544350205B25702D68
+:107CB00025705D3A207463705F7772697465206621
+:107CC00061696C6564206572723A2564206F72691F
+:107CD000674C656E3A2564206C656E3A25640A002F
+:107CE000492D5B25735D206275663A2570206C65B1
+:107CF0006E3A25640A000000572D5B25735D2074E1
+:107D0000746370203D3D204E554C4C210A0000000C
+:107D1000492D5B25735D20434C493E20703D257005
+:107D2000205F747463703D257020737461746528DE
+:107D300074706362293A2564207374617465286CD9
+:107D4000706362293A25640A00000000492D5B2512
+:107D5000735D2025730A0000492D5B25735D20505B
+:107D600061636B65742073656E74207063623A257D
+:107D700070206C656E3A2564206475723A25642023
+:107D80006C6566743A256420636F756E743A256479
+:107D90000A000000492D5B25735D20545443502098
+:107DA0005B25705D3A20636C65616E536F636B5346
+:107DB000746174655F63622025640A00572D5B253A
+:107DC000735D2054544350205B25705D3A20636FEF
+:107DD0006E6E656374696F6E206572726F723A20A1
+:107DE0002564206172673A25700A000041626F7253
+:107DF0007420636F6E6E656374696F6E0A000000B5
+:107E0000492D5B25735D20436C6F73696E67207429
+:107E10007063625B25705D3A2073746174653A30FB
+:107E2000782578206572723A25640A00572D5B2503
+:107E3000735D202D2D2D2D2D2D2D2D2D2D2D2D2D09
+:107E40002D2D2D2D2D2D2D2D2D0A0000492D5B259D
+:107E5000735D20747463703A257020747063623AA5
+:107E600025702073746174653A2564206C706362B8
+:107E70003A25702073746174653A25640A00000025
+:107E8000572D5B25735D207474637020616C72657F
+:107E9000616479206465616C6C6F636174656421F1
+:107EA0000A000000492D5B25735D20436C6F7369E8
+:107EB0006E6720747063623A2073746174653A303F
+:107EC000782578206572723A25640A00492D5B2571
+:107ED000735D20436C6F73696E67206C7063623AE8
+:107EE0002073746174653A30782578206572723A2F
+:107EF00025640A00572D5B25735D20747463702020
+:107F00003D204E554C4C210A00000000492D5B25B8
+:107F1000735D2044657374726F79205443502063FD
+:107F20006F6E6E656374696F6E2E2E2E737461743E
+:107F3000653A25640A000000492D5B25735D2043E6
+:107F40006C6F73696E6720636F6E6E656374696FC3
+:107F50006E2E2E2E73746174653A25640A0000003B
+:107F6000572D5B25735D2054544350205B25705D75
+:107F70003A2066726565206D656D6F72790A000042
+:107F8000572D5B25735D2054544350205B25705D55
+:107F90003A20636F756C64206E6F7420616C6C6F37
+:107FA0006361746520706275660A0000572D5B2559
+:107FB000735D2054544350205B25705D3A207564F6
+:107FC000705F73656E642829206661696C65640A58
+:107FD00000000000572D5B25735D20545443502052
+:107FE0005B2D5D3A20696E76616C6964206D6F640B
+:107FF000650A0000572D5B25735D205454435020C3
+:108000005B2D5D3A20696E76616C6964206E6275E5
+:10801000660A0000572D5B25735D205454435020A1
+:108020005B2D5D3A20696E76616C696420627566CD
+:108030006C656E0A00000000572D5B25735D2054AF
+:10804000544350205B2D5D3A20636F756C64206E45
+:108050006F7420616C6C6F63617465206D656D6F0A
+:10806000727920666F7220747463700A00000000D9
+:1080700054544350205B25705D3A20636F756C64E7
+:10808000206E6F7420616C6C6F6361746520706327
+:10809000620A000054544350205B25705D3A2075FD
+:1080A000647020636F6E6E656374206661696C65D1
+:1080B000640A0000572D5B25735D20545443502003
+:1080C0005B25705D3A20636F756C64206E6F742061
+:1080D000616C6C6F63617465207063620A000000FC
+:1080E000572D5B25735D2054544350205B25705DF4
+:1080F0003A20636F756C64206E6F7420616C6C6FD6
+:1081000063617465207061796C6F61640A000000BE
+:10811000492D5B25735D205B747063625D2D257056
+:10812000207061796C6F61643A25700A000000006C
+:10813000572D5B25735D2054544350205B25705DA3
+:108140003A2074637020636F6E6E6563742066619D
+:10815000696C65640A000000492D5B25735D20424F
+:1081600045464F52452042494E4420747463703A4C
+:108170002570206C7063623A2570207063623A2526
+:10818000700A0000492D5B25735D205B747063628B
+:108190005D2D6C6F63616C3A25642072656D6F7440
+:1081A000653A25642073746174653A25640A000099
+:1081B000572D5B25735D2054544350205B25705D23
+:1081C0003A2062696E64206661696C65642065723C
+:1081D000723D256420506F727420616C7265616419
+:1081E0007920757365640A00572D5B25735D2054F3
+:1081F000544350205B25705D3A206C697374656E42
+:10820000206661696C65640A00000000572D5B25DB
+:10821000735D2054544350205B25705D3A206C6997
+:108220007374656E206661696C6564207470636246
+:10823000205B25705D20696E206C697374656E200B
+:108240006D6F64650A000000572D5B25735D205338
+:108250007461727420736572766572204641494C70
+:108260004544210A00000000727800007478000084
+:1082700075647000492D5B25735D20545443502074
+:108280005B25702D25705D3A206E6275663D256414
+:108290002C206275666C656E3D25642C20706F72B3
+:1082A000743D2564202825732F2573290A000000BA
+:1082B0007574726C3A6E3A703A760000257300005D
+:1082C000492D5B25735D2041524420544350205B6F
+:1082D00025705D3A20616363657074206E65772058
+:1082E0005B25705D0A000000492D5B25735D206CE5
+:1082F0006F63616C3A25642072656D6F74653A2511
+:10830000642073746174653A25640A00572D5B25F7
+:10831000735D20416363657074696E6720616E6F81
+:108320007468657220636F6E6E656374696F6E3A10
+:108330002025702D25700A00572D5B25735D204187
+:10834000524420544350205B25705D206172673D8C
+:10835000257020726574726965733D25640A00009A
+:10836000572D5B25735D2041524420544350205BC0
+:1083700025702D25705D206172673D257020726526
+:1083800074726965733D25642070656E642E636C3C
+:108390006F73653A25640A00492D5B25735D2041A2
+:1083A000524420544350205B25702D25705D20746D
+:1083B000727920746F20636C6F73652070656E64D2
+:1083C000696E673A25640A00572D5B25735D20416D
+:1083D000524420544350205B25702D25705D206150
+:1083E00072673D257020726574726965733D2564FE
+:1083F0000A000000572D5B25735D20415244205434
+:108400004350205B25702D25705D206172673D25EE
+:108410007020726574726965733D25642070656EA5
+:10842000642E636C6F73653A256420636F6E6E3AD9
+:1084300025640A00492D5B25735D207063623A252F
+:108440007020706275663A202570206572723A2538
+:1084500064206C656E3A25640A000000492D5B2596
+:10846000735D206C656E3A25640A0000492D5B251A
+:10847000735D20617463705F726563765F63622011
+:10848000703D4E554C4C0A00572D5B25735D2065A1
+:1084900072723D256420703D25700A00492D5B25D0
+:1084A000735D20436C6F73696E6720636F6E6E65DA
+:1084B0006374696F6E7320747063625B25705D20F6
+:1084C00073746174653A30782578202D206C706360
+:1084D000625B25705D2073746174653A2030782585
+:1084E000780A00007564705F73656E645F6279740A
+:1084F00065730000617463705F636F6E6E5F6572B9
+:10850000725F636200000000617463705F636F6E8E
+:108510006E5F636C695F6572725F6362000000008A
+:108520006172645F7463705F7374617274000000E1
+:1085300073656E645463704461746100676574535D
+:1085400074617465546370007463705F73656E6406
+:108550005F64617461000000617463705F616363F4
+:108560006570745F636200006172645F7463705F62
+:1085700064657374726F79006765745F7265706C9F
+:10858000795F6964785F6E65745F63620000000004
+:1085900073746172745F7365727665725F74637011
+:1085A0005F636D645F63620073656E644572726FD2
+:1085B0007200000073746172745F7363616E5F6E4A
+:1085C00065745F636D645F63620000007374617261
+:1085D000745F7365727665725F746370000000008B
+:1085E0006765745F726573756C745F636D645F63F8
+:1085F000620000007365745F6E65745F636D645F35
+:10860000636200006765745F7265706C795F686FA4
+:1086100073745F62795F6E616D655F636200000015
+:108620006765745F636C69656E745F7374617465AC
+:108630005F7463705F636D645F6362006765745F3E
+:108640007265706C795F7363616E5F6E6574776F6E
+:10865000726B735F636200000D000B000C000A0078
+:108660007370695F706F6C6C000000007365744D0F
+:108670006170536F636B00007365745F6B65795F46
+:10868000636D645F636200007365745F7061737330
+:108690007068726173655F636D645F6362000000A0
+:1086A00073746F705F636C69656E745F7463705F21
+:1086B000636D645F636200007365745F72657375F8
+:1086C0006C745F636D6400007365745F70617373D5
+:1086D0007068726173655F636D645F636200000060
+:1086E000666F756E64486F737442794E616D650094
+:1086F0006765745F73746174655F7463705F636DE5
+:10870000645F6362000000006765745F64617461A8
+:108710005F7463705F636D645F6362007365745F51
+:10872000726573756C745F636D640000696E697463
+:10873000537069007365745F6B65795F636D645F27
+:1087400063620000617661696C5F646174615F748B
+:1087500063705F636D645F636200000063686563FC
+:108760006B4D7367466F726D61740000676574537B
+:1087700074617274436D6453657100007374617247
+:10878000745F636C69656E745F7463705F636D645E
+:108790005F6362007265715F7265706C795F686FAC
+:1087A00073745F62795F6E616D655F636200000084
+:1087B000572D5B25735D2025645D20446973616CD2
+:1087C0006C2E2025642F256420636D643A25640A8D
+:1087D00000000000572D5B25735D2025645D20445B
+:1087E0006973616C6C2E2025640A0000572D5B258F
+:1087F000735D20496E646578206F7574206F662004
+:1088000072616E67653A2025640A0000492D5B2578
+:10881000735D20535349443A25730A00492D5B2563
+:10882000735D20525353493A25640A00492D5B2554
+:10883000735D20454E43543A25640A00492D5B255B
+:10884000735D20536561726368696E6720666F723D
+:1088500020486F73743A2069703D3078257820661F
+:108860006F756E643D25640A00000000492D5B258C
+:10887000735D20666F756E64486F737442794E61E4
+:108880006D653A20466F756E6420486F73743A20A8
+:108890006E616D653D25732069703D307825780ADD
+:1088A00000000000492D5B25735D206966537461EB
+:1088B0007475733A256420726573756C743A256417
+:1088C0000A0000004C69737420436F6D6D616E6423
+:1088D000732066756C6C210A0000000030782578E2
+:1088E00020000000572D5B25735D2025645D204E20
+:1088F0006F7420666F756E6420656E6420636D64AE
+:108900003A20307825780A00492D5B25735D204D8B
+:108910006170205B25642C2025705D0A000000003A
+:10892000492D5B25735D2053504920696E69742E73
+:108930002E2E0A00492D5B25735D20535049206976
+:108940006E697469616C697A6174696F6E206661C1
+:10895000696C656421000000572D5B25735D20451F
+:1089600072726F7220636F6E6669677572696E6787
+:10897000205350490A000000492D5B25735D2025D6
+:10898000732025640A000000572D5B25735D204588
+:108990006E64206F6620636D6420706172616D7318
+:1089A00000000000492D5B25735D20646174614106
+:1089B0007661696C3A25640A00000000492D5B2548
+:1089C000735D20434C493E20703D2570205F7474D8
+:1089D00063703D25702073746174652874706362E0
+:1089E000293A25642073746174653A25640A00008D
+:1089F000492D5B25735D205345523E20703D257007
+:108A0000205F747463703D257020737461746528F1
+:108A100074706362293A2564207374617465286CEC
+:108A2000706362293A25642073746174653A256421
+:108A30000A000000492D5B25735D20737461746525
+:108A40003A25640A00000000492D5B25735D205320
+:108A500063616E206E6F7420636F6D706C657465FA
+:108A600064210A00492D5B25735D204E6574776F84
+:108A7000726B73206E6F7420666F756E64210A00CE
+:108A8000636F756C64206E6F7420616C6C6F6361D2
+:108A9000746520616C6C20677569206E6574206157
+:108AA000727261790A000000636F756C64206E6FEA
+:108AB0007420616C6C6F6361746520616C6C2067FD
+:108AC0007569206E6574730A00000000492D5B25EE
+:108AD000735D202564202D202573205B25645D2D8A
+:108AE000202564202D202564202D20307825780A2B
+:108AF00000000000492D5B25735D20537461727482
+:108B0000204E6574776F726B205363616E2025640D
+:108B10000A000000572D5B25735D206572723D25AC
+:108B2000640A0000492D5B25735D204C6F6F6B69F3
+:108B30006E6720666F7220486F73743A206E616DA5
+:108B4000653D25730A000000492D5B25735D2046B5
+:108B50006F756E6420486F73743A206E616D653D69
+:108B600025732069703D307825780A00492D5B25F2
+:108B7000735D2053746F7020636C69656E7420732D
+:108B80006F636B3A25640A00492D5B25735D2041B4
+:108B90006464723A307825782C20706F72743A25AC
+:108BA000642C20736F636B3A25640A00572D5B2594
+:108BB000735D2050726576696F757320636C6965AB
+:108BC0006E74202570206E6F742073746F707065E2
+:108BD0006420210A00000000492D5B25735D2053AD
+:108BE0007461727420436C69656E74205B30782503
+:108BF000782C2025642C2025645D204F4B210A0011
+:108C0000492D5B25735D20537461727420436C6938
+:108C1000656E74205B307825782C2025642C202507
+:108C2000645D204641494C4544210A00572D5B258F
+:108C3000735D205374696C6C20636F6E6E65637432
+:108C400065642E2E2E776169740A0000572D5B250E
+:108C5000735D20494620646F776E2E2E2E776169F2
+:108C6000740A0000492D5B25735D20537461727492
+:108C700020536572766572205B25642C2025645D27
+:108C8000204F4B210A000000572D5B25735D2053B8
+:108C90007461727420536572766572205B25642C52
+:108CA0002025645D204641494C4544210A000000CE
+:108CB000492D5B25735D20257320706172616D7392
+:108CC0003D25640A00000000492D5B25735D20509E
+:108CD0006173733A2025732025640A00572D5B25A4
+:108CE000735D202573203A204661696C65642074A9
+:108CF0006F20616464207061737370687261736562
+:108D00000A000000436F6E6E65637420746F206EFE
+:108D10006574776F726B2E2E2E0000006572723DA7
+:108D200025640A00572D5B25735D20535349442069
+:108D30006C656E206F7574206F662072616E67655A
+:108D400000000000572D5B25735D2053656E642085
+:108D5000535049206572726F72210A00572D5B25AE
+:108D6000735D20556E6B6E6F776E20636D6420307F
+:108D70007825780A00000000572D5B25735D2025BB
+:108D8000645D20436865636B20666F726D6174205B
+:108D90006D7367206661696C6564210A00000000DC
+:108DA000444F574E00000000555000004946202017
+:108DB000207374617475733A2025730A00000000F3
+:108DC000434F4E4E207374617475733A2025730AB5
+:108DD00000000000536F636B6574206E2E3A2564AB
+:108DE00020616464723A3078257820706F72743A2A
+:108DF00025640A005B747063702D25705D2D5374BB
+:108E0000617475733A25640A000000005B746C633A
+:108E1000702D25705D2D5374617475733A25640A45
+:108E20000000000054544350205B25705D3A20251B
+:108E3000642062797465732070726F636573736503
+:108E4000642C2025642E2564204B422F7320282576
+:108E5000732F2573290A000063616C6C5F72657063
+:108E60006C795F6362000000417373657274696FAF
+:108E70006E2022257322206661696C65642061740E
+:108E8000206C696E6520256420696E2025730A00B8
+:108E90002E2E2F7372632F534F4654574152455F06
+:108EA0004652414D45574F524B2F53455256494319
+:108EB00045532F4C5749502F6C7769702D706F7246
+:108EC000742D312E332E322F48442F69662F6E6554
+:108ED0007469662F776C69662E6300006E6574692D
+:108EE0006620213D204E554C4C00FFFFFFFFFFFF49
+:108EF0002E2E2F7372632F534F4654574152455FA6
+:108F00004652414D45574F524B2F534552564943B8
+:108F100045532F4C5749502F6C7769702D312E33A4
+:108F20002E322F7372632F6E657469662F657468B5
+:108F30006172702E630000006E657469662D3E6874
+:108F400077616464725F6C656E206D757374206206
+:108F500065207468652073616D65206173204554D8
+:108F6000484152505F4857414444525F4C454E205F
+:108F7000666F722065746861727021006368656352
+:108F80006B207468617420666972737420706275F6
+:108F9000662063616E20686F6C6420737472756301
+:108FA00074206574686172705F686472000000000C
+:108FB0007120213D204E554C4C000000712D3E701B
+:108FC00020213D204E554C4C00000000722D3E707B
+:108FD00020213D204E554C4C000000006172705F16
+:108FE0007461626C655B695D2E71203D3D204E555C
+:108FF0004C4C000069203C204152505F5441424C8F
+:10900000455F53495A4500006172705F7461626C3C
+:10901000655B695D2E7374617465203D3D2050452C
+:109020004E44494E47206F7220535441424C4500F4
+:109030006E6F207061636B65742071756575657303
+:1090400020616C6C6F776564210000006E65746947
+:10905000662D3E6877616464725F6C656E203D3D8D
+:10906000204554484152505F4857414444525F4C58
+:10907000454E000043616E2774206D6F7665206F4A
+:109080007665722068656164657220696E20706122
+:10909000636B657400000000000000002E2E2F732B
+:1090A00072632F534F4654574152455F4652414DCC
+:1090B00045574F524B2F53455256494345532F4C1A
+:1090C0005749502F6C7769702D312E332E322F7304
+:1090D00072632F636F72652F7564702E63000000DA
+:1090E000726562696E64203D3D203000636865638F
+:1090F0006B20746861742066697273742070627585
+:10910000662063616E20686F6C642073747275638F
+:1091100074207564705F6864720000007062756628
+:109120005F686561646572206661696C65640A00E8
+:10913000702D3E7061796C6F6164203D3D206970D7
+:10914000686472002E2E2F7372632F534F4654574C
+:109150004152455F4652414D45574F524B2F534563
+:109160005256494345532F4C5749502F6C776970DD
+:109170002D312E332E322F7372632F636F72652F52
+:109180007463705F6F75742E6300000063686563BD
+:109190006B207468617420666972737420706275E4
+:1091A000662063616E20686F6C64207374727563EF
+:1091B00074207463705F686472000000525354201E
+:1091C0006E6F74206578706563746564206865727D
+:1091D000652100007463705F656E71756575653A31
+:1091E000207061636B6574206E65656473207061C7
+:1091F000796C6F61642C206F7074696F6E732C20B2
+:109200006F722053594E2F46494E202870726F6757
+:1092100072616D6D65722076696F6C617465732023
+:1092200041504929000000007463705F656E7175DC
+:109230006575653A206C656E20213D2030207C7C70
+:1092400020617267203D3D204E554C4C20287072A5
+:109250006F6772616D6D65722076696F6C617465A0
+:1092600073204150492900007463705F656E717509
+:109270006575653A207062756673206F6E20717532
+:10928000657565203D3E206174206C6561737420B6
+:109290006F6E65207175657565206E6F6E2D656DDD
+:1092A000707479007463705F656E71756575653A89
+:1092B000206E6F207062756673206F6E2071756509
+:1092C0007565203D3E20626F746820717565756517
+:1092D0007320656D707479007573656720213D207A
+:1092E0004E554C4C00000000636865636B20746849
+:1092F00061742066697273742070627566206361A0
+:109300006E20686F6C642074686520636F6D706C8C
+:10931000657465207365676C656E000046494E2074
+:10932000656E71756575656420746F6765746865D1
+:109330007220776974682064617461007A65726F65
+:109340002D6C656E677468207062756600000000A1
+:109350007463705F656E71756575653A2076616CD2
+:109360006964207175657565206C656E6774680049
+:109370008000C7848000C8F88000CA1C8000CA46EC
+:109380008000CB108000CA1C8000CB8A8000CBFEFE
+:109390002E2E2F7372632F534F4654574152455F01
+:1093A0004652414D45574F524B2F53455256494314
+:1093B00045532F4C5749502F6C7769702D312E3300
+:1093C0002E322F7372632F636F72652F7463705F19
+:1093D000696E2E63000000007063622D3E736E6440
+:1093E0005F71756575656C656E203E3D20706275B8
+:1093F000665F636C656E286E6578742D3E7029001B
+:109400007463705F726563656976653A2076616C36
+:109410006964207175657565206C656E6774680098
+:10942000696E7365672E7020213D204E554C4C00AF
+:10943000696E73616E65206F6666736574210000E6
+:109440007062756620746F6F2073686F727421008C
+:10945000706275665F686561646572206661696CDB
+:10946000656400007463705F726563656976653A70
+:10947000207365676D656E74206E6F7420747269F9
+:109480006D6D656420636F72726563746C792074AE
+:109490006F207263765F776E640A00007463705F9A
+:1094A000726563656976653A207365676D656E748C
+:1094B000206E6F74207472696D6D656420636F72C5
+:1094C000726563746C7920746F206F6F736571209F
+:1094D00071756575650A00007463705F7265636518
+:1094E0006976653A207463706C656E203E20726305
+:1094F000765F776E640A00007463705F72656365FF
+:109500006976653A206F6F736571207463706C655E
+:109510006E203E207263765F776E640A0000000062
+:109520007463705F696E7075743A206163746976F4
+:1095300065207063622D3E737461746520213D2047
+:10954000434C4F53454400007463705F696E7075FF
+:10955000743A20616374697665207063622D3E738E
+:109560007461746520213D2054494D452D57414972
+:10957000540000007463705F696E7075743A206106
+:109580006374697665207063622D3E7374617465DF
+:1095900020213D204C495354454E00007463705FB8
+:1095A000696E7075743A207063622D3E6E657874D2
+:1095B00020213D2070636220286265666F726520FD
+:1095C00063616368652900007463705F696E70751C
+:1095D000743A207063622D3E6E65787420213D20C0
+:1095E00070636220286166746572206361636865D8
+:1095F000290000007463705F696E7075743A2054BE
+:10960000494D452D57414954207063622D3E737476
+:10961000617465203D3D2054494D452D57414954C5
+:10962000000000007463705F696E7075743A20709A
+:1096300063622D3E737461746520213D20434C4F5D
+:10964000534544007063622D3E736E645F717565AF
+:1096500075656C656E203E20300000007063622DE1
+:109660003E61636365707420213D204E554C4C0073
+:109670007463705F696E7075743A207463705F70A4
+:109680006362735F73616E65282900000102030441
+:109690000506070707070707070000002E2E2F7390
+:1096A00072632F534F4654574152455F4652414DC6
+:1096B00045574F524B2F53455256494345532F4C14
+:1096C0005749502F6C7769702D312E332E322F73FE
+:1096D00072632F636F72652F7463702E63000000D6
+:1096E0007463705F706362735F73616E653A20616B
+:1096F0006374697665207063622D3E73746174656E
+:1097000020213D20434C4F53454400007463705F5B
+:10971000706362735F73616E653A2061637469762A
+:1097200065207063622D3E737461746520213D2055
+:109730004C495354454E00007463705F706362730C
+:109740005F73616E653A206163746976652070634A
+:10975000622D3E737461746520213D2054494D454E
+:109760002D574149540000007463705F7063627349
+:109770005F73616E653A207477207063622D3E736B
+:1097800074617465203D3D2054494D452D57414934
+:10979000540000007463705F62696E643A20636114
+:1097A0006E206F6E6C792062696E6420696E207322
+:1097B0007461746520434C4F534544007463705F7B
+:1097C0007265637665643A206C656E20776F756CA0
+:1097D000642077726170207263765F776E640A002E
+:1097E000756E73656E74207365676D656E74732036
+:1097F0006C65616B696E6700756E61636B65642093
+:109800007365676D656E7473206C65616B696E67F7
+:10981000000000006F6F736571207365676D656E82
+:109820007473206C65616B696E6700007463705FB0
+:109830007063625F72656D6F76653A207463705F06
+:10984000706362735F73616E652829007463705F73
+:109850006C697374656E3A2070636220616C726526
+:1098600061647920636F6E6E6563746564000000E7
+:109870007463705F736C6F77746D723A2061637498
+:10988000697665207063622D3E7374617465202172
+:109890003D20434C4F5345440A0000007463705F01
+:1098A000736C6F77746D723A2061637469766520AA
+:1098B0007063622D3E737461746520213D204C49B4
+:1098C0005354454E0A0000007463705F736C6F77E9
+:1098D000746D723A20616374697665207063622DDD
+:1098E0003E737461746520213D2054494D452D57C8
+:1098F0004149540A000000007463705F736C6F7715
+:10990000746D723A206D6964646C652074637020B4
+:10991000213D207463705F6163746976655F706375
+:10992000627300007463705F736C6F77746D723A6A
+:1099300020666972737420706362203D3D207463F9
+:10994000705F6163746976655F70636273000000C5
+:109950007463705F736C6F77746D723A2054494D05
+:10996000452D57414954207063622D3E73746174D4
+:1099700065203D3D2054494D452D57414954000037
+:109980007463705F736C6F77746D723A206D696485
+:10999000646C652074637020213D207463705F7473
+:1099A000775F7063627300007463705F736C6F77CE
+:1099B000746D723A20666972737420706362203D20
+:1099C0003D207463705F74775F70636273000000A2
+:1099D0007463705F636F6E6E6563743A2063616E6B
+:1099E000206F6E6C7920636F6E6E656374656420A2
+:1099F00066726F6D20737461746520434C4F5345DC
+:109A00004400000053594E5F53454E54000000007F
+:109A100053594E5F52435644000000004553544191
+:109A2000424C49534845440046494E5F57414954CA
+:109A30005F31000046494E5F574149545F32000094
+:109A4000434C4F53455F574149540000434C4F53DB
+:109A5000494E47004C4153545F41434B00000000C6
+:109A600054494D455F5741495400000003060C1806
+:109A7000306078002E2E2F7372632F534F46545749
+:109A80004152455F4652414D45574F524B2F53452A
+:109A90005256494345532F4C5749502F6C776970A4
+:109AA0002D312E332E322F7372632F636F72652F19
+:109AB000706275662E630000286820213D204E5597
+:109AC0004C4C2920262620287420213D204E554C20
+:109AD0004C29202870726F6772616D6D65722076F7
+:109AE000696F6C6174657320415049290000000062
+:109AF000702D3E746F745F6C656E203D3D20702D3F
+:109B00003E6C656E20286F66206C617374207062F5
+:109B1000756620696E20636861696E290000000027
+:109B2000696E6372656D656E745F6D61676E697491
+:109B3000756465203C3D20702D3E6C656E00000014
+:109B4000626164207062756620747970650000003F
+:109B5000706275665F74616B653A20696E76616CE0
+:109B60006964206275660000706275665F74616B7F
+:109B7000653A20696E76616C696420646174617015
+:109B800074720000706275665F74616B653A20697B
+:109B90006E76616C69642070627566006469642029
+:109BA0006E6F7420636F707920616C6C20646174D7
+:109BB00061000000706275665F636F70795F70614D
+:109BC000727469616C3A20696E76616C69642062B6
+:109BD00075660000706275665F636F70795F7061B3
+:109BE000727469616C3A20696E76616C6964206494
+:109BF0006174617074720000706275665F636F708B
+:109C0000793A20746172676574206E6F742062699E
+:109C10006720656E6F75676820746F20686F6C646D
+:109C200020736F7572636500705F746F20213D2033
+:109C30004E554C4C000000006F66667365745F748F
+:109C40006F203C3D20705F746F2D3E6C656E000090
+:109C50006F66667365745F66726F6D203C3D207041
+:109C60005F66726F6D2D3E6C656E0000706275668A
+:109C70005F636F7079282920646F6573206E6F743D
+:109C800020616C6C6F77207061636B6574207175F7
+:109C900065756573210A0000706275665F6672659E
+:109CA000653A2073616E652074797065000000006C
+:109CB000706275665F667265653A20702D3E7265EA
+:109CC00066203E2030000000702D3E746F745F6C83
+:109CD000656E203D3D20702D3E6C656E202B207101
+:109CE0002D3E746F745F6C656E000000702D3E74C5
+:109CF0006F745F6C656E203D3D20702D3E6C656E0F
+:109D000000000000706275665F7265616C6C6F6365
+:109D10003A207020213D204E554C4C0070627566F3
+:109D20005F7265616C6C6F633A2073616E65207061
+:109D30002D3E74797065000067726F77203C206D4E
+:109D400061785F7531365F7400000000706275667F
+:109D50005F7265616C6C6F633A207120213D204E0B
+:109D6000554C4C006D656D5F7265616C6C6F632066
+:109D7000676976652071203D3D204E554C4C0000B2
+:109D8000706275665F616C6C6F633A20626164201B
+:109D900070627566206C6179657200006368656346
+:109DA0006B20702D3E7061796C6F6164202B207088
+:109DB0002D3E6C656E20646F6573206E6F74206F2E
+:109DC000766572666C6F77207062756600000000C1
+:109DD000504255465F504F4F4C5F42554653495A8B
+:109DE00045206D75737420626520626967676572CE
+:109DF000207468616E204D454D5F414C49474E4D82
+:109E0000454E540072656D5F6C656E203C206D613F
+:109E1000785F7531365F7400706275665F616C6C77
+:109E20006F633A207062756620712D3E7061796CA7
+:109E30006F61642070726F7065726C7920616C69FB
+:109E4000676E656400000000706275665F616C6C2F
+:109E50006F633A20706275662D3E7061796C6F6138
+:109E6000642070726F7065726C7920616C69676EC6
+:109E700065640000706275665F616C6C6F633A20A8
+:109E80006572726F6E656F7573207479706500000E
+:109E9000706275665F636F7079206661696C656476
+:109EA000000000002E2E2F7372632F534F4654571D
+:109EB0004152455F4652414D45574F524B2F5345F6
+:109EC0005256494345532F4C5749502F6C77697070
+:109ED0002D312E332E322F7372632F636F72652FE5
+:109EE0006E657469662E6300626F677573207062B9
+:109EF00075663A206C656E20213D20746F745F6C2E
+:109F0000656E20627574206E657874203D3D204E2C
+:109F1000554C4C210000000073686F756C64206E16
+:109F20006F74206265206E756C6C2073696E63655A
+:109F300020666972737420213D206C617374210066
+:109F4000696620666972737420213D204E554C4C21
+:109F50002C206C617374206D75737420616C736F49
+:109F600020626520213D204E554C4C000004000429
+:109F700000020002002000050002001E0020000078
+:109F80002E2E2F7372632F534F4654574152455F05
+:109F90004652414D45574F524B2F53455256494318
+:109FA00045532F4C5749502F6C7769702D312E3304
+:109FB0002E322F7372632F636F72652F6D656D7014
+:109FC0002E6300006D656D705F667265653A206D89
+:109FD000656D2070726F7065726C7920616C696755
+:109FE0006E6564006D656D705F6D616C6C6F633A7A
+:109FF0002074797065203C204D454D505F4D41588F
+:10A00000000000006D656D705F6D616C6C6F633A90
+:10A01000206D656D702070726F7065726C79206153
+:10A020006C69676E65640000001C002000A80024B5
+:10A030000014002000080010025400002E2E2F7380
+:10A0400072632F534F4654574152455F4652414D1C
+:10A0500045574F524B2F53455256494345532F4C6A
+:10A060005749502F6C7769702D312E332E322F7354
+:10A0700072632F636F72652F697076342F69705F1A
+:10A08000667261672E63000074686973206E65658F
+:10A0900064732061207062756620696E206F6E6542
+:10A0A000207069656365210073616E69747920634E
+:10A0B0006865636B206C696E6B6564206C69737492
+:10A0C000000000007072657620213D2069707200EA
+:10A0D000707265762D3E6E657874203D3D20697006
+:10A0E0007200000069705F72656173735F70627502
+:10A0F00066636F756E74203E3D20636C656E000074
+:10A10000636865636B20667261676D656E7473204A
+:10A11000646F6E2774206F7665726C61700000004A
+:10A120006E6F2070726576696F75732066726167F5
+:10A130006D656E742C2074686973206D757374205E
+:10A140006265207468652066697273742066726146
+:10A15000676D656E7421000073616E6974792063A8
+:10A160006865636B0000000076616C69646174650A
+:10A170005F646174616772616D3A6E6578745F7077
+:10A18000627566213D4E554C4C00000076616C694D
+:10A19000646174655F646174616772616D3A646182
+:10A1A00074616772616D20656E64213D64617461E4
+:10A1B0006772616D206C656E00FFFFFFFF0000009D
+:10A1C000000000002E2E2F7372632F534F465457FA
+:10A1D0004152455F4652414D45574F524B2F5345D3
+:10A1E0005256494345532F4C5749502F6C7769704D
+:10A1F0002D312E332E322F7372632F636F72652FC2
+:10A20000697076342F69702E63000000636865639F
+:10A210006B20746861742066697273742070627553
+:10A22000662063616E20686F6C642073747275635E
+:10A23000742069705F686472000000002E2E2F7316
+:10A2400072632F534F4654574152455F4652414D1A
+:10A2500045574F524B2F53455256494345532F4C68
+:10A260005749502F6C7769702D312E332E322F7352
+:10A2700072632F636F72652F697076342F69636D17
+:10A28000702E6300636865636B2074686174206678
+:10A290006972737420706275662063616E20686FE6
+:10A2A0006C642069636D70206D6573736167650010
+:10A2B00069636D705F696E7075743A206D6F766951
+:10A2C0006E6720702D3E7061796C6F616420746FD1
+:10A2D00020697020686561646572206661696C65DB
+:10A2E000640A0000636865636B20746861742066AB
+:10A2F0006972737420706275662063616E20686F86
+:10A300006C642073747275637420746865204943AB
+:10A310004D502068656164657200000069636D706E
+:10A320005F696E7075743A20636F7079696E67202B
+:10A33000746F206E65772070627566206661696C47
+:10A3400065640A0069636D705F696E7075743A20A8
+:10A35000726573746F72696E67206F726967696E78
+:10A36000616C20702D3E7061796C6F616420666154
+:10A37000696C65640A0000002E2E2F7372632F53E0
+:10A380004F4654574152455F4652414D45574F52F3
+:10A390004B2F53455256494345532F4C5749502F45
+:10A3A0006C7769702D312E332E322F7372632F63C9
+:10A3B0006F72652F646E732E63000000646E7320ED
+:10A3C000736572766572206F7574206F6620617296
+:10A3D00072617900646E73207365727665722068AD
+:10A3E0006173206E6F2049502061646472657373DD
+:10A3F000207365740000000070627566206D7573CF
+:10A400007420626520696E206F6E652070696563D7
+:10A4100065000000617272617920696E6465782060
+:10A420006F7574206F6620626F756E647300000034
+:10A43000756E6B6E6F776E20646E735F7461626CA5
+:10A440006520656E7472792073746174653A0000DA
+:10A450006C6F63616C686F73740000003230382E6B
+:10A4600036372E3232322E32323200002E2E2F73F9
+:10A4700072632F534F4654574152455F4652414DE8
+:10A4800045574F524B2F53455256494345532F4C36
+:10A490005749502F6C7769702D312E332E322F7320
+:10A4A00072632F636F72652F646863702E630000A0
+:10A4B000646863705F6F7074696F6E3A206468637C
+:10A4C000702D3E6F7074696F6E735F6F75745F6C23
+:10A4D000656E202B2032202B206F7074696F6E5FA9
+:10A4E0006C656E203C3D20444843505F4F505449BA
+:10A4F0004F4E535F4C454E00646863705F6F7074DD
+:10A50000696F6E5F627974653A20646863702D3E8E
+:10A510006F7074696F6E735F6F75745F6C656E20BA
+:10A520003C20444843505F4F5054494F4E535F4C7A
+:10A53000454E0000646863705F6F7074696F6E5F92
+:10A54000747261696C65723A206468637020213DA1
+:10A55000204E554C4C000000646863705F6F70744F
+:10A56000696F6E5F747261696C65723A20646863CA
+:10A57000702D3E6D73675F6F757420213D204E55C1
+:10A580004C4C0A00646863705F6F7074696F6E5F33
+:10A59000747261696C65723A20646863702D3E6FF5
+:10A5A0007074696F6E735F6F75745F6C656E203C5D
+:10A5B00020444843505F4F5054494F4E535F4C45E1
+:10A5C0004E0A0000646863705F6F7074696F6E5F3D
+:10A5D00073686F72743A20646863702D3E6F707494
+:10A5E000696F6E735F6F75745F6C656E202B2032C0
+:10A5F000203C3D20444843505F4F5054494F4E53F8
+:10A600005F4C454E00000000646863705F6F7074BB
+:10A61000696F6E5F6C6F6E673A20646863702D3E81
+:10A620006F7074696F6E735F6F75745F6C656E20A9
+:10A630002B2034203C3D20444843505F4F50544928
+:10A640004F4E535F4C454E00646863705F73746F88
+:10A65000703A206E6574696620213D204E554C4C41
+:10A66000000000007265706C79207761736E27744A
+:10A670002066726565640000646863705F6372657C
+:10A680006174655F726571756573743A206E657487
+:10A69000696620213D204E554C4C00006468637073
+:10A6A0005F6372656174655F726571756573743A35
+:10A6B000206468637020213D204E554C4C00000002
+:10A6C000646863705F6372656174655F72657175FC
+:10A6D0006573743A20646863702D3E705F6F7574A3
+:10A6E000203D3D204E554C4C0000000064686370D6
+:10A6F0005F6372656174655F726571756573743AE5
+:10A7000020646863702D3E6D73675F6F7574203DC4
+:10A710003D204E554C4C0000646863705F63726569
+:10A720006174655F726571756573743A20636865FD
+:10A73000636B207468617420666972737420706240
+:10A7400075662063616E20686F6C64207374727527
+:10A75000637420646863705F6D736700646863701E
+:10A760005F64656C6574655F726571756573743A75
+:10A77000206E6574696620213D204E554C4C0000CA
+:10A78000646863705F64656C6574655F726571753C
+:10A790006573743A206468637020213D204E554CE7
+:10A7A0004C000000646863705F64656C6574655F8D
+:10A7B000726571756573743A20646863702D3E70BC
+:10A7C0005F6F757420213D204E554C4C00000000F9
+:10A7D000646863705F64656C6574655F72657175EC
+:10A7E0006573743A20646863702D3E6D73675F6FA4
+:10A7F000757420213D204E554C4C000070627566EA
+:10A8000020705F6F7574207761736E277420667295
+:10A8100065656400646863705F62696E643A206EA7
+:10A820006574696620213D204E554C4C00000000A7
+:10A83000646863705F62696E643A20646863702064
+:10A84000213D204E554C4C006468637020213D2012
+:10A850004E554C4C00000000726574203D3D207345
+:10A86000697A656F662873747275637420646863AF
+:10A87000705F6D736729202D20444843505F4F500F
+:10A8800054494F4E535F4C454E0000007265742092
+:10A890003D3D20646863702D3E6F7074696F6E7308
+:10A8A0005F696E5F6C656E0000000001000070C0A3
+:10A8B0000000000B000070C400000009000070F0F0
+:10A8C0000000000F00007114000000010000715032
+:10A8D00000000001000071540000000100007080C1
+:10A8E000000000010000708400000001000070887A
+:10A8F000000000010000708C00000001000070905A
+:10A900000000000100007094000000010000709839
+:10A91000000000010000709C00000003000070A017
+:10A9200000000001000070AC00000001000070B0E9
+:10A9300000000001000070B400000001000070B8C9
+:10A9400000000001000070BC322E312E312E31008B
+:10A9500078C40E00352E332E31000000352E332EF4
+:10A9600035000000352E332E3400000041505000D9
+:10A97000484D47008001602A8001602E80015FDA27
+:10A9800080015FDA80015FE280015FEA80015FF2AF
+:10A9900080015FFA800160028001600A800160121C
+:10A9A0008001601A8001602280016036312E352ED0
+:10A9B000312E3700312E352E312E3100312E352EED
+:10A9C000312E340080018D7880018D5680018DE418
+:10A9D00080018CBE80018DD680018D3480018CBEBB
+:10A9E00080018CFA80018CBE80018CBE80018CBEFF
+:10A9F00080018CBE80018CBE80018CBE80018CBE2B
+:10AA000080018CBE80018CBE80018CBE80018CBE1A
+:10AA100080018CBE80018CBE80018CBE80018CBE0A
+:10AA200080018CBE80018CBE80018CBE80018CBEFA
+:10AA300080018CBE80018CBE80018CBE80018CBEEA
+:10AA400080018CBE80018CBE80018CBE80018CBEDA
+:10AA500080018CBE80018CBE80018CBE80018CBECA
+:10AA600080018CBE80018CBE80018CBE80018CBEBA
+:10AA700080018CBE80018CBE80018CBE80018CBEAA
+:10AA800080018CBE80018CBE80018CBE80018CBE9A
+:10AA900080018CBE80018CBE80018CBE80018CBE8A
+:10AAA00080018CBE80018CBE80018CBE80018CBE7A
+:10AAB00080018CBE80018CBE80018CBE80018CBE6A
+:10AAC00080018CD880018E7080018D0880018D08F6
+:10AAD00080018D2680018D0880018D0880018D0800
+:10AAE00080018D0880018D0880018D0880018D080E
+:10AAF00080018D0880018D0880018D0880018D26E0
+:10AB000080018D0880018D0880018D0880018D08ED
+:10AB100080018D0880018D0880018D0880018E6084
+:10AB200080018D0880018D0880018D0880018D08CD
+:10AB300080018D0880018D0880018D0880018D08BD
+:10AB400080018D0880018D0880018D0880018D08AD
+:10AB500080018D0880018D0880018D0880018D089D
+:10AB600080018D0880018D0880018D0880018D088D
+:10AB700080018D0880018D0880018D0880018D087D
+:10AB800080018D0880018D0880018D0880018D086D
+:10AB900080018D0880018D0880018D0880018D085D
+:10ABA00080018D0880018D0880018D0880018D084D
+:10ABB00080018D0880018D0880018D0880018D083D
+:10ABC00080018D0880018D0880018D0880018D082D
+:10ABD00080018D0880018D0880018D0880018D081D
+:10ABE00080018D0880018D0880018D0880018D080D
+:10ABF00080018D0880018D0880018D0880018D08FD
+:10AC000080018D0880018D0880018D0880018D08EC
+:10AC100080018D0880018D0880018D0880018D08DC
+:10AC200080018D0880018D0880018D0880018D08CC
+:10AC300080018D0880018D0880018D0880018D08BC
+:10AC400080018D0880018D0880018D0880018D08AC
+:10AC500080018D0880018D0880018D0880018D089C
+:10AC600080018D0880018D0880018D0880018D088C
+:10AC700080018D0880018D0880018D0880018D087C
+:10AC800080018D0880018D0880018D0880018D086C
+:10AC900080018D0880018D0880018D0880018D085C
+:10ACA00080018D0880018D0880018D0880018D084C
+:10ACB00080018D0880018D0880018D0880018D083C
+:10ACC00080018D0880018D0880018D2680018E4CC9
+:10ACD00080018D0880018D2680018D0880018D08FE
+:10ACE00080018D0880018D0880018D0880018D080C
+:10ACF00080018D0880018D2680018D0880018D08DE
+:10AD000080018E4480018E3C80018E3480018E2C27
+:10AD100080018E2480018E1C80018E5880018D0858
+:10AD200080018E6857455F494E445F38303231317B
+:10AD30005F434F4E4E4543544544000057455F49DD
+:10AD40004E445F38303231315F444953434F4E4EA9
+:10AD5000454354494E47000057455F494E445F38CC
+:10AD6000303231315F494253535F444953434F4E70
+:10AD70004E45435445440000332E312E322E312EA1
+:10AD800034000000352E323300000000352E323200
+:10AD90002E320000352E32322E310000352E322E6A
+:10ADA00039000000352E31382E310000352E313873
+:10ADB0002E320000352E32322E340000352E323441
+:10ADC0002E320000352E32342E310000352E313136
+:10ADD0002E310000352E322E32000000352E313655
+:10ADE0002E320000352E31362E310000312E312E1C
+:10ADF000312E323200000000352E322E31392E3500
+:10AE000000000000352E322E31392E3400000000B3
+:10AE1000352E322E31392E3300000000352E322EE1
+:10AE200031392E3200000000352E322E31392E31CC
+:10AE300000000000352E322E31000000352E313159
+:10AE40002E320000352E31312E330000352E3131B7
+:10AE50002E340000352E31312E350000352E3131A3
+:10AE60002E360000352E31312E380000352E31318E
+:10AE70002E3700008001B5F08001B5E88001B5F003
+:10AE80008001B5DE8001B73E8001B6EC8001B69E40
+:10AE90008001B64C8001B5FA8001BF468001BF3EFB
+:10AEA0008001BF3E8001BF468001BF368001BF36B2
+:10AEB0008001BF2E8001BF2E02040B0C1216182435
+:10AEC0002C304248606C000073736964000000001D
+:10AED00070736B004A756E6B41500000575343000E
+:10AEE000656170005746412D53696D706C65436F05
+:10AEF0006E6669672D456E726F6C6C65652D312DC0
+:10AF0000300000006964656E7469747900000000A7
+:10AF10006E7277696669000064656661756C7400BD
+:10AF200057455F494E445F38303231315F444953B1
+:10AF3000434F4E4E454354454400000057455F493A
+:10AF40004E445F50414952574953455F4D49435F15
+:10AF50004552524F5200000057455F494E445F47EB
+:10AF6000524F55505F4D49435F4552524F5200007A
+:10AF700057455F494E445F43414E4449444154451F
+:10AF80005F4C495354000000494E414354495645D3
+:10AF900000000000444953434F4E4E45435445443E
+:10AFA000000000005343414E4E494E470000000050
+:10AFB0004153534F43494154494E47004153534F26
+:10AFC0004349415445440000345741595F48414E7C
+:10AFD000445348414B45000047524F55505F48414C
+:10AFE0004E445348414B4500434F4D504C4554450A
+:10AFF00044000000554E4B4E4F574E004354524CA8
+:10B000002D4556454E542D5445524D494E415449B7
+:10B010004E47202D207369676E616C202564207275
+:10B020006563656976656400776972656400000030
+:10B0300043616E63656C6C696E67206175746865E9
+:10B040006E7469636174696F6E2074696D656F7584
+:10B05000740000005750413A204541504F4C207039
+:10B06000726F63657373696E6720636F6D706C6573
+:10B070007465000043616E63656C6C696E67207374
+:10B0800063616E20726571756573740052534E3A38
+:10B09000207573696E672049454545203830322E4A
+:10B0A0003131692F44392E30000000005750413AA9
+:10B0B000207573696E672049454545203830322E2A
+:10B0C0003131692F44332E30000000005750413A8F
+:10B0D000204661696C656420746F207061727365CD
+:10B0E000205750412049452066726F6D206173736F
+:10B0F0006F63696174696F6E20696E666F0000002E
+:10B100005750413A204472697665722075736564C0
+:10B110002064697361626C65642067726F7570206A
+:10B12000636970686572203078257820286D6173B6
+:10B130006B203078257829202D2072656A6563742C
+:10B14000000000005750413A204472697665722031
+:10B15000757365642064697361626C6564207061F5
+:10B1600069727769736520636970686572203078E9
+:10B17000257820286D61736B203078257829202D63
+:10B180002072656A656374005750413A20447269C1
+:10B1900076657220757365642064697361626C659D
+:10B1A00064206B6579206D616E6167656D656E7495
+:10B1B000203078257820286D61736B2030782578D1
+:10B1C00029202D2072656A65637400005750413A4A
+:10B1D000207573696E672047544B2043434D5000E0
+:10B1E0005750413A207573696E672047544B20547D
+:10B1F0004B4950005750413A207573696E6720479C
+:10B20000544B205745503130340000005750413ADC
+:10B21000207573696E672047544B20574550343072
+:10B22000000000005750413A207573696E67205046
+:10B23000544B2043434D50005750413A2075736999
+:10B240006E672050544B20544B4950005750413AA0
+:10B25000207573696E672050544B204E4F4E450049
+:10B260005750413A207573696E67204B45595F4DC1
+:10B27000474D54203830322E315800005750413A53
+:10B28000207573696E67204B45595F4D474D5420BB
+:10B290005750412D50534B005750413A2075736918
+:10B2A0006E67204B45595F4D474D54205750412DF7
+:10B2B0004E4F4E45000000005750413A204661690C
+:10B2C0006C656420746F2073656C656374205750DF
+:10B2D000412F52534E0000004661696C6564207432
+:10B2E0006F2070617273652074686520636F6E668D
+:10B2F000696775726174696F6E2066696C65202775
+:10B30000257327202D2065786974696E6700000019
+:10B310005265636F6E66696775726174696F6E20DE
+:10B32000636F6D706C6574656400000053657474C0
+:10B33000696E672061757468656E746963617469AC
+:10B340006F6E2074696D656F75743A202564207383
+:10B35000656320256420757365630000536574740C
+:10B36000696E67207363616E2072657175657374B1
+:10B370003A20256420736563202564207573656316
+:10B380000000000041757468656E746963617469DA
+:10B390006F6E207769746820253032783A25303214
+:10B3A000783A253032783A253032783A253032787A
+:10B3B0003A253032782074696D6564206F75742E7B
+:10B3C00000000000547279696E6720746F20617309
+:10B3D000736F636961746520776974682025303202
+:10B3E000783A253032783A253032783A253032783A
+:10B3F0003A253032783A2530327820285353494460
+:10B400003D2725732720667265713D2564204D48D0
+:10B410007A290000547279696E6720746F20617315
+:10B42000736F636961746520776974682053534949
+:10B4300044202725732700004173736F636961748B
+:10B44000696F6E207265717565737420746F2074F6
+:10B45000686520647269766572206661696C6564EE
+:10B46000000000007770615F737570706C696361D4
+:10B470006E742076302E352E31300A436F7079721B
+:10B48000696768742028632920323030332D3230C8
+:10B4900030382C204A6F756E69204D616C696E657D
+:10B4A0006E203C6A4077312E66693E20616E6420D2
+:10B4B000636F6E7472696275746F7273000000005E
+:10B4C000546869732070726F6772616D20697320B0
+:10B4D0006672656520736F6674776172652E205998
+:10B4E0006F752063616E206469737472696275742C
+:10B4F0006520697420616E642F6F72206D6F6469BE
+:10B5000066792069740A756E6465722074686520B6
+:10B510007465726D73206F662074686520474E55A0
+:10B520002047656E6572616C205075626C6963209E
+:10B530004C6963656E73652076657273696F6E2002
+:10B54000322E0A0A416C7465726E61746976656C9C
+:10B55000792C207468697320736F667477617265E3
+:10B56000206D617920626520646973747269627507
+:10B5700074656420756E64657220746865207465F6
+:10B58000726D73206F66207468650A425344206CA4
+:10B590006963656E73652E2053656520524541448D
+:10B5A0004D4520616E6420434F5059494E472066F7
+:10B5B0006F72206D6F72652064657461696C732EA3
+:10B5C0000A00000080020AE880020AFA80020B10DA
+:10B5D00080020AC280020ACE80020B3C80020AC2AC
+:10B5E00080020B4880020AC280020AC280020AC29C
+:10B5F00080020AC280020AC280020AC280020AC213
+:10B6000080020AC280020AC280020AC280020AC202
+:10B6100080020AC280020AC280020AC280020AC2F2
+:10B6200080020AC280020AC280020AC280020AC2E2
+:10B6300080020AC280020AC280020AC280020AC2D2
+:10B6400080020AC280020AC280020AC280020AC2C2
+:10B6500080020AC280020AC280020AC280020AC2B2
+:10B6600080020AC280020AC280020AC280020AC2A2
+:10B6700080020AC280020AC280020AC280020AC292
+:10B6800080020AC280020AC280020AC280020AC282
+:10B6900080020AC280020AC280020AC280020AC272
+:10B6A00080020AC280020AC280020AC280020AC262
+:10B6B00080020AC280020AC280020AC280020AC252
+:10B6C00080020AE480020BAC80020AC280020BAC4A
+:10B6D00080020AC280020CE480020AC280020CD8F6
+:10B6E00080020AC280020CCC80020AC280020AC216
+:10B6F00080020AC280020AC280020D1480020AC2BD
+:10B7000080020AC280020D0880020AC280020CFC7C
+:10B7100080020AC280020AC280020AC280020AC2F1
+:10B7200080020AC280020AC280020AC280020AC2E1
+:10B7300080020AC280020AC280020AC280020AC2D1
+:10B7400080020AC280020AC280020AC280020AC2C1
+:10B7500080020AC280020AC280020AC280020AC2B1
+:10B7600080020AC280020AC280020AC280020AC2A1
+:10B7700080020AC280020AC280020AC280020AC291
+:10B7800080020AC280020AC280020AC280020AC281
+:10B7900080020AC280020AC280020AC280020AC271
+:10B7A00080020AC280020AC280020AC280020AC261
+:10B7B00080020AC280020AC280020AC280020AC251
+:10B7C00080020AC280020AC280020AC280020AC241
+:10B7D00080020AC280020AC280020AC280020AC231
+:10B7E00080020AC280020AC280020AC280020AC221
+:10B7F00080020AC280020AC280020AC280020AC211
+:10B8000080020AC280020AC280020AC280020AC200
+:10B8100080020AC280020AC280020AC280020AC2F0
+:10B8200080020AC280020AC280020AC280020AC2E0
+:10B8300080020AC280020AC280020AC280020AC2D0
+:10B8400080020AC280020AC280020AC280020AC2C0
+:10B8500080020AC280020AC280020AC280020AC2B0
+:10B8600080020AC280020AC280020AC280020AC2A0
+:10B8700080020AC280020AC280020AC280020AC290
+:10B8800080020AC280020AC280020AC280020AC280
+:10B8900080020AC280020AC280020AC280020AC270
+:10B8A00080020AC280020AC280020AC280020AC260
+:10B8B00080020B9480020CC080020B9480020B94D7
+:10B8C00080020CF080020AC280020BAC80020AC225
+:10B8D00080020BB880020AC280020BB880020AC242
+:10B8E00080020B9480020AC280020B9480020BA09B
+:10B8F00080020BA080020BA080020AC280020B947F
+:10B9000080020B9480020CB480020AC280020AC238
+:10B9100080020CA880020AC280020AC280020AC207
+:10B9200080020AC280020AC280020AC280020AC2DF
+:10B9300080020AC280020AC280020AC280020C9CF3
+:10B9400080020AC280020AC280020AC280020AC2BF
+:10B9500080020AC280020AC280020AC280020C90DF
+:10B9600080020AC280020AC280020AC280020AC29F
+:10B9700080020AC280020AC280020AC280020AC28F
+:10B9800080020AC280020AC280020AC280020AC27F
+:10B9900080020AC280020AC280020AC280020AC26F
+:10B9A00080020AC280020AC280020AC280020AC25F
+:10B9B00080020AC280020AC280020AC280020AC24F
+:10B9C00080020AC280020AC280020AC280020AC23F
+:10B9D00080020AC280020AC280020AC280020AC22F
+:10B9E00080020AC280020AC280020AC280020AC21F
+:10B9F00080020AC280020AC280020AC280020AC20F
+:10BA000080020AC280020AC280020AC280020AC2FE
+:10BA100080020AC280020AC280020AC280020AC2EE
+:10BA200080020AC280020AC280020AC280020AC2DE
+:10BA300080020AC280020AC280020AC280020AC2CE
+:10BA400080020AC280020AC280020AC280020AC2BE
+:10BA500080020AC280020AC280020AC280020AC2AE
+:10BA600080020AC280020AC280020AC280020AC29E
+:10BA700080020AC280020AC280020AC280020AC28E
+:10BA800080020AC280020AC280020AC280020AC27E
+:10BA900080020AC280020AC280020AC280020AC26E
+:10BAA00080020AC280020AC280020AC280020AC25E
+:10BAB00080020AC280020AC280020AC280020AC24E
+:10BAC00080020AC280020AC280020AC280020AC23E
+:10BAD00080020AC280020AC280020AC280020AC22E
+:10BAE00080020AC280020AC280020AC280020AC21E
+:10BAF00080020AC280020AC280020AC280020AC20E
+:10BB000080020AC280020AC280020C8480020C7881
+:10BB100080020AC280020C6C80020AC280020AC241
+:10BB200080020AC280020C6080020C5480020AC2A9
+:10BB300080020AC280020C4880020AC280020AC245
+:10BB400080020C3C80020C3080020C2480020C1815
+:10BB500080020C0C80020C0080020BF480020AC2EE
+:10BB600080020BE880020BDC80020AC280020BD04C
+:10BB700080020BC480020FF680020FE480020FD215
+:10BB800080020FC080020FAE80020F9C80020EFA6E
+:10BB900080020EFA80020F8A80020F7880020F6600
+:10BBA00080020F5480020F4280020F3080020F1E6D
+:10BBB00080020F0C80020F0C8002100880020E3CE5
+:10BBC00080020E3C80020E3C800211288002111679
+:10BBD0008002110480020E3C80020E3C800210F2B2
+:10BBE00080020E3C80020E3C800210E0800210CEEB
+:10BBF000800210BC800210AA800210988002108679
+:10BC000080021074800210628002105080020E3C8C
+:10BC10008002103E8002102C80020E3C80020E3CFE
+:10BC200080020E3C80020E3C80020E3C80020E3CE4
+:10BC300080020E3C80020E3C80020E3C80020E3CD4
+:10BC400080020E3C80020E3C80020E3C80020E3CC4
+:10BC500080020E3C80020E3C80020E3C80020E3CB4
+:10BC600080020E3C80020E3C80020E3C80020E3CA4
+:10BC700080020E3C80020E3C80020E3C80020E3C94
+:10BC800080020E3C80020E3C80020E3C80020E3C84
+:10BC900080020E3C80020E3C80020E3C80020E3C74
+:10BCA00080020E3C80020E3C80020E3C80020E3C64
+:10BCB00080020E3C80020E3C80020E3C80020E3C54
+:10BCC00080020E3C80020E3C80020E3C80020E3C44
+:10BCD00080020E3C80020E3C80020E3C80020E3C34
+:10BCE00080020E3C80020E3C80020E3C80020E3C24
+:10BCF00080020E3C80020E3C80020E3C80020E3C14
+:10BD000080020E3C80020E3C80020E3C80020E3C03
+:10BD100080020E3C80020E3C80020E3C80020E3CF3
+:10BD200080020E3C80020E3C80020E3C80020E3CE3
+:10BD300080020E3C80020E3C80020E3C80020E3CD3
+:10BD400080020E3C80020E3C80020E3C80020E3CC3
+:10BD500080020E3C80020E3C80020E3C80020E3CB3
+:10BD600080020E3C80020E3C80020E3C80020E3CA3
+:10BD700080020E3C80020E3C80020E3C80020E3C93
+:10BD800080020E3C80020E3C80020E3C80020E3C83
+:10BD900080020E3C80020E3C80020E3C80020E3C73
+:10BDA00080020E3C80020E3C80020E3C8002101A83
+:10BDB00025303258000000008003AEC880023A14DB
+:10BDC0008002388400000010000000140000000011
+:10BDD00000000020000000008003C5A480023D7424
+:10BDE0008002380C0000006000000000000000002D
+:10BDF00000000001000000008003C5B080023D503B
+:10BE0000800237AC000000000000000000000000CD
+:10BE100000000000000000008003AED080023C84DF
+:10BE20008002384800000000000000000000000010
+:10BE300000000000000000018003C5B8800230103F
+:10BE40008002372C0000000000000000000000000D
+:10BE500000000000000000008003C5C080022EC862
+:10BE6000800236000000000000000000000000001A
+:10BE700000000000000000008003C5CC80022E9C62
+:10BE8000800235F00000000000000000000000000B
+:10BE900000000000000000008003C5D880022E7062
+:10BEA000800235E0000000000000000000000000FB
+:10BEB00000000000000000008003C5E080022C2884
+:10BEC000800233F8000000000000000000000000C5
+:10BED00000000000000000008003AEE080023B1480
+:10BEE00080023A8400000000000000000000000012
+:10BEF00000000000000000008003AF0480023A143C
+:10BF000080023884000000680000006C000000001F
+:10BF100000000000000000008003C5EC80023A141D
+:10BF200080023884000000700000007400000000EF
+:10BF300000000000000000008003C60080023A14E8
+:10BF400080023884000000780000007C00000010AF
+:10BF500000000020000000018003C60880023A149F
+:10BF6000800238840000008000000084000000008F
+:10BF700000000000000000008003C60C80023A149C
+:10BF800080023884000000880000008C000000005F
+:10BF900000000000000000018003C61880023A146F
+:10BFA00080023884000000900000000000000000C3
+:10BFB00000000000000000008003C62080023A1448
+:10BFC000800238840000009400000000000000009F
+:10BFD00000000000000000008003C62880023A1420
+:10BFE000800238840000009800000000000000007B
+:10BFF00000000000000000008003C63480023A14F4
+:10C00000800238840000009C000000000000000056
+:10C0100000000000000000008003C64080023A14C7
+:10C0200080023884000000A0000000000000000032
+:10C0300000000000000000018003C65480023A1492
+:10C0400080023884000000A400000000000000000E
+:10C0500000000000000000008003C65C80023A146B
+:10C0600080023884000000A80000000000000000EA
+:10C0700000000000000000008003C66C80023A143B
+:10C0800080023884000000AC0000000000000000C6
+:10C0900000000000000000008003C68080023A1407
+:10C0A00080023884000000B00000000000000000A2
+:10C0B00000000000000000008003C68C80023A14DB
+:10C0C00080023884000000B400000000000000007E
+:10C0D00000000000000000008003C69880023A14AF
+:10C0E00080023884000000B800000000000000005A
+:10C0F00000000000000000008003C6A880023A147F
+:10C1000080023884000000BC000000000000000035
+:10C1100000000000000000008003C6B880023A144E
+:10C1200080023884000000C0000000000000000011
+:10C1300000000000000000018003C6CC80023A1419
+:10C1400080023884000000C40000000000000000ED
+:10C1500000000000000000008003C6D880023A14EE
+:10C1600080023884000000C80000000000000000C9
+:10C1700000000000000000008003C6E880023A14BE
+:10C1800080023884000000CC0000000000000000A5
+:10C1900000000000000000008003C6FC80023A148A
+:10C1A00080023884000000D400000000000000007D
+:10C1B00000000000000000008003C70480023A1461
+:10C1C00080023884000000D8000000000000000059
+:10C1D00000000000000000008003C70C80023A1439
+:10C1E00080023884000000DC000000000000000035
+:10C1F00000000000000000008003C71480023A1411
+:10C2000080023884000000E0000000000000000010
+:10C2100000000000000000018003C71880023A14EB
+:10C2200080023884000000E80000000000000000E8
+:10C2300000000000000000008003C72480023A14C0
+:10C2400080023884000000EC0000000000000000C4
+:10C2500000000000000000008003C81480023D744C
+:10C260008002380C000000E4000000000000000024
+:10C2700000000000000000008003C72C80023D7415
+:10C280008002380C000000F00000000000000000F8
+:10C2900000000000000000008003C738800239FC65
+:10C2A000800233DC000000000000000000000000FD
+:10C2B00000000000000000018003C744800239E450
+:10C2C000800233C0000000000000000000000000F9
+:10C2D00000000000000000018003C750800239CC3C
+:10C2E000800233A4000000000000000000000000F5
+:10C2F00000000000000000018003C75C800239B428
+:10C3000080023388000000000000000000000000F0
+:10C3100000000000000000018003C76880023D7437
+:10C320008002380C00000144000000000000000002
+:10C3300000000000000000008003C77880023D7408
+:10C340008002380C0000000C00000000000000001B
+:10C3500000000000000000008003C78480023D74DC
+:10C360008002380C0000017C00000000000000008A
+:10C3700000000000000000008003C79480023A140F
+:10C3800080023884000001800000000000000000EE
+:10C3900000000000000000008003C7A080023D7480
+:10C3A0008002380C0000019C00000000000000002A
+:10C3B00000000000000000008003C7B080023D7450
+:10C3C0008002380C00000184000000000000000022
+:10C3D00000000001000000008003C7B880023D7427
+:10C3E0008002380C00000064000000000000000023
+:10C3F00000000002000000008003C7C080023D74FE
+:10C400008002380C0000014800000000000000001D
+:10C4100000000001000000008003C7D880023D74C6
+:10C420008002380C000001940000000000000000B1
+:10C4300000000001000000008003C7E480023A14FD
+:10C4400080023884000001A000000000000000000D
+:10C4500000000000000000008003C7EC80023D7473
+:10C460008002380C0000019800000000000000006D
+:10C4700000000001000000008003C7F480023D744A
+:10C480008002380C0000014C000000000000000099
+:10C4900000000001000000008003C80080023D741D
+:10C4A0008002380C000001A4000000000000000021
+:10C4B00000002710000000002A0000004F50454EE9
+:10C4C0000000000053484152454400004C45415093
+:10C4D00000000000574550313034000057455034BB
+:10C4E000300000005750412D454150004945454519
+:10C4F00038303231580000005750410052534E003E
+:10C50000575041320000000025734F50454E000047
+:10C5100025735348415245440000000025734C45A3
+:10C5200041500000257343434D5000002573544B88
+:10C530004950000025735745503130340000000049
+:10C54000257357455034300025734E4F4E4500003B
+:10C5500025735750412D50534B0000002573575001
+:10C56000412D45415000000025734945454538306F
+:10C570003231580025735750412D4E4F4E45000023
+:10C580002573575041000000257352534E000000A0
+:10C590007765705F6B6579256400000025732573EE
+:10C5A000000000007363616E5F73736964000000D4
+:10C5B000627373696400000070726F746F00000032
+:10C5C0006B65795F6D676D74000000007061697262
+:10C5D000776973650000000067726F757000000076
+:10C5E000617574685F616C6700000000616E6F6E5A
+:10C5F000796D6F75735F6964656E74697479000035
+:10C6000065617070736B00006E61690070617373B7
+:10C61000776F72640000000063615F63657274008D
+:10C6200063615F7061746800636C69656E745F63F9
+:10C6300065727400707269766174655F6B6579000C
+:10C64000707269766174655F6B65795F7061737331
+:10C650007764000064685F66696C65007375626A80
+:10C660006563745F6D61746368000000616C74736E
+:10C6700075626A6563745F6D6174636800000000D1
+:10C6800063615F63657274320000000063615F7014
+:10C690006174683200000000636C69656E745F63EA
+:10C6A0006572743200000000707269766174655FB3
+:10C6B0006B65793200000000707269766174655FA5
+:10C6C0006B6579325F7061737377640064685F666D
+:10C6D000696C6532000000007375626A6563745F9F
+:10C6E0006D61746368320000616C747375626A65B1
+:10C6F00063745F6D61746368320000007068617319
+:10C7000065310000706861736532000070637363A7
+:10C710000000000070696E00656E67696E655F6994
+:10C72000640000006B65795F696400006561706F8B
+:10C730006C5F666C616773007765705F6B657930FD
+:10C74000000000007765705F6B65793100000000C4
+:10C750007765705F6B657932000000007765705F08
+:10C760006B657933000000007765705F74785F6BEC
+:10C7700065796964780000007072696F7269747914
+:10C78000000000006561705F776F726B61726F759A
+:10C790006E6400007061635F66696C650000000094
+:10C7A000667261676D656E745F73697A650000001B
+:10C7B0006D6F6465000000007573655F77707300CE
+:10C7C00070726F6163746976655F6B65795F6361D1
+:10C7D0006368696E6700000064697361626C656418
+:10C7E0000000000069645F73747200007065657218
+:10C7F0006B6579006D697865645F63656C6C0000DA
+:10C800006672657175656E6379000000888E000040
+:10C8100077696669656E67696E6500005769466984
+:10C82000456E67696E6500008003C8108003C81CF0
+:10C830008002444C800243A480023F1C8002426478
+:10C840008002436C800244280000000080023F1EEA
+:10C850008002424C80023F1880023F1A800242341C
+:10C860008002421C80023F2080023F22800241C0A1
+:10C870008002416480024158800241300000000083
+:10C88000000000008002410480023F7880023F5493
+:10C890000000000000000000000000000000000098
+:10C8A0000000000000000000000000000000000088
+:10C8B00080023F24800245D2800245CE800245CAD4
+:10C8C000800245C4800245C0800245BA800245B658
+:10C8D000800245B0800245AA8002461680024610BA
+:10C8E0008002460C8002460680024600800245FA1D
+:10C8F000800245F6800245F0800245EA80024AB88F
+:10C9000080024B8C80024B6480024B3E80024B24A1
+:10C9100080024AB880024AB880024AB880024D4676
+:10C9200080024DBE80024D9680024D1280024C4620
+:10C9300080024A7A80024D7880024D52800258600F
+:10C9400080025A26800259848002588880025876D4
+:10C950008002597280025860800258608002586CD0
+:10C960008002586C8002586C696E76616C696461F3
+:10C97000746500004354524C2D4556454E542D4588
+:10C9800041502D5355434345535320454150206159
+:10C99000757468656E7469636174696F6E20636F26
+:10C9A0006D706C657465642073756363657373661D
+:10C9B000756C6C7920286261736564206F6E206CE1
+:10C9C0006F776572206C617965722073756363653A
+:10C9D000737329004354524C2D4556454E542D45F2
+:10C9E00041502D53554343455353204541502061F9
+:10C9F000757468656E7469636174696F6E20636FC6
+:10CA00006D706C65746564207375636365737366BC
+:10CA1000756C6C79000000004354524C2D4556450E
+:10CA20004E542D4541502D4641494C5552452045C7
+:10CA300041502061757468656E7469636174696FD3
+:10CA40006E206661696C656400000000494E4954BF
+:10CA500049414C495A4500004541503A206D6F729A
+:10CA600065207468616E2025642061757468656E48
+:10CA70007469636174696F6E20726F756E64732080
+:10CA80002D2061626F7274004354524C2D455645FF
+:10CA90004E542D4541502D4E4F5449464943415423
+:10CAA000494F4E20000000004354524C2D4556453E
+:10CAB0004E542D4541502D53544152544544204528
+:10CAC00041502061757468656E7469636174696F43
+:10CAD0006E20737461727465640000004745545F92
+:10CAE0004D4554484F4400004541503A2046616945
+:10CAF0006C656420746F20696E697469616C697A11
+:10CB00006520454150206D6574686F643A207665F4
+:10CB10006E646F72202575206D6574686F642025C2
+:10CB200075202825732900004354524C2D45564545
+:10CB30004E542D4541502D4D4554484F44204541BC
+:10CB4000502076656E646F72202575206D6574685F
+:10CB50006F6420257520282573292073656C656313
+:10CB600074656400454150206465696E6974000015
+:10CB7000800268C880026A5E80026ADC80026B26DE
+:10CB800080026C4C80026C5680026A485750413AD1
+:10CB900020544B495020636F756E7465726D6561EA
+:10CBA00073757265732073746F7070656400000034
+:10CBB0004173736F63696174656420746F206120D1
+:10CBC0006E6577204253533A2042535349443D25E2
+:10CBD0003032783A253032783A253032783A25307A
+:10CBE00032783A253032783A253032780000000029
+:10CBF0004173736F63696174656420776974682039
+:10CC0000253032783A253032783A253032783A2554
+:10CC10003032783A253032783A25303278000000C8
+:10CC20005750413A20342D5761792048616E647322
+:10CC300068616B65206661696C6564202D20707287
+:10CC4000652D736861726564206B6579206D61790B
+:10CC500020626520696E636F727265637400000004
+:10CC60004354524C2D4556454E542D444953434F41
+:10CC70004E4E4543544544202D20446973636F6EE6
+:10CC80006E656374206576656E74202D2072656D07
+:10CC90006F7665206B657973000000004D696368ED
+:10CCA00061656C204D4943206661696C7572652031
+:10CCB000646574656374656400000000544B4950FA
+:10CCC00020636F756E7465726D65617375726573DF
+:10CCD0002073746172746564000000000000000835
+:10CCE0000000000600000006496E646578202F20D1
+:10CCF0004141202F20504D4B4944202F2065787012
+:10CD000069726174696F6E2028696E207365636F44
+:10CD10006E647329202F206F70706F7274756E6946
+:10CD2000737469630A000000256420253032783A64
+:10CD3000253032783A253032783A253032783A2523
+:10CD40003032783A2530327820000000504D4B20A8
+:10CD50004E616D650000000052534E3A20737461BD
+:10CD60007274696E67207072652D61757468656E86
+:10CD70007469636174696F6E207769746820253007
+:10CD800032783A253032783A253032783A253032C6
+:10CD9000783A253032783A253032780052534E3A7C
+:10CDA0002070726F63657373696E6720504D4B53CB
+:10CDB000412063616E646964617465206C69737499
+:10CDC0000000000052534E3A206E6F7420696E20AE
+:10CDD0007375697461626C65207374617465206633
+:10CDE0006F72206E6577207072652D61757468654D
+:10CDF0006E7469636174696F6E00000052534E3A3D
+:10CE000020504D4B53412063616E646964617465C9
+:10CE100020253032783A253032783A253032783A47
+:10CE2000253032783A253032783A253032782073FE
+:10CE3000656C656374656420666F72207072652D21
+:10CE400061757468656E7469636174696F6E000002
+:10CE500052534E3A20504D4B53412063616E6469EA
+:10CE60006461746520253032783A253032783A256D
+:10CE70003032783A253032783A253032783A2530D7
+:10CE8000327820646F6573206E6F74206E65656400
+:10CE9000207072652D61757468656E746963617464
+:10CEA000696F6E20616E796D6F72650052534E3AF4
+:10CEB000206E6F206D6F72652070656E64696E679D
+:10CEC00020504D4B53412063616E64696461746509
+:10CED0007300000052534E3A206164646564205030
+:10CEE0004D4B53412063616368652063616E6469E3
+:10CEF0006461746520253032783A253032783A25DD
+:10CF00003032783A253032783A253032783A253046
+:10CF10003278207072696F202564000052534E3AB7
+:10CF2000207072652D61757468656E7469636174D3
+:10CF3000696F6E207769746820253032783A253021
+:10CF400032783A253032783A253032783A25303204
+:10CF5000783A253032782074696D6564206F757475
+:10CF600000000000636F6D706C65746564207375FC
+:10CF7000636365737366756C6C79000052534E3A47
+:10CF8000206661696C656420746F20676574206D2C
+:10CF900061737465722073657373696F6E206B655E
+:10CFA000792066726F6D207072652D6175746820CE
+:10CFB0004541504F4C207374617465206D61636806
+:10CFC000696E65730000000052534E3A207072651E
+:10CFD0002D61757468656E7469636174696F6E2024
+:10CFE0007769746820253032783A253032783A25CE
+:10CFF0003032783A253032783A253032783A253056
+:10D000003278202573000000800000008002A4A078
+:10D010008002A48E8002A4848002A47E8002A47870
+:10D020008002A4728002A46C000FAC010050F202D6
+:10D03000000FAC02000FAC01000FAC050050F20273
+:10D04000000FAC040050F2010050F2010050F20158
+:10D050000050F2050050F200000FAC00000FAC03CE
+:10D060000050F200000FAC044945454520383032ED
+:10D070002E315820286E6F205750412900000000A3
+:10D080005750412F49454545203830322E31582FD1
+:10D0900045415000575041322F49454545203830D1
+:10D0A000322E31582F454150000000005750413278
+:10D0B0002D50534B000000005745502D34300000D8
+:10D0C0005745502D3130340070616972776973654E
+:10D0D0005F6369706865723D25730A67726F75706A
+:10D0E0005F6369706865723D25730A6B65795F6D72
+:10D0F000676D743D25730A005750413A202573200F
+:10D10000287372633D253032783A253032783A25DB
+:10D110003032783A253032783A253032783A253034
+:10D12000327829005750413A204B6579206E656767
+:10D130006F74696174696F6E20636F6D706C657474
+:10D140006564207769746820253032783A2530325A
+:10D15000783A253032783A253032783A25303278AC
+:10D160003A25303278205B50544B3D25732047548C
+:10D170004B3D25735D0000005750413A20496E76C3
+:10D18000616C6964204541504F4C2D4B6579206698
+:10D1900072616D65202D206B65795F64617461201B
+:10D1A0006F766572666C6F7720282564203E202597
+:10D1B0006C752900494520696E20332F34206D732A
+:10D1C0006720646F6573206E6F74206D617463688F
+:10D1D000207769746820494520696E204265616343
+:10D1E0006F6E2F50726F62655265737020286E6F7C
+:10D1F0002049453F29000000494520696E20332F12
+:10D2000034206D736720646F6573206E6F74206DBA
+:10D2100061746368207769746820494520696E20CD
+:10D22000426561636F6E2F50726F626552657370F5
+:10D2300000000000506F737369626C6520646F7743
+:10D240006E67726164652061747461636B206465EC
+:10D25000746563746564202D2052534E207761738A
+:10D2600020656E61626C656420616E642052534E6D
+:10D270002049452077617320696E206D73672033E4
+:10D280002F342C20627574206E6F7420696E2042DA
+:10D290006561636F6E2F50726F62655265737000C7
+:10D2A0005750413A204661696C656420746F20676D
+:10D2B0006574206D61737465722073657373696F33
+:10D2C0006E206B65792066726F6D204541504F4C22
+:10D2D000207374617465206D616368696E657300A5
+:10D2E0005750413A204B65792068616E64736861DC
+:10D2F0006B652061626F7274656400005750413A3B
+:10D30000204661696C656420746F206765742072C3
+:10D31000616E646F6D206461746120666F7220536A
+:10D320004E6F6E63650000005061697277697365C6
+:10D33000206B657920657870616E73696F6E00008F
+:10D340005750413A2047726F75702072656B65794E
+:10D35000696E6720636F6D706C65746564207769B2
+:10D36000746820253032783A253032783A253032C8
+:10D37000783A253032783A253032783A253032788A
+:10D38000205B47544B3D25735D000000000000000A
+:10D39000000000000050F204000FAC02000FAC01CE
+:10D3A00052096AD53036A538BF40A39E81F3D7FB1A
+:10D3B0007CE339829B2FFF87348E4344C4DEE9CB64
+:10D3C000547B9432A6C2233DEE4C950B42FAC34ED9
+:10D3D000082EA16628D924B2765BA2496D8BD1258F
+:10D3E00072F8F66486689816D4A45CCC5D65B69233
+:10D3F0006C704850FDEDB9DA5E154657A78D9D84D7
+:10D4000090D8AB008CBCD30AF7E45805B8B34506F6
+:10D41000D02C1E8FCA3F0F02C1AFBD0301138A6B10
+:10D420003A9111414F67DCEA97F2CFCEF0B4E67340
+:10D4300096AC7422E7AD3585E2F937E81C75DF6EEE
+:10D4400047F11A711D29C5896FB7620EAA18BE1B54
+:10D45000FC563E4BC6D279209ADBC0FE78CD5AF4FA
+:10D460001FDDA8338807C731B11210592780EC5F40
+:10D4700060517FA919B54A0D2DE57A9F93C99CEF9C
+:10D48000A0E03B4DAE2AF5B0C8EBBB3C835399619D
+:10D49000172B047EBA77D626E169146355210C7DDB
+:10D4A00001020408102040801B36000051F4A750F0
+:10D4B0007E4165531A17A4C33A275E963BAB6BCBEC
+:10D4C0001F9D45F1ACFA58AB4BE303932030FA555E
+:10D4D000AD766DF688CC7691F5024C254FE5D7FCFC
+:10D4E000C52ACBD726354480B562A38FDEB15A4911
+:10D4F00025BA1B6745EA0E985DFEC0E1C32F750291
+:10D50000814CF0128D4697A36BD3F9C6038F5FE76A
+:10D5100015929C95BF6D7AEB955259DAD4BE832D46
+:10D52000587421D349E069298EC9C84475C2896AF3
+:10D53000F48E797899583E6B27B971DDBEE14FB60C
+:10D54000F088AD17C920AC667DCE3AB463DF4A18C7
+:10D55000E51A31829751336062537F45B16477E0B9
+:10D56000BB6BAE84FE81A01CF9082B9470486858F0
+:10D570008F45FD1994DE6C87527BF8B7AB73D323CC
+:10D58000724B02E2E31F8F576655AB2AB2EB2807B6
+:10D590002FB5C20386C57B9AD33708A5302887F2FA
+:10D5A00023BFA5B202036ABAED16825C8ACF1C2B98
+:10D5B000A779B492F307F2F04E69E2A165DAF4CDEF
+:10D5C0000605BED5D134621FC4A6FE8A342E539DF3
+:10D5D000A2F355A0058AE132A4F6EB750B83EC3972
+:10D5E0004060EFAA5E719F06BD6E10513E218AF920
+:10D5F00096DD063DDD3E05AE4DE6BD4691548DB54A
+:10D6000071C45D050406D46F605015FF1998FB24A2
+:10D61000D6BDE997894043CC67D99E77B0E842BD33
+:10D6200007898B88E7195B3879C8EEDBA17C0A474C
+:10D630007C420FE9F8841EC900000000098086833F
+:10D64000322BED481E1170AC6C5A724EFD0EFFFB72
+:10D650000F8538563DAED51E362D39270A0FD964B1
+:10D66000685CA6219B5B54D124362E3A0C0A67B124
+:10D670009357E70FB4EE96D21B9B919E80C0C54F87
+:10D6800061DC20A25A774B691C121A16E293BA0A7F
+:10D69000C0A02AE53C22E043121B171D0E090D0B0A
+:10D6A000F28BC7AD2DB6A8B9141EA9C857F11985BC
+:10D6B000AF75074CEE99DDBBA37F60FDF701269F98
+:10D6C0005C72F5BC44663BC55BFB7E348B432976BC
+:10D6D000CB23C6DCB6EDFC68B8E4F163D731DCCA15
+:10D6E000426385101397224084C61120854A247D09
+:10D6F000D2BB3DF8AEF93211C729A16D1D9E2F4B4B
+:10D70000DCB230F30D8652EC77C1E3D02BB3166C4C
+:10D71000A970B999119448FA47E96422A8FC8CC40D
+:10D72000A0F03F1A567D2CD8223390EF87494EC780
+:10D73000D938D1C18CCAA2FE98D40B36A6F581CFB8
+:10D74000A57ADE28DAB78E263FADBFA42C3A9DE439
+:10D750005078920D6A5FCC9B547E4662F68D13C260
+:10D7600090D8B8E82E39F75E82C3AFF59F5D80BED2
+:10D7700069D0937C6FD52DA9CF2512B3C8AC993B46
+:10D7800010187DA7E89C636EDB3BBB7BCD26780938
+:10D790006E5918F4EC9AB701834F9AA8E6956E6516
+:10D7A000AAFFE67E21BCCF08EF15E8E6BAE79BD9D1
+:10D7B0004A6F36CEEA9F09D429B07CD631A4B2AFE5
+:10D7C0002A3F2331C6A5943035A266C0744EBC37BB
+:10D7D000FC82CAA6E090D0B033A7D815F104984ACD
+:10D7E00041ECDAF77FCD500E1791F62F764DD68D9E
+:10D7F00043EFB04DCCAA4D54E49604DF9ED1B5E37F
+:10D800004C6A881BC12C1FB84665517F9D5EEA0497
+:10D81000018C355DFA877473FB0B412EB3671D5A7B
+:10D8200092DBD252E91056336DD647139AD7618CEA
+:10D8300037A10C7A59F8148EEB133C89CEA927EE48
+:10D84000B761C935E11CE5ED7A47B13C9CD2DF599F
+:10D8500055F2733F1814CE7973C737BF53F7CDEA2B
+:10D860005FFDAA5BDF3D6F147844DB86CAAFF381AE
+:10D87000B968C43E3824342CC2A3405F161DC3725D
+:10D88000BCE2250C283C498BFF0D954139A801715C
+:10D89000080CB3DED8B4E49C6456C1907BCB8461A1
+:10D8A000D532B670486C5C74D0B85742C66363A575
+:10D8B000F87C7C84EE777799F67B7B8DFFF2F20D16
+:10D8C000D66B6BBDDE6F6FB191C5C5546030305003
+:10D8D00002010103CE6767A9562B2B7DE7FEFE19D7
+:10D8E000B5D7D7624DABABE6EC76769A8FCACA4510
+:10D8F0001F82829D89C9C940FA7D7D87EFFAFA159A
+:10D90000B25959EB8E4747C9FBF0F00B41ADADEC76
+:10D91000B3D4D4675FA2A2FD45AFAFEA239C9CBFFE
+:10D9200053A4A4F7E47272969BC0C05B75B7B7C2EC
+:10D93000E1FDFD1C3D9393AE4C26266A6C36365AAB
+:10D940007E3F3F41F5F7F70283CCCC4F6834345C1F
+:10D9500051A5A5F4D1E5E534F9F1F108E27171932F
+:10D96000ABD8D873623131532A15153F0804040C23
+:10D9700095C7C752462323659DC3C35E3018182838
+:10D98000379696A10A05050F2F9A9AB50E07070933
+:10D99000241212361B80809BDFE2E23DCDEBEB26AA
+:10D9A0004E2727697FB2B2CDEA75759F1209091B10
+:10D9B0001D83839E582C2C74341A1A2E361B1B2D53
+:10D9C000DC6E6EB2B45A5AEE5BA0A0FBA45252F6C3
+:10D9D000763B3B4DB7D6D6617DB3B3CE5229297B7A
+:10D9E000DDE3E33E5E2F2F7113848497A65353F536
+:10D9F000B9D1D16800000000C1EDED2C40202060BD
+:10DA0000E3FCFC1F79B1B1C8B65B5BEDD46A6ABEBA
+:10DA10008DCBCB4667BEBED97239394B944A4ADEAC
+:10DA2000984C4CD4B05858E885CFCF4ABBD0D06B77
+:10DA3000C5EFEF2A4FAAAAE5EDFBFB16864343C5C7
+:10DA40009A4D4DD766333355118585948A4545CF18
+:10DA5000E9F9F91004020206FE7F7F81A05050F020
+:10DA6000783C3C44259F9FBA4BA8A8E3A25151F3B0
+:10DA70005DA3A3FE804040C0058F8F8A3F9292AD88
+:10DA8000219D9DBC70383848F1F5F50463BCBCDFBE
+:10DA900077B6B6C1AFDADA754221216320101030B3
+:10DAA000E5FFFF1AFDF3F30EBFD2D26D81CDCD4C51
+:10DAB000180C0C1426131335C3ECEC2FBE5F5FE17A
+:10DAC000359797A2884444CC2E17173993C4C4576E
+:10DAD00055A7A7F2FC7E7E827A3D3D47C86464ACC0
+:10DAE000BA5D5DE73219192BE6737395C06060A0CB
+:10DAF000198181989E4F4FD1A3DCDC7F442222669E
+:10DB0000542A2A7E3B9090AB0B8888838C4646CA69
+:10DB1000C7EEEE296BB8B8D32814143CA7DEDE7923
+:10DB2000BC5E5EE2160B0B1DADDBDB76DBE0E03BA3
+:10DB300064323256743A3A4E140A0A1E924949DB4C
+:10DB40000C06060A4824246CB85C5CE49FC2C25DE3
+:10DB5000BDD3D36E43ACACEFC46262A6399191A839
+:10DB6000319595A4D3E4E437F279798BD5E7E732A0
+:10DB70008BC8C8436E373759DA6D6DB7018D8D8C00
+:10DB8000B1D5D5649C4E4ED249A9A9E0D86C6CB4ED
+:10DB9000AC5656FAF3F4F407CFEAEA25CA6565AF46
+:10DBA000F47A7A8E47AEAEE9100808186FBABAD583
+:10DBB000F07878884A25256F5C2E2E72381C1C243C
+:10DBC00057A6A6F173B4B4C797C6C651CBE8E823ED
+:10DBD000A1DDDD7CE874749C3E1F1F21964B4BDD5C
+:10DBE00061BDBDDC0D8B8B860F8A8A85E0707090DD
+:10DBF0007C3E3E4271B5B5C4CC6666AA904848D812
+:10DC000006030305F7F6F6011C0E0E12C26161A3AE
+:10DC10006A35355FAE5757F969B9B9D0178686911D
+:10DC200099C1C1583A1D1D27279E9EB9D9E1E138F7
+:10DC3000EBF8F8132B9898B322111133D26969BB12
+:10DC4000A9D9D970078E8E89339494A72D9B9BB642
+:10DC50003C1E1E2215878792C9E9E92087CECE494E
+:10DC6000AA5555FF50282878A5DFDF7A038C8C8FC2
+:10DC700059A1A1F8098989801A0D0D1765BFBFDA6E
+:10DC8000D7E6E631844242C6D06868B8824141C3D3
+:10DC9000299999B05A2D2D771E0F0F117BB0B0CB5B
+:10DCA000A85454FC6DBBBBD62C16163A5258000033
+:10DCB00054580000FFFFFF740000000001FFFFFF49
+:10DCC0000000FFFFFFFFFF400000000001FFFFFF1B
+:10DCD000002020202020202020202828282828203C
+:10DCE0002020202020202020202020202020202034
+:10DCF000208810101010101010101010101010109C
+:10DD0000100404040404040404040410101010108B
+:10DD10001010414141414141010101010101010155
+:10DD200001010101010101010101010110101010A7
+:10DD30001010424242424242020202020202020227
+:10DD4000020202020202020202020202101010107B
+:10DD500020000000000000000000000000000000A3
+:10DD600000000000000000000000000000000000B3
+:10DD700000000000000000000000000000000000A3
+:10DD80000000000000000000000000000000000093
+:10DD90000000000000000000000000000000000083
+:10DDA0000000000000000000000000000000000073
+:10DDB0000000000000000000000000000000000063
+:10DDC0000000000000000000000000000000000053
+:10DDD000000000002D2D0000504F5349584C595F52
+:10DDE000434F52524543540025733A206F70746973
+:10DDF0006F6E206025732720697320616D626967EB
+:10DE0000756F75732028636F756C64206265206080
+:10DE10002D2D257327206F7220602D2D2573272926
+:10DE20000A00000025733A20696E76616C696420EF
+:10DE30006F7074696F6E202D2D20602D2563270A69
+:10DE40000000000025733A20617267756D656E747D
+:10DE500020726571756972656420666F72206F70DB
+:10DE600074696F6E206000002D2D2573270A000055
+:10DE70002D2563270A00000043000000000004A8CD
+:10DE80008002EA7E8002EAA28002E8D08002E908ED
+:10DE90008002EA6A8002EA688002EA1E8002EA42A0
+:10DEA0008002E9FC8002E9FC8002E9EC8002E9FCE6
+:10DEB0008002EA0A8002EA0A8002E9FC01020B04FD
+:10DEC0000B0506010B01020B040B0506010B0B0BE6
+:10DED00003040B050B0B0B0B0B0B040B050B0B0BB4
+:10DEE0000B0B0B0B0B0B0B0B0B05080B040B0B0796
+:10DEF0000B0B0B090B040B050B0B0B0B0A0B040B89
+:10DF00000B0B0B0B0B0B0B040B0B0B0B0B0B0B0370
+:10DF10000B0B0B0B0B0B0B0B080B0B0B0B0B0B005F
+:10DF200000000000000000000001000304000000E9
+:10DF300000000100030400000000000007030400CB
+:10DF400000000000000003040000000000000000CA
+:10DF500004000000000002000304000000000001B3
+:10DF60000005060500000000010005060000000095
+:10DF70000000000304000000000000080000000092
+:10DF80000000000008000000000000000000000089
+:10DF900000000000303132333435363738394142F1
+:10DFA00043444546000000003031323334353637C3
+:10DFB000383961626364656600000000627567203D
+:10DFC000696E2076667072696E74663A206261646A
+:10DFD0002062617365000000303030303030303006
+:10DFE0003030303030303030080808080808080871
+:10DFF00008080808080808080808080808080808A1
+:10E000000808080808080808070808070208080799
+:10E0100008080607080705080001010101010101C0
+:10E020000101080808080808080408040404040496
+:10E030000808080803080804080808040804080871
+:10E04000040808080808080808040804040404046C
+:10E050000304030803080404040308040304080871
+:10E060000408030808080808080808080808080839
+:10E070000808080808080808080808080808080820
+:10E080000808080808080808080808080808080810
+:10E090000808080808080808080808080808080800
+:10E0A00008080808080808080808080808080808F0
+:10E0B00008080808080808080808080808080808E0
+:10E0C00008080808080808080808080808080808D0
+:10E0D00008080808080808080808080808080808C0
+:10E0E00008080808080808082020202020202020F0
+:10E0F0002020202020202020000A00010002000310
+:10E10000000400050006000700080009000A000BD3
+:10E11000000C000D000E000F0010000000000000B9
+:10E1200000000000000000000000000000000000EF
+:10E1300000000000000000000000000000000000DF
+:10E1400000000000000000000000000000000000CF
+:10E1500000000000000000000000000000000000BF
+:10E1600000000000000000000000000000000000AF
+:10E1700000000000000000000000000080038D1877
+:10E1800080038BD480038BD480038BD480038BD407
+:10E1900080038BD480038BD480038BD480038BD4F7
+:10E1A00080038BD4FFFFFFFFFFFFFFFF49534F2D7D
+:10E1B000383835392D310000800327D6800327FAFF
+:10E1C0008003262880032660800327C2800327C09F
+:10E1D000800327768003279A8003275480032754DF
+:10E1E000800327448003275480032762800327622B
+:10E1F0008003275480032AEE80033E5C80033E5C4C
+:10E2000080032AFE80033E5C80033E5C80033E5C0C
+:10E2100080033E5C80033E5C80033E5C80032B04F5
+:10E2200080032BEA80033E5C80032BE480032BF207
+:10E2300080033E5C80032D1C80032D2480032D244D
+:10E2400080032D2480032D2480032D2480032D247E
+:10E2500080032D2480032D2480032D2480033E5C25
+:10E2600080033E5C80033E5C80033E5C80033E5C3A
+:10E2700080033E5C80033E5C80033E5C80033E5C2A
+:10E2800080033E5C80032E208003301C80033E5CB4
+:10E290008003301C80033E5C80033E5C80033E5C58
+:10E2A00080033E5C80032D5C80033E5C80033E5C0B
+:10E2B000800335EE80033E5C80033E5C80033E5C61
+:10E2C00080033E5C80033E5C8003393E80033E5CFD
+:10E2D00080033E5C80032AE480033E5C80033E5C56
+:10E2E00080033E5C80033E5C80033E5C80033E5CBA
+:10E2F00080033E5C80033E5C80033E5C80033E5CAA
+:10E3000080032D9080032E268003301C8003301C58
+:10E310008003301C80032D6280032E2680033E5C28
+:10E3200080033E5C80032D6880033E5C80033436AE
+:10E33000800335F4800337E280032D8880033E5C40
+:10E340008003388880033E5C8003394480033E5C50
+:10E3500080033E5C80033B3401020B040B05060185
+:10E360000B01020B040B0506010B0B0B03040B0541
+:10E370000B0B0B0B0B0B040B050B0B0B0B0B0B0BFA
+:10E380000B0B0B0B0B05080B040B0B070B0B0B09F3
+:10E390000B040B050B0B0B0B0A0B040B0B0B0B0BE2
+:10E3A0000B0B0B040B0B0B0B0B0B0B030B0B0B0BCC
+:10E3B0000B0B0B0B080B0B0B0B0B0B0000000000E7
+:10E3C00000000000202020202020202020202020CD
+:10E3D00020202020000100030400000000000100B4
+:10E3E0000304000000000000070304000000000018
+:10E3F0000000030400000000000000000400000012
+:10E4000000000200030400000000000100050605F2
+:10E4100000000000010005060000000000000003ED
+:10E4200004000000000000080000000000000000E0
+:10E4300008000000000000000000000000000000D4
+:10E44000696E6600494E46006E616E004E414E0098
+:10E4500030303030303030303030303030303030BC
+:10E46000080808080808080808080808080808082C
+:10E47000080808080808080808080808080808081C
+:10E48000070808070208080708080607080705081C
+:10E490000001010101010101010108080808080843
+:10E4A000080408040404040408080808030808040D
+:10E4B00008080804080408080408080808080808E8
+:10E4C00008040804040404040304030803080404FF
+:10E4D00004030804030408080408030808080808DB
+:10E4E00008080808080808080808080808080808AC
+:10E4F000080808080808080808080808080808089C
+:10E50000080808080808080808080808080808088B
+:10E51000080808080808080808080808080808087B
+:10E52000080808080808080808080808080808086B
+:10E53000080808080808080808080808080808085B
+:10E54000080808080808080808080808080808084B
+:10E55000080808080808080808080808080808083B
+:10E56000496E66696E697479000000004E614E0064
+:10E570003FF0000000000000402400000000000008
+:10E580004059000000000000408F400000000000E3
+:10E5900040C388000000000040F86A00000000004E
+:10E5A000412E848000000000416312D00000000072
+:10E5B0004197D7840000000041CDCD6500000000E8
+:10E5C0004202A05F2000000042374876E8000000C9
+:10E5D000426D1A94A200000042A2309CE540000067
+:10E5E00042D6BCC41E900000430C6BF526340000DC
+:10E5F0004341C37937E080004376345785D8A00083
+:10E6000043ABC16D674EC80043E158E460913D00E3
+:10E610004415AF1D78B58C40444B1AE4D6E2EF5058
+:10E620004480F0CF064DD59244B52D02C7E14AF69D
+:10E6300044EA784379D99DB44341C37937E08000F7
+:10E640004693B8B5B5056E174D384F03E93FF9F558
+:10E650005A827748F9301D3275154FDD7F73BF3C04
+:0CE6600000000005000000190000007D13
+:10E67000000000000000000000000000000000009A
+:10E68000000000000000000000000000000000008A
+:10E69000000000000000000000000000000000007A
+:10E6A000000000000000000000000000000000006A
+:10E6B000000000000000000000000000000000005A
+:10E6C000000000000000000000000000000000004A
+:10E6D000000000000000000000000000000000003A
+:10E6E000000000000000000000000000000000002A
+:10E6F000000000000000000000000000000000001A
+:10E700000000000000000000000000000000000009
+:10E7100000000000000000000000000000000000F9
+:10E7200000000000000000000000000000000000E9
+:10E7300000000000000000000000000000000000D9
+:10E740000000000400000000800374285573616716
+:10E75000653A2074746370202D742F2D72205B2D08
+:10E760006F7074696F6E735D20686F73740A202018
+:10E770002020202020202D6C2020202020206C65AF
+:10E780006E677468206F66206275667320777269A1
+:10E790007474656E20746F206E6574776F726B2071
+:10E7A0002864656661756C742031303234290A2022
+:10E7B000202020202020202D6E2020202020206EB0
+:10E7C000756D626572206F66206275667320777260
+:10E7D000697474656E20746F206E6574776F726BE8
+:10E7E000202864656661756C742031303234290AE2
+:10E7F00020202020202020202D70202020202020BC
+:10E80000706F7274206E756D62657220746F207304
+:10E81000656E6420746F202864656661756C742071
+:10E8200032303030290A20202020202020202D7551
+:10E830002020202020207564700A20202020202005
+:10E8400020202D76202020202020766572626F7394
+:10E85000650A0000000000040000196E10000000AE
+:10E86000ABCD000000000010000501000014000006
+:10E8700080016304800163048001630480016304F8
+:10E8800000000000000002180000000C02040B0C45
+:10E89000121618243048606C0000000000000000D0
+:10E8A00000000000FFFFFFFF0A00000064756D6DAF
+:10E8B000795F7373696400000000000000000000CD
+:10E8C0000000000000000000000000000000000048
+:10E8D000303030313032303330343035303630371C
+:10E8E00030383039306130623063306430653066E2
+:10E8F00031303131313231333134313531363137F4
+:10E9000031383139316131623163316431653166B9
+:10E91000000000006D3E86B0FFFFFFFFFFFF00001C
+:10E92000000003E8000000010000000100000320D7
+:10E9300000000001000000000000000800000002CC
+:10E940000000006400000000000000050000000F4F
+:10E95000000000050000000F00001388000013886D
+:10E96000000007D00000138800003E800000000275
+:10E970000000000C02040B0C121618243048606CC6
+:10E980000000000000000000000000000000000087
+:10E99000000000000D0102030405060708090A0B28
+:10E9A0000C0D000000000011FF000000000000003E
+:10E9B0000000000000000000000000000000000057
+:10E9C00000000000000000000000FFFFFFFFFFFF4D
+:10E9D0000000000100000003000000010000000131
+:10E9E0000000000000000001000000010000000124
+:10E9F0000000000100000000000000010000000A0B
+:10EA000000000005000000000000000500000000FC
+:10EA1000FFFFFFFF000000010000000000000002F7
+:10EA2000FF000000000000000000000000000000E7
+:10EA300000000000000000000000000000000000D6
+:10EA40000000FFFFFFFFFFFF0000000100000003C8
+:10EA500000000000000007D0000000640301010076
+:10EA6000060200000000000C82848B8C1296182491
+:10EA70003048606C00000000000000000000000052
+:10EA80000000000000000001000000010000000183
+:10EA90000014000000000014000007D00000000077
+:10EAA000000000010000000000000006000000015E
+:10EAB000000000028003C8280000000080024570AA
+:10EAC00080024598800245DC800246208002462E66
+:10EAD000800245788002463A80024654800250D037
+:10EAE000FFFFFFFFFFFFFFFFFF759000000001FF2A
+:10EAF000FFFFFFFEFFFFFFFFFF751000000001FF9B
+:10EB0000FFFFFFFE8003DCD10000003F000000019A
+:10EB10008003E11C8003E13C8003E15C0000000015
+:10EB200000000000000000000000000000000000E5
+:10EB30008003DE78000000000000000000000000FC
+:10EB400000000000000000000000000000000000C5
+:10EB500000000000000000000000000000000000B5
+:10EB600000000000000000000000000000000000A5
+:10EB70000000000000000000000000000000000095
+:10EB80000000000000000000000000000000000085
+:10EB90000000000000000000000000000000000075
+:10EBA0000000000000000000000000000000000065
+:10EBB0000000000000000000000000000000000055
+:10EBC0000000000000000000000000000000000045
+:10EBD0000000000000000000000000000000000035
+:10EBE0000000000000000000000000000000000025
+:10EBF0000000000000000000000000000000000015
+:10EC0000000004A800000000000000000000059CB7
+:10EC10000000059C000005A4000005A4000005AC50
+:10EC2000000005AC000005B4000005B4000005BC00
+:10EC3000000005BC000005C4000005C4000005CCB0
+:10EC4000000005CC000005D4000005D4000005DC60
+:10EC5000000005DC000005E4000005E4000005EC10
+:10EC6000000005EC000005F4000005F4000005FCC0
+:10EC7000000005FC00000604000006040000060C6D
+:10EC80000000060C00000614000006140000061C1C
+:10EC90000000061C00000624000006240000062CCC
+:10ECA0000000062C00000634000006340000063C7C
+:10ECB0000000063C00000644000006440000064C2C
+:10ECC0000000064C00000654000006540000065CDC
+:10ECD0000000065C00000664000006640000066C8C
+:10ECE0000000066C00000674000006740000067C3C
+:10ECF0000000067C00000684000006840000068CEC
+:10ED00000000068C00000694000006940000069C9B
+:10ED10000000069C000006A4000006A4000006AC4B
+:10ED2000000006AC000006B4000006B4000006BCFB
+:10ED3000000006BC000006C4000006C4000006CCAB
+:10ED4000000006CC000006D4000006D4000006DC5B
+:10ED5000000006DC000006E4000006E4000006EC0B
+:10ED6000000006EC000006F4000006F4000006FCBB
+:10ED7000000006FC00000704000007040000070C68
+:10ED80000000070C00000714000007140000071C17
+:10ED90000000071C00000724000007240000072CC7
+:10EDA0000000072C00000734000007340000073C77
+:10EDB0000000073C00000744000007440000074C27
+:10EDC0000000074C00000754000007540000075CD7
+:10EDD0000000075C00000764000007640000076C87
+:10EDE0000000076C00000774000007740000077C37
+:10EDF0000000077C00000784000007840000078CE7
+:10EE00000000078C00000794000007940000079C96
+:10EE10000000079C000007A4000007A4000007AC46
+:10EE2000000007AC000007B4000007B4000007BCF6
+:10EE3000000007BC000007C4000007C4000007CCA6
+:10EE4000000007CC000007D4000007D4000007DC56
+:10EE5000000007DC000007E4000007E4000007EC06
+:10EE6000000007EC000007F4000007F4000007FCB6
+:10EE7000000007FC00000804000008040000080C63
+:10EE80000000080C00000814000008140000081C12
+:10EE90000000081C00000824000008240000082CC2
+:10EEA0000000082C00000834000008340000083C72
+:10EEB0000000083C00000844000008440000084C22
+:10EEC0000000084C00000854000008540000085CD2
+:10EED0000000085C00000864000008640000086C82
+:10EEE0000000086C00000874000008740000087C32
+:10EEF0000000087C00000884000008840000088CE2
+:10EF00000000088C00000894000008940000089C91
+:10EF10000000089C000008A4000008A4000008AC41
+:10EF2000000008AC000008B4000008B4000008BCF1
+:10EF3000000008BC000008C4000008C4000008CCA1
+:10EF4000000008CC000008D4000008D4000008DC51
+:10EF5000000008DC000008E4000008E4000008EC01
+:10EF6000000008EC000008F4000008F4000008FCB1
+:10EF7000000008FC00000904000009040000090C5E
+:10EF80000000090C00000914000009140000091C0D
+:10EF90000000091C00000924000009240000092CBD
+:10EFA0000000092C00000934000009340000093C6D
+:10EFB0000000093C00000944000009440000094C1D
+:10EFC0000000094C00000954000009540000095CCD
+:10EFD0000000095C00000964000009640000096C7D
+:10EFE0000000096C00000974000009740000097C2D
+:10EFF0000000097C00000984000009840000098CDD
+:10F000000000098C0000099400000994000200002F
+:0CF01000FFFFFFFF00000001000078CCB3
+:040000058000000077
+:00000001FF
diff --git a/hardware/arduino/firmwares/wifishield/binary/wifiHD_2_1.elf b/hardware/arduino/firmwares/wifishield/binary/wifiHD_2_1.elf
new file mode 100644
index 0000000..9217d48
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/binary/wifiHD_2_1.elf differ
diff --git a/hardware/arduino/firmwares/wifishield/binary/wifi_dnld.elf b/hardware/arduino/firmwares/wifishield/binary/wifi_dnld.elf
new file mode 100644
index 0000000..11ec3dd
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/binary/wifi_dnld.elf differ
diff --git a/hardware/arduino/firmwares/wifishield/binary/wifi_dnld.hex b/hardware/arduino/firmwares/wifishield/binary/wifi_dnld.hex
new file mode 100644
index 0000000..bf2c05c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/binary/wifi_dnld.hex
@@ -0,0 +1,10470 @@
+:0200000480007A
+:10000000E08F100000000000000000000000000071
+:1000100000000000000000000000000000000000E0
+:1000200000000000000000000000000000000000D0
+:1000300000000000000000000000000000000000C0
+:1000400000000000000000000000000000000000B0
+:1000500000000000000000000000000000000000A0
+:100060000000000000000000000000000000000090
+:100070000000000000000000000000000000000080
+:100080000000000000000000000000000000000070
+:100090000000000000000000000000000000000060
+:1000A0000000000000000000000000000000000050
+:1000B0000000000000000000000000000000000040
+:1000C0000000000000000000000000000000000030
+:1000D0000000000000000000000000000000000020
+:1000E0000000000000000000000000000000000010
+:1000F0000000000000000000000000000000000000
+:1001000000000000000000000000000000000000EF
+:1001100000000000000000000000000000000000DF
+:1001200000000000000000000000000000000000CF
+:1001300000000000000000000000000000000000BF
+:1001400000000000000000000000000000000000AF
+:10015000000000000000000000000000000000009F
+:10016000000000000000000000000000000000008F
+:10017000000000000000000000000000000000007F
+:10018000000000000000000000000000000000006F
+:10019000000000000000000000000000000000005F
+:1001A000000000000000000000000000000000004F
+:1001B000000000000000000000000000000000003F
+:1001C000000000000000000000000000000000002F
+:1001D000000000000000000000000000000000001F
+:1001E000000000000000000000000000000000000F
+:1001F00000000000000000000000000000000000FF
+:1002000000000000000000000000000000000000EE
+:1002100000000000000000000000000000000000DE
+:1002200000000000000000000000000000000000CE
+:1002300000000000000000000000000000000000BE
+:1002400000000000000000000000000000000000AE
+:10025000000000000000000000000000000000009E
+:10026000000000000000000000000000000000008E
+:10027000000000000000000000000000000000007E
+:10028000000000000000000000000000000000006E
+:10029000000000000000000000000000000000005E
+:1002A000000000000000000000000000000000004E
+:1002B000000000000000000000000000000000003E
+:1002C000000000000000000000000000000000002E
+:1002D000000000000000000000000000000000001E
+:1002E000000000000000000000000000000000000E
+:1002F00000000000000000000000000000000000FE
+:1003000000000000000000000000000000000000ED
+:1003100000000000000000000000000000000000DD
+:1003200000000000000000000000000000000000CD
+:1003300000000000000000000000000000000000BD
+:1003400000000000000000000000000000000000AD
+:10035000000000000000000000000000000000009D
+:10036000000000000000000000000000000000008D
+:10037000000000000000000000000000000000007D
+:10038000000000000000000000000000000000006D
+:10039000000000000000000000000000000000005D
+:1003A000000000000000000000000000000000004D
+:1003B000000000000000000000000000000000003D
+:1003C000000000000000000000000000000000002D
+:1003D000000000000000000000000000000000001D
+:1003E000000000000000000000000000000000000D
+:1003F00000000000000000000000000000000000FD
+:1004000000000000000000000000000000000000EC
+:1004100000000000000000000000000000000000DC
+:1004200000000000000000000000000000000000CC
+:1004300000000000000000000000000000000000BC
+:1004400000000000000000000000000000000000AC
+:10045000000000000000000000000000000000009C
+:10046000000000000000000000000000000000008C
+:10047000000000000000000000000000000000007C
+:10048000000000000000000000000000000000006C
+:10049000000000000000000000000000000000005C
+:1004A000000000000000000000000000000000004C
+:1004B000000000000000000000000000000000003C
+:1004C000000000000000000000000000000000002C
+:1004D000000000000000000000000000000000001C
+:1004E000000000000000000000000000000000000C
+:1004F00000000000000000000000000000000000FC
+:1005000000000000000000000000000000000000EB
+:1005100000000000000000000000000000000000DB
+:1005200000000000000000000000000000000000CB
+:1005300000000000000000000000000000000000BB
+:1005400000000000000000000000000000000000AB
+:10055000000000000000000000000000000000009B
+:10056000000000000000000000000000000000008B
+:10057000000000000000000000000000000000007B
+:10058000000000000000000000000000000000006B
+:10059000000000000000000000000000000000005B
+:1005A000000000000000000000000000000000004B
+:1005B000000000000000000000000000000000003B
+:1005C000000000000000000000000000000000002B
+:1005D000000000000000000000000000000000001B
+:1005E000000000000000000000000000000000000B
+:1005F00000000000000000000000000000000000FB
+:1006000000000000000000000000000000000000EA
+:1006100000000000000000000000000000000000DA
+:1006200000000000000000000000000000000000CA
+:1006300000000000000000000000000000000000BA
+:1006400000000000000000000000000000000000AA
+:10065000000000000000000000000000000000009A
+:10066000000000000000000000000000000000008A
+:10067000000000000000000000000000000000007A
+:10068000000000000000000000000000000000006A
+:10069000000000000000000000000000000000005A
+:1006A000000000000000000000000000000000004A
+:1006B000000000000000000000000000000000003A
+:1006C000000000000000000000000000000000002A
+:1006D000000000000000000000000000000000001A
+:1006E000000000000000000000000000000000000A
+:1006F00000000000000000000000000000000000FA
+:1007000000000000000000000000000000000000E9
+:1007100000000000000000000000000000000000D9
+:1007200000000000000000000000000000000000C9
+:1007300000000000000000000000000000000000B9
+:1007400000000000000000000000000000000000A9
+:100750000000000000000000000000000000000099
+:100760000000000000000000000000000000000089
+:100770000000000000000000000000000000000079
+:100780000000000000000000000000000000000069
+:100790000000000000000000000000000000000059
+:1007A0000000000000000000000000000000000049
+:1007B0000000000000000000000000000000000039
+:1007C0000000000000000000000000000000000029
+:1007D0000000000000000000000000000000000019
+:1007E0000000000000000000000000000000000009
+:1007F00000000000000000000000000000000000F9
+:1008000000000000000000000000000000000000E8
+:1008100000000000000000000000000000000000D8
+:1008200000000000000000000000000000000000C8
+:1008300000000000000000000000000000000000B8
+:1008400000000000000000000000000000000000A8
+:100850000000000000000000000000000000000098
+:100860000000000000000000000000000000000088
+:100870000000000000000000000000000000000078
+:100880000000000000000000000000000000000068
+:100890000000000000000000000000000000000058
+:1008A0000000000000000000000000000000000048
+:1008B0000000000000000000000000000000000038
+:1008C0000000000000000000000000000000000028
+:1008D0000000000000000000000000000000000018
+:1008E0000000000000000000000000000000000008
+:1008F00000000000000000000000000000000000F8
+:1009000000000000000000000000000000000000E7
+:1009100000000000000000000000000000000000D7
+:1009200000000000000000000000000000000000C7
+:1009300000000000000000000000000000000000B7
+:1009400000000000000000000000000000000000A7
+:100950000000000000000000000000000000000097
+:100960000000000000000000000000000000000087
+:100970000000000000000000000000000000000077
+:100980000000000000000000000000000000000067
+:100990000000000000000000000000000000000057
+:1009A0000000000000000000000000000000000047
+:1009B0000000000000000000000000000000000037
+:1009C0000000000000000000000000000000000027
+:1009D0000000000000000000000000000000000017
+:1009E0000000000000000000000000000000000007
+:1009F00000000000000000000000000000000000F7
+:100A000000000000000000000000000000000000E6
+:100A100000000000000000000000000000000000D6
+:100A200000000000000000000000000000000000C6
+:100A300000000000000000000000000000000000B6
+:100A400000000000000000000000000000000000A6
+:100A50000000000000000000000000000000000096
+:100A60000000000000000000000000000000000086
+:100A70000000000000000000000000000000000076
+:100A80000000000000000000000000000000000066
+:100A90000000000000000000000000000000000056
+:100AA0000000000000000000000000000000000046
+:100AB0000000000000000000000000000000000036
+:100AC0000000000000000000000000000000000026
+:100AD0000000000000000000000000000000000016
+:100AE0000000000000000000000000000000000006
+:100AF00000000000000000000000000000000000F6
+:100B000000000000000000000000000000000000E5
+:100B100000000000000000000000000000000000D5
+:100B200000000000000000000000000000000000C5
+:100B300000000000000000000000000000000000B5
+:100B400000000000000000000000000000000000A5
+:100B50000000000000000000000000000000000095
+:100B60000000000000000000000000000000000085
+:100B70000000000000000000000000000000000075
+:100B80000000000000000000000000000000000065
+:100B90000000000000000000000000000000000055
+:100BA0000000000000000000000000000000000045
+:100BB0000000000000000000000000000000000035
+:100BC0000000000000000000000000000000000025
+:100BD0000000000000000000000000000000000015
+:100BE0000000000000000000000000000000000005
+:100BF00000000000000000000000000000000000F5
+:100C000000000000000000000000000000000000E4
+:100C100000000000000000000000000000000000D4
+:100C200000000000000000000000000000000000C4
+:100C300000000000000000000000000000000000B4
+:100C400000000000000000000000000000000000A4
+:100C50000000000000000000000000000000000094
+:100C60000000000000000000000000000000000084
+:100C70000000000000000000000000000000000074
+:100C80000000000000000000000000000000000064
+:100C90000000000000000000000000000000000054
+:100CA0000000000000000000000000000000000044
+:100CB0000000000000000000000000000000000034
+:100CC0000000000000000000000000000000000024
+:100CD0000000000000000000000000000000000014
+:100CE0000000000000000000000000000000000004
+:100CF00000000000000000000000000000000000F4
+:100D000000000000000000000000000000000000E3
+:100D100000000000000000000000000000000000D3
+:100D200000000000000000000000000000000000C3
+:100D300000000000000000000000000000000000B3
+:100D400000000000000000000000000000000000A3
+:100D50000000000000000000000000000000000093
+:100D60000000000000000000000000000000000083
+:100D70000000000000000000000000000000000073
+:100D80000000000000000000000000000000000063
+:100D90000000000000000000000000000000000053
+:100DA0000000000000000000000000000000000043
+:100DB0000000000000000000000000000000000033
+:100DC0000000000000000000000000000000000023
+:100DD0000000000000000000000000000000000013
+:100DE0000000000000000000000000000000000003
+:100DF00000000000000000000000000000000000F3
+:100E000000000000000000000000000000000000E2
+:100E100000000000000000000000000000000000D2
+:100E200000000000000000000000000000000000C2
+:100E300000000000000000000000000000000000B2
+:100E400000000000000000000000000000000000A2
+:100E50000000000000000000000000000000000092
+:100E60000000000000000000000000000000000082
+:100E70000000000000000000000000000000000072
+:100E80000000000000000000000000000000000062
+:100E90000000000000000000000000000000000052
+:100EA0000000000000000000000000000000000042
+:100EB0000000000000000000000000000000000032
+:100EC0000000000000000000000000000000000022
+:100ED0000000000000000000000000000000000012
+:100EE0000000000000000000000000000000000002
+:100EF00000000000000000000000000000000000F2
+:100F000000000000000000000000000000000000E1
+:100F100000000000000000000000000000000000D1
+:100F200000000000000000000000000000000000C1
+:100F300000000000000000000000000000000000B1
+:100F400000000000000000000000000000000000A1
+:100F50000000000000000000000000000000000091
+:100F60000000000000000000000000000000000081
+:100F70000000000000000000000000000000000071
+:100F80000000000000000000000000000000000061
+:100F90000000000000000000000000000000000051
+:100FA0000000000000000000000000000000000041
+:100FB0000000000000000000000000000000000031
+:100FC0000000000000000000000000000000000021
+:100FD0000000000000000000000000000000000011
+:100FE0000000000000000000000000000000000001
+:100FF00000000000000000000000000000000000F1
+:1010000000000000000000000000000000000000E0
+:1010100000000000000000000000000000000000D0
+:1010200000000000000000000000000000000000C0
+:1010300000000000000000000000000000000000B0
+:1010400000000000000000000000000000000000A0
+:101050000000000000000000000000000000000090
+:101060000000000000000000000000000000000080
+:101070000000000000000000000000000000000070
+:101080000000000000000000000000000000000060
+:101090000000000000000000000000000000000050
+:1010A0000000000000000000000000000000000040
+:1010B0000000000000000000000000000000000030
+:1010C0000000000000000000000000000000000020
+:1010D0000000000000000000000000000000000010
+:1010E0000000000000000000000000000000000000
+:1010F00000000000000000000000000000000000F0
+:1011000000000000000000000000000000000000DF
+:1011100000000000000000000000000000000000CF
+:1011200000000000000000000000000000000000BF
+:1011300000000000000000000000000000000000AF
+:10114000000000000000000000000000000000009F
+:10115000000000000000000000000000000000008F
+:10116000000000000000000000000000000000007F
+:10117000000000000000000000000000000000006F
+:10118000000000000000000000000000000000005F
+:10119000000000000000000000000000000000004F
+:1011A000000000000000000000000000000000003F
+:1011B000000000000000000000000000000000002F
+:1011C000000000000000000000000000000000001F
+:1011D000000000000000000000000000000000000F
+:1011E00000000000000000000000000000000000FF
+:1011F00000000000000000000000000000000000EF
+:1012000000000000000000000000000000000000DE
+:1012100000000000000000000000000000000000CE
+:1012200000000000000000000000000000000000BE
+:1012300000000000000000000000000000000000AE
+:10124000000000000000000000000000000000009E
+:10125000000000000000000000000000000000008E
+:10126000000000000000000000000000000000007E
+:10127000000000000000000000000000000000006E
+:10128000000000000000000000000000000000005E
+:10129000000000000000000000000000000000004E
+:1012A000000000000000000000000000000000003E
+:1012B000000000000000000000000000000000002E
+:1012C000000000000000000000000000000000001E
+:1012D000000000000000000000000000000000000E
+:1012E00000000000000000000000000000000000FE
+:1012F00000000000000000000000000000000000EE
+:1013000000000000000000000000000000000000DD
+:1013100000000000000000000000000000000000CD
+:1013200000000000000000000000000000000000BD
+:1013300000000000000000000000000000000000AD
+:10134000000000000000000000000000000000009D
+:10135000000000000000000000000000000000008D
+:10136000000000000000000000000000000000007D
+:10137000000000000000000000000000000000006D
+:10138000000000000000000000000000000000005D
+:10139000000000000000000000000000000000004D
+:1013A000000000000000000000000000000000003D
+:1013B000000000000000000000000000000000002D
+:1013C000000000000000000000000000000000001D
+:1013D000000000000000000000000000000000000D
+:1013E00000000000000000000000000000000000FD
+:1013F00000000000000000000000000000000000ED
+:1014000000000000000000000000000000000000DC
+:1014100000000000000000000000000000000000CC
+:1014200000000000000000000000000000000000BC
+:1014300000000000000000000000000000000000AC
+:10144000000000000000000000000000000000009C
+:10145000000000000000000000000000000000008C
+:10146000000000000000000000000000000000007C
+:10147000000000000000000000000000000000006C
+:10148000000000000000000000000000000000005C
+:10149000000000000000000000000000000000004C
+:1014A000000000000000000000000000000000003C
+:1014B000000000000000000000000000000000002C
+:1014C000000000000000000000000000000000001C
+:1014D000000000000000000000000000000000000C
+:1014E00000000000000000000000000000000000FC
+:1014F00000000000000000000000000000000000EC
+:1015000000000000000000000000000000000000DB
+:1015100000000000000000000000000000000000CB
+:1015200000000000000000000000000000000000BB
+:1015300000000000000000000000000000000000AB
+:10154000000000000000000000000000000000009B
+:10155000000000000000000000000000000000008B
+:10156000000000000000000000000000000000007B
+:10157000000000000000000000000000000000006B
+:10158000000000000000000000000000000000005B
+:10159000000000000000000000000000000000004B
+:1015A000000000000000000000000000000000003B
+:1015B000000000000000000000000000000000002B
+:1015C000000000000000000000000000000000001B
+:1015D000000000000000000000000000000000000B
+:1015E00000000000000000000000000000000000FB
+:1015F00000000000000000000000000000000000EB
+:1016000000000000000000000000000000000000DA
+:1016100000000000000000000000000000000000CA
+:1016200000000000000000000000000000000000BA
+:1016300000000000000000000000000000000000AA
+:10164000000000000000000000000000000000009A
+:10165000000000000000000000000000000000008A
+:10166000000000000000000000000000000000007A
+:10167000000000000000000000000000000000006A
+:10168000000000000000000000000000000000005A
+:10169000000000000000000000000000000000004A
+:1016A000000000000000000000000000000000003A
+:1016B000000000000000000000000000000000002A
+:1016C000000000000000000000000000000000001A
+:1016D000000000000000000000000000000000000A
+:1016E00000000000000000000000000000000000FA
+:1016F00000000000000000000000000000000000EA
+:1017000000000000000000000000000000000000D9
+:1017100000000000000000000000000000000000C9
+:1017200000000000000000000000000000000000B9
+:1017300000000000000000000000000000000000A9
+:101740000000000000000000000000000000000099
+:101750000000000000000000000000000000000089
+:101760000000000000000000000000000000000079
+:101770000000000000000000000000000000000069
+:101780000000000000000000000000000000000059
+:101790000000000000000000000000000000000049
+:1017A0000000000000000000000000000000000039
+:1017B0000000000000000000000000000000000029
+:1017C0000000000000000000000000000000000019
+:1017D0000000000000000000000000000000000009
+:1017E00000000000000000000000000000000000F9
+:1017F00000000000000000000000000000000000E9
+:1018000000000000000000000000000000000000D8
+:1018100000000000000000000000000000000000C8
+:1018200000000000000000000000000000000000B8
+:1018300000000000000000000000000000000000A8
+:101840000000000000000000000000000000000098
+:101850000000000000000000000000000000000088
+:101860000000000000000000000000000000000078
+:101870000000000000000000000000000000000068
+:101880000000000000000000000000000000000058
+:101890000000000000000000000000000000000048
+:1018A0000000000000000000000000000000000038
+:1018B0000000000000000000000000000000000028
+:1018C0000000000000000000000000000000000018
+:1018D0000000000000000000000000000000000008
+:1018E00000000000000000000000000000000000F8
+:1018F00000000000000000000000000000000000E8
+:1019000000000000000000000000000000000000D7
+:1019100000000000000000000000000000000000C7
+:1019200000000000000000000000000000000000B7
+:1019300000000000000000000000000000000000A7
+:101940000000000000000000000000000000000097
+:101950000000000000000000000000000000000087
+:101960000000000000000000000000000000000077
+:101970000000000000000000000000000000000067
+:101980000000000000000000000000000000000057
+:101990000000000000000000000000000000000047
+:1019A0000000000000000000000000000000000037
+:1019B0000000000000000000000000000000000027
+:1019C0000000000000000000000000000000000017
+:1019D0000000000000000000000000000000000007
+:1019E00000000000000000000000000000000000F7
+:1019F00000000000000000000000000000000000E7
+:101A000000000000000000000000000000000000D6
+:101A100000000000000000000000000000000000C6
+:101A200000000000000000000000000000000000B6
+:101A300000000000000000000000000000000000A6
+:101A40000000000000000000000000000000000096
+:101A50000000000000000000000000000000000086
+:101A60000000000000000000000000000000000076
+:101A70000000000000000000000000000000000066
+:101A80000000000000000000000000000000000056
+:101A90000000000000000000000000000000000046
+:101AA0000000000000000000000000000000000036
+:101AB0000000000000000000000000000000000026
+:101AC0000000000000000000000000000000000016
+:101AD0000000000000000000000000000000000006
+:101AE00000000000000000000000000000000000F6
+:101AF00000000000000000000000000000000000E6
+:101B000000000000000000000000000000000000D5
+:101B100000000000000000000000000000000000C5
+:101B200000000000000000000000000000000000B5
+:101B300000000000000000000000000000000000A5
+:101B40000000000000000000000000000000000095
+:101B50000000000000000000000000000000000085
+:101B60000000000000000000000000000000000075
+:101B70000000000000000000000000000000000065
+:101B80000000000000000000000000000000000055
+:101B90000000000000000000000000000000000045
+:101BA0000000000000000000000000000000000035
+:101BB0000000000000000000000000000000000025
+:101BC0000000000000000000000000000000000015
+:101BD0000000000000000000000000000000000005
+:101BE00000000000000000000000000000000000F5
+:101BF00000000000000000000000000000000000E5
+:101C000000000000000000000000000000000000D4
+:101C100000000000000000000000000000000000C4
+:101C200000000000000000000000000000000000B4
+:101C300000000000000000000000000000000000A4
+:101C40000000000000000000000000000000000094
+:101C50000000000000000000000000000000000084
+:101C60000000000000000000000000000000000074
+:101C70000000000000000000000000000000000064
+:101C80000000000000000000000000000000000054
+:101C90000000000000000000000000000000000044
+:101CA0000000000000000000000000000000000034
+:101CB0000000000000000000000000000000000024
+:101CC0000000000000000000000000000000000014
+:101CD0000000000000000000000000000000000004
+:101CE00000000000000000000000000000000000F4
+:101CF00000000000000000000000000000000000E4
+:101D000000000000000000000000000000000000D3
+:101D100000000000000000000000000000000000C3
+:101D200000000000000000000000000000000000B3
+:101D300000000000000000000000000000000000A3
+:101D40000000000000000000000000000000000093
+:101D50000000000000000000000000000000000083
+:101D60000000000000000000000000000000000073
+:101D70000000000000000000000000000000000063
+:101D80000000000000000000000000000000000053
+:101D90000000000000000000000000000000000043
+:101DA0000000000000000000000000000000000033
+:101DB0000000000000000000000000000000000023
+:101DC0000000000000000000000000000000000013
+:101DD0000000000000000000000000000000000003
+:101DE00000000000000000000000000000000000F3
+:101DF00000000000000000000000000000000000E3
+:101E000000000000000000000000000000000000D2
+:101E100000000000000000000000000000000000C2
+:101E200000000000000000000000000000000000B2
+:101E300000000000000000000000000000000000A2
+:101E40000000000000000000000000000000000092
+:101E50000000000000000000000000000000000082
+:101E60000000000000000000000000000000000072
+:101E70000000000000000000000000000000000062
+:101E80000000000000000000000000000000000052
+:101E90000000000000000000000000000000000042
+:101EA0000000000000000000000000000000000032
+:101EB0000000000000000000000000000000000022
+:101EC0000000000000000000000000000000000012
+:101ED0000000000000000000000000000000000002
+:101EE00000000000000000000000000000000000F2
+:101EF00000000000000000000000000000000000E2
+:101F000000000000000000000000000000000000D1
+:101F100000000000000000000000000000000000C1
+:101F200000000000000000000000000000000000B1
+:101F300000000000000000000000000000000000A1
+:101F40000000000000000000000000000000000091
+:101F50000000000000000000000000000000000081
+:101F60000000000000000000000000000000000071
+:101F70000000000000000000000000000000000061
+:101F80000000000000000000000000000000000051
+:101F90000000000000000000000000000000000041
+:101FA0000000000000000000000000000000000031
+:101FB0000000000000000000000000000000000021
+:101FC0000000000000000000000000000000000011
+:101FD0000000000000000000000000000000000001
+:101FE00000000000000000000000000000000000F1
+:101FF00000000000000000000000000000000000E1
+:08200000481F0000800026309B
+:10200800D40148D8E3B80001D553FE6A100030194E
+:102018007508F1D9D202F5480040F01F0008F01FFA
+:102028000008D503E06CF980EA1C0337F01F0005AF
+:10203800D8020000800032008000259880002B68BC
+:10204800800026D4EBCD40FC169518961492129B6E
+:10205800580AE08A003B0B893008F0091800C520AF
+:102068003009129A2FF9EA090708F4081800CFB1C5
+:102078001232E08900493002EDBB0001C26133032E
+:10208800EDBB0000C2613004C0A85806C3806C09CB
+:10209800B28C6C082FF88D082FF52FF40B8C580C88
+:1020A800CF515802E08A000F04975806C2406C09C5
+:1020B800B2836C082FF88D0820175807FE99FFF790
+:1020C8000404089CE3CD80FC3203EDBB0000CDC0C6
+:1020D8005802FE9AFFDA04975806C1706C09B28359
+:1020E8006C082FF88D0820175807FE99FFF70494FD
+:1020F8003002CD5B069CF01F0007CDFBF01F0005EA
+:10210800CCCB30091212CB9B069CF01F0002CECB21
+:1021180080002680EBCD40FC203DFACEFFD81497F6
+:102128007C037C1A10941892169E580BC4405809C8
+:102138005F1858A75F091268C34130063008FB686A
+:10214800000B580EC430F4CC003AFAC9FFF5FC076E
+:102158000D0A16985898F1DCE9082D0812F8149E13
+:10216800580ACF6112955806C0C10C970699089A6B
+:102178000A9B049CF01F001A0E0C2FDDE3CD80FC97
+:102188005804C140EDB30001C1115802C230640ABD
+:1021980032D9B48964082FF8850820143017CE7B0B
+:1021A800580BCCC45C3E3016CCAB129532D83007F5
+:1021B8000AF8CDDB109A3308BA9B0699BA881A9B9D
+:1021C800F01F00072FDDE3CD80FCFAC9FFF512955B
+:1021D800CCBB32DCF01F0003CE1B00008000204C7B
+:1021E80080002680D431201D189516971496178CD8
+:1021F800580CE08000B43004325132D033033092AE
+:10220800E20C1800C1705805C6E06A09B28C6A0869
+:102218002FF88B082FF42FF70F8C580CCF21580567
+:10222800EBF91000F9B80100F3F81E00089C2FFD27
+:10223800D8322FF70F8A580ACF30E20A1800C500A3
+:10224800E00A1800F9BC0100F7B700FFF9BC00016B
+:10225800EFFA0800C0482FF7A1BC0F8AE60A180059
+:10226800CFB0F4C80030E4081800E08B0063300BEE
+:10227800F60B0028F40800182FF7F0CB00300F8A6F
+:10228800F4C80030E4081800FE98FFF43738F00A64
+:102298001800C2C03648F00A1800C3403708F00AD0
+:1022A8001800C3E03788F00A1800C4503588F00ACF
+:1022B8001800C4903758F00A1800C4803638F00A5D
+:1022C8001800CAA16C08BA8830081899169ABA98E2
+:1022D8001A9B0A9C2FC6F01F00231804C9DB325C26
+:1022E8005805C941F01F0020C96B0D081899169AA6
+:1022F8000A9C49EB5808F00B1710F01F001A180435
+:10230800C8BB361916981AD930AA1ADC30196C0BC2
+:102318000A9C2FC6F01F00162FED1804C7DB3619CC
+:10232800308A1AD916981ADA30096C0B310ACF1B81
+:10233800300BCADB169836191AD9310A1ADC30095B
+:102348006C0BCE7B16983419CF8B361916981AD980
+:1023580030AA1ADC30096C0BCDCB1894C61B0000D0
+:102368008000204C80002680800034008000211CE2
+:10237800D401189BFACAFFFC300CF01F0002D802E7
+:10238800800021ECEBCD40E014951696A98CF01F47
+:1023980000095805C0A03007F01F0007EC070B0C18
+:1023A8002FF70E35FE9BFFFAF01F0004E3CD80E007
+:1023B80080002E7C80002F3080002D14EBCD40E073
+:1023C80014951696A98CF01F00095805C0A030076F
+:1023D800EC07070C2FF7F01F00060E35FE9BFFFADF
+:1023E800F01F0004E3CD80E080002D9C80002E20AB
+:1023F80080002CC8EBCD4040204D49BCF8E80008CF
+:10240800FAE90008F8EA0000498CFAEB0000304BC2
+:10241800F01F00171A9BFE7C2800F01F00163009D9
+:10242800FE7C2800129A129BF01F0013FE7C2800E5
+:10243800F01F0012302CF01F00121A96204DECE805
+:102448000008FAE90008ECEA0000E06CF980EA1CF0
+:102458000337FAEB0000F01F000B2FCD2FCDE3CD93
+:1024680080400000800034088000341880002C4030
+:1024780080002874800028B480002A2480002C70F2
+:1024880080002FF8EBCD40F8F01F0033F01F003329
+:102498004B3CF01F0034F01F00343018F00C1800CB
+:1024A800C5204B2CF01F002FE06701004B0C3006B5
+:1024B800F01F002C4AF40E95C088E2675A4C0C179E
+:1024C800E0470100EA0717B0E806000B0C9C0E9ADB
+:1024D8000E06F01F0029E2465A4BFE98FFF0E0670F
+:1024E80001004A6C3006F01F001F4A550E930E9AE1
+:1024F8004A3B0C9CF01F0023E80600093008EA0854
+:10250800070B138AF40B1800C1312FF82FF9103775
+:10251800FE9BFFF70E06E2465A4BE08B0019E26776
+:102528005A4C0C17E0470100E60717B0CE1BEC0821
+:1025380000081ADA494C1ADB1AD8F01F000A2FDDF6
+:10254800E3CF80F8491CF01F0007CAFB490CF01FB5
+:102558000005CF7B80002008800023FC80028E6C61
+:102568008000237880002FA480028E8480028E8CC5
+:1025780080003420800023C480028EAC0000000854
+:102588008000238C80028EC880028E7C80028EF4AC
+:10259800EBCD4040303AE06B1B00EA1B00B7FE7CF5
+:1025A8000C00F01F001A30083019109B308AFE7C8E
+:1025B8000C0031061AD6F01F001630083019109B8F
+:1025C800129AFE7C0C00F01F0013300BFE7C0C00EE
+:1025D800F01F0011FE7C0C00F01F00103009FE7C7B
+:1025E8000C001AD9129B1AD91298129AF01F000CD3
+:1025F800301CF01F000C302BFE7C0C00F01F000A72
+:102608002FDDE3CD8040000080002B0C80002AB035
+:1026180080002AD280002AEA80002AF880002A6AEC
+:1026280080002C8A80002B0248CD48D0E3B00001FE
+:10263800D55348C048C10230C06248C2A505A1248C
+:102648000230CFD348A048B10230C0623002300314
+:10265800A1220230CFE3488F000100008000320041
+:10266800000000080000000880028FC00000000879
+:10267800000001E88000248CD401189BFE7C18001F
+:10268800F01F0002D802000080002742EBCD404036
+:10269800203D30083049FB680008BA383088500CB3
+:1026A8001696BAC8302BBAD9486CF01F00070C9A96
+:1026B8001A9BFE7C1800F01F00052FDDE3CD80403B
+:1026C80080028F1C80002C40800027ACD401189B0E
+:1026D800E06CE100F01F0002D802000080002694A0
+:1026E800D401F6081503A56B143BF9BE0810F00BCE
+:1026F80017B0F9BE0B08F6091601F20A0039F20BF9
+:102708000D08109AF00B1603F6C80001E048FFFE0A
+:10271800E08B00147818E8690000E418FFF7E01867
+:10272800FECF590EF9B9000010499919F1DAC00322
+:10273800F7E811089988D80ADA0A58ABC0F0E069B6
+:10274800270F7858EDB80001C051F1DBC00999781E
+:102758005EFD5809C1002019CF5BE069270F785842
+:10276800EDB80001C04130D89978CEAB5809C030D7
+:102778002019CF6B5EFEE1B80000EDB80010C0E094
+:10278800D3033FF899387858D503300899189998A1
+:1027980099A8EA69610C99095EFC3FF8993878585C
+:1027A800CF5BD703D421169714951896F01F002EE7
+:1027B8005807C2000FC93048F0091800E088001B0C
+:1027C8003094E8091800E08B00160FD93078F0092A
+:1027D8001800E08B00108E39E0680101F00919003B
+:1027E800E08B0009EF3900083038F0091800E0885C
+:1027F8000003DA2A0A9A6E0B0C9CF01F001C581C66
+:10280800CF900FC9E8091800C2906C182059F1E957
+:1028180010688D18EF3900086C1A0FD8A978F1E9FB
+:1028280010E814488D1830288E39F0091900E0880E
+:1028380000106C18ADB88D188EB920298DA96C18A8
+:10284800E018FFF08D183509300C8D09D8226C1866
+:102858005C79F1E910C88D18CF3B6C18B1B88D18A8
+:10286800CDAB00008000277E800026E8D401301818
+:10287800F739000DF0091800E0880005302E1C9C7F
+:10288800D802E068008030199908300A7818F73BB8
+:10289800000D149EF1D9D00130F9F1DBD081F1DAC5
+:1028A800D0E1F1D9D20499181C9CD802EBCD408014
+:1028B8003018149E1297F00A18005FBAF00B18002F
+:1028C8005FB91449C0B17818F1DBD021F1DED041ED
+:1028D800F1D7D3089918E3CF8080302CE3CD8080DE
+:1028E800D4017818189EEA18000F9918781CE21C71
+:1028F8000004C08030E8F00B1800E0880013302C8A
+:10290800D8023038F00B1800FE9BFFFB7C1AF6C883
+:10291800FFF03019F20809495CD914699D19D802E9
+:102928007C19F6081510300CEA18FFF0E818FFFFBC
+:1029380012689D18D802E0692710C0485809C0E0FD
+:1029480020197848EDB80009CFA17818EA18000FC7
+:102958009918FC19010099095EFD5EFFEBCD40FC5A
+:1029680030321893F73C000CE40C1800E08B000997
+:10297800F735000B3014E8051800E0880005302C06
+:10298800E3CD80FCF73E00083078F00E1800FE9882
+:10299800FFF83108F00E1800FE9BFFF37618F009D7
+:1029A8001601F4090009F2080D06ECCA0001E04A14
+:1029B80000FEFE9BFFE65806CE35FCC90008F80865
+:1029C8001601300AEC1C0001F5D8D001178EF5DC91
+:1029D800D021F7380009F5D5D061F5D9D084F73979
+:1029E800000AF5D6D108F5D8D208F5D9D308E80EEB
+:1029F8001800C0F0C0B33028F00E1800C0D0E40EA4
+:102A08001800CBE187FAE3CF80FC87CAE3CF80FCCC
+:102A180087DAE3CF80FC87EAE3CF80FC3018990897
+:102A28005EFCE0692710C0485809C0A02019784802
+:102A3800EDB80001CFA1F1DBC01099385EFD5EFF53
+:102A4800E0692710C0485809C0C020197848E21822
+:102A58000201E0480201CF817828300CB6085EFCFC
+:102A68005EFFEBCD40E0FAC5FFF018976A166A0ED4
+:102A7800EDD6C003FDDEC001300CF9D6D003F9DE77
+:102A8800D0E1F9D6D103F9DED1E1F9DAD203F9DBE5
+:102A9800D2E1F9D8D303F9D9D3E18F1C6F58EDB837
+:102AA8000005CFD1E3CD80E0EBCD4040300E40268D
+:102AB8002F8BFDD8D021FDD9D104FDDAD204FDD663
+:102AC800D306F80B092EE3CD80402F8BF5E91019BA
+:102AD800F3E81029F80B0328F1D9D043F80B09289B
+:102AE8005EFC2F8BF80B0328A1A8F80B09285EFCC5
+:102AF8007958EDB80000CFD15EFC7808F1DBD00240
+:102B080099085EFCEC5BBB9FE08B0018304B78A803
+:102B1800F1DBD00399A878A9F3DAD10399A9780849
+:102B2800A3A899087958EDB80007CFD178083019CB
+:102B3800F1D9D00299085EFCE068C6BFEA18002DFA
+:102B4800103BE088000CE0681200EA18007A103B9D
+:102B5800F9BB0306F9BB0207CDBB305BCD9BC008B0
+:102B6800EBCD40C048E8E3B8000148E9300C7206F4
+:102B780048DE48E9FE770800720B580BC070721ADD
+:102B8800300814AE2FF81638CFD3EE0C09262F894B
+:102B98002FFC594CCF21E3CD80C0000080003200CB
+:102BA8008000333C80002B6680028F20E068008321
+:102BB800FE790800F00C010CF20C032AF4C8FFC0DF
+:102BC800F208032C580C5E0CF80812004859F0085B
+:102BD800111FF20A0039721AF408032C5EFC000077
+:102BE80080028F20F8081605F0091508E029F00082
+:102BF800581BC150C0823018F00C094C936C93AC30
+:102C0800932C5EFD582BC110583BC0205EFF301836
+:102C1800F00C094C935C939C932C5EFDF60C094CCC
+:102C2800935C93AC932C5EFD3018F00C094C936CBC
+:102C3800939C932C5EFDD703D42118961694580BB9
+:102C4800C0F030050A970D9B0D8C2FF72FE6F01F6B
+:102C5800000618450E34FE9BFFF80A9CD8221695EC
+:102C6800CFDB000080002BEC3018F00C0948A59C45
+:102C7800A96CE02CF000F9480054F9480044991870
+:102C88005EFCFE6914007208F1DCD0C193085EFC9A
+:102C9800D401580BC091F8CBFFFEFE7C28005C5B8A
+:102CA800F01F0006D802F8CBFFFEFE7C28005C5B14
+:102CB800F01F0003D80200008000293E800028E8A9
+:102CC800EBCD408048E76E0CF1DCC008C0D0300B7B
+:102CD800FE7C2800F01F000B6E08F0CCFFFF8F0C65
+:102CE800F1DCC008CF51F9DCC288300BF01F0006B8
+:102CF80030194868B089E3CD80800000000001E009
+:102D080080002A2A80002C98000001E4D401486839
+:102D1800300B700CF9DCC288F01F000430094848F9
+:102D2800B089D802000001E080002C98000001E47E
+:102D3800EBCD40C0201D301B49366C0CF9DCC28835
+:102D4800F01F0012E06B00D7FE7C2800F01F001077
+:102D5800FAC7FFFEE06B00FFFE7C2800F01F000CA6
+:102D68000E9BFE7C2800F01F000B9A98EDB8000718
+:102D7800CF216C0C300BF9DCC288F01F00042FFD4A
+:102D8800E3CD80C0000001E080002C9880002A2A52
+:102D980080002A48EBCD40C0201D49B6A96C8D0C97
+:102DA80049A730080F89F0091800C030F01F001833
+:102DB80030086C0CAE88F9DCC288301BF01F001597
+:102DC800E06B0082FE7C2800F01F00136C08F7D827
+:102DD800C008F1D8C10CFAC6FFFCF7E8109BFE7CCE
+:102DE80028000CDBB18BF01F000C0DABFE7C28001B
+:102DF800F01F00090DBBFE7C2800F01F00072FFD07
+:102E0800E3CF90C0000001E0000001E480002D380D
+:102E180080002C9880002A2AEBCD40E049151896AE
+:102E28000B893008F0091800C16148F70C9BFE7C3B
+:102E38002800F01F000E6E08F0CCFFFF8F0CF7DCA7
+:102E4800C008C071F9DCC288F01F00093018AA88D0
+:102E5800E3CF90E048476E0CA98CF01F0006CE7BAC
+:102E6800000001E4000001E080002A2A80002C987C
+:102E780080002D9CEBCD40C0201D4A76A96C8D0C9E
+:102E88004A6730080F89F0091800C030F01F002485
+:102E980030086C0CAE88F9DCC288301BF01F0021AA
+:102EA800E06B00D2FE7C2800F01F001F6C08F7D8EA
+:102EB800C008F1D8C10CFAC6FFFCF7E8109BFE7CED
+:102EC80028000CDBB18BF01F00180DABFE7C28002E
+:102ED800F01F00150DBBFE7C2800F01F0013E06BEF
+:102EE80000FFFE7C2800F01F0010E06B00FFFE7C56
+:102EF8002800F01F000DE06B00FFFE7C2800F01F8B
+:102F0800000AE06B00FFFE7C2800F01F00072FFD81
+:102F1800E3CF90C0000001E0000001E480002D38FC
+:102F280080002C9880002A2AEBCD40C0201D4966DD
+:102F380030090D88F2081800C1F14947E06B00FF1D
+:102F4800FE7C2800F01F0012FACBFFFEFE7C280052
+:102F5800F01F00106E08F0CCFFFF8F0CF7DCC008E4
+:102F6800C071F9DCC288F01F000C3018AC881BBC9B
+:102F78002FFDE3CD80C04857AC896E0CA98CF01F9B
+:102F88000007CDDB000001E4000001E080002A2AF0
+:102F980080002A4880002C9880002E7CEBCD404091
+:102FA800201D3008FAC6FFFC301B0CE8300CF01F5F
+:102FB800000EE06B00D7FE7C2800F01F000CE06BD1
+:102FC80000FFFE7C2800F01F00090C9BFE7C2800F7
+:102FD800F01F0007300B169CF01F00032FFDE3CFF6
+:102FE8009040000080002C9880002A2A80002A48FF
+:102FF800EBCD40E03028FAC7FFF01896AE88109560
+:10300800C028AE880C9A0E9BFE7C2800F01F000892
+:10301800C0C10F882FF85C58EA081800FE98FFF323
+:103028004848B08CE3CF90E0E3CF80E0800029648B
+:04303800000001E4AF
+:10320000C0080000C0080000C0080000C00800009E
+:10321000C0080000C0080000C0080000C00800008E
+:10322000C0080000C0080000C0080000C00800007E
+:10323000C0080000C0080000C0080000C00800006E
+:10324000C0080000C00800000000000000000000EE
+:10325000C0080000000000000000000000000000A6
+:10326000C008000000000000000000000000000096
+:10327000C008000000000000000000000000000086
+:10328000000000000000000000000000000000003E
+:10329000000000000000000000000000000000002E
+:1032A000000000000000000000000000000000001E
+:1032B000000000000000000000000000000000000E
+:1032C00000000000000000000000000000000000FE
+:1032D00000000000000000000000000000000000EE
+:1032E00000000000000000000000000000000000DE
+:1032F00000000000000000000000000000000000CE
+:10330000C0080000300CF01F0012580CF80F171006
+:10331000D603301CF01F000E580CF80F1710D60300
+:10332000302CF01F000B580CF80F1710D603303C50
+:10333000F01F0007580CF80F1710D6030000010407
+:103340004000011280000120C000012E80002BB43B
+:10335000000000000000000000000000000000006D
+:10336000000000000000000000000000000000005D
+:10337000000000000000000000000000000000004D
+:10338000000000000000000000000000000000003D
+:10339000000000000000000000000000000000002D
+:1033A000000000000000000000000000000000001D
+:1033B000000000000000000000000000000000000D
+:1033C00000000000000000000000000000000000FD
+:1033D00000000000000000000000000000000000ED
+:1033E00000000000000000000000000000000000DD
+:1033F00000000000000000000000000000000000CD
+:10340000286E756C6C2900000200000000B71B00DC
+:1034100008000001000100000F011101100113015B
+:103420001061040000000000300000001061040082
+:103430003861040000000000020000002061040068
+:10344000306104000000000004000000306104004E
+:1034500000000000000000000000000010610400F7
+:103460003C0000000000EEEEEEEE18F09FE518F0D4
+:103470009FE518F09FE518F09FE50000A0E118F027
+:103480009FE518F09FE544000000B4080000B40870
+:103490000000B4080000B408000000000000E408C8
+:1034A00000003C003C00000000090000000000009B
+:1034B00000000FE11F00C0E3130080E3C00080E3C1
+:1034C00000F02FE11CF09FE53D0200EB5A0200EBFB
+:1034D0008D0200EB01008FE210FF2FE141F0DEFBD7
+:1034E00001F0DCFD3C0078000000FEE700005C001D
+:1034F00000007847C046010000EA7847C046170040
+:1035000000EA8C119FE5002091E500300FE1841165
+:103510009FE5FD20A1E880019FE580219FE5012036
+:1035200042E00D0040E03C00B4000000020050E129
+:10353000280000AA68019FE50D0050E1020000BAD2
+:10354000042010E4042081E4FAFFFFEA58119FE50B
+:1035500058019FE5000081E53C119FE550019FE582
+:10356000000081E51EFF2FE13C00F0000000481143
+:103570009FE5000091E524119FE5000081E52C11F5
+:103580009FE538019FE5000081E51EFF2FE17402F1
+:1035900000EB10019FE528119FE5042091E4042031
+:1035A00000E404219FE5020051E13C002C010000F1
+:1035B000FAFFFF1AF0109FE5FD20B1E803F02FE1BC
+:1035C000E0109FE5002081E5E8109FE5F4209FE5ED
+:1035D000002081E5021080E2000020E0010040E2CE
+:1035E00011FF2FE101008FE210FF2FE13C00680185
+:1035F000000001F09CF87847000001008FE210FF06
+:103600002FE101F094F87847000003002DE9001045
+:103610000FE1001080E5B8109FE5041080E5001070
+:10362000A0E1100080E2FC1FA0E80020A0E13C0027
+:10363000A40100000130A0E10300BDE8080083E51B
+:103640000C1083E5D300A0E300F021E10060A2E8C4
+:1036500000104FE1041082E4D200A0E300F021E169
+:103660000060A2E800104FE1041082E4D100A0E362
+:103670003C00E001000000F021E1007FA2E8001022
+:103680004FE1041082E4D700A0E300F021E10060E4
+:10369000A2E800104FE1041082E4DB00A0E300F098
+:1036A00021E10060A2E800104FE1001082E5000077
+:1036B00093E53C001C02000000F02FE11EFF2FE10B
+:1036C000200000000403000020EE0100D8030000E9
+:1036D0000000000018F09FE5100100000803000042
+:1036E000EEEEEEEE2403000020020000B0B5041C54
+:1036F000631C0B4D3C005802000001D16C6910E0C6
+:1037000000F06CFB0948FFF70CFFEC60084A5168B9
+:1037100050688842FCD00220287001218A2001F0E4
+:1037200012F8201CB0BD3000070051020000000359
+:103730000700B0B5051C3C0094020000002400F016
+:1037400050FB1448FFF7F0FE13491448C1600121F3
+:10375000134A490391601349CA7808239A43CA70EF
+:10376000CA7804231A43CA706B1C0DD00E4B5A68DA
+:1037700059689142FCD0BE213C00D0020000197370
+:10378000197A112291431972197AC907FCD40221BE
+:103790000170FFF7D0FE201CB0BD91020000FFFFBA
+:1037A000FF003000070000100700000007000003C2
+:1037B000070000000000000000003C000C030000B7
+:1037C00000000000000000000000000000000000F9
+:1037D00000000000000000000000000000000000E9
+:1037E00000000000000000000000000000000000D9
+:1037F0000000000000000000000000003C00480342
+:1038000000000000000000000000000000000000B8
+:1038100000000000000000000000000000000000A8
+:103820000000000000000000000000000000000098
+:1038300000000000000000000000000000003C004C
+:1038400084030000000000000000000000000000F1
+:103850000000000000000000000000000000000068
+:103860000000000000000000000000000000000058
+:103870000000000000000000000000000000000048
+:103880003C00C00300000000000000000000000039
+:1038900000000000000000000000000000000047E1
+:1038A000084710471847204728473047384710B582
+:1038B000041C101C00F023F903C410BC08BC1847FA
+:1038C00000003C00FC03000010B4042A0ED3031CCB
+:1038D0000B439B070AD108C810C9A34202D1043A7E
+:1038E000042AF8D2A34201D004380439002A02D1B4
+:1038F000002010BC7047D30701D5013205E00378E2
+:103900000C7801313C00380400000130A34207D19B
+:1039100003780C7801310130A34201D1023AF1D190
+:10392000181BE9E70000784700000020A0E304002E
+:1039300051E30800003A03C010E20D00000A04C081
+:103940006CE202005CE33C00740400000120C0E46F
+:103950000120C0A40120C0C40C1041E0060000EA10
+:1039600081CFB0E10120C0240120C0240120C04447
+:103970001EFF2FE1784700000020A0E300402DE962
+:103980000230A0E102C0A0E13C00B004000002E06F
+:10399000A0E1201051E20C50A0280C50A0282010CB
+:1039A0005122FBFFFF2A011EB0E10C50A0280C00A1
+:1039B000A0480040BDE80111B0E1042080241EFFB2
+:1039C0002F010120C0440120C0443C00EC04000051
+:1039D000400411E30120C0141EFF2FE178470000CE
+:1039E000030052E33E00009A03C010E20800000A00
+:1039F0000130D1E402005CE30C2082E001C0D194EC
+:103A00000130C0E40130D134042042E23C002805FA
+:103A1000000001C0C0940130C034033011E21E0028
+:103A2000000A042052E22F00003A03C031E70200EE
+:103A300053E30800000A0F00008A2C34A0E104C000
+:103A4000B1E5042052E20C3C83E1043080E43C0008
+:103A500064050000F9FFFF2A011081E2230000EA5B
+:103A60002C38A0E104C0B1E5042052E20C3883E117
+:103A7000043080E4F9FFFF2A021081E21B0000EA13
+:103A80002C3CA0E104C0B1E5042052E20C3483E1F7
+:103A90003C00A0050000043080E4F9FFFF2A031079
+:103AA00081E2130000EA7847000010402DE9202051
+:103AB00052E20500003A1850B1281850A0281850BA
+:103AC000B1281850A02820205222F9FFFF2A02CE48
+:103AD000B0E13C00DC0500001850B1281850A028C7
+:103AE0001800B1481800A0481040BDE802CFB0E16E
+:103AF00004309124043080241EFF2F01822FB0E176
+:103B00000120D1440130D12401C0D1240120C0447E
+:103B10000130C0243C001806000001C0C0241EFF74
+:103B20002FE178470000FF3001E20210A0E10324FA
+:103B300083E1022882E188FFFFEA784700008024C1
+:103B400010E200006042413032E000106122A1C169
+:103B500070E02000003A3C005406000021C470E0F0
+:103B60000F00003A0004A0E1FF2482E321C270E0CC
+:103B70001700003A21C470E00900003A0004A0E1F7
+:103B8000FF2882E321C470E00004A021FF2C8223DF
+:103B900021C270E00E00003A3C009006000000C018
+:103BA00070E28300002A2004A021A1C370E08013EA
+:103BB00041200220A2E021C370E000134120022036
+:103BC000A2E0A1C270E0801241200220A2E021C246
+:103BD00070E0001241200220A2E03C00CC06000070
+:103BE000A1C170E0801141200220A2E021C170E05B
+:103BF000001141200220A2E0A1C070E0801041200D
+:103C00000220A2E001C070E0001041200220B2E0DA
+:103C1000E5FFFF2AC30F32E0A30F80E03C00080756
+:103C20000000001061221EFF2FE1784700000020F5
+:103C3000A0E3A1C170E02000003A21C470E00F00B1
+:103C4000003A0004A0E1FF2482E321C270E01700E3
+:103C5000003A21C470E00900003A0004A0E13C00F1
+:103C600044070000FF2882E321C470E00004A02183
+:103C7000FF2C822321C270E00E00003A00C070E2E7
+:103C80005000002A2004A021A1C370E0801341202D
+:103C90000220A2E021C370E0001341200220A2E034
+:103CA0003C0080070000A1C270E080124120022089
+:103CB000A2E021C270E0001241200220A2E0A1C1D6
+:103CC00070E0801141200220A2E021C170E00011CB
+:103CD00041200220A2E0A1C070E08010412002201B
+:103CE000A2E03C00BC07000001C070E000104120D1
+:103CF0000220B2E0E5FFFF2A0200A0E11EFF2FE153
+:103D0000784700000A1040E2200140E0200280E0F5
+:103D1000200480E0200880E0A001A0E1002180E0F4
+:103D2000821051E03C00F8070000010080520A10A8
+:103D300081421EFF2FE130B4441C810708D0017876
+:103D40000130002902D1001B30BC70478107F6D139
+:103D50000B4AD50102C88B1A8B432B40FAD0001BAB
+:103D60000A0601D103383C0034080000EFE70A04DA
+:103D7000120E01D10238EAE70902090EE7D1013833
+:103D8000E5E7000001010101F0B4031C041C0C4331
+:103D9000A4070CD1104DEF0102E00431043A10C326
+:103DA000042A04D30C68661B3C0070080000A6437C
+:103DB0003E40F5D0002A07D00C7801311C70013349
+:103DC000002C03D0013AF7D1F0BC7047012AFBD98F
+:103DD000511E00221A7001330139FBD1F4E70101B1
+:103DE0000101784700000200A0E33C00AC0800009D
+:103DF0000210A0E32EFEFFEA1F402DE900000FE1B4
+:103E0000C00080E300F02FE18100A0E30210A0E3F6
+:103E100001208FE212FF2FE100F0E6FC784700005E
+:103E20001F40BDE8FEFFFFEA1F502DE93C00E808F7
+:103E3000000001008FE210FF2FE100F040FB784707
+:103E400000001F50BDE804F05EE21F502DE90100A4
+:103E50008FE210FF2FE100F018FB784700001F50A1
+:103E6000BDE804F05EE200BD01B500A000473C00E3
+:103E70002409000000300FE1C030C3E303F021E16A
+:103E800001008FE210FF2FE101BD01B500A0004746
+:103E900000300FE1C03083E303F021E101008FE245
+:103EA00010FF2FE101BD000018009FE5041090E411
+:103EB0003C0060090000000051E30200000A0420F9
+:103EC00090E4002081E5F9FFFFEA0EF0A0E17C0913
+:103ED0000000000000004400000044000000D8037F
+:103EE0000000D8030000D80300000000000000001C
+:103EF00000003C009C090000440000004400000059
+:103F0000440000000080010000800100108E0100CC
+:103F1000108E010088F8010001000000001004006C
+:103F2000C433040000000400000000000E50A0E1B3
+:103F300058409FE53C00D8090000040094E40100CB
+:103F400050E305F0A001041094E4042094E403007D
+:103F500000EB040094E4041094E4070000EBF5FF88
+:103F6000FFEA010050E10EF0A001020051E104302F
+:103F70009014043081143C00140A0000FBFFFF1A67
+:103F80000EF0A0E114209FE5002092E5010050E131
+:103F900004208014FCFFFF1A0EF0A0E1800900004D
+:103FA000CC0900000008000020E60100130000001A
+:103FB0005356435F000400003C00500A000020EE0E
+:103FC0000100120000004952515F0002000020F27F
+:103FD0000100110000004649515F8000000020F4FC
+:103FE0000100170000004142545F00000000A0F4EF
+:103FF00001001B000000554E445F3C008C0A00008D
+:1040000000000000A0F401001F0000005553525FA3
+:10401000010000000E50A0E100600FE18C409FE520
+:10402000041094E4010051E30900000A040094E440
+:10403000011080E00310C1E3042094E43C00C80AAE
+:104040000000C02082E302F02FE104D041E204200E
+:1040500094E4130000EBF2FFFFEA06F02FE105F015
+:10406000A0E10E50A0E100600FE144409FE5041084
+:1040700094E4010051E30800000A040094E43C00C9
+:10408000040B0000011080E00310C1E3042094E45D
+:10409000C02082E302F02FE104D041E2042094E446
+:1040A000F3FFFFEA06F02FE105F0A0E1010050E187
+:1040B00004208014FCFFFF1A0EF0A0E13C0A00006F
+:1040C0003C00400B00000160C046C046C04670473F
+:1040D0000000101E10EE020011E3FCFFFF1A100E8C
+:1040E00001EE101E10EE020011E3FCFFFF1A1EFF8E
+:1040F0002FE1101E10EE010011E30300000A101E54
+:1041000011EE3C007C0B0000001080E50100A0E3F4
+:104110001EFF2FE1000020E01EFF2FE18D46974695
+:104120007847C04678FDFFEA10B5041C032801D982
+:1041300000F0ACFB0C484068002800D003240B487A
+:10414000016809483C00B80B00001230002905D076
+:1041500006216143405CC300181804E00621614356
+:10416000405C142358430A300006000E10BDD47A78
+:104170000100A869010080B5094A0949032000F03F
+:10418000F2F9084908203C00F40B00000860486080
+:1041900007491D2001F0B2FC06491E2001F0AEFCCB
+:1041A00080BD0000006C01003127000000100700F6
+:1041B0002925000031250000054980B508208860C8
+:1041C0001D2001F0BFFC1E203C00300C000001F05F
+:1041D000BCFC80BD000000100700021C081CD12A96
+:1041E00080B501D105F019FC80BD034980B50020E0
+:1041F0000880052005F0D5FB80BDB074010080B5B6
+:10420000542801D106F0CDF880BD3C006C0C0000B4
+:10421000B0B5104D021C0124012A0D48296806D0B2
+:10422000C42A03D16A68002A05D0AC60B0BD0EF084
+:1042300089FB6C6008E00022AA606C600EF082FBD3
+:104240000021042012F0C8FC06F0D8F83C00A80CAD
+:104250000000B0BD0000C4600100BC740100054A4C
+:104260005169081A116909681031814201D85061F9
+:104270007047002070478C6E010001494968401A60
+:1042800070478C6E010001484069704700003C0097
+:10429000E40C00008C6E0100024A5169081850615C
+:1042A000704700008C6E01000E490F4810B51922AE
+:1042B000920141608918C1600B4900220C310160F4
+:1042C0000A49826009680123DB03C918084C41616F
+:1042D0003C00200D00002168002902D0074901613F
+:1042E00001E000F00CF8226010BD44DC01008C6E8F
+:1042F0000100C809000034580100C4090000014849
+:10430000024908617047C80900008C6E0100082846
+:1043100005D23C005C0D0000034B8000195002499F
+:1043200020310A5070470000646D010070B5061C12
+:104330000D480D1C0068141C002803D1201C00F03F
+:1043400009FC70BD280601D500F022FE221C291CA4
+:10435000301C08F03C00980D0000DDFD011C0348F6
+:1043600054304369321CFFF71BFB70BD0000506DD9
+:104370000100F8B5061C0D481F1C0068151C0C1C1C
+:10438000002802D1281C00F0E8FB200601D500F02F
+:1043900002FE2A1C211C3C00D40D0000301C08F039
+:1043A000BDFD011C0348543043693A1CFFF7FBFA7A
+:1043B000F8BD0000506D0100F8B5F1284ED12A4833
+:1043C00069468269FFF7EEFA274900265439C86822
+:1043D0008B68C2000130D5183C00100E0000072881
+:1043E000C86000D1CE6022486C680068002803D005
+:1043F0000021201C08F03BFB6E6025682089A9780D
+:104400000239401AE978401A2081A8782818023821
+:1044100020606E782878082817D23C004C0E0000E7
+:10442000300607D5271C201C00F07AFC041C381C21
+:1044300000F09CFB28780F49403980000A58002A78
+:1044400004D0311C201CFFF7B3FA08E0052100E07E
+:104450000421062000F010FA201C00F03C00880E19
+:10446000000087FB300601D500F0A1FDF8BD012159
+:10447000062000F004FAF9E70000A46D0100CC5C0E
+:104480000100F8B51A4D194F01245435291C032099
+:104490007C60174B184A05F0F4FB002802D03C0062
+:1044A000C40E0000002038601FE03C600721281C7B
+:1044B000EA69FFF783FA382000F080FC0024B86036
+:1044C000B868E60035186846022100F075FB2860E0
+:1044D000281C00F0A5FDB868815906485430026ACE
+:1044E0003C00000F0000FFF76CFA0134072CEADBF8
+:1044F0000020F8603861F8BD0000506D0100819A1D
+:104500000000619A0000054880B50068002805D0C9
+:1045100003485430426A0021FFF753FA80BD506DC2
+:1045200001003C003C0F00007047000070B50A4ECF
+:10453000094D084C083EA169002907D03068416048
+:10454000007B81006958FFF73EFAF4E70349022037
+:10455000087070BD00100700E07E01000002070037
+:1045600070B50A4E3C00780F0000094D084C083E1B
+:10457000E169002907D070684160007B81006958BB
+:10458000FFF724FAF4E703490220087070BD001019
+:104590000700E07E010000020700B0B5094D041CD1
+:1045A000281C202240303C00B40F00000549FFF7D2
+:1045B0009FFAE068E86020692861A06AA8626068E4
+:1045C0006860B0BD7052010000100700F8B500240B
+:1045D0000023202801DB012407E0084E8000355825
+:1045E000074FBD4200D02B1C3C00F00F00003150A3
+:1045F0001360002C03D0211C822000F052F9201CF3
+:10460000F8BDE07E010075750000B0B50B4D041CCF
+:10461000286800280FD0201C12F0B7FD00280AD00F
+:10462000217A287A0A070007000F3C002C100000AE
+:10463000120F9042297201D00120B0BD0020B0BD00
+:1046400070780100F0B5424E051C306885B0002836
+:1046500063D000240020002D06D06978182903D1EA
+:10466000E979012900D10120002845D03C006810DB
+:1046700000000020B07281004A19937A5906890F10
+:10468000DB0604D5B37A01278F403B43B372D27A5D
+:1046900013091207120F934205D301228A401443D3
+:1046A00001AA8900505001300428E4DBB07A3C00B4
+:1046B000A4100000204001070DD5410709D5C1070E
+:1046C00005D5810701D5002405E0029902E0019992
+:1046D00000E003990491410709D5C10705D5810779
+:1046E00001D5002403E0029900E001990391C1077C
+:1046F0003C00E010000005D5810701D5002401E051
+:1047000002990191800701D5002422E00F2C20D1CD
+:10471000706800280BD0049A02AB00920ACB019A71
+:10472000281C0BF08AFB0020706010E017E0307A44
+:10473000297A3C001C11000000070907090F000F2F
+:10474000884207D0049A02AB00920ACB019A281C37
+:104750000BF076FB287A307201200F2C00D000205D
+:1047600005B0F0BD0120FBE7707801000D4A70B57F
+:10477000116800203C005811000000290ED0117A69
+:1047800009060BD5537A947A032101252A1C8A4005
+:104790001E1C164003D0224001D1012070BDFF3104
+:1047A00009060916F2D570BD00007078010010B539
+:1047B000084C206800283C009411000004D0606878
+:1047C000002801D10BF0C0FB00200021002207C40B
+:1047D0000C3C0120606010BD70780100014901208F
+:1047E0000860704770780100F8B50E4D041C002079
+:1047F0006872201C12F0DEFC3C00D0110000002882
+:1048000012D00020032101220F1A161C237ABE4069
+:10481000334004D06B7A161C864033436B720130F0
+:104820000006000E0328EFD9F8BD70780100920051
+:1048300051188A7A1207120F02703C000C12000005
+:10484000CA7A1207120F4270CA7A12098270097B63
+:1048500081807047034A0F21527A0120914300D092
+:10486000002070477078010040070549400F054A55
+:104870000956527A01200A4000D100203C0048121B
+:104880000000704700005E46010070780100124A87
+:1048900070B5537A947AFF20032101252A1C8A409F
+:1048A0001E1C164014D0224012D10806000E07D05C
+:1048B000012807D0022807D0032807D107203C0091
+:1048C0008412000070BD032070BD012070BD052062
+:1048D00070BDFF2070BDFF3109060916E1D570BD1E
+:1048E00070780100F8B5041C13480D1C816800297C
+:1048F00005D0017B002901D104734573F8BD0F4E2B
+:104900003C00C0120000311C20318A7900AB1A70C3
+:10491000C97959704268002A07D020022843011C37
+:104920000020FFF77EF8002804D12A1C211C00205B
+:1049300011F00FF800AB1888F084E2E70000885A05
+:1049400001003C00FC1200000010070080B50121AE
+:104950008120FFF7CDFF80BD0149012088607047AD
+:10496000885A0100054980B500208860087B00282E
+:1049700002D0497BFFF7BCFF80BD0000885A0100D0
+:10498000024A011C3C003813000050685160704717
+:104990000000885A010010B50C1C07F064FA04618D
+:1049A000002010BD0000FFB50E1C1F1C382081B078
+:1049B00000F03DFA1D49041C4869002801D14C61F2
+:1049C00000E0046030013C0074130000009000041B
+:1049D000000C00F015FA051C0099FFF78BF8002079
+:1049E000731E04E001014A1910326A5001309842E6
+:1049F000F8D300012D503821201CFFF77BF8A5606B
+:104A00006560E6850C2060863C00B0130000AF2096
+:104A10008001E0610E20E086002020600198E060C7
+:104A2000386860610399044808600448386005B03C
+:104A30000020F0BD0000FC5A0100DD150100FD164C
+:104A40000100021C081CF02A80B53C00EC13000099
+:104A500004D0F12A07D106F009FB80BD07F00CFA5B
+:104A60000DF0A8FA80BD01210220FFF74DFF80BDA7
+:104A70000149002048617047FC5A0100002802D01B
+:104A8000002900D0C1607047F8B5171C3C002814FD
+:104A900000000E1C051C1C1C1C3007F0C8F8016926
+:104AA000426980688919891A814206D2231C3A1CFE
+:104AB000311C281C00F005F8F8BD0020386020608B
+:104AC000FAE7FFB585B0059801270E1C1C303C00A5
+:104AD0006414000007F0AEF8041C808804300390D2
+:104AE0002C48049080790290A069B04217D2351A00
+:104AF00011E00398FFF716FC002806D101218E2053
+:104B0000FFF708FF0025002705E02168016020600D
+:104B10003C00A0140000A0690130A061013DEBD26F
+:104B2000002F35D0A069801BA06120698019206109
+:104B30006169401AE168884203D907218E20FFF796
+:104B4000ECFE25682F1C701E019500E03F680138BF
+:104B5000FCD23C00DC140000386820600298049904
+:104B600088712E682C60321D0092291C2031012290
+:104B7000281D059B08F07AFCBD4201D0351CF0E7EA
+:104B800000203861019807990430086008980437BC
+:104B9000076009B03C0018150000F0BD02980499A8
+:104BA0008871F9E700002010070038B5041C151CB7
+:104BB00000200C6009E0E268201C0092A38A2168B2
+:104BC000A26908F056FC201CE468002CF3D1286090
+:104BD00038BD80B50CE03C0054150000C2688A4224
+:104BE00008D10021C160002803D106218E20FFF7E3
+:104BF0009DFE80BD101C0028F7D0EFE710B5041C07
+:104C00000CD0A069002806D12069002803D006F046
+:104C1000F7FD00202061201C3C009015000006F0EC
+:104C2000F2FD10BD000010B5002809D0C46803E0F3
+:104C3000FFF7E7FF201CF9E7002CF9D1FFF7E1FFB0
+:104C400010BD011C002004E00A89C9681018000486
+:104C5000000C0029F8D1704700003C00CC15000082
+:104C600000E0081CC1680029FBD17047F8B5061C9C
+:104C70000C1C1C2000F068FA051C002E01D1002C31
+:104C800002D1301C012103E0201C00F05DFA00215C
+:104C9000002200920A1C011C231C281C3C00081640
+:104CA000000008F0F2FB281CF8BDB0B503329208F2
+:104CB00092001404240C09191D1CC9180904090CBC
+:104CC000FFF7D7FF018902681219091B491B02600F
+:104CD0000181B0BD0000F8B50A4CA021201C3C00A9
+:104CE00044160000FEF72AFF0020261CA036074DC0
+:104CF00007E00C21414349190EC9271D0EC7203476
+:104D00000130A642F5D1F8BDD05C0100C83F0100DA
+:104D1000F7B5C468061C0025002C82B023D020897A
+:104D20003C0080160000904220D3E168871A019170
+:104D30000021E16003990020FFF7A1FF051C2089F5
+:104D4000C01B20812A680399301C00F016F82089C6
+:104D5000C01920810199201CFFF7B1FE211C281CDD
+:104D6000FFF73C00BC160000ADFE291C301CFFF70D
+:104D7000A9FE0120002D00D1002005B0F0BD0000EB
+:104D8000F7B5041C0E1C002001E0201C0C1CE1687F
+:104D90000029FAD12789B7420AD3B81B0004000CB6
+:104DA000208121683C00F816000009180298321C86
+:104DB000FEF7FBFEFEBDF11B0D042D0C002819D0E3
+:104DC0000189A94216D3491B0904090C0181006815
+:104DD000411802982A1CFEF7E8FE21680298721B0F
+:104DE0004019FEF7E2FE3C00341700002089C01B8A
+:104DF00020812068C0192060DFE703218E20FFF7A3
+:104E0000ADFDDAE7F8B5041C002613E02189002087
+:104E1000FFF73EFF051C228921680068FEF7C8FEE7
+:104E2000002E01D12E1C03E03C0070170000291C4D
+:104E3000381CFFF750FEE4682F1C002CE9D1301C11
+:104E4000F8BDB0B5041C0089401A050420682D0C7B
+:104E50004018291CFFF71FFF2189491B2181E168A8
+:104E6000C160E060B0BD10B503303C00AC1700007D
+:104E7000094A810810683D24084B6401890009181B
+:104E80001B19994201D8116010BD0F218020FFF736
+:104E90006BFD002010BD0000B4CF010014C801005C
+:104EA00010B511F061FF041C03D10D213C00E8177F
+:104EB00000008020FFF75BFD201C10BD0000B0B596
+:104EC000011F0B680D480022834204D001321030CC
+:104ED000032AF9D301E0032A06D30924211C8020E8
+:104EE000FFF745FD201CB0BD054B00249A793C001E
+:104EF0002418000085680D6081609A71F5E7000054
+:104F00002057010020100700B0B50021104A0023EF
+:104F1000D468844204D201331032032BF8D301E069
+:104F2000032B01D304210EE00A4CA37990680028DA
+:104F30003C006018000002D1A371032106E005685F
+:104F40009560A371002901D104C0B0BD8020FFF796
+:104F500014FD0020B0BD2057010020100700A03034
+:104F6000008A4007400F08280FD201A31B5C5B009A
+:104F70009F443C009C18000005030305070709092E
+:104F800001207047002070470220704703207047BF
+:104F900004207047B0B5104D6869002807D00E494D
+:104FA00000222C3103C90143032006F0CFFF0B4C34
+:104FB000002203CC3C00D8180000083C0143032029
+:104FC00006F0AFFF03CC084307494A6802434A6032
+:104FD0008A681043886001206861B0BD0000647376
+:104FE0000100B058010010000700B0B50C1C0FF014
+:104FF000A8FA054DE86A3C0014190000002806D103
+:10500000002C04D0201C0FF0B7FD01202870B0BD8B
+:10501000F46E0100054980B5886A002804DA002092
+:10502000886201210DF042FD80BD0000AC7E0100D0
+:10503000F8B51E4D041C00203C00501900006862A9
+:10504000A8701C480078C00722D5B82003591A4818
+:1050500000780E2809D10A1C803206D0184E0D2087
+:10506000325C8A4201DD0138FAD1591E0B061B0E53
+:10507000AB70AB620E280BD208E03C008C1900002C
+:105080006218B032127B824202D8581AA86202E03B
+:1050900001390029F4DA0EF035F9009000AB1878E8
+:1050A0005978814200D95878ED30E8700121201CF0
+:1050B0000DF002FDF8BD0000AC7E01003C00C819F7
+:1050C00000001D75010011670100C75201000E4963
+:1050D00010B508698B68C200D4186268002A0FD125
+:1050E00001300861072801D100200861201C00F070
+:1050F00024F8054821685430026AFEF7ECFC3C00B5
+:10510000041A000010BD06210620FFF74BFC10BD5D
+:10511000506D010008490979C907084A08D400E020
+:10512000081CC1680029FBD101890431018100E01C
+:105130000020D0627047000060800700046C01000E
+:105140003C00401A000010B5041C19218901002000
+:10515000FFF7C5FD011C60602068FFF7E0FC606898
+:1051600021680830086010BD00000A2801DA042018
+:1051700004E0502801DA052000E00720044A1178F5
+:1051800038233C007C1A0000C000184099430843B3
+:105190001070704788000700B0B5051C07484068CC
+:1051A00008E00169A94204D1446805F0C7FD201C4C
+:1051B00000E040680028F4D1B0BD0000587501003F
+:1051C000F8B500253C00B81A000006F084FD114F28
+:1051D000041CBE792068002807D1A0880430FFF79E
+:1051E000F2F8002806D101210FE001682160A169D1
+:1051F0000139A16110C0051C20690130206161697D
+:10520000401AE16888423C00F41A000003D90721E3
+:105210008E20FFF7D3FBBE71281CF8BD20100700BD
+:10522000B0B509F0BBFF2F4C0028207403D001213A
+:1052300001200AF071FC2B4D1435286800284DD050
+:1052400001210F2011F082FD3C00301B0000288955
+:1052500008F0FBFF011C01220F2011F040FDE07857
+:105260000125022836D10AF0C6F800280AD00BF032
+:1052700092FB1E490968401811F05FF8002801D11F
+:1052800002202FE0E078022824D13C006C1B0000B3
+:1052900060702570606801281CD015481038817B2B
+:1052A000002904D185730F20134910F001FC08F088
+:1052B0004FFE002807D00E4801219838006901F000
+:1052C000B7FD002805D001200EF00CFD3C00A81B06
+:1052D000000001200EF01DFCB0BD05F0DCFEB0BDED
+:1052E000E078002801D12570F7E7032000E00420D2
+:1052F0000DF08DFAB0BD846601006C570100E90322
+:10530000010070B5041C002100200A4D00E03C00A3
+:10531000E41B00000131CB005A191679012E02D08E
+:105320005279A24202D00B29F4D370BD0B29FCD2D2
+:10533000C80001215A192858117170BD3858010050
+:10534000054880B5007F2423044958434018006A6B
+:105350003C00201C0000FEF7DAFB80BD0000D47981
+:1053600001009446010080B504F037FF002011F0E1
+:1053700084FC002080BDB0B5054C051C206BE16AA3
+:1053800002F0E3FD291CA06A02F011FBB0BDA46C81
+:1053900001003C005C1C0000B0B5031C081C141C80
+:1053A000002B0C4D09D06969890001310A04120CE7
+:1053B0002280291CFEF73EFC0AE0011C281C2288E2
+:1053C000FEF738FC2088012802D98008013868617E
+:1053D0000120B0BD3C00981C0000206E0100F1B51A
+:1053E00000980026C168086809891C2934D3C1883F
+:1053F000FF23013399422FD10188C91A2CD141884A
+:10540000082929D10179062926D14179042923D1F6
+:1054100000250024071C3C00D41C000018370BE0BA
+:10542000A000411804310422381CFEF78BFB002831
+:1054300001D1012504E001340A494869A042EFD8AE
+:105440000849087800280AD0012801D0022806D18E
+:10545000002D04D10098C0683C00101D0000FFF72B
+:1054600042FC0126301CF8BD0000206E01000148FE
+:10547000406870470000206E01000249486001202A
+:10548000486170470000206E010070B5041C0126C1
+:1054900003F0EFFA251C103500283C004C1D0000DD
+:1054A00004D00020207703F0F1FB07E003F038FD83
+:1054B000002809D00120207703F0CEFC011C062231
+:1054C000281CFEF7C3FB02E0022020770026301CD8
+:1054D00070BD00000348807AC00703493C00881D66
+:1054E0000000C00F88627047000040900700A46C65
+:1054F00001000149012088627047A46C0100064840
+:10550000807AC107064AC90F91622021800700D422
+:105510000021A032117070470000409007003C004D
+:10552000C41D0000A46C0100074A1268074B9B6968
+:105530001A4001D0012200E000220A600121002A65
+:1055400000D000210160704710000700A46C01002A
+:10555000012202600A607047B0B50D1C011C583171
+:105560003C00001E0000041C0622281DFEF777FBED
+:10557000211C5E310622281C0A30FEF770FB211C1C
+:1055800064310622281C1030FEF769FBB0BDFEB561
+:1055900000251D72171C0E1CB26D0021921950328D
+:1055A000D27A3C003C1E00001C1C5A720078321C4F
+:1055B0008032C007C017013001900898029200287D
+:1055C00001D1307F2BE037480068002800DD011C46
+:1055D0000198002802D00898012810D1029A906BF7
+:1055E000002806D03C00781E0000884201D9451AE8
+:1055F000013D7019B03003E0B56D013D70195030B8
+:10560000007B0FE0029A106A002807D0884201D977
+:10561000451A013D7019A030007903E0BD69013DD4
+:105620007819007FA0723C00B41E00000EF00CF848
+:105630000E2811D1A07A08F067FF00280CD07868F6
+:10564000002805D11B480025007808F04BFF02E038
+:10565000451E7819007AA072029A5069002817D066
+:105660000898012814D0A07A3C00F01E000008F031
+:105670004EFF00280FD00198002807D0022020728A
+:10568000706C80194030C079607204E07D68013D23
+:105690007819007AA072029AA07A916908F051FFF5
+:1056A0002060029A607A916908F03C002C1F00008B
+:1056B0004BFF6060A07AE0722573FEBDD47E0100CE
+:1056C000905701000006000E002A8CB501D08A22F6
+:1056D00000E0882200AB1A800CF0C2F80190684606
+:1056E0000BF0BCFA8CBD0000011C08483C00681F90
+:1056F000000080B50068002809D049680220002910
+:1057000000D101200106090E002006F0D8FF80BD5F
+:105710000000206701001CB50190041C443001AA60
+:10572000694611F0B8FD00280BD0A06900213C00AB
+:10573000A41F0000C207D20F0220FFF7C9FF0021FB
+:10574000201C0FF0D9FE1CBD04219820FFF772F930
+:10575000F9E700008CB500AB84211980054B021CD1
+:10576000181C998A0CF08EF8019068460BF07CFAB0
+:105770003C00E01F00008CBD0000707C0100704701
+:105780000000064980B5C96814234031897A044A6B
+:105790005943891880000858FEF7E9F980BD707CEC
+:1057A00001005447010080B50020FFF7D6FF80BDFF
+:1057B00000003C001C20000080B512481149808A7E
+:1057C0000A8B00210028C2B00CD1012A05D0022A80
+:1057D00015D000AB5A800E2207E0022200AB5A809F
+:1057E000998004E000AB5A800D2200AB9A8000AB98
+:1057F0001880FF203C00582000009871D97168463D
+:1058000000F0D1F942B080BD0000707C010010B5FD
+:1058100009F05FFC002005F02AF9034CE08A05F04E
+:1058200036F9201C0FF0B3FE10BD707C01001CB5D2
+:1058300009F04FFC07203C009420000000AB074C0F
+:105840001880E18A201C0CF00BF8019068460BF0E0
+:1058500017FA201C0FF09EFE1CBD0000707C01009A
+:1058600080B502219820FFF7F1F880BD10B5154CE6
+:10587000C2B0A08A002803D03C00D020000001283C
+:105880001ED1022000E00120E168403188722069C9
+:1058900008F023FD021C0C4818388088E1680FF0DE
+:1058A000A4FEA08A00AB18800120588000209880B8
+:1058B000FF219971D871684600F03C000C2100006E
+:1058C0007BF942B010BD03219820FFF7C5F8F8E737
+:1058D000707C01007047000080B503480FF060FE47
+:1058E000002005F0CDF880BD707C010080B5024835
+:1058F0000FF056FE80BD0000707C01003C00482186
+:10590000000080B502219820FFF7A9F880BD80B57E
+:105910000320FFF734FF80BD0000F0B5214E0027C3
+:10592000B18A301C002504240029008BC3B01ED18D
+:10593000012807D0311C498B022812D100293C00D4
+:105940008421000007D1002405E000240125022065
+:1059500000ABD8801F810FF07FFF002C10D1F168C1
+:105960000520403188720EE000291AD100ABD880A2
+:105970000E2002E000ABD8800D2000AB188107E0BC
+:105980003C00C0210000301C0FF013FE201CFFF76C
+:10599000FCFE002D08D0B08A00AB9880FF209872E2
+:1059A000DF7201A800F011F943B0F0BD0000707C77
+:1059B000010010B5002005F06CF8044CE08A05F0F9
+:1059C00078F83C00FC2100000FF04CFF201C0FF089
+:1059D000F3FD10BD707C010080B50420FFF7D8FEF8
+:1059E00001480FF0E9FD80BD707C010080B5022008
+:1059F000FFF7CEFE012005F05FF802480FF0DCFD56
+:105A000080BD00003C0038220000707C010080B5A1
+:105A10000320FFF7C0FE80BD0000B0B51D4DC2B031
+:105A2000288B00ABFF21588099710021D971AA8A77
+:105A30000024012A18D12A1C528B02280FD1002AD7
+:105A400016D1032058803C007422000099802C1C41
+:105A5000FF22981DE969FEF73BF9E1680420403117
+:105A6000887210E0002A06D101240E2001E00124F2
+:105A70000D2000AB9880281C0FF0A4FD0420FFF738
+:105A80008DFE002C05D0A88A3C00B022000000AB9F
+:105A90001880684600F0A5F842B0B0BD0000707CE8
+:105AA000010010B5002005F000F8034CE08A05F075
+:105AB0000CF8201C0FF089FD10BD707C010080B532
+:105AC0000420FFF76EFE01480FF03C00EC220000BE
+:105AD0007FFD80BD707C010080B50220FFF764FE71
+:105AE000012004F0F5FF02480FF072FD80BD0000B8
+:105AF000707C010080B50320FFF756FE80BD0000DA
+:105B0000B0B5194D0424A98A281C028B3C00282317
+:105B10000000C2B0012914D1408B042A0BD1002807
+:105B200000D100240FF0ADFE002C19D1E96805204A
+:105B30004031887217E0002810D100AB5A800E2047
+:105B400002E000AB5A800D2000AB988019803C0029
+:105B500064230000FF2098710020D871684600F08F
+:105B600049F842B0B0BD281C0FF038FD201CFFF7EB
+:105B700021FEF6E7707C010010B5002004F09EFFC6
+:105B8000034CE08A04F0AAFF201C0FF027FD10BD93
+:105B90003C00A0230000707C010080B50420FFF7CA
+:105BA0000CFE01480FF01DFD80BD707C010080B52A
+:105BB0000220FFF702FE012004F093FF02480FF0DD
+:105BC00010FD80BD0000707C0100B0B50A4D011CC5
+:105BD00044313C00DC230000041C0622281CFEF794
+:105BE00089F8EC60206903F097F8011C0622A818D8
+:105BF000FEF780F80420FFF7F7FDB0BD707C0100D0
+:105C000090B5041C808893B0002806D01549062260
+:105C1000488018313C0018240000881FFEF76DF8FA
+:105C200068460CF014F82088012808D16088032801
+:105C300005D1A088002802D106200CA90870A079FF
+:105C40000621FF2804D0E079002801D0011C08318A
+:105C50000B2008AA50723C0054240000201C08F0BD
+:105C60003BFF039068460BF031F813B090BD000085
+:105C7000587C0100074B1A78824201D0002907D0D6
+:105C8000FF201870044801880122520391430180CB
+:105C9000704700004C7B01003C00902400003280E3
+:105CA000070010B5041C0C2307495843401800791D
+:105CB0000AF04FF901200349A04008390A7810433F
+:105CC000087010BD0000747A0100034A00211154CD
+:105CD000800030321058017070473C00CC24000026
+:105CE000E07A010010B5041C052801D3FEF712FF6D
+:105CF000201CFFF7EDFF0021201C0EF089FB10BDDA
+:105D0000054980B58860087F242304495843085812
+:105D1000FDF76CFF80BD0000D47901003C00082530
+:105D200000009446010080B501219120FEF7C7FED6
+:105D300080BD024A11688143116070470000786E8F
+:105D4000010080B5FEF7E9FE80BD80B5FEF7E5FEF7
+:105D500080BD80B500F031FA80BD034980B53C00BC
+:105D6000442500000420886000F0D0F980BD0000C8
+:105D70000030070080B500F099FA80BD80B500F0D2
+:105D800099FB80BD38B5202815D20D4C221C20323D
+:105D9000957900AB1D70D2795A700A4B82009950E8
+:105DA0003C008025000001218140084801604268D4
+:105DB0001143416000AB1888E08438BD0121FF2009
+:105DC000FEF783FEF9E70010070030740100004081
+:105DD0000700202809D20549064B82009950054A40
+:105DE00051683C00BC250000012383409943516069
+:105DF00070470000A97500003074010000400700E2
+:105E0000024A11680843106070470000786E010074
+:105E10000B48016803221204114301600168072244
+:105E2000120691433C00F825000001225206891811
+:105E300001600168120C11430160016852081143AE
+:105E400001607047000080000700FEB51C4E051C75
+:105E5000B08AF26812D00124002909D1116D02AA7A
+:105E600001ABFEF7F8FE3C00342600000298002843
+:105E700001D000240BE001AA02A9281CFEF770FF44
+:105E800005E0116D02AA002401ABFEF701FF0E49E7
+:105E9000081C2030827900AB1A70C07958703068C5
+:105EA000002802D1029830603C007026000002E019
+:105EB00002987268D060019800AB70601888C8843E
+:105EC000F068C06CF060201CFEBD247E0100001054
+:105ED0000700F8B5041C54271D4E00203060706088
+:105EE00067433804151C000CB1823C00AC2600004E
+:105EF000FFF796F8082130610026174A14E0031CCA
+:105F0000243342610361C661018308330360B12316
+:105F10004360031C6433C3600C230381031C5433AC
+:105F20004C3028C0013C181C002CE8D13C00E8266D
+:105F30000000094E07223069D243C1195050021C9B
+:105F4000103280398A63F060B06000210020FFF7D2
+:105F500088FF3069F060B060F8BD247E01009100D8
+:105F600005000148406A70470000E87D01003C00E0
+:105F7000242700000148008870470000FC6B0100E6
+:105F8000064980B508880130088005490820086066
+:105F900004498869886100F021F880BDFC6B01002C
+:105FA0000010070000300700034A0120121D06CA36
+:105FB0003C0060270000914200D100207047E87D3E
+:105FC0000100064800B5C07C002803D1FFF7EFFFB1
+:105FD000002801D0012000BD002000BD0000A080ED
+:105FE000070010B5041C800702D506F03EFD03E053
+:105FF000E0073C009C27000001D506F0E3FD6007A8
+:1060000001D5FEF7ABFD10BD024A011C10681160FE
+:1060100070470000E87D010038B5204D2C1C20346D
+:10602000A07900AB1870E0795870FEF727FA00AB42
+:106030001888E8843C00D82700001A488178082294
+:1060400091438170817811438170174841688022A3
+:1060500091434160016811430160002001306428D0
+:10606000FCD3A0790F4D00AB1870E079104C58703C
+:10607000201C103000F03C0014280000DFFB002042
+:10608000C043A061FFF79CFF002809D00A490869B6
+:106090000130086100203C318968486306F0EEFC5D
+:1060A00000AB1888E88438BD001007000000070026
+:1060B000F4000700003007003C0050280000E87D95
+:1060C00001000A4880B5006A002801D0FEF7C1F936
+:1060D000074807493C30806810304861012008615A
+:1060E0000549086880229043086080BD0000E87D73
+:1060F000010000300700F40007003C008C2800007D
+:1061000080B50CF0CBFE06F0BFFC80BD0149C86233
+:1061100070470000E87D0100024A916A08439062DE
+:1061200070470000E87D01001823064958434018D5
+:106130000021027903681A70013108303C00C82838
+:1061400000000329F8D370470000285201000349DA
+:10615000002800D0011C024881627047000085754C
+:106160000000046C0100F8B5FFF733FF284F00284A
+:1061700004D0FFF7C8FF386A01303862F86A3C0083
+:1061800004290000002802D0018904390181386BFC
+:106190000025002808D00B203D6310F0E5FA1E49C9
+:1061A000086821229043086038783C211B4A41430B
+:1061B0008C18FF22796A3A7000290CD0B969013134
+:1061C0003C0040290000B9617D62BD68002D04D00B
+:1061D000636B7A6B0021FDF747FDF8BD042803D3FC
+:1061E00001218420FEF7A1FC3869261C01303861AA
+:1061F00020363078022803D00C218420FEF795FC4D
+:1062000035703C007C290000A1690029E8D0636B4F
+:10621000303420780C1C00217A6BFDF727FDDFE776
+:10622000046C0100F400070018DB010010B50B4CF2
+:10623000606A00280ED00A4800F012FB002060625D
+:10624000A468002C3C00B829000005D07E23DB4365
+:1062500000220121FDF70DFD10BDE0690130E06174
+:1062600010BD046C010000300700094841683F225E
+:10627000120491430D2212048918416041680122E1
+:106280005202914341603C00F429000003488178A8
+:1062900081708178817070478000070000000700DE
+:1062A000F0B50125082400200E4A0F4900263C23A2
+:1062B0004343D1529B185D719B605E611C82C02775
+:1062C000DF602027FE549E613C00302A000030270A
+:1062D000FE54074F3F182037013005289F63E9D34C
+:1062E0000548FF3201329062F0BD18DB0100BEBAF2
+:1062F000000030800700066C0100014948607047CB
+:106300000000046C01000549085C3C006C2A000098
+:10631000054949684018C006C00E0449203048723B
+:1063200070470000A0570100046C010000800700C6
+:1063300080B515218420FEF707FC80BDF8B54348E1
+:1063400084680334424D04E0201C10F03C00A82A6D
+:106350000000B9F8002871D12869C007F7D53E4878
+:1063600028603E4A141C2034207900903C233C498C
+:10637000584345182879FFF7CCFF281C3A490830C4
+:1063800048600126081C0660686A00280DD03C00A1
+:10639000E42A0000A96A926A354B9F68D71B1A68E5
+:1063A000511879188A425A6800D800E0013206C0B4
+:1063B000E86AFEF787FF2D49E86A4860301C0E60E6
+:1063C00066791FE02B484661047F2949201C50391B
+:1063D0003C00202B0000896AFDF75AFC009884429B
+:1063E00010D03C202249604340188769002F09D013
+:1063F0000021203001707E23DB4302210022201C7B
+:10640000FDF74CFC0120A0408643002EDDD1E96958
+:1064100000293C005C2B000003D03020405DFDF7DC
+:106420003AFC164C503C606A002803D00A218420B4
+:10643000FEF796FB20352878012803D00B21842015
+:10644000FEF78EFB02202870E068013000E007E0D4
+:10645000E06000983C00982B00002070009860706D
+:106460000A4800686063F8BD0000000107000040B2
+:106470000700010000013080070018DB0100003038
+:106480000700546C010000A00700786E01003C2258
+:106490003C234A4309493C00D42B0000B0B55418B2
+:1064A00058434518211C3822281CFDF7E5FCA06B39
+:1064B0000078A96B0870002020342070B0BD000067
+:1064C00018DB01003C230749584310B54418203419
+:1064D0002078022803D10D213C00102C00008420DC
+:1064E000FEF747FB0020207010BD18DB0100FFB550
+:1064F0003C2048431A4981B04418261C2036307885
+:10650000151C0F9F022803D104218420FEF731FBC4
+:106510000120307025710B9930223C004C2C00007A
+:1065200061800A99E1620D99A1610C99E1610E996E
+:106530006162A762019911557E21C9436163049983
+:10654000002900D10020061C281C08F08BF8002828
+:1065500001D0022000E00020A16B30433C00882CD9
+:106560000000087005B0F0BD000018DB010080B528
+:1065700014218420FEF703FB80BD0148407870475A
+:106580000000046C010002480069C007C00F70479A
+:10659000000000400700011C3C23044A59433C0012
+:1065A000C42C00008918203109780120002900D06E
+:1065B0000020704718DB01000848406A00280AD113
+:1065C000074A002120239B5C022B04D001313C327E
+:1065D0000529F7D37047012070470000046C0100C3
+:1065E0003C00002D000018DB0100F8B50E1C041C57
+:1065F000171CFEF782FE201C114C606001202060F9
+:10660000104D686901306861686A002803D007216D
+:106610008420FEF7BAFAA068400703D5062184203B
+:10662000FEF73C003C2D0000B3FA08480069002842
+:1066300003DAAA218420FEF7ABFA02206862AE607A
+:106640002F70F8BD00300700046C01000040070007
+:10665000044A518010710348034908304860012002
+:10666000086070473C00782D00003C6C0100003051
+:1066700007000021002305E002894360C06851182B
+:106680000904090C0028F7D104310804000C7047F4
+:106690000000024A516B0843506370470000046CCD
+:1066A000010038B50A4C3C00B42D0000221C2032F9
+:1066B000957900AB1D70D2795A7003684068064A1C
+:1066C0005065054813655030816000AB1888E08440
+:1066D00038BD000000100700046C010098B50D4C97
+:1066E000201C2030817900AB3C00F02D0000197097
+:1066F000C07958700A4800F0ECF809490020486257
+:10670000FFF769FF002803D012218420FEF749FA21
+:1067100000AB1888E08498BD00000010070000302E
+:106720000700046C01000348017A3C002C2E000095
+:10673000FE2291430A310172704700000080070079
+:1067400090B50E4C85B0A078022814D10320A0701B
+:106750000B4900200022049202900391E18801225B
+:1067600001920091617820782269E3683C00682EEC
+:10677000000008F094FD044809F07FF905B090BDD1
+:106780000000B4790100ADB6000071B60000B0B5EC
+:106790000C4DAC790C490978002903D001290ED0A1
+:1067A000022908D1C288002A09D0012381683C004F
+:1067B000A42E000002200FF0C1F803E00221862081
+:1067C000FEF7F8F9AC71B0BD20100700A079010008
+:1067D00080B5026807494A600379CA78CB700079AE
+:1067E000904206D003481430008907F027FE06F0D7
+:1067F0003C00E02E0000ABFA80BD8466010070B55D
+:10680000164C154DA0780026983D012803D1286923
+:1068100008F0FBFCA6706068012803D000212869FD
+:1068200000F0FFFB0E4829690CF031FA01200CF052
+:10683000E4F83C001C2F0000E078012802D0012081
+:10684000607000E06670064814304168012906D186
+:106850000660416F002902D00020FDF74CFA70BDA0
+:10686000846601003463010030B500220023012555
+:106870002C1C94403C00582F0000044001D0CA5406
+:10688000013301320E2AF6DB181C30BD0000FFB5C3
+:1068900001270026051C022081B00090002D18D091
+:1068A0002878FF2815D0002410E0281980780A994C
+:1068B000002901D001063C00942F000008D507F004
+:1068C000E9FE0E2803D0012181400E4300E000279D
+:1068D00001346878A042EBDC0098029D01380090FA
+:1068E000DFD10398311C814302D003980640002772
+:1068F0000498066005B0381C3C00D02F0000F0BDA5
+:10690000000002210160642101E0013902D0026827
+:106910009207FAD40120002900D10020704710B559
+:106920000020C443054B022201015A50C9188C6053
+:1069300001300828F8DB10BD00003C000C300000DE
+:1069400000300700F0B5051C6035C76A041C287BC1
+:10695000002F8BB015D0082815D202A31B5C5B005A
+:106960009F4400000704040709090C0C01260021BC
+:1069700009E0002606E00226022104E03C0048303F
+:1069800000000326032101E0042601218C22125974
+:1069900007912649069004910020039005970892DC
+:1069A000E0692269211C7031019121490090700039
+:1069B0004018603002920388591C01801E483C0038
+:1069C000843000000288A1680AA809F0E1FF606035
+:1069D000E87AA16AC9070007000EC90D0843616A79
+:1069E0002269C907890D01430120002A00D1002036
+:1069F00080030843216AC9030843082108430A9910
+:106A00003C00C03000000880201CFEF798FE206982
+:106A1000002804D1201C0AF082F90BB0F0BD807967
+:106A2000062801D9FEF70FF9206906498079800010
+:106A30000958201CFDF774F9EFE7792F0100C469AC
+:106A400001003C00FC3000000861010074570100A7
+:106A500010B5041C58308AB00EF07CFE221C803227
+:106A60005168002901D0117A07E0002804D080691C
+:106A7000800701D5032100E00121D2680791224956
+:106A8000002008923C003831000004910022059259
+:106A900006900390E06922690090211C70311C4827
+:106AA000019102920389591C01811A480288A16848
+:106AB00009A809F076FF60606B20005DA16A226979
+:106AC000C9070007000E3C0074310000C90D0143E6
+:106AD0000120002A00D10020800308430999088082
+:106AE000201CFEF735FE2069002804D1201C0AF086
+:106AF0001FF90AB010BD8079062801D9FEF7ACF85D
+:106B000020690749807980003C00B03100000958B5
+:106B1000201CFDF711F9EFE70000BD2F0100246AEA
+:106B2000010008610100745701003EB5051C0069B1
+:106B3000042107F0D2FA002809D042780232011C61
+:106B40006846FDF788F9E86A6C463C00EC310000C5
+:106B5000029000E00024281C143002F003FB0028FF
+:106B600004D0211C281C05F0A5FE3EBD002CFCD045
+:106B70000249201C4969FDF7E2F8F6E7447D01006F
+:106B800070B51E1C18235843064B049D3C00283248
+:106B900000001950C418002060616260A660E560C2
+:106BA0000FF0B9FD206170BD0000B87D0100024A00
+:106BB000011C9069916170470000447D010001480B
+:106BC000406B70470000447D01000449044B3C00C9
+:106BD00064320000CA6809695C3B5B68C91A4143BA
+:106BE00050187047A07D01000148007870470000F0
+:106BF0007869010080B506220149FDF735F980BDAD
+:106C0000FE670100F0B589B00093164F131C0E1CEF
+:106C10003C00A0320000041C3A1C01F062FF01A9F4
+:106C200006A8A26802F00BF901AA06A9381C636A3B
+:106C300002F081FC051C012814D10C48FC21C8512C
+:106C4000381C02F00CF80321301C07F052FA00281F
+:106C500007D03C00DC320000807800F033FC201CC0
+:106C600010300EF047FD00E00025281C09B0F0BDF3
+:106C7000F4670100C138000010B5074C0648062231
+:106C8000211D0838FDF7F6F801F0FCFF00F042FC8A
+:106C9000201C02F03C001833000027FC10BDF467F4
+:106CA00001000849C96800290AD0064A0132517812
+:106CB00012784843002A01D108187047101870470D
+:106CC000013070470000447D0100044B0549002855
+:106CD0005A6900D0011C3C0054330000101C59615B
+:106CE00070470000447D0100B9750000074900208D
+:106CF0000A78022A09D10A7C002A05D1CA68002A2A
+:106D000003D04969002900D001207047786901004B
+:106D10000C4A80B5012151603C009033000009F01D
+:106D20006AF809481C308169002907D00023836173
+:106D300000220021002000F0D2F880BD00220021B6
+:106D4000034800F05CF980BD00005C69010051352A
+:106D50000000B0B50C1C012816D13C00CC3300005B
+:106D60000E4D022C09D100F02BFA00280ED06869D4
+:106D700000280BD1211C13200CE0032CFAD100F0C9
+:106D8000F9F9002802D0287C0028F3D0B0BD211CDE
+:106D90000006000E04F062FCB0BD00003C000834A8
+:106DA000000078690100B0B50C4C002525746561C0
+:106DB000E56000F03CFA00F034FA07481C38056141
+:106DC00009F033FF2078002802D104F06EFAB0BD3C
+:106DD0000228FCD104F0A5FBB0BD786901003C009D
+:106DE000443400000C4880B50178002912D0C068F6
+:106DF00000280FD108481C38406900280AD10748EC
+:106E00000068002806D000220721102010F0A0F909
+:106E100002F02CFC80BD000078690100D4670100FD
+:106E20003C0080340000F8B51D4E1C4D041CF06879
+:106E300002271C3D002807D0E868002804D0FDF791
+:106E4000C2FE002800D0BC43002C14D03770F0687C
+:106E5000144F002810D0E00717D4FDF7B4FE002827
+:106E600013D03C00BC3400007069002806D1E868EB
+:106E7000002801D0FDF71AFF0DF00AFAF8BD686985
+:106E8000002805D109480068002801D0012C04D150
+:106E9000391C201C0EF052FDF0E704F01DFB02F03F
+:106EA000EBFBEBE73C00F83400007869010050C3CD
+:106EB0000000D467010005484169002904D0406AF8
+:106EC000002801D001207047002070470000786939
+:106ED000010010B5041C0649002048600860886065
+:106EE00008F09BFF07213C00343500001220227976
+:106EF00010F03AF910BD00005C6901000149012061
+:106F000008607047E8670100F8B5071C0E1C08F020
+:106F1000A3FA134D041C6868002817D0002F02D074
+:106F2000A868032813D300203C0070350000A86037
+:106F30006860211C0F200EF0F0FE2868002803D0A6
+:106F4000002C06D1012002E0012C02D10020FFF725
+:106F5000FAFEF8BD721C0021044800F068F8A86829
+:106F60000130A860F5E75C6901003C00AC35000029
+:106F7000513500000A4980B5CA68002A0BD0426822
+:106F8000002A09D000224A6202680A6202680721C8
+:106F9000172010F0EFF880BD0120486280BD00008E
+:106FA0007869010070B5144D846CE9683C00E835DF
+:106FB0000000002917D04030EC614078002801D152
+:106FC00001206862286A0E4E001BB0420CD208F005
+:106FD0003AFE296A401AB04203D202220721132046
+:106FE00009E004F0B6FA70BD0748A9680BF03C0050
+:106FF00024360000BDFE221C0721162010F0C0F828
+:1070000070BD000078690100A086010034630100B2
+:107010000A4980B500208861086900280CD007481B
+:107020001C300078002807D001F0D2FF022803D1DD
+:107030003C006036000000F012F900F0BCF880BDA2
+:1070400000005C690100F0B5061C0C1C151C91B019
+:1070500001A84021FCF70DFF00216846FDF7A7FFBE
+:10706000049001A806220849FCF731FF062202A875
+:1070700002303C009C3600000649FCF72BFF00ABB9
+:10708000DC760C95311C01A807F04EF811B0F0BD6C
+:1070900012610100F8670100031C081C191C114B48
+:1070A00080B506D0042111800422191CFCF712FFC0
+:1070B00016E004223C00D8360000011C181CFCF726
+:1070C0000CFF09481038006900280CD007480C3024
+:1070D0000078002807D001F084FF022803D100F0D7
+:1070E000C4F800F06EF8012080BD6C690100F8B5AD
+:1070F000041C0F1C00253C0014370000002601F082
+:1071000073FF02282FD11949012F086807D1021CEB
+:1071100022400AD120430860A04206D104E00028A2
+:1071200003D0A043086000D10125486800281AD187
+:10713000002D17D0012048603C0050370000381C5B
+:1071400008F089FE0B481C308169002907D0002314
+:107150008361002200210020FFF7F1FE06E00022FB
+:1071600000210448FFF77BFF00E00126301CF8BD3A
+:1071700000005C690100513500003C008C370000C4
+:10718000031C081C191C124B80B506D00421118069
+:107190000422191CFCF7AAFE18E00422011C181C8A
+:1071A000FCF7A4FE0A481030C16800290ED0007810
+:1071B00000280BD001F01EFF022807D13C00C83781
+:1071C000000000F064F800F02EF8002801D109F06A
+:1071D0007AFD012080BD6869010010B50A4C206964
+:1071E000002809D0A169002906D17D21C9004143A9
+:1071F000032207200FF0E1FE2169012000293C0055
+:107200000438000000D1002010BD00005C690100BE
+:1072100010B5054C002803D0FDF79AFCE06010BDC6
+:1072200001200021E16010BD786901000A480A4987
+:1072300010B5C0681C39C968002803D0002901D0E6
+:107240003C0040380000012400E00024002C03D062
+:10725000022207200FF0B7FE201C10BD0000786945
+:10726000010010B5094C0020216900290CD0064905
+:107270001C310978002907D000F009F80120A0612D
+:1072800020693C007C3800007D23DB00584310BDA2
+:107290005C69010080B5032107200FF0D1FE80BD9D
+:1072A00080B5022107200FF0CBFE80BD064880B5D7
+:1072B0000078002801D0FDF729FD002207211120C8
+:1072C0000FF07CFF3C00B838000080BD00007869FA
+:1072D000010010B5041C101C064A516100F0A3F80F
+:1072E0001020002C00D11120002207210FF069FF8F
+:1072F00010BD5C6901000149486270470000447D8F
+:10730000010010B5094C3C00F4380000E069002889
+:107310000CD1E0620120E0610BF008FD0BF074FE7F
+:10732000012000F0B5F80FF04DFA606310BD0000C9
+:10733000447D0100054980B50020C861886300F0E4
+:1073400089F800F001F902F03C003039000091FBAF
+:1073500080BD447D010010B5012838D10806000E1B
+:10736000052832D11D4C2078012809D002281BD0D5
+:1073700003282AD102F07DFB00F06FF8012010E015
+:107380001748216B0BF01BFD0BF03C006C39000023
+:1073900041FE15480069032801D3C00703D5012128
+:1073A000206B07F019FF022000F078F810BD0F489D
+:1073B000006820640A485C30C16802698918C160AD
+:1073C00003F0CCFC032000F069F801203C00A83950
+:1073D0000000E06210BD092100E008210920FDF74E
+:1073E00076FC10BD0000447D010034630100F468A8
+:1073F0000100786E0100B0B50F4C2078651E0128A1
+:107400000FD10020FFF7A1FC0C49098849083C0076
+:10741000E4390000401A0FF019F9002804D0287848
+:10742000012807D0022805D02078002804D1287828
+:10743000032801D10120B0BD0020B0BD457D010071
+:10744000F46701000149C86470470000447D0100F1
+:107450003C00203A00000449054A8968126D012069
+:10746000914200D3002070470000F4680100447D81
+:10747000010010B5064C206B07F0F9FEA06B002848
+:1074800003D10348216B0BF092FC10BD0000447D3A
+:1074900001003C005C3A00003463010004480078BD
+:1074A000022801D0032801D1012070470020704735
+:1074B000447D0100F8B5071CFFF7D0FF061C012F23
+:1074C000264D1FD0022F45D0032F12D12448254B23
+:1074D00000696A693C00983A000041085A43234B0E
+:1074E000D4188C4200D90C1C002E05D01E495B39E3
+:1074F0000978002900D1041C0522211C09200FF065
+:1075000080FD184A5C3A1770F8BDFFF7D6FB0028DB
+:1075100002D0286900283C00D43A00000ED004F0C4
+:10752000CFFB134B6969114A59435C3AD26B8918F6
+:10753000884201D9441A04E0002402E004F0AEFDC0
+:10754000041C002EDBD009485B3800780128D6D116
+:10755000084B9C4202D958423C00103B00002418C2
+:10756000D0E70024CEE704F0AEFBCAE70000F468E1
+:107570000100A07D0100983A00008813000080B54A
+:10758000052109200FF07DFD02490020087080BD13
+:107590000000447D010070B5061C3C004C3B00001F
+:1075A0000DF0BCFAFFF7CEFE094C0A48216B0BF038
+:1075B00021FC012501213006000EA56307F03AFEEB
+:1075C000054829020958002900D1056170BD000055
+:1075D000447D010034630100F46701003C00883BF6
+:1075E0000000024A116C0843106470470000447D9B
+:1075F000010080B5FFF7BFFE0BF0A1FB80BD024A82
+:10760000011C1069116170470000447D0100F3B551
+:10761000061C002089B0F84C0890E26908253C005F
+:10762000C43B0000002A03D006A907A8FCF706FC0B
+:10763000301CF34E0027203682286FD015DC01283D
+:1076400018D080286BD1EE4D803DA868012867D105
+:1076500068680FF01BF8002863D1012101200DF0AC
+:107660003C00003C00009DF808F0DBFD0BB0F0BDD5
+:1076700083286DD0842855D1E7E00A980A2804D2DF
+:1076800003A31B181B5A5B009F44F6E00000EE00AA
+:107690000B00F700F700F700F7002F0088008B00C1
+:1076A000AD003C003C3C000000F056FE002817D026
+:1076B000D64A803AD16A0698814216D0062100281F
+:1076C00000D107210D062D0E00280ED0CF4A012033
+:1076D000803A50650FF0A0F8CC4A803A506604E03A
+:1076E000002116203C00783C00000FF0DCFC012556
+:1076F000022005902EE2C6488038406D00282ED02A
+:10770000C6492069C44D40180EF0C1FF002812D0B0
+:107710000FF085F8C14949424018BD4920618039C0
+:10772000486E40190EF03C00B43C0000BBFF00283E
+:1077300011D00AE0F7E017E2B2E0B0E0B649206904
+:107740008039496E401AA84205DBB349B54D8039EE
+:107750004F6503F027FB0622291C16200FF072FC50
+:1077600047E095E000F0FEFD3C00F03C0000002802
+:1077700042D1AA4DC43DEF6008F019FD03F015FB9E
+:10778000A86A002802D0FFF74CFFAF62A4488038F7
+:1077900000680021FFF7F9FC08F03FF909211620E5
+:1077A0000FF087FC0022162183203C002C3D0000B6
+:1077B0000FF040FDFFF786FC21E000F01BFE1EE00D
+:1077C00006F054FA974D803DA96F401A0490069830
+:1077D000002801D0AF6502E0A86D002808D19148CB
+:1077E000C4380078800703D5924847603C00683D64
+:1077F000000000F002FE0498FF382338142802D25B
+:107800000120E86353E0EF6351E0874AB57A803A9C
+:10781000002D4CD00DF071FF00F0ADFD071C82482B
+:107820008038406FFF305F300EF03DFF021C3C009F
+:10783000A43D00007E488038406D00281AD100F039
+:10784000F1FD002816D1042D02D1002F12D11BE02A
+:10785000002F06D0022D14D079484068002809D0A6
+:1078600012E0002A10D14B21C90001230922162061
+:107870003C00E03D00000FF0D6FC6E4A7348803AB1
+:1078800011680BF0D8FA18E00121002001E0012175
+:10789000012000F02AFE10E0674A6C49803A906EA1
+:1078A00040189066012508958BE104216CE1614A3E
+:1078B00066483C001C3E0000803A11680BF0AAFAB2
+:1078C00088E1AF60A86FE8676348016DA967079A10
+:1078D0001420002A00D1002008181230A866707801
+:1078E000B0703078707002203070A069FCF7C2FA76
+:1078F000EF64A86F3C00583E0000E96F594B401AF6
+:10790000984212D2686D069988420ED030780228CB
+:107910000BD80EF09CFFA96F0822401A5249091A91
+:107920003B1C16200FF085FC00E0AF6501200590A0
+:107930000890434802253C00943E0000C438C168CA
+:10794000002972D10121C1604948006B00286CD028
+:1079500008F066FC69E03C480022019280388068AB
+:10796000012804D1384880388760012048E13A482E
+:10797000012343603448C4383C00D03E0000007806
+:1079800000280AD100F025FE002806D0FF21913101
+:107990000123092216200FF052FC2C498039486F30
+:1079A000896F421A039206F076F928498039896F67
+:1079B000039A401A0290372000013C000C3F00005F
+:1079C000101A50280DD223488038406D002804D169
+:1079D0000298FF385538142801D2012200E0002215
+:1079E0000192039A0120FF3A0B3A502A00D300205B
+:1079F000049000280AD017488038C06F3C00483FE8
+:107A00000000081A9B21C900401A142801D2012243
+:107A100000E000220092002A11D00F4D0120803D8D
+:107A200068650EF020FF68660125012116200FF021
+:107A30005EFB002116200FF05AFB00E0BAE03C008C
+:107A4000843F0000F07902283CD8054A803A516C06
+:107A5000002937D1136C111C002B33D116E0000024
+:107A6000246D010050C30000C05C15007099140023
+:107A7000B057010034630100E204000000900700E9
+:107A80003C00C03F0000530700001E020000C85722
+:107A900001004A6D002A02D0B27A022A15D1009A5A
+:107AA000002A03D0CA6D0132CA6500E0CF65019A91
+:107AB000002A0BD08A6FCB6FD21A5A4B9A4202D24D
+:107AC0008A6D3C00FC3F0000013200E001228A6523
+:107AD00000E08F650499002901D102280BD9544A8E
+:107AE00002281ED9D06F616888421AD1916F081A96
+:107AF0005049884215DD4E4B986FE168401A7D2150
+:107B0000C90088423C00384000000BDD6169401A22
+:107B1000002804DD021140111018401801E0801007
+:107B200008186061586FE0600398FF382338142804
+:107B300009D20298FF382338142804D23E4A906FA5
+:107B40005064906A90643C00744000000EF09AFE0D
+:107B50003A49496C401A3B49884201D937494F6438
+:107B6000394903984018142807D23449C86B0028B3
+:107B700003D0886F0864886A88640EF083FE2F49FA
+:107B8000096C401A314988423C00B040000001D9DC
+:107B90002C48076404200590082116200FF0B9FA3C
+:107BA0002848406D002802D00499002908D02949AE
+:107BB000002800D129493B1C062216200FF057FB54
+:107BC000022D09D0062D0AD0072D3C00EC40000004
+:107BD00013D107E001211620FDF7D6F81EE01A4A5E
+:107BE00057639763184A0698D06207991163536BDD
+:107BF00018435063906B084390630598002805D0A4
+:107C000005980CF05FFA05980CF0D2F93C00284179
+:107C10000000082D05D00D4844388570281C03F05D
+:107C2000DCFD1149E069884200D161E5089800282F
+:107C3000FBD0B07A0228F8D1012116200FF06FFA9C
+:107C400002200DF0E8FE53E50000530700003C0061
+:107C500064410000A46C010020A10700204E000038
+:107C60003FFBFFFFA086010050C30000C05C150071
+:107C7000F11D00007047000070470000F8B5214872
+:107C80000068214D6969084001D1012700E0002703
+:107C90003C00A04100001D4D0126696A002900D06A
+:107CA00000261B4D1A482C1CA030027A281C40309C
+:107CB00080341023B74210D10125C580002900D09F
+:107CC00000231A43111C017301200EF088FE0820C6
+:107CD00020703C00DC41000000221621802013E0CF
+:107CE0001127C7802E1C0B4D002900D100231A43F9
+:107CF000111C017301200EF075FE08202070306DFC
+:107D000000221621686782200FF0D0FAF8BD00002B
+:107D1000100007003C0018420000A46C0100009015
+:107D20000700B0B50F4D041CAA7A0121081C002AD7
+:107D300000D00020002C00D0002188420AD0002C66
+:107D400004D100F042FB00F0D6FA03E000F0D9FACB
+:107D500000F009F8A87A3C00544200000249E439D6
+:107D60004871AC72B0BD0000446D010080B53EF0BA
+:107D700055F802490120087080BD0000687E0100AE
+:107D8000F3B501208DB00F1C012408900EF092FD78
+:107D9000061C00F0B5FA09903C009042000000F08B
+:107DA00080FB0790FEF73FFA051C00210C9108F0BC
+:107DB000F0FB002801D1012000E000200A90FEF72E
+:107DC00012FD05F0E0FE0B90002D23D0288841071E
+:107DD00020D4291D04910A3500063C00CC42000045
+:107DE000800E01212028039500D000210D1C04984D
+:107DF00006F038FD0C90049806F010FD002808D01D
+:107E0000039801F087FA002803D0002D01D101204A
+:107E100000E000200C9901430C91FCF73C00084362
+:107E2000000023FF00282FD007F099FF051C07F062
+:107E3000B2FF0490FFF7F3F80C990143002D06D030
+:107E40000498F04A301A904201D2012000E000204C
+:107E500008430C900B980A9B1843011C0B913C00A3
+:107E60004443000005F0CEFE00281AD1002D06D0B4
+:107E70000498E749301A884201D2012000E000202E
+:107E80000C990843051C00F01FFB284303E000F099
+:107E90001BFB0C9908430C9000F0D4FB0B99014399
+:107EA0003C00804300000B91DC49C868002801D0E9
+:107EB0000138C86008F0E7FB069008F090FD311A21
+:107EC00005910699D648814208D8002F08D1059916
+:107ED0004008814204D90699814201D900248BE0EF
+:107EE000D0483C00BC4300000599D04D814226D2C9
+:107EF000E879102806D2002F21D1CC48A038806A1A
+:107F000000281CD109F062FF0490002802D1002053
+:107F1000C34913E009F010FE002803D0C448C0692B
+:107F20000028F4D03C00F84300000498052803D052
+:107F3000C148006A002865D1BB49486A002823D09F
+:107F40000138486200F087FF002811D0BB4805992E
+:107F500081420DD201F09BF804300DF0EEFC403070
+:107F6000C17A01294ED03C0034440000807A0028B8
+:107F700001D0052849D301F0DFF8022810D0002FE6
+:107F800002D10698002840D10020089082E1AA483A
+:107F9000A038C068002838D0A8488069486234E01A
+:107FA0000AA903C9084345D03C0070440000A34817
+:107FB0002978A038022940D8406D00280AD09F486F
+:107FC000A2492038C06840180EF0C7FB002801D035
+:107FD000012100E00021964A906A002802DA640834
+:107FE00064002AE0002909D1954B3C00AC44000014
+:107FF000A03B5B6D002B02D005280DDB01E00728BC
+:108000000ADB0120C043906264088E4964000020AE
+:10801000A039886514E0D1E0394311D18949A039EC
+:10802000CB6D002B02D1896D012909D93C00E844B0
+:108030000000079B002B01D1072801DB64086400C6
+:1080400001309062BDE07D4988690490002088611C
+:108050000C9800282CD007F066FC002802D00220E3
+:10806000044325E07A48C06A002804D177483C00E0
+:1080700024450000A038C06800281CD104980028BE
+:108080000DD12878102802D3E878022802D928795F
+:10809000102804D304246B4901228A6194E06C48BF
+:1080A000A038406D002871D005F0A2FD00286DD0E9
+:1080B0003C00604500006408640088E0FFF75BFA5C
+:1080C00000281AD068480078022801D1002F14D166
+:1080D0000020FEF770FE301A0490FFF76CFA0028BB
+:1080E00007D0FFF71EFA002803D05D4904988842A4
+:1080F0004FD33C009C45000005F06CFD00284BD19F
+:1081000053490878032808D188680122D207301A19
+:10811000904241D201220A7057E054480078022868
+:1081200001D1002F51D14A4988685149801B8842AA
+:1081300007D901203C00D8450000FEF742FE7D2112
+:1081400009014018444988604A480078022804D14F
+:10815000079B002B01D1012000E00020474B47493D
+:10816000584340183C498968891B884230D9079B8D
+:108170000020039300F03C001446000079FF0290B9
+:10818000FFF7D8F9049001F057F80499029A514387
+:108190004843019000F0DCFF411C01980122484354
+:1081A000111C00E01BE0314B5B6A834200D30021CD
+:1081B000039B0122002B00D03C005046000000220F
+:1081C0002C4B51439B6A0122834200D30022500072
+:1081D000081803D023490320087003E00998C068F9
+:1081E000062808D90224089800286ED01D490020CE
+:1081F000C8614861A5E01A4948693C008C46000006
+:1082000000280AD1002F05D001224A61C8698018D0
+:10821000C8610AE00020C86103E0002F05D10020FA
+:1082200048610D98002800D1C8680020089008789F
+:1082300001282FD002284BD1002F08D13C00C8467E
+:108240000000E878002802D12878102843D2287945
+:10825000102840D248680A69301A904267D3012238
+:108260000A7038E00000E204000010270000687E79
+:108270000100A086010088130000446D01003C004D
+:1082800004470000C857010050C30000983A00009E
+:10829000C0570100400D0300C4090000B20C0000EB
+:1082A00000200B9A0A9BC0431A4337D0002F35D1C8
+:1082B000079B002B08D06A78022A2FD92A78102A27
+:1082C0003C00404700002CD22A79102A29D2254BA5
+:1082D0001A6C002A06D09A6A9F6CBA4202D11F20FB
+:1082E0001FE02EE0204B5A6C002A03D01F4FB31A18
+:1082F000BB4216D31C4B002A05D09A6A9F6CBA4227
+:1083000001D13C007C4700000F200DE0079A002AB5
+:1083100004D0EA79202A01D1002005E0EA79102A68
+:1083200001D3032000E09A6A124A126802400BD17E
+:1083300001200890022008700F4808614E6064E731
+:10834000FFE701203C00B8470000089060E70C49B7
+:10835000886A002801DA013002E0002801DD0020EF
+:108360008862002008620899200408430FB0F0BD1D
+:108370000000A46C010071020000082007005307F0
+:108380000000687E01003C00F447000070470000D8
+:1083900000487047507E010080B53DF07FFD0249E6
+:1083A0000120087080BD00003C7E0100F8B50D1C66
+:1083B0000EF0C8FA2649041C886A264E002801D00F
+:1083C000042003E0706A00283C003048000001D01F
+:1083D000013870620027002D02D0B761F7610AE012
+:1083E000B0691C490130B061496D002903D00328F0
+:1083F00001D90120F061B460F168009108F0F7FC48
+:10840000F0600099884202D030623C006C48000065
+:1084100034610BE000F090F8002801D0114800E032
+:1084200011483169611A814200D937620B4A0C4800
+:10843000D16C2030002901D00A2103E0017A002903
+:1084400001D0FF310172002D03D1017A3C00A84810
+:108450000000002900D0916A007A002800D1176539
+:10846000F8BDA46C01003C7E0100A60E0000A861CE
+:10847000000070470000064980B58968002907D0D0
+:108480000521002800D104210806000E03F03C005D
+:10849000E448000005FA80BD606C010007480068F0
+:1084A00007494A69104001D0012000E00020496AD4
+:1084B000884201D10120704700207047100007005A
+:1084C000A46C010070B50EF049FA021C00F03AF8F5
+:1084D0003C0020490000104900280ED0081CA031A3
+:1084E0000E780E4B102E01D3806F03E049781029CF
+:1084F0000ED3C06FC018841A0AE0081C803045698A
+:1085000008498D4201D90C1C05E0C068101A2C1ACC
+:10851000002C3C005C49000000DA6419201C70BD8E
+:10852000A46C0100A60E000050C3000080B505F049
+:10853000B7FB002802D007F01FFF80BD034800787A
+:108540000028FAD007F070FB80BD0000606C0100CD
+:10855000034901203C00984900004969032900D8DB
+:10856000002070470000606C0100B0B50A4D002487
+:108570002878012803D005F06AFB0406240EFEF7D4
+:10858000D2FC0002204302D1686A002801D10120F8
+:10859000B0BD0020B0BD3C00D4490000606C0100BB
+:1085A0000121012800D000210148416270470000EC
+:1085B000606C0100154810B504681548006A002871
+:1085C00014D0FFF7CBFF00280ED111481149C43059
+:1085D0004069884208D2CC083C00104A0000A04202
+:1085E00005D3FFF77EFFA04201DA0C4C01E0FF2427
+:1085F00091347D200001844204D900221621832079
+:108600000EF0BDFE01230922211C16200EF0A7FE4C
+:1086100010BDB0570100606C01003C004C4A0000E6
+:10862000C05D00001027000070B5051C0E1C00F096
+:1086300043F800280FD0084C2078C00703D405F079
+:10864000ABF909F031FE002D05D02078800702D467
+:10865000301C02F0FDFE70BD606C01003C00884AD9
+:108660000000B0B5002818D01148814215D210483A
+:108670000C1C0D1807F0DFFA81000918A14201D285
+:10868000400003E041000918A14201D2241A06E08B
+:108690004100A14203D24008F8E7064D074C3C00D8
+:1086A000C44A00000EF072F90019291C07F0DCFA28
+:1086B000B0BD000080B92A00530700004C1D000027
+:1086C00088130000B0B505F0FDFA002813D1FEF7BD
+:1086D000B5FE0A4C0A4D0028606300D028600EF0F9
+:1086E0003C00004B000055F9216A002904D1E169E2
+:1086F000401A2968884201D90120B0BD0020B0BDD0
+:108700000000606C0100B057010080B5FFF7DDFF8D
+:10871000002805D005F0B7FA002801D1012080BD5E
+:1087200000203C003C4B000080BD000010B50A4C0E
+:108730000021A268002A03D0A16002F083F910BDD5
+:108740006160011C002204200EF036FD0348216800
+:108750000AF008FC10BD0000BC740100C4600100F8
+:1087600070B5051C3C00784B000001D1FCF7C1FB43
+:10877000204CE06A002815D01F4BA0695843C60B57
+:1087800020884643F0008019E660FBF71CFEA842F3
+:1087900005D8301CFBF717FE8019A84202D2002032
+:1087A000E06020E0E5603C00B44B0000002D1DD0EF
+:1087B0002688A0697043C103281CFBF7A5FD6061F2
+:1087C0000D48321C291C3030FBF70AFC0C4B606949
+:1087D0005843C00B606201F0B7FDA062E06800285A
+:1087E00004D02069A168FBF73C00F04B0000F4FBCB
+:1087F00070BD0548A168FBF7EFFB70BD0000C874B1
+:10880000010040420F00C0C62D0088130000F1B5E2
+:108810003E4800AB8178C0783E4F0A07040758787D
+:108820003B49120F085C1439240F3C002C4C00000B
+:10883000801878600130B8601878354D085C0019F0
+:10884000B8610130F861EB7833481E09334B1838B2
+:1088500081785E43AB781D09C8236B43002908D19A
+:108860002B4D2D783D60C5607D25ED003C00684CAA
+:1088700000005D1B2C4B07E0274D6D783D60C56007
+:108880004B252D015D1B284BF618022000F057F8F0
+:10889000281AF8602248221C18388178032000F03A
+:1088A0004EF8301A3862396800AB79615A783C006A
+:1088B000A44C00005623F9685A43891AF960C8315C
+:1088C00039611849183989780029B96911D100AB83
+:1088D0001A78134B143B9A5C531C59430A2359438F
+:1088E000144B591A51430A235943401A386212490A
+:1088F0003C00E04C000010E000AB1A780A4B143B3F
+:108900009A5C531C59430A2359430D4B591A51433E
+:108910000A235943401A0B49386240187862F8BD5F
+:1089200000000C5A0100665A010094780100A086EC
+:1089300001003C001C4D000000487100B0D68C00C6
+:1089400088100000803801005812000070110100EA
+:1089500030B5194B0228DD6806D1002904D12B1C43
+:108960000C339C1A64235C43022809D1012907D1E6
+:1089700064237D243C00584D0000E4006B431C1927
+:10898000A0235343E41A0A235A43032809D1002998
+:1089900007D11323FF24E4006B431B199B1A1C1CF3
+:1089A0005C43032808D1012906D10E2005496843FC
+:1089B0004018801A041C3C00944D00004443201CC5
+:1089C00030BD00007C7801008408000010B5074C21
+:1089D0000C2360780549143158434018406801F071
+:1089E0004FFC0021607802F04BFF10BD4C7B010072
+:1089F0000C48F8B540780C233C00D04D00000A49E3
+:108A0000584314314418261D60CE301C0BF00BFD6A
+:108A10000027412047550548291C02F0F0FE281C7C
+:108A200001F031FC0434C0C4F8BD4C7B010055801A
+:108A30000000B0B50A4D4C2128783C000C4E0000D7
+:108A4000094A41438C1822680121FBF7E1FA287892
+:108A500001F0FAFB3C23E056411E012007F034FBF5
+:108A6000B0BD00003C7C010058E301000C23074925
+:108A70005843401880B54068416B00293C00484E7F
+:108A8000000002D00BF0FBFD80BD0BF02CFD80BD83
+:108A90000000607B010038220A4B4243D2180029B3
+:108AA00080B504D0022907D10BF0FBFC80BDD26A4F
+:108AB0000121FBF7B0FA80BD03218620FCF73C00C2
+:108AC000844E00000FFA80BDD4E40100B0B5040666
+:108AD000240E0C200E49604340184568A86B0028FE
+:108AE00003D10021201CFDF7E1FA201C07F0F2FF62
+:108AF000002808D0281C6030C179012903D9FF3132
+:108B00003C00C04E0000C171FF3181710121201C69
+:108B100002F0C5FEB0BD607B010070B50006000E1E
+:108B2000051C4C230A49584344183C20005DFF3083
+:108B300006063616281C01F090FB0021281C22682E
+:108B4000FBF73C00FC4E00006FFA311C002007F0E0
+:108B5000C7FA70BD58E301000C220F4B4243D218F4
+:108B600010B5546800290DD002290FD12C20005DCA
+:108B7000002803D007210C20FCF7BAF9201C0BF0C9
+:108B8000BBFC10BD3C00384F0000002102F08DFE00
+:108B900010BD04210C20FCF7AEF910BD0000607B75
+:108BA000010080B5002907D00C230549584340181F
+:108BB00040680BF04AFC80BD012102F076FE80BDCA
+:108BC0000000607B01003C00744F000010B5041CE5
+:108BD000002905D002291AD1201C0BF0EBFC10BD96
+:108BE0000D4804700D4807F007F90D48018801226F
+:108BF0001203114301804C200A4960434018403061
+:108C00000078FDF75DFD201C3C00B04F00000AF02D
+:108C1000D4F810BD03218620FCF773F910BD3C7C0D
+:108C20000100054E00003280070058E30100FFB547
+:108C3000051C012083B001900C205D4A6843861812
+:108C40000127002974680ED002293C00EC4F000077
+:108C50006AD12C20005D002803D006210C20FCF7EF
+:108C600053F9201C0BF020FD07B0F0BD524814381A
+:108C70004570A06B002807D0504807F07FF801210D
+:108C8000281CFDF725FA1CE04D4807F03C00285051
+:108C9000000077F84A48143805704B4801880122D3
+:108CA0005203114301804020005DFDF712FDB068C2
+:108CB000002809D1281C07F064FFB060002803D108
+:108CC00009210C20FCF723F90598002803D03C006B
+:108CD00064500000E06C0130E0640EE06720005D4D
+:108CE000002807D1E06C002804D139480238C06A56
+:108CF000A06409E0206D002801D0002704E0281CB2
+:108D000007F000FF0028E5D105982065201C2030E1
+:108D10003C00A0500000626A0290817B281C07F092
+:108D200078FF002F19D0201C6030C1794A1CC27115
+:108D30008079814202D2012001E040E000200190D0
+:108D400000280AD025480078800706D500F00DFBE2
+:108D5000011C3C00DC500000201C0BF015FD0190B4
+:108D6000019800280FD00298007B022803D1201C14
+:108D700004F0D0FE84E7012800D07EE7211C301CDF
+:108D800004F0E2FE7CE7251C6035E879FF30A8712D
+:108D9000687A06F03C00185100009DFC0DF047FE7B
+:108DA000071C05F012FF3F180298817B20690430F0
+:108DB00000F035FA616A05F0EAFE39186B7A3088FE
+:108DC0008031094A0DF091FE5DE703210C20FCF78C
+:108DD000AAF858E700003C0054510000607B0100F5
+:108DE000A54D0000C94D0000328007001D7501002F
+:108DF0008D4E0000FFB581B01F1C051C141C101CFB
+:108E00000A9E00F0F5FC291C1031201D0622FBF7FC
+:108E1000B7F9A88E2080E88E3C0090510000608059
+:108E20000299201C00F007F9FF34013466602760C6
+:108E300005B0F0BD0000F8B50F1C1E1C051C141C6D
+:108E4000101C00F0D8FCA888391C2080288960807C
+:108E5000201C00F0F0F8FF3401343C00CC5100003D
+:108E60006660F8BD70B5041CC0680568201C14302D
+:108E7000061C00F00FFB002816D0012202212069F9
+:108E800005F0F8FA002801D0FBF724FF00220221A8
+:108E9000206905F0EFFA002806D0FBF73C000852E5
+:108EA000000001FF002802D0301C0BF07CFB688919
+:108EB0008007C00F03F0A7F818230449584340184F
+:108EC000C168002902D0201CFBF7D4F870BD94675C
+:108ED0000100F8B5041C101C0D1C191CFF223C00DD
+:108EE000445200000027FF2D25D0002905D04B88D3
+:108EF000002B02D000F050FC15E00021104E4B007A
+:108F00009E190223F65E864201DD0A1C04E001314F
+:108F10000906090E2629F1D3094E500080194E2367
+:108F20003C0080520000C05E272A07D20649203943
+:108F300049574731401A2060012702E07E20C04394
+:108F40002060381CF8BDFA470100B0B50C1C7E212A
+:108F5000051C0020C943002C0FD0101C05F06BFD30
+:108F600000283C00BC52000002D0211CC93901E09D
+:108F7000211C86390220C043FBF7B4F9011C0120F3
+:108F80002960B0BD98B5141C00220092221CFDF788
+:108F900043FE98BD054980B5086005490120C861B8
+:108FA000012100203C00F852000003F01CFE80BDAF
+:108FB000000020670100AC7C010080B5002100208A
+:108FC00003F011FE06F00DFB02490020086080BD91
+:108FD000000020670100034901200969002900D130
+:108FE0000020704700003C0034530000106701006F
+:108FF00003480069002801D040697047002070478D
+:109000001067010070B5161C0D1C041C002801D04F
+:10901000012C07D100F036FA002805D013F0CAF968
+:10902000002801D1012070BD3C00705300000120D8
+:10903000002C00D000200A4C043461C4103C00F025
+:1090400024FA002802D000F0C6F901E000F0E5F8AB
+:10905000C030C36B221D07CAFBF720F8002070BD8B
+:109060000000D4670100F8B50D1C3C00AC530000B3
+:109070000021041C281C05F0E3F9231CFF332133D5
+:10908000FF27002805D02222011C181CFBF796F8A8
+:1090900000E01F700321281C05F0D2F9261CFF36C2
+:1090A0004136002805D00322011CB01C3C00E853C7
+:1090B0000000FBF786F800E0B7700121281C05F0DE
+:1090C000C2F9002807D0011C201CFF300A224630BC
+:1090D000FBF777F800E077713221281C05F0B3F92F
+:1090E000002807D0011C201CFF30122250303C0009
+:1090F00024540000FBF768F800E0F7730621281CF1
+:1091000005F0A4F9002807D0011C201CFF30042220
+:109110006330FBF759F8F8BDFF346134A770FAE704
+:10912000084980B50968002801D107480168081C72
+:109130003C006054000005D103219020FBF71DFF87
+:10914000002080BD01F0D7FB80BD1C6701002067B7
+:10915000010080B5FFF7E7FF80BDF0B5002484462D
+:1091600000200BE08740174007D014230B4D4343EA
+:109170005B193C009C5400001B7C65462B55013458
+:10918000013001273B1C0E2800D300230E883D1C14
+:10919000A64200DC00252B40E7D10C80F0BD00008A
+:1091A0007440010078B5041C01202070082000AB39
+:1091B0000D1C18803C00D8540000161CA01C6946E9
+:1091C000FFF7D1FF00AB0022D243198882406170C3
+:1091D00032202870102018803240A81C6946FFF702
+:1091E000C2FF00AB1888687078BD80B502F035FF0B
+:1091F0000021002800D03C00145500000169081C23
+:1092000080BD00000549002801D0C86800E0086959
+:10921000002801D00430704700207047106701001B
+:1092200003480069002801D00430704700207047CF
+:1092300010670100024800693C00505500000028FA
+:10924000FFD1704700001067010010B5054C206980
+:10925000002803D104219020FBF79BFE206910BD5C
+:1092600000001067010010B5041C00F040F9002850
+:1092700001D0002010BD201C00F03C008C550000E7
+:1092800057F9002801D0012010BD022010BD0000B8
+:1092900070B50F4E041C30680D1C002807D0211C2F
+:1092A000043005F0C1FB002801D030680BE0094A0A
+:1092B0001068002809D0211C141C04303C00C8553B
+:1092C000000005F0B4FB002802D020689C3000E0CC
+:1092D0000348405D70BD206701001C670100CC475A
+:1092E0000100044900200969002902D0FF31013141
+:1092F000886970470000106701000148007A3C004F
+:109300000456000070470000AC7C0100FEB5061C4E
+:1093100000201F1C141C0029029019D0012926D0FE
+:10932000022947D12648007805F0A0FBA0720AF078
+:109330004FFC0E2809D1A07A05F0AAFB002804D022
+:109340003C00405600002048007805F092FBA072D7
+:10935000002020722FE01D4D2868002801D1FBF766
+:1093600052FE00972A68231C1832111C301CFCF78F
+:10937000DEFB26E0301C0CF0CAFB051C02D0A868FE
+:1093800000283C007C56000008D1134800680028E3
+:1093900001D1FBF73BFE104800681830021C0E4854
+:1093A00000970168231C1831301CFCF7C3FB002D0B
+:1093B0000AD040352888800606D40020206003E0CB
+:1093C000012190203C00B8560000FBF7F4FD029804
+:1093D000FEBDB069010090570100206701001C67C5
+:1093E000010080B5002002F04AFE1823054A5843C8
+:1093F000801840690121002800D04178081C80BDF8
+:109400000000946701003C00F4560000024908691E
+:10941000002800D1C8687047106701000348C06881
+:10942000002801D004307047002070471067010009
+:1094300010B5054CE068002803D105219020FBF70A
+:10944000BDFDE06810BD00003C0030570000106713
+:109450000100F8B50D1C002A03D01149124F0E78F7
+:1094600001E0114F0C26082E01D2341C00E0082424
+:10947000012101704470391C221C0230FAF7CBFE26
+:10948000321B002A07DD322028703C006C57000098
+:109490003919A81C6A70FAF7C1FEF8BDFF202870C0
+:1094A00000206870F9E70000A4690100B0690100BC
+:1094B000905701000149486270470000946701001D
+:1094C000034980B508600121012003F03C00A85742
+:1094D0000000C5FB80BD1C67010080B50021012094
+:1094E00003F0BDFB06F0B9F802490020086080BD1A
+:1094F00000001C67010003490120C968002900D150
+:10950000002070470000106701000348C0683C005D
+:10951000E4570000002801D04069704700207047E0
+:109520001067010080B50221012003F09BFB80BD84
+:10953000054A80B512690021002A03D0111D05F0EB
+:1095400091FA011C081C80BD10670100064A80B515
+:109550003C002058000012690021002A05D0111C8F
+:10956000FF31213105F08BFA011C081C80BD10670A
+:109570000100054A80B5D2680021002A03D0111DE0
+:1095800005F073FA011C081C80BD10670100064A33
+:1095900080B53C005C580000D2680021002A05D04C
+:1095A000111CFF31213105F06DFA011C081C80BD32
+:1095B00010670100FFB50D1C1F1C87B0109E002412
+:1095C00002F072FD1823134958430858002819D097
+:1095D000041C331C3C00985800003A1C281C0999B4
+:1095E000FAF79FFD041C14D0182000AB1880AA685D
+:1095F00001A86946FFF7E7FD6A4601A9002007F0C8
+:1096000044FE002805D10A2100E00F219020FBF73D
+:10961000EAFC201C0BB03C00D4580000F0BD000058
+:109620009467010010B5002402F044FD1823054999
+:10963000584340188068002802D0FAF771FD0124D1
+:10964000201C10BD9467010080B5024B00F04EF85D
+:1096500080BD0000106701003C001059000080B57B
+:10966000024B00F046F880BD000011670100F8B51C
+:109670000E1C151C00281C4910D048681C4A288064
+:10968000002007E00B181C7A142363439B181B7CF3
+:10969000335401302B888342F4DC3C004C590000E9
+:1096A00024E000200F1C002408600FE0305D05F06E
+:1096B00007FA0E2801D10020F8BD391908720122DD
+:1096C000396882401143081C386001342888A04260
+:1096D000ECDC28887860FFF7B7FE00283C0088594A
+:1096E000000006D00169002903D07F21C9430BF097
+:1096F00052FB0120E3E72C7D01007440010010B50E
+:109700001C1C00280BD020780E2805D214230C4AEC
+:1097100058438018007C00E0002008700EE03C00F8
+:10972000C4590000087805F0D1F92070FFF792FEC7
+:10973000002806D00169002903D07F21C9430BF01E
+:109740002DFB012010BD00007440010080B52720D2
+:10975000C04309F031FC80BD80B52720C04309F02B
+:109760003C00005A000039FC80BD80B5282009F07B
+:1097700042FC80BD000080B5282009F04AFC80BD75
+:109780000000B0B5012828D1012901D0FBF76BFCFE
+:10979000FFF7E9FD02281AD107F013FC124C2169EA
+:1097A00088423C003C5A000015D007F00DFC2061B7
+:1097B00020687D24E40044430DF0AEF9051C07F059
+:1097C0000BFC281A844200D9241A0122211C0A20E9
+:1097D0000DF0B2FDB0BD002109200CF075FCB0BD4C
+:1097E00007210A203C00785A0000FBF714FCB0BDAA
+:1097F0000000D46701007D20024900010860704725
+:109800000000D467010010B5816D041CFF304630A4
+:109810000CF0D1FC201CFF305030A16D0CF0CBFCC3
+:1098200010BDB0B5041C3C00B45A00000D1C02F081
+:1098300059FC201C02F056FC1823044958434018D8
+:109840001822291CFAF770FDB0BD000094670100D2
+:1098500010B5041C09F0BCFB201C09F0C7FB10BDAF
+:1098600010B5041C09F0D0FB3C00F05A0000201C8D
+:1098700009F0DBFB10BD70B50C78061C48884D78EC
+:10988000E200801AE900401A011C414312312420F1
+:10989000FAF791FD211C6143C9004018291C694356
+:1098A000C90042180C4988790C4B3C002C5B000025
+:1098B00053430C4A1360537B34021460527B88710B
+:1098C00001335810084B801A0121490258430028DF
+:1098D00000DA494208188012213870BD20100700B4
+:1098E000EC04000000A00700030300003C00685BDC
+:1098F000000010B5041C06210430FAF770FCFF20AC
+:109900002130FF210155201CFF3041308170417111
+:10991000C173FF2063300155002020616061FF3476
+:109920000134A060E06010BD000070B5061C3C0072
+:10993000A45B0000081C58609A601C1C1E60151C6B
+:109940009B8AE28A311C02F0A1FC281AE06070BDFB
+:1099500070B5041C081C111C1E1C0025EB43221CA6
+:1099600018320BF0F7FB221CFF325032111C0A395F
+:109970003C00E05B00000123201C00F0C6F80C282E
+:1099800010D00125201C0BF0ACFA201C00F019F8B7
+:10999000201C00F00AF8201C00F029F8311C201CC3
+:1099A0000BF017FA281C70BD0000FF211D3109586B
+:1099B00080303C001C5C00008907002901DA01218D
+:1099C00000E00021C1627047011C803100220A635F
+:1099D000074A1268002A09D04288920606D5FF304D
+:1099E0000130C069400701D40120086370470000BE
+:1099F000AC6901003C00585C000080B5011C4A883D
+:109A00000020520505D5FF310131C969490700D44D
+:109A1000012006F0ECFB80BD0000F8B5051C98683D
+:109A2000171C0E1C1C1C002802D1201C0CF031F845
+:109A3000AB69391C301C3C00945C0000A2680BF040
+:109A400095FBF8BDF8B5161C0D1C1F1C002402F078
+:109A500061FB18230649584340184368002B05D082
+:109A60003A1C311C281CFAF78EFB0124201CF8BD7F
+:109A70009467010080B507F03C00D05C0000C5FA97
+:109A8000094908610868002802D17D2000010860AA
+:109A900008687D21C9004143002301220A200DF0FE
+:109AA0004EFD80BD0000D467010080B501210A2071
+:109AB0000DF097FC80BDF8B50E1C3C000C5D00005D
+:109AC0005168141C1268A5680B1C751B5719974226
+:109AD00000D20131426800258A4202DD0125626020
+:109AE00005E09A4203D10168B94200D90125002D51
+:109AF00009D001682160A660A38AE28A3C00485D23
+:109B00000000606802F0D7FB301AE060281CF8BD46
+:109B1000000080B502F007FB1823034958434018A2
+:109B20001821FAF798FB80BD000094670100FEB58C
+:109B3000041C081C111C1E1C0C25012200923C0058
+:109B4000845D0000A26902ABFDF7F0F8002845D063
+:109B500002982721021C0A4001D1084302902149A2
+:109B6000A069084006D00298014003D14921C900EC
+:109B700008430290A06D0299884230D0002E2DD06B
+:109B80003C00C05D00004021201C5830FAF769FB02
+:109B9000029800250026371CA06519E0C00711D5E2
+:109BA000F019001970300571281C04F0D4FF00284A
+:109BB00004D0A01980300572013603E0E01960304E
+:109BC00005703C00FC5D0000013701352D06029850
+:109BD0002D0E4008029002980028E2D18420065100
+:109BE000F0192067E765002500E00B25281CFEBD65
+:109BF000D83A000038B5051C081C111C0024E243AB
+:109C00006B46FFF73C00385E00004FFA002805D095
+:109C1000A86900990140814200D10124201C38BD6F
+:109C200000007CB5056A8669041CC068FBF7B7FBB9
+:109C3000E169FBF7DAFA201CE2694030C18B128936
+:109C40008918C18306493C00745E000001940091AC
+:109C50002869331C82880168E068C06800F0F2F966
+:109C60007CBD0000915E0000B0B5D1685569C86840
+:109C7000141C144B0CE002689A4207D1C268CA60F7
+:109C80000021C1600160FBF73C00B05E000073FB87
+:109C900003E0011CC0680028F0D1E068C068E860FB
+:109CA000E068C560201C4030C18B2A898918C183B7
+:109CB0002068002802D0FFF7BAFFB0BD044804F0C6
+:109CC0004EF9006A07F077FAB0BD3C00EC5E000088
+:109CD000A07E0100A06A0100F1B582B00298066979
+:109CE000011C083660314568019182E01021002096
+:109CF0002F69FBF763FB6861018908390904090CC6
+:109D000001816869006840180821FBF73C00285F62
+:109D1000000057FBE86168697188006820220180B3
+:109D2000716841600199497B89011143C17000212B
+:109D300081702820FBF775FC3988041CC181A86B51
+:109D4000002803D1012080020843E08106223C0064
+:109D5000645F0000391D201C1030FAF7C5FA391C69
+:109D60000A310622201C16300090FAF7BDFA391C81
+:109D700010310622201C1C30FAF7B6FAE189254A78
+:109D80005C201140012292031143405BE1810F21CD
+:109D90003C00A05F000008406084201C2030162199
+:109DA000817100212170E96B002907D02969098B95
+:109DB0000907090F2170A184182181710622601CF6
+:109DC0000099FAF794FA7068000EE071706800026A
+:109DD000000E3C00DC5F0000207270680004000E82
+:109DE00060727068A0727088000AE07270882073D8
+:109DF000708801300004000C708002D1706801305E
+:109E00007060AC61029828622D68002D00D079E75F
+:109E1000029804493C00186000004268044804F0BD
+:109E200074F8FEBD00008FC7FFFF3DDA0000A06A96
+:109E30000100B0B5074D2878032808D000242C7005
+:109E40006968002903D00120FAF7C8F96C60B0BD39
+:109E500000009C7301003C0054600000F8B52B4BDF
+:109E6000D86A002850D02A48011CFF310131CA6845
+:109E70000132CA601A6C002A02D14A6901324A6171
+:109E80000A6901320A61DA68002A04D01F4A0132E5
+:109E90001278002A02D18A693C00906000000132E9
+:109EA0008A610025071D18261A4A6E43743290599C
+:109EB000002829D0B4186069002825D160680028DE
+:109EC00002D00168002905D1A16800291CD00968C9
+:109ED000002919D0002805D0E1683C00CC600000C2
+:109EE0000131E1600068814211D3A068002806D0EA
+:109EF0002169006808180CF0A3FD002807D0064A65
+:109F00000120606174329159381CFAF770F90135FB
+:109F1000022DCBDBF8BD0000447D01003C00086150
+:109F20000000F4670100F8B50F1C0025041C002890
+:109F300025D0201C04F003FE002806D0FFF7FFF810
+:109F4000041CFFF750FB061C07E0201CFFF791FBE9
+:109F5000061C201CFFF76FFB041C002E06D03C00E3
+:109F600044610000FFF74CFB002802D001250120CE
+:109F700007E0002C06D0FFF7EFF8002802D00125FB
+:109F800000203860281CF8BDB0B5C568041C0DF071
+:109F90008FFC207EC10708D5E168A94205D9226956
+:109FA0003C0080610000914202D3E18A0131E182EC
+:109FB000810708D5E168A94205D22269914202D8F9
+:109FC000E18A0131E182400706D5E06821698842D3
+:109FD00002D1E08A0130E082E08AA18A88420DD372
+:109FE000607E3C00BC61000002280BD02068E16864
+:109FF000042207F065FB607E002803D1206808F08A
+:10A00000ABFFB0BD0020E082B0BD000070B5061C03
+:10A010000C232049584345180020A860301C06F046
+:10A0200091FE041C3C00F8610000686033D0012000
+:10A03000A8702C20005D022803D1201C03F045FEEF
+:10A0400010E0616B00290AD0012804D1211C281CD2
+:10A0500003F055FE06E0201C0AF00DFC02E0201C77
+:10A060000AF03DFB0D483C003462000014384168A2
+:10A07000002910D0201C4030028B1207920F012AB9
+:10A0800009D0808B32020009000410438122024370
+:10A090000C200DF0B7F90CF0A5FD606470BD000058
+:10A0A000607B0100FFB5081C3C0070620000111CC1
+:10A0B0000C32202414430C4A83B00CAE526860CE9C
+:10A0C00094700024D47093630D234027BB52946195
+:10A0D000148401220292321C00900191231C291C3D
+:10A0E000039800F066F907B0F0BD3C00AC620000D8
+:10A0F000A07E0100F8B5041C0027114E1DE0E068A9
+:10A10000002870680CD1808800070DD101210C480F
+:10A11000FBF784F9C460E86070688188013102E06F
+:10A120008188228989188180E068391C3C00E862B6
+:10A130000000002801D17168C96D251C6160041CF4
+:10A14000002CDFD1F8BDA07E0100064910B549689A
+:10A15000002305E08A88048912198A804360C06858
+:10A160000028F7D110BDA07E010010B509493C00C0
+:10A1700024630000002449680AE08A880389D21811
+:10A180008A80C368221C002B00D1CA6D4260181C53
+:10A190000028F2D110BD0000A07E0100011C134870
+:10A1A00010B54068002309E082880C89121982806A
+:10A1B0003C00606300004B60CA68002A00D1416621
+:10A1C000C9680029F3D1011C68318164C364436507
+:10A1D00082880823111C08318907890F591A5023D6
+:10A1E000195251188180011C406E4831C16010BD68
+:10A1F00000003C009C630000A07E010010B50749F0
+:10A2000000244B6806E0C268211C002A00D1D96DE9
+:10A210004160101C0028F6D110BD0000A07E010096
+:10A2200070470000FEB5061C0C480C1C40688021DD
+:10A23000817000213C00D8630000C170151C4022D1
+:10A2400081631152816101840020042202920090F6
+:10A250000191291C201C1A1C331C00F0BCF8FEBD07
+:10A260000000A07E010070B5061C1748807802210E
+:10A27000164A884390703C0014640000101C8078DB
+:10A280000843111C887013480024C4707020FBF729
+:10A29000D9F9114D70216860FAF734F83007000FD2
+:10A2A00069689030C8650D4868220880081C28300D
+:10A2B00089604861082008823C0050640000081C46
+:10A2C00038304863203848645A20505406480831D2
+:10A2D0004164446570BD0000070058000700A07E7F
+:10A2E0000100DEC00000003007000A4B10B5586DB9
+:10A2F0000A490022496800244A623C008C6400003C
+:10A300005C654B6E002B01D0DA604A668B6D002BCA
+:10A3100003D00A6E0021F9F79CFF10BD0030070042
+:10A32000A07E0100094910B508880130088001208D
+:10A33000074980020860074CA26D002A3C00C864EF
+:10A34000000005D00521D1200DF06FF90120A06596
+:10A3500010BDB07401000010070000300700FFB509
+:10A3600083B00CAE86468C460E4A43CE0FAD0F1C12
+:10A3700052680C3730CD9770D37096630D263C0031
+:10A38000046500004027BE52059E9661138400229A
+:10A3900002922A1C00900191211C6046734600F035
+:10A3A00029F807B0F0BD0000A07E0100FFB5101C29
+:10A3B0001A1C0C1C191C6023FF3213430C4A83B077
+:10A3C0003C00406500000CAE526860CE93700023E4
+:10A3D000D37093634027BB5293611384032202928C
+:10A3E0000191291C321C0090201C039B00F005F8F1
+:10A3F00007B0F0BD0000A07E0100F8B5051C1148B3
+:10A400001C1C3C007C650000089B079F4068DE0028
+:10A4100081650266002181800D488159201CF9F771
+:10A4200022FF0B4830184168281CF9F71CFF074928
+:10A4300006984968002C88620F8600D12C1C0548BC
+:10A440004C6245653C00B86500000121016501646E
+:10A45000F8BDA07E01009052010000300700FFB55A
+:10A4600083B00DAE60CE0C9F081C111CD219FF32B8
+:10A47000402414430B4A526894700024D4709363B0
+:10A4800040239F5294613C00F46500001484022232
+:10A490000292321C00900191231C291C0398FFF7A3
+:10A4A000B5FF07B0F0BD0000A07E01004C210D4AB1
+:10A4B000414310B58C180C490978884207D105F042
+:10A4C000C7FD0A48018801223C00306600001203E3
+:10A4D00091430180201C30300C23C156407B8142C7
+:10A4E00002DD208D0CF0E5FB10BD58E301003C7C43
+:10A4F000010032800700011C603180B5CA798B7978
+:10A500009A4207D9487A0C2307493C006C66000040
+:10A510005843085A0CF0D0FB80BD2030007B012846
+:10A52000FAD1487A05F040FD80BD0000607B010053
+:10A5300010B5041C1C21F9F703FF0348A080E0803C
+:10A5400020816081A08110BDFFFF00003C00A86653
+:10A550000000FFB5041C002083B00D1C062C0290E7
+:10A5600038D21F4AFF26C10089188978A14203D139
+:10A57000C0008018467804E0013000060016062866
+:10A58000F1DBFF2E24D00193201C0DF0E8F93C00F4
+:10A59000E4660000002805D02421281C01AB02AA93
+:10A5A000FAF730FE1049F00030390F58310609161D
+:10A5B000281C059A019BF9F76EFE061C10D1201C81
+:10A5C0000DF0D0F900280BD0281C6969FAF712FEAB
+:10A5D0003C00206700000298686104E0062C01D36B
+:10A5E000072600E00826301C07B0F0BD0000CC5A5A
+:10A5F000010010B50C1C09F086F8002802D0201CC0
+:10A6000009F0B5F810BDFEB5134D041CAE69002E5F
+:10A610001CD03C005C670000104F30377868604306
+:10A62000011C2888F9F7D2FF39686143411801A855
+:10A63000321CF9F737FE0298296A401828620BD4B9
+:10A64000E969884208D9A969401A2862019801304D
+:10A6500001E000203C009867000002900190019802
+:10A66000FEBDC8740100F8B5002828D00024144DA0
+:10A6700000E0013461000919491949780029F8D12D
+:10A6800063001B1903330722694603F0D4FB002C37
+:10A690000FD0002000993C00D46700000AE042007F
+:10A6A0001218AE5C531852195E71567801309E71C3
+:10A6B0009278DA71A042F2DB00980322023003495B
+:10A6C000F9F77EFEF8BD0000EB620100E8620100D0
+:10A6D000B0B5051C081CFAF73C00106800009DFF8F
+:10A6E000041C281CFAF7D9FE211CFAF7FCFD201CDB
+:10A6F000B0BDF3B544480C1C007881B0012872D17C
+:10A70000FAF782F8414DE86A41490860E86B486011
+:10A710004048FAF7A6F9E86A00283C004C680000B7
+:10A72000FCDA221C0F2001990AF0A4F8384D022708
+:10A730002F63384A64260020AA21083213180130FA
+:10A740000004000C64281974F8D3168100205060AE
+:10A75000101C103010600025171CD2603C00886867
+:10A76000000008E0281CF9F7A2FF413178190135F3
+:10A770002D042D0C0174B542F4D3264D6F630120D6
+:10A780002863244DE86A0028FBDA0B223B1C244E88
+:10A7900003E00132642A00D10022101C0C213C008D
+:10A7A000C46800000139755C1F183F7CBD42F3D1BD
+:10A7B000013800D563200029F4D1184E501CF16BEC
+:10A7C0001A4A101C0138FDD1F06B884201D0011CDF
+:10A7D000F7E702273763164D9021281CF9F7CEFDC5
+:10A7E0003C0000690000281C28302860281C10301C
+:10A7F0002F81E860281C20302861042100E00CE053
+:10A800002983E861ED62756301203063221C892091
+:10A8100001990AF038F800202863FEBD00000857AF
+:10A8200001003C003C69000000300700108E010070
+:10A8300074FF010009570100204E0000E4FE0100F2
+:10A8400080B513281ED0F02816D109F0B5F90028DC
+:10A8500013D10DF0BFFA11F00DFC00220421C42029
+:10A860000CF01CFF3C0078690000094800210078CA
+:10A8700005F03FFD05F093F807490120086080BD11
+:10A88000011C0120FAF787FC80BD00F032F880BD82
+:10A8900000006A5701003CD90100B0B50CF0FFF987
+:10A8A0000B49022448603C00B46900000A48046176
+:10A8B0000120772109030861084D6868800702D4E8
+:10A8C00068682043686009F0C7F96868A043686059
+:10A8D0000020B0BDE060010000300700000107006B
+:10A8E00080B50123032200213C00F0690000022012
+:10A8F0003CF0F1FA002801D0FAF781FC80BD1CB5CC
+:10A90000FCF7F5FAFAF719FE01F003F90024211C0F
+:10A91000684601F0E2FB00AB1878012803D002285A
+:10A9200001D0032801D10CF0B2FC3C002C6A0000DD
+:10A93000013424062416062CECDBFAF709F9FAF7A1
+:10A94000E7FCFAF733FAFAF76DFAFBF7DFFF05F0E9
+:10A950004DFB06F081FC0BF07DF907F029FC114856
+:10A960001021016009010160C90201603C00686AB0
+:10A97000000089000160202101600421016008219C
+:10A98000016040210160802101608900016049006F
+:10A9900001604900016049000160C9030160890B41
+:10A9A0000160F9F741FF1CBD0000001007003C00EA
+:10A9B000A46A000080B53BF04FF83BF07DF9FAF750
+:10A9C0004BF980BDF8B5002500240022002871D085
+:10A9D000434FB9680B1ABB60F868391C0130F86046
+:10A9E000896A002B1EDC0224002906DAFB699842E2
+:10A9F0003C00E06A000006DD3B69984209DD07E0A3
+:10AA0000BB69984201DC012403E07B69984200DDC8
+:10AA10000324786A002808D000207862032C01D132
+:10AA2000022402E0022C00D101242E48012C0079DE
+:10AA300018D13C001C6B0000BB78994215DA3B78BA
+:10AA40007B7039700131B96201D50131B962B96ADF
+:10AA50000125994203D1042804D2013000E00020EE
+:10AA600038710122002933DA27E0032C35D1002682
+:10AA7000002807D03C00586B00001E498140386A0E
+:10AA800008180CF05CF800282CD01B480078400710
+:10AA900005D5F8683969884201DB0323FE56B86A98
+:10AAA000B04212DD01217962397801257970387060
+:10AAB0000138B86288423C00946B000001D000214C
+:10AAC000397100280CDA0720387100E012E007E045
+:10AAD0003879002809D0FF30387106E0002A02D00A
+:10AAE0000CF0F8F83862002C04D0FEF797FD291C12
+:10AAF00008F0FCFBF8BD00003C00D06B0000AC7E11
+:10AB0000010050C300001D75010080B510680028C9
+:10AB100002D000F00AF880BD0348C069806808F0E0
+:10AB2000B2F980BD0000846A010010B5041CC06841
+:10AB3000C068002801D1FAF77AFB3C000C6C0000D9
+:10AB4000E068E169C068231C014AFFF7D7FB10BD2C
+:10AB5000DD6B0000B0B5051C0C210020FAF7D6FC17
+:10AB6000041C006800214160016029880181698816
+:10AB70004181291CFF312131201C03F03C00486C2D
+:10AB8000000077F9291CFF314631201C03F071F9D0
+:10AB9000291CFF315031201C03F06BF9291CFF31B7
+:10ABA0004331201C03F065F9291CFF316331201C5F
+:10ABB00003F05FF904480068002802D0201C3C0024
+:10ABC000846C0000FFF78EFD201CB0BDE462010024
+:10ABD000F8B5051C0C1C04D105211820FAF702FB5E
+:10ABE0004DE0291C12310622601CF9F725FC221CBD
+:10ABF00030320026002100201670344B1B5C2F8A57
+:10AC00003C00C06C0000DF40FF0707D51778013318
+:10AC100001371770671830377B70013101300E280B
+:10AC2000EEDBA87B6072107800282BD02A481E210A
+:10AC3000095C271C1037217201686181C189217765
+:10AC400081893C00FC6C00007973C18AA181018B71
+:10AC5000E181428A211C60314A80828A8A801F49B0
+:10AC60002C31097A002909D002290AD10122626215
+:10AC70006272428BA281808BE08103E001216662D7
+:10AC800000E000213C00386D0000E87B084001D165
+:10AC90000020F8BDA868431C09D0221C1232009283
+:10ACA000931D0232211C01F09CFAA06200E0A66212
+:10ACB000687B291C1D3120740B4820222062201C37
+:10ACC0004230BE73F9F73C00746D0000C1FB4034A4
+:10ACD0002670687E0449607068682C3148600120E5
+:10ACE000DAE7000090580100C86E010091020100EF
+:10ACF00070B5161C0D1C041C002806D00C20FAF799
+:10AD000047FD30C0083806723C00B06D000070BDD1
+:10AD1000002070BD0000011C054880B5006801D00E
+:10AD2000012100E00021FCF7A0FC80BD00000C79AF
+:10AD3000010070B50E1C041C002801D1FAF78FFA2F
+:10AD4000064D2868002801D0FAF73C00EC6D0000A1
+:10AD500089FA04482E60C4600121017070BD0000B2
+:10AD6000A87E01003000070010B5074C20680028BD
+:10AD700001D1FAF777FA054800692168F9F7DFFA97
+:10AD80000020206010BD0000A87E01003C00286E5D
+:10AD900000003000070001200549C00680B50860AA
+:10ADA0000022032154200CF0B8FC80BD00000010EC
+:10ADB000070080B500220421C4200CF0AEFC80BD49
+:10ADC0000000044880B500880249FFF7B8FF3C0046
+:10ADD000646E000080BD0000754B0000C874010067
+:10ADE000F8B5061C31480025C0680C1C002830D07E
+:10ADF0002E482F4F0430007838762C4804304078A5
+:10AE00003881002A0BD0F9F7A5FA1F20B876201C4C
+:10AE10003C00A06E0000F9F7F6F925480430807870
+:10AE2000B87643E02548224984424D6902D26C43FA
+:10AE3000E40B0FE01F48211C806A0090F9F723FC07
+:10AE40000099021C4A43A11A1A4A6943526AC90B63
+:10AE500050433C00DC6E00004418022C01D8002056
+:10AE6000F8BDF9F77DFA1F20B876201CF9F7AEF986
+:10AE7000041C114804308078B8760F4F7D6AAC42CC
+:10AE800004D2201CFFF722FC051C12E0211C281C08
+:10AE9000F9F7FCFB3C00186F0000061C6843201A01
+:10AEA000FFF717FC051C002404E0786AFFF711FC8B
+:10AEB00045190134B442F8D3281CD4E70000C87403
+:10AEC000010030000700C0C62D00011C7D2080B5A8
+:10AED000C000F9F772FB3C00546F00000249886122
+:10AEE0004008C86180BD0000C874010010B5064C60
+:10AEF000211C00200BF042FA211C00200BF00AFA62
+:10AF000000F068FE10BD0000856F000030B50F4DE9
+:10AF10002A78042A19D8002A3C00906F000017D024
+:10AF2000002107E04B005B185C190123E4568442C2
+:10AF300002DA01318A42F5DC8A4200D10139480047
+:10AF4000401840198178024A343A1170C078507024
+:10AF500030BD0075010030B5111C3C00CC6F000005
+:10AF6000383185B09162082111860023141C011C20
+:10AF70005363C068154D0BE00268AA4206D1C2684F
+:10AF8000CA60C3600360FAF7D1FA03E0011CC0682D
+:10AF90000028F1D1221C4032082120683C000870B2
+:10AFA0000000FAF764FB0B49201C4830029004941F
+:10AFB0000391E069828801686E2001920091221C51
+:10AFC0005632035D211C28312068FFF758FA05B07E
+:10AFD00030BDA07E0100D57000001CB507493C00C3
+:10AFE00044700000021C01900091C069131C848809
+:10AFF000016810684833221CFFF708F91CBD0000E7
+:10B00000C96F000010B5141C184803F089F8A0425D
+:10B0100001D0FAF745F90422201C4030A16AF9F763
+:10B020003C0080700000BDF9002802D101202062A0
+:10B0300005E0002020628420005D002803D1201C50
+:10B0400009F023FB05E02068FAF779FA201CFAF7EB
+:10B05000A4FBE0698079062806D1206A0649002809
+:10B0600003D03C00BC70000008690130086110BDCD
+:10B0700048690130486110BDA06A010028610100E3
+:10B080001CB5141C154803F051F8A04201D0FAF782
+:10B090000DF9201C4F300279417900AB12021143A7
+:10B0A000C27812043C00F870000011438278120646
+:10B0B0001143009101784078090208439880201CD0
+:10B0C000694606F03CF9002803D1201C09F0E3FA98
+:10B0D0001CBD2068FAF739FA201CFAF764FBF7E781
+:10B0E0000000A06A01003C0034710000BCB51F4D97
+:10B0F000141C281CDC3003F01FF8A04201D0FAF722
+:10B10000DBF8A06C00AB027881781202114302795F
+:10B110001204114342791206114300918179C079DA
+:10B12000000208439880201C3C00707100006946B2
+:10B1300006F00BF9002817D001280ED1ED6C002D78
+:10B140000BD08020025DE06C0121002800D100219D
+:10B1500060686B460A30F9F723F92068FAF7FBF9C3
+:10B16000201CFAF726FBBCBD201C3C00AC71000083
+:10B1700000F08EFEFAE70000C4690100BCB5041CB3
+:10B18000406A0025002803D06068008B05072D0F5A
+:10B19000221C403208212068FAF77EFAA168019546
+:10B1A0000091211C221C6032206850313C00E87163
+:10B1B00000000D1CE36809F0E2FFE069806B0028E5
+:10B1C00003D1FEF7E8FA002801D0182000E0102093
+:10B1D000064901940091E169082309680A18211CB5
+:10B1E0002831281CFFF787F9BCBD357100003C00F1
+:10B1F0002472000010B5101C3830906204201086B4
+:10B20000002050631068141C40320421FAF74AFAF7
+:10B21000231C211C2831024A2068FFF7BDF810BD0D
+:10B22000657000000EB5C369021C9888054902923A
+:10B230003C0060720000019100901B6810689169E9
+:10B240000322FFF7AEF90EBD0000257200000EB517
+:10B25000021C0649102000900292131C01911068F4
+:10B26000002270330021FFF79CF90EBD000025720B
+:10B2700000003C009C72000010B5031C002100205F
+:10B28000084C00E00131CA00A2589A4202D00B29B2
+:10B29000F8D310BD0B29FCD2C90009190020087190
+:10B2A000012010BD385801008CB500AB86211980F3
+:10B2B000011C04483C00D872000006F0EEFE01902C
+:10B2C000684606F0FAF88CBD0000707C010010B5ED
+:10B2D000041C0D480D4994B00480062218310C302E
+:10B2E000F9F7FBF801A807F0A2F80C2009A94872A9
+:10B2F00000AB1C8002213C0014730000684603F080
+:10B30000DBFF049001A806F0D1F814B010BD0000D6
+:10B31000587C010080B504F045FE05F053FA80BD6D
+:10B3200010B5194CE068002806D0611C0878002888
+:10B3300003D14878FF3008703C005073000010BD06
+:10B34000FF300006000E0870A1680029F7D0002821
+:10B35000F5D10E4854308178002903D1C178FF31EE
+:10B36000817010BDFF310906090E8170F9D1A16904
+:10B370000029F6D0808803F0D0FB3C008C730000DD
+:10B38000044A011C5C320C3205CA801AA269F9F722
+:10B390001FF810BD447D0100F0B5041C4068002575
+:10B3A0000179002285B0C907CB1769490133896A41
+:10B3B000102905D36649C039086B01303C00C873B9
+:10B3C000000008638EE021680E68F678B706FF0F6C
+:10B3D000B609002B049706D063691F1C1B6A5037FF
+:10B3E0009F4200D10125002D02D063691B6A04E051
+:10B3F0003C23594F7343DB190433E3619F883C00BE
+:10B4000004740000002F70D09B79022B6ED0042BA7
+:10B4100017D0062B69D10868A06108890438088113
+:10B4200020680168043101604E4900295DD0049F05
+:10B43000BA425AD14948221C1C3002F065FE05B0C0
+:10B440003C0040740000F0BD0968251CCA794035F5
+:10B45000261CEA738B79221C503213704B796036AC
+:10B4600053700B7993704B78D37009781171002168
+:10B4700029721621B173616A002906D0018B090770
+:10B48000090F3C007C7400002972B1811821B1734E
+:10B49000011C0A31201C06224930F9F733F8606894
+:10B4A00014220188E982011D201C5830F9F72AF87E
+:10B4B000E88A30490840012189030843E8827089FD
+:10B4C0000F2108403C00B874000070812068018999
+:10B4D00008390181206801680831016008210020D5
+:10B4E000FAF783F8051C026820680821FAF7FBF8D0
+:10B4F0002068FAF774F82149C5602FE030E0FFE7D3
+:10B50000216860680A683C00F47400008023A2642B
+:10B510001E55E564557913792D025B1995792D0433
+:10B520005B19D5792D065B19957812781202AA1845
+:10B5300015040A892D0C083A0A8121680A68083224
+:10B540000A60E169021C0A323C003075000001A863
+:10B5500009680BF03EF9E0692B1C0168201C703073
+:10B5600001AA0BF086F9094901226DE72068FAF774
+:10B5700022F8201CFAF74DF970E7846A010068612F
+:10B580000100557200008FC7FFFF3C006C75000082
+:10B59000417000007972000080B502218220F9F725
+:10B5A00093FE80BD704700007047000070470000A8
+:10B5B00070470000704700007047000070470000AF
+:10B5C00080B5C068F9F7FAFF012080BD3C00A8757E
+:10B5D000000080B50021FF20F9F779FE80BD70479B
+:10B5E000000070470000012070477047000070475E
+:10B5F0000000704700007047000080B506219920C8
+:10B60000F9F765FE80BDB0B500250129124C3C005C
+:10B61000E47500000FD10AF00FFC00281DD06178FE
+:10B620003C235943091904310162611C416284625F
+:10B63000041C503406E000290FD13C2050432570F3
+:10B6400004190434002C08D02068002802D02021DE
+:10B650003C0020760000F8F718FFA5800720A071B5
+:10B66000B0BD6861010070B5041C002101F041FC0F
+:10B670006068002801D0216801602068002801D09E
+:10B6800061684160124E7068A04201D160687060CC
+:10B69000E0683C005C76000000280BD0002506E046
+:10B6A000E068E900411814200BF0E2FF0135308812
+:10B6B0008542F5DB0621201C4430F8F7E9FE206BBB
+:10B6C000002801D0F9F786FFE069002801D0FAF7D9
+:10B6D000AFF870BD3C009876000058750100F0B5D9
+:10B6E0001D4F059D3F6801261C1C331C002F00D0F8
+:10B6F0002B1C1D062D0E002906D011780E23164F87
+:10B700000918097A6B4310E02178002913D0FF3122
+:10B710000DE0012901D93C00D476000001311170FF
+:10B7200011780E230F4F490811700918097A6B43DD
+:10B73000DB19595C21702178002902D11178002988
+:10B74000EAD10948C068002805D02178301C0029BA
+:10B7500000D10020F0BD01203C0010770000F0BDBA
+:10B76000000018670100246701005C670100AC7CE1
+:10B77000010084460020F0B5002909D011781A4E46
+:10B78000B170194EB178717031700121316127E0CB
+:10B79000164E0123F15663465F683C004C7700006B
+:10B7A0000023F6560125CC0FB74200D90025002C06
+:10B7B00001D0002DE8D10E4F3B69002B03D0002DA6
+:10B7C00001D1167002E01C4301D111700120012447
+:10B7D000002B00D000243C61002C02D03C00887774
+:10B7E0000000711C397001E0FF3179700028D5D05C
+:10B7F0000120F0BD0000AC7C010090B50A4C002097
+:10B8000093B0206103906846002108F084FD207AFF
+:10B81000022801D1E06B00E0206CE06101203C00D7
+:10B82000C477000008F08AFD13B090BDF46E0100EB
+:10B83000F7B5051C88880C1C82B01F4F002800D16A
+:10B8400000270498002801D1F9F78AFD1B483B1C0A
+:10B850000068211C0268281C0092049AFEF73CF83C
+:10B860003C0000780000061C22D00321049802F05E
+:10B87000B8FF00281BD08078012103F0E4FFA088E6
+:10B88000A18E484300040F49000C088003F081F9A1
+:10B890000122002D00D10022011C0E200BF0C9FE58
+:10B8A000002F3C003C78000008D10021281C02F049
+:10B8B000BDFC03E00026281C00F00AF8301C05B08F
+:10B8C000F0BD0000C1A10000E4650100A87C0100FA
+:10B8D00010B5041CFEF738F80121002C00D100211E
+:10B8E0000E200BF03C0078780000DDFE10BDF8B5AE
+:10B8F000071C0BF094FAFDF7BCFE002602281E4D33
+:10B9000001D02E70F8BDFDF73EF8041CF9F759FC84
+:10B91000002814D0FDF777F8002810D002F0F9FBCA
+:10B92000002801D000243C00B478000000E0154C51
+:10B93000331C211C072216200BF066FF687880213B
+:10B940000843687002F00AFC0028DED128788007DE
+:10B95000DBD4FDF723F9002805D12878C00702D5EC
+:10B96000FDF742F8D1E702F03C00F0780000CDFB93
+:10B970000028CDD02878022108432870211C381CCB
+:10B98000FDF7C1F8C4E7606C01007102000010B55A
+:10B99000124C01202070FEF7F0F90121A068FBF79E
+:10B9A000F4FEA06803F087FF0D483C002C790000EE
+:10B9B000A16807F023FDFBF755FFE06800280DD0D4
+:10B9C000094906200AF024FD084905200AF020FD57
+:10B9D000FBF76EFF002801D005F0F8FC10BD000059
+:10B9E0007869010034630100E13500003C006879AA
+:10B9F0000000B1350000F0B5244D234C687C203C9C
+:10BA00009BB0002808D0022803D820890138208163
+:10BA100037E000276F7434E01C4E68221436311C66
+:10BA20000C3101A8F8F709FE1848338901213C00C0
+:10BA3000A479000044300A1C002B007B00D1021CBA
+:10BA40001206120E0DAF3A709446AA7B931930334A
+:10BA50005B7B7B70EA7301321206120E0027824272
+:10BA6000AA7301D3AF7304E06246012A01D1776063
+:10BA70003C00E079000000E071600648074A803829
+:10BA800081674267682201A9F8F7DDFD278108F088
+:10BA900012FD1BB0F0BD84660100E92E0000F1B577
+:10BAA00086B006990020886106988468808D656854
+:10BAB00001283C001C7A00004CD9354949680591A1
+:10BAC000002947D00022002100230390281C96461D
+:10BAD000944606680496F2788026B2433F2A2ED810
+:10BAE000D706FF0E0126BE40371C049E5209B678C9
+:10BAF0007600B2183C00587A0000264E92001C36A0
+:10BB0000B2583A401ED003E002900289C068511832
+:10BB10000028F9D10598814214D870460130864634
+:10BB2000002B04D06046D86001986246D06003982C
+:10BB30000138039006D03C00947A0000231C24684E
+:10BB40006068029A01909446C9E77046012807D9B7
+:10BB50002A1C00213F2001F051FF051C0698856139
+:10BB6000281C01F0B3FF0E480068002807D02868A1
+:10BB7000018840790231091A3C00D07A0000281C63
+:10BB800001F0E5FCA2680698C06806990B69291CBB
+:10BB9000F8F77CFC034908690130086107B0F0BD83
+:10BBA0000000FC5A0100CC5C010010B5094A80007D
+:10BBB0001258D006C00E0130074B3C000C7B000031
+:10BBC0001C68002CFCDB5A602022121A914019607C
+:10BBD00019680029FCDB10BDE86001003020070077
+:10BBE000B0B5124C00252570A168114807F032FC51
+:10BBF0006561FBF7A3FEE06800280DD03C00487BA0
+:10BC00000000FBF7A4FE012107200BF070FD0A499C
+:10BC100006200AF04CFC094905200AF048FCA068FF
+:10BC200003F067FE0021A068FBF7CDFD05F0ABFB3C
+:10BC3000B0BD7869010034630100E13500003C00CB
+:10BC4000847B0000B135000010B50F4C207C00282B
+:10BC500019D16069002816D1E068002806D00A488A
+:10BC60001C38C068002801D005F0CEFB0121072058
+:10BC70000BF040FDA06803F03FFE0448A16807F008
+:10BC80003C00C07B0000DBFB0120207010BD786908
+:10BC900001003463010070B50E4C0122A368E56811
+:10BCA000268A5D1BB54201D1002206E025680133DA
+:10BCB0002E68A3602660043503C5002A04D1012143
+:10BCC0009D203C00FC7B0000F9F752FB70BD03494E
+:10BCD0000220086070BD000044E30100402007001E
+:10BCE00080B502F0B9F880BD80B502212D20F9F7AA
+:10BCF0003FFB002080BD000080B502212A20F9F71B
+:10BD000037FB00203C00387C000080BD000080B57F
+:10BD100001212B20F9F72FFB022080BD00000149F3
+:10BD20000120086170477C780100F8B5061C0C23DF
+:10BD30000F1C1749584345186C68301C0BF03FFE28
+:10BD4000002F09D1301C3C00747C000003F0EEFE93
+:10BD5000412007551148211CFFF7A6FFF8BD4120DF
+:10BD60000755A06B002803D0201C00F0DFF9F5E791
+:10BD7000201C00F0DBF9AC68002C02D00020A86089
+:10BD8000EDE7301C05F034F93C00B07C0000041CE9
+:10BD9000E8D108210C20F9F7F4FAE3E70000607B12
+:10BDA000010055800000074A80B55070516012783C
+:10BDB000064B80005201D218101840380268081C47
+:10BDC000F8F77BFB80BD786901003C00EC7C00004B
+:10BDD000FC420100B0B50A49041CC870084DE435A6
+:10BDE000A87A0871082C01D3F9F7FCFAA87A05495A
+:10BDF00040014018A1004058F8F760FBB0BD0000BA
+:10BE0000606C01008043010080B500283C00287D63
+:10BE1000000001D009F01DF980BDB0B5051C0C1C57
+:10BE200000200860686809F036FB6C60B0BD10B592
+:10BE3000041C09F034FB2168002900D1646010BDA6
+:10BE400000000021016040607047F8B546683C0082
+:10BE5000647D0000041C406A351C0A35002804D0AB
+:10BE6000201CF9F789FD071C00E00427291C6069E4
+:10BE700000F0F6FC79000F18BA88F18A051C8A4296
+:10BE800005D13088000502D504F0BEFB3CE02868EF
+:10BE90003C00A07D000000280FD001328A4204D16E
+:10BEA000F9F70FFC2168C1600BE0F9F7F0FBF08AAD
+:10BEB000000704D00021296029E0080727D1206865
+:10BEC0002860F08AB8801348016801310160318828
+:10BED00049053C00DC7D000018D429682160002160
+:10BEE0002960E16900290DD0897902290AD1082148
+:10BEF0002186211C3831A162221CDC30084902F065
+:10BF000081F9F8BD201C00F05FF8FAE7201CF9F772
+:10BF1000EFFCF6E73C00187E00002068F9F7BDFB57
+:10BF2000F7E7C4690100B9710000F8B50F1C097882
+:10BF30000124C90721D502F08CFF002801D000247C
+:10BF40001BE00E4E756E002D17D0346E0622311C8C
+:10BF5000381CF8F7D4FA3C00547E0000002805D1C4
+:10BF60000120002C00D00020041C03E0013D063617
+:10BF7000002DEED1002C03D1024EB06E0130B06620
+:10BF8000201CF8BD1079010030B5051C00200649C1
+:10BF900000221C23CC56AC423C00907E000001D114
+:10BFA000081C30BD01324831012AF5D330BDCC6DBB
+:10BFB000010010B5084C00221C235343E358834270
+:10BFC00004D11C20504300190A6010BD01320E2A12
+:10BFD000F2D3002010BDDC7101003C00CC7E0000DB
+:10BFE000F0B5416895B0071C90371391041CF878A0
+:10BFF000251C8035C6072879F60F4A4902284DD1FD
+:10C000000A6D002A4AD04868013048600AF058FF9B
+:10C0100044490861486113990979C9073C00087FC0
+:10C02000000001D441498861206806220690A16879
+:10C0300003A8F8F7EEFA062204A80230E168F8F740
+:10C04000E8FA07A806222169F8F7E3FAB87808ABFE
+:10C05000002198700C96636A201CA0300A1C3C00DA
+:10C06000447F0000002B02D0028A5207520F08AB17
+:10C07000DA7000AB998413990988C90BD984696B6C
+:10C0800010AB1091A96B1191808B29491881096D12
+:10C0900003A8F8F732FA2979686B0BF04DFD29797E
+:10C0A0003C00807F0000A86B0BF067FD3DE000289E
+:10C0B00038D1486D1490002834D0206806220390AF
+:10C0C000A1686846F8F7ABFA062268468018E1686E
+:10C0D000F8F7A5FA05A806222169F8F7A0FA0021C9
+:10C0E00004913C00BC7F0000B97808A810AB017235
+:10C0F0000896E9680B9169794172686B0E90A86B9C
+:10C100001090288DD880688D1881E1690CA80029CD
+:10C1100004D089790170206A0D9001E00721017037
+:10C12000684614993C00F87F0000F8F7EFF902E048
+:10C130002068F9F7CAFA201CF9F7F5FB15B0F0BD35
+:10C140000000C4690100B0B5041CC0680622018962
+:10C150000C3101810568211C0C3D0560A818F8F719
+:10C1600064FA0622A1183C0034800000281CF8F76D
+:10C170005FFAA08F0009E062206303480169201C78
+:10C18000F8F7C7F9B0BD00007C790100F8B5061CCE
+:10C190006036051C707A0C23254958434418A86B57
+:10C1A0000027002806D0A0783C00708000000128FD
+:10C1B00003D1A770707A0AF0B6FD2A1C0C218020EA
+:10C1C0000BF095FBA86B002833D0A07802280BD089
+:10C1D000042822D1A7702F1C4037787802280CD170
+:10C1E000707A0AF0A0FD18E003203C00AC8000004B
+:10C1F000A0701249002014390969F8F790F90FE08E
+:10C200002C1C07E078784121221C08550C21802045
+:10C210000BF070FB6034607A04F020FF041CF1D155
+:10C22000707A4035A98B0002090909043C00E880B6
+:10C2300000000843812101430C200BF0A0FAF8BD57
+:10C240000000607B0100F8B51C49051C886A0130BC
+:10C250008862281C0BF07DFD041C11D02B1C2033A0
+:10C260001E1C5A79201CB4301979144FFDF73C007C
+:10C270002481000089F8AA7A201CB830B179FDF732
+:10C28000B9F8002F04D101212868FAF76DFAF8BD3A
+:10C290006068BC21C08A085328680021FAF764FA54
+:10C2A000002809D00649C86A0130C862002CEED0C7
+:10C2B0003C0060810000201CF9F747FBEAE7201CE6
+:10C2C000F8F73CF9E6E7C4690100A1FF0000F8B502
+:10C2D000164C051F0022211CA03103E02868A04253
+:10C2E00009D02034A142F9D1002A04D102218E20A4
+:10C2F000F9F73C009C81000083F8F8BD0D4FBE7932
+:10C30000606901306061F8F797FDA84207D1A08805
+:10C310000430F8F797FDE0690130E06105E020683E
+:10C3200028602560A0690130A061BE71E5E70000CA
+:10C33000D05C01003C00D8810000201007000029DB
+:10C3400001DB062901DB02207047064BC9005A5C5D
+:10C35000C91802704A7842708A78827049684160D0
+:10C36000002070470000CC5A0100B0B50D1C041C21
+:10C37000052801D3F9F73C001482000075F8104835
+:10C380004068002800D00324102D00D30F2506207C
+:10C390000B496043123140184178807849190906E9
+:10C3A000090E884200D2011C01208840054901384D
+:10C3B000096808400004000C3C005082000002F0B4
+:10C3C00044FEB0BD0000D47A010008200700B0B5DB
+:10C3D000041C0D1C09F0CFFD002803D1201C09F01E
+:10C3E00082FD0561B0BD80B50AF097FD034A0C32AD
+:10C3F00006CA8918081A80BD00003C008C82000023
+:10C40000A07D010070B50B4C049E64680DE065686A
+:10C41000854209D1207A0870E068106020691860B0
+:10C42000207D3080012070BD2468002CEFD10020D9
+:10C4300070BD0000A46E010010B5041C3C00C88251
+:10C4400000002030817B20690430FDF764F9011C75
+:10C450006220025B636A4034207802F0CEFD10BD9A
+:10C4600000000B4910B508888A690A2350435843D5
+:10C470000ED0084A53899488D2881B1952043C0074
+:10C4800004830000520C9A18C96806324A430A21F4
+:10C490005143F8F7FDF910BDC874010030000700E2
+:10C4A00010B5431C01D1104810BD0F4A0E4B943AF1
+:10C4B0001268443B1B7A10E0546884420CD1002976
+:10C4C0003C00408300000FD1022B03D1D47B022C0F
+:10C4D0000AD204E0002B05D1D47BE40704D412680F
+:10C4E000002AECD1002010BD101C10BD0000386FD8
+:10C4F0000100011C0120012900D00020704700B577
+:10C50000021C3C007C830000FDF7CEF8002808D018
+:10C51000101CFFF7F1FF1823034958434018006926
+:10C5200000BD002000BD00009467010080B5002818
+:10C5300000D10848074900685031097A002902D023
+:10C54000022904D13C00B883000000E0012100F082
+:10C5500006F880BD002080BD0000A46E0100124AD4
+:10C56000124B127A2C3B002A03D15A68002A18D1A8
+:10C5700004E0022A02D19A68002A12D100207047F2
+:10C58000C27B8A4201D03C00F4830000032A0AD116
+:10C59000827E012A07D1027F01321206120E027733
+:10C5A000C37E9A42EED200680028ECD170470000AA
+:10C5B000F46E0100F7B58446002001270024002511
+:10C5C00088B007E06246525D3C0030840000002ADB
+:10C5D00005D0AB006E46F25001358D42F5D3002DEB
+:10C5E00000D00120002828D00027164C6E4622E0FB
+:10C5F000201C00F030F8012801D0072806D10021C6
+:10C60000201C00F034F8316888423C006C84000043
+:10C6100001D2022714E02068C9000C18083C201C35
+:10C6200000F01CF8072807D10120012D00D00020C0
+:10C630002468002800D10834013D0436002DDAD1E9
+:10C640000A9804600BB0381CF0BD00003C00A884C0
+:10C650000000205201000068002901D08002800AF9
+:10C66000704710B540688000440F082C03D30221A6
+:10C670008720F8F7ECFE201C10BD002902D00068CE
+:10C68000800D704740688005800D704700003C00B9
+:10C69000E484000010B540684001440F052C03D32A
+:10C6A00005218720F8F7D6FE201C10BDF8B5051C23
+:10C6B000880A00901C488E05C069B60D171C1C1C0A
+:10C6C000002805D1184881698D421DD0856111E08F
+:10C6D0003C0020850000FDF7E8F8154909780E298F
+:10C6E00007D1002805D0114950310623C956F9F762
+:10C6F00006FA0E490020C8618D61291C201CF8F73C
+:10C70000E2F87943201CF8F7DEF808484161201C64
+:10C7100000993C005C850000F8F7D8F805484069AE
+:10C720000A18A24201D2401801E04018001B800202
+:10C730008019F8BDAC7C010011670100F8B50F1C31
+:10C74000061C141C1D1C07F0A1FC0E2809D1201C7E
+:10C7500002F0FCFB3C0098850000002804D008484B
+:10C76000007802F0E4FB041C0121002EAC7200D022
+:10C77000391C201C02F007FC2860002028726C7213
+:10C78000F8BD90570100031C0A4810B50024021C94
+:10C79000A03203E081883C00D4850000994209D290
+:10C7A00020308242F9D1002C04D102218E20F8F7EA
+:10C7B0005DFE002010BD0000D05C0100FFB5061C2E
+:10C7C000002081B010601F1C0125141C301CFFF7D5
+:10C7D0006DFF052812D202A33C00108600001B5CEE
+:10C7E0005B009F440000030303030800391C301C56
+:10C7F000FFF755FF03E00298F8F7EBF801302060EF
+:10C8000004E005218720F8F734FE00252068802801
+:10C8100004D906218720F8F72CFE3C004C86000046
+:10C820000025281C05B0F0BD70B5174C606C0028C1
+:10C8300001D001201DE0164E144D3188A06C002857
+:10C8400008D02878814205D9F8F74CF80138FAF772
+:10C8500051FE0EE0E06C00280AD000203C008886E3
+:10C860000000FAF74AFE29783288914204D99042B2
+:10C8700002D9101C00E0081CFAF7DFFDE16B441A36
+:10C880000AF081FB201A00D5002070BD0000447D15
+:10C890000100F8600100FC600100FFB5274E3C007C
+:10C8A000C4860000041CB0790F1C151C81B00090D8
+:10C8B0000AF06CFBC11923480768002F05D10A2133
+:10C8C0008020F8F7DFFD05B0F0BD1E4840688446C3
+:10C8D000002801D100220EE082680368AB4207D134
+:10C8E0003C00008700000379A34204D10B21802083
+:10C8F000F8F7CBFD23E0C0680028F1D1134BF868AE
+:10C9000018603D603C71B96004988D1A38616046CA
+:10C91000002305E08468A41AAC4203DA031CC06853
+:10C9200000283C003C870000F7D1F860002B08D1BC
+:10C9300007483B1C47600848064A00880AF08AFB03
+:10C9400000E0DF600098B071C3E70000201007002E
+:10C950007C5D0100213801002C740100F3B583B027
+:10C96000041C09D03C0078870000201C049909F0C1
+:10C970008EFB002803D0201C303005B0F0BD0AF03B
+:10C980000EFB1E4A0026049F019600900292029C14
+:10C990000025391C201C143002F0C5FA002801D0F3
+:10C9A000261C03E001353C00B48700001C34042D34
+:10C9B000F2D3002E22D10198134F013001900228AA
+:10C9C000E8D30121C906029A00201369009CE31AEA
+:10C9D0008B4201DD191C161C01301C320428F4D3D3
+:10C9E0003068002801D0F8F73C00F0870000D3FE43
+:10C9F000301CFDF74AFF301C143006220499F7F76B
+:10CA00007AFE009C301C3461BDE7306A010034427C
+:10CA10000100094910B54C6903E0E168814203D087
+:10CA20002468002CF9D101E0002C3C002C88000087
+:10CA300003D102210220F8F737FD201C10BD0000B1
+:10CA4000FC5A010010B5C30706D5084B5C690C43BE
+:10CA50005C611C7E14431C76800706D5044843693C
+:10CA600019434161017E1143017610BD3C00688885
+:10CA70000000FC5701001858010070B50D1C041C83
+:10CA8000161C00F008F8A007C0170130321C291C42
+:10CA900000F021F870BD10B5C30706D5084B5C69DE
+:10CAA0008C435C611C7E94431C76800706D53C0059
+:10CAB000A4880000044843698B434361017E91438D
+:10CAC000017610BDFC570100185801000322111F08
+:10CAD00080B5012000F002F880BD000030B5151CC3
+:10CAE0000C1C002887B002D01C22224901E02249F8
+:10CAF0003C00E08800001C226846F7F764FE0599B8
+:10CB000000AB1A7E8C43201C9543029A291C0240DC
+:10CB10000292019A02400192009A02400092039A06
+:10CB200002400392987C08409874587C08405874DE
+:10CB3000187C3C001C89000008401874D87C084010
+:10CB4000D87402991048416101AA06CA91438161D3
+:10CB50008168019A114381608168009A91438160E4
+:10CB600000AA06CA11434268114341604168039A12
+:10CB7000914341603C005889000004A80BF001F883
+:10CB800007B030BD0000FC5701001858010010002C
+:10CB9000070010B5041C011C012008F0E0F9002C6E
+:10CBA00002D003F01CFF10BDFEF7D1FC10BDF0B5A4
+:10CBB0000C1C010E01233C00948900001B06090691
+:10CBC00099429FB028D11749084000211A2800D364
+:10CBD0000221002919D1C500134F10A8EE19B288FF
+:10CBE0002168F7F79DFD201CF8F7EAFD7A5901A9A5
+:10CBF00010A8F7F707FD00283C00D089000005D0F9
+:10CC0000109801A90190B07900F09DF81FB0F0BD17
+:10CC10002A20F8F75EFC201CF8F7D5FDF6E7032183
+:10CC20002A20F8F756FCF1E700007FFFFF002445BB
+:10CC3000010010B50C1C802802D03C000C8A0000BA
+:10CC4000812808D103E0201C00F006F910BD201C4B
+:10CC5000F8F7BCFD10BD03212C20F8F73DFCF6E7EA
+:10CC6000F0B50C1C00218BB00A91010E01231B06AC
+:10CC7000090699422AD118490840061C3C00488AF6
+:10CC80000000062E01D3072124E02089F8F7F1FEE9
+:10CC900022892168051CF7F74CFD201CF8F799FD47
+:10CCA000F4000F4E281C0AAA69463359F7F7B4FC62
+:10CCB000002801D0012807D12868694600903C006F
+:10CCC000848A0000A01900790A9A00F009F9281C4A
+:10CCD000F8F7B0FE0BB0F0BD01212B20F8F702FCF5
+:10CCE000F8E700007FFFFF00284601000A1C010E44
+:10CCF00001231B060906994280B508D05B009942C2
+:10CD00003C00C08A00000BD10006000E111C00F090
+:10CD10000EF980BD05490140101C05F0A2F980BD47
+:10CD200001212D20F8F7E1FB80BD7FFFFF0080B5DA
+:10CD3000011C0F2000F013F880BD80B5011C0420F9
+:10CD400000F03C00FC8A00000DF880BD80B5011C9D
+:10CD5000172000F007F880BD80B5011C012000F00D
+:10CD600001F880BDF8B5041C061C802084430F1C0C
+:10CD7000192C01D3F8F7EAFB0848045D211C0020B8
+:10CD8000F8F750FD3C00388B0000051C221C391CB4
+:10CD90000068F7F7DAFC2A1C311C0720F8F711F9B4
+:10CDA000F8BDF4450100F8B50D1C161C041C1F1C31
+:10CDB00008210020F8F739FD142201680E4B724358
+:10CDC000D2180C71127C3C00748B00004A710D600B
+:10CDD0000B4A8F7112687F2A03D95205520E8023A5
+:10CDE0001A43CA71074A0023516801315160021C7D
+:10CDF00081210020F8F708F9F8BD00007440010017
+:10CE0000FC5A0100806E01003C00B08B0000B0B500
+:10CE1000041C08210020F8F70EFD218BE27D051C83
+:10CE200009055207520F490C006811438180A17D0A
+:10CE300014230E4A59438918097CC171E16A0160C3
+:10CE4000E168281CF8F717FC0A483C00EC8B00004E
+:10CE50000068002801D0F7F7F1FB07490431886822
+:10CE60000130886000212A1C0020236BF8F7D2F8DB
+:10CE70000120B0BD744001007C6E01000148806853
+:10CE800070470000806E010010B5041C3C00288C27
+:10CE9000000092B0016868460822F7F762FC00AB18
+:10CEA00098884007400FD87798884004000D188470
+:10CEB000D888588400980D900594208908382081DE
+:10CEC000059801680831016000200A900C903C0030
+:10CED000648C00000021112009F078FB0549064A06
+:10CEE000086801300860022102A801F0CDFC12B0F0
+:10CEF00010BD0000806E0100558B0000021C012057
+:10CF00000006084380B52B210AF08AFD80BD000091
+:10CF10003C00A08C0000F7B5041C061C8020844354
+:10CF2000171C062C01D3F8F726FB0B48055D291CBE
+:10CF30000020F8F78CFC041C006801992A1CF7F704
+:10CF400016FC391C201CF8F7A2FB221C311C002304
+:10CF500002203C00DC8C0000F8F768F8FEBD000001
+:10CF6000204601000A1C011C80B500230120F8F7AF
+:10CF70005DF880BDFFB59FB01F1C051C0A301E90D8
+:10CF80001CAA1DA90AF000FF002871D0002F09D0AB
+:10CF90000A2100203C00188D0000F8F75EFC0668AE
+:10CFA000041C301DFAF7AFFA05E004210020F8F761
+:10CFB00054FC0668041C28893649012208807080C8
+:10CFC000E88814A9308019A8FCF7F5FCFCF7FFFBF2
+:10CFD000011CFF3121313C00548D0000201C01F068
+:10CFE000EFF819A9201C01F0EBF814A9201C01F09E
+:10CFF000E7F8201C2099FDF74BFD0022022101F0EB
+:10D0000033FD061C1C9900208861301CF8F71CFABF
+:10D01000002E0BD0307A00283C00908D000002D00A
+:10D020004021084330721C980222816911438161BA
+:10D0300004E01C9902228869904388611DAA06CAEF
+:10D0400001A805F058FB09A8002F02D00222427265
+:10D0500001E000214172049401A83C00CC8D000045
+:10D0600004F07AFB01211C9808F0C8FF002F04D0BF
+:10D070001C980122816911438161A8881C9C01F0E0
+:10D080009FFE021C211C00E004E00748408809F0D4
+:10D090001FF804E03A1C00210520F9F73C00088E37
+:10D0A00000009BF8002023B0F0BDFC600100987CDC
+:10D0B0000100F8B5041CC0680568A01D01F095FFCB
+:10D0C000002845D0211C1431201C6A460AF055FE68
+:10D0D00000283DD0FCF77DFA002839D100983C00AB
+:10D0E000448E00004B21095C012934D1042609F04B
+:10D0F00019F9688800281BD1A8880321890388436F
+:10D1000015490026088001220221206901F0B8FC9F
+:10D11000041C14D000988069800710D5F8F79AF99C
+:10D120003C00808E0000201CF8F7DDF8002809D1B3
+:10D13000F8F77FF901260098022281699143816105
+:10D14000002101E00098022108F061FF0098806949
+:10D15000A988C207D20F301CF9F745F8F8BDFA606C
+:10D1600001003C00BC8E00001CB5046900230022B5
+:10D17000002C13D14B24245C022C03D1022905D0AE
+:10D18000012203E0022901D101220123002A05D056
+:10D19000009004200193694609F036FA1CBD000096
+:10D1A000B0B5041C3C00F88E0000F2210F200C4D9D
+:10D1B0000AF099FB287808280BD201A31B5C5B00BE
+:10D1C0009F440703030808080808002C01D105F054
+:10D1D000BCFBB0BD012CFCD1FF2007F038FAB0BD7C
+:10D1E0000000746601003C00348F00008CB5054AD5
+:10D1F00000AB1172009019716946082009F00AFA13
+:10D200008CBD0000AC7C0100F3B5041CC06806278F
+:10D2100085B0066809F026FF984948632069032114
+:10D2200001F008FC964D00283C00708F00004DD0A6
+:10D230009549403109798078814247D1012120699F
+:10D2400001F0FBFB02902069322101F0F6FB019016
+:10D25000021C8D480299FCF746FF002836D00023B7
+:10D260008A480299019AFCF7E4FE3C00AC8F00006A
+:10D270000B282ED1864A51887089414003910B1C9E
+:10D2800084490B4025D150800399171C00290BD0ED
+:10D290000399480502D5381CFCF740FE039988061F
+:10D2A00002D5381CFCF724FE2A2120693C00E88FB7
+:10D2B000000001F0C8FB00280DD08078E9698142A8
+:10D2C00009D0E861381CFCF716FE381CFCF707FE95
+:10D2D000381CFCF726FE0027201C20300490407AE2
+:10D2E000082871D10AF0D1FC0020686100233C00BD
+:10D2F000249000002B61A86866490130A86030893D
+:10D300005C31888201F07AFD62495C310861226AF1
+:10D3100004981821007A01F033FEE16A4018039066
+:10D320005C48006A00280DD0002F0BD1594801231A
+:10D330003C00609000005C3001681B0700223068F0
+:10D3400009F049FF002800D105270021A06B0AF051
+:10D35000CEFC0021206C0AF0E8FC4F4B03CE039A70
+:10D360005C33FCF788FD00204C4E0521B06320693A
+:10D3700001F03C009C9000006FFB011C01D1F060AB
+:10D380001CE00120F0608878454A01321070C878AE
+:10D390005070474A1070306900280AD04A780879DE
+:10D3A000053109F0DDFA3169F7F785F9F0680028F1
+:10D3B00004D03B4A3C00D89000000132107800288D
+:10D3C00008D10020A861716A002903D0201C143004
+:10D3D000F7F774F9344A5C321069316A411800E099
+:10D3E00020E00A23D0680A2209F0FBFE002807D0BB
+:10D3F0002D4A316A5C323C0014910000D068401A1A
+:10D400001169401A7060294A5C32D0683062F06954
+:10D41000002804D0FAF700FD0120FAF7A1FCFAF782
+:10D4200081FC2748006803F007F90698002803D11B
+:10D430001E4E0023B36016E03C00509100001C4ECD
+:10D440000120B060069801684068B06519487165B0
+:10D450005430C088002809D0B169002906D001F0F5
+:10D46000DCFC011CE06AB269F7F72FF9002F15D137
+:10D4700012480169002908D101213C008C9100006B
+:10D4800001612A68002A03D000210020F7F720F963
+:10D4900009490023CB622B616B6106F0B5F807B038
+:10D4A000F0BD6B680648002BF9D0021D111C381C1A
+:10D4B000F7F70FF9F3E70000447D01003C00C89145
+:10D4C0000000F4680100F467010003080000F86040
+:10D4D0000100C467010008B5F8F72FFD009000AB0C
+:10D4E000188800280CD005F050FF00AB5988188828
+:10D4F00005F06DF9FEF797F80320FBF70EF83C00F6
+:10D500000492000008BD0120FFF7B2FB002008F0E4
+:10D510008DFEF7E7F8B54F498C68206A00680578FA
+:10D52000FCF768FA002812D02A07920F0121012A7D
+:10D5300000D00021002903D02906090F0B2906D1AC
+:10D540003C00409200002A21095D08189030007BC1
+:10D55000F9F70DFC414F3C3FB86B796BF7F7C0F81A
+:10D56000A06C0026C660606B800804D0B8690130EA
+:10D57000B86106F0DCF9394D28698005800F08D1C3
+:10D5800078693C007C920000042101307861606B76
+:10D590004008400008436063B86A002803D0606B0D
+:10D5A000082108436063201C203000903968F7F799
+:10D5B0009AF80320000228602B498868A063C86895
+:10D5C000E06308793C00B8920000C006C00E251C3C
+:10D5D000403528714879687123483C384662009884
+:10D5E000807A01F05EFD00210028214A01D01178E7
+:10D5F00003E09378DB0700D55178A971002804D0A7
+:10D600001B49143108683C00F4920000206400E0DB
+:10D610006E80B86AC00702D5FF202871AE71E6613E
+:10D62000B8680130B8607968884203D00B21852042
+:10D63000F7F7C4FF0D498868C06C8860FB6A002B4F
+:10D640000CD00E4AD47B002B3C003093000002DD4E
+:10D650007F2C05D201E0002C02D0D47BE318D373D9
+:10D66000FE62C968884203D105218520F7F7A9FF2A
+:10D67000F8BD247E010000400700A0800700E8807C
+:10D68000070040000700FEB5304C3C006C930000E2
+:10D69000A06B216BF7F733F82D493C318E68708B06
+:10D6A000062804D2E0690130E0610E203085284967
+:10D6B0003C310D68002D03D103218520F7F784FF4D
+:10D6C000244845613562318DEF6804393C00A893E8
+:10D6D00000000C0401210291240C002101911D483D
+:10D6E0003C30808AA04203D32C81EE6000240BE002
+:10D6F000002F04D103218520F7F769FF04E03D1CCA
+:10D70000201A0404FF68240C0298002804D03C006E
+:10D71000E493000012490120086100200290019862
+:10D7200001300190002CDDD10C480C4C3C300760DE
+:10D7300001983065B564306A0068606260680130E5
+:10D740006060A1680131884203D00A218520F7F783
+:10D750003C002094000041FF04480068A062FEBD28
+:10D760000000E87D010000300700786E0100B0B5D0
+:10D77000051C01210F200AF0F8F8F2210F200AF011
+:10D78000F4F80C480C4C0068143C00280CD0E078ED
+:10D7900001283C005C94000009D00122291C0F20C4
+:10D7A0000AF0ACF86078022806D0012003E0607827
+:10D7B000022801D000206070B0BD00009866010012
+:10D7C0000222002880B500D1032203490E200AF06E
+:10D7D0009BF800203C009894000080BD000050C3DE
+:10D7E0000000F8B50023002200282ED00689046826
+:10D7F000751E2D04B61AF6072D0CF60FB4460EE072
+:10D80000A75CA618023300977778A7540232120457
+:10D81000009F120C00293C00D4940000777001DDB9
+:10D820008B4215DAAA42EED3C068002810D00289D4
+:10D83000002AF9D06246002A0BD00268665D17788C
+:10D8400002336755167001220029D2DD8B42D0DBEE
+:10D85000F8BD0022CDE700003C0010950000B0B5F7
+:10D86000041C0D1C0120F8F75EFB0D490028C8615F
+:10D8700014D062684260A27C0272A268C260E26850
+:10D880000261228A02750A1D0A621268002AFFD10B
+:10D89000026048600020A86001203C004C95000018
+:10D8A000B0BD0120FAE70000A46E0100B0B5041C71
+:10D8B00040680D1C431C02D1211C094808E00020CF
+:10D8C000F8F734FB064994390861002803D0211C7D
+:10D8D00000F048FE00E00120A86001203C0088958F
+:10D8E0000000B0BD0000386F010080B50121972015
+:10D8F000F7F785FE002080BD000038B50A1C143201
+:10D900000092131F051C083A0C1C16314068FEF7E4
+:10D910006CFE002801D0002000E0012069683C0076
+:10D92000C4950000A0606160012038BD10B50C1CDA
+:10D93000017A00290FD0012909D0022903D1002141
+:10D9400000200AF073FC00202071012010BD416806
+:10D9500001200AF06BFC00F00DF9F4E780B50449F2
+:10D960003C000096000048680138486001D107F08B
+:10D970006EFB002080BDAC790100B0B5051C0C1C0D
+:10D9800000F04FFEA060686860600120B0BDB0B5D7
+:10D99000051C0C1C00F06FFEA06068686060012030
+:10D9A000B0BD3C003C960000081C00210022002372
+:10D9B0000EC008C001207047F8B50F1C041C207968
+:10D9C000202801D2202020716679002E02D12579ED
+:10D9D00000220DE02579291C301CF7F74FF80029AB
+:10D9E00001D1321C3C007896000004E0704380199D
+:10D9F00005062D0E321CE079291C00F0F2F9207A80
+:10DA00002F49C007C00F08602E480078C00743D5D3
+:10DA1000A1792C4AC80748D42C4E16608B072B4896
+:10DA200008D5CC0801233C00B4960000A340036055
+:10DA3000490704D52849116001E0402101601368BD
+:10DA4000264AB34210D1546801680C4354601468EC
+:10DA50000C4001D0516100E0916154680C43546066
+:10DA600094682143916013E03C00F0960000547CE0
+:10DA700001680C435474147C0C4003D0147C0C4398
+:10DA8000147402E0147C8C431474547C0C4354745E
+:10DA9000947C21439174B34205D100220168032094
+:10DAA000FFF78DF809E0006800213C002C9700008A
+:10DAB0000206120E0320FFF785F801E00B48106004
+:10DAC000002038717D71F7F7E9FD0120F8BD0000F5
+:10DAD000CC5C0100040007005C5B0100B99B000006
+:10DAE000585B0100959B0000100007003C00689700
+:10DAF0000000559B0000B0B50D1C04300024FEF75B
+:10DB0000D6FA01206C60B0BD0000F0B5077A43681A
+:10DB1000041C0E480E1C00680125011C9BB006E089
+:10DB20004A689A4202D18F76002502E009683C00DB
+:10DB3000A49700000029F6D1002D05D1217A0129F2
+:10DB400002D101A9F8F7A8F86068043621C61BB015
+:10DB50000120F0BDA46E010010B50C1C08F0AEFC55
+:10DB60006060012010BD000010B50C1C07F084FAA5
+:10DB70003C00E097000004F054FF002060600120AA
+:10DB800010BD0020C043486001207047000010B560
+:10DB90000C1C0079FAF707F8002801D0002000E0FB
+:10DBA00002206060012010BD00001CB5064C2068FA
+:10DBB00000283C001C98000007D009F0C5FA01902D
+:10DBC000206841686846F6F7D6FD1CBDAC790100B7
+:10DBD0000149086070470000AC7901000EB5064BA2
+:10DBE0001B68002B06D00290009101926846D9680C
+:10DBF000F6F7C1FD3C00589800000EBD0000AC795E
+:10DC000001001CB5041C07F04CFA064841680131BC
+:10DC10004160009400210191006801686846F6F7B0
+:10DC2000ADFD1CBD0000AC79010080B5F8F7A3F88C
+:10DC300080BD80B5021C3C00949800008021032028
+:10DC400000F05CF8011C034800224369F6F79BFDD5
+:10DC500080BD0000A46D0100F8B50C1C1349051C23
+:10DC60000868161C0130086000202061221C103258
+:10DC7000281D0021071C00923C00D098000003F0F2
+:10DC8000DEFE20712069002810D00104090C00205C
+:10DC9000F7F779FE3060291D03C9A060E1603068A4
+:10DCA0000168009A381C03F0CAFE20710120F8BDFB
+:10DCB00000001075010080B5021C3C000C990000AA
+:10DCC0000821042009F04EFF032080BD10B5074A4B
+:10DCD0000C1C516801315160011C1031C2680430C4
+:10DCE00003F0F0FE2071002010BD0000107501004F
+:10DCF000044980B581610821021C03203C00489939
+:10DD0000000009F032FF032080BD95D80000F7B570
+:10DD1000071C161C0621002082B0F7F73AFE051CEE
+:10DD200020480078062800D928812C680020A77098
+:10DD30000399E170311C03E00A8910180F1C3C00A4
+:10DD400084990000C9680029F9D16B4601AA211DF8
+:10DD500000F034F800AB187860711878002817D0FC
+:10DD600011484068002808D019780020F7F714FE01
+:10DD7000011C381CF7F730FD0AE03868002802D192
+:10DD80003C00C09900003F600120B86100AB1978E9
+:10DD900038894018388100AB9888311C02382080BF
+:10DDA000281CF7F71CFD281C05B0F0BD0000C85C5E
+:10DDB000010001794279008889180239401A7047B8
+:10DDC00000003C00FC99000070B5084D2C78AD783F
+:10DDD0002018061C002D03D070190138013DA843FE
+:10DDE0001080801B18700C7070BD0000C85C0100B2
+:10DDF000B0B504680C4A218852780231914211D2A0
+:10DE0000551AF7F73C00389A0000C9FD016800294F
+:10DE100002D10060012181610189491901812088B5
+:10DE200040192080607940196071B0BD0000C85C65
+:10DE3000010080B500220621F12009F0A2FE80BD7C
+:10DE40000000031C02483C00749A000003704170FB
+:10DE500082707047C85C0100B0B5081C0968151CC9
+:10DE60008C78F7F785FD0449A0000958002902D0F5
+:10DE7000281CF6F79EFCB0BD846D0100FEB5041CA5
+:10DE8000C07AA17AC607F60F3C00B09A0000321C97
+:10DE9000201D01F03CF86069254FC10737D5B869EE
+:10DEA000002801D0F6F787FC2068056828888007DD
+:10DEB00034D101AA02A9281C01F00BFC281C01F096
+:10DEC00012FC0078C0070AD460693C00EC9A00009C
+:10DED000800726D4331C291CA27A20697D69F6F7B5
+:10DEE00072FC1EE000AB187A002803D0012806D08F
+:10DEF000022816D1281C796AF6F761FC11E000AB04
+:10DF000018790E2801D00F280BD1281C3C00289B23
+:10DF10000000396AF6F756FC06E00007800F03D1CF
+:10DF20002069F969F6F74EFC786B2121013078639E
+:10DF3000221C802009F031FEFEBD287A01000B4929
+:10DF400018B50878C00711D50A4A101C20303C00CB
+:10DF5000649B0000847900AB1C70C079587008780D
+:10DF600040231843087005480078087000AB1888F3
+:10DF7000D08418BD0400070000100700E060010015
+:10DF800070470000054910B58879054B1A7C054C8F
+:10DF90003C00A09B0000246862401A74887110BD88
+:10DFA00000002010070010000700585B0100044922
+:10DFB0000A6804480068024001D0886170474861DF
+:10DFC000704710000700585B0100021C012000068A
+:10DFD00008433C00DC9B000080B52A2109F0E6FDE7
+:10DFE00080BD000010B5041C002903D0812907D191
+:10DFF000812000E08020221C2C2109F0D7FD10BDDB
+:10E0000002212C20F7F74CFB201CF7F7C3FC10BDB6
+:10E0100080B5B4B03C00189C0000012806D08228CE
+:10E020001CD11AA807F035FC34B080BD812913D16A
+:10E030000D480C4A816900685032814202D0D16A91
+:10E04000012902D01178022902D107F00AF9EBE781
+:10E050006946F7F75AFE3C00549C0000E7E70121AF
+:10E0600000E002211820F7F721FBE0E7A46E010091
+:10E07000B0B5041C0068174D9AB0686308F03EFA0A
+:10E0800020791449134A50392C3A02280AD1906851
+:10E090008002A861C868E8613C00909C00000220F2
+:10E0A000287207F0E4F81AB0B0BD031C0020002B62
+:10E0B0000BD152689202AA610A1C8968E961287230
+:10E0C00010686946F7F727FEEDE7A861012028727E
+:10E0D0002870002006F07DFAE5E73C00CC9C0000AB
+:10E0E000F46E0100704700007047000080B5012108
+:10E0F0000720F7F7E1FA80BD70470000F8B500246B
+:10E10000194A0026D56811680435081C916002E0A0
+:10E11000011C4019086053688342F9D83C00089DEF
+:10E12000000001341032032C0E60EED3F6F7F1FF3D
+:10E1300010481049124C0860104900200122192390
+:10E140005B010C2543431B1945434A511F1C6D18A5
+:10E15000AB606B6000251E1C14369E60331C3C00B7
+:10E16000449D00000135272DF8DB013003289F6016
+:10E17000E8DBF8BD2057010014C80100B4CF01004E
+:10E1800018D90100B8CF0100B0B5074C251CC03527
+:10E19000286B1E2100F0F2F9A26B201CDC30296BE9
+:10E1A0003C00809D000000F0B6F9B0BD0000C469DD
+:10E1B00001000020102210B50A4905E00C2343435A
+:10E1C0005C180C34CC5001300F28F7D30C23584383
+:10E1D0000950044841600160028200218160C160F1
+:10E1E00010BD3C00BC9D000084E2010044E301003E
+:10E1F00010B5084CA06A002803D10748F9F7E8FEDB
+:10E20000A0620448443000680121F9F795FC60627F
+:10E2100010BD0000606C0100CD260100FFB50D1C93
+:10E22000041C1E1C3C00F89D000081B00A9F1C21AC
+:10E23000F6F74DFB0398A061256025612681A68233
+:10E24000E76005B0F0BD70B50D1CA421041C0830BA
+:10E25000F6F73DFB201C44300622291CF6F765FB2F
+:10E2600018483C23411C3C00349E00006162417808
+:10E2700059430918897A062901D1A06202E0211CBC
+:10E280004D31A16241783C235943081804300F49AD
+:10E2900020620B88002B15D0AC20005D0B4A183291
+:10E2A00000028018B030E0603C00709E00008D6875
+:10E2B000002008E0E268C1005450E668820052196C
+:10E2C00071184A6001309842F4DB70BD000068614B
+:10E2D0000100587501001FB5041C6034617A031CED
+:10E2E000806A084A0291019003923C00AC9E0000B3
+:10E2F000E279181C20300092447B827B5E20C15A58
+:10E3000018690430231C02F07FFE1FBD394E000047
+:10E31000B0B50B1C01886920C05C86B00E4A049120
+:10E32000039005920D4D596A9A6A2D683C00E89E4B
+:10E3300000000124002D00D0041C0A48005D01915A
+:10E3400002920090181C2030447B827B5E20C15AD0
+:10E3500018690430231C02F0A4FE06B0B0BD514F72
+:10E360000000186701000A61010001898A1C3C0055
+:10E37000249F000002810268023A0260080A090232
+:10E38000084310807047000070B5051C08780E1C0B
+:10E39000FF2814D0717802310020F7F745FB041CE8
+:10E3A00002890068311CF6F7CFFA002D06D0281C30
+:10E3B0003C00609F0000F7F734FB211CF7F757FA89
+:10E3C00000E0251C281C70BD0000FFB50F1C1E1CA2
+:10E3D000041C981C0104090C002081B0F7F727FBEE
+:10E3E000051C0068002C386003990170386846707D
+:10E3F00006D03C009C9F0000201CF7F715FB291C51
+:10E40000F7F738FA00E02C1C201C05B0F0BD000026
+:10E4100070B51048046804600F4920200860A0050A
+:10E420000E4E02D5706AF6F705FAE00102D5306E9D
+:10E43000F6F700FA3C00D89F00000A480440002587
+:10E4400007E0E00703D5A8003058F6F7F6F90135E4
+:10E450006408002CF5D170BD0000004007000010DA
+:10E46000070030740100FFFDFFFE80B5072180200A
+:10E47000F7F749F980BD3C0014A00000F8B5144B33
+:10E4800082009C58CA060127391CD20E9140114ABD
+:10E490001160114E4000851915E06060207BC100BD
+:10E4A000891910310A780D239A430A70391C81406A
+:10E4B00031730749000108313C0050A000004018AA
+:10E4C000084A416842608068F6F7BEF9287B002858
+:10E4D000E6D1F8BD0000A473010000100700006041
+:10E4E0000700D175000003490120097A002900D1F5
+:10E4F000002070470000047A01003C008CA000005E
+:10E5000003490120897A002900D1002070470000CA
+:10E51000147A0100B0B50024FAF776FC002814D074
+:10E52000012408F07DFE0A4D0A4B00215A18A03242
+:10E530001278102A06D38A00D218926F3C00C8A025
+:10E540000000821AAA4200D2002401310329F0D32C
+:10E55000201CB0BD00008B080000A46C0100014825
+:10E56000C068704700007869010070B50D1C041C7C
+:10E57000161CFDF72EFE0020E0602661A5603C0021
+:10E5800004A1000070BD0000F8B5171C0E1C041C8F
+:10E59000002801D0002E01D1F7F7F2F8A06807F0AB
+:10E5A00049F9051C01D1F7F7EBF8291C6E60AF6043
+:10E5B000201CFDF7FDFDE068411CE160002803D14F
+:10E5C0003C0040A100000548216905F02CF92068B5
+:10E5D000A84202D1381CF6F748F9F8BD0000C46023
+:10E5E00001000022013910B505E00C2353431C182B
+:10E5F0000C34C45001328A42F7D300210C235A4311
+:10E6000081503C007CA1000010BD0000B0B5041C8E
+:10E6100001D1F7F7BBF8201CFDF7DAFD011C856876
+:10E62000A06807F009F9E0680138E06003D1064806
+:10E63000216905F0E7F82168002903D08868496856
+:10E64000F6F711F93C00B8A10000281CB0BDC46069
+:10E650000100012100288CB500D100210E2009F015
+:10E6600032FA832000AB1880002004F00CF80190EF
+:10E67000684603F07AF98CBD000080B508F0DFFD34
+:10E6800006490A8906493C00F4A10000096E411AB6
+:10E690000B0C5918891A0904090C401A80BD000096
+:10E6A00000900700A46C010070B5041C887E0D1C4E
+:10E6B000202803D903211820F7F740F800262676F2
+:10E6C000A87E291C1B3160763C0030A20000201C73
+:10E6D0001D30AA7EF6F75FF96868291C6060A8689B
+:10E6E0001331A060A87B06222073E87B6073287C2E
+:10E6F000A073687CE073A8892082A87CE0762677E6
+:10E70000201C1230A676F6F746F93C006CA20000F9
+:10E710006068431C1DD0114D6D61286800281AD017
+:10E72000227B011C0B7B9A4201D3206014E00B1C5E
+:10E73000096800290BD00E7BB24208D20B68002B6F
+:10E74000F0D01E7BB242EDD323600C603C00A8A247
+:10E75000000001E021601C60002070BD26602C607C
+:10E76000FAE7A46E0100134AB0B5516801240029EC
+:10E770001ED0131DD1611362436804E0106200686B
+:10E78000D061002814D0D06945689D42F6D13C0084
+:10E79000E4A20000106A814204D15160D06900688F
+:10E7A000086002E0D16909680160D069FCF7CEFF1A
+:10E7B000002800D00024201CB0BD0000A46E010081
+:10E7C000B0B5174D01242968002927D06D61296152
+:10E7D0003C0020A30000436804E0686100682861F1
+:10E7E00000281DD0286942689A42F6D1AA692B698F
+:10E7F0009A4200D1A9616A69914203D129600068F7
+:10E80000086006E0006810602868002801D107F061
+:10E81000CCFE3C005CA300002869FCF79DFF0028AB
+:10E8200002D0002400E00124201CB0BDA46E010031
+:10E83000B0B5051C0748446807E0211C4431281C7A
+:10E8400000F0D6FC002802D16468002CF5D1201C11
+:10E85000B0BD00003C0098A300005875010070B5E1
+:10E860000D1C141C00280B4E08D0706E0623584354
+:10E870000204120C311C281C228007E0218806208B
+:10E88000F6F7A7F970662288291C301CF6F795F870
+:10E89000012070BD00003C00D4A3000010790100ED
+:10E8A00080B5032803D8044AC000115080BD01215F
+:10E8B0002620F6F75BFF80BD7C790100B0B5051C12
+:10E8C000C0680189392939D30468A079882835D1ED
+:10E8D000E0798E2832D1207A3C0010A40000012873
+:10E8E0002FD1607A03282CD1207B022801D0FE286A
+:10E8F00027D1607B1D210840012822D1A07BC8219F
+:10E90000084008281DD1A81DFBF7E1F9002818D000
+:10E910001920215C002914D101303C004CA40000D6
+:10E920003928F9DB688B04210843688303F0D6FE9D
+:10E93000002809D1002300222620044909F092F979
+:10E940000348006801F084F9B0BD000050C3000026
+:10E950000C790100B0B5084CA36801333C0088A4D1
+:10E960000000A3600C1C09D02568002D03D0237A79
+:10E970006168F5F7A3FF201CF7F7A9F9B0BD9479FA
+:10E98000010070B5041CC06801890568082953D3CB
+:10E990000622281C5549F5F79EFF002837D13C0078
+:10E9A000C4A40000E988524E043E812924D1E568C0
+:10E9B0002968087A4A7A000280180004000C420B89
+:10E9C0000005000DE27520834B8900204200B25AF9
+:10E9D0009A4206D128890C38020A00021043488165
+:10E9E0003C0000A5000002E001300228F1D3E068FD
+:10E9F00001890A390181E06801680A311CE00022BE
+:10EA000000204300F35A8B4201D1012202E0013081
+:10EA10000228F6D3002A11D107E036490622063132
+:10EA2000281C3C003CA50000F5F75EFF002808D13B
+:10EA3000E068018906390181E068016806310160FA
+:10EA400010E0E068FFF7E2FC0CE002310181E068D1
+:10EA5000016802390160E06800890238020A000298
+:10EA6000104308803C0078A50000E0680325028977
+:10EA70000168244E022A10D90988082905D0C1232B
+:10EA8000DB00994203D1012502E0002500E00225C8
+:10EA9000E9007158002900D10225F7F704F8E900D0
+:10EAA0008919898888423C00B4A5000000D9032553
+:10EAB000A11D201CFDF734FC002800D10325022DE8
+:10EAC00005D0032D07D1E068F6F7E2FF70BD201CEA
+:10EAD000FDF71CFD70BDE068018902390181E06825
+:10EAE000016802310160E8003C00F0A500003158E7
+:10EAF000201CF5F7F1FE0028EFD1E0680189023112
+:10EB00000181E068016802390160E3E700006A46BC
+:10EB100001007C79010070B50E1C041C151CF7F770
+:10EB20008CFB00282AD01B4908683C002CA600005A
+:10EB300001300860002E0AD0012E0BD0022E0FD11A
+:10EB4000201C04F0CDF8201CFFF7D6FE0CE00821B5
+:10EB5000E06802E0C121E068C90004F035F903E093
+:10EB600002212620F6F720FEE27DE16A3C0068A63D
+:10EB70000000281CFCF795FB206300202062A062A7
+:10EB8000201C00F06CFE70BDE068F6F78AFF002DD7
+:10EB9000F9D0E37D00220120E16AF5F7A7FE70BD00
+:10EBA00000009479010080B5012804D105483C009B
+:10EBB000A4A60000006801F009F980BD0321262009
+:10EBC000F6F7F8FD80BD00000C790100F8B5061CD1
+:10EBD00080790024C0072DD5F0680068417A11299A
+:10EBE00028D1C1880A0A09021143C90422D1017837
+:10EBF0003C00E0A60000114F0907890E0818418863
+:10EC00000A0A090211430D042D0C432D396801D164
+:10EC1000CA070ED4442D06D1C90704D5243000F00C
+:10EC200022FB002805D00648854206D138688007B7
+:10EC300003D53C001CA700000124F068F6F73AFF5A
+:10EC4000201CF8BD7C5A01006C07000080B500282C
+:10EC500007D00021262008F07BFF0248006801F061
+:10EC6000BBF880BD0C79010010B5041C094A081CD2
+:10EC7000516801313C0058A7000051600021216219
+:10EC8000A162E27DE16AFCF718FB2063201CF7F724
+:10EC9000E6FA201C00F0EFFD10BD947901000CB5E0
+:10ECA000021C081C0021019100926A4601A900F093
+:10ECB00002F80CBD00003C0094A7000070B513687A
+:10ECC000002B1ED000260B68002B02D113681B6896
+:10ECD0000B6013681C681B89E51808E05C781C1938
+:10ECE00002340C601C78844201D1181C70BD0B6882
+:10ECF000AB42F3D31368DB683C00D0A7000013607D
+:10ED00000E601368002BE1D1002070BD000070B5CB
+:10ED1000031C20D018681E89051C16E00478DD2C21
+:10ED200010D18478002C0DD1C478502C0AD10479EC
+:10ED3000F22C07D144798C4204D13C000CA800008D
+:10ED400002290CD18479944209D0447820180230E9
+:10ED5000441BB442E5DBDB68002BDED1002070BD34
+:10ED6000044980B50A780A20002A00D0486A00F0D9
+:10ED7000D1F880BD1C750100B0B5174C3C0048A807
+:10ED800000002068002829D0164DE869002825D108
+:10ED900001F03FFA002821D1FFF741FC00281DD1E6
+:10EDA0002068A969401808F0D6F9002816D002F0AA
+:10EDB00006FD2168401808F0CEF900280ED03C006E
+:10EDC00084A800000120E86100222521802008F0AD
+:10EDD0008FFF0648296A04F083FD0121286A00F0AC
+:10EDE00089FFB0BDE85901001C75010034630100C2
+:10EDF00070B5051C0024FAF70BFF184E716A401815
+:10EE00003C00C0A8000000F08EF800280BD104F0F0
+:10EE1000FEFB0021252008F0B0FE0322291C281C3F
+:10EE200000F0AFF818E0706A441E00F07CF800288B
+:10EE300012D10C48316A04F056FD0121306A00F00D
+:10EE40005CFF3C00FCA800000020FAF70DFE06F075
+:10EE500003F8002300222520054908F03FFF201C6D
+:10EE600007F0FCFA70BD00001C750100346301005E
+:10EE70001027000080B5012807D080280DD100227E
+:10EE8000002108483C0038A90000F8F79AFE80BD30
+:10EE9000012902D106490020C86104F0BEFB80BDF3
+:10EEA00005212520F6F7A7FC80BD61A900001C758F
+:10EEB00001000021002880B501D1034841680122EA
+:10EEC000252008F02CFE3C0074A9000080BD000045
+:10EED000E85901000249C8680138486270470000DB
+:10EEE0001C75010038B5031C081C191C114B06D0F9
+:10EEF000012111800A1C191CF5F7AAFD17E00D4D20
+:10EF0000011C2C781288181C3C00B0A90000F5F7F1
+:10EF1000A2FD287884420DD000236B61002803D025
+:10EF2000002007F0A4FA05E0002200210020009252
+:10EF3000F8F723FC012038BD00001C75010070B5F6
+:10EF4000041C012608F0E1F9051C3C00ECA90000B6
+:10EF50000020FAF78BFD444302F040FC02F03EFC37
+:10EF6000011C231C0022281C08F07CFA002813D165
+:10EF70000A48231C00228169281C08F073FA002823
+:10EF80000AD1F8F719FC011C231C00223C0028AA16
+:10EF90000000281C08F069FA002800D10026301C67
+:10EFA00070BD1C75010070B50D1C041C161C07F00B
+:10EFB00076F900280DD0FAF752FE002809D0FF306C
+:10EFC00001304368002B04D0221C291C301C3C005B
+:10EFD00064AA0000F5F7BBFC70BD000080B50121FC
+:10EFE0001D2008F0DFFD074A0748116901605169DB
+:10EFF00041600649496881600021C16003F074FCEA
+:10F0000080BD00002861010048750100905C01008E
+:10F010003C00A0AA000070B5041C406B002835D04D
+:10F020001D4D00262878002824D04120005D0028AE
+:10F0300003D108F076F9A8611BE0696901316961C3
+:10F04000A868002808D0814206D12069011C10312F
+:10F0500004303C00DCAA00008222FFF7ADFF6868A4
+:10F0600000280AD06969814207D12069011C10314A
+:10F0700004300222FFF7A0FF6E6168780521084086
+:10F0800008D0074800780E2803D36034E079FBF7F6
+:10F09000CFFF70BD3C0018AB00000348066070BD98
+:10F0A00000001C75010010670100D47E0100800281
+:10F0B0007047142330B5094D4B435B195B68082436
+:10F0C000002B00D1022438235A43054B8900D21863
+:10F0D000515A026809193C0054AB0000511A0160F2
+:10F0E00030BD0000744001008C410100F8B5071CE0
+:10F0F0002C48141C2C4A484386468018800D8446B0
+:10F100002B482A4A06261D1C48434A430E2F40D24C
+:10F1100001A3DB5D5B009F443C0090AB0000060850
+:10F120000A0F14181D202724272B2F31C8001FE099
+:10F1300088001DE0214970464018000D18E01F4A64
+:10F140008018800D401821E01E481018000D1DE0A9
+:10F150001D4970464018400D0AE03C00CCAB000051
+:10F160001B49401801E01B481018400D11E01A49D6
+:10F17000401805E060462080002016E0174810186F
+:10F18000800D06E0164902E016484843164940182B
+:10F19000C00D03308008800020802E803C0008AC29
+:10F1A0000000F8BDFF21FF20F6F749FB002020807A
+:10F1B0002880F6E70000D1451700FFFF3F00E33845
+:10F1C0000E0055551500FFFF0F00A9AA2A01701C5B
+:10F1D0003700FFFF1F00CBCC4C00701C47003C00E9
+:10F1E00044AC0000A9AA7A00701C6700A9AABA0062
+:10F1F00084F61200EC25B4000449002801D009224D
+:10F2000000E014224A80486070470000A4690100B1
+:10F2100080B50622F5F740FC80BD0000BCB5151C8A
+:10F220003C0080AC0000041C04310904090C01AA54
+:10F230006B46FFF76AFF3820064968434018A10073
+:10F24000405A00AB99884018198840180004000CF7
+:10F25000BCBD8C410100BCB5041C151C01AA6B4649
+:10F26000FFF73C00BCAC000053FF38200549684361
+:10F270004018A100405A00AB998840180004000CC7
+:10F28000BCBD00008C41010080B500280FD00029D2
+:10F290000DD002780B789A4209D1FF2A05D0427826
+:10F2A0000232F5F73C00F8AC000081FB002801D1E8
+:10F2B000012080BD002080BD000080B506220449E9
+:10F2C000F5F775FB002801D1012080BD002080BD2D
+:10F2D00000005E400100011C49780120002900D097
+:10F2E0000020704700003C0034AD000080B50622CD
+:10F2F000F5F760FB002801D1012080BD002080BD12
+:10F3000080B5FFF7C7FF80BD80B506220449F5F739
+:10F3100051FB002801D1012080BD002080BD0000EC
+:10F3200012610100011C80203C0070AD000081438F
+:10F330008A080E201C2A10B506D2034C5200A35C8A
+:10F340008B4201D11019407810BDFC4101001423FB
+:10F350000249584340184068704774400100202219
+:10F36000011C80B50248F5F752FD3C00ACAD000031
+:10F3700080BD0000486101000806000E022801D18E
+:10F38000002070470120704700290CD00749096808
+:10F39000002908D01423064958434018C0680028A3
+:10F3A00001D0012070470020704700003C00E8AD0C
+:10F3B0000000AC6901007440010010B5041C062275
+:10F3C000011C0448F5F77DFB0622211C0348F5F7D4
+:10F3D00078FB10BD00001261010040800700002989
+:10F3E00001D10020704738235A43074BD2183C0004
+:10F3F00024AE00008300D25A14235843054BC01892
+:10F4000040881018081A0A380004000C70470000E1
+:10F410008C41010074400100F8B5071C081C161C43
+:10F420001C1C191C00F05AF8051C1435221C311C38
+:10F430003C0060AE0000381CFFF70BFF28180004EA
+:10F44000000CF8BD000000B500F04BF80A300004D5
+:10F45000000C00BD0000F8B5071C081C161C1C1C85
+:10F46000191C00F03EF845001E35221C311C381CCA
+:10F47000FFF73C009CAE0000EFFE28180004000CD3
+:10F48000F8BD0000FFB50F1C81B00AA9141C1E1C9A
+:10F4900003C900F029F8051C1E35211C301C00F0A2
+:10F4A00023F82D18221C391C0198FFF7D5FE2818C7
+:10F4B0000004000C3C00D8AE000005B0F0BD0A49C5
+:10F4C00080B50988092904D0142907D101018000D9
+:10F4D00000E0C10008180004000C80BDFF21FF20DF
+:10F4E000F6F7D1F9002080BD0000A669010038239D
+:10F4F0005943064A14233C0014AF000089188200C7
+:10F50000895A054A58438018408808180004000C9E
+:10F51000704700008C41010074400100024803491B
+:10F5200000684000085A7047A86901005440010073
+:10F530000A20704710B5041C3C0050AF0000FDF7D6
+:10F5400062FF201C10BDB0B5041CC0680568A01D7A
+:10F55000FFF7F5FE002818D0211C1431201C08F0FC
+:10F56000E2FD002811D0298809482022818269887B
+:10F570000183A98806354183C5613C008CAF00003A
+:10F580003021095D1154616B41620120F7F728F8C1
+:10F59000201CB0BD707C010070B5041CC068211C2B
+:10F5A00014310568201C08F0C1FD002808D0054E64
+:10F5B000F06802F0CFFD2888F08203203C00C8AF3D
+:10F5C0000000F7F710F8201C70BD707C01003EB5FC
+:10F5D000041CC0680568A01DFFF7B7FE002821D0F5
+:10F5E000211C1431201C02AA08F077FD002819D034
+:10F5F00002984B21095C002910D0012914D03C004D
+:10F6000004B0000002290CD129880D2000AB18801D
+:10F61000201C03F051F80190684602F05DFAF6F7FD
+:10F62000B5F80021029806F09FFE201C3EBD07F0B1
+:10F6300029F8029800218069C207D20F0420F6F74A
+:10F640003C0040B000007FFFEEE710B5041CFDF762
+:10F65000E6FE201C10BD3EB5051C00F040FE002853
+:10F6600015D1281C1430FAF7CEFB00280FD0052145
+:10F670002869FFF786FB041C09D00522211C684677
+:10F68000F5F73C007CB000003DFA05340294684672
+:10F6900003F01AFB2A1C0D218F2008F08FFB00209D
+:10F6A0003EBD000010B5041CFAF798F8201C05F0C8
+:10F6B000E5F8201C10BD0000B0B5041C0069002155
+:10F6C00094B0FFF73C00B8B0000061FB6946FBF75F
+:10F6D00026F800281ED00098FAF729FA011C01A884
+:10F6E00002F0D7F90098FAF7D2F90490052009AD95
+:10F6F000687202A8211C06220230F5F706FA0120E2
+:10F700000890216A0A903C00F4B00000282009917A
+:10F71000005D287201A800F069F8201C14B0B0BD8B
+:10F72000FFB5161C1F1C81B00A9D4C20F6F790FBFC
+:10F73000041C143006220299F5F7EAF9201C06226F
+:10F740000199F5F7E5F928203C0030B100000021CF
+:10F750000655E1602762002D01D08E2000E08D204B
+:10F76000221C0D2108F033FB05B0F0BD0000B0B540
+:10F77000051C4C20F6F76FFB041C4C22291CF5F7E6
+:10F7800026FA2920405D0D282CD23C006CB10000E7
+:10F7900001A31B5C5B009F44281A281E060A282828
+:10F7A0000E2822121600221C0D218C201AE0221C89
+:10F7B0000D21832016E0221C0D21842012E0221C42
+:10F7C0000D2185200EE0221C0D2186203C00A8B1D1
+:10F7D00000000AE0221C0D21872006E0221C0D21DA
+:10F7E000892002E0221C0D218B2008F0F6FAB0BD22
+:10F7F000E868F6F7E6F9201CF6F711FBB0BDFEB598
+:10F80000051C9020F6F72DFB041C9021F5F73C0019
+:10F81000E4B100005BF9374E0127F069042803D9F1
+:10F82000706B013070634DE03348B16B04F0D0F879
+:10F8300001202062A87E211C803102910870221CC8
+:10F840006032019200202F1C20379072787A2B1C96
+:10F850003C0020B200001433D072E868AA1DA060FA
+:10F86000E86B48604420405D0872291C201C05F0AC
+:10F87000AAFC686A00280AD1019A201C937A02998E
+:10F88000221C703258300978FAF7DBF906E03A7A30
+:10F89000231C3C005CB20000E869296A7033FDF764
+:10F8A0008DF93020405D184907280BD15820005DA4
+:10F8B000C007C0170130E06100202061201CF7F76D
+:10F8C0003FFF18E00122201C05F0ACFF071C12D0FE
+:10F8D00003F006FF3C0098B20000F36D002B06D049
+:10F8E00060682030827B616B381CF5F799F8E86816
+:10F8F000F6F773F9201CF6F79EFAFEBDF0690130A9
+:10F90000F061FAE70000C4690100346301000531C9
+:10F91000000070B5061C3C00D4B200000D1C0904A8
+:10F92000090C0020F6F77CF9041C2A1C311C006825
+:10F93000F5F706F9201C70BD4088704703781B0757
+:10F940009B0F0B70007800091070704704307047EF
+:10F9500004307047D42101703C0010B30000002136
+:10F96000417070470000C421017000214170704750
+:10F970000000B4210170002141707047000001496E
+:10F98000486570470000C469010001490865704777
+:10F990000000C4690100014988653C004CB30000C7
+:10F9A00070470000C4690100F8B55F4F051CB868D6
+:10F9B0000130B86007F024FD38619020F6F766FA50
+:10F9C000041C9021F5F794F8286B271C6063688B62
+:10F9D0008037261CC007C00F2062688B3C0088B3AC
+:10F9E0000000603602214007C00F2063688B80074B
+:10F9F000C00FF860287F3870B172002808D1F9F77D
+:10FA0000C8FF002802D00120606201E00120A0624E
+:10FA1000F868002803D00021022006F0CCFF3C004B
+:10FA2000C4B300002B1C1033AA1D291C201C05F098
+:10FA3000DFFBA86A00280CD13978022907D0221CE4
+:10FA40007032201C5830B37AFAF710F908E001261A
+:10FA50005EE0AA7D231C286A696A7033FDF7C0F84E
+:10FA60003C0000B40000E96800200989002900D1A9
+:10FA70000420F0723878012814D10027009000206B
+:10FA800006E02969012903D1A969012789071AD547
+:10FA900006F079FC0028F4D1012F14D10098012838
+:10FAA00011D13C003CB4000008E0201C583006F0A6
+:10FAB000E1FC00280AD08069800707D5F07A082188
+:10FAC0000843F0720120E062E87D3073E868A060CE
+:10FAD000E06A002812D01A4FF86B00280ED0307B55
+:10FAE000F5F7DEFE3C0078B40000002809D0211CA8
+:10FAF000381C4030FCF755FC1448B96B03F089FF03
+:10FB0000F8BD104F1248B96B03F083FF0022201C90
+:10FB1000104905F0A2FE061C03D1386A0130386294
+:10FB2000EEE7201CF6F73C00B4B400009FF9E8684B
+:10FB3000F6F76EF803F0F2FD0448836D002BE2D077
+:10FB40000022301C296BF4F786FFDCE7C469010052
+:10FB5000C4600100346301001130000010B50A20B8
+:10FB600007F0FEFC07F05EFC3C00F0B400000B491F
+:10FB700044180CE0201C07F090FB002807D0F7F792
+:10FB800034F9002803D012218620F5F7CAFEF7F7D2
+:10FB90002CF90028EED101F080FD10BD0000409C42
+:10FBA000000010B50C1C011C174A3C002CB50000CD
+:10FBB0000129506904D080291DD0812921D11CE060
+:10FBC0009178012915D102219170141C011C104853
+:10FBD00003F028FF0121606900F02EF9606901F04F
+:10FBE0005FFC2070A088A16900230A4A3C0068B528
+:10FBF000000007F07EFC10BD222106E001F01DFC94
+:10FC0000201C00F04AF810BD1C212020F5F78FFEC3
+:10FC100010BDB4790100346301003D2E000070B5C1
+:10FC20001C4CA078002832D0052830D060693C00F8
+:10FC3000A4B5000000F0EAF8184EB579A0780128C4
+:10FC40000BD002280ED0032810D0042817D1421F51
+:10FC50008021202008F008F80EE00021202008F084
+:10FC600031F80CE0A08807F01DFC05E0207800F0DA
+:10FC70003C00E0B5000039FA002000F0C4FD6069E6
+:10FC800001F0E1FB0520A070B571606900F061F939
+:10FC900000222021812008F0D6F870BD0000B47940
+:10FCA000010020100700B0B50D4D041CA8780028F5
+:10FCB00014D03C001CB60000686900F00BF90A483B
+:10FCC000696903F0A7FEA88807F09EFB002C02D00C
+:10FCD000687800F079FF0020A870A968201CF4F76C
+:10FCE000CAFEB0BDB479010034630100064B80B593
+:10FCF000997803293C0058B6000006D10421997078
+:10FD00002021021C802008F0A4F880BD0000B479F6
+:10FD1000010010B50C4CA17803290FD11030FAF76F
+:10FD2000DEF8002809D0207800F0E5F9002000F086
+:10FD300070FD002105483C0094B60000FCF79CFAD9
+:10FD400010BD1B212020F5F701FE10BDB479010084
+:10FD500051B60000094980B58978032909D100F01E
+:10FD6000CDF9002000F058FD01210548FCF784FA88
+:10FD700080BD17212020F5F73C00D0B60000E9FD3A
+:10FD800080BDB479010051B6000070B5104C1D1C47
+:10FD9000A378061C0498002B18D10123A3702261BC
+:10FDA000E6606170A060A561002007F0ACFAA08059
+:10FDB000301CF7F73CFBE08007F03C000CB700007C
+:10FDC0004FFBC721C900281A411A0022202007F042
+:10FDD00057FF70BDB4790100B0B5041C0D1C00F0D4
+:10FDE00009F8201C00F024F8002D01D0FFF7D4FE04
+:10FDF000B0BD0000B0B50C4C051CA0683C0048B775
+:10FE0000000000280FD10A48017E022211406160E3
+:10FE1000017E11430176072003F049FC206003F0C6
+:10FE200098FF03F0EEFFA0682843A060B0BD407CBF
+:10FE300001000C8007000A4938B50A1C20323C003A
+:10FE400084B70000947900AB1C70D279074C5A70CB
+:10FE5000E268002A02D1064D01236B701043E06076
+:10FE600000AB1888C88438BD00100700407C010032
+:10FE700000500700B0B5051C002901D000F028F89B
+:10FE80003C00C0B70000064C60782169084303D1EC
+:10FE900001210E2006F0C5FD206928432061B0BD78
+:10FEA000000018630100B0B50A4C051C226900204F
+:10FEB000002A0CD1002900D004E06078002802D18B
+:10FEC00004F03C00FCB7000069FB6070281C06F0E1
+:10FED000EFFC0120B0BD00001863010010B5084C14
+:10FEE000607800280AD006F0E3FC002060702069EA
+:10FEF000002803D001210E2006F096FD10BD000061
+:10FF0000186301003C0038B80000094980B50B694E
+:10FF1000834204D14A78002A01D1012200E0002264
+:10FF200083430B61002A03D000210E2006F07FFDE1
+:10FF300080BD1863010080B50120F6F756FE80BD34
+:10FF4000000010B5041C3C0074B8000000F004F878
+:10FF5000201C00F01FF810BDB0B50C4D041CA868A3
+:10FF6000A0420FD10720296808F08CFB68680222A4
+:10FF700007490028087E01D0104300E0904308762E
+:10FF800004F0C4F8A868A0433C00B0B80000A86022
+:10FF9000B0BD407C01000C8007000A4938B50A1C3E
+:10FFA0002032947900AB1C70D279074C5A70E26809
+:10FFB000824202D1064D00236B708243E26000ABA7
+:10FFC0001888C88438BD001007003C00ECB8000059
+:10FFD000407C010000500700B0B5051C0A4C002110
+:10FFE0006069FFF711FF042001F046F901F088FB7A
+:10FFF00000220421042001F08BF8281C01F04AFAA9
+:02000004800179
+:100000006069FFF7A7FFB0BD407C01003C0028B944
+:10001000000080B501F077FA80BDB0B50D4D01212B
+:100020002869FFF7F4FEFFF72AFE00F02CFB00F032
+:1000300084FA002400220421201C01F06CF8013411
+:100040002406240E042CF5D32869FFF786FF3C0014
+:1000500064B90000B0BD0000407C0100F8B5051C8B
+:100060000E1C074C171C01212069FFF7D3FE3A1C18
+:10007000311C281C01F052F82069FFF771FFF8BD10
+:10008000407C0100FFB589B0061C16981D1C002895
+:100090003C00A0B9000001D02948149028680088CD
+:1000A0000006800E202801D0142817D10AAA18248F
+:1000B000182105CAFFF777F9071C281C0189A142FE
+:1000C00002DD006801190BE0C068641A0028F5D150
+:1000D0000F213C00DCB900008620F5F761FC00210F
+:1000E00001E00021002718480890807907900C2033
+:1000F000164A704380180479049112991598149A3D
+:1001000001910390059700950AAB0292211C301CC7
+:100110000CCBF7F73C0018BA000003F90125B540F5
+:100120000C4E083E3078284006D0201C00F0C9FD57
+:100130003078A843307003E0201C139900F043FF8F
+:1001400007A903C988710DB0F0BD952400002010E7
+:100150000700747A01003C0054BA0000B0B5041CDA
+:100160000C230949584340180079051C00F092FE01
+:10017000281CF7F7C7F80120034AA040083A117875
+:1001800081431170B0BD0000747A010010B5054CB8
+:100190002078002803D11A213C0090BA0000862064
+:1001A000F5F707FC207810BD000018630100014836
+:1001B0004078704700002C63010080B5F6F7D1FE4F
+:1001C00000F01BF980BDFEB50168051C0C680E1C13
+:1001D0002178880771D16869C2073C00CCBA000059
+:1001E0006ED580076DD5E87AC20708070909029124
+:1001F0004549800FD20F00284F6805D0012809D04B
+:10020000022821D003285BD1FF23201CA97AF4F710
+:1002100074FC55E002980B280AD00C283C0008BB5F
+:1002200000000FD00D284ED1394FF868F4F761FC6B
+:100230000020C0435AE0354FA97ABB68201CF4F770
+:100240005BFC40E0324F3869F4F753FC3BE000219F
+:10025000019102990020FF23090701D401203C00ED
+:1002600044BB000013E03189192901D3267E07E041
+:10027000152904D31826711A49190E7B00E00026AF
+:10028000B10602D4012073075B0F01210191002800
+:1002900003D0A97A201CF4F736FC0199012915D165
+:1002A0003C0080BB0000F006C60F20881B4FE48A8C
+:1002B000F96B0005C00F00291AD04B1C18D0002E76
+:1002C0000AD0002808D03888844213D002980C281D
+:1002D00001E01DE012E00DD0081C01F076F90028C5
+:1002E00003D13C00BCBB000000F0A6FAF4F70AFC06
+:1002F0000020C043F863002E0DD03C800020F8633E
+:1003000009E020880006800E202804D1044F201C1C
+:10031000B96AF4F7F8FB291C0248FBF7EFFFFEBDB2
+:10032000287A01003C00F8BB0000A59A00000348B1
+:1003300080B50078002100F0FCFB80BD0000186350
+:100340000100044B054900281A6800D0011C101C4C
+:10035000196070470000D4790100957500000548C8
+:1003600080B5007F24233C0034BC0000044958437E
+:100370004018C069F4F7CCFB80BD0000D4790100BF
+:1003800094460100021C064880B581628260007FAD
+:1003900024230449584340188069F4F7B9FB80BD11
+:1003A000D4790100944601003C0070BC000080B587
+:1003B000002000F03CFB002000F06DFA00F065FA30
+:1003C0000449C86A0130C862081F008807F0C1F8F4
+:1003D00080BDD4790100064880B500210177C16A4B
+:1003E0000131C1620438008807F03C00ACBC000059
+:1003F000B3F803F0D1F980BDD479010080B505F0E0
+:10040000E9FA80BD80B5002803D1012004F022FA6A
+:1004100080BD012003F0E6FB80BD00000349012000
+:100420004978002900D00020704700003C00E8BC5B
+:1004300000002C63010070B5134D2878002820D1EE
+:1004400001212E1C7068FFF712FD0021072006F025
+:100450002AFB0D480024047104F0EDF806F0D5F9EC
+:10046000012028700A4804604460F6F74CFD3C0007
+:1004700024BD0000F7F75EF8FFF7A2FF00F0A8FD2B
+:100480000548716803F020FB012070BD2C6301005A
+:100490005000070080000700C4600100B0B51E4C8A
+:1004A0002078012835D1251C69681C4803F020FB01
+:1004B0003C0060BD000004F0F0F81A4801684908EB
+:1004C00049000160016801221143016000F02BFE28
+:1004D00000F01BFC06F099F8F6F729FEF6F72DFC64
+:1004E00000202070FFF783FF00F08BFD0F4881781C
+:1004F00008223C009CBD000091438170817811432B
+:1005000081700C49102008716868FFF75FFDF7F7EC
+:1005100039F8F6F74DFD0121072006F0CDFA01204C
+:10052000B0BD00002C630100C4600100F0000700B2
+:10053000000007003C00D8BD000050000700034940
+:100540000120897A012900D0002070470000147A28
+:100550000100B0B5154D041C287A002820D1F9F708
+:1005600000FC02281CD101202872E868002810D065
+:100570002068296808603C0014BE000069680D48C6
+:1005800003F0C2FA01216868FFF7C8FC00222420AA
+:10059000616807F0CFFBB0BD002028722168012000
+:1005A000F4F7CFFAB0BD00202168F4F7CAFAB0BD65
+:1005B000047A0100346301003C0050BE000004488E
+:1005C00080B5007A012802D1002002F0F0FE80BD43
+:1005D0000000047A010080B5012807D0802809D1E5
+:1005E0000748007A002804D0012000E0002002F033
+:1005F000DEFE80BD0E212420F5F73C008CBE0000FD
+:100600000BFA80BD047A0100F8B53A4E051CB07AA9
+:10061000002869D1F9F7AEFB022865D13648006899
+:10062000002861D03548716803F074FA01217068C0
+:10063000FFF77AFC6C20F5F7B9FC041C3C00C8BE3F
+:1006400000006C21F4F7E7FA30682C220460296876
+:1006500081606968C160002111548162A968002924
+:1006600002D0E968016105E006F05DFF69684018A5
+:10067000316808617068FFF714FD692108553C0076
+:1006800004BF00000020F9F709FB01273B1C061CF2
+:10069000221C24320021F9F779FB1C480321008831
+:1006A00089030843211C40310091488318481021D8
+:1006B00060601848A060A76367630020F5F74CFBF3
+:1006C0003C0040BF0000E06002890099CA830768CF
+:1006D000311C381D2761FEF78EFE381C0A300F4989
+:1006E000FEF789FEA4203880002004F0DEFB002203
+:1006F0001F20696807F02DFBF8BDFFE7002029687F
+:10070000F4F73C007CBF00002EFAF8E7147A0100F1
+:10071000805A010034630100FA60010099EC000086
+:1007200015ED000012610100064880B5817A0029AC
+:1007300007D0006804222030017B1143017302F0CE
+:100740006BFD80BD3C00B8BF0000147A010010B5FD
+:10075000044CA07A012803D106F0F1FE21688861DB
+:1007600010BD147A0100031C081C1F4970B50A68EB
+:10077000012B1CD0802B05D0832B30D1887A002808
+:1007800014D029E053693C00F4BF0000002B0ED0C8
+:100790009469D5692E1B0C695D1B361BB610A41914
+:1007A0000C61CC682D1BAD106419CC60936102F014
+:1007B00081FD70BD022812D1906A0C1C0028F8D06F
+:1007C00007F00EFAA07A01283C0030C00000F3D1F7
+:1007D0002068816A0029EFD12030017B0822114373
+:1007E000017370BD02F021FD70BD0E211F20F5F7D1
+:1007F00028F970BD0000147A010002490C3103C9C8
+:10080000401870470000147A01003C006CC00000E2
+:10081000054880B5006804222030017B1143017334
+:1008200007F0E4F980BD0000147A010070B5164CA1
+:100830000E1CA17A00291CD02168086107F032FA49
+:10084000002817D020680025056200223C00A8C0BF
+:10085000000083211F2007F094FA6068FFF703FC73
+:10086000216804222031087B2B1C90430873311C23
+:1008700000221F2007F061FB70BD20680822203095
+:10088000017B1143017302F0D6FC70BD00003C00F7
+:10089000E4C00000147A010080B500F077FC00F09D
+:1008A0006FFC00F029FF00F05DFA00F0C5F800F0E1
+:1008B00085FF80BD80B5FAF785FA80BD0148C06824
+:1008C00070470000287A01000349002800D0011C6D
+:1008D0003C0020C100000248C160704700008175E3
+:1008E0000000287A010001480249C86070478175FC
+:1008F0000000287A01000149886170470000287AC9
+:1009000001000149002088617047287A01000349ED
+:1009100000283C005CC1000000D0011C0248C161FD
+:100920007047000089750000287A010003490028FB
+:1009300000D0011C02488162704700008D750000E4
+:10094000287A01000349002800D0011C02480162F6
+:10095000704700003C0098C1000091750000287AA3
+:1009600001000349002800D0011C024801617047C2
+:10097000000099750000287A0100014802490861C9
+:10098000704781750000287A0100021C081C802A2B
+:1009900080B502D100F03C00D4C1000007F880BD52
+:1009A0001E212120F5F762F880BD0000B0B5104D82
+:1009B000041CA86B0130A863696B091A281C006B22
+:1009C0000C2903D90021FFF791FA03E0082901D18E
+:1009D000FFF732FB201C00F03C0010C200004DF974
+:1009E0006069400701D503F00CFC201CE96AF4F7AC
+:1009F000DBF8B0BD0000287A01000349002800D0D0
+:100A0000011C0248416270470000B5750000287A59
+:100A1000010003490120096C00293C004CC2000080
+:100A200000D1002070470000287A010010B5074C63
+:100A3000E16B002901D1E06304E0814202D0002093
+:100A4000C043F8E706F09CFD206410BD287A010041
+:100A50000148006C70470000287A01003C0088C201
+:100A60000000054980B5002048638863FF210931F3
+:100A700015221020F6F7FBF980BD287A0100034902
+:100A8000002800D0011C0248816070470000C17539
+:100A90000000287A01000349002800D0011C3C0016
+:100AA000C4C200000248C16270470000C575000062
+:100AB000287A0100044B054900285A6800D0011C1F
+:100AC000101C596070470000287A0100C9750000A9
+:100AD0000349002800D0011C024841617047000012
+:100AE0003C0000C30000CD750000287A01000F4BC8
+:100AF00010B5D968002919D00E4C0021CA0012196E
+:100B0000403AD26B824202DA01310329F6D3481C03
+:100B10001A780006000E904208D018700806000EE1
+:100B2000041C3C003CC30000F6F7BAFA201C03F09A
+:100B30001BFD10BD186301003C42010010B5144CB0
+:100B4000E168002922D02178124BCA00D218403A1D
+:100B5000D36B834202DA481C20700BE0926B824216
+:100B600014DDFF313C0078C300000806000E207041
+:100B700003D119218620F4F78EFF2078FF3000067C
+:100B8000000EF6F790FA2078FF300006000E03F012
+:100B9000EEFC10BD0000186301003C420100094852
+:100BA0000021018141813C00B4C300008181C181E9
+:100BB000074A02800123DB0243808280C2804176A3
+:100BC00031218176012101767047000030800700D5
+:100BD000FFFF000080B50120F6F7F8F80120F6F7D6
+:100BE000DBFC0120F6F75AFA3C00F0C300000120BC
+:100BF00000F0F1FD0120F7F7C6FB80BD000010B545
+:100C0000114C002907D1002802D10120E06006E044
+:100C10000021E16003E0012907D1002801D0207004
+:100C200003E018218620F4F73CFF3C002CC40000B0
+:100C30002078FF300006000EF6F73EFA2078FF30ED
+:100C40000006000E03F09CFC10BD000018630100BC
+:100C5000054980B50968884205D0FEF7FFFB00F022
+:100C600087FAFFF72BFC80BDA86901003C0068C42F
+:100C7000000001494870704700002C6301000149E1
+:100C8000C860704700004C7B0100034901200978CF
+:100C9000002900D00020704700002C630100044AA6
+:100CA000002802D0906901309061D06940183C0062
+:100CB000A4C40000D0617047905C0100FEB5041C24
+:100CC00000680568281CFEF727FF071C6069154EA1
+:100CD000C007C00F21D001AA02A9281CFEF712FFED
+:100CE0003878C0070CD46069800708D500AB187A43
+:100CF0003C00E0C40000002801D0022802D1706A44
+:100D000001307062FEBD00AB187A002801D00228C5
+:100D1000F8D1706A01307062B06A0130B062F1E7F8
+:100D2000F06A0130F062EDE70000905C01000249DA
+:100D300048693C001CC50000013048617047000054
+:100D4000905C01007047000070470000011C4031BA
+:100D500010B50A8B1207920F012A33D04A781A492C
+:100D6000041C6034002A0B6A22D1E279012A02D9DC
+:100D7000CC6801343C0058C50000CC60022A02D97E
+:100D80000C6901340C610C6801340C60446B002C5C
+:100D900003D00469247CE40702D54C6801344C601C
+:100DA000806B002802D0086B01300863002A0CD049
+:100DB0009818013808E03C0094C50000012A01D0D1
+:100DC000022A02D1886801308860E0791818086228
+:100DD00010BD0000905C01007047000001490A202E
+:100DE00008817047C47A0100F0B5324F041C78784E
+:100DF00085B0C007C00F03903C00D0C50000B87894
+:100E000002900120A0400490391C88702C48008872
+:100E100006F00BFC0190FEF7AEFC0430294EA50055
+:100E200071590979884206D0FEF7A5FC7159043042
+:100E3000087101207870002078703C000CC600001A
+:100E400021480121204E3038015571590320087086
+:100E500006F0C6FB061CFEF791FC36180E3609E0BC
+:100E6000301C06F0F5FA002804D023218620F4F780
+:100E700033FE03E0F6F734FB0028F1D03C0048C60F
+:100E80000000124813493C3800780872201CF4F71F
+:100E9000A2FA0E4E715908710398002801D0012161
+:100EA000797009480088019906F0BDFB0298B87076
+:100EB000094949790498884203D0242186203C00BE
+:100EC00084C60000F4F70EFE05B0F0BD0050070028
+:100ED000D0790100107B010080800700508007005E
+:100EE000B0B50D1C041C052801D3F4F729FE052D0F
+:100EF00001D3F4F725FE0B4AA8001158A0001058A2
+:100F00003C00C0C600000EC90EC0062106220648DD
+:100F100069432A380918624310180622F3F70FFFB5
+:100F200002483038415D0155B0BD107B0100B0B5BD
+:100F3000041C0E480D1C80780121A140084003D0FC
+:100F400001213C00FCC600008620F4F7D1FD0621FB
+:100F50000622094869430918624310180622F3F76C
+:100F6000F1FE201CF4F740FA034AA1002A3251583E
+:100F70000871B0BD00500700E67A0100034980B552
+:100F8000002048603C0038C7000007F032F980BDFF
+:100F90000000D47A010010B5041C052801D3F4F731
+:100FA000D8FD0749087A074A107001200872FEF739
+:100FB000F4FB044A0430A1003C325158087110BDC2
+:100FC0000000808007003C0074C70000D47A010054
+:100FD000034980B50120486007F00EF980BD00008C
+:100FE000D47A010010B5041C052801D3F4F7B4FD30
+:100FF000201CF5F78FFE0021201CFBF731FD01219D
+:10100000002800D0011C09043C00B0C70000090CF6
+:10101000201C04F022FA10BD000006490120054BF7
+:10102000886000203C33002182009A581170013002
+:101030000528F9DB7047D47A01000F4938B5002044
+:1010400088600E48011C20318A793C00ECC7000002
+:1010500000AB1A70C9790A4C094D59700C343C35F3
+:1010600000210322635C002B02D08B00EB581A7026
+:1010700001310529F6DB00AB1988C18438BD0000B9
+:10108000D47A010000100700FFB5144F3C0028C8B7
+:101090000000041CBE790D1C81B00F2000F0B9F8CF
+:1010A0002A1C104D0090211C281CF4F7DEFC211C8A
+:1010B000A81D039AF4F7D9FC211C281C0C30049AB3
+:1010C000F4F7D3FC211C281C12300A9AF4F73C00D8
+:1010D00064C80000CDFC07F09BF8009800F076F89B
+:1010E000BE7105B0F0BD000020100700E67A0100D7
+:1010F00010B50020F6F726F80749887800090001A6
+:1011000088700024201CF5F711FE01342406240EFB
+:101110003C00A0C80000042CF7D310BD0000005014
+:10112000070080B502F0E3FB034881780F221143EA
+:10113000817080BD000000500700F8B50D1C041C34
+:10114000052801D3F4F717FDA600002D114F07D194
+:10115000B8593C00DCC80000816800290ED14078F5
+:1011600000280BD002E0FF352D062D0E291C201C77
+:10117000FBF788FC011C201C04F07EF906490120C5
+:101180003039085504483C388068002802D1B959E4
+:10119000032008703C0018C90000F8BD0000107B57
+:1011A000010080B504F0CDF980BD10B5041C052800
+:1011B00001D3F4F7E6FC201CF5F7C1FD0020054A39
+:1011C000A10051588860044988780122A240104348
+:1011D000887010BD00003C0054C90000107B010065
+:1011E00000500700024A9178084390707047000051
+:1011F00000500700F8B50C4FBE790F2000F018F82A
+:10120000051C0024201CF4F70DF9084AA1005158D0
+:10121000087101342406240E3C0090C90000042CFF
+:10122000F3D3281CFFF7E1FFBE71F8BD00002010CA
+:101230000700107B0100B0B508498D788A78054019
+:1012400082438A7006F0F9F9041C0A34201C06F067
+:1012500034F90028FAD0281CB0BD3C00CCC90000ED
+:101260000050070001490A2008817047387B0100BF
+:10127000F8B510480426041CE034051C383D00274E
+:10128000201C1C30E460A06127610B48A682E0614D
+:101290002762A7620620A084201CFEF73C0008CA33
+:1012A000000087FC201C0C30F6F7B7F90549383CE4
+:1012B000AC420880E7D1F8BD0000D4E4010012611F
+:1012C0000100487B0100F7B5051C0C230F1C1249D7
+:1012D00058434418208806F0EAF9A07801283C0019
+:1012E00044CA00001AD16668022F05D15C20805BD9
+:1012F00002990009884211D1281CFEF7FBFF301C1F
+:10130000F9F7FAFD0420A070391C281CFBF7F4F84B
+:10131000034AE8003C32115801311150FEBD000073
+:101320003C0080CA0000607B01000120064A0021C9
+:101330000C234B439B189B78002B00D000200131DD
+:101340000429F5DB7047607B010070B5041CFFF7D2
+:10135000EAFC002803D120210C20F4F7F6FB261C20
+:1013600060363C00BCCA00000021F171E164606B92
+:10137000251C4035002831D0FFF704F90122120363
+:1013800000282069018801D0914300E011430180C9
+:10139000206901220088D2022883201C583001884D
+:1013A000914301803C00F8CA0000A36B5208002B57
+:1013B00010D091430180288B0007800F012815D0A1
+:1013C0002E20015D20690430F8F741FD616AFEF7C7
+:1013D000A8F904E011430180201CFBF7CCFB6883D3
+:1013E00004E0206941803C0034CB0000A88B2169D7
+:1013F000C882E068F6F720F93080606D002804D0DC
+:1014000000220321707AFEF70DFF201C00F0B6F9D0
+:10141000707A06F045F870BDB0B5002406F022F9E8
+:10142000094A00210C234B433C0070CB00009D185F
+:101430006B685B6CAD78C31A012D02D1A34200DD4D
+:101440001C1C01310529F0D3201CB0BD0000607BBD
+:101450000100B0B5041C06F0A8FE0C20084960434A
+:101460004518288806F035F968683C00ACCB0000C8
+:10147000002806D02030007B012802D1201CFFF775
+:10148000A3FAB0BD607B0100FFB585B00FAE60CEA2
+:1014900038201E497043171C4418FFF77FF80122BB
+:1014A0001203002803D02088904320803C00E8CB22
+:1014B000000002E02188114321801198391CE0626C
+:1014C0000598F8F7D0FC011C2B1C381C069AFEF777
+:1014D00020F960800622201D0F49F3F772FC231CBF
+:1014E0000898303318700E980C49587065633C00AA
+:1014F00024CC0000002002900122049209480391AC
+:101500005A780188019200911978243B301C626B53
+:10151000FEF7A8FE09B0F0BDD4E40100126101009D
+:101520005D4E0000487B0100FFB587B0109812AFF8
+:101530003C0060CC00008C46A2CF4C23304C6B4367
+:101540001C19161C159A2785271C303706970597F6
+:1015500000233B73059F78731198271C60646160BA
+:10156000226040373E70614661870798311CF8F76A
+:1015700080FC3C009CCC00000599C8730A987870E8
+:10158000301CFEF773F8002801D0012000E0002095
+:10159000410002200140119A0120002A00D10020C0
+:1015A00008433872201C2E300799FDF7CFFF281C06
+:1015B00004F0AEF83C00D8CC0000FEF7FEFF4C2251
+:1015C000124B6A43D218012109032A32002804D0A1
+:1015D000101C12888A43028002E0108808431080A1
+:1015E0000B490020039106990290002204920848BA
+:1015F0000A7B4188231C3C0014CD0000019200911D
+:1016000079780833281C6268FEF738FE0BB0F0BD0D
+:1016100058E30100754F00003C7C0100B0B50C1C84
+:10162000012827D0802830D1E06C002808D069201C
+:10163000005D1849C00040183C0050CD0000043047
+:10164000016801310160201CFFF7E9FB134D503D9B
+:10165000E868002805D02E20005DFEF710F802F0A3
+:1016600042FE201C6168F3F72FFB403460780028AD
+:1016700002D106F012F8A860B0BD3C008CCD00008D
+:101680002006000E8128FAD1220C2004000E02212F
+:10169000FEF7E6FDB0BD0A210C20F4F77DFAB0BDDF
+:1016A0009C7B0100F8B5184E184F051C3479B879A9
+:1016B0000090201CF5F77CFF002806D03C00C8CD28
+:1016C0000000124838384068854201D1002D03D10E
+:1016D00010218620F4F763FA0D490020383948605C
+:1016E0000421201CFFF759FC0421201CF5F7EBFE18
+:1016F0000C21064A6143303A89180C7104203C00E1
+:1017000004CE000030710098B8710F20FFF7A6FDDD
+:10171000F8BD0000A47A010020100700F8B5041CF1
+:101720000F20FFF7C1FDF5F73BFF0125002800D092
+:101730000025164EB079164F00903879042801D153
+:101740003C0040CE0000002C03D111218620F4F78C
+:101750002CFA1048290638384460090E0C1C042065
+:10176000FFF721FC0321201CFFF741FC211C042072
+:10177000F5F7AFFE0C21074A69430420303A891877
+:1017800008713C007CCE00003C710098B071201CB8
+:10179000FFF750FD0420F8BD20100700A47A0100D7
+:1017A0000C2302495843401880687047747A01003E
+:1017B0006030C1798079814201D9012070470020D1
+:1017C000704700003C00B8CE0000014880687047B8
+:1017D00000004C7B010038B56921095C1823104AD0
+:1017E000594389188A6801328A604B69D21ACB68DA
+:1017F000934200D2CA6000220B4C0260221C2032AD
+:10180000957900AB1D703C00F4CE0000D2795A707F
+:101810000A68002A01D1486000E0106000AB08604F
+:101820001888E08438BD0000C47B01000010070068
+:1018300018230A495843411808690130086148686B
+:10184000002809D0486901303C0030CF00004861D1
+:10185000486802684A60002A00D10A607047002088
+:101860007047C47B0100F8B5124E104D0F4C0A278B
+:10187000211C0020E0602A31221C1832A160626124
+:1018800027820C4AE061A26160623C006CCF0000DC
+:1018900006202084081CFEF7D7F9201C0830F5F735
+:1018A00001FF4C3CAC427080E5D1FF203070F8BDA8
+:1018B00088E401000CE301003C7C0100126101009E
+:1018C000F8B5041C0B480E1C171C44703C00A8CF34
+:1018D000000005F000FF051C391C301CFDF7ABFFB4
+:1018E0000C21054A28180A30614308325050034839
+:1018F000891800688860F8BD00006C7A0100786E75
+:10190000010070B50B4E051C7078FF280FD03C000D
+:10191000E4CF00000C23084C58430834205805F04D
+:101920001DFE002806D170780C23584300198168E9
+:101930002943816070BD00006C7A010080B53021C0
+:101940000148F3F743FA80BDECE5010010B505F05E
+:101950003C0020D00000C5FE0A4944180CE0201CC1
+:1019600005F0F7FD002807D0F5F751FE002803D059
+:1019700013218620F4F731F9F5F749FE0028EED15E
+:1019800010BDB0360000FFB58BB0199B0D1C041CB8
+:101990001A203C005CD00000002B169900D11820C2
+:1019A00001901498002827D0FF20199B0130002BAC
+:1019B00001D1182300E01A230433824204D3D01A41
+:1019C000400840000004000C0D906A480088C21ACC
+:1019D0001204120C3C0098D000000492002908D098
+:1019E0008979664A4900515A049A511A0A04120C1C
+:1019F0000492049A824205D90020049002E06048D3
+:101A000004900D9001980104090C0A910020F4F74C
+:101A100084FA009000683C00D4D0000000260690B4
+:101A20002060002005900E9800240005000C09900D
+:101A30001A980D9F4007400F089007940395002DBA
+:101A40000DD02889B84204D836183F1A07D0ED685F
+:101A5000F5E73904090C281C3C0010D10000F4F70C
+:101A600038FBEFE7002E02D10799002971D1271C1E
+:101A70006C20F4F788FB0799041C002920D10794F7
+:101A80000020A0611898271C606017982437A06078
+:101A90000698206115980FC80FC73C004CD1000074
+:101AA00014985C2160630998085319986921E063D0
+:101AB0001B9808551C9860651998002823D0089831
+:101AC000069908831FE06C22201C0799F3F71AFA85
+:101AD0003C60019862213018C85315983C0088D1A9
+:101AE00000004021807AC8550020B86306980A9902
+:101AF000F4F71FFAF8600299F4F73BF9201C403024
+:101B0000818B059A1207120F1143818303985E217E
+:101B100002900198224A30180853126801213C00B3
+:101B2000C4D10000081C002A00D01B980006049AAB
+:101B3000000E964203D92C2211551B4904E0159939
+:101B40002C22097A11551949085C662108551C9800
+:101B5000002801D01F200855002D03D0E86803900D
+:101B60003C0000D20000002000E009E0E860059899
+:101B7000002601300004000C0D9F0590039D6DE7C9
+:101B80000098E0600299F4F7FAF800202060012143
+:101B9000A1636034608007980FB0F0BD000006615B
+:101BA00001003C003CD200005C4301003809000009
+:101BB000186701000E6101000A6101000148006818
+:101BC00070470000C46A01000249091D03C940189A
+:101BD00070470000C46901000148006970470000B7
+:101BE000C46901003C0078D2000001484069704798
+:101BF0000000C46901000148806970470000C469A1
+:101C0000010070B50D4E0020351C4035F0630DE02D
+:101C1000A068F4F77AF9B36D002B04D000220120FC
+:101C2000616BF3F795F83C00B4D20000201CF4F788
+:101C30009DFA281CFAF742FD041CECD170BD00008F
+:101C4000C4690100F8B51A4F0026F86B00282CD0A3
+:101C5000381C403000901DE01648B96B02F05CF86B
+:101C60000022201C144903F03C00F0D200007BFF4E
+:101C7000051C04D1386A0130386201360DE0A068D5
+:101C8000F4F749F9BB6D002B04D00022281C616BCE
+:101C9000F3F764F8201CF4F76CFA0098FAF711FDDA
+:101CA000041CDCD10748B96B02F03C002CD30000C7
+:101CB00025F80020F863301CF8BD0000C46901005D
+:101CC0003463010011300000C460010001490120AB
+:101CD000C8637047C469010080B50020054A00212F
+:101CE0001C2343439B1801300428D9663C0068D369
+:101CF0000000F8DBFCF7FDFC80BDC4690100014970
+:101D0000C86470470000C4690100014988647047D5
+:101D10000000C4690100B0B5041C0D1C211C028E1A
+:101D2000806A4031F3F72FF8002816D102213C00D9
+:101D3000A4D30000201CF4F76FFAE269C000101869
+:101D4000828BAB889A4204D182692B689A4208D26E
+:101D500001E09A4205D2002118300CCD0CC000E001
+:101D60000121081CB0BD0000F8B5061C002744681E
+:101D70003C00E0D300000FE00949486A01304862A6
+:101D8000A069002802D0F4F700FAA761266225684E
+:101D9000201CFFF752FB2C1C002CEDD1F8BDC469B0
+:101DA00001000330074A8108136850681B688900E6
+:101DB00009183C001CD400008B4201D3516000E0A4
+:101DC00000209060704700008C6E010070B5124ECC
+:101DD0008038C50070590C1C002804D101210D2049
+:101DE000F3F72EFF0DE02069002805D1A81981889E
+:101DF000E06801F03C0058D4000047FA20617159B6
+:101E0000201CF2F7BBFF041C002C07D0E068002860
+:101E100001D0F4F792F8201CF4F7BDF970BD5442DC
+:101E2000010070B5041C0D1C0E490622F3F735F8AD
+:101E30000026E66166623C0094D400000720302151
+:101E40000855E663281CF8F76BF8A076201C1430C0
+:101E50000622291CF3F724F80622291CA018F3F700
+:101E60001FF8266170BD00001261010080B5FDF70A
+:101E700085FE80BD014948603C00D0D40000704719
+:101E80000000E4650100024980B54968F2F77CFF73
+:101E900080BDE465010080B5F4F7E5F9074907481E
+:101EA0000EC90EC018380068002802D002F0B7FA38
+:101EB00080BD02F09EFA80BD00003C000CD5000001
+:101EC000B058010090730100054980B58968002071
+:101ED000002900D103200006000EFAF7E3FB80BDC5
+:101EE000606C010080B5034806220349F2F7DEFF6B
+:101EF00080BD000040800700126101003C0048D511
+:101F00000000B0B5041C0C4D0B1C211C00200C3D26
+:101F10000029094C05D02878211C1080021C181CAF
+:101F200007E011880E2907D80A06120E191C201C7A
+:101F30002A70F2F7BEFF0120B0BDB06901003C007D
+:101F400084D5000010B500200A4A012111600A4C16
+:101F50000AE0021C016A5032914205D061783C23AC
+:101F6000594309190431016204F0BAFB0028F0D189
+:101F700010BD0000DC62010068610100044880B50A
+:101F80003C00C0D500000068002803D0011C1020D0
+:101F900004F0C7FE80BD286101000322111F80B537
+:101FA0000020FBF776F980BD000080B50BF0B9FA90
+:101FB00080BDFFB583B0161C002101911F1C0821B4
+:101FC00002AA3C00FCD50000FAF70EFF041C2AD13F
+:101FD00002984168490001D4092424E0FAF752FF2D
+:101FE0003860029841684902CD0F291CFAF744FF76
+:101FF000011C306038680006000E00F01BF8002855
+:1020000001D10A243C0038D600000FE03168029864
+:102010002B1C01AAFAF7D7FF002806D00198002848
+:1020200004D004990968814200D2032401980499DC
+:10203000086007B0201CF0BD000070B5051C0E1C28
+:10204000012400F084FF3C0074D60000002808D072
+:10205000032D01D0042D04D10320C003864200D3F8
+:102060000024201C70BD00007CB5151C061C0C1C37
+:10207000291C6A4601ABFFF7A5FF002802D1002CFE
+:1020800001D103207CBD17483C00B0D6000000AB56
+:1020900006601879072821D202A31B5C5B009F44CD
+:1020A00000001D040406101713000420EDE72A1C8D
+:1020B000211C0120009BF2F781FE002812D106208E
+:1020C000E3E72A68009905E000983C00ECD60000A0
+:1020D0004278811C01E02A686946201CF2F7FEFE66
+:1020E00003E004218720F3F7CFFD0020D0E70000B4
+:1020F000F86B0100F7B586B00E1C082105AA0698FA
+:10210000FAF77EFE041C45D1059841683C0028D7AB
+:10211000000002904902C90F002504950391089F11
+:10212000FAF7D5FE019002A903C9FAF7C6FE019994
+:10213000052914D202A35B5C5B009F4400000E03E0
+:10214000060C030087420ED807E087420BD83C00FC
+:1021500064D700000125C01B049007E0874205D129
+:10216000012503E005218720F3F794FD002D01D11F
+:10217000032415E005984168002969DA3A4A06996E
+:102180001160FAF791FE071C05980399FAF786FE8D
+:102190003C00A0D70000051C011C381CFFF75FFFA6
+:1021A000002801D10A245EE0072F57D202A3DB5D8D
+:1021B0005B009F440000530404062E504800042492
+:1021C00051E00498002801D1002714E0089908186C
+:1021D00000043C00DCD70000000CF4F72BF8071CCF
+:1021E000311C089AF2F786FE089804993818F2F71D
+:1021F0002FFE089804993E1C40180890311C0020BE
+:1022000008AAF2F7ECFD002800D10524002F2DD0FC
+:10221000381CF3F73C0018D80000EDFF29E00399C3
+:10222000002904D0059840688702BF0A00E0002713
+:10223000311C281C089AF2F760FE0499002903D08B
+:1022400008982818F2F707FE002F12D0F2F7CCFDFD
+:102250000FE0311CA81C3C0054D80000089AF2F78B
+:102260004FFE0898687007E0FFE7072404E00824A1
+:1022700003218720F3F71AFD201C09B0F0BD0000F0
+:10228000F86B01009EB51C1C00AB19720092002275
+:1022900001946946FBF708FA3C0090D800009EBD07
+:1022A00000008FB5029200220090019003916946D0
+:1022B0000420FBF7FCF98FBD0000B0B50C1C012811
+:1022C0000AD0032819D004282CD1606801F035FC0D
+:1022D000011C83200CCC22E01C203C00CCD8000048
+:1022E00014496043401814494518281CF8F746FC67
+:1022F000A968002903D0221C082005F071FEB0BD9A
+:10230000208CC82801D3042004E0652801D30220D2
+:1023100000E001202084201C03F0DCFA3C0008D9F6
+:1023200000002268E368011C8220FFF7B4FFB0BD03
+:10233000A0210820F3F7C3FCB0BDDC71010064EEFE
+:10234000FFFF0348044A81685161C068906170478B
+:102350000000F4680100C07101000349044A3C0018
+:1023600044D90000086B90608868D0607047000016
+:10237000905C0100C071010000B5FFF7F1FFFFF7AD
+:10238000E3FF00BDB0B50D1C002814D00B490C4C68
+:1023900088686269C968801AA269891A401804D0DD
+:1023A0003C0080D9000064235943F2F7C4FE206149
+:1023B000FFF7CDFF206928600120B0BD0020B0BD2F
+:1023C0000000F4680100C0710100B0B50D1C0028C8
+:1023D00017D00C490D4C086BA2688968801AE26816
+:1023E000891A3C00BCD90000401807D022889042CE
+:1023F00004D964235943F2F7A1FE6060FFF7B6FFEA
+:10240000606828600120B0BD0020B0BD905C010074
+:10241000C07101007CB51068002802D000F024F8DB
+:102420007CBD0F483C00F8D90000C0698468E068B2
+:10243000256AA669F3F7E3FDE169F3F706FD201CC1
+:10244000E2694030C18B12898918C1830749019420
+:1024500000912869331C82880168E068C068F8F739
+:102460001EFCE0E700003C0034DA0000846A010052
+:10247000915E0000F0B58569066A041CC06885B0ED
+:10248000C068002801D1F3F757FC0A49029504946B
+:102490000391306982880168262001920091435D92
+:1024A000E068E1692A1C0E323C0070DA0000C06866
+:1024B000F8F737FD05B0F0BD0000E9D9000010B510
+:1024C000141C0548FCF77BFBA068F3F79EFDE16850
+:1024D000C160201CF5F7BBFA10BDA06A01007CB5F5
+:1024E000041C6030027BA16900913C00ACDA000062
+:1024F0000192221C211C3831A06848320D1C6369EE
+:1025000003F07AFB08210020F3F788FDE0602669DC
+:10251000B16B002901D0102300E018230549019474
+:1025200000913168CA180823011C281C3C00E8DA15
+:102530000000F8F720FD7CBD000081DA0000F0B556
+:102540004668171C041C0121301C9BB0FAF70DFCD7
+:102550000025002803D013490A7A012A01D1012558
+:102560001CE088624E612089C861608900283C00B7
+:1025700024DB000003D000200884488404E0E068E5
+:102580000884208A4884608A8884086B002803D1E4
+:1025900001A803F077FC04E001200861002002F0AC
+:1025A00039FB3D711BB00120F0BD0000F46E01004D
+:1025B0003C0060DB000010B5041CF7F7E8FB0028C6
+:1025C00011D14B20005D01280DD1201C04F085FAAB
+:1025D0000021201C04F0F3F8A0690021C207D20FEB
+:1025E0000420F4F7D8F910BD000038B5041C04F03D
+:1025F00036F93C009CDB0000002803D04030807A94
+:10260000002825D10C2029210855211C0622A018BC
+:10261000F2F7A0FC201C06220E49F2F79BFC0120D9
+:10262000E06160620720302108550025E56306203F
+:1026300000AB18803C00D8DB0000E068002801D027
+:10264000F3F7DBFC02216846FDF773FBE060201C1A
+:10265000FFF769FCE560201C38BD12610100FEB582
+:10266000051C0E1C152000AB98801421171C00209F
+:10267000F3F7E3FC02903C0014DC0000046806223F
+:10268000311C601D2571F2F76BFC0622391C201CE1
+:102690000B30F2F765FC01A8FFF752FCFEBD00000D
+:1026A00080B50023FBF75CF880BD000070B5051C09
+:1026B00008350F4E291C041C3C0050DC000006228B
+:1026C000301CF2F750FCA088B082281C05F0A1FF56
+:1026D00000280BD0E0883061281C04F0CCF8A188D9
+:1026E000403041800020F4F7B8F902E00420F4F70C
+:1026F000A0F9002070BD707C01003C008CDC000063
+:1027000080B50020FBF7F8FB80BD000070B5041C0D
+:102710000430051CFDF732F8002809D00020F7F737
+:1027200037FC002804D00622011C281CF2F71EFCEE
+:102730000A4E0622291C301CF2F718FC3C00C8DCAB
+:1027400000006089F082281C05F069FF002803D092
+:102750000220F4F788F902E00520F9F7F4FA0020E6
+:1027600070BD707C010010B5041C007904281CD2D7
+:102770006079012801D0032804D1002201213C0006
+:1027800004DD0000A01DF9F769FC6079002804D180
+:1027900022790021F9F762FC0AE0032808D100241D
+:1027A000221C00210020F9F759FC0134042CF7DB2E
+:1027B000012010BDF0B597B0171C051C0430041C97
+:1027C0003C0040DD000015AA16A905F0E2FE002835
+:1027D0002ED015984B21095C002923D0012902D065
+:1027E00002291FD101E004F090F9AD7A1348169E3A
+:1027F00005800622211C0830F2F7C1FB221C311C87
+:1028000002A83C007CDD000000F074FB0A200AA94D
+:10281000487200AB9D80022101A8FDF79FFA059048
+:1028200002A8FFF795FBF3F7F7F90021159803F0DD
+:10283000E1FF002000E00120387117B00120F0BD59
+:10284000987C01003C00B8DD000080B50120FBF75A
+:1028500062FB80BD0000B0B5041C807D151C0A1C05
+:10286000C007C0170130211CF9F7FBFC002803D179
+:10287000042028710120B0BD206AF7F776FE606A57
+:10288000F7F77BFE206A3C00F4DD0000FEF788FAD3
+:102890000020B0BD10B5141CC27981798088F7F78B
+:1028A000A1FA2071012010BD80B50123FAF770FF55
+:1028B00080BD0000F0B5041C081C00210F2891B059
+:1028C00000D30221002941D13C0030DE0000C000CD
+:1028D000244F1090C619B288216802A8F2F75BFB5A
+:1028E0002189B088091A002907DD09042268090C2A
+:1028F0001018F3F7C0FB051C00E00025B07980211B
+:10290000884317497831095C00203C006CDE0000E8
+:10291000F3F7B4FB071C00681349019010980B589B
+:10292000019A291C02A8F2F7ACFA0090281CF3F7D0
+:1029300073FB201CF3F782FB0098002808D0029854
+:1029400001990860B079391CFAF720FF3C00A8DE35
+:10295000000011B0F0BD381CF3F761FBF9E72D2042
+:10296000F3F7F5F9201CF3F76CFBF2E700002444C1
+:10297000010070B5051C2035061CA879042848D232
+:10298000E979012913D1301C283003F092FF3C0073
+:10299000E4DE000000283FD0011C8C310165A979DC
+:1029A0004C22041C11548118416250340462E11E0F
+:1029B00081620BE000292FD13C2218494243541870
+:1029C000174A04341268002A00D14870002C23D022
+:1029D0003C0020DF0000351C3035E879012801D0AB
+:1029E000052801D10620E8712022311D2068F2F768
+:1029F000DEFAB08CA080E879A071A8790025A063E8
+:102A0000012060810020E0602E36E80000191830B7
+:102A100008223C005CDF0000311CF2F7CBFA0135E4
+:102A2000042DF5D3012070BD68610100DC62010056
+:102A300010B5041CC07A012801D0032807D1201D3D
+:102A400003F040FF002802D0A17A40304173E07AC1
+:102A5000002801D03C0098DF0000032802D1A07AB2
+:102A600002490870012010BD00006861010070B5C6
+:102A70000E1C0321041C301CFCF7E1FB002801D0D4
+:102A8000857800E000250B48321C00680368207C34
+:102A90008007C00F211C3C00D4DF0000F7F762FE66
+:102AA000002805D00121281CFDF7FEFB002000E0D6
+:102AB000082003F0C5FF002070BD0000E4650100A0
+:102AC00080B5426800880121490608432D2105F0A0
+:102AD000D3FB80BD034901203C0010E00000497891
+:102AE000022900D0002070470000846601008CB5E8
+:102AF00001281FD100290DD001290BD0022901D0B6
+:102B0000032916D10020F9F714FC932000AB18809C
+:102B1000002008E0012900D000203C004CE000002B
+:102B2000F9F70AFC832000AB1880022000F0CCF8F3
+:102B300001906846FFF73AFA8CBD01210E20F3F7A9
+:102B40001BF9F9E7FFB5171C1E1C1421002083B0E8
+:102B5000F3F7ACFA051C0468122000AB3C0088E0D7
+:102B6000000098800622601D0399F2F732FA0020D7
+:102B7000207127730499201CE172311C06220D304C
+:102B8000F2F727FA029501A8FFF713FA07B0F0BD94
+:102B90000000F8B5061C0F1C0C210020F3F73C00C8
+:102BA000C4E0000089FA0568041C281D0622311CB7
+:102BB000F2F712FA6F81201CF8BD0000B0B5041CBA
+:102BC0000D1C08210020F3F777FA01688C718D80C5
+:102BD000B0BD0000F7B50E1C1021171C0020F3F744
+:102BE0003C0000E100006BFA0468051C201D062271
+:102BF0000099F2F7F4F96681A781281CFEBDF3B5B0
+:102C00000C1C0821002085B0F3F759FA061C076850
+:102C1000E068002802D00599012904D1059838718F
+:102C200000203C003CE10000787156E0036801217F
+:102C3000039320690290FCF717FB051C02983221D0
+:102C4000FCF712FB0022D243011C281C04ABF7F74F
+:102C5000B9F8002804D1301CF3F702FA00263CE052
+:102C6000002D05D03C0078E100006878093807287D
+:102C700001D8322028701C210020F3F726FA019099
+:102C80000568011C301CF3F740F9E068F3F70BFA14
+:102C9000A861E1680198F3F738F90020E060059831
+:102CA0008021084338713C00B4E100000120211C60
+:102CB00014317871281C0622F2F79AF9029A292019
+:102CC0000092005D0121E26A082800D00021281C42
+:102CD000039B02F09DFFA06B2861206C68617F3030
+:102CE00001D10F206861301C3C00F0E1000007B00A
+:102CF000F0BD10B5041C08210020F3F7ECF90168C1
+:102D00000C7110BD00000148006870470000286188
+:102D100001000149086070470000E4650100021CE1
+:102D200001200006084380B52D213C002CE2000064
+:102D300005F0C0FA80BD000080B5012807D0F12859
+:102D400025D0F32827D1022002F0BCF980BD00294C
+:102D50001AD0012903D0F229F8D188211CE01048AB
+:102D60000178002905D140780128EFD13C0068E2C4
+:102D7000000000F016FA80BD0B4814300089FCF703
+:102D80005AFC011C01220F2005F09FF980BD04F0C0
+:102D900052FA80BD0020FAF732FE80BD02210F20DA
+:102DA000F3F705F880BD84660100014800783C0017
+:102DB000A4E2000070470000746601000149002091
+:102DC00048607047EC650100F8B50E1C134D011CFE
+:102DD000141C6822281C1F1C0C30F2F771F90F49D3
+:102DE0000020AC394860012129601921192C6E6737
+:102DF0003C00E0E2000000D3211C2981094914397C
+:102E000088738F74C878012808D001210F2005F03D
+:102E10009CF91920FCF715FCFBF799F80120F8BD87
+:102E200000009866010080B5012802D100F02FF85B
+:102E300080BD3C001CE3000001211D20F2F7C0FF13
+:102E400080BD00007047000001200749000580B5E3
+:102E5000886000228021162005F04CF904F034FD32
+:102E60000249086180BD000000100700246D0100C8
+:102E7000064A80B53C0058E30000D16A814207D180
+:102E8000107F2423044958434018C068F2F735F8EE
+:102E900080BDD4790100944601001D481CB500781E
+:102EA00000282DD01C480068002829D01A4A1A4B47
+:102EB000043211681C693C0094E30000A14222D155
+:102EC00051685B6999421FD1164949689368C91ACC
+:102ED000814219D2D06814490130D0600968884213
+:102EE0000CD90622FF216846F2F72EF9F3F7ACFC65
+:102EF000011C0023002268463C00D0E3000002F0E1
+:102F0000CEF901221D200A4905F0F7F81CBDF7F79C
+:102F100088F904228118081CFCF727FBF6E71C75CA
+:102F200001004475010028610100905C0100F05926
+:102F30000100A086010080B501683C000CE400009F
+:102F4000002915D10079022812D1081CF7F780F862
+:102F500000280DD003F0F2FC0830418F002907D182
+:102F60008069002804D08079062801D1FCF718FB7D
+:102F700080BD000001490020886270473C0048E4A1
+:102F8000000078690100B0B5054D041CA91DFFF7CC
+:102F900014F80622291CA018F2F74BF8B0BD707C7B
+:102FA0000100B0B5041C151CFFF707F80622291C08
+:102FB000A018F2F73EF8B0BD000080B50A303C0022
+:102FC00084E40000F7F7BCF90123002803D005488A
+:102FD0000078012804D100220021002003F0C6FD62
+:102FE00080BD0000A079010080B5002300220021EF
+:102FF000002003F0BBFD80BDB0B5054DAC790A1CC7
+:103000003C00C0E40000011C0123012003F0B1FDDD
+:10301000AC71B0BD000020100700F8B5061C0C1CF8
+:10302000880702D5F6F747FA10E060070ED5174F6C
+:10303000A320C05D154D102800D3154D04F059FC98
+:10304000B96F3C00FCE40000401A291A0120F6F791
+:10305000C1FAE0071149C00F48600CD00D4C443C48
+:10306000207803280FD1002E06D0F6F7F9F9011CBD
+:103070000120F6F7AFFAF8BD09490120F6F7AAFAE0
+:10308000012020703C0038E50000F7E70121301CEA
+:10309000F6F789FAF2E7A60E0000A46C0100C40955
+:1030A0000000B057010040420F0080B5062804DB45
+:1030B0000521FF20F2F79FFE80BD034AC00011509A
+:1030C0000121801801713C0074E5000080BD000002
+:1030D0009C5A01000148806870470000D0600100E0
+:1030E000B0B5084C251D281C216800F0F1FE002811
+:1030F00003D101210448F2F7CFFA281C216800F01F
+:10310000FBFEB0BDC06001003C00B0E500002C102B
+:103110000700B0B5104D0C1CA868002802D104F0BF
+:10312000F4FB2860201C04F038FB0121032003F08D
+:10313000C4FE04F0F0FBA86800280BD104F0E5FB06
+:103140002968001B401A696840183C00ECE5000043
+:103150004108401828600120A860B0BDD06001007F
+:10316000F8B51F4E0024B068002802D104F0D0FB4F
+:10317000706005F061F804F08FFB051CF9F766FE3E
+:103180003168184A41181268E80B002A3C0028E60A
+:10319000000000D1A80A401885421FD9144F2D1AEB
+:1031A000381C2030817900AB1970C079587005F057
+:1031B0006EF8002803D102218F20F2F728FE291C87
+:1031C0000C48F268F8F709FC002804D0011C3C0008
+:1031D00064E60000281CFFF7A5FF012400AB188857
+:1031E000F88405F047F8201CF8BD0000D06001000D
+:1031F000F474010000100700891301000149012047
+:10320000C8607047D0600100064880B5006801289A
+:103210003C00A0E6000007D10448AC38016903482F
+:1032200000F079FEF3F72BFA80BD98660100346355
+:10323000010080B542788168007903F0DEFF002844
+:1032400001D1F5F7B6F980BD00001FB504F069FBA8
+:10325000F6F73C00DCE6000091FF164C022803D193
+:10326000FFF7DCFD042802D3002020701FBDFBF710
+:10327000F7FC0028FAD1606A0028F7D02078800790
+:10328000F4D40921162004F093FF012020700B4C88
+:10329000094902903C0018E700000194009104F0F5
+:1032A00046FB001903906846FDF7B5FB0022162186
+:1032B000842005F03EF8DCE70000606C010061ED61
+:1032C000000040420F00234870B580789CB0012870
+:1032D0003ED1204C09A83C0054E70000803C611C12
+:1032E000FEF792FE042011AD6872A06F19A9189024
+:1032F0007C20005D012608711D20005D002806D09D
+:1033000010961296FCF7F6FA2872207A1190F3F7CD
+:10331000CDFF6A21085340343C0090E700000022B2
+:1033200001A906A8F6F7CDFF211C0020FBF7CBFB77
+:1033300006A9FBF7C8FB01A9FBF7C5FB0A49096809
+:10334000002907D0331C0A226946FBF7DAFB009AF2
+:10335000072191700C9009A8FEF73C00CCE7000013
+:103360007BFE1CB070BD000084660100E4620100B9
+:10337000F8B5041CC068FF22016812020E1C087B0D
+:10338000497B090211400843051C311C0622A01884
+:10339000F1F77CFE0622B118201CF1F73C0008E88A
+:1033A000000077FE280A290208430004032149028D
+:1033B000000C884208D2E06801890E390181E0687A
+:1033C00001680E310160F8BD0026201C103003F0AA
+:1033D000E8FA218B002905D1E17D00290BD03C00C2
+:1033E00044E800008069800708D4E068012601896C
+:1033F00002390181E0680168023106E0E068018974
+:1034000006390181E0680168063101601449002035
+:103410000B1F42009A5AAA4202D11149063102E01A
+:103420003C0080E8000001300228F5D3E068062265
+:103430000068F1F734FE012ECBD1812000AB18805B
+:10344000E17D208B49030843310308430004000C4D
+:10345000010A000208435880E06819880068C180AA
+:1034600059883C00BCE800000181B5E76A460100CC
+:10347000B0B50D1C01890622083101810468044998
+:10348000083C0460201CF1F70DFEE580B0BD000093
+:103490006A460100F8B5002901D0002801D10020BA
+:1034A000F8BD09043C00F8E80000090CF2F743FFFE
+:1034B000061C051C002720E02C892968022C01D25B
+:1034C000022001E048780230844202DD241A091803
+:1034D000F4E7844210D0011B0A040104090C120C09
+:1034E000281CF2F79EFE3C0034E90000002806D1BB
+:1034F000E868F2F72DFEEF602889001B2881ED684F
+:10350000002DDCD1301CD1E7F8B58568041C80693A
+:103510002E1C00280DD07168F2F7F6FDA069F2F7B5
+:1035200017FE06E00021C1603C0070E90000F16078
+:10353000A08D36680138A085F0680028F5D1306884
+:10354000A060A08D01380004000CA08502D0201CD2
+:10355000F9F739F82A4F2A480068002803D00621D5
+:103560006868FAF77CFD686800683C00ACE9000018
+:10357000817800292BD1C178002930D1218E0139E1
+:103580002186FBF715F8A16A081AA062E169884252
+:1035900003D904210220F2F767FCB86800281ED086
+:1035A0001A49208E49680C22521A90423C00E8E9E0
+:1035B000000008D319239B01AF2292015943A06A4E
+:1035C000511A88420ED200210C2003F0ACFC0020DE
+:1035D000B86007E0012905D1C078172802D1A08E74
+:1035E0000138A0862A1D06CAE0686369F1F73C002D
+:1035F00024EA0000DCFCB54201D02D68B4E7A08DC0
+:10360000002803D10548B96900F09EFCF8BD000010
+:10361000FC5A0100CC5C010018570100C460010095
+:103620008907074BCA0F80B5197C002906D0814352
+:103630003C0060EA0000197403D10721152004F052
+:10364000A2FE80BD00007869010080B5011C012048
+:10365000FFF7E9FF80BD80B5011C0220FFF7E3FF03
+:1036600080BDB0B51B4C6068FCF72FFF20680025BB
+:1036700040683C009CEA0000002803D0FDF718FCDD
+:10368000206845606068FCF7C5FE1448616800F07A
+:1036900061FCA07A012805D0022803D020680068C8
+:1036A00000F0DEF801211F2004F0B2FD00211F20F0
+:1036B00004F0AEFD3C00D8EA000002211F2004F017
+:1036C000AAFDA57221682C20405C8968F1F776FC80
+:1036D0006068FCF7E4FE20680562B0BD0000147A63
+:1036E00001003463010004490A68C868926A002A2C
+:1036F00001D0096908183C0014EB00007047000075
+:10370000147A0100B0B5134C051CA07A01380228C8
+:1037100019D801211F2004F081FD2068FC23011C21
+:103720002030027B1A400273002D0FD001231A4370
+:103730000273A07A032807D13C0050EB000001205F
+:1037400001F0E7FD002801D1FFF797FFB0BD4B6204
+:10375000B0BD022111430173F6E7147A010010B5E0
+:10376000041C0A30F6F743FE00280CD022880A49D0
+:103770000B7A9004C00F002B06D13C008CEB0000AC
+:103780001206920E202A00D10120C86010BD002828
+:10379000FCD100222421802004F004FE10BD000092
+:1037A000047A010080B5021C1F21802004F0FAFD7C
+:1037B00080BD0000F8B51D4E041C30683C00C8EB0D
+:1037C00000001D1C4768201CF1F70AFCFBF787FA74
+:1037D000002804D0281CF2F72AFB002828D12088D2
+:1037E000400525D430680068FEF759F9002803D158
+:1037F000FDF789FAF1F7EDFB3068002540683C00E1
+:1038000004EC0000002803D0FDF764FB306845603D
+:1038100020880009000703D104F0C8F86188451822
+:1038200030684561816A0131816220888004C10F5E
+:103830000248F8F7CDFFF8BD147A0100B1EB0000A3
+:103840003C0040EC0000B0B50E4C051C6068FCF775
+:10385000F6FD0C48616800F092FB0021242004F082
+:10386000ECFC0022D2438021242004F0B8FC00208C
+:10387000E0602072206801682806000EF1F7B0FBB6
+:10388000B0BD3C007CEC0000047A01003463010010
+:1038900010B5041CC068F2F785FC201CF2F7B0FDDF
+:1038A00010BD000070B51C4E051CB07A2C1C4034B5
+:1038B000022826D1A08B3189884222D13068416A02
+:1038C000002908D03C00B8EC00002030007BC00785
+:1038D00004D5012001F02FFD002818D160780028C0
+:1038E00009D1306802232030027B0D495208520072
+:1038F0001A43027301E0FF21F53101221F2004F079
+:103900006EFC0320B0723C00F4EC000002E0281CC6
+:10391000FFF7C4FF6078002803D1291C012003F0C1
+:1039200029FB70BD147A010050C30000B0B5041C1F
+:103930006034E0790E4D00280AD10220A872286870
+:103940004068002804D10B483C0030ED0000FDF732
+:10395000D0FA2968486004F038F82968C861FFF790
+:10396000E0FE29680969081A03F06FFF002801D0FA
+:10397000E079A071B0BD147A0100C1EB0000F8B588
+:10398000041C002604F021F8051C3C006CED00002E
+:10399000224800270770A10704D0E107C90F016280
+:1039A000C5610126416B002934D1002E32D0061C9E
+:1039B000F9F744FF316B1A4B411AA20712D5DA68A6
+:1039C000002A08DD91421A6802DA14093C00A8EDC9
+:1039D0000000A21806E01409121B03E00A4302D1FA
+:1039E0001A6852001A60B7630AE0B26B0132B26320
+:1039F000022A1A6801DD940800E01409121B1A60FB
+:103A0000D9603063F56218680849884201D93C00E2
+:103A1000E4ED0000196003E0642801D2642018601E
+:103A2000F5F7FCFDF8BD0000606C0100B057010027
+:103A300020A10700FEB5041C0020504D0021686144
+:103A40002069FBF7B3FC071C20690321FBF7AEFCE0
+:103A50003C0020EE0000002803D0807829788842BE
+:103A600063D1474D201C1430391C061C2A7802F003
+:103A70005AFA002859D1E068056841480195583044
+:103A80000290FBF76AFF3E4D193500280BD0281C29
+:103A9000FBF73C005CEE000055FF00281ED1311CF6
+:103AA000281CFBF765FF002842D017E0281CFBF715
+:103AB00049FF002806D0391C0298FBF763FF002855
+:103AC00036D00BE0391C0298FBF75CFF00282FD0A2
+:103AD000311C281C3C0098EE0000FBF74CFF00282E
+:103AE00029D0301CF6F7ADFC294A1832117C002988
+:103AF00004D0516A002901D000281CD1906A002806
+:103B00003BD01378019D01216D8901202B409B073B
+:103B100011D0A36B1E4E3C00D4EE00001D1C7F355F
+:103B20009836002D14D0558A002D08D15569AB4226
+:103B30000FDA0020174D01236B610AE029E0F578C8
+:103B4000022D06D1144F55693F68ED19AB4200DADA
+:103B50000020236C1D1C7F353C0010EF000010D0AE
+:103B6000558A002D03D19569AB420AD208E0F57859
+:103B7000022D06D10B4E95693668AD19AB4200D2C5
+:103B80000021084308D0106A002801D0F1F74BFA51
+:103B90000021201C01F0B9F9FEBD3C004CEF0000F3
+:103BA000EC650100C4670100CC6701003EB5056A01
+:103BB000041CC068F2F734FBE169F2F757FA201CE5
+:103BC0004030C18B0431C1832B6910499879062894
+:103BD0000AD1988801910294009060693C0088EFB6
+:103BE00000001B680168E0680322C0680AE0022840
+:103BF0000BD11020009001910294E068A369C06885
+:103C000000220021F7F70FFB3EBDF2F7A6F9FBE714
+:103C10000000BDEF000080B5D1685069C9683C0064
+:103C2000C4EF0000C160D168C860111C4031CB8B6B
+:103C300000891818C8831068002802D0FFF7BCFF5D
+:103C400080BD0348FBF7CCF8006AFEF7F5F980BDAC
+:103C5000A06A0100F8B5061C0A2430070109A00774
+:103C60003C0000F0000001430F1C0A4D2F6004F0DF
+:103C7000FAFEAD682801000FB04205D0013CF4D235
+:103C800001219B20F2F741F92802000A082E01D1F8
+:103C900031050843F8BD600007000122D20580B558
+:103CA00000213C003CF00000042004F0DDFC0F206B
+:103CB000FFF7D6FF0F2109040840000C80BD00006B
+:103CC00080B50548FDF74AF90448FDF77BF804483C
+:103CD000FDF76CF880BD000089340100ED24000080
+:103CE000111C00003C0078F0000080B50248F3F79A
+:103CF0002AFC80BD0000D124000080B5F2F753F902
+:103D000080BD80B50021002001F051FE032002F0AB
+:103D100046FF80BD0000064880B5C169002906D174
+:103D2000016A002903D13C00B4F00000816B034814
+:103D300000F05EF980BD0000C46901003463010039
+:103D400010B5044C206AFCF7B3FB0348216A00F06D
+:103D50004FF910BD1C75010034630100B0B50D4C66
+:103D6000207C002802D001213C00F0F00000FDF78B
+:103D700086F900252570A068012803D10020A560E0
+:103D800001F08FF8A078012805D103489838006920
+:103D9000FCF7EFFBA570B0BD00008466010080B5A4
+:103DA0000021012001F009FE80BD3C002CF1000043
+:103DB00038B569460025F8F7B7FE041C01D101208B
+:103DC00038BDA068002804D00099A131082004F073
+:103DD00073FA1C21201CF1F7A3F9281CF0E700005E
+:103DE000FEB5071C4C233949584344183C0068F180
+:103DF0000000251C4035287A37494876211C30318F
+:103E000002910C23C856421C0A73497B884246DA49
+:103E10003248007880073ED500200190F6F7AFFACF
+:103E200000282ED0AC210958002901D0E4303C00F4
+:103E3000A4F1000000E0CC30061C4068002825D02A
+:103E40000299087B012811D1201C2E302978F6F721
+:103E5000EDF9716803E07218127A824203D9FF31DA
+:103E60000906090EF7D1A97001200190231C3E33E9
+:103E70003C00E0F100001A1D301C00970199F8F792
+:103E800058FA002811D0A8788019007A00E00020A4
+:103E9000687068780121FBF7E0FD6060381C01F074
+:103EA00014FE381C01F0A5FBFEBD0299087BFF3013
+:103EB00048733C001CF20000381CFCF719FC03F0AE
+:103EC000C3FD061CFBF78EFE41007618687861681A
+:103ED000FBF76AFE3118208D3B1C054A03F012FEE9
+:103EE000E5E7000058E30100308007001D75010080
+:103EF000D54E00003C0058F20000031C044880B579
+:103F000002792030034900F030F880BD0000AC7C1D
+:103F10000100C4670100031C044880B5C278383032
+:103F2000034900F022F880BD0000AC7C0100C867A6
+:103F30000100031C04483C0094F2000080B5827923
+:103F40005030034900F014F880BD0000AC7C010043
+:103F5000CC670100031C044880B5427968300349EE
+:103F600000F006F880BD0000AC7C0100D0670100C5
+:103F700010B5002484800B603C00D0F20000191CB6
+:103F8000514301601906091610220630F1F79FF916
+:103F900010BDB0B5064D0024AC60EC60EC612C6245
+:103FA00002F0F1FC00F00DF8EC622C70B0BD447D25
+:103FB000010080B580210148F1F73C000CF30000BE
+:103FC000C7F880BD04660100F8B5074F002400263D
+:103FD00018206043C519EE6003F042FD103501342E
+:103FE000022C41C5F4DBF8BDB87D0100002303605D
+:103FF000044B002900D1191C4160002A3C0048F301
+:10400000000000D11A1C82607047BD75000010B519
+:10401000074C206801302060202803D958215820FF
+:10402000F1F79DFF216801200139884010BD605BD8
+:104030000100B0B50D1C041C2168002000293C00C3
+:1040400084F300000AD0A943216007D1A068F1F7EA
+:1040500023F8002802D1216829432160B0BD000067
+:10406000B0B50D1C041C2168002029432160A94221
+:1040700007D16068F1F710F8002802D12168A94340
+:104080003C00C0F300002160B0BD1A4BB0B59A6A85
+:1040900000280BD0002A07DBB8242458013CA41ABE
+:1040A0000019B030007B02E00E2000E00D205D6AB8
+:1040B000124C002D01D0207800E0205CFF24A834B1
+:1040C000C4403C00FCF300009C60F524C4409C61AB
+:1040D000FD24C440DC61FF242934C4405C61FF241A
+:1040E0005334C44000200C3311C3002905D0002AEA
+:1040F00003DC0221504200F065FBB0BDAC7E010044
+:10410000B85201003C0038F4000010B5134C1348BD
+:10411000211CFF3169310EC90EC0211CFF31242240
+:1041200075310F48F1F751F8211CFF313C229931CC
+:104130000D48F1F7A6F8FCF7A2FF211CFF31102271
+:10414000D5310948F1F73C0074F4000041F8211C16
+:10415000FF312822E5310748F1F796F810BD00003D
+:1041600040630100008007000C80070030800700DA
+:1041700080800700A0800700F8B5002859D004F01F
+:104180004BF9F8F7B3FB00223C00B0F4000001212A
+:10419000132004F07CF92A492948496C0160002168
+:1041A0002948C9434160264C1434616C8160A16C7C
+:1041B000C1600020254D022601016E500A194F19D9
+:1041C000503204370ECA013008283C00ECF40000DD
+:1041D0000EC7F4DB1422211CCC311E48F1F75AF82B
+:1041E0001D4881780909090181700021C170417061
+:1041F000211CE0310A78027049784170211CE831B5
+:1042000030220830F1F746F8211CFF313C0028F538
+:104210000000502219311248F1F73FF88320800046
+:10422000142221181048F1F738F811204001842297
+:1042300021180D48F1F731F8FFF773FF201CF1F753
+:1042400028FDF8BDFFF76DFFFBE7082007003C00E5
+:1042500064F500002C6301004020070000300700D7
+:104260000040070000500700006007001000070032
+:1042700000900700F8B5051C1848C068002825D034
+:10428000164E013674783078271A7919201CF1F708
+:104290003C00A0F500004BF80090291C201CF1F711
+:1042A000B2F8C119201CF1F742F8601A3070701E84
+:1042B000806800280DD05336F4780099201CF1F75F
+:1042C000A2F8B178611A4118201CF1F79CF8601A25
+:1042D000B0703C00DCF5000003485C300169C26846
+:1042E00069435118C160F8BD447D0100B0B50C4D63
+:1042F000E868296940187D2109014418201C03F051
+:104300000BFB00280AD003F0CFFB011B2869F1F753
+:104310007DF801303C0018F600000004000CFFF7A7
+:10432000B2FFB0BD0000A07D010070B5104C606808
+:104330008025A84360602068284320600D4E301C13
+:104340001030F3F7C8FC002803D107218520F1F7CE
+:104350002AFE084800213C0054F6000080684163B2
+:10436000C06C10307061012030612068A84320606B
+:1043700070BD0000F400070000300700247E01003B
+:10438000011C0020052980B509D202A35B5C5B00FB
+:104390009F440000030303033C0090F60000030069
+:1043A000FFF7CFFC80BD0122920280B500210720DB
+:1043B00004F0ABF980BD80B540220021002004F05C
+:1043C000A4F903220021002004F09FF980BD70B5FC
+:1043D0000E1C051C141C08280ED13C00CCF6000055
+:1043E00000F000FC0E2801D1142000E01020E103B1
+:1043F00000D50138C0060A49C00E887108E0092DB1
+:1044000006D1A00401D5002000E00120F3F7B0F9A7
+:104410003440211C321C281C04F07AF93C0008F7B7
+:10442000000070BD00000080070070B50024132953
+:1044300011D8002801D1084E0825012801D1074EC6
+:10444000092500F078FA002805D0021C311C281C30
+:10445000FFF7C3FF0124201C70BDF8FF07003C00DC
+:1044600044F70000FFFF00000122D20280B50021C6
+:10447000072004F053F980BD0F22120407214904DC
+:1044800080B5092004F04AF980BD000080B5002104
+:10449000042004F01BFC4021002004F017FC044918
+:1044A0003C0080F700000020886002480969203045
+:1044B000FFF709FE80BD64730100B0B560210020E4
+:1044C00004F007FC114D002400220420295D04F0B3
+:1044D00028F90C2003F09BFB01342406240E052C44
+:1044E000F2D33C00BCF700000F2200210A2004F0A8
+:1044F0001BF96121002004F0EFFB064901208860D0
+:10450000044809692030FFF7CDFDFF202D30B0BDF4
+:10451000A858010064730100F8B5061C1248C67063
+:104520000120FFF73C00F8F70000FDFB0127BF0268
+:10453000041CB843011C012004F0D1FB0320FFF749
+:10454000F2FB051CB843011C032004F0C8FB301C1F
+:1045500000F09FF900F057F8211C012004F0BFFB88
+:10456000291C032004F03C0034F80000BBFB0020B1
+:10457000F8BD00006473010080B5002240210020D6
+:1045800004F0D8F880BD000070B5051C0124092096
+:10459000FFF7CCFB0F210904884303218904E204BF
+:1045A000052D124E20D202A33C0070F800005B5D86
+:1045B0005B009F44000006090C100300032109045E
+:1045C0000CE00121090409E00121490406E0F36837
+:1045D000042B05D902E0F368042B01D8014301E064
+:1045E0001043011C092004F080FB3C00ACF80000E3
+:1045F000201C70BD0024FBE7647301000121C90584
+:10460000002880B502D00A1C002100E0002204200E
+:1046100004F096F880BD0000F0B591B0002640216E
+:1046200001A8F0F7DDFD2A4FB87901223C00E8F837
+:104630000000520300900021062004F084F860215D
+:10464000002004F058FB6121002004F054FB0820F6
+:1046500003F0EFFA00240F20FFF771FB4005050F70
+:10466000A80001A9095801AA013101340C2C3C0011
+:1046700024F900001150F1D30020810001AA515803
+:10468000B14201D90E1C051C01301028F5D30620BB
+:10469000FFF758FB0F2149028843690208430121B3
+:1046A00049030143062004F029FB0D488468643463
+:1046B0003C0060F9000008E0201C03F05AF90028D3
+:1046C00003D001219520F1F798FC0F20FFF73DFB67
+:1046D0000004F1D5872003F0B2FA0098B87111B048
+:1046E000F0BD201007000001070010B5174C6169EC
+:1046F00000293C009CF9000004D00A21132003F09B
+:1047000047FE10BD011C1248012900780CD0112968
+:10471000F7D1052803D101211320F1F771FC20788E
+:104720000728EED102210AE0052807D006280AD082
+:104730000728F7D03C00D8F900000828E4D1002071
+:1047400005E001211320F1F75EFC10BD012002F00D
+:104750006CFD10BD00007C7801000D4980B5097822
+:10476000032901D100280BD0072901D1002807D047
+:10477000022901D100283C0014FA000003D10529C8
+:1047800009D1002807D00020FCF728FD00221321C2
+:10479000112003F0C1FE80BD7C78010080B50622A7
+:1047A0000821002003F0DEFF80BD0000074880B52F
+:1047B0004069002801D1F1F73C0050FA000033FFB6
+:1047C0000549054A0868506148689061012080BD2C
+:1047D000000064730100B058010010000700074892
+:1047E00080B54069002801D1F1F71DFF0549054A50
+:1047F000086890614868506101203C008CFA000014
+:1048000080BD000064730100B05801001000070073
+:1048100011B500AB597814480123C056002209187D
+:104820000B061B161321132B02DD00AB597007E09A
+:10483000002B02DA00AB5A7002E01C1C3C00C8FAE4
+:10484000000000AB5C7000AB1B7818180006001667
+:10485000132802DD00AB197006E0002802DA00AB75
+:104860001A7001E000AB1870009818BD0000647366
+:10487000010038B50C1C154900AB496813253C00F4
+:1048800004FB00000091597809185970197808182C
+:10489000187019881048022CC18001D0002C0BD14F
+:1048A00000AB1878132800D91D7000AB19780020D0
+:1048B000FFF7EEFD022C01D0012C09D100AB587896
+:1048C0003C0040FB0000132800D95D7000AB597814
+:1048D0000120FFF7E0FD38BD000064730100A0581F
+:1048E000010070470000B0B5041C0E28134D04D021
+:1048F0001249A00000194D3945180620FFF73DFA6E
+:104900000F493C007CFB0000E02209191039C97BEB
+:104910009043490111400143062004F00DFA291C7F
+:104920000520094A03F030FF08481F2200191038FB
+:10493000C07BC104D204082003F026FFB0BD0000F4
+:10494000B40900003C00B8FB000014450100FF0F53
+:104950000000C05801007047000080B506490028DB
+:1049600001D1086880BD012801D1486880BDF1F7F8
+:1049700090FB002080BD7C730100014840687047B7
+:104980000000A05801003C00F4FB00000448012393
+:104990000449C056C95640180004000C7047000076
+:1049A000A0580100A258010001484068704700006B
+:1049B00064730100F8B5051C0E1C00F055F9041CC9
+:1049C00000F058F900282CD03C0030FC0000B30067
+:1049D000601E002D1C4E19491A4A06D10B250E2CBB
+:1049E00000D1194AD258085608E0012D1CD19A1856
+:1049F0000436081808250E23126DC056071C4743BD
+:104A0000FB00DF19124B3F2158433C006CFC0000B7
+:104A1000114BA9400C1C3818C0181440EC40C011B0
+:104A200060431B0AC018801203D1012004E000205B
+:104A3000F8BD3F2800DD3F203060A84008408A4391
+:104A40001043F5E7CC590100DC5801003C00A8FCFC
+:104A500000007C7301007C5901000606000026005E
+:104A60000200034808B5C08800AB1880009808BD54
+:104A70000000A0580100B0B50B4D094C0E206C6031
+:104A8000FFF78DF90949021CC8600106090E3C00B8
+:104A9000E4FC0000133A022A02D91738042800D88F
+:104AA0000021081C6C60B0BD041802006000070003
+:104AB000647301000A4898B502781321142A00D3C0
+:104AC00001704278142A00D34170064C6068FFF7E9
+:104AD0003C0020FD0000BDFE009000AB1888E08087
+:104AE00000F075FF98BDA4580100A05801000348CC
+:104AF00080B541780120FFF7E6FC80BD0000A65894
+:104B00000100034880B501780020FFF7DCFC80BD80
+:104B100000003C005CFD0000A6580100B0B5054D4A
+:104B20000024201CFFF744F90134102C01C5F8D3F0
+:104B3000B0BD0000D4440100044980B58870044928
+:104B400080000958072004F00FF980BD647301004C
+:104B5000D05801003C0098FD0000B0B53F24021C75
+:104B6000002A01D108200B23012A01D109200823A2
+:104B7000251C9D40002900D101213F2900D9211C7D
+:104B800099400A1C291CFFF77CFCB0BD000091B5C0
+:104B9000124900AB1A783C00D4FD00000878114C93
+:104BA00080180006000E207049785A788918090686
+:104BB000090E13221328617000D92270132900D91D
+:104BC0006270084908480639C98881802178002028
+:104BD000FFF782FC617801203C0010FE0000FFF727
+:104BE0007EFC98BD0000A4580100A6580100647323
+:104BF000010070B51D4D041C28780E1C032803D13C
+:104C000002211120F1F735FA201C00F04EF800289F
+:104C100025D0287801280AD168683C004CFE0000A5
+:104C2000002807D00121112003F0EEFB0120696864
+:104C3000F0F7BDFA6C706E60201CFFF7C1FC041C1D
+:104C400000F0D4FE002C02D06868002802D1F6F7EC
+:104C5000D9F870BD012028700122211C3C0088FE7B
+:104C60000000112003F09FFB70BD02211120F1F71D
+:104C700006FA70BD00009C73010080B5012805D1C3
+:104C8000002904D0012901D1F6F7BFF880BD0549FC
+:104C90000878032802D00020087080BD03213C0062
+:104CA000C4FE00001120F1F7EDF980BD9C730100F6
+:104CB00001484078704700009C730100011C0139D5
+:104CC00001200E2900D300207047000010B5134CBE
+:104CD000207801280ED1606800280DD00121112014
+:104CE0003C0000FF000003F098FB01206168F0F732
+:104CF00067FA00206060207001E003280ED00021D8
+:104D0000112003F08AFBFFF724FCFFF7C0FB0549E5
+:104D1000087B40084000087303202070012010BD6C
+:104D200000003C003CFF00009C730100880007006D
+:104D300010B50D4C2078032813D1002020700B48AB
+:104D4000017B012211430173FFF770FCFFF718FC90
+:104D5000002806D002212170011C0022112003F03E
+:104D60002BFB01203C0078FF000010BD00009C736D
+:104D700001008800070080B50549002804D0002004
+:104D8000086003F05AFA80BD0120086080BD805A97
+:104D90000100FEB5051C8035041CA8682979066849
+:104DA000201CA03002293C00B4FF00001CD169790E
+:104DB000082901D00C2917D101216162A96809686D
+:104DC000098B0182A9690191008AC00605D5606836
+:104DD0000088400501D4012000E000200290052059
+:104DE00001A902F0B7F902E03C00F0FF0000002149
+:104DF00061620182A9681A230A89676A181C002F58
+:104E000000D11820101A0881A8680168626A002A77
+:104E100000D11823C9180160A86841C43088083C33
+:104E2000400403D5201CF7F7BCF93C002C0001001E
+:104E3000FEBD0021E1613079C00703D4201CF7F7E3
+:104E400091FEF5E7201CF7F743FFF1E7F7B5051CE6
+:104E50000A30061CF5F7A4FA144F041C3988F2F73F
+:104E600083FE328878680280728802303C006800D5
+:104E700001000280B18841806988029A201CFAF7FB
+:104E8000CEFE0B4D08356880FBF72BFE0121090390
+:104E90000028288801D0884300E00843288004487F
+:104EA000002200211430F2F732FE201CFCF73C00F7
+:104EB000A400010085FAFEBD247B010010B5134C4F
+:104EC0001149201CFF3069300EC90EC0201CFF3074
+:104ED000242275300E49F0F717FA201CFF303C22CF
+:104EE00099300C49F0F76CFA201CFF301022D530B5
+:104EF0003C00E00001000949F0F709FA201CFF30EE
+:104F00002822E5300749F0F75EFA10BD0000008066
+:104F10000700406301000C8007003080070080809C
+:104F20000700A0800700B0B500283FD021484168A5
+:104F3000214C3C001C0101006160C168E160016915
+:104F40002161806AA0621E491C48096814384164C6
+:104F50001C48251C3C350FC80FC5201C80224C3036
+:104F60001949F0F733FA1422201CCC301749F0F716
+:104F70002DFA38223C0058010100201CE030154970
+:104F8000F0F727FA201CFF30502219301349F0F7B0
+:104F900020FA83208000142220181049F0F719FA13
+:104FA00011204001842220180E49F0F712FAFFF771
+:104FB0008EFFF8F794FB3C0094010100B0BDFFF7B1
+:104FC00089FFB0BD00100700406301000820070002
+:104FD0004020070000300700004007000050070095
+:104FE0000060070010000700009007000C4980B522
+:104FF000012048600A4814383C00D00101000078C4
+:10500000012804D008489438406F002803D00020BD
+:1050100000F01FF880BD08680028FBD00348F2F7B5
+:105020007AFE80BD000098660100FFFF000080B599
+:10503000002809D1F2210F2003F03C000C020100EE
+:1050400013FA00220F21F12003F0CCFA80BD0120D9
+:10505000F8F76AFE80BD000010B5041C032000F0C4
+:10506000C9F900210F2003F0FFF9FFF765F80B499C
+:1050700000204874FBF7E6FA094800683C00480243
+:105080000100002803DC02214042FFF752FC0448E3
+:1050900014300068002802D0201CF2F742FE10BD38
+:1050A000000084660100D47E0100064980B50978BD
+:1050B000042905D0052903D0062901D007293C0081
+:1050C0008402010001D1FEF7BDFD80BD74660100C0
+:1050D00010B5094CE06800280BD107482C38008A2D
+:1050E000C00704D5002101206268F9F7C9FA012040
+:1050F000E060012010BD0000F46E01008CB5021CC0
+:105100003C00C0020100081C111CFDF728FF0190A3
+:10511000002805D0172000AB18806846FDF7FFF87F
+:105120008CBDF1B52E4CAEB0002525632069012859
+:1051300003D101A801F0A1F84EE00126284F267006
+:10514000503F3C00FC020100B869F8F74FF82549D0
+:105150002C3900281DD0E06A01281AD1088A0F1CBA
+:10516000800704D5002102206268F9F78FFA388A97
+:10517000000707D5E068012804D1002108206268F3
+:10518000F9F784FA3C00380301000022182182203C
+:10519000266303F036FA25E0088A0E1C800704D542
+:1051A000002102206268F9F774FA308A000707D5F7
+:1051B000E068012804D1002108206268F9F769FA43
+:1051C000308A400704D53C0074030100002200210E
+:1051D0000420F9F761FA2E98012804D01E950921C0
+:1051E0001BA8FFF797FFE562BD61E5602FB0F0BD3A
+:1051F000F46E010080B50720FEF7A0FE00210F200D
+:1052000003F044F90C4801783C00B0030100002988
+:105210000FD00221017088380078002804D0074997
+:105220001031487C01304874F2220F20054903F008
+:10523000FCF800220F21F32003F0E9F980BD746629
+:10524000010080841E0010B5041C3C00EC0301002A
+:10525000F2210F2003F020F9012C0AD10848084957
+:1052600000681439002805D0C878022802D1F7F761
+:10527000AFFA10BD002048700520FEF765FE10BD96
+:1052800098660100F8B5284E3021351C3C002804F2
+:10529000010060352889895D884203D10020FFF72D
+:1052A000F6FEF8BD341C70340121217041188019BC
+:1052B0003030298140781D4F183F3870002808D0C1
+:1052C0000021FBF7C2F9002807D12078FFF73C0046
+:1052D000640401009BFFE7E701210F20F0F71AFFAC
+:1052E00014480121803081703869FBF755FA20732A
+:1052F00000210F2003F0D6F8707A01280ED10E4855
+:105300000068002804D0387802F0DAFA002805D0C6
+:105310003C00A0040100307F60730320207071897D
+:1053200005E005202070A888FAF73BFB011C00224D
+:105330000F2003F086F8BAE7000004660100E4627B
+:10534000010070B5041C02F06CFC364B191CA03136
+:105350000A783C00DC040100102A02D20A79102AE3
+:1053600001D3012500E00025304ECA798036012C9A
+:1053700012D00025022C2ED0042C3CD15C6B002CCA
+:1053800039D19C6F001B2A4CA04234D9B268986A6C
+:10539000824231D03C00180501004D7234E0B06803
+:1053A0009C6A0222A04221D1586B00281ED1002DF8
+:1053B0001CD1487A192820D03468986F6400001BEB
+:1053C00074680019FF301C4C3930A04216D248795D
+:1053D0008C79001930283C005405010011D31022AB
+:1053E0000FE05C6B012C06D1B0689A6A904200D144
+:1053F0004D72002205E09C6F001B124CA04200D3AE
+:10540000202206E04A7A192A01D201324A72202269
+:10541000B06030689B6F98423C009005010004D159
+:10542000002A00D148794A7106E0102A04D370603E
+:10543000336048798871F6E7CA7170BD0000A46CCA
+:105440000100A304000071020000350C00000548B3
+:1054500080B5817B002905D000213C00CC050100EE
+:10546000817303490F2001F00FFF80BD74660100B6
+:10547000E9030100F8B5041C02F0E2FB051C384EFC
+:10548000201C3749341CA0341022443901282CD068
+:1054900004284ED1371C743609CE26783C00080605
+:1054A0000100C01A202E04D1304EB04201D900268E
+:1054B0004E613E1C3F6C002F48D1776C002F45D1C8
+:1054C000B76A002F3DD0776B002F3AD0274FB842F4
+:1054D00037D26078102806D3F06F181A244B3C009E
+:1054E00044060100984201D2E270F5664869062838
+:1054F0002FD201302CE02078202801D106234B61E7
+:1055000002232371B36A002B19D04969032916D9E4
+:10551000716B736D594012D0E178102910D3617806
+:105520003C0080060100331C10290CD3D96F691A86
+:10553000134DA94207D2586C002802D0986C00285D
+:1055400000D12271F8BD0228FCD12270FAE7486927
+:10555000002801D0013848610A49F06E401802F075
+:10556000B0FA3C00BC0601000028EED00120E0703B
+:1055700006482818F066E8E7A46C0100E204000081
+:105580001A06000053070000002D3101005A620284
+:1055900080B541680979C90713D5C16900290DD0C3
+:1055A000897902293C00F80601000AD10821018608
+:1055B000011C38318162021C06480449F9F7FDFCE0
+:1055C00080BDF7F7DCFB80BDF7F723FB80BDB97129
+:1055D0000000A06A010010B50024002803D002F0EA
+:1055E000E8FE002817D03C00340701000C4C0120D5
+:1055F000A0722068002141620A490268C9786032BD
+:105600009171218901312181006840308183FBF74C
+:1056100031FC20680068FCF7A1F90124201C10BDB2
+:10562000147A01000E6101003C00700701007FB593
+:10563000061C1E481D1C438802881C21002090B0B7
+:10564000F0F745FF03900468FF2101312180082015
+:1056500060800620207104206071C001002D00D1FF
+:10566000081CE08001A80230311C3C00AC0701009E
+:10567000051CFAF75FFA10496846FAF75BFA201C36
+:1056800008306946FAF756FA291C201C1230FAF73E
+:1056900051FA10AB9888002201212083D8886083BA
+:1056A0001889E081588920826846F9F73C00E807AC
+:1056B000010017FF14B070BD0000146E01001261EC
+:1056C0000100B0B5041C1848251C0078603580071F
+:1056D000002808DAE879002805D0F4F770FF011CEB
+:1056E000201C00F078F929882E20005DF2F73C009C
+:1056F000240801009FFAE87900280BD1201C4030D3
+:10570000018B22691180418B22695180808B216934
+:10571000C88207E0012805D1206901220188D20250
+:10572000114301806A7AE0680249F2F753FAB0BD8A
+:105730003C00600801001D750100D14F000090B5CC
+:10574000041C38230C495843431885B000200A49EB
+:105750000290181C012203910949049230304278CA
+:1057600009880192009101785A6B0C33201CFBF7D9
+:105770007CF83C009C08010005B090BDD4E4010019
+:105780005D4E0000487B010090B585B0031C0020F1
+:1057900002900A49181C0022049260300391C279D9
+:1057A0000188019200915A6ADC682033997B407A23
+:1057B000231CFBF73C00D80801005DF805B090BD44
+:1057C00000000D4F0000074980B5886A002808D105
+:1057D00001208862F0F7AFFC011C03480022F2F7B9
+:1057E000B8FE80BD00007869010041E40000F0B51A
+:1057F0009BB0002820D03C0014090100011C08A81F
+:10580000FCF7B2FD01201190032010AD2872042096
+:10581000687205A800226946F4F700FF00240026FC
+:1058200005A90020F9F7FCFA6946F9F7F9FA0B9097
+:1058300008A8FCF7BBFD01343C0050090100022C14
+:105840002E72F0DB1BB0F0BD000090B5041C4C23A1
+:105850000C495843431885B000200A4902900022A1
+:1058600004923C200391C25C084841880192412087
+:105870000091C15C5A680833201C3C008C0901006F
+:10588000FBF702F805B090BD58E30100754F00002A
+:105890003C7C0100F8B50E1C224C3821171C051C5D
+:1058A000201CEFF775FD231C2533211C243110200B
+:1058B0006A46F9F71DF800AB188807213C00C809B3
+:1058C00001001A4A02382084201C20308170C570E3
+:1058D000111C0673477334312163303262630179DE
+:1058E000251C103521812060E5601888401A20832E
+:1058F000201C28302061201CF9F711F80D483C00CD
+:10590000040A01000068002807D00621201CF8F7CF
+:1059100047FD1021281CF8F743FD084802210162C9
+:1059200044620121016206480068EFF7D5FCF8BD2A
+:105930008C8E0100E4FE0100CC5C01000030070009
+:105940003C00400A01005C5B0100F0B5061C4036DB
+:10595000318B041C251C0807800F6035012885B099
+:105960003BD0E879002805D120690180B08B2169FE
+:10597000C88207E0012805D1206901220188D202EE
+:1059800011433C007C0A0100018020480078800718
+:1059900026D5E879002823D0A06B00281CD0F4F786
+:1059A0002FFE002809D0B8210958002905D0302140
+:1059B000095DB4300818077A00E000270121381C7F
+:1059C000FAF786F93C00B80A010004902069043017
+:1059D000391CF4F76CFD0499FAF7D3F902E0201CA6
+:1059E000F7F7F9FB7083708B216900224880094921
+:1059F0000A48049203910290EA7929880192009161
+:105A0000626AE36820343C00F40A0100A17B687AF2
+:105A1000FAF74CFF05B0F0BD1D750100D14F000035
+:105A2000DD2F0100FEB5041C261C012020360029B4
+:105A300002902ED05820005B0007800F012801D172
+:105A4000CC3100E0B43148683C00300B01000D1C43
+:105A5000002824D0201C6030C2790121012A00D006
+:105A60000021271C626D3037002A04D03A1C281C04
+:105A7000F6F7E7FD07E0427A231C683300923A1CF0
+:105A8000281CF6F79AFD029038783C006C0B010058
+:105A90004019007A0121B073FAF726F901E00020DD
+:105AA000B0736062B07B0D2801D9F0F7BBFB0298A0
+:105AB000FEBD0000FFB5041C8030251C5E3500785B
+:105AC000AE1DAF1F002883B012D1F4F73C00A80B25
+:105AD0000100C7FB002807D006980599029004989A
+:105AE0000190A66167610DE00498069902900598FF
+:105AF0000190666105E004A903C90290069801902F
+:105B00006761A5610622381CEFF78BFC06223C007A
+:105B1000E40B0100281C0299EFF786FC0622301CDA
+:105B20000199EFF781FC07B0F0BD0000B0B50D1C86
+:105B3000041C052801D3F0F77BFB0249A00008589C
+:105B40008560B0BD107B0100F8B5FFF759F9051C61
+:105B50003C00200C0100FEF7E8FF041C281CFFF7A6
+:105B600058F9002842D0691E214D4A00204B1C3DA7
+:105B7000AE5C985C3040D6180123F6565219D256C6
+:105B8000964201DD151C00E0351C184B2A3B595686
+:105B900051183C005C0C0100B14200DB311C0E1CB2
+:105BA000002826D0FEF7BEFF009000AB18781249FF
+:105BB0000023C95600AB1522101A5B78001B401851
+:105BC000D21A121B51180022854202DB00AB1A7058
+:105BD00002E0401B3C00980C010000AB18708E42A4
+:105BE00002DB00AB5A7002E0881B00AB58700098D3
+:105BF000FFF78DF801F0FFF8F8BDE6780100657356
+:105C0000010070B5084E064D00240620604380193F
+:105C10000622291CEFF73C00D40C010011FC0134D2
+:105C2000052CF5DB70BD00004E470100E67A01004F
+:105C3000034880B501680348FEF742FB80BD0000C1
+:105C4000A8790100C4600100034880B501680348D9
+:105C5000FEF74AFB80BD00003C00100D0100A87952
+:105C60000100C460010010B500280AD0064CA169EB
+:105C7000002901D1002000E00968F7F738FBA06196
+:105C800010BD002010BDA46E0100F3B5374883B0ED
+:105C9000029080790E1C002701903C004C0D010001
+:105CA0003448354A016A039C031C1B69A14201D098
+:105CB000936100E0536131498A6896423FD02D4894
+:105CC0008E60C1680024251C00292D4809D0002EB3
+:105CD0000BD028480124C06A240300283C00880D0A
+:105CE000010006D0012704E0002E01D0051CF9E7D1
+:105CF000041C002F06D0FBF71EFB1F48016822483A
+:105D0000FEF7FBFA201C28430ED02A1C211C012080
+:105D100002F021FE2A1C211C022002F01CFE3C0085
+:105D2000C40D01002A1C211C032002F017FE002FC5
+:105D300006D1134801681648FEF7CEFAFAF742FD7D
+:105D4000039C002C01D101F0E1FF01A903C9887176
+:105D500001F0DCFF0A4C0A4B443CA1692269083B74
+:105D60003C00000E0100411A002A03D01A685118A5
+:105D7000196002E05A6851185960A061266105B0A7
+:105D8000F0BD20100700A46C010010000700B05700
+:105D9000010000106000847301001CB54C23084909
+:105DA00058433C003C0E01004418201C4030417810
+:105DB0006268009101923F210B5D618F0078626CF7
+:105DC000FAF728F8A0851CBD58E30100B0B5164DC0
+:105DD000A969002925D02C1C3034207A002820D035
+:105DE000002381223C00780E0100182002F089FC7B
+:105DF000207AFF300006000E207212D10C482821B4
+:105E00002C38095C2172297A002901D1006A00E04E
+:105E1000406AA9698002814203D24900814201D2CD
+:105E2000A961B0BDA8613C00B40E0100B0BD01F095
+:105E30001DF9B0BDF46E01007FB5051C04206B4652
+:105E40001B180290002628186A4602A9FCF78AFB54
+:105E5000002806D100AB1879042808D01879032847
+:105E600005D000AB187910213C00F00E010008436A
+:105E700004B070BD03A9E868F6F7D3FF002805D089
+:105E80000398202108430006000EF1E703A9002033
+:105E9000F6F7C7FF041C01D10220E9E7E86800AB70
+:105EA0002060009860601879A0763C002C0F0100FB
+:105EB000A88C6076E8692061688CA082288C2076A6
+:105EC00069690948814200D9081CA060201C02F0C1
+:105ED000A1FDA168002904D0039AA132082002F094
+:105EE00037FB301CC7E70000A08601003C00680FAC
+:105EF0000100FEB5061C40780124062850D3C11EBF
+:105F00000320EFF75EFB00900E2849D800200AE03E
+:105F10004100091889194A798979511801390E29DE
+:105F200000D90024013000998842F1DB002C3C00AC
+:105F3000A40F010037D00322B11C1B48EFF7A4FACD
+:105F40001A4C1C21201CEFF74DFA002528E06900AF
+:105F5000491902918A1953791548435493790F18B6
+:105F60007B70D379BB700723D2560192445C0FE05B
+:105F70003C00E00F0100201CFEF77BFF002807D04B
+:105F80000C4A600080180121103881730199C17397
+:105F900001342406240E07480299405C79784018A1
+:105FA000A042E8D8013500988542D3DBFEBDE86207
+:105FB00001003C001C100100E6780100EB620100CA
+:105FC00001680F2901DD0F2101600168002901DA54
+:105FD0000021016070470000F8B5041C1E48221D16
+:105FE00005680092161C231C0F1CCC332A1C201C95
+:105FF0007030A16D3C005810010000F03EF9009691
+:10600000A16D27200140231CE433201C2A1C5C3096
+:1060100000F033F9134800780E2801D2012585409D
+:106020001148A1690078294000070BD4480703D51F
+:10603000080701D504203C00941001008143880624
+:1060400003D5480601D520208143231CB4332A1CE4
+:10605000201C3030009600F013F9391C201CF0F79A
+:1060600047FCF8BD2C7D0100106701001D75010083
+:10607000B0B5F2F727FCFEF73C00D010010009F99B
+:106080000F48002545700E480D4C00885B34A082F7
+:10609000F9F723FD2061A08A002804D00121890599
+:1060A000EFF70DFBE18205480138456001F055FE30
+:1060B000021C231C00210020F4F73C000C110100FD
+:1060C00049FDB0BD457D0100F467010070B5161CA7
+:1060D0005A89041C04989207920F00250029A27186
+:1060E00009D00521F9F724FB002801D0C07800E091
+:1060F0000120E07100E0E571E560A6603C00481118
+:10610000010070BD0000FEB5051C0E229C30164932
+:10611000EFF7CFF9291C281C8030883100242F1C70
+:106120006037029101902006000E061CF9F70DFE63
+:10613000002803D001984268029901E0EA6D3C0012
+:1061400084110100391C002A0DD0002003E00B5CF3
+:10615000B34202D801309042F9DB08181038C07BF6
+:1061600029199031087301340E2CDFD3FEBD0000D5
+:10617000CC470100FFB581B0141C101C06220D1C79
+:106180003C00C0110100191C0B9E0A9FEFF797F904
+:106190000622391CA018EFF792F9E6602C60102057
+:1061A00028816E600198E86005B0F0BD000070B510
+:1061B000041C002020615820005D0E1C151CC00727
+:1061C000C0173C00FC1101000130E061216B002987
+:1061D00036D11E490968294332D0A168898A00292D
+:1061E0002ED000280BD0201C583000F0F3FD0028E2
+:1061F0001BD0816A026A406A0978007806E0144A76
+:106200003C2311783C0038120100507843439A181F
+:106210000432002D03D1022901D0032902D16D21BE
+:1062200022610855206900280DD08188002901D1FC
+:10623000012070BD8079022805D1221C074907483A
+:10624000F8F74BFF02E03C0074120100201CEFF74E
+:10625000B5F8002070BD00002861010068610100F0
+:10626000A1DA0000A06A010010B500210020F9F7B2
+:1062700039FEC400F9F754FE2418F9F747FE08491F
+:1062800020180988084C40183C00B012010006494B
+:10629000098840186061F9F746FE054909884018E9
+:1062A0004000A06110BD0261010004610100D479C9
+:1062B0000100A66901001140081C10B51C1C191C26
+:1062C00008311860F1F731FE60603C00EC1201000B
+:1062D00010BD0000F8B5061C22480F1C4168914211
+:1062E00003D000218160C1604260C46815E02820AD
+:1062F0001D4960434018051C0622311CEFF770F859
+:10630000002807D1A81D391CF9F710FD3C002813FF
+:106310000100002801D00120F8BD01342407240F1A
+:10632000124880688442E5D1104C2823A0680F4DA4
+:10633000584340190622311CEFF7D3F8A0682823F0
+:106340005843401906302222391CEFF7CAF83C00A6
+:1063500064130100A06801300007000FA060E1682D
+:10636000814203D101310807000FE0600020D6E729
+:10637000EC650100A0F4010010B50021032000F03D
+:10638000E5FF054CA068002804D101F007FD616815
+:106390003C00A0130100401A606010BD0000D060F6
+:1063A000010002680A6001607047011C0068002853
+:1063B00001D002680A6070470000FEB5141C1D1C65
+:1063C0000022D24301ABF3F782FF01980026284058
+:1063D00001903C00DC1301000025002720601EE036
+:1063E0000121B9400A1C024018D0884301903906A7
+:1063F000090E7019001902910177081CF9F7C6FC03
+:10640000002806D0301C0019013602993030017086
+:1064100004E0281C3C001814010001350299001901
+:106420000172013701980028DDD17019A061656003
+:10643000E662FEBD0000B0B5144D041C287A0128A8
+:1064400002D10420F6F7ADF9211CA86AF5F721FC6A
+:10645000002803D104203C0054140100F6F7A4F9ED
+:10646000B0BD02202870288C002800D06081688C84
+:10647000002800D0A081A88C002800D0E081E86925
+:1064800001230204120C201C0249FCF719FFB0BDC5
+:10649000F46E0100A17700003C0090140100F8B5F3
+:1064A000194E051CB069002800D13068FFF73BFC8D
+:1064B000154F041C503700280BD06068291C7860E9
+:1064C00001203863201CF5F7EAFB002804D10020E6
+:1064D000F8BD0023FB62FAE700233C00CC14010066
+:1064E0002377F86A002801D10120F862387A012860
+:1064F00007D0F86906490204120C281CFCF7E6FED6
+:1065000001E0FB62B3610120E5E70000A46E010039
+:10651000DD02010070B50D1C041C161C3C000815A2
+:106520000100042C1BD21048834207D258000F49A7
+:10653000EFF7FBF8FF30000A013800E000201F35BC
+:10654000EA066107090ED20E11437207520D11437C
+:106550000006000A0843064AA100505070BD3C00E6
+:106560004415010001218D20EFF7ACFE70BD000045
+:10657000409C000000803801E8600100094A80006A
+:106580001058400940010722024307480368002BC6
+:10659000FCDB42600906016001680029FCDB082081
+:1065A0003C008015010070470000E86001003020C9
+:1065B0000700B0B5041C0D1C0749A00008580028AE
+:1065C00003D102218D20EFF780FE291C201CF6F755
+:1065D000A8FAB0BD0000E8600100B0B5041C0D1CB5
+:1065E00007493C00BC150100A0000858002803D151
+:1065F00002218D20EFF76CFE291C201CFFF7C4FF41
+:10660000B0BD0000E8600100F8B50D1C161CF7F7DE
+:1066100017F9041C2868404F817800293BD1C178C4
+:10662000002958D13C00F8150100F8F7F8F9228E3E
+:10663000618E8A4204D0A16A0918E069814210D9AA
+:106640003849321C486B01304863206A01302062AF
+:10665000386801303860E0686369291CEEF7D8FEBD
+:10666000F8BD013212043C0034160100120C2286DF
+:10667000A162B868002834D12C480C2300681B1A8A
+:106680009A4207D219239B01AF2292015843101A54
+:10669000814226D30120B86001210C2000F07AFE4F
+:1066A0001FE001291DD1C0783C0070160100172899
+:1066B0001AD1A08EE18E884214D3E968096809795D
+:1066C00009060FD5606A321C01306062E0686369B8
+:1066D000291CEEF7A3FEE868016808310B2000F0E2
+:1066E0005CFEC3E70130A086A08D3C00AC16010023
+:1066F000E18D884204D103210220EFF7F5FDB8E7D0
+:1067000060684560866000686060F8680130F86025
+:10671000A08D411CA1850028ABD10848B969FDF7BF
+:1067200061FE221C0221F12002F064F83C00E81610
+:106730000100A1E70000FC5A0100905C010018571D
+:106740000100C460010080B5021C0221F02002F0AB
+:1067500054F880BD0000002803D102484178C907E1
+:10676000FCD5704700000400070080B500063C001F
+:106770002417010001D1F1F771FE80BD80B5F4F757
+:10678000E5FA80BD80B5F6F7EBF880BD0149002041
+:10679000087470477869010080B5C00703D50249C5
+:1067A000012000F01DFC80BD50C300000006000E5B
+:1067B0003C0060170100012880B502D1F6F7E1F92D
+:1067C00080BD0028FCD1F1F74CFE80BD000080B5F3
+:1067D000F6F7D7F980BD034980B500200874F6F7B5
+:1067E000FEF980BD00007869010080B50006000E4A
+:1067F000F1F73C009C17010071FE80BD10B5012827
+:1068000008D0022803D0032801D0EFF7A7FDF6F740
+:10681000E9F910BD01F0F8FA041CFAF75DFD241A3D
+:10682000FAF73EFD084900280BD0486A002808D036
+:10683000064884423C00D817010005D2011B012202
+:10684000072001F0F4FEE5E700204861E2E77869FF
+:10685000010050C30000094980B5486900280CD0E8
+:10686000086ACA69801A002807DD002048610121F2
+:10687000072001F010FF3C0014180100F6F7B8F9EA
+:1068800080BD00007869010080B500F0E7FB80BDA5
+:1068900080B500F03FFC0020F7F7D4FC80BD00007D
+:1068A00080B500F037FCFDF76FFCF5F773FD30F0B5
+:1068B00047FB80BD044880B53C0050180100C16A08
+:1068C000006BF2F7DEFF0120F7F789F880BDA46CBA
+:1068D000010010B5F3F741F80D4C002804D0012059
+:1068E000E064F7F7B2FC10BD01210120F3F7E9F8ED
+:1068F000FDF74DFC606D002803D03C008C180100B2
+:10690000F3F782F8002801D0F5F74AFD0120F2F7ED
+:10691000C1FC10BDA46C0100044880B5C16A006BC5
+:10692000F2F7B2FF0120F7F75DF880BDA46C01001B
+:1069300080B500F0F5FBF5F733FDFCF73C00C81817
+:10694000010031FDF9F7CBFF0420F2F7A6FC80BD72
+:106950000000034880B5C16A006BF2F798FF80BD64
+:106960000000A46C010080B500F0DDFB0020F7F70B
+:106970003CF830F0EEFA80BD000080B500213C000C
+:10698000041901000120FFF719FA0120F2F788FC31
+:1069900080BD000080B500F0C9FBFCF707FD0121B8
+:1069A0000120FFF70BFA0420F2F77AFC80BD00000B
+:1069B00080B500220021002000F08AFB80BD00008D
+:1069C0003C0040190100034880B5826A012104207F
+:1069D00000F081FB80BDD479010080B50022002148
+:1069E000032000F078FB80BD0000034880B5826A78
+:1069F0000121042000F06FFB80BDD479010080B537
+:106A000000223C007C1901000021032000F066FBFD
+:106A100080BD0000064880B5816842690069511850
+:106A2000814203D90121012000F058FB80BD000004
+:106A3000D4790100064880B58288816800695118C0
+:106A4000814203D93C00B81901000121022000F065
+:106A500048FB80BD0000D479010010B5084C207BB4
+:106A6000216AF9F79CFAA1694218A0682169801887
+:106A7000884203D90121022000F033FB10BDD479F4
+:106A8000010080B500223C00F41901000021002023
+:106A900000F02AFB80BD00000006000E012880B532
+:106AA00002D1F6F78FF880BD0028FCD1F1F7FAFC8F
+:106AB00080BD000080B5F6F785F880BD80B5000682
+:106AC000000EF1F729FD80BD3C00301A0100B0B581
+:106AD00002250228104C0BD1FBF747FC002801D1FE
+:106AE000FEF74FFF2570A1680C48FDF7A8FCB0BD6C
+:106AF00003280DD108487D231C380069DB0058436A
+:106B0000191C40184108022000F03C006C1A0100DA
+:106B100091FA2570B0BDF8F731F9B0BD7869010080
+:106B20003463010010B5054CE068002801D1EFF78F
+:106B300039FC0220207000F0AFFA10BD7869010026
+:106B4000034880B5826A0121042000F03C00A81AA5
+:106B50000100D3FA80BDD479010080B50022002164
+:106B6000032000F0CAFA80BD000080B50022002199
+:106B7000002000F0C2FA80BD0000034880B54269E1
+:106B80000121012000F0B9FA80BDD47901003C0058
+:106B9000E41A0100064880B58288002A02D001214B
+:106BA000022002E000220021002000F0A9FA80BDAE
+:106BB000D479010010B5064C207B216AF9F7FEF963
+:106BC000A16942180121022000F09AFA10BD0000CC
+:106BD0003C00201B0100D479010080B50022002177
+:106BE000002000F090FA80BD000038B5FAF741FEB1
+:106BF0000020F0F780F8009000AB1C885D88F8F763
+:106C00003CF9002C02D0FDF79EFA02E00120F6F7D5
+:106C10000AFF3C005C1B0100291C201CFCF7B8FC8F
+:106C2000002C02D0F5F7E0FB02E0002000F0DCF9D8
+:106C30000320002C00D102200006000EF2F74EFBCC
+:106C400038BD0000034880B5826A0121042000F0AD
+:106C50005DFA80BD3C00981B0100D479010080B52D
+:106C600030F09BF980BD80B500220021032000F0A8
+:106C700050FA80BD0000034880B54269012101201F
+:106C800000F047FA80BDD4790100044880B58288BD
+:106C9000002A03D001213C00D41B0100022000F097
+:106CA0003BFA80BDD479010010B5064C207B216AE7
+:106CB000F9F790F9A16942180121022000F02CFA9D
+:106CC00010BD0000D479010080B5FCF793FB0121D1
+:106CD0000120FFF797F804203C00101C0100F2F798
+:106CE00006FB80BD000080B52FF06BFB00280AD0AA
+:106CF0000120F2F7FCFAFAF72AFC002802D104205E
+:106D0000F6F75DF880BD03211620EFF732FB80BD5A
+:106D10000000024880B50068EEF73C004C1C010002
+:106D2000C5FB80BDD4790100034880B542690121CB
+:106D3000012000F0F7F980BDD479010080B530F072
+:106D400035F980BDB0B5184CAA20005D042819D1D2
+:106D50000125E562256301F093F8A0663C00881CDC
+:106D6000010001F0FCFDF2F72EFE00280ED00220FB
+:106D7000F2F7C3FAA56001F086F864306060FAF7B4
+:106D80008AFD01210120FFF746F8B0BD0120F2F78E
+:106D9000B4FA0020A06000210120FFF73CF83C007D
+:106DA000C41C0100F2F766FE0028F1D0FAF776FD68
+:106DB000B0BD0000A46C010080B50020EFF7D6FE46
+:106DC00080BD000080B50120EFF7D0FE80BD00003F
+:106DD000AC21095C024A09028918C0318160704700
+:106DE0003C00001D01007075010080B5012804D130
+:106DF00003C90968EEF764FB80BD01211420EFF799
+:106E0000C4FA80BD0000002802D1024840687047E3
+:106E10004068704700005875010010B50024F8F76D
+:106E20001CFB3C003C1D0100002804D04030807A4F
+:106E3000052800D10124201C10BD000004480021B9
+:106E4000406801E0016340680028FBD17047000002
+:106E500058750100B0B5041C0D1CF7F7A5F84034B7
+:106E6000E572B0BD3C00781D0100F8B5071CF8F7CD
+:106E7000FAFA041C04D005211420EFF78CFA28E05C
+:106E80000025144928024618301C443006221249B5
+:106E9000EEF72DFB002802D1AC208555341C0135BE
+:106EA000032DEED3002C3C00B41D010014D0391C7E
+:106EB000201CF8F72BF80949002020601839486891
+:106EC0006060002800D004604C60CA68002A03D0CB
+:106ED0000121201CEEF7FEFA201CF8BD70750100A0
+:106EE0005846010080B5F8F73C00F01D0100C1FADA
+:106EF000002804D106211420EFF753FA80BDF5F7DE
+:106F000016FC80BD000080B5F8F7B3FA80BD10B55F
+:106F1000094C2188022903D11420EFF742FA04E03A
+:106F2000A3688A009850481C20803C002C1E010059
+:106F3000208801380004000C10BD000058750100C5
+:106F40000B1C111C084A80B51288904206D2DA68E0
+:106F5000C0001218142001F0BBFB80BD03211420D7
+:106F6000EFF722FA80BD0000587501003C00681E52
+:106F70000100084A80B51288904206D2C968C00054
+:106F80000918142001F0DBFB80BD04211420EFF769
+:106F90000EFA80BD0000587501000149C8607047B5
+:106FA00000005875010080B506224430EEF73C0021
+:106FB000A41E0100ABFA002801D1012080BD0020F1
+:106FC00080BD00001CB5144C2069002823D0207817
+:106FD0000A2801D000F0FCF8002060610F484079D9
+:106FE000A070002801D0012815D1FDF7EDFE019019
+:106FF0003C00E01E0100FDF782FE009000AB187916
+:107000001978401A187158795978401A58710198AE
+:10701000F2F789FE0520207000F0BFF91CBD7C78D6
+:1070200001000C5A010008B5044A009014320020F7
+:10703000024B3C001C1F01000249F1F77DF908BD1D
+:107040002C750100B1A80000B0B5002806D00128B9
+:1070500006D0022807D10C4C012507E00B4C04E0B8
+:107060000A4C2A3C01E0084CB634002500F02CFF05
+:107070000749896E3C00581F01000919091AA142ED
+:1070800000D900212A1C162001F031FBB0BD71028D
+:1070900000000C050000A46C01008CB500AB8E2133
+:1070A0001980FCF738F901906846FBF7A6FA8CBD09
+:1070B0000000BFB5134A3C00941F010001910D1C54
+:1070C000117C8843041C2143081C1074A0070BD5B5
+:1070D0000E4800900120029000F0FCFE0C49401880
+:1070E00003906846F9F76AFFE0070CD5F1F72CFD2D
+:1070F000002803D0074885423C00D01F010000D281
+:107100000190064800906846F9F709FFBFBD78690D
+:10711000010081EA000010270000A086010075EA46
+:10712000000010B50A4C606900280ED10120606192
+:10713000A1680748FDF7CBF900213C000C200100B5
+:10714000A068F9F7D1FB01220720044901F0D8FA21
+:1071500010BD00007869010034630100983A000016
+:1071600010B50C1C111C064A002B107003D000280F
+:1071700002D1F9F7F5FD10BD201CF9F73C004820BD
+:10718000010001FE10BDA0790100B0B50A4C051C3C
+:10719000E36A201F0133E3620088002906D0A1685A
+:1071A00089182161054A00F0FCFE01E000F0CFFEE5
+:1071B0002577B0BD0000D479010055E300003C0004
+:1071C00084200100011C034880B54088FFF7ECFED5
+:1071D00080BD0000987C0100034880B5C168183864
+:1071E0008088FFF7E1FE80BD707C010080B5002142
+:1071F000162001F0BFFA0121162001F0BBFA80BD74
+:107200003C00C020010010B50B4C20780A2810D09B
+:10721000012060610A21132001F0AFFA0A2060709A
+:107220002070FDF73CFB0120FDF7E9FB0020FAF799
+:10723000C4F910BD00007C78010010B50C4C002092
+:107240000B493C00FC2001002063E062503988615A
+:107250002070084838210C38007A08558121182000
+:1072600001F08EFA2069012802D10020F5F73EFBDB
+:1072700010BD0000F46E0100B0B51C4C00252C229E
+:10728000011D201C3C00382101009AB0EEF739FAAC
+:1072900018492C31081C007A8A69002A13D1022867
+:1072A00003D1A068002820D004E000281DD1606828
+:1072B00000281AD0800288610E4869462438006888
+:1072C000EFF7CBFB11E03C00742101000022022803
+:1072D00003D1A068002809D104E0002808D1606823
+:1072E000002803D18A61FFF7B1FF01E080028861C5
+:1072F000281C1AB0B0BD0000C86E0100F8B50C49DA
+:10730000022048600B4900053C00B02101000860E4
+:107310000B4FB868F9687C68451A2E1C04E0A06819
+:107320006168EEF709F92468013DF8D27C60F868DD
+:107330008019F860F8BD402007000010070044E302
+:107340000100F8B51F4E041C30693C00EC2101001F
+:107350000121F9F799FA1D49600040181038817B26
+:107360001B4A5172C07B10741A4F1B4D0E2C0AD150
+:1073700001220221082001F0F3FB0320FF2141310B
+:107380003986142108E00222012108203C0028222D
+:10739000010001F0E8FB1249022039861021A97191
+:1073A000E8711048114A00191038C07B002803D03A
+:1073B00001215173107301E0002050730021201C43
+:1073C000FDF7E5FD3069F9F708FBF8BD00003C006A
+:1073D00064220100407C0100764601000C80070019
+:1073E0003080070000800700FF0100005C570100AB
+:1073F000D080070010B5154C144A217800201832AF
+:1074000005291DD006291BD0072901D0082906D13E
+:107410003C00A022010091680520102900DB062015
+:1074200020700120A178002861700BD00020FAF7AD
+:10743000DCF800216078F4F73CFA0A221E211320C0
+:1074400001F07FF910BDD16907201029E8DB082081
+:10745000E6E73C00DC2201007C780100B0B50D1CA1
+:10746000011C041C44310020F6F740FA3034002D92
+:1074700007D00EC80EC408C8103808C4F4F7C4F901
+:10748000B0BD1ECC1EC0B0BDF8B5081C111CF4F771
+:1074900087FA084C3C00182301000025084E084FCD
+:1074A00006E0306B002803D035632068EEF755F80E
+:1074B00038680028F5D0F8BD00005C5B0100E4FEF0
+:1074C0000100845A010080B50006000E00F007F8A4
+:1074D00080BD80B50A1C3C0054230100232101F02B
+:1074E0002BFA80BDB0B50D1C041C122803D301215A
+:1074F0002320EEF79BFF0649A000085804E012C8BD
+:10750000281CEEF72EF8201C0028F8D1B0BD000092
+:10751000685B0100F8B50E1C3C00902301000025BB
+:10752000041C122803D301212320EEF782FF134805
+:10753000A700C45908E02068B04203D103212320EA
+:10754000EEF777FF251C6468002CF4D10C4A043A4E
+:107550001068002801D0416811603C00CC23010074
+:10756000002804D102212320EEF766FFF8BD002198
+:1075700041600660002D01D06860F7E70149C851FD
+:10758000F4E70000685B010070B50E1C051C0024C8
+:10759000122803D301212320EEF74EFF3C000824DC
+:1075A00001000D4BAA00985804E00168B14204D0D4
+:1075B000041C40680028F8D170BD0028FCD0002CC5
+:1075C000416801D1995000E061600021034A0160E7
+:1075D000043A11684160106070BD685B01003C00B6
+:1075E00044240100F3B581B0002817D00178FF29A9
+:1075F00014D04578441902348027013C2678013D97
+:10760000BE43301CF8F782FC012181400298014002
+:1076100002D03E43301C2070002DEED1FEBD000094
+:107620003C0080240100104B10B55968411A0F2905
+:107630000DDC0E22D243914209DB1A1C926800290C
+:1076400001DD002A03DA00290DDA002A0BDC0433FD
+:1076500003C3FDF710FD041CFDF713FD002802D045
+:10766000201C3C00BC240100FFF792FE10BD00006E
+:1076700018630100F8B5644C071C6078A178884253
+:107680000FD1081CFDF7CEF8E060042060700A22DC
+:107690001E21132001F070F800216078F4F724F91E
+:1076A000F8BD04283C00F82401006ED1584EFDF7C7
+:1076B000BCF800907178041C0020052921D201A398
+:1076C0005B5C5B009F440B0F141A02005148514948
+:1076D000604341187D20C000EEF787F811E0872055
+:1076E00060434D4902E03C003425010045204D49EE
+:1076F0006043401808E04C48CD2109016043401A1E
+:1077000002E0462060438238060648480721007997
+:107710003616081A001900906846FEF75FFD381CFF
+:10772000FDF72EFB0099424A3C00702501004900FC
+:10773000515A48433949041C8878002801D001284F
+:107740001ED13549002803D13A480578042002E0CB
+:10775000384845780C203049C968491B0818009002
+:107760006846FEF73EFD009833493C00AC25010019
+:1077700040002031085A2A494443C868A84201D928
+:10778000012500E000252E4821184000EEF7A2F860
+:10779000041C002D03D0FDF7C3FA02E03DE0FDF725
+:1077A000F3FA002F02D125480E3801E03C00E8250D
+:1077B000010023480A380168611ACB1C01DB032948
+:1077C00000DD04600168A14201D2013104E0A14260
+:1077D00003D9002901D0013901600168381CFDF787
+:1077E000C0FB104C0A2060700A221320A1683C00E4
+:1077F0002426010000F0D2FF606800F0F7FA0028AC
+:1078000000D15FE700F0BAFB1149002340180E4990
+:1078100060601E39C856B042F3D00E70311C002093
+:10782000FFF784FE4EE7FFF715FE4BE77C7801007B
+:107830003C006026010060D7FFFF608F0100540B01
+:107840000000C90900008EFEFFFF0C5A0100125A09
+:10785000010020A1070040420F0030B50C4BFE2470
+:107860001B880440C0075D076D0FDB08C00F9C42FA
+:107870000BD83C009C260100A218043A9A4207D378
+:107880001A1B895C0122AA40114001D00221084341
+:1078900030BD0000FA60010080B5002803D0011C53
+:1078A0001420F5F7FFFA80BDB0B5041CF7F708FD0A
+:1078B000134D00283C00D82601001DD1A00716D585
+:1078C00002208443114801222A624068002813D014
+:1078D000F2F751F900280FD10B48E430807A0128E3
+:1078E00000D00022111C0120F2F7A5F904E000F0FD
+:1078F0004EFBE861F2F73C00142701006BF9A96A1E
+:10790000002902D0201CEDF75CFEB0BD606C0100C8
+:10791000B05701002048B0B58168012904D1007832
+:10792000002801D1FDF772FD1B4D803D2C1C7034E9
+:1079300020780338052818D23C005027010001A305
+:107940001B5C5B009F44041527272700FBF7F1FF12
+:10795000607B011CFF3161730028F7D10420207087
+:10796000A889F8F7DAF9011C00220F2000F025FFA2
+:10797000B0BDEFF7CEFF6A21495B3C008C270100C8
+:1079800088420BD0E889F8F7CBF9011C00230022CC
+:107990000F2000F0F7FF07202070B0BDFDF73AFE82
+:1079A000B0BD000084660100F0B585B0041C038002
+:1079B000180C60800D1C5178107809023C00C82713
+:1079C00001004840A080D178907809024840E080CA
+:1079D0005179107909024840208168461A491422D9
+:1079E000EDF7E3FE00230020D907C90F8C464200C3
+:1079F0005607760F6146891949006E5C49193C00AB
+:107A00000428010049786F4609024E4081007958E8
+:107A10000F4F4900615A01304E403106360A760058
+:107A2000C90D795AF61901277F02F6193688714077
+:107A3000A65A8919A1520528DCDB2089C018013318
+:107A40003C0040280100082B2081D2DB05B0F0BDAE
+:107A50000000D8560100D8520100F0B5051C0C1CDE
+:107A60001E1C002089B04100535A013006AF7B52E2
+:107A70000528F8DB108900AB3A498019588468461C
+:107A800018223C007C280100EDF798FE0020410000
+:107A90000A195278635C6F46120253408200BA584A
+:107AA00006AF5200BA5A314F013053401A061B0A32
+:107AB0005B00D20DBA5ADB1901277F02DB191B8844
+:107AC0005A4006AB3C00B82801005B5AD21806ABFE
+:107AD0005A520628DEDB617B207B00AB090248405E
+:107AE000598C48404108C0034840198B40181883FE
+:107AF000E17BA07B09024840198B48404108C00344
+:107B00004840598B40183C00F4280100588302205B
+:107B1000410006AA8A18203AD28B01305308D203BA
+:107B20005A4006AB5B5AD21806AB5A520628EFDB16
+:107B3000300A28707004400E202108436870AE702F
+:107B40006178207800AB09023C00302901004840F0
+:107B5000598C4840C005000EE8700020410006AA7C
+:107B6000535A4A190130137106AB595A090A517117
+:107B70000628F3DB09B0F0BD0000EC560100D85236
+:107B80000100F0B54668051C60303C006C2901001E
+:107B900085B0049060E068680C2107690020EEF76A
+:107BA0002DFE7061018904390904090C0181706995
+:107BB000006840180421EEF721FEF0617069202171
+:107BC000046804980422407B800108433C00A829F3
+:107BD0000100E07028694089A07028694089000A86
+:107BE000207029690C31A018EDF79BFD2078202129
+:107BF0004006400E0843607028690A300188013150
+:107C00000904090C018004D128690C3001683C008A
+:107C1000E4290100013101603562617920790902AE
+:107C20004018A17909044018E17909064318009326
+:107C3000A0782178090240180404240C1020EEF7E3
+:107C400013FFB06128693A1C0168009B01A80A3241
+:107C50003C00202A0100FFF7C8FE2869231C0168A8
+:107C6000B06901AAFFF711FF3668002E9CD10349C5
+:107C700004486A68F7F763FB05B0F0BD0000FD6BD0
+:107C80000000A06A0100013807494000095C002992
+:107C900006D03C005C2A010004491C39085C00281D
+:107CA00001D001207047002070470000E6780100F5
+:107CB000FEB5051C002002901348171C00680C1C20
+:107CC0008678301CFDF728FA002801D10298FEBD05
+:107CD000002D08D13C00982A0100206800AB1871E3
+:107CE00060685871A068987103203880291C301C86
+:107CF00001AA00F00EF8002DECD000AB197921603C
+:107D0000597961609979A1600C213980E2E7F86BBB
+:107D10000100F8B5151C3C00D42A0100421E0138B0
+:107D200047003F181F483E18002906D001240322AF
+:107D3000311C281CEDF704FD32E06878012400288E
+:107D400005D02978081801380E2800D90024002C05
+:107D500026D0002A07D12A213C00102B010012480E
+:107D6000EDF79FFC1C211148EDF79BFC0F48032207
+:107D7000291C301CEDF7E7FC0C487178C05DB27827
+:107D800000290ED0002A0CD001224318084D06E02D
+:107D90004100491910398A73B7783C004C2B010017
+:107DA0000130CF738342F6D8FEF760F8201CF8BD8F
+:107DB000EB620100CA78010070B5051C1C48002365
+:107DC000C056431C32D1A87AF8F70CF900260028D7
+:107DD000184C08D0E869E16B00290BD13C00882BD6
+:107DE000010066630121E163A66306E0A869E16B17
+:107DF000002902D06663A663E663A16B0131A1632B
+:107E0000820301D50E4A1043E26B002A00D04042A3
+:107E1000626B1018606308290BD1002801DD3C005B
+:107E2000C42B0100012003E0002803DA0020C04336
+:107E3000EFF762FE6663A66370BD0000F46B01009D
+:107E4000846A01000000FEFF0C21054A41438918A5
+:107E500080B58978002901D1F3F7F2FA80BD0000DE
+:107E60003C00002C0100607B010080B5011C00205B
+:107E7000F7F703FA80BD80B5011C0120F7F7FDF983
+:107E800080BD02498968401AC00F70470000000198
+:107E9000070002498968081AC017013070470001BD
+:107EA00007003C003C2C010005494A6801231A43A5
+:107EB0004A608A681018886048689843486070472C
+:107EC0000001070010B5154B00210A019A58002A3D
+:107ED00017D101240A019C50D21810730023537348
+:107EE000022301283C00782C01000E4A05D1C8006D
+:107EF0008018103002789A4304E0C80080181030CF
+:107F000002781A43027002E001310829E0DB0829F7
+:107F100004D101219920EEF7FEFA03490804000C70
+:107F200010BDAC7301003C00B42C010000600700E0
+:107F3000FFFF0000F7B5194F194E0C1CC100C919FD
+:107F4000B268103181B0013A4A600B781D1C0D22D5
+:107F500093430B70012282403A73124B0001039A43
+:107F6000C0188260104A101C3C00F02C0100203028
+:107F7000877900AB1F70C0795870B0680330002358
+:107F8000261A01D5041C01234C600D70002B04D06F
+:107F9000201CFFF78AFF0028FAD000AB1888D08495
+:107FA000FFBD00600700000107003C002C2D010010
+:107FB000AC7301000010070030B50020C0430B4C2B
+:107FC000094B0022D10009190D7CED0707D549693D
+:107FD0009D68491B00D50021814200D2081C013256
+:107FE000082AEFDB30BD0000000107003C00682DCF
+:107FF000010000600700B0B508280BD2084D04014D
+:108000002959002904D000F04AF800202851B0BDB9
+:10801000022100E003219920EEF789FAB0BDAC738C
+:108020000100034900014018417B082211433C0034
+:10803000A42D010041737047AC73010001488068B2
+:10804000704700000001070070B50B4E094D00227B
+:10805000D0008419207CC00707D56069FFF726FF90
+:10806000002802D0A868323060610132082AEFDBB4
+:108070003C00E02D010070BD000000010700006021
+:108080000700024AC00080180174704700000060B9
+:1080900007000449C0004118087C0823021C9A43C9
+:1080A0000A74704700000060070070B5082817D2F6
+:1080B0000E493C001C2E01008A680E4D013AC10099
+:1080C00049194A610C4B9A7910310C780D26B4434A
+:1080D0000C700121814029739A71094A07490001F6
+:1080E0008018416070BD05219920EEF729FA70BD16
+:1080F000000107003C00582E01000060070020101E
+:108100000700D1750000AC730100F8B59E461A4B0C
+:1081100094469B681A4CC2001219013B5361151C0E
+:10812000184CA6792A1C103213780D27BB43137004
+:108130000127124B87403C00942E01001F73A6714B
+:10814000124E0001801963464360734683601378C2
+:10815000407BA679012718433843143500AB1E70C5
+:10816000E4795C70064B9B680333CC1A00D5191C6C
+:108170002960107000AB18883C00D02E0100034C21
+:10818000203CE084F8BD00010700006007002010DB
+:108190000700AC73010000B5011CFFF75EFF421839
+:1081A000101CFFF792FE0028FAD000BD0000891ACB
+:1081B000401A9918884201D801203C000C2F010078
+:1081C0007047002070470000F8B50F1C041C002801
+:1081D00001D1EEF7EFF9211C0120FFF719FA412038
+:1081E000005D002801D1002504E0022801D1052509
+:1081F00000E00125E068EEF729FBA66B3C00482F64
+:108200000100002E10D0002F06D02F20025D206A22
+:10821000416B281CEDF744FAA069002801D0EEF765
+:1082200046FC206AEEF743FC201CEEF740FC301CB5
+:10823000F8BDB0B5041CC06B002809D020693C0013
+:10824000842F0100008BEEF755F9002803D0211C84
+:108250000620FFF7E3F9084D201CA96DFFF7BAFFD0
+:10826000002807D0E8680130E860286A01382862F1
+:10827000FCF778F8B0BD0000C469010010B5064CE9
+:108280003C00C02F0100E16DFFF7A7FF002804D0DC
+:10829000E0690138E061FCF768F810BD0000C469CE
+:1082A00001000C230C495843401810B54468A168DC
+:1082B000002902D0201CEDF7F3F9E06B002808D06C
+:1082C00020693C00FC2F0100008BEEF719F9002813
+:1082D00002D0201CF9F726F910BD0000607B0100D8
+:1082E000F8B522494868800006D40120400708609C
+:1082F0004A69920000D448601D4F787EC306012071
+:10830000021CDB0E3C00383001009A400A6079699B
+:108310008C688C602107890F09D0210704D50B21B7
+:108320009E20EEF728F900E078640C208443124880
+:108330003D68065D6C682C3406E0A0680068A060AB
+:10834000E968281CEDF73C0074300100B2F9013EE9
+:10835000F6D2A068806800280DD0408900280AD095
+:10836000786C002807D178698068800703D10C21D8
+:108370009E20EEF703F9F8BD00100700CC6D010058
+:10838000B4440100094980B53C00B0300100087ECA
+:10839000C206D20E01209040074A106000200A69F0
+:1083A000C04390600868243106C90369EDF786F977
+:1083B00080BDCC6D010000100700F8B54468061CB4
+:1083C0002C3420680D1C806800903C00EC300100CB
+:1083D000002800D0C5602068006820604068002840
+:1083E00003D00A219E20EEF7CFF820684560281CB4
+:1083F00002E000224260081CC1680029F9D17168BE
+:1084000060270B1C40339C469B78CA7E3C00283179
+:1084100001005B011207120F3B401A438B8FFF27AD
+:108420003F041B043B401A4390231A4342606346B7
+:108430009A780132D207D20F9A70896BC160216895
+:1084400088600098002801D00098C5600A4F3C0061
+:1084500064310100BD79A06900280CD00022A2611E
+:1084600074686069EFF72EFFE06A616940684860F0
+:10847000616901200860BD71F8BD0000201007008F
+:10848000FEB544680F1C01942C34201C123002905D
+:108490003C00A03101002CE00C20EEF700FB051C95
+:1084A000606800281DD10298002100900020EEF79E
+:1084B0000EFA061C00980421EEF709FA011C019837
+:1084C000C07E0007000FD03070600198C07E0007AA
+:1084D000000F3C00DC310100F0304860301CEEF74A
+:1084E00019F96560E66001E0206805606068286051
+:1084F000256000206860A860381CFF300006000E70
+:10850000391C071C0029CAD16068A060FEBD0000AC
+:10851000FFB5051C3C0018320100081C002681B084
+:10852000F4F72FFE041C02D06068FF2801D1062654
+:1085300028E0211C20310A78012A01D1032621E0FC
+:10854000012725600F7011C51D48083D686103981B
+:108550006A46E86004983C005432010028611A48D9
+:10856000A8611A48E8611A4828621A486862207EA1
+:10857000A168EDF7B3FE002806D1607EE1686A4687
+:10858000EDF7ACFE002807D00426311C9E20EEF744
+:108590000DF8301C05B0F0BD3C00903201006A4679
+:1085A0000F491D20EDF79DFE01210D48490701608F
+:1085B000227E3B1CD206D20E93404360627ED206DE
+:1085C000D20E974047604160E6E731330100D9326F
+:1085D000010091310100DD3001003C00CC3201008E
+:1085E000FD320100713301000010070042682C3297
+:1085F000506843680B6081684B890B818368002158
+:10860000D9604160816000685060002070470000C0
+:1086100070B54268FF269187106B0C043C0008334C
+:108620000100051C3604344043685968B1432143B6
+:1086300059600068A842F7D1106B516940684860E2
+:1086400051690120086070BD0000B0B54368081C86
+:1086500059629A6200250AE04581C4682A1C3C00E0
+:1086600044330100002C03D19A7E1207120F1032FE
+:108670004260201C0028F2D118694160196901206C
+:10868000086002480068EDF737F8B0BD5C5B010098
+:1086900001200549400780B58860044801680D2025
+:1086A0003C0080330100FEF7E6FF80BD00000010B3
+:1086B0000700C4600100F8B50E4F0C4E002448209E
+:1086C0006043C5194821281CEDF77BF81C20604346
+:1086D0008119281D1C22EDF7FEF81C23E8560549D8
+:1086E000FBF73C00BC330100CDF80134012CE9D389
+:1086F000F8BD0000B8440100CC6D01001532010046
+:10870000FFB5051C0A30061C81B0F2F7DDF8184FE2
+:10871000041C3988EFF7BCFC3288786802807288C4
+:10872000023002803C00F8330100B188124E4180D3
+:10873000288808364005002805DA6988039A201C35
+:10874000F7F701FD00E000207080F8F75EFC0121E2
+:1087500009030028308801D0884300E008433080B6
+:108760000548002200213C00343401001430EFF7AA
+:1087700065FC201CF9F774F805B0F0BDB07A010073
+:1087800010B50E4C6068F8F795F92068006A00286B
+:1087900013D1F8F7BFFC002808D021680120086237
+:1087A0001F210022832000F03C00703401009FF95B
+:1087B00002E06068F8F721FAFFF797FC216808618A
+:1087C00010BD147A0100FEB51B4E0F1C1D1C141C9D
+:1087D000B060081CF7F72BFFB08034733562381C8B
+:1087E00001AA02A9F7F725FF00AB3C00AC34010059
+:1087F000187A012818D118790B2808D1307F242342
+:108800000F49584340188068ECF788FFFEBD00AB65
+:1088100018790A2808D1F7F739FD071C291C201CF4
+:10882000F7F716FD3818B080307F24233C00E83479
+:1088300001000449584340184068ECF772FFE8E72C
+:108840000000D479010094460100B0B5FFF753FC55
+:10885000041CFBF7FCFA0C4D29680969091B0C1A6A
+:1088600002211F2000F08BF8142C06DD02223C00B0
+:1088700024350100211C1F2000F050F80120B0BD5C
+:1088800029680120896A0029F9D00020B0BD0000C4
+:10889000147A0100F8B51A4D071CAE790121194C64
+:1088A00000202268002A14D1AE71A268D06806CADE
+:1088B0003C0060350100ECF73CFFAE790021134A23
+:1088C000506901305061A0688068A0606268904281
+:1088D00006D10120206003E001300C340328E3DBE3
+:1088E000002F08D100290AD00A484068002806D085
+:1088F000FAF73C009C350100F5FF03E0012F03D09F
+:10890000002901D1AE71CEE7AE71F8BD201007008D
+:1089100018D90100A8600100705D010080B5012335
+:10892000F5F77CF880BD000080B50023F5F776F8F8
+:1089300080BD00003C00D8350100F8B5134B002481
+:108940001B8898421BD2114BC000C01845680668AE
+:108950002868002817D10E4FA8684368B34209D190
+:10896000C3688B4206D10368934201D0531C01D1E6
+:108970000124476080683C00143601006B68834224
+:10898000EED103E001218020EDF740FE201CF8BD70
+:1089900056570100845D010029E30000F8B5174F28
+:1089A0000A1CBE79164D00236C6807E021689142CD
+:1089B00002D12179814204D03C0050360100231CB1
+:1089C000E468002CF5D117E0002C15D0002B0DD158
+:1089D000E3680D486B600088002B02D1FFF7D1FBE4
+:1089E00006E00A4A9968FFF7F6FB01E0E068D86004
+:1089F0002868E0602C6002E001213C008C36010018
+:108A0000FFF7A4FFBE71F8BD201007007C5D0100D8
+:108A10002C7401002138010070B5094EB579F9F7C1
+:108A2000AFFE041C09D0201CEDF70CFB05498A6839
+:108A300080188860086801300860B5713C00C8364D
+:108A40000100201C70BD20100700A860010009482B
+:108A500080B54068021C0BE00169002907D0824202
+:108A600004D0816805480088FFF7E5FA80BDC0683A
+:108A70000028F1D180BD7C5D01002C7401003C0018
+:108A800004370100054880B54268002A04D0044834
+:108A900000889168FFF7D2FA80BD00007C5D01007C
+:108AA0002C74010005480168002904D0C068002822
+:108AB00001D00120704700207047000018D9010044
+:108AC0003C004037010080B5F6F7D1FA80BD131C99
+:108AD0000D4AB0B5128890420FD203290DD20A4A2E
+:108AE000C00014580A4DAC4207D113500C2359430F
+:108AF000084BC91880184160B0BD02218020EDF7F5
+:108B000094FD3C007C370100B0BD000056570100C9
+:108B1000845D010009A0000018D90100F8B50F1C00
+:108B20001E1C151C041C111CFFF74AFF331C2A1CB9
+:108B3000391C201CF4F78AFFF8BD0000F7B59446F5
+:108B4000FF2921D03C00B837010015480088814238
+:108B500021D2144A154EC8008518B4796868026895
+:108B6000002A03D1031D0CCB9A4211D043689A68A6
+:108B700042600E4A176901371761B4710022026022
+:108B80000098D86060463C00F43701001860197402
+:108B900028685860FEBDB471062100E007218020DE
+:108BA000EDF74CFDF6E7000056570100845D01002B
+:108BB00020100700A8600100B0B5144D6C68002CAF
+:108BC00001D0844204D00C213C00303801008020C8
+:108BD000EDF737FDB0BDFFF7B8FAA168401A0D49AF
+:108BE000884203DA10218020EDF72BFD21792268DD
+:108BF0000120FFF7ACFFE3686B60002B05D007484E
+:108C0000064A00889968FFF7FEFA3C006C380100BC
+:108C10002868E0602C60B0BD7C5D010018FCFFFF9F
+:108C2000213801002C740100B0B5154C0820211C1E
+:108C300080310870134A4104116013480068134DD5
+:108C40006B69184001D1102000E000203C00A838DA
+:108C50000100A8235B5D1843231C40331873516047
+:108C600020788008800020700020FFF712FBFFF7BB
+:108C700072FA643028660138A06120780321084325
+:108C80002070B0BD000000900700001007003C00FD
+:108C9000E438010010000700A46C010038B50A4C4C
+:108CA000211C20318A7900AB1A70C979074D59709F
+:108CB0006978884203D1F8F713FCFF20687000AB95
+:108CC0001888E08438BD0000001007004C7B0100CC
+:108CD0003C0020390100F8B50B1C061C041D7F3335
+:108CE00014D033685D18356023881F180623FF569B
+:108CF000EB1B336023881818817120880130000431
+:108D0000000C2080904201D300202080101C31688C
+:108D1000ECF73C005C3901006DFEF8BD0E490A7CA1
+:108D200083781A430A74427883789A430B7C93437E
+:108D30000B748A7C43781A438A748A7C03789A433A
+:108D40008A74027843781A434B7C1A434A744A7CEB
+:108D5000C07882433C00983901004A747047100083
+:108D60000700B0B5064D00242006000EEDF7F7F819
+:108D7000A100695808710134042CF5DBB0BD107BEB
+:108D800001000B480C497D234269DB00002AC86BB7
+:108D900007D0C0181A013C00D43901009042C863C2
+:108DA00001D90748C8637047FF38F538C86398424F
+:108DB000F9D2CB6370470000F4680100447D0100E4
+:108DC0007017000070B50D1C041C161CFBF7F6FA9A
+:108DD000B0432843011C201C3C00103A010000F065
+:108DE000CCFA70BD000080B50B4A002909D00229D9
+:108DF0000FD1011C0848D2783830FFF778FF0649B8
+:108E000006E0011C044812792030FFF770FF034987
+:108E1000086080BD0000AC7C01003C004C3A0100C1
+:108E2000C8670100C467010080B50B4A002909D05A
+:108E300002290FD1011C084852796830FFF75AFF08
+:108E4000064906E0011C044892795030FFF752FFB2
+:108E50000349086080BD0000AC7C01003C00883AFA
+:108E60000100D0670100CC67010008B50421009122
+:108E7000817E4368032906D1011C0C3101206A461A
+:108E8000ECF79AFC08BD1968C160FBE7000010B55B
+:108E9000031C0020084C0021CA00121992783C00E3
+:108EA000C43A01009A4203D1C8000019406810BDBD
+:108EB0000131090609160629F1DB10BDCC5A010063
+:108EC000F8B50F1C161C0025FEF78EF9041C0AD0FD
+:108ED0004A20005D052806D1381CF1F781FE0028E4
+:108EE0003C00003B010001D001253460281CF8BD86
+:108EF000000070B50D1C161C0024FEF778F9002840
+:108F00000BD04A21095C052907D10169002904D148
+:108F10003060F1F704FD01242860201C70BDF8B515
+:108F2000061C3C003C3B010000250C1C081CF1F712
+:108F30005DFE002801D0002105E0201CF1F774FE41
+:108F4000002814D00121301CF4F780FB0090002889
+:108F50000DD0084F01250622311C381CECF7C2FC4D
+:108F60000622211C3C00783B0100B818ECF7BDFC40
+:108F70000098F860281CF8BD0000707C01000021FA
+:108F8000002806D04278072A03D1C079012800D1F1
+:108F90000121081C7047F8B5051C0027164EF1F793
+:108FA00028FE002807D03C00B43B0100F1F7C0FBCD
+:108FB000002810D10024F1F7BBFC06E0F1F702FE17
+:108FC000002808D00124F1F799FD011C0622301C6D
+:108FD000ECF78EFC0127002F0DD0211C281CF4F784
+:108FE0003BFB011C054806223C00F03B0100063813
+:108FF000C160291CECF77FFC0120F8BD0020FCE7D4
+:109000000000767C0100F0B5071C006802210468AE
+:10901000786987B00140002500290591744E12D06F
+:1090200022880121130502D4C0073C002C3C01001A
+:10903000C11701316F480029006801D0013004E0F8
+:109040001106890E2D2901D1033030602088800758
+:1090500067D17869C00764D503AA04A9201CF7F773
+:109060004BFB00AB187C002807D0187C3C00683C08
+:109070000100022858D1187B4007400F042853D81C
+:1090800020790599C007C01701300290002902D14C
+:109090000298002848D10599002904D020880005AD
+:1090A00001D400203060C020EDF7CBFD051C3C0052
+:1090B000A43C0100201C0A300690FEF7ADF8061C07
+:1090C000281C08302388021D111DDB0506D5069BD0
+:1090D0000360201C10301060201D0EE0231D136063
+:1090E0002288920505D5221C10320260069B0B6077
+:1090F0003C00E03C010004E0069B0360201C1030B3
+:1091000008602869F1F743FC002808D0012812D034
+:10911000022858D100AB187C002854D112E000ABD3
+:10912000187C02280BD1002E4DD04B20805D0228E8
+:1091300049D13C001C3D010007E063E000AB187C16
+:10914000002802D1381CFEF71BFF2088410430485C
+:1091500011D5002E52D000AB197C002926D00299DF
+:10916000002902D0B06A007800E0007801281DD004
+:10917000032843D13C00583D01001AE000AB197CA4
+:10918000022916D1197B042913D0197B0C2910D080
+:109190002249096800290CD0002E0AD00299002922
+:1091A00002D0B06A007800E00078012829D00328B6
+:1091B00027D02822391C3C00943D0100281C88300F
+:1091C000ECF70AFC00AB197C281C80300171197B7C
+:1091D00041716C606E611BE00599002914D0114843
+:1091E000846C002C10D00022002E04D04036B07ABF
+:1091F000052800D1012200923C00D03D0100F87A00
+:10920000BA7A2969C307DB0F0698ECF700FB281C24
+:10921000EDF707FD0025281C07B0F0BD0000C46A6B
+:1092200001006861010028610100C469010080B586
+:109230000220FFF770F880BD00003C000C3E0100EA
+:10924000B0B51D4D012817D0A22806D0A32803D100
+:1092500001211520FFF708FCB0BD002901D11748F6
+:1092600002E07D20C000484300230122011C286049
+:109270001520FFF7A7FCB0BD012904D03C00483EF3
+:1092800001000229FAD100F02AF8B0BD6C68F5F7A8
+:10929000DEFCFEF7A8FF6860002C09D029680A23CD
+:1092A0005943001B884203D901211520EDF717FA15
+:1092B000012215202968FFF7A6FBB0BD00003C0085
+:1092C000843E0100047901000087930301200449D2
+:1092D000400380B5086003211520EDF703FA80BD37
+:1092E00000100700074880B5BE210173017A1022E3
+:1092F000114301720023022215200349FFF768FC85
+:109300003C00C03E010080BD000000030700809FBC
+:10931000D50080B5002803D00A1C1521A22002E048
+:1093200000221521A320FFF766FC80BD000010B5C8
+:1093300000F019F80A48BE210173037A1022934302
+:1093400001243C00FC3E0100234303720173017AB7
+:109350009143202211430172022215200249FFF796
+:109360005BFB10BD00030700809FD50080B5022184
+:109370001520FFF785FB0448BE210173017A1122F5
+:10938000914301723C00383F010080BD00000003A2
+:109390000700F8B5061C051C60360027446822E06B
+:1093A00008210020EDF741FB6061018904390904BF
+:1093B000090C01816069006840180421EDF735FB54
+:1093C000E0616069717B3C00743F010000688901C5
+:1093D000C17029690C310322ECF7BAFA28690C3004
+:1093E0000168013101602562A7612468002CDAD18F
+:1093F000024903486A68F6F7B3F8F8BDFD6B000050
+:10940000A06A010080B500073C00B03F01000009E0
+:109410000902090A084302490860FFF720FF80BDDE
+:1094200000006000070008001400C8000000E80306
+:10943000000010001400C8000000E80300001C0039
+:109440001400C8000000E80300003C00EC3F0100ED
+:109450002401070032000000E8030000400601007C
+:109460000600000007000000416E62697E64616FC3
+:109470006F00000052656C6561736520365F375F71
+:109480003135204275696C6420323A353C00284001
+:1094900001003239382053657020303420323030AA
+:1094A000392031373A31333A3230202848573D3469
+:1094B0003A332C4254434F455829000000003200F3
+:1094C0001C00102030405060FFFFFFFFFFFF3C00FA
+:1094D00064400100000000000100000001000000E5
+:1094E00000000000E8037000000000000100000020
+:1094F0000000000002000000D0073800000000005B
+:109500000100000001000000040000007C151500AF
+:109510003C00A0400100000000000100000001002C
+:1095200000000B00000070171E0001000000010089
+:109530000000000000000C000000282316000100BD
+:109540000000010000000000000012000000F82AE6
+:109550000B003C00DC4001000000000001000000A6
+:109560000100000016000000E02E120001000000C3
+:1095700001000000000000001800000050460E002E
+:1095800001000000010000000000000024000000B5
+:10959000F05508003C0018410100010000000000E7
+:1095A0000000010000002C000000C05D0E00010062
+:1095B0000000010000000000000030000000E88012
+:1095C0000400010000000000000001000000420053
+:1095D0000000A08C0A003C00544101000100000082
+:1095E00001000000000000004800000080BB0A00ED
+:1095F0000100000001000000000000006000000009
+:10960000F0D20A000100000001000000000000008C
+:109610006C000000C00090003C0090410100C000C0
+:109620009000C00090001400100014001000C00052
+:1096300090001400100014001000C00090001400EE
+:109640001000C0009000140010001400100014005E
+:109650001000C0009000600048003C00CC410100B8
+:109660006000480014001000140010006000480062
+:1096700014001000140010006000480014001000D6
+:1096800060004800140010001400100014001000C6
+:10969000020004010B020C03120416053C000842F0
+:1096A00001001806000E000E2407000E2C083009D9
+:1096B000000E000E000E420A000E480B000E000EB7
+:1096C000000E000E000E600C000E000E6C0D00006F
+:1096D00000000000000000000080C0FFFFFF3C0011
+:1096E00044420100B6FFFFFFD3FFFFFFC9FFFFFFAA
+:1096F000FFFFFF7F000000000000000000000000EE
+:1097000000000000000000000000000051B0000058
+:109710000C00000051B000000C00000059AF000028
+:109720003C008042010000000000A5AF00000000E6
+:1097300000004DAF00000600000000000000000027
+:10974000000045B00000060000000000000000001E
+:109750000000D5AF000000000000ADB00000000028
+:1097600000003C00BC42010095DB0000000000004E
+:1097700095DB00000000000099B000000C00000024
+:1097800000000000000000000000000000000000D9
+:1097900000000000000000000000000000000000C9
+:1097A000000000003C00F8420100000000002D17FE
+:1097B00001003517010021170100D99C000049174D
+:1097C00001003D170100D19C0000D19C00001D1A32
+:1097D0000100D19C0000011A0100311A0100251A74
+:1097E00001003D1701003C0034430100811A0100D3
+:1097F000D19C000079170100D99C00005D17010081
+:10980000A11701009517010081170100211801001F
+:10981000F5170100000008000C000000100008000F
+:1098200008000000010000003C007043010002003D
+:109830000000040000000800000010000000191CD7
+:1098400001008941000089410000854100008541F7
+:1098500000008541000085410000894100008541EC
+:10986000000085410000351B01003C00AC430100B5
+:109870009D1B0100011C010089410000894100007D
+:109880008941000085410000651801002918010088
+:1098900039180100BD180100894100004D18010070
+:1098A000A518010085410000011901003C00E843B2
+:1098B0000100D9180100ED180100151901008941B6
+:1098C0000000894100008941000085410000894174
+:1098D000000089410000691C010089410000711CE1
+:1098E00001008941000089410000FDDB00003C00CF
+:1098F000244401001D7C000000008000F5DA000017
+:1099000014008100FDDD000008008200C5DD0000BC
+:109910003800830045DC00001000840099DC000062
+:109920000C00860039DC00001000880011DE000009
+:109930003C006044010010008A0035DD00000C008E
+:109940008C00ADDF00001C008E00C9DE0000380076
+:109950008F00EDDC00003800900075DF00000C0087
+:1099600091008DDC00000C009300B9DD00000C00BC
+:1099700094003C009C44010000080808100C0C0CEA
+:10998000080C080C080C0808080814080814003013
+:109990000001010200000000AD300100153001009F
+:1099A00020300700303007000607020300000000E7
+:1099B000000000003C00D8440100FFFFFF00FFFF53
+:1099C000FF00FFFFFF000000000080C90200943F7D
+:1099D0000300E08B5A00053A8500C8F20600F84CF7
+:1099E000560020A73D00B74A0000B74A000000001B
+:1099F0000000000000003C001445010001010102CC
+:109A00000202030303040404050600002D7C000089
+:109A10000000FF00FD9500000800FF00ED9700002A
+:109A200008008200CD9500000C0083004D960000D8
+:109A30000C0085002D7C00003C005045010000001A
+:109A4000FF002D7C00000000FF002D7C00000000C6
+:109A5000FF003D9600000C008900D9970000080027
+:109A60008A00919500000800FF002D7C0000000096
+:109A7000FF002D7C00000000FF003C008C45010031
+:109A8000F997000008008D002D7C00000000FF0009
+:109A90002D7C00000000FF00C997000030009000FE
+:109AA0001195000018009100159600000800920022
+:109AB000599500003C009300299600003C00C845E1
+:109AC000010008009400A19500000800950081970E
+:109AD00000000C0096006D97000010009800000038
+:109AE00000000000FF00000000000000FF00000870
+:109AF00008080808000000100800000800103C00DA
+:109B000004460100080C0C0C0C1C0C0C0800000096
+:109B10000D8B0000F58A0000E98A0000018B00002F
+:109B200014080C0C100C0000B1980000800000001C
+:109B300019990000810000003D7C000080000000B9
+:109B40003C00404601003D99000082000000099958
+:109B50000000830000003D7C000085000000000044
+:109B6000000000000102020104040808813780F3AC
+:109B7000AAAA03000000AAAA030000F86DA96DA913
+:109B80006EA93C007C4601006EA86EA86EA86FA767
+:109B90006FA76FA76FA66FA670A670A570A4000030
+:109BA000B51B0100C91B0100E11B0100E59C000081
+:109BB000A51B0100E59C0000891B0100D59C00004D
+:109BC000D59C00003C00B8460100D11A0100E51AFE
+:109BD0000100051B0100251B0100B11A0100E59CD5
+:109BE00000009D1A0100D59C0000C11A01008919CE
+:109BF0000100A9190100C9190100F1190100791921
+:109C00000100E59C00003C00F446010065190100DC
+:109C1000D59C0000D59C0000D59C0000D59C000080
+:109C2000D59C0000D59C0000D59C0000551C01006F
+:109C3000451C0100451C0100D59C0000D59C00007E
+:109C4000D59C0000D59C00003C0030470100D59C0D
+:109C5000000055190100E59C00004119010031196F
+:109C60000100D59C000002050A00000002040A0061
+:109C70000000C5200000212100002521000039211D
+:109C8000000049210000552100003C006C47010004
+:109C900061210000ED2100000D22000021220000C2
+:109CA0003D22000049220000C5220000E122000000
+:109CB000F5220000E91F0000E91F0000E91F000075
+:109CC000E91F0000E91F0000112300003C00A84725
+:109CD00001001D23000089230000A5230000B923F3
+:109CE0000000112000001D2000006D2000008D20CC
+:109CF0000000B92000000001020303050606080960
+:109D000008090909C480CA8080808080D0803C0016
+:109D1000E4470100D6D9DCDFE2808080E5E880807E
+:109D20008080EBEEF1F4F7FAFD0001000200030081
+:109D30000400050006000700080009000A000B00E7
+:109D40000C000E00100011001300160018001B007C
+:109D50003C00204801001E00220026002B0030009D
+:109D600036003C0044004C0055005F006B0078005A
+:109D700086009700A900BE00D500EF00FF7F0C0011
+:109D8000060002000000FEFFFCFFFBFFFAFFF9FFE8
+:109D9000F8FF3C005C480100F7FFF6FFF5FFF4FF19
+:109DA000F3FFF2FFF1FFF0FFEFFFEEFFEDFFECFF3F
+:109DB000EBFFEAFFE9FFE8FFE7FFE6FFE5FFE4FF6F
+:109DC000E3FFE2FFE1FFE0FFDFFFDEFFDDFFDCFF9F
+:109DD000DCFF00003C00984801000000000000008B
+:109DE0000000B17C4100115A40E2B27C4100055AAA
+:109DF00040E2AF7C4100F95940E2B07C4100ED59AE
+:109E000040E2246701000E0000E35C6701000E00E1
+:109E100000E30A6101003C00D4480100010000E3B6
+:109E20000E610100010000E3326701000E0000E353
+:109E30006A6701000E0000E30B610100010000E30E
+:109E40000F610100010000E3406701000E0000E324
+:109E5000786701000E0000E33C00104901000C612E
+:109E60000100010000E310610100010000E34E6702
+:109E700001000E0000E3866701000E0000E30D61A3
+:109E80000100010000E311610100010000E3C0488E
+:109E900001000400000AE04801003C004C490100B8
+:109EA0000400000A004901000400000A20490100E2
+:109EB0000400000A18670100040000E2287501018F
+:109EC0007DA940E22C750100040000E2207501002C
+:109ED000040000E244750100040000E23C008849EF
+:109EE0000100F0590100040000E200000000000041
+:109EF00000000000000000000000247501000400C4
+:109F000000E2B87C0100040000E28DA9000001001D
+:109F100000DA1D750100010000E2C46701003C0089
+:109F2000C4490100040000E200000000000000003D
+:109F3000215900000E0000D9C8670100040000E2AA
+:109F4000CC670100040000E2D0670100040000E2D9
+:109F500065D90000040000DAA5D90000040000DA89
+:109F60003C00004A010001590000010000DA32679C
+:109F700001000E0000E36A6701000E0000E31159C2
+:109F80000000010000DA0000000000000000B048FE
+:109F900001000200000AA04801000200000A404936
+:109FA00001003C003C4A01000500000A684901002C
+:109FB0000900000A6C570100040000E2386101004A
+:109FC000040000E20000000000000000AC6E010090
+:109FD000040000E2B06E0100040000E270570100CE
+:109FE000040000E23C00784A0100E8590100080042
+:109FF00000E3DC5801144DFD40E32C59011439FDF8
+:10A0000040E3C05801000E0000E300000000000023
+:10A0100000000000000000000000647341003D2EBD
+:10A0200044E27C5901143C00B44A01009D2F44E3F2
+:10A030005C5701000E0000E2792E0400010000DBF5
+:10A04000A0580100020000E3A2580100020000E352
+:10A05000A05701000E0000E3D1880100010000DAE2
+:10A060001D890100040000DA3C00F04A01009588D7
+:10A070000100040000DB312F04000E0000D9C52EC2
+:10A0800004000E0000D9686C010115D540E2C057EC
+:10A090000100080000E3C8570100340000E39C6C95
+:10A0A0000100080000E3B05801033C002C4B010004
+:10A0B000E9D440E2BC580100040000E29DA3000086
+:10A0C000600000D970790100040000E27879010095
+:10A0D000040000E27C5A0100040000E25D1C000064
+:10A0E000110000D9246E0100040000E23C00684B1E
+:10A0F000010018580105D5D540E3FC5701001400B4
+:10A1000000E3048E0103E5D540E3005B0100040099
+:10A1100000E2185B0100400000E2D4670100040087
+:10A1200000E28D370000040000DBBD3600003C007B
+:10A13000A44B0100040000DBFC600100020000E20F
+:10A14000907D0100040000E270690100040000E25B
+:10A150000000000000000000B04901001A00000AE1
+:10A16000904B01000600000AA458810005FD40E361
+:10A170003C00E04B0100804A01000C00000A0C5A30
+:10A180008101252D44E3E04A01000300000A186321
+:10A190004100FDBB40E208570100010000E29C487D
+:10A1A0000100040000E20000000000000000F84A86
+:10A1B00001003C001C4C01000200000ACC740100AC
+:10A1C000030000E365734100A92E44E2F659010142
+:10A1D000D12C44E3084B01000400000A07000000F2
+:10A1E0000100006A284B01000200000A887D01007E
+:10A1F000040000E23C00584C010000750104656F4A
+:10A2000040E3BC7801000E0000E3384B010004007D
+:10A21000000A0457010004000062584B01000200CC
+:10A22000000A804B01000200000A684B0100030095
+:10A23000000A8C7D01003C00944C0100040000E207
+:10A24000392D0400040000DB947D0100040000E2CD
+:10A2500000000000000000000000000000000000FE
+:10A260000000000000000000104001000000006439
+:10A27000A84C01000400000A3C00D04C0100000082
+:10A28000000000000000C84C01000100000AD04C92
+:10A2900001000200000A0000000000000000E77A50
+:10A2A0000100010000E2E87A0100010000E2000084
+:10A2B000000000000000ED7A01003C000C4D0100A0
+:10A2C000010000E2EE7A0100010000E2000000005F
+:10A2D00000000000F37A0100010000E2F47A0100BE
+:10A2E000010000E20000000000000000F97A010017
+:10A2F000010000E2FA7A0100010000E23C00484D52
+:10A300000100E84C01000300000A004D01000300B9
+:10A31000000A184D01000300000A304D010003003F
+:10A32000000A905C0100040000E2945C010004005B
+:10A3300000E2985C0100040000E29C5C01003C002B
+:10A34000844D0100040000E2A05C0100040000E272
+:10A35000A45C0100040000E2A85C0100040000E22B
+:10A36000AC5C0100040000E2B05C0100040000E20B
+:10A37000B45C0100040000E2B85C0100040000E2EB
+:10A380003C00C04D0100BC5C0100040000E2C05C68
+:10A390000100040000E2C45C0100040000E2905CE3
+:10A3A0000100380000E3684D01000E00000AD84D9E
+:10A3B0000100020000FA1261810131D540E306611B
+:10A3C00001003C00FC4D0100020000E20B610100B5
+:10A3D000010000E30F610100010000E308610100DA
+:10A3E000020000E2507B0100040000E200000000D7
+:10A3F00000000000384E01000E0000649C5701016F
+:10A40000918841E33C00384E01006E41676FE26580
+:10A4100060696F20414200000000F04D010009001A
+:10A42000000A484E01000100000AE84D0100010049
+:10A43000000A0000000000000000484D0100040078
+:10A44000000A286101013C00744E0100BDD540E2C4
+:10A450006961410085D540E230610100040000E2FD
+:10A4600034610100040000E23C610100040000E2EC
+:10A4700034610100040000E244610100040000E2D4
+:10A48000000000000400006A3C00B04E0100704E65
+:10A4900001000800000A18610100020000E21C61CE
+:10A4A0000100040000E220610100020000E22461DA
+:10A4B0000100040000E2B84E01000200000AC84E8C
+:10A4C00001000200000AD84E01003C00EC4E0100E1
+:10A4D0000200000A96480100060000E3E062010065
+:10A4E000040000E2000000000400006A9B7D0100FF
+:10A4F000010000629C7D010002000062607C01009E
+:10A50000040000E2010000000400006A3C00284F43
+:10A5100001002D6301000100006200000000000046
+:10A520000000000000000000000049D500000E00FF
+:10A5300000D9F467010002000062467D01000100BD
+:10A5400000629C7C0100040000E2987C01003C0059
+:10A55000644F010002000062A07C0100060000625E
+:10A56000587C010002000062647C01000600006269
+:10A570005A7C0100020000626A7C01000600006251
+:10A58000010000000400006AE4620100040000E22F
+:10A590003C00A04F0100E8620100030000E200005F
+:10A5A00000000400006A000000000400006A0100CE
+:10A5B00000000400006A000000000400006A0000BF
+:10A5C00000000400006A000000000400006A0000AF
+:10A5D00000003C00DC4F01000400006A00000000A5
+:10A5E0000400006A000000000400006A000000008F
+:10A5F0000400006A000000000400006A000000007F
+:10A600000400006A000000000400006A000000006E
+:10A610000400006A3C001850010000000000040023
+:10A62000006A000000000400006A0000000004004E
+:10A63000006A000000000400006A0000000004003E
+:10A64000006AF04E01002A00000A01000000040028
+:10A65000006A752A01003C00545001000C0000DB28
+:10A66000020000000400006A752A01000C0000DBF3
+:10A67000030000000400006A752A01000C0000DBE2
+:10A68000040000000400006A752A01000C0000DBD1
+:10A69000050000000400006A3C0090500100752A8B
+:10A6A00001000C0000DB060000000400006A752AAF
+:10A6B00001000C0000DB070000000400006A752A9E
+:10A6C00001000C0000DB080000000400006A752A8D
+:10A6D00001000C0000DB090000003C00CC50010030
+:10A6E0000400006A752A01000C0000DB0A0000006B
+:10A6F0000400006A752A01000C0000DB0B0000005A
+:10A700000400006A752A01000C0000DB0C00000048
+:10A710000400006A752A01000C0000DB3C000851AF
+:10A7200001000D0000000400006A752A01000C0001
+:10A7300000DB0E0000000400006A752A01000C0016
+:10A7400000DB485001000200000A585001000200DE
+:10A75000000A685001000200000A785001003C0025
+:10A76000445101000200000A885001000200000A62
+:10A77000985001000200000AA85001000200000ADF
+:10A78000B85001000200000AC85001000200000A8F
+:10A79000D85001000200000AE85001000200000A3F
+:10A7A0003C0080510100F85001000200000A0851ED
+:10A7B00001000200000A185101000200000A405086
+:10A7C00001000100000AE84E01000100000A00003B
+:10A7D0000000000000000000000000000000B04E7B
+:10A7E00001003C00BC5101000100000A0000000013
+:10A7F00000000000285101000E00000A00000000C7
+:10A800000000000000000000000000000000000048
+:10A810000000000000000000000000000000000038
+:10A82000000000003C00F8510100985101000C00AC
+:10A83000000A504E01000400000AE04C0100010033
+:10A84000000A0000000000000000C04B01001D00D5
+:10A85000000AF85101000500000A248007000000EA
+:10A8600000001D8007003C00345201000800000079
+:10A870002A8007005C00000024800700020000001E
+:10A880001D800700200000002A8007006A000000E9
+:10A8900024800700020000001D8007002000000047
+:10A8A0002A8007006A0000003C007052010000018D
+:10A8B00002030405060708090A0B0C0D0E0F101100
+:10A8C00012131415161718191A1B1C1D1E1F0163CD
+:10A8D0000000A1630000C5630000B1620000C56311
+:10A8E0000000216300004D6300003C00AC520100F9
+:10A8F000A163000001630000A163000006050505D7
+:10A9000005050505050505050505030506070809EF
+:10A910000A0A0C0D0E0F0F1011000000A5C684F8D6
+:10A9200099EE8DF60DFFBDD6B1DE54913C00E85294
+:10A93000010050600302A9CE7D5619E762B5E64DCD
+:10A940009AEC458F9D1F408987FA15EFEBB2C98EAF
+:10A950000BFBEC4167B3FD5FEA45BF23F75396E479
+:10A960005B9BC2751CE1AE3D6A4C5A6C417E3C005B
+:10A970002453010002F54F835C68F45134D108F987
+:10A9800093E273AB53623F2A0C08529565465E9D75
+:10A990002830A1370F0AB52F090E36249B1B3DDF47
+:10A9A00026CD694ECD7F9FEA1B129E1D74582E3412
+:10A9B0003C00605301002D36B2DCEEB4FB5BF6A424
+:10A9C0004D7661B7CE7D7B523EDD715E9713F5A665
+:10A9D00068B900002CC160401FE3C879EDB6BED451
+:10A9E000468DD9674B72DE94D498E8B04A856BBB2C
+:10A9F0002AC53C009C530100E54F16EDC586D79A49
+:10AA000055669411CF8A10E9060481FEF0A04478BF
+:10AA1000BA25E34BF3A2FE5DC0808A05AD3FBC21A1
+:10AA2000487004F1DF63C17775AF634230201AE5E7
+:10AA30000EFD6DBF3C00D85301004C811418352623
+:10AA40002FC3E1BEA235CC88392E5793F25582FC34
+:10AA5000477AACC8E7BA2B3295E6A0C09819D19EC8
+:10AA60007FA366447E54AB3B830BCA8C29C7D36B50
+:10AA70003C2879A7E2BC3C00145401001D1676ADB9
+:10AA80003BDB56644E741E14DB920A0C6C48E4B82F
+:10AA90005D9F6EBDEF43A6C4A839A43137D38BF2B6
+:10AAA00032D5438B596EB7DA8C0164B1D29CE04940
+:10AAB000B4D8FAAC07F325CF3C0050540100AFCA1C
+:10AAC0008EF4E9471810D56F88F06F4A725C24380D
+:10AAD000F157C773519723CB7CA19CE8213EDD96AB
+:10AAE000DC61860D850F90E0427CC471AACCD890C1
+:10AAF000050601F7121CA3C25F6A3C008C540100DA
+:10AB0000F9AED06991175899273AB92738D913EB7C
+:10AB1000B32B3322BBD270A98907A733B62D223CB1
+:10AB2000921520C94987FFAA78507AA58F03F85952
+:10AB30008009171ADA6531D7C684B8D03C00C854EA
+:10AB40000100C382B029775A111ECB7BFCA8D66DB9
+:10AB50003A2CC6A5F884EE99F68DFF0DD6BDDEB170
+:10AB6000915460500203CEA9567DE719B5624DE6B7
+:10AB7000EC9A8F451F9D8940FA87EF15B2EB3C0098
+:10AB8000045501008EC9FB0B41ECB3675FFD45EA3C
+:10AB900023BF53F7E4969B5B75C2E11C3DAE4C6A44
+:10ABA0006C5A7E41F502834F685C51F4D134F90848
+:10ABB000E293AB7362532A3F080C955246659D5E43
+:10ABC0003C0040550100302837A10A0F2FB50E096F
+:10ABD00024361B9BDF3DCD264E697FCDEA9F121B9D
+:10ABE0001D9E5874342E362DDCB2B4EE5BFBA4F6F9
+:10ABF000764DB7617DCE527BDD3E5E711397A6F533
+:10AC0000B9683C007C5501000000C12C4060E31F86
+:10AC100079C8B6EDD4BE8D4667D9724B94DE98D410
+:10AC2000B0E8854ABB6BC52A4FE5ED1686C59AD7B5
+:10AC3000665511948ACFE9100406FE81A0F078448D
+:10AC400025BA4BE33C00B8550100A2F35DFE80C07D
+:10AC5000058A3FAD21BC7048F10463DF77C1AF7551
+:10AC600042632030E51AFD0EBF6D814C1814263565
+:10AC7000C32FBEE135A288CC2E39935755F2FC8202
+:10AC80007A47C8ACBAE73C00F4550100322BE69590
+:10AC9000C0A019989ED1A37F4466547E3BAB0B8322
+:10ACA0008CCAC7296BD3283CA779BCE2161DAD76A8
+:10ACB000DB3B6456744E141E92DB0C0A486CB8E4FD
+:10ACC0009F5DBD6E43EFC4A63C003056010039A81D
+:10ACD00031A4D337F28BD5328B436E59DAB7018C5E
+:10ACE000B1649CD249E0D8B4ACFAF307CF25CAAF1F
+:10ACF000F48E47E910186FD5F0884A6F5C723824DB
+:10AD000057F173C79751CB23A17C3C006C560100CF
+:10AD1000E89C3E2196DD61DC0D860F85E0907C424B
+:10AD200071C4CCAA90D80605F7011C12C2A36A5FB1
+:10AD3000AEF969D0179199583A2727B9D938EB134A
+:10AD40002BB32233D2BBA970078933A73C00A85686
+:10AD500001002DB63C221592C9208749AAFF5078E0
+:10AD6000A57A038F59F809801A1765DAD73184C696
+:10AD7000D0B882C329B05A771E117BCBA8FC6DD600
+:10AD80002C3A0400000000000000010000003C001C
+:10AD9000E45601000200000003000000050000006E
+:10ADA000000000000100000002000000030000009D
+:10ADB00004000000010000000172657145727252CA
+:10ADC0006561736F6E000000010000000500000067
+:10ADD0003C0020570100C48E0100249A01000000AD
+:10ADE000000030000000249A0100A4B2010000001D
+:10ADF00000006C000000A4B2010014C801000000B3
+:10AE00000000C00000001020304050BB30000100A6
+:10AE100000003C005C5701001416181A1C1E20226A
+:10AE20002426282A2B2C01007017000001000000A6
+:10AE30000D250000413F0100652901000D2500009E
+:10AE4000F55E0000413F0100413F010002040B0C90
+:10AE5000121618243C00985701003048606C01001D
+:10AE60000000101010101010101010101010101002
+:10AE700000006400000001000000FFFFFFFF010070
+:10AE80000000000210121100000118000000020072
+:10AE90000000010000003C00D45701000000000049
+:10AEA000000000000200000004000000000000009C
+:10AEB00000000000E093040040420F00000000008A
+:10AEC0000100000000800000DF40CFFD0040830053
+:10AED00000000000010200003C00105801000000CA
+:10AEE0000000000000000000000040008081000021
+:10AEF0008000BFFF7F7E0102000000000000000014
+:10AF0000000001000000786F010000000000B86F31
+:10AF1000010000000000F86F01003C004C580100E7
+:10AF2000000000003870010000000000787001008F
+:10AF300000000000B870010000000000F87001007F
+:10AF4000000000003871010000000000787101006D
+:10AF50000001000090710100000100003C008858D1
+:10AF60000100A87101000001000000050A01060BA4
+:10AF700002070C03080D040900000303010100048B
+:10AF800000040406161E1F0000000000000100005F
+:10AF900080000000000000FFFFFF181818183C0098
+:10AFA000C458010018181818181818181818000094
+:10AFB000618B4A00618F4A00618B4A0005E3C00043
+:10AFC00005CBC00005BBC00085BAC00085A2C0008B
+:10AFD0008592C000858AC000857AC0004589C0007E
+:10AFE0003C00005901004571C0004569C000456141
+:10AFF000C0004559C0004551C0004549C000454109
+:10B00000C0004539C0004531C0004529C000452178
+:10B01000C000602D0600602D0600602D0600602D2A
+:10B0200006003C003C590100602D06006028060027
+:10B030005026060050210600501F0600501C060036
+:10B04000501A06005018060050160600501406004C
+:10B050005012060050100600500E0600500C06005C
+:10B06000500A06003C00785901002B0B06001D75A4
+:10B07000C0001D75C0001D75C0001D75C0001D7588
+:10B08000C0001D75C0001D6DC000DD5BC000DD4B44
+:10B09000C000DD43C000DD3BC000DD33C000DD2B60
+:10B0A000C000DD23C0003C00B4590100DD1BC0001E
+:10B0B000DD13C000DD13C000DD13C000DD13C000D0
+:10B0C000DD13C000050505040403030202010100AD
+:10B0D000000005050504040303020201010000004D
+:10B0E00000000000881300003C00F0590100070038
+:10B0F000000080005B004002E0FDF200B8FCA4010B
+:10B1000000000F0000000F000000030B9F5F07010D
+:10B110002A04210417040E040404FB03F103E803CA
+:10B12000C903AA038A036B034C033C002C5A010099
+:10B130002D030E03EE02EC02010316032B03400362
+:10B1400055036A037F039403A903BE03D303E803F3
+:10B15000BE0394036A030002040607090A0B0C0DE0
+:10B160001010101010101010101000033C00685A3E
+:10B17000010005080B0E1010101010101010101008
+:10B18000101010100000010000000100000000007D
+:10B1900000000000000000000000000000000000AF
+:10B1A00000000000000000000000000000003C0063
+:10B1B000A45A010000000000000000000000000090
+:10B1C000000000000000000000000000000000007F
+:10B1D000000000000000000000000000000000006F
+:10B1E000000000000000000000000000000000005F
+:10B1F0003C00E05A010000000000000000000000D8
+:10B20000000000000000000000000000000000003E
+:10B21000000000000000000000000000000000002E
+:10B22000000000000000000000000000000000001E
+:10B2300000003C001C5B010000000000000000005A
+:10B2400000000000000000000000000000000000FE
+:10B2500000000000000000000000000000000000EE
+:10B2600000000000000000000000000000000000DE
+:10B27000000000003C00585B0100000000000000DE
+:10B2800000000000000000000000000000000000BE
+:10B2900000000000000000000000000000000000AE
+:10B2A000000000000000000000000000000000009E
+:10B2B0000000000000003C00945B01000000000062
+:10B2C000000000000000000000000000000000007E
+:10B2D000000000000000000000000000000000006E
+:10B2E000000000000000000000000000000000005E
+:10B2F00000000000000000003C00D05B01000000E6
+:10B30000000000000000000000000000000000003D
+:10B31000000000000000000000000000000000002D
+:10B32000000000000000000000000000000000001D
+:10B33000000000000000000000003C000C5C010068
+:10B3400000000000000000000000000000000000FD
+:10B3500000000000000000000000000000000000ED
+:10B3600000000000000000000000000000000000DD
+:10B370000000000000000000000000003C00485CED
+:10B3800001000000000000000000000000000000BC
+:10B3900000000000000000000000000000000000AD
+:10B3A000000000000000000000000000000000009D
+:10B3B00000000000000000000000000000003C0051
+:10B3C000845C01000000000000000000000000009C
+:10B3D000000000000000000000000000000000006D
+:10B3E000000000000000000000000000000000005D
+:10B3F000000000000000000000000000000000004D
+:10B400003C00C05C010000000000000000000000E3
+:10B41000000000000000000000000000000000002C
+:10B42000000000000000000000000000000000001C
+:10B43000000000000000000000000000000000000C
+:10B4400000003C00FC5C0100000000000000000067
+:10B4500000000000000000000000000000000000EC
+:10B4600000000000000000000000000000000000DC
+:10B4700000000000000000000000000000000000CC
+:10B48000000000003C00385D0100000000000000EA
+:10B4900000000000000000000000000000000000AC
+:10B4A000000000000000000000000000000000009C
+:10B4B000000000000000000000000000000000008C
+:10B4C0000000000000003C00745D0100000000006E
+:10B4D000000000000000000000000000000000006C
+:10B4E000000000000000000000000000000000005C
+:10B4F000000000000000000000000000000000004C
+:10B5000000000000000000003C00B05D01000000F1
+:10B51000000000000000000000000000000000002B
+:10B52000000000000000000000000000000000001B
+:10B53000000000000000000000000000000000000B
+:10B54000000000000000000000003C00EC5D010075
+:10B5500000000000000000000000000000000000EB
+:10B5600000000000000000000000000000000000DB
+:10B5700000000000000000000000000000000000CB
+:10B580000000000000000000000000003C00285EF9
+:10B5900001000000000000000000000000000000AA
+:10B5A000000000000000000000000000000000009B
+:10B5B000000000000000000000000000000000008B
+:10B5C00000000000000000000000000000003C003F
+:10B5D000645E0100000000000000000000000000A8
+:10B5E000000000000000000000000000000000005B
+:10B5F000000000000000000000000000000000004B
+:10B60000000000000000000000000000000000003A
+:10B610003C00A05E010000000000000000000000EF
+:10B62000000000000000000000000000000000001A
+:10B63000000000000000000000000000000000000A
+:10B6400000000000000000000000000000000000FA
+:10B6500000003C00DC5E0100000000000000000073
+:10B6600000000000000000000000000000000000DA
+:10B6700000000000000000000000000000000000CA
+:10B6800000000000000000000000000000000000BA
+:10B69000000000003C00185F0100000000000000F6
+:10B6A000000000000000000000000000000000009A
+:10B6B000000000000000000000000000000000008A
+:10B6C000000000000000000000000000000000007A
+:10B6D0000000000000003C00545F0100000000007A
+:10B6E000000000000000000000000000000000005A
+:10B6F000000000000000000000000000000000004A
+:10B700000000000000000000000000000000000039
+:10B7100000000000000000003C00905F01000000FD
+:10B720000000000000000000000000000000000019
+:10B730000000000000000000000000000000000009
+:10B7400000000000000000000000000000000000F9
+:10B75000000000000000000000003C00CC5F010081
+:10B7600000000000000000000000000000000000D9
+:10B7700000000000000000000000000000000000C9
+:10B7800000000000000000000000000000000000B9
+:10B790000000000000000000000000003C00086005
+:10B7A0000100000000000000000000000000000098
+:10B7B0000000000000000000000000000000000089
+:10B7C0000000000000000000000000000000000079
+:10B7D00000000000000000000000000000003C002D
+:10B7E00044600100000000000000000000000000B4
+:10B7F0000000000000000000000000000000000049
+:10B800000000000000000000000000000000000038
+:10B810000000000000000000000000000000000028
+:10B820003C008060010000000000000000000000FB
+:10B830000000000000000000000000000000000008
+:10B8400000000000000000000000000000000000F8
+:10B8500000000000000000000000000000000000E8
+:10B8600000003C00BC60010000000000000000007F
+:10B8700000000000000000000000000000000000C8
+:10B8800000000000000000000000000000000000B8
+:10B8900000000000000000000000000000000000A8
+:10B8A000000000003C00F860010000000000000003
+:10B8B0000000000000000000000000000000000088
+:10B8C0000000000000000000000000000000000078
+:10B8D0000000000000000000000000000000000068
+:10B8E0000000000000003C00346101000000000086
+:10B8F0000000000000000000000000000000000048
+:10B900000000000000000000000000000000000037
+:10B910000000000000000000000000000000000027
+:10B9200000000000000000003C0070610100000009
+:10B930000000000000000000000000000000000007
+:10B9400000000000000000000000000000000000F7
+:10B9500000000000000000000000000000000000E7
+:10B96000000000000000000000003C00AC6101008D
+:10B9700000000000000000000000000000000000C7
+:10B9800000000000000000000000000000000000B7
+:10B9900000000000000000000000000000000000A7
+:10B9A0000000000000000000000000003C00E86112
+:10B9B0000100000000000000000000000000000086
+:10B9C0000000000000000000000000000000000077
+:10B9D0000000000000000000000000000000000067
+:10B9E00000000000000000000000000000003C001B
+:10B9F00024620100000000000000000000000000C0
+:10BA00000000000000000000000000000000000036
+:10BA10000000000000000000000000000000000026
+:10BA20000000000000000000000000000000000016
+:10BA30003C00606201000000000000000000000007
+:10BA400000000000000000000000000000000000F6
+:10BA500000000000000000000000000000000000E6
+:10BA600000000000000000000000000000000000D6
+:10BA700000003C009C62010000000000000000008B
+:10BA800000000000000000000000000000000000B6
+:10BA900000000000000000000000000000000000A6
+:10BAA0000000000000000000000000000000000096
+:10BAB000000000003C00D86201000000000000000F
+:10BAC0000000000000000000000000000000000076
+:10BAD0000000000000000000000000000000000066
+:10BAE0000000000000000000000000000000000056
+:10BAF0000000000000003C00146301000000000092
+:10BB00000000000000000000000000000000000035
+:10BB10000000000000000000000000000000000025
+:10BB20000000000000000000000000000000000015
+:10BB300000000000000000003C0050630100000015
+:10BB400000000000000000000000000000000000F5
+:10BB500000000000000000000000000000000000E5
+:10BB600000000000000000000000000000000000D5
+:10BB7000000000000000000000003C008C63010099
+:10BB800000000000000000000000000000000000B5
+:10BB900000000000000000000000000000000000A5
+:10BBA0000000000000000000000000000000000095
+:10BBB0000000000000000000000000003C00C8631E
+:10BBC0000100000000000000000000000000000074
+:10BBD0000000000000000000000000000000000065
+:10BBE0000000000000000000000000000000000055
+:10BBF00000000000000000000000000000003C0009
+:10BC000004640100000000000000000000000000CB
+:10BC10000000000000000000000000000000000024
+:10BC20000000000000000000000000000000000014
+:10BC30000000000000000000000000000000000004
+:10BC40003C00406401000000000000000000000013
+:10BC500000000000000000000000000000000000E4
+:10BC600000000000000000000000000000000000D4
+:10BC700000000000000000000000000000000000C4
+:10BC800000003C007C640100000000000000000097
+:10BC900000000000000000000000000000000000A4
+:10BCA0000000000000000000000000000000000094
+:10BCB0000000000000000000000000000000000084
+:10BCC000000000003C00B86401000000000000001B
+:10BCD0000000000000000000000000000000000064
+:10BCE0000000000000000000000000000000000054
+:10BCF0000000000000000000000000000000000044
+:10BD00000000000000003C00F4640100000000009E
+:10BD10000000000000000000000000000000000023
+:10BD20000000000000000000000000000000000013
+:10BD30000000000000000000000000000000000003
+:10BD400000000000000000003C0030650100000021
+:10BD500000000000000000000000000000000000E3
+:10BD600000000000000000000000000000000000D3
+:10BD700000000000000000000000000000000000C3
+:10BD8000000000000000000000003C006C650100A5
+:10BD900000000000000000000000000000000000A3
+:10BDA0000000000000000000000000000000000093
+:10BDB0000000000000000000000000000000000083
+:10BDC0000000000000000000000000003C00A8652A
+:10BDD0000100000000000000000000000000000062
+:10BDE0000000000000000000000000000000000053
+:10BDF0000000000000000000000000000000000043
+:10BE000000000000000000000000000000003C00F6
+:10BE1000E4650100000000000000000000000000D8
+:10BE20000000000000000000000000000000000012
+:10BE30000000000000000000000000000000000002
+:10BE400000000000000000000000000000000000F2
+:10BE50003C0020660100000000000000000000001F
+:10BE600000000000000000000000000000000000D2
+:10BE700000000000000000000000000000000000C2
+:10BE800000000000000000000000000000000000B2
+:10BE900000003C005C6601000000000000000000A3
+:10BEA0000000000000000000000000000000000092
+:10BEB0000000000000000000000000000000000082
+:10BEC0000000000000000000000000000000000072
+:10BED000000000003C009866010000000000000027
+:10BEE0000000000000000000000000000000000052
+:10BEF0000000000000000000000000000000000042
+:10BF00000000000000000000000000000000000031
+:10BF10000000000000003C00D466010000000000AA
+:10BF20000000000000000000000000000000000011
+:10BF30000000000000000000000000000000000001
+:10BF400000000000000000000000000000000000F1
+:10BF500000000000000000003C001067010000002D
+:10BF600000000000000000000000000000000000D1
+:10BF700000000000000000000000000000000000C1
+:10BF800000000000000000000000000000000000B1
+:10BF9000000000000000000000003C004C670100B1
+:10BFA0000000000000000000000000000000000091
+:10BFB0000000000000000000000000000000000081
+:10BFC0000000000000000000000000000000000071
+:10BFD0000000000000000000000000003C00886736
+:10BFE0000100000000000000000000000000000050
+:10BFF0000000000000000000000000000000000041
+:10C000000000000000000000000000000000000030
+:10C0100000000000000000000000000000003C00E4
+:10C02000C4670100000000000000000000000000E4
+:10C030000000000000000000000000000000000000
+:10C0400000000000000000000000000000000000F0
+:10C0500000000000000000000000000000000000E0
+:10C060003C0000680100000000000000000000002B
+:10C0700000000000000000000000000000000000C0
+:10C0800000000000000000000000000000000000B0
+:10C0900000000000000000000000000000000000A0
+:10C0A00000003C003C6801000000000000000000AF
+:10C0B0000000000000000000000000000000000080
+:10C0C0000000000000000000000000000000000070
+:10C0D0000000000000000000000000000000000060
+:10C0E000000000003C007868010000000000000033
+:10C0F0000000000000000000000000000000000040
+:10C10000000000000000000000000000000000002F
+:10C11000000000000000000000000000000000001F
+:10C120000000000000003C00B468010000000000B6
+:10C1300000000000000000000000000000000000FF
+:10C1400000000000000000000000000000000000EF
+:10C1500000000000000000000000000000000000DF
+:10C1600000000000000000003C00F068010000003A
+:10C1700000000000000000000000000000000000BF
+:10C1800000000000000000000000000000000000AF
+:10C19000000000000000000000000000000000009F
+:10C1A000000000000000000000003C002C690100BD
+:10C1B000000000000000000000000000000000007F
+:10C1C000000000000000000000000000000000006F
+:10C1D000000000000000000000000000000000005F
+:10C1E0000000000000000000000000003C00686942
+:10C1F000010000000000000000000000000000003E
+:10C20000000000000000000000000000000000002E
+:10C21000000000000000000000000000000000001E
+:10C2200000000000000000000000000000003C00D2
+:10C23000A4690100000000000000000000000000F0
+:10C2400000000000000000000000000000000000EE
+:10C2500000000000000000000000000000000000DE
+:10C2600000000000000000000000000000000000CE
+:10C270003C00E06901000000000000000000000038
+:10C2800000000000000000000000000000000000AE
+:10C29000000000000000000000000000000000009E
+:10C2A000000000000000000000000000000000008E
+:10C2B00000003C001C6A01000000000000000000BB
+:10C2C000000000000000000000000000000000006E
+:10C2D000000000000000000000000000000000005E
+:10C2E000000000000000000000000000000000004E
+:10C2F000000000003C00586A01000000000000003F
+:10C30000000000000000000000000000000000002D
+:10C31000000000000000000000000000000000001D
+:10C32000000000000000000000000000000000000D
+:10C330000000000000003C00946A010000000000C2
+:10C3400000000000000000000000000000000000ED
+:10C3500000000000000000000000000000000000DD
+:10C3600000000000000000000000000000000000CD
+:10C3700000000000000000003C00D06A0100000046
+:10C3800000000000000000000000000000000000AD
+:10C39000000000000000000000000000000000009D
+:10C3A000000000000000000000000000000000008D
+:10C3B000000000000000000000003C000C6B0100C9
+:10C3C000000000000000000000000000000000006D
+:10C3D000000000000000000000000000000000005D
+:10C3E000000000000000000000000000000000004D
+:10C3F0000000000000000000000000003C00486B4E
+:10C40000010000000000000000000000000000002B
+:10C41000000000000000000000000000000000001C
+:10C42000000000000000000000000000000000000C
+:10C4300000000000000000000000000000003C00C0
+:10C44000846B0100000000000000000000000000FC
+:10C4500000000000000000000000000000000000DC
+:10C4600000000000000000000000000000000000CC
+:10C4700000000000000000000000000000000000BC
+:10C480003C00C06B01000000000000000000000044
+:10C49000000000000000000000000000000000009C
+:10C4A000000000000000000000000000000000008C
+:10C4B000000000000000000000000000000000007C
+:10C4C00000003C00FC6B01000000000000000000C8
+:10C4D000000000000000000000000000000000005C
+:10C4E000000000000000000000000000000000004C
+:10C4F000000000000000000000000000000000003C
+:10C50000000000003C00386C01000000000000004A
+:10C51000000000000000000000000000000000001B
+:10C52000000000000000000000000000000000000B
+:10C5300000000000000000000000000000000000FB
+:10C540000000000000003C00746C010000000000CE
+:10C5500000000000000000000000000000000000DB
+:10C5600000000000000000000000000000000000CB
+:10C5700000000000000000000000000000000000BB
+:10C5800000000000000000003C00B06C0100000052
+:10C59000000000000000000000000000000000009B
+:10C5A000000000000000000000000000000000008B
+:10C5B000000000000000000000000000000000007B
+:10C5C000000000000000000000003C00EC6C0100D6
+:10C5D000000000000000000000000000000000005B
+:10C5E000000000000000000000000000000000004B
+:10C5F000000000000000000000000000000000003B
+:10C600000000000000000000000000003C00286D59
+:10C610000100000000000000000000000000000019
+:10C62000000000000000000000000000000000000A
+:10C6300000000000000000000000000000000000FA
+:10C6400000000000000000000000000000003C00AE
+:10C65000646D010000000000000000000000000008
+:10C6600000000000000000000000000000000000CA
+:10C6700000000000000000000000000000000000BA
+:10C6800000000000000000000000000000000000AA
+:10C690003C00A06D01000000000000000000000050
+:10C6A000000000000000000000000000000000008A
+:10C6B000000000000000000000000000000000007A
+:10C6C000000000000000000000000000000000006A
+:10C6D00000003C00DC6D01000000000000000000D4
+:10C6E000000000000000000000000000000000004A
+:10C6F000000000000000000000000000000000003A
+:10C700000000000000000000000000000000000029
+:10C71000000000003C00186E010000000000000056
+:10C720000000000000000000000000000000000009
+:10C7300000000000000000000000000000000000F9
+:10C7400000000000000000000000000000000000E9
+:10C750000000000000003C00546E010000000000DA
+:10C7600000000000000000000000000000000000C9
+:10C7700000000000000000000000000000000000B9
+:10C7800000000000000000000000000000000000A9
+:10C7900000000000000000003C00906E010000005E
+:10C7A0000000000000000000000000000000000089
+:10C7B0000000000000000000000000000000000079
+:10C7C0000000000000000000000000000000000069
+:10C7D000000000000000000000003C00CC6E0100E2
+:10C7E0000000000000000000000000000000000049
+:10C7F0000000000000000000000000000000000039
+:10C800000000000000000000000000000000000028
+:10C810000000000000000000000000003C00086F65
+:10C820000100000000000000000000000000000007
+:10C8300000000000000000000000000000000000F8
+:10C8400000000000000000000000000000000000E8
+:10C8500000000000000000000000000000003C009C
+:10C86000446F010000000000000000000000000014
+:10C8700000000000000000000000000000000000B8
+:10C8800000000000000000000000000000000000A8
+:10C890000000000000000000000000000000000098
+:10C8A0003C00806F0100000000000000000000005C
+:10C8B0000000000000000000000000000000000078
+:10C8C0000000000000000000000000000000000068
+:10C8D0000000000000000000000000000000000058
+:10C8E00000003C00BC6F01000000000000000000E0
+:10C8F0000000000000000000000000000000000038
+:10C900000000000000000000000000000000000027
+:10C910000000000000000000000000000000000017
+:10C92000000000003C00F86F010000000000000063
+:10C9300000000000000000000000000000000000F7
+:10C9400000000000000000000000000000000000E7
+:10C9500000000000000000000000000000000000D7
+:10C960000000000000003C003470010000000000E6
+:10C9700000000000000000000000000000000000B7
+:10C9800000000000000000000000000000000000A7
+:10C990000000000000000000000000000000000097
+:10C9A00000000000000000003C007070010000006A
+:10C9B0000000000000000000000000000000000077
+:10C9C0000000000000000000000000000000000067
+:10C9D0000000000000000000000000000000000057
+:10C9E000000000000000000000003C00AC700100EE
+:10C9F0000000000000000000000000000000000037
+:10CA00000000000000000000000000000000000026
+:10CA10000000000000000000000000000000000016
+:10CA20000000000000000000000000003C00E87072
+:10CA300001000000000000000000000000000000F5
+:10CA400000000000000000000000000000000000E6
+:10CA500000000000000000000000000000000000D6
+:10CA600000000000000000000000000000003C008A
+:10CA70002471010000000000000000000000000020
+:10CA800000000000000000000000000000000000A6
+:10CA90000000000000000000000000000000000096
+:10CAA0000000000000000000000000000000000086
+:10CAB0003C00607101000000000000000000000068
+:10CAC0000000000000000000000000000000000066
+:10CAD0000000000000000000000000000000000056
+:10CAE0000000000000000000000000000000000046
+:10CAF00000003C009C7101000000000000000000EC
+:10CB00000000000000000000000000000000000025
+:10CB10000000000000000000000000000000000015
+:10CB20000000000000000000000000000000000005
+:10CB3000000000003C00D87101000000000000006F
+:10CB400000000000000000000000000000000000E5
+:10CB500000000000000000000000000000000000D5
+:10CB600000000000000000000000000000000000C5
+:10CB70000000000000003C001472010000000000F2
+:10CB800000000000000000000000000000000000A5
+:10CB90000000000000000000000000000000000095
+:10CBA0000000000000000000000000000000000085
+:10CBB00000000000000000003C0050720100000076
+:10CBC0000000000000000000000000000000000065
+:10CBD0000000000000000000000000000000000055
+:10CBE0000000000000000000000000000000000045
+:10CBF000000000000000000000003C008C720100FA
+:10CC00000000000000000000000000000000000024
+:10CC10000000000000000000000000000000000014
+:10CC20000000000000000000000000000000000004
+:10CC30000000000000000000000000003C00C8727E
+:10CC400001000000000000000000000000000000E3
+:10CC500000000000000000000000000000000000D4
+:10CC600000000000000000000000000000000000C4
+:10CC700000000000000000000000000000003C0078
+:10CC8000047301000000000000000000000000002C
+:10CC90000000000000000000000000000000000094
+:10CCA0000000000000000000000000000000000084
+:10CCB0000000000000000000000000000000000074
+:10CCC0003C00407301000000000000000000000074
+:10CCD0000000000000000000000000000000000054
+:10CCE0000000000000000000000000000000000044
+:10CCF0000000000000000000000000000000000034
+:10CD000000003C007C7301000000000000000000F7
+:10CD10000000000000000000000000000000000013
+:10CD20000000000000000000000000000000000003
+:10CD300000000000000000000000000000000000F3
+:10CD4000000000003C00B87301000000000000007B
+:10CD500000000000000000000000000000000000D3
+:10CD600000000000000000000000000000000000C3
+:10CD700000000000000000000000000000000000B3
+:10CD80000000000000003C00F473010000000000FF
+:10CD90000000000000000000000000000000000093
+:10CDA0000000000000000000000000000000000083
+:10CDB0000000000000000000000000000000000073
+:10CDC00000000000000000003C0030740100000082
+:10CDD0000000000000000000000000000000000053
+:10CDE0000000000000000000000000000000000043
+:10CDF0000000000000000000000000000000000033
+:10CE0000000000000000000000003C006C74010005
+:10CE10000000000000000000000000000000000012
+:10CE20000000000000000000000000000000000002
+:10CE300000000000000000000000000000000000F2
+:10CE40000000000000000000000000003C00A8748A
+:10CE500001000000000000000000000000000000D1
+:10CE600000000000000000000000000000000000C2
+:10CE700000000000000000000000000000000000B2
+:10CE800000000000000000000000000000003C0066
+:10CE9000E474010000000000000000000000000039
+:10CEA0000000000000000000000000000000000082
+:10CEB0000000000000000000000000000000000072
+:10CEC0000000000000000000000000000000000062
+:10CED0003C00207501000000000000000000000080
+:10CEE0000000000000000000000000000000000042
+:10CEF0000000000000000000000000000000000032
+:10CF00000000000000000000000000000000000021
+:10CF100000003C005C750100000000000000000003
+:10CF20000000000000000000000000000000000001
+:10CF300000000000000000000000000000000000F1
+:10CF400000000000000000000000000000000000E1
+:10CF5000000000003C009875010000000000000087
+:10CF600000000000000000000000000000000000C1
+:10CF700000000000000000000000000000000000B1
+:10CF800000000000000000000000000000000000A1
+:10CF90000000000000003C00D4750100000000000B
+:10CFA0000000000000000000000000000000000081
+:10CFB0000000000000000000000000000000000071
+:10CFC0000000000000000000000000000000000061
+:10CFD00000000000000000003C001076010000008E
+:10CFE0000000000000000000000000000000000041
+:10CFF0000000000000000000000000000000000031
+:10D000000000000000000000000000000000000020
+:10D01000000000000000000000003C004C76010011
+:10D020000000000000000000000000000000000000
+:10D0300000000000000000000000000000000000F0
+:10D0400000000000000000000000000000000000E0
+:10D050000000000000000000000000003C00887696
+:10D0600001000000000000000000000000000000BF
+:10D0700000000000000000000000000000000000B0
+:10D0800000000000000000000000000000000000A0
+:10D0900000000000000000000000000000003C0054
+:10D0A000C476010000000000000000000000000045
+:10D0B0000000000000000000000000000000000070
+:10D0C0000000000000000000000000000000000060
+:10D0D0000000000000000000000000000000000050
+:10D0E0003C0000770100000000000000000000008C
+:10D0F0000000000000000000000000000000000030
+:10D10000000000000000000000000000000000001F
+:10D11000000000000000000000000000000000000F
+:10D1200000003C003C77010000000000000000000F
+:10D1300000000000000000000000000000000000EF
+:10D1400000000000000000000000000000000000DF
+:10D1500000000000000000000000000000000000CF
+:10D16000000000003C007877010000000000000093
+:10D1700000000000000000000000000000000000AF
+:10D18000000000000000000000000000000000009F
+:10D19000000000000000000000000000000000008F
+:10D1A0000000000000003C00B47701000000000017
+:10D1B000000000000000000000000000000000006F
+:10D1C000000000000000000000000000000000005F
+:10D1D000000000000000000000000000000000004F
+:10D1E00000000000000000003C00F077010000009B
+:10D1F000000000000000000000000000000000002F
+:10D20000000000000000000000000000000000001E
+:10D21000000000000000000000000000000000000E
+:10D22000000000000000000000003C002C7801001D
+:10D2300000000000000000000000000000000000EE
+:10D2400000000000000000000000000000000000DE
+:10D2500000000000000000000000000000000000CE
+:10D260000000000000000000000000003C006878A2
+:10D2700001000000000000000000000000000000AD
+:10D28000000000000000000000000000000000009E
+:10D29000000000000000000000000000000000008E
+:10D2A00000000000000000000000000000003C0042
+:10D2B000A478010000000000000000000000000051
+:10D2C000000000000000000000000000000000005E
+:10D2D000000000000000000000000000000000004E
+:10D2E000000000000000000000000000000000003E
+:10D2F0003C00E07801000000000000000000000099
+:10D30000000000000000000000000000000000001D
+:10D31000000000000000000000000000000000000D
+:10D3200000000000000000000000000000000000FD
+:10D3300000003C001C79010000000000000000001B
+:10D3400000000000000000000000000000000000DD
+:10D3500000000000000000000000000000000000CD
+:10D3600000000000000000000000000000000000BD
+:10D37000000000003C00587901000000000000009F
+:10D38000000000000000000000000000000000009D
+:10D39000000000000000000000000000000000008D
+:10D3A000000000000000000000000000000000007D
+:10D3B0000000000000003C00947901000000000023
+:10D3C000000000000000000000000000000000005D
+:10D3D000000000000000000000000000000000004D
+:10D3E000000000000000000000000000000000003D
+:10D3F00000000000000000003C00D07901000000A7
+:10D40000000000000000000000000000000000001C
+:10D41000000000000000000000000000000000000C
+:10D4200000000000000000000000000000000000FC
+:10D43000000000000000000000003C000C7A010029
+:10D4400000000000000000000000000000000000DC
+:10D4500000000000000000000000000000000000CC
+:10D4600000000000000000000000000000000000BC
+:10D470000000000000000000000000003C00487AAE
+:10D48000010000000000000000000000000000009B
+:10D49000000000000000000000000000000000008C
+:10D4A000000000000000000000000000000000007C
+:10D4B00000000000000000000000000000003C0030
+:10D4C000847A01000000000000000000000000005D
+:10D4D000000000000000000000000000000000004C
+:10D4E000000000000000000000000000000000003C
+:10D4F000000000000000000000000000000000002C
+:10D500003C00C07A010000000000000000000000A4
+:10D51000000000000000000000000000000000000B
+:10D5200000000000000000000000000000000000FB
+:10D5300000000000000000000000000000000000EB
+:10D5400000003C00FC7A0100000000000000000028
+:10D5500000000000000000000000000000000000CB
+:10D5600000000000000000000000000000000000BB
+:10D5700000000000000000000000000000000000AB
+:10D58000000000003C00387B0100000000000000AB
+:10D59000000000000000000000000000000000008B
+:10D5A000000000000000000000000000000000007B
+:10D5B000000000000000000000000000000000006B
+:10D5C0000000000000003C00747B0100000000002F
+:10D5D000000000000000000000000000000000004B
+:10D5E000000000000000000000000000000000003B
+:10D5F000000000000000000000000000000000002B
+:10D6000000000000000000003C00B07B01000000B2
+:10D61000000000000000000000000000000000000A
+:10D6200000000000000000000000000000000000FA
+:10D6300000000000000000000000000000000000EA
+:10D64000000000000000000000003C00EC7B010036
+:10D6500000000000000000000000000000000000CA
+:10D6600000000000000000000000000000000000BA
+:10D6700000000000000000000000000000000000AA
+:10D680000000000000000000000000003C00287CBA
+:10D690000100000000000000000000000000000089
+:10D6A000000000000000000000000000000000007A
+:10D6B000000000000000000000000000000000006A
+:10D6C00000000000000000000000000000003C001E
+:10D6D000647C010000000000000000000000000069
+:10D6E000000000000000000000000000000000003A
+:10D6F000000000000000000000000000000000002A
+:10D700000000000000000000000000000000000019
+:10D710003C00A07C010000000000000000000000B0
+:10D7200000000000000000000000000000000000F9
+:10D7300000000000000000000000000000000000E9
+:10D7400000000000000000000000000000000000D9
+:10D7500000003C00DC7C0100000000000000000034
+:10D7600000000000000000000000000000000000B9
+:10D7700000000000000000000000000000000000A9
+:10D780000000000000000000000000000000000099
+:10D79000000000003C00187D0100000000000000B7
+:10D7A0000000000000000000000000000000000079
+:10D7B0000000000000000000000000000000000069
+:10D7C0000000000000000000000000000000000059
+:10D7D0000000000000003C00547D0100000000003B
+:10D7E0000000000000000000000000000000000039
+:10D7F0000000000000000000000000000000000029
+:10D800000000000000000000000000000000000018
+:10D8100000000000000000003C00907D01000000BE
+:10D8200000000000000000000000000000000000F8
+:10D8300000000000000000000000000000000000E8
+:10D8400000000000000000000000000000000000D8
+:10D85000000000000000000000003C00CC7D010042
+:10D8600000000000000000000000000000000000B8
+:10D8700000000000000000000000000000000000A8
+:10D880000000000000000000000000000000000098
+:10D890000000000000000000000000003C00087EC6
+:10D8A0000100000000000000000000000000000077
+:10D8B0000000000000000000000000000000000068
+:10D8C0000000000000000000000000000000000058
+:10D8D00000000000000000000000000000003C000C
+:10D8E000447E010000000000000000000000000075
+:10D8F0000000000000000000000000000000000028
+:10D900000000000000000000000000000000000017
+:10D910000000000000000000000000000000000007
+:10D920003C00807E010000000000000000000000BC
+:10D9300000000000000000000000000000000000E7
+:10D9400000000000000000000000000000000000D7
+:10D9500000000000000000000000000000000000C7
+:10D9600000003C00BC7E0100000000000000000040
+:10D9700000000000000000000000000000000000A7
+:10D980000000000000000000000000000000000097
+:10D990000000000000000000000000000000000087
+:10D9A000000000003C00F87E0100000000000000C4
+:10D9B0000000000000000000000000000000000067
+:10D9C0000000000000000000000000000000000057
+:10D9D0000000000000000000000000000000000047
+:10D9E0000000000000003C00347F01000000000047
+:10D9F0000000000000000000000000000000000027
+:10DA00000000000000000000000000000000000016
+:10DA10000000000000000000000000000000000006
+:10DA200000000000000000003C00707F01000000CA
+:10DA300000000000000000000000000000000000E6
+:10DA400000000000000000000000000000000000D6
+:10DA500000000000000000000000000000000000C6
+:10DA6000000000000000000000003C00AC7F01004E
+:10DA700000000000000000000000000000000000A6
+:10DA80000000000000000000000000000000000096
+:10DA90000000000000000000000000000000000086
+:10DAA0000000000000000000000000003C00E87FD3
+:10DAB0000100000000000000000000000000000065
+:10DAC0000000000000000000000070B50125074EB6
+:10DAD000AD0375610A20FAF76CFF30688003C40F4C
+:10DAE000B5610A20FAF765FF201C70BD00003C00FC
+:10DAF000248001001000070070B501256D04002886
+:10DB0000104C01D0656100E0A56160682843606049
+:10DB1000A0682843A0600A20FAF74EFF0126B6034A
+:10DB200066610A20FAF748FFA6610120FAF744FF70
+:10DB30003C0060800100A068A843A06060682843A2
+:10DB400060600A20FAF73BFF70BD1000070070B557
+:10DB50000125104C6D046561606828436060A06811
+:10DB60002843A060EE08A6610A20FAF728FF666144
+:10DB70000A203C009C800100FAF724FFA5610A20DE
+:10DB8000FAF720FFA6610A20FAF71CFFA068A84355
+:10DB9000A06060682843606070BD0000100007004E
+:10DBA00070B501250E4C6D04A56160682843606066
+:10DBB000A06828433C00D8800100A060EE086661A0
+:10DBC0000A20FAF702FF65610A20FAF7FEFEA66155
+:10DBD0000A20FAF7FAFEA068A843A060606828430C
+:10DBE000606070BD00001000070070B5051C0024C7
+:10DBF0008026281C30403C0014810100FFF788FF7C
+:10DC00006806050E0134082CF6DBFFF76DFF70BDCA
+:10DC100080B5021C0B218020FBF73EFB80BD00007D
+:10DC2000F8B512480025071CFF37061D0137281CD0
+:10DC3000F9F7EAFD041C17D03C005081010020696F
+:10DC4000002804D0E06A002803D00020E062251CF0
+:10DC5000F0E77B68002B05D0321C211C44310120E9
+:10DC6000E8F734F9201C4430F9F737FEE2E7F8BD55
+:10DC7000000020F70100114870B53C008C810100C4
+:10DC80000068FF281DD1FF203230FAF7A7FE0E4DA5
+:10DC90006C680E48FAF7A2FE6868241A012000F0AA
+:10DCA00095FD6E680948FAF799FE6868211C0A39E3
+:10DCB000301A884202D30A34A04202D93C00C881FB
+:10DCC0000100002000F085FD70BDF4740100000328
+:10DCD00007009303000070B500F04DF80120EDF748
+:10DCE00034F9114D182168600020E9F7F2F9286035
+:10DCF00004688020208000260622FF21201D3C0091
+:10DD0000048201006680E8F70BFA201C0A300949FA
+:10DD1000F2F72EFD201C10300749F2F729FDE682AC
+:10DD200003CDE9F7F9F8024901201439886070BD84
+:10DD300090D901001261010024F701007047000032
+:10DD40003C004082010010B5064C00220220E16830
+:10DD5000F0F711FB6078022801D100F01AF910BD2C
+:10DD6000000040D9010080B5A120FFF750FF80BD21
+:10DD7000000040000E21084080B5A030FFF747FFAB
+:10DD800080BD3C007C82010010B5054C2068002855
+:10DD900004D0E9F787F900202060606010BD000022
+:10DDA00090D9010010B5074C0121074A21610220DA
+:10DDB0001070616100F0D6FC00F0C8FB201CEDF78C
+:10DDC0009FFA10BD3C00B882010020F701007CD909
+:10DDD000010070B5021C081C0225002A134E14D045
+:10DDE00000F011FC3078012108433070307828436E
+:10DDF000307000207D214901B279920700D50134AD
+:10DE000001308842F8DB3C00F4820100201C70BD28
+:10DE10003078A843307030784008400030700549B1
+:10DE200048680122120490434860012070BD000040
+:10DE3000880007006C000700FFB509AE002060CE27
+:10DE4000286000239C4630603C0030830100694616
+:10DE500001AA17E0DB070ED5124B1C56631C0AD033
+:10DE600001272B68A7403B432B601368DB0702D5D3
+:10DE700033683B4333600B685B080B6013685B08D7
+:10DE8000136001300B68002B01D03C006C83010053
+:10DE90002228E2D3634601332020022B9C4602A9AC
+:10DEA00003AAF2DBFFBD0000B48D0100B0B5041C75
+:10DEB0000D1C1E2100220320054BF9F7B3F8211C8D
+:10DEC0000320F9F7F5F8291C0320F9F73C00A88393
+:10DED0000100F1F8B0BD80380100B0B51C4C1C4DFC
+:10DEE0002178022909D0032919D004291FD0052936
+:10DEF00023D1002000F017FB23E0686114481C3098
+:10DF0000C16802698918C16000F02FFBE0683C001D
+:10DF1000E48301000138E06016D13220E060FFF7B1
+:10DF2000A3FE11E0002000F001FB00F02DFC012019
+:10DF3000207009E0002000F0F9FAFFF745FF03E048
+:10DF400005210B20E8F746FF68696168E7F7DDFF08
+:10DF50003C0020840100B0BD00007CD9010020F706
+:10DF60000100F7B5041C171CFFF721FE200AFFF77C
+:10DF700018FF2006000EFFF762FEFFF718FEA12033
+:10DF8000FFF75DFE002516E0002000244006060E87
+:10DF9000FFF73C005C840100D1FD0006000E304319
+:10DFA0000134082CF5DB291C019A0135BD4250547F
+:10DFB00001DA002000E00120FFF7D4FDBD42E6DBDE
+:10DFC000FFF71EFEFEBD000080B5FFF719FE092118
+:10DFD000890300223C00988401000220F0F7E9F94F
+:10DFE00080BD0921890380B500220220F0F7C9F91C
+:10DFF000012109488903816142680A4342608268BD
+:10E000001143816001214904816182688A438260F1
+:10E010004268114341603C00D484010080BD00008F
+:10E0200010000700F0B5041CC0687B4E056830780E
+:10E0300085B0012801D0022872D100212069F2F7B1
+:10E0400041F97649F2F724FC002869D0201C2030E1
+:10E05000417A082902D1724A3C0010850100002152
+:10E060005161007A226A1821F2F7C9FBE16A371C74
+:10E0700040186C49029030780E1CFF360A1D01369C
+:10E080000128049207D0654A02991C32281CEDF73A
+:10E09000E2FB00286BD0322120693C004C85010056
+:10E0A000F2F716F9019020690121F2F711F9011C2C
+:10E0B0005E480123019AEDF707FC002804D15B4874
+:10E0C000EDF792FA0021B96056481C308168EAF7F2
+:10E0D00019FC201C143003900499F2F73C00888549
+:10E0E0000100D5FB002805D10022BA6004980399ED
+:10E0F000F2F76BFB4F4928890988884203D0002238
+:10E100004C49BA60088003212069F2F7E4F800283E
+:10E1100010D04649827820310B7994469A423C00CF
+:10E12000C485010009D00022BA6062460A71807875
+:10E130000121F3F705F900E077E006212069F2F705
+:10E14000CDF8002808D081783A4840308288914242
+:10E1500002D00022BA6081802A212069F2F7BEF83D
+:10E160003C000086010000280DD08078F169334A18
+:10E17000814208D00021B960F061101CEDF709FB65
+:10E180002F48EDF7FAFA38783B1C012817D1022006
+:10E1900018702A4F01233B61274B03CD1C33083DE8
+:10E1A000029A3C003C860100EDF7B0FA381CEDF70E
+:10E1B000D7F83268002A03D000210120E7F7C4FE17
+:10E1C00000F0F4F9201CF9F7D5FB071C11D1201C35
+:10E1D000F9F788FB071C2ED001233B616889402199
+:10E1E000C85373683C0078860100002B04D0211CC2
+:10E1F0000020049AE7F7ACFE0123FB62206932217C
+:10E20000F2F775F8051C20690121F2F770F80E4E3F
+:10E21000011C2A1C301CEDF7C0FB00280ED1322156
+:10E220002069F2F764F83C00B4860100051C2069FF
+:10E230000121F2F75FF8011C3B1C2A1C301CEDF792
+:10E24000D7FA05B0F0BD00007CD9010040F801000C
+:10E2500020F70100021C081C802A80B506D0812A04
+:10E2600003D004210B20E8F73C00F0860100D9FD23
+:10E2700080BDFFF75CFE80BD000003488178FF2968
+:10E2800001D0007970470020704780F8010030B558
+:10E2900089B000930E4D131C041C2A1CECF725FDBD
+:10E2A00001A906A8A268ECF7CEFE3C002C8701006D
+:10E2B00001AA06A9281C636AEDF744FA041C012888
+:10E2C00004D1281CEDF72CF800F04AF8201C09B006
+:10E2D00030BD000020F7010080B5EDF72BF800F00D
+:10E2E0007DF80248EDF702FA80BD00003C00688727
+:10E2F000010020F7010080B500280BD10648EDF79A
+:10E30000F8F900F06EF80120EDF7EBFA034903206D
+:10E31000F9F735FE80BD20F701006D870100B0B52B
+:10E32000104D041C131C2A1C88B0ECF702FD3C00A5
+:10E33000A4870100211C0A310622281DE7F7A4FE4C
+:10E34000694605A86269ECF787FE281CECF7EEFF2A
+:10E350007F23DB43281C6A4605A9EDF7F9F900F095
+:10E360001DF808B0B0BD000020F701000A4880B5D4
+:10E370003C00E08701000178002906D0022901D085
+:10E38000052907D10321017080BD0121017000F032
+:10E390002EFA80BD03210B20E8F74FFD80BD7CD90C
+:10E3A0000100094980B50878002806D0022801D06C
+:10E3B00005283C001C88010005D10420087080BDA0
+:10E3C000FFF738FD80BD02210B20E8F739FD80BD45
+:10E3D0007CD9010080B502210B20044AFAF782FFA4
+:10E3E000F6F786FD0249086180BD0000DD86010068
+:10E3F0007CD901003C00588801000C4880B50178A8
+:10E4000006290ED202A35B5C5B009F44000006035A
+:10E4100007070706002000F0C2F880BD0521017043
+:10E4200080BD04210B20E8F70EFD80BD00007CD9E3
+:10E430000100704700003C009488010010B50D4BAE
+:10E44000041C181C1030002C08D0DB885B045B0C0B
+:10E450000B80807B48800420108008E0DA8801244B
+:10E46000E40322400C882243DA804988817301202A
+:10E4700010BD0000300007003C00D088010070B5DE
+:10E48000104E021C0023F056002A02D0087001240E
+:10E4900015E00023CD56854201D1012070BD281C16
+:10E4A00000F05FF9041C0AD00748357000680028A6
+:10E4B00003D000210A20F9F728FD3C000C89010057
+:10E4C00000F016FA201C70BDF46B01003CD901006D
+:10E4D000031C081C002B80B506D0042111800422E7
+:10E4E0000449E7F7E3FD02E0006800F0CFF90120FE
+:10E4F00080BD0000F474010010B5FFF73C004889AE
+:10E50000010097FBFFF789FC041CFFF7B8FBFFF73E
+:10E5100084FC002C02D1012800D110BD002010BDC8
+:10E520000000F8B5204F041C78780E1C02282ED06D
+:10E530001E4AF968916114231D49584340183C0054
+:10E5400084890100417BB878F8F714FE00F08AF95D
+:10E55000002504E00021B878F8F70CFE0135787842
+:10E560001423144958434018807AA842F2DC00254D
+:10E5700008E00021B878F8F7FDFD0F48006820702A
+:10E580003C00C089010001340135B542F4DB094A81
+:10E59000F86850617878022806D1B868321C211CCE
+:10E5A0000004000CFFF725FDB8688019B860F8BDBD
+:10E5B000000040D9010010000700648D01003020E8
+:10E5C00007003C00FC89010070B5061C0C4D0024BE
+:10E5D0002C70FFF739FC0A4818211C30AC60E7F7B3
+:10E5E00043FD08484461F9F763F9002E06D1064857
+:10E5F0002969F6F7A7FC0020ECF7B0FE70BD00001B
+:10E600007CD901003C00388A010020F70100346306
+:10E61000010030B5124C85B0206800281CD00F488E
+:10E6200014388068002801D1FFF7C1FB206800235F
+:10E63000006801AA04300121ECF7D1FD0849084A1D
+:10E6400008310C3100923C00748A010003C900AB10
+:10E650004518997B019A20682B1CF2F72BFE05B018
+:10E6600030BD000090D901002981010010B5134C84
+:10E67000142360705843124BC1188A88E2801858DE
+:10E68000E060087AA070FF283C00B08A010012D038
+:10E69000002208210D4BF8F722FD00220220E1683C
+:10E6A000EFF7BDFE0A49E06848614A6802434A60E4
+:10E6B0008A68104388606078022801D1FFF7DFFC88
+:10E6C00010BD40D90100648D01003C00EC8A0100BE
+:10E6D000B80B000010000700FE300006000E0621F7
+:10E6E000154B4143585C82061448920E4271C9187A
+:10E6F0004A78D206D20E027142780C231A43427035
+:10E7000042788B78920892009B079B0F3C00288BE5
+:10E7100001001A4342700278C0239A4340320270CB
+:10E72000027838231A4302700278C97804239A4386
+:10E730008900194011430170012070470000D88DF5
+:10E740000100880007008FB50020029003903C0074
+:10E75000648B0100074802AA03A900910192438932
+:10E76000028903C8FFF7D4FB03980299FFF704FC62
+:10E770008FBD0000048E010008494A78002A03D1A9
+:10E78000888000208860704714235A43044BD218B5
+:10E790003C00A08B0100D2884243C88842438A6073
+:10E7A000704740D90100648D0100F8B5254E041C66
+:10E7B000307A400840003072B07A0020B0720127F1
+:10E7C000012C204D01D0FC4213D1307B38433073F3
+:10E7D00000223C00DC8B0100211C0020FFF76EFBB7
+:10E7E000631C01D13F21E973B17AA0221143B172B8
+:10E7F000317A39433172F8BD307B400840003073C4
+:10E800000122211C0120FFF759FB01200021E9739F
+:10E81000B17A02223C00188C01001143B172B17A26
+:10E8200004221143B172B17A30221143B172317AAC
+:10E830003943317208494A6880239A434A600A681A
+:10E840001A430A60317B39433173D7E700008800EF
+:10E850000700400007003C00548C01006C000700DA
+:10E86000B0B50E4D0E482969F6F79EFB0D48ECF742
+:10E8700093FD0D48094C00881C34A082F1F75AFF23
+:10E880002061FAF797F8021C231C00210020ECF706
+:10E890008BFF3220E860FFF73C00908C0100A5FA66
+:10E8A000B0BD7CD9010034630100DD84010020F794
+:10E8B0000100B0B50A4D687800280ED0142308492D
+:10E8C00058434018447A06E0A868E0400106090E63
+:10E8D000A878F8F776FC083CF6D53C00CC8C010013
+:10E8E000B0BD000040D90100648D0100011C144836
+:10E8F000B0B501601348027F02239A430277027F7A
+:10E90000012422430277104D00290CD0012200215E
+:10E910000320EFF79FFD0D49487CA0433C00088D84
+:10E9200001004874687A20436872B0BD017F2143BA
+:10E930000177687A400840006872012200210320B4
+:10E94000EFF7B1FDB0BDF47401003000070088009E
+:10E9500007001000070010B5074C211C00203C00E8
+:10E96000448D0100F9F756FB05480023C0560128E5
+:10E9700003DD211C0020F9F719FB10BD651A00000A
+:10E98000F46B01000000020008010100021804FFFE
+:10E9900082E8D78000000000008000000001000134
+:10E9A0003C00808D010000180006020305010100F3
+:10E9B00000000000000080000100FF1000FFFFFFCA
+:10E9C000FFFFFF0000000000020020000100021015
+:10E9D0000006020305010100000004050607080CFB
+:10E9E0000D0E3C00BC8D0100FF1415161718191BE5
+:10E9F0001C1DFF1A1113120F10FF0200FF01030963
+:10EA00000A0B0000300D02000000280E0300000079
+:10EA10001E0C00000000300D020100001E0C000161
+:10EA20000000230D3C00F88D0100020100001D0DC7
+:10EA3000020100000000FFFEFB6D000080000200EC
+:10EA400000000000000000000000000000000000C6
+:10EA500000000000000000000000000000000000B6
+:10EA60000000000000003C00348E010000000000A7
+:10EA70000000000000000000000000000000000096
+:10EA80000000000000000000000000000000000086
+:10EA90000000000000000000000000000000000076
+:10EAA00000000000000000003C00708E010000002B
+:10EAB0000000000000000000000000000000000056
+:10EAC0000000000000000000000000000000000046
+:10EAD0000000000000000000000000000000000036
+:10EAE000000000000000000000003C00AC8E0100AF
+:10EAF0000000000000000000000000000000000016
+:10EB00000000000000000000000000000000000005
+:10EB100000000000000000000000000000000000F5
+:10EB20000000000000000000000000003C00E88E33
+:10EB300001000000000000000000000000000000D4
+:10EB400000000000000000000000000000000000C5
+:10EB500000000000000000000000000000000000B5
+:10EB600000000000000000000000000000003C0069
+:10EB7000248F0100000000000000000000000000E1
+:10EB80000000000000000000000000000000000085
+:10EB90000000000000000000000000000000000075
+:10EBA0000000000000000000000000000000000065
+:10EBB0003C00608F01000000000000000000000029
+:10EBC0000000000000000000000000000000000045
+:10EBD0000000000000000000000000000000000035
+:10EBE0000000000000000000000000000000000025
+:10EBF00000003C009C8F01000000000000000000AD
+:10EC00000000000000000000000000000000000004
+:10EC100000000000000000000000000000000000F4
+:10EC200000000000000000000000000000000000E4
+:10EC3000000000003C00D88F010000000000000030
+:10EC400000000000000000000000000000000000C4
+:10EC500000000000000000000000000000000000B4
+:10EC600000000000000000000000000000000000A4
+:10EC70000000000000003C001490010000000000B3
+:10EC80000000000000000000000000000000000084
+:10EC90000000000000000000000000000000000074
+:10ECA0000000000000000000000000000000000064
+:10ECB00000000000000000003C0050900100000037
+:10ECC0000000000000000000000000000000000044
+:10ECD0000000000000000000000000000000000034
+:10ECE0000000000000000000000000000000000024
+:10ECF000000000000000000000003C008C900100BB
+:10ED00000000000000000000000000000000000003
+:10ED100000000000000000000000000000000000F3
+:10ED200000000000000000000000000000000000E3
+:10ED30000000000000000000000000003C00C8903F
+:10ED400001000000000000000000000000000000C2
+:10ED500000000000000000000000000000000000B3
+:10ED600000000000000000000000000000000000A3
+:10ED700000000000000000000000000000003C0057
+:10ED800004910100000000000000000000000000ED
+:10ED90000000000000000000000000000000000073
+:10EDA0000000000000000000000000000000000063
+:10EDB0000000000000000000000000000000000053
+:10EDC0003C00409101000000000000000000000035
+:10EDD0000000000000000000000000000000000033
+:10EDE0000000000000000000000000000000000023
+:10EDF0000000000000000000000000000000000013
+:10EE000000003C007C9101000000000000000000B8
+:10EE100000000000000000000000000000000000F2
+:10EE200000000000000000000000000000000000E2
+:10EE300000000000000000000000000000000000D2
+:10EE4000000000003C00B89101000000000000003C
+:10EE500000000000000000000000000000000000B2
+:10EE600000000000000000000000000000000000A2
+:10EE70000000000000000000000000000000000092
+:10EE80000000000000003C00F491010000000000C0
+:10EE90000000000000000000000000000000000072
+:10EEA0000000000000000000000000000000000062
+:10EEB0000000000000000000000000000000000052
+:10EEC00000000000000000003C0030920100000043
+:10EED0000000000000000000000000000000000032
+:10EEE0000000000000000000000000000000000022
+:10EEF0000000000000000000000000000000000012
+:10EF0000000000000000000000003C006C920100C6
+:10EF100000000000000000000000000000000000F1
+:10EF200000000000000000000000000000000000E1
+:10EF300000000000000000000000000000000000D1
+:10EF40000000000000000000000000003C00A8924B
+:10EF500001000000000000000000000000000000B0
+:10EF600000000000000000000000000000000000A1
+:10EF70000000000000000000000000000000000091
+:10EF800000000000000000000000000000003C0045
+:10EF9000E4920100000000000000000000000000FA
+:10EFA0000000000000000000000000000000000061
+:10EFB0000000000000000000000000000000000051
+:10EFC0000000000000000000000000000000000041
+:10EFD0003C00209301000000000000000000000041
+:10EFE0000000000000000000000000000000000021
+:10EFF0000000000000000000000000000000000011
+:10F000000000000000000000000000000000000000
+:10F0100000003C005C9301000000000000000000C4
+:10F0200000000000000000000000000000000000E0
+:10F0300000000000000000000000000000000000D0
+:10F0400000000000000000000000000000000000C0
+:10F05000000000003C009893010000000000000048
+:10F0600000000000000000000000000000000000A0
+:10F070000000000000000000000000000000000090
+:10F080000000000000000000000000000000000080
+:10F090000000000000003C00D493010000000000CC
+:10F0A0000000000000000000000000000000000060
+:10F0B0000000000000000000000000000000000050
+:10F0C0000000000000000000000000000000000040
+:10F0D00000000000000000003C001094010000004F
+:10F0E0000000000000000000000000000000000020
+:10F0F0000000000000000000000000000000000010
+:10F1000000000000000000000000000000000000FF
+:10F11000000000000000000000003C004C940100D2
+:10F1200000000000000000000000000000000000DF
+:10F1300000000000000000000000000000000000CF
+:10F1400000000000000000000000000000000000BF
+:10F150000000000000000000000000003C00889457
+:10F16000010000000000000000000000000000009E
+:10F17000000000000000000000000000000000008F
+:10F18000000000000000000000000000000000007F
+:10F1900000000000000000000000000000003C0033
+:10F1A000C494010000000000000000000000000006
+:10F1B000000000000000000000000000000000004F
+:10F1C000000000000000000000000000000000003F
+:10F1D000000000000000000000000000000000002F
+:10F1E0003C0000950100000000000000000000004D
+:10F1F000000000000000000000000000000000000F
+:10F2000000000000000000000000000000000000FE
+:10F2100000000000000000000000000000000000EE
+:10F2200000003C003C9501000000000000000000D0
+:10F2300000000000000000000000000000000000CE
+:10F2400000000000000000000000000000000000BE
+:10F2500000000000000000000000000000000000AE
+:10F26000000000003C007895010000000000000054
+:10F27000000000000000000000000000000000008E
+:10F28000000000000000000000000000000000007E
+:10F29000000000000000000000000000000000006E
+:10F2A0000000000000003C00B495010000000000D8
+:10F2B000000000000000000000000000000000004E
+:10F2C000000000000000000000000000000000003E
+:10F2D000000000000000000000000000000000002E
+:10F2E00000000000000000003C00F095010000005C
+:10F2F000000000000000000000000000000000000E
+:10F3000000000000000000000000000000000000FD
+:10F3100000000000000000000000000000000000ED
+:10F32000000000000000000000003C002C960100DE
+:10F3300000000000000000000000000000000000CD
+:10F3400000000000000000000000000000000000BD
+:10F3500000000000000000000000000000000000AD
+:10F360000000000000000000000000003C00689663
+:10F37000010000000000000000000000000000008C
+:10F38000000000000000000000000000000000007D
+:10F39000000000000000000000000000000000006D
+:10F3A00000000000000000000000000000003C0021
+:10F3B000A496010000000000000000000000000012
+:10F3C000000000000000000000000000000000003D
+:10F3D000000000000000000000000000000000002D
+:10F3E000000000000000000000000000000000001D
+:10F3F0003C00E0960100000000000000000000005A
+:10F4000000000000000000000000000000000000FC
+:10F4100000000000000000000000000000000000EC
+:10F4200000000000000000000000000000000000DC
+:10F4300000003C001C9701000000000000000000DC
+:10F4400000000000000000000000000000000000BC
+:10F4500000000000000000000000000000000000AC
+:10F46000000000000000000000000000000000009C
+:10F47000000000003C005897010000000000000060
+:10F48000000000000000000000000000000000007C
+:10F49000000000000000000000000000000000006C
+:10F4A000000000000000000000000000000000005C
+:10F4B0000000000000003C009497010000000000E4
+:10F4C000000000000000000000000000000000003C
+:10F4D000000000000000000000000000000000002C
+:10F4E000000000000000000000000000000000001C
+:10F4F00000000000000000003C00D0970100000068
+:10F5000000000000000000000000000000000000FB
+:10F5100000000000000000000000000000000000EB
+:10F5200000000000000000000000000000000000DB
+:10F53000000000000000000000003C000C980100EA
+:10F5400000000000000000000000000000000000BB
+:10F5500000000000000000000000000000000000AB
+:10F56000000000000000000000000000000000009B
+:10F570000000000000000000000000003C0048986F
+:10F58000010000000000000000000000000000007A
+:10F59000000000000000000000000000000000006B
+:10F5A000000000000000000000000000000000005B
+:10F5B00000000000000000000000000000003C000F
+:10F5C000849801000000000000000000000000001E
+:10F5D000000000000000000000000000000000002B
+:10F5E000000000000000000000000000000000001B
+:10F5F000000000000000000000000000000000000B
+:10F600003C00C09801000000000000000000000065
+:10F6100000000000000000000000000000000000EA
+:10F6200000000000000000000000000000000000DA
+:10F6300000000000000000000000000000000000CA
+:10F6400000003C00FC9801000000000000000000E9
+:10F6500000000000000000000000000000000000AA
+:10F66000000000000000000000000000000000009A
+:10F67000000000000000000000000000000000008A
+:10F68000000000003C00389901000000000000006C
+:10F69000000000000000000000000000000000006A
+:10F6A000000000000000000000000000000000005A
+:10F6B000000000000000000000000000000000004A
+:10F6C0000000000000003C007499010000000000F0
+:10F6D000000000000000000000000000000000002A
+:10F6E000000000000000000000000000000000001A
+:10F6F000000000000000000000000000000000000A
+:10F7000000000000000000003C00B0990100000073
+:10F7100000000000000000000000000000000000E9
+:10F7200000000000000000000000000000000000D9
+:10F7300000000000000000000000000000000000C9
+:10F74000000000000000000000003C00EC990100F7
+:10F7500000000000000000000000000000000000A9
+:10F760000000000000000000000000000000000099
+:10F770000000000000000000000000000000000089
+:10F780000000000000000000000000003C00289A7B
+:10F790000100000000000000000000000000000068
+:10F7A0000000000000000000000000000000000059
+:10F7B0000000000000000000000000000000000049
+:10F7C00000000000000000000000000000003C00FD
+:10F7D000649A01000000000000000000000000002A
+:10F7E0000000000000000000000000000000000019
+:10F7F0000000000000000000000000000000000009
+:10F8000000000000000000000000000000000000F8
+:10F810003C00A09A01000000000000000000000071
+:10F8200000000000000000000000000000000000D8
+:10F8300000000000000000000000000000000000C8
+:10F8400000000000000000000000000000000000B8
+:10F8500000003C00DC9A01000000000000000000F5
+:10F860000000000000000000000000000000000098
+:10F870000000000000000000000000000000000088
+:10F880000000000000000000000000000000000078
+:10F89000000000003C00189B010000000000000078
+:10F8A0000000000000000000000000000000000058
+:10F8B0000000000000000000000000000000000048
+:10F8C0000000000000000000000000000000000038
+:10F8D0000000000000003C00549B010000000000FC
+:10F8E0000000000000000000000000000000000018
+:10F8F0000000000000000000000000000000000008
+:10F9000000000000000000000000000000000000F7
+:10F9100000000000000000003C00909B010000007F
+:10F9200000000000000000000000000000000000D7
+:10F9300000000000000000000000000000000000C7
+:10F9400000000000000000000000000000000000B7
+:10F95000000000000000000000003C00CC9B010003
+:10F960000000000000000000000000000000000097
+:10F970000000000000000000000000000000000087
+:10F980000000000000000000000000000000000077
+:10F990000000000000000000000000003C00089C87
+:10F9A0000100000000000000000000000000000056
+:10F9B0000000000000000000000000000000000047
+:10F9C0000000000000000000000000000000000037
+:10F9D00000000000000000000000000000003C00EB
+:10F9E000449C010000000000000000000000000036
+:10F9F0000000000000000000000000000000000007
+:10FA000000000000000000000000000000000000F6
+:10FA100000000000000000000000000000000000E6
+:10FA20003C00809C0100000000000000000000007D
+:10FA300000000000000000000000000000000000C6
+:10FA400000000000000000000000000000000000B6
+:10FA500000000000000000000000000000000000A6
+:10FA600000003C00BC9C0100000000000000000001
+:10FA70000000000000000000000000000000000086
+:10FA80000000000000000000000000000000000076
+:10FA90000000000000000000000000000000000066
+:10FAA000000000003C00F89C010000000000000085
+:10FAB0000000000000000000000000000000000046
+:10FAC0000000000000000000000000000000000036
+:10FAD0000000000000000000000000000000000026
+:10FAE0000000000000003C00349D01000000000008
+:10FAF0000000000000000000000000000000000006
+:10FB000000000000000000000000000000000000F5
+:10FB100000000000000000000000000000000000E5
+:10FB200000000000000000003C00709D010000008B
+:10FB300000000000000000000000000000000000C5
+:10FB400000000000000000000000000000000000B5
+:10FB500000000000000000000000000000000000A5
+:10FB6000000000000000000000003C00AC9D01000F
+:10FB70000000000000000000000000000000000085
+:10FB80000000000000000000000000000000000075
+:10FB90000000000000000000000000000000000065
+:10FBA0000000000000000000000000003C00E89D94
+:10FBB0000100000000000000000000000000000044
+:10FBC0000000000000000000000000000000000035
+:10FBD0000000000000000000000000000000000025
+:10FBE00000000000000000000000000000003C00D9
+:10FBF000249E010000000000000000000000000042
+:10FC000000000000000000000000000000000000F4
+:10FC100000000000000000000000000000000000E4
+:10FC200000000000000000000000000000000000D4
+:10FC30003C00609E01000000000000000000000089
+:10FC400000000000000000000000000000000000B4
+:10FC500000000000000000000000000000000000A4
+:10FC60000000000000000000000000000000000094
+:10FC700000003C009C9E010000000000000000000D
+:10FC80000000000000000000000000000000000074
+:10FC90000000000000000000000000000000000064
+:10FCA0000000000000000000000000000000000054
+:10FCB000000000003C00D89E010000000000000091
+:10FCC0000000000000000000000000000000000034
+:10FCD0000000000000000000000000000000000024
+:10FCE0000000000000000000000000000000000014
+:10FCF0000000000000003C00149F01000000000014
+:10FD000000000000000000000000000000000000F3
+:10FD100000000000000000000000000000000000E3
+:10FD200000000000000000000000000000000000D3
+:10FD300000000000000000003C00509F0100000097
+:10FD400000000000000000000000000000000000B3
+:10FD500000000000000000000000000000000000A3
+:10FD60000000000000000000000000000000000093
+:10FD7000000000000000000000003C008C9F01001B
+:10FD80000000000000000000000000000000000073
+:10FD90000000000000000000000000000000000063
+:10FDA0000000000000000000000000000000000053
+:10FDB0000000000000000000000000003C00C89FA0
+:10FDC0000100000000000000000000000000000032
+:10FDD0000000000000000000000000000000000023
+:10FDE0000000000000000000000000000000000013
+:10FDF00000000000000000000000000000003C00C7
+:10FE000004A001000000000000000000000000004D
+:10FE100000000000000000000000000000000000E2
+:10FE200000000000000000000000000000000000D2
+:10FE300000000000000000000000000000000000C2
+:10FE40003C0040A001000000000000000000000095
+:10FE500000000000000000000000000000000000A2
+:10FE60000000000000000000000000000000000092
+:10FE70000000000000000000000000000000000082
+:10FE800000003C007CA00100000000000000000019
+:10FE90000000000000000000000000000000000062
+:10FEA0000000000000000000000000000000000052
+:10FEB0000000000000000000000000000000000042
+:10FEC000000000003C00B8A001000000000000009D
+:10FED0000000000000000000000000000000000022
+:10FEE0000000000000000000000000000000000012
+:10FEF0000000000000000000000000000000000002
+:10FF00000000000000003C00F4A001000000000020
+:10FF100000000000000000000000000000000000E1
+:10FF200000000000000000000000000000000000D1
+:10FF300000000000000000000000000000000000C1
+:10FF400000000000000000003C0030A101000000A3
+:10FF500000000000000000000000000000000000A1
+:10FF60000000000000000000000000000000000091
+:10FF70000000000000000000000000000000000081
+:10FF8000000000000000000000003C006CA1010027
+:10FF90000000000000000000000000000000000061
+:10FFA0000000000000000000000000000000000051
+:10FFB0000000000000000000000000000000000041
+:10FFC0000000000000000000000000003C00A8A1AC
+:10FFD0000100000000000000000000000000000020
+:10FFE0000000000000000000000000000000000011
+:10FFF0000000000000000000000000000000000001
+:02000004800278
+:1000000000000000000000000000000000003C00B4
+:10001000E4A101000000000000000000000000005A
+:1000200000000000000000000000000000000000D0
+:1000300000000000000000000000000000000000C0
+:1000400000000000000000000000000000000000B0
+:100050003C0020A2010000000000000000000000A1
+:100060000000000000000000000000000000000090
+:100070000000000000000000000000000000000080
+:100080000000000000000000000000000000000070
+:1000900000003C005CA20100000000000000000025
+:1000A0000000000000000000000000000000000050
+:1000B0000000000000000000000000000000000040
+:1000C0000000000000000000000000000000000030
+:1000D000000000003C0098A20100000000000000A9
+:1000E0000000000000000000000000000000000010
+:1000F0000000000000000000000000000000000000
+:1001000000000000000000000000000000000000EF
+:100110000000000000003C00D4A20100000000002C
+:1001200000000000000000000000000000000000CF
+:1001300000000000000000000000000000000000BF
+:1001400000000000000000000000000000000000AF
+:1001500000000000000000003C0010A301000000AF
+:10016000000000000000000000000000000000008F
+:10017000000000000000000000000000000000007F
+:10018000000000000000000000000000000000006F
+:10019000000000000000000000003C004CA3010033
+:1001A000000000000000000000000000000000004F
+:1001B000000000000000000000000000000000003F
+:1001C000000000000000000000000000000000002F
+:1001D0000000000000000000000000003C0088A3B8
+:1001E000010000000000000000000000000000000E
+:1001F00000000000000000000000000000000000FF
+:1002000000000000000000000000000000000000EE
+:1002100000000000000000000000000000003C00A2
+:10022000C4A3010000000000000000000000000066
+:1002300000000000000000000000000000000000BE
+:1002400000000000000000000000000000000000AE
+:10025000000000000000000000000000000000009E
+:100260003C0000A4010000000000000000000000AD
+:10027000000000000000000000000000000000007E
+:10028000000000000000000000000000000000006E
+:10029000000000000000000000000000000000005E
+:1002A00000003C003CA40100000000000000000031
+:1002B000000000000000000000000000000000003E
+:1002C000000000000000000000000000000000002E
+:1002D000000000000000000000000000000000001E
+:1002E000000000003C0078A40100000000000000B5
+:1002F00000000000000000000000000000000000FE
+:1003000000000000000000000000000000000000ED
+:1003100000000000000000000000000000000000DD
+:100320000000000000003C00B4A401000000000038
+:1003300000000000000000000000000000000000BD
+:1003400000000000000000000000000000000000AD
+:10035000000000000000000000000000000000009D
+:1003600000000000000000003C00F0A401000000BC
+:10037000000000000000000000000000000000007D
+:10038000000000000000000000000000000000006D
+:10039000000000000000000000000000000000005D
+:1003A000000000000000000000003C002CA501003F
+:1003B000000000000000000000000000000000003D
+:1003C000000000000000000000000000000000002D
+:1003D000000000000000000000000000000000001D
+:1003E0000000000000000000000000003C0068A5C4
+:1003F00001000000000000000000000000000000FC
+:1004000000000000000000000000000000000000EC
+:1004100000000000000000000000000000000000DC
+:1004200000000000000000000000000000003C0090
+:10043000A4A5010000000000000000000000000072
+:1004400000000000000000000000000000000000AC
+:10045000000000000000000000000000000000009C
+:10046000000000000000000000000000000000008C
+:100470003C00E0A5010000000000000000000000BA
+:10048000000000000000000000000000000000006C
+:10049000000000000000000000000000000000005C
+:1004A000000000000000000000000000000000004C
+:1004B00000003C001CA6010000000000000000003D
+:1004C000000000000000000000000000000000002C
+:1004D000000000000000000000000000000000001C
+:1004E000000000000000000000000000000000000C
+:1004F000000000003C0058A60100000000000000C1
+:1005000000000000000000000000000000000000EB
+:1005100000000000000000000000000000000000DB
+:1005200000000000000000000000000000000000CB
+:100530000000000000003C0094A601000000000044
+:1005400000000000000000000000000000000000AB
+:10055000000000000000000000000000000000009B
+:10056000000000000000000000000000000000008B
+:1005700000000000000000003C00D0A601000000C8
+:10058000000000000000000000000000000000006B
+:10059000000000000000000000000000000000005B
+:1005A000000000000000000000000000000000004B
+:1005B000000000000000000000003C000CA701004B
+:1005C000000000000000000000000000000000002B
+:1005D000000000000000000000000000000000001B
+:1005E000000000000000000000000000000000000B
+:1005F0000000000000000000000000003C0048A7D0
+:1006000001000000000000000000000000000000E9
+:1006100000000000000000000000000000000000DA
+:1006200000000000000000000000000000000000CA
+:1006300000000000000000000000000000003C007E
+:1006400084A701000000000000000000000000007E
+:10065000000000000000000000000000000000009A
+:10066000000000000000000000000000000000008A
+:10067000000000000000000000000000000000007A
+:100680003C00C0A7010000000000000000000000C6
+:10069000000000000000000000000000000000005A
+:1006A000000000000000000000000000000000004A
+:1006B000000000000000000000000000000000003A
+:1006C00000003C00FCA7010000000000000000004A
+:1006D000000000000000000000000000000000001A
+:1006E000000000000000000000000000000000000A
+:1006F00000000000000000000000000000000000FA
+:10070000000000003C0038A80100000000000000CC
+:1007100000000000000000000000000000000000D9
+:1007200000000000000000000000000000000000C9
+:1007300000000000000000000000000000000000B9
+:100740000000000000003C0074A801000000000050
+:100750000000000000000000000000000000000099
+:100760000000000000000000000000000000000089
+:100770000000000000000000000000000000000079
+:1007800000000000000000003C00B0A801000000D4
+:100790000000000000000000000000000000000059
+:1007A0000000000000000000000000000000000049
+:1007B0000000000000000000000000000000000039
+:1007C000000000000000000000003C00ECA8010058
+:1007D0000000000000000000000000000000000019
+:1007E0000000000000000000000000000000000009
+:1007F00000000000000000000000000000000000F9
+:100800000000000000000000000000003C0028A9DB
+:1008100001000000000000000000000000000000D7
+:1008200000000000000000000000000000000000C8
+:1008300000000000000000000000000000000000B8
+:1008400000000000000000000000000000003C006C
+:1008500064A901000000000000000000000000008A
+:100860000000000000000000000000000000000088
+:100870000000000000000000000000000000000078
+:100880000000000000000000000000000000000068
+:100890003C00A0A9010000000000000000000000D2
+:1008A0000000000000000000000000000000000048
+:1008B0000000000000000000000000000000000038
+:1008C0000000000000000000000000000000000028
+:1008D00000003C00DCA90100000000000000000056
+:1008E0000000000000000000000000000000000008
+:1008F00000000000000000000000000000000000F8
+:1009000000000000000000000000000000000000E7
+:10091000000000003C0018AA0100000000000000D8
+:1009200000000000000000000000000000000000C7
+:1009300000000000000000000000000000000000B7
+:1009400000000000000000000000000000000000A7
+:100950000000000000003C0054AA0100000000005C
+:100960000000000000000000000000000000000087
+:100970000000000000000000000000000000000077
+:100980000000000000000000000000000000000067
+:1009900000000000000000003C0090AA01000000E0
+:1009A0000000000000000000000000000000000047
+:1009B0000000000000000000000000000000000037
+:1009C0000000000000000000000000000000000027
+:1009D000000000000000000000003C00CCAA010064
+:1009E0000000000000000000000000000000000007
+:1009F00000000000000000000000000000000000F7
+:100A000000000000000000000000000000000000E6
+:100A10000000000000000000000000003C0008ABE7
+:100A200001000000000000000000000000000000C5
+:100A300000000000000000000000000000000000B6
+:100A400000000000000000000000000000000000A6
+:100A500000000000000000000000000000003C005A
+:100A600044AB010000000000000000000000000096
+:100A70000000000000000000000000000000000076
+:100A80000000000000000000000000000000000066
+:100A90000000000000000000000000000000000056
+:100AA0003C0080AB010000000000000000000000DE
+:100AB0000000000000000000000000000000000036
+:100AC0000000000000000000000000000000000026
+:100AD0000000000000000000000000000000000016
+:100AE00000003C00BCAB0100000000000000000062
+:100AF00000000000000000000000000000000000F6
+:100B000000000000000000000000000000000000E5
+:100B100000000000000000000000000000000000D5
+:100B2000000000003C00F8AB0100000000000000E5
+:100B300000000000000000000000000000000000B5
+:100B400000000000000000000000000000000000A5
+:100B50000000000000000000000000000000000095
+:100B60000000000000003C0034AC01000000000068
+:100B70000000000000000000000000000000000075
+:100B80000000000000000000000000000000000065
+:100B90000000000000000000000000000000000055
+:100BA00000000000000000003C0070AC01000000EC
+:100BB0000000000000000000000000000000000035
+:100BC0000000000000000000000000000000000025
+:100BD0000000000000000000000000000000000015
+:100BE000000000000000000000003C00ACAC010070
+:100BF00000000000000000000000000000000000F5
+:100C000000000000000000000000000000000000E4
+:100C100000000000000000000000000000000000D4
+:100C20000000000000000000000000003C00E8ACF4
+:100C300001000000000000000000000000000000B3
+:100C400000000000000000000000000000000000A4
+:100C50000000000000000000000000000000000094
+:100C600000000000000000000000000000003C0048
+:100C700024AD0100000000000000000000000000A2
+:100C80000000000000000000000000000000000064
+:100C90000000000000000000000000000000000054
+:100CA0000000000000000000000000000000000044
+:100CB0003C0060AD010000000000000000000000EA
+:100CC0000000000000000000000000000000000024
+:100CD0000000000000000000000000000000000014
+:100CE0000000000000000000000000000000000004
+:100CF00000003C009CAD010000000000000000006E
+:100D000000000000000000000000000000000000E3
+:100D100000000000000000000000000000000000D3
+:100D200000000000000000000000000000000000C3
+:100D3000000000003C00D8AD0100000000000000F1
+:100D400000000000000000000000000000000000A3
+:100D50000000000000000000000000000000000093
+:100D60000000000000000000000000000000000083
+:100D70000000000000003C0014AE01000000000074
+:100D80000000000000000000000000000000000063
+:100D90000000000000000000000000000000000053
+:100DA0000000000000000000000000000000000043
+:100DB00000000000000000003C0050AE01000000F8
+:100DC0000000000000000000000000000000000023
+:100DD0000000000000000000000000000000000013
+:100DE0000000000000000000000000000000000003
+:100DF000000000000000000000003C008CAE01007C
+:100E000000000000000000000000000000000000E2
+:100E100000000000000000000000000000000000D2
+:100E200000000000000000000000000000000000C2
+:100E30000000000000000000000000003C00C8AE00
+:100E400001000000000000000000000000000000A1
+:100E50000000000000000000000000000000000092
+:100E60000000000000000000000000000000000082
+:100E700000000000000000000000000000003C0036
+:100E800004AF0100000000000000000000000000AE
+:100E90000000000000000000000000000000000052
+:100EA0000000000000000000000000000000000042
+:100EB0000000000000000000000000000000000032
+:100EC0003C0040AF010000000000000000000000F6
+:100ED0000000000000000000000000000000000012
+:100EE0000000000000000000000000000000000002
+:100EF00000000000000000000000000000000000F2
+:100F000000003C007CAF0100000000000000000079
+:100F100000000000000000000000000000000000D1
+:100F200000000000000000000000000000000000C1
+:100F300000000000000000000000000000000000B1
+:100F4000000000003C00B8AF0100000000000000FD
+:100F50000000000000000000000000000000000091
+:100F60000000000000000000000000000000000081
+:100F70000000000000000000000000000000000071
+:100F80000000000000003C00F4AF01000000000081
+:100F90000000000000000000000000000000000051
+:100FA0000000000000000000000000000000000041
+:100FB0000000000000000000000000000000000031
+:100FC00000000000000000003C0030B00100000004
+:100FD0000000000000000000000000000000000011
+:100FE0000000000000000000000000000000000001
+:100FF00000000000000000000000000000000000F1
+:10100000000000000000000000003C006CB0010087
+:1010100000000000000000000000000000000000D0
+:1010200000000000000000000000000000000000C0
+:1010300000000000000000000000000000000000B0
+:101040000000000000000000000000003C00A8B00C
+:10105000010000000000000000000000000000008F
+:101060000000000000000000000000000000000080
+:101070000000000000000000000000000000000070
+:1010800000000000000000000000000000003C0024
+:10109000E4B00100000000000000000000000000BB
+:1010A0000000000000000000000000000000000040
+:1010B0000000000000000000000000000000000030
+:1010C0000000000000000000000000000000000020
+:1010D0003C0020B101000000000000000000000002
+:1010E0000000000000000000000000000000000000
+:1010F00000000000000000000000000000000000F0
+:1011000000000000000000000000000000000000DF
+:1011100000003C005CB10100000000000000000085
+:1011200000000000000000000000000000000000BF
+:1011300000000000000000000000000000000000AF
+:10114000000000000000000000000000000000009F
+:10115000000000003C0098B1010000000000000009
+:10116000000000000000000000000000000000007F
+:10117000000000000000000000000000000000006F
+:10118000000000000000000000000000000000005F
+:101190000000000000003C00D4B10100000000008D
+:1011A000000000000000000000000000000000003F
+:1011B000000000000000000000000000000000002F
+:1011C000000000000000000000000000000000001F
+:1011D00000000000000000003C0010B20100000010
+:1011E00000000000000000000000000000000000FF
+:1011F00000000000000000000000000000000000EF
+:1012000000000000000000000000000000000000DE
+:10121000000000000000000000003C004CB2010093
+:1012200000000000000000000000000000000000BE
+:1012300000000000000000000000000000000000AE
+:10124000000000000000000000000000000000009E
+:101250000000000000000000000000003C0088B218
+:10126000010000000000000000000000000000007D
+:10127000000000000000000000000000000000006E
+:10128000000000000000000000000000000000005E
+:1012900000000000000000000000000000003C0012
+:1012A000C4B20100000000000000000000000000C7
+:1012B000000000000000000000000000000000002E
+:1012C000000000000000000000000000000000001E
+:1012D000000000000000000000000000000000000E
+:1012E0003C0000B30100000000000000000000000E
+:1012F00000000000000000000000000000000000EE
+:1013000000000000000000000000000000000000DD
+:1013100000000000000000000000000000000000CD
+:1013200000003C003CB30100000000000000000091
+:1013300000000000000000000000000000000000AD
+:10134000000000000000000000000000000000009D
+:10135000000000000000000000000000000000008D
+:10136000000000003C0078B3010000000000000015
+:10137000000000000000000000000000000000006D
+:10138000000000000000000000000000000000005D
+:10139000000000000000000000000000000000004D
+:1013A0000000000000003C00B4B301000000000099
+:1013B000000000000000000000000000000000002D
+:1013C000000000000000000000000000000000001D
+:1013D000000000000000000000000000000000000D
+:1013E00000000000000000003C00F0B3010000001D
+:1013F00000000000000000000000000000000000ED
+:1014000000000000000000000000000000000000DC
+:1014100000000000000000000000000000000000CC
+:10142000000000000000000000003C002CB401009F
+:1014300000000000000000000000000000000000AC
+:10144000000000000000000000000000000000009C
+:10145000000000000000000000000000000000008C
+:101460000000000000000000000000003C0068B424
+:10147000010000000000000000000000000000006B
+:10148000000000000000000000000000000000005C
+:10149000000000000000000000000000000000004C
+:1014A00000000000000000000000000000003C0000
+:1014B000A4B40100000000000000000000000000D3
+:1014C000000000000000000000000000000000001C
+:1014D000000000000000000000000000000000000C
+:1014E00000000000000000000000000000000000FC
+:1014F0003C00E0B40100000000000000000000001B
+:1015000000000000000000000000000000000000DB
+:1015100000000000000000000000000000000000CB
+:1015200000000000000000000000000000000000BB
+:1015300000003C001CB5010000000000000000009D
+:10154000000000000000000000000000000000009B
+:10155000000000000000000000000000000000008B
+:10156000000000000000000000000000000000007B
+:10157000000000003C0058B5010000000000000021
+:10158000000000000000000000000000000000005B
+:10159000000000000000000000000000000000004B
+:1015A000000000000000000000000000000000003B
+:1015B0000000000000003C0094B5010000000000A5
+:1015C000000000000000000000000000000000001B
+:1015D000000000000000000000000000000000000B
+:1015E00000000000000000000000000000000000FB
+:1015F00000000000000000003C00D0B50100000029
+:1016000000000000000000000000000000000000DA
+:1016100000000000000000000000000000000000CA
+:1016200000000000000000000000000000000000BA
+:10163000000000000000000000003C000CB60100AB
+:10164000000000000000000000000000000000009A
+:10165000000000000000000000000000000000008A
+:10166000000000000000000000000000000000007A
+:101670000000000000000000000000003C0048B630
+:101680000100000000000000000000000000000059
+:10169000000000000000000000000000000000004A
+:1016A000000000000000000000000000000000003A
+:1016B00000000000000000000000000000003C00EE
+:1016C00084B60100000000000000000000000000DF
+:1016D000000000000000000000000000000000000A
+:1016E00000000000000000000000000000000000FA
+:1016F00000000000000000000000000000000000EA
+:101700003C00C0B601000000000000000000000026
+:1017100000000000000000000000000000000000C9
+:1017200000000000000000000000000000000000B9
+:1017300000000000000000000000000000000000A9
+:1017400000003C00FCB601000000000000000000AA
+:101750000000000000000000000000000000000089
+:101760000000000000000000000000000000000079
+:101770000000000000000000000000000000000069
+:10178000000000003C0038B701000000000000002D
+:101790000000000000000000000000000000000049
+:1017A0000000000000000000000000000000000039
+:1017B0000000000000000000000000000000000029
+:1017C0000000000000003C0074B7010000000000B1
+:1017D0000000000000000000000000000000000009
+:1017E00000000000000000000000000000000000F9
+:1017F00000000000000000000000000000000000E9
+:1018000000000000000000003C00B0B70100000034
+:1018100000000000000000000000000000000000C8
+:1018200000000000000000000000000000000000B8
+:1018300000000000000000000000000000000000A8
+:10184000000000000000000000003C00ECB70100B8
+:101850000000000000000000000000000000000088
+:101860000000000000000000000000000000000078
+:101870000000000000000000000000000000000068
+:101880000000000000000000000000003C0028B83C
+:101890000100000000000000000000000000000047
+:1018A0000000000000000000000000000000000038
+:1018B0000000000000000000000000000000000028
+:1018C00000000000000000000000000000003C00DC
+:1018D00064B80100000000000000000000000000EB
+:1018E00000000000000000000000000000000000F8
+:1018F00000000000000000000000000000000000E8
+:1019000000000000000000000000000000000000D7
+:101910003C00A0B801000000000000000000000032
+:1019200000000000000000000000000000000000B7
+:1019300000000000000000000000000000000000A7
+:101940000000000000000000000000000000000097
+:1019500000003C00DCB801000000000000000000B6
+:101960000000000000000000000000000000000077
+:101970000000000000000000000000000000000067
+:101980000000000000000000000000000000000057
+:10199000000000003C0018B9010000000000000039
+:1019A0000000000000000000000000000000000037
+:1019B0000000000000000000000000000000000027
+:1019C0000000000000000000000000000000000017
+:1019D0000000000000003C0054B9010000000000BD
+:1019E00000000000000000000000000000000000F7
+:1019F00000000000000000000000000000000000E7
+:101A000000000000000000000000000000000000D6
+:101A100000000000000000003C0090B90100000040
+:101A200000000000000000000000000000000000B6
+:101A300000000000000000000000000000000000A6
+:101A40000000000000000000000000000000000096
+:101A5000000000000000000000003C00CCB90100C4
+:101A60000000000000000000000000000000000076
+:101A70000000000000000000000000000000000066
+:101A80000000000000000000000000000000000056
+:101A90000000000000000000000000003C0008BA48
+:101AA0000100000000000000000000000000000035
+:101AB0000000000000000000000000000000000026
+:101AC0000000000000000000000000000000000016
+:101AD00000000000000000000000000000003C00CA
+:101AE00044BA0100000000000000000000000000F7
+:101AF00000000000000000000000000000000000E6
+:101B000000000000000000000000000000000000D5
+:101B100000000000000000000000000000000000C5
+:101B20003C0080BA0100000000000000000000003E
+:101B300000000000000000000000000000000000A5
+:101B40000000000000000000000000000000000095
+:101B50000000000000000000000000000000000085
+:101B600000003C00BCBA01000000000000000000C2
+:101B70000000000000000000000000000000000065
+:101B80000000000000000000000000000000000055
+:101B90000000000000000000000000000000000045
+:101BA000000000003C00F8BA010000000000000046
+:101BB0000000000000000000000000000000000025
+:101BC0000000000000000000000000000000000015
+:101BD0000000000000000000000000000000000005
+:101BE0000000000000003C0034BB010000000000C9
+:101BF00000000000000000000000000000000000E5
+:101C000000000000000000000000000000000000D4
+:101C100000000000000000000000000000000000C4
+:101C200000000000000000003C0070BB010000004C
+:101C300000000000000000000000000000000000A4
+:101C40000000000000000000000000000000000094
+:101C50000000000000000000000000000000000084
+:101C6000000000000000000000003C00ACBB0100D0
+:101C70000000000000000000000000000000000064
+:101C80000000000000000000000000000000000054
+:101C90000000000000000000000000000000000044
+:101CA0000000000000000000000000003C00E8BB55
+:101CB0000100000000000000000000000000000023
+:101CC0000000000000000000000000000000000014
+:101CD0000000000000000000000000000000000004
+:101CE00000000000000000000000000000003C00B8
+:101CF00024BC010000000000000000000000000003
+:101D000000000000000000000000000000000000D3
+:101D100000000000000000000000000000000000C3
+:101D200000000000000000000000000000000000B3
+:101D30003C0060BC0100000000000000000000004A
+:101D40000000000000000000000000000000000093
+:101D50000000000000000000000000000000000083
+:101D60000000000000000000000000000000000073
+:101D700000003C009CBC01000000000000000000CE
+:101D80000000000000000000000000000000000053
+:101D90000000000000000000000000000000000043
+:101DA0000000000000000000000000000000000033
+:101DB000000000003C00D8BC010000000000000052
+:101DC0000000000000000000000000000000000013
+:101DD0000000000000000000000000000000000003
+:101DE00000000000000000000000000000000000F3
+:101DF0000000000000003C0014BD010000000000D5
+:101E000000000000000000000000000000000000D2
+:101E100000000000000000000000000000000000C2
+:101E200000000000000000000000000000000000B2
+:101E300000000000000000003C0050BD0100000058
+:101E40000000000000000000000000000000000092
+:101E50000000000000000000000000000000000082
+:101E60000000000000000000000000000000000072
+:101E7000000000000000000000003C008CBD0100DC
+:101E80000000000000000000000000000000000052
+:101E90000000000000000000000000000000000042
+:101EA0000000000000000000000000000000000032
+:101EB0000000000000000000000000003C00C8BD61
+:101EC0000100000000000000000000000000000011
+:101ED0000000000000000000000000000000000002
+:101EE00000000000000000000000000000000000F2
+:101EF00000000000000000000000000000003C00A6
+:101F000004BE01000000000000000000000000000E
+:101F100000000000000000000000000000000000C1
+:101F200000000000000000000000000000000000B1
+:101F300000000000000000000000000000000000A1
+:101F40003C0040BE01000000000000000000000056
+:101F50000000000000000000000000000000000081
+:101F60000000000000000000000000000000000071
+:101F70000000000000000000000000000000000061
+:101F800000003C007CBE01000000000000000000DA
+:101F90000000000000000000000000000000000041
+:101FA0000000000000000000000000000000000031
+:101FB0000000000000000000000000000000000021
+:101FC000000000003C00B8BE01000000000000005E
+:101FD0000000000000000000000000000000000001
+:101FE00000000000000000000000000000000000F1
+:101FF00000000000000000000000000000000000E1
+:102000000000000000003C00F4BE010000000000E1
+:1020100000000000000000000000000000000000C0
+:1020200000000000000000000000000000000000B0
+:1020300000000000000000000000000000000000A0
+:1020400000000000000000003C0030BF0100000064
+:102050000000000000000000000000000000000080
+:102060000000000000000000000000000000000070
+:102070000000000000000000000000000000000060
+:10208000000000000000000000003C006CBF0100E8
+:102090000000000000000000000000000000000040
+:1020A0000000000000000000000000000000000030
+:1020B0000000000000000000000000000000000020
+:1020C0000000000000000000000000003C00A8BF6D
+:1020D00001000000000000000000000000000000FF
+:1020E00000000000000000000000000000000000F0
+:1020F00000000000000000000000000000000000E0
+:1021000000000000000000000000000000003C0093
+:10211000E4BF01000000000000000000000000001B
+:1021200000000000000000000000000000000000AF
+:10213000000000000000000000000000000000009F
+:10214000000000000000000000000000000000008F
+:102150003C0020C001000000000000000000000062
+:10216000000000000000000000000000000000006F
+:10217000000000000000000000000000000000005F
+:10218000000000000000000000000000000000004F
+:1021900000003C005CC001000000000000000000E6
+:1021A000000000000000000000000000000000002F
+:1021B000000000000000000000000000000000001F
+:1021C000000000000000000000000000000000000F
+:1021D000000000003C0098C001000000000000006A
+:1021E00000000000000000000000000000000000EF
+:1021F00000000000000000000000000000000000DF
+:1022000000000000000000000000000000000000CE
+:102210000000000000003C00D4C0010000000000ED
+:1022200000000000000000000000000000000000AE
+:10223000000000000000000000000000000000009E
+:10224000000000000000000000000000000000008E
+:1022500000000000000000003C0010C10100000070
+:10226000000000000000000000000000000000006E
+:10227000000000000000000000000000000000005E
+:10228000000000000000000000000000000000004E
+:10229000000000000000000000003C004CC10100F4
+:1022A000000000000000000000000000000000002E
+:1022B000000000000000000000000000000000001E
+:1022C000000000000000000000000000000000000E
+:1022D0000000000000000000000000003C0088C179
+:1022E00001000000000000000000000000000000ED
+:1022F00000000000000000000000000000000000DE
+:1023000000000000000000000000000000000000CD
+:1023100000000000000000000000000000003C0081
+:10232000C4C1010000000000000000000000000027
+:10233000000000000000000000000000000000009D
+:10234000000000000000000000000000000000008D
+:10235000000000000000000000000000000000007D
+:102360003C0000C20100000000000000000000006E
+:10237000000000000000000000000000000000005D
+:10238000000000000000000000000000000000004D
+:10239000000000000000000000000000000000003D
+:1023A00000003C003CC201000000000000000000F2
+:1023B000000000000000000000000000000000001D
+:1023C000000000000000000000000000000000000D
+:1023D00000000000000000000000000000000000FD
+:1023E000000000003C0078C2010000000000000076
+:1023F00000000000000000000000000000000000DD
+:1024000000000000000000000000000000000000CC
+:1024100000000000000000000000000000000000BC
+:102420000000000000003C00B4C2010000000000F9
+:10243000000000000000000000000000000000009C
+:10244000000000000000000000000000000000008C
+:10245000000000000000000000000000000000007C
+:1024600000000000000000003C00F0C2010000007D
+:10247000000000000000000000000000000000005C
+:10248000000000000000000000000000000000004C
+:10249000000000000000000000000000000000003C
+:1024A000000000000000000000003C002CC3010000
+:1024B000000000000000000000000000000000001C
+:1024C000000000000000000000000000000000000C
+:1024D00000000000000000000000000000000000FC
+:1024E0000000000000000000000000003C0068C385
+:1024F00001000000000000000000000000000000DB
+:1025000000000000000000000000000000000000CB
+:1025100000000000000000000000000000000000BB
+:1025200000000000000000000000000000003C006F
+:10253000A4C3010000000000000000000000000033
+:10254000000000000000000000000000000000008B
+:10255000000000000000000000000000000000007B
+:10256000000000000000000000000000000000006B
+:102570003C00E0C30100000000000000000000007B
+:10258000000000000000000000000000000000004B
+:10259000000000000000000000000000000000003B
+:1025A000000000000000000000000000000000002B
+:1025B00000003C001CC401000000000000000000FE
+:1025C000000000000000000000000000000000000B
+:1025D00000000000000000000000000000000000FB
+:1025E00000000000000000000000000000000000EB
+:1025F000000000003C0058C4010000000000000082
+:1026000000000000000000000000000000000000CA
+:1026100000000000000000000000000000000000BA
+:1026200000000000000000000000000000000000AA
+:102630000000000000003C0094C401000000000005
+:10264000000000000000000000000000000000008A
+:10265000000000000000000000000000000000007A
+:10266000000000000000000000000000000000006A
+:1026700000000000000000003C00D0C40100000089
+:10268000000000000000000000000000000000004A
+:10269000000000000000000000000000000000003A
+:1026A000000000000000000000000000000000002A
+:1026B000000000000000000000003C000CC501000C
+:1026C000000000000000000000000000000000000A
+:1026D00000000000000000000000000000000000FA
+:1026E00000000000000000000000000000000000EA
+:1026F0000000000000000000000000003C0048C591
+:1027000001000000000000000000000000000000C8
+:1027100000000000000000000000000000000000B9
+:1027200000000000000000000000000000000000A9
+:1027300000000000000000000000000000003C005D
+:1027400084C501000000000000000000000000003F
+:102750000000000000000000000000000000000079
+:102760000000000000000000000000000000000069
+:102770000000000000000000000000000000000059
+:102780003C00C0C501000000000000000000000087
+:102790000000000000000000000000000000000039
+:1027A0000000000000000000000000000000000029
+:1027B0000000000000000000000000000000000019
+:1027C00000003C00FCC5010000000000000000000B
+:1027D00000000000000000000000000000000000F9
+:1027E00000000000000000000000000000000000E9
+:1027F00000000000000000000000000000000000D9
+:10280000000000003C0038C601000000000000008D
+:1028100000000000000000000000000000000000B8
+:1028200000000000000000000000000000000000A8
+:102830000000000000000000000000000000000098
+:102840000000000000003C0074C601000000000011
+:102850000000000000000000000000000000000078
+:102860000000000000000000000000000000000068
+:102870000000000000000000000000000000000058
+:1028800000000000000000003C00B0C60100000095
+:102890000000000000000000000000000000000038
+:1028A0000000000000000000000000000000000028
+:1028B0000000000000000000000000000000000018
+:1028C000000000000000000000003C00ECC6010019
+:1028D00000000000000000000000000000000000F8
+:1028E00000000000000000000000000000000000E8
+:1028F00000000000000000000000000000000000D8
+:102900000000000000000000000000003C0028C79C
+:1029100001000000000000000000000000000000B6
+:1029200000000000000000000000000000000000A7
+:102930000000000000000000000000000000000097
+:1029400000000000000000000000000000003C004B
+:1029500064C701000000000000000000000000004B
+:102960000000000000000000000000000000000067
+:102970000000000000000000000000000000000057
+:102980000000000000000000000000000000000047
+:102990003C00A0C701000000000000000000000093
+:1029A0000000000000000000000000000000000027
+:1029B0000000000000000000000000000000000017
+:1029C0000000000000000000000000000000000007
+:1029D00000003C00DCC70100000000000000000017
+:1029E00000000000000000000000000000000000E7
+:1029F00000000000000000000000000000000000D7
+:102A000000000000000000000000000000000000C6
+:102A1000000000003C0018C8010000000000000099
+:102A200000000000000000000000000000000000A6
+:102A30000000000000000000000000000000000096
+:102A40000000000000000000000000000000000086
+:102A50000000000000003C0054C80100000000001D
+:102A60000000000000000000000000000000000066
+:102A70000000000000000000000000000000000056
+:102A80000000000000000000000000000000000046
+:102A900000000000000000003C0090C801000000A1
+:102AA0000000000000000000000000000000000026
+:102AB0000000000000000000000000000000000016
+:102AC0000000000000000000000000000000000006
+:102AD000000000000000000000003C00CCC8010025
+:102AE00000000000000000000000000000000000E6
+:102AF00000000000000000000000000000000000D6
+:102B000000000000000000000000000000000000C5
+:102B10000000000000000000000000003C0008C9A8
+:102B200001000000000000000000000000000000A4
+:102B30000000000000000000000000000000000095
+:102B40000000000000000000000000000000000085
+:102B500000000000000000000000000000003C0039
+:102B600044C9010000000000000000000000000057
+:102B70000000000000000000000000000000000055
+:102B80000000000000000000000000000000000045
+:102B90000000000000000000000000000000000035
+:102BA0003C0080C90100000000000000000000009F
+:102BB0000000000000000000000000000000000015
+:102BC0000000000000000000000000000000000005
+:102BD00000000000000000000000000000000000F5
+:102BE00000003C00BCC90100000000000000000023
+:102BF00000000000000000000000000000000000D5
+:102C000000000000000000000000000000000000C4
+:102C100000000000000000000000000000000000B4
+:102C2000000000003C00F8C90100000000000000A6
+:102C30000000000000000000000000000000000094
+:102C40000000000000000000000000000000000084
+:102C50000000000000000000000000000000000074
+:102C60000000000000003C0034CA01000000000029
+:102C70000000000000000000000000000000000054
+:102C80000000000000000000000000000000000044
+:102C90000000000000000000000000000000000034
+:102CA00000000000000000003C0070CA01000000AD
+:102CB0000000000000000000000000000000000014
+:102CC0000000000000000000000000000000000004
+:102CD00000000000000000000000000000000000F4
+:102CE000000000000000000000003C00ACCA010031
+:102CF00000000000000000000000000000000000D4
+:102D000000000000000000000000000000000000C3
+:102D100000000000000000000000000000000000B3
+:102D20000000000000000000000000003C00E8CAB5
+:102D30000100000000000000000000000000000092
+:102D40000000000000000000000000000000000083
+:102D50000000000000000000000000000000000073
+:102D600000000000000000000000000000003C0027
+:102D700024CB010000000000000000000000000063
+:102D80000000000000000000000000000000000043
+:102D90000000000000000000000000000000000033
+:102DA0000000000000000000000000000000000023
+:102DB0003C0060CB010000000000000000000000AB
+:102DC0000000000000000000000000000000000003
+:102DD00000000000000000000000000000000000F3
+:102DE00000000000000000000000000000000000E3
+:102DF00000003C009CCB010000000000000000002F
+:102E000000000000000000000000000000000000C2
+:102E100000000000000000000000000000000000B2
+:102E200000000000000000000000000000000000A2
+:102E3000000000003C00D8CB0100000000000000B2
+:102E40000000000000000000000000000000000082
+:102E50000000000000000000000000000000000072
+:102E60000000000000000000000000000000000062
+:102E70000000000000003C0014CC01000000000035
+:102E80000000000000000000000000000000000042
+:102E90000000000000000000000000000000000032
+:102EA0000000000000000000000000000000000022
+:102EB00000000000000000003C0050CC01000000B9
+:102EC0000000000000000000000000000000000002
+:102ED00000000000000000000000000000000000F2
+:102EE00000000000000000000000000000000000E2
+:102EF000000000000000000000003C008CCC01003D
+:102F000000000000000000000000000000000000C1
+:102F100000000000000000000000000000000000B1
+:102F200000000000000000000000000000000000A1
+:102F30000000000000000000000000003C00C8CCC1
+:102F40000100000000000000000000000000000080
+:102F50000000000000000000000000000000000071
+:102F60000000000000000000000000000000000061
+:102F700000000000000000000000000000003C0015
+:102F800004CD01000000000000000000000000006F
+:102F90000000000000000000000000000000000031
+:102FA0000000000000000000000000000000000021
+:102FB0000000000000000000000000000000000011
+:102FC0003C0040CD010000000000000000000000B7
+:102FD00000000000000000000000000000000000F1
+:102FE00000000000000000000000000000000000E1
+:102FF00000000000000000000000000000000000D1
+:1030000000003C007CCD010000000000000000003A
+:1030100000000000000000000000000000000000B0
+:1030200000000000000000000000000000000000A0
+:103030000000000000000000000000000000000090
+:10304000000000003C00B8CD0100000000000000BE
+:103050000000000000000000000000000000000070
+:103060000000000000000000000000000000000060
+:103070000000000000000000000000000000000050
+:103080000000000000003C00F4CD01000000000042
+:103090000000000000000000000000000000000030
+:1030A0000000000000000000000000000000000020
+:1030B0000000000000000000000000000000000010
+:1030C00000000000000000003C0030CE01000000C5
+:1030D00000000000000000000000000000000000F0
+:1030E00000000000000000000000000000000000E0
+:1030F00000000000000000000000000000000000D0
+:10310000000000000000000000003C006CCE010048
+:1031100000000000000000000000000000000000AF
+:10312000000000000000000000000000000000009F
+:10313000000000000000000000000000000000008F
+:103140000000000000000000000000003C00A8CECD
+:10315000010000000000000000000000000000006E
+:10316000000000000000000000000000000000005F
+:10317000000000000000000000000000000000004F
+:1031800000000000000000000000000000003C0003
+:10319000E4CE01000000000000000000000000007C
+:1031A000000000000000000000000000000000001F
+:1031B000000000000000000000000000000000000F
+:1031C00000000000000000000000000000000000FF
+:1031D0003C0020CF010000000000000000000000C3
+:1031E00000000000000000000000000000000000DF
+:1031F00000000000000000000000000000000000CF
+:1032000000000000000000000000000000000000BE
+:1032100000003C005CCF0100000000000000000046
+:10322000000000000000000000000000000000009E
+:10323000000000000000000000000000000000008E
+:10324000000000000000000000000000000000007E
+:10325000000000003C0098CF0100000000000000CA
+:10326000000000000000000000000000000000005E
+:10327000000000000000000000000000000000004E
+:10328000000000000000000000000000000000003E
+:103290000000000000003C00D4CF0100000000004E
+:1032A000000000000000000000000000000000001E
+:1032B000000000000000000000000000000000000E
+:1032C00000000000000000000000000000000000FE
+:1032D00000000000000000003C0010D001000000D1
+:1032E00000000000000000000000000000000000DE
+:1032F00000000000000000000000000000000000CE
+:1033000000000000000000000000000000000000BD
+:10331000000000000000000000003C004CD0010054
+:10332000000000000000000000000000000000009D
+:10333000000000000000000000000000000000008D
+:10334000000000000000000000000000000000007D
+:103350000000000000000000000000003C0088D0D9
+:10336000010000000000000000000000000000005C
+:10337000000000000000000000000000000000004D
+:10338000000000000000000000000000000000003D
+:1033900000000000000000000000000000003C00F1
+:1033A000C4D0010000000000000000000000000088
+:1033B000000000000000000000000000000000000D
+:1033C00000000000000000000000000000000000FD
+:1033D00000000000000000000000000000000000ED
+:1033E0003C0000D1010000000000000000000000CF
+:1033F00000000000000000000000000000000000CD
+:1034000000000000000000000000000000000000BC
+:1034100000000000000000000000000000000000AC
+:1034200000003C003CD10100000000000000000052
+:10343000000000000000000000000000000000008C
+:10344000000000000000000000000000000000007C
+:10345000000000000000000000000000000000006C
+:10346000000000003C0078D10100000000000000D6
+:10347000000000000000000000000000000000004C
+:10348000000000000000000000000000000000003C
+:10349000000000000000000000000000000000002C
+:1034A0000000000000003C00B4D10100000000005A
+:1034B000000000000000000000000000000000000C
+:1034C00000000000000000000000000000000000FC
+:1034D00000000000000000000000000000000000EC
+:1034E00000000000000000003C00F0D101000000DE
+:1034F00000000000000000000000000000000000CC
+:1035000000000000000000000000000000000000BB
+:1035100000000000000000000000000000000000AB
+:10352000000000000000000000003C002CD2010060
+:10353000000000000000000000000000000000008B
+:10354000000000000000000000000000000000007B
+:10355000000000000000000000000000000000006B
+:103560000000000000000000000000003C0068D2E5
+:10357000010000000000000000000000000000004A
+:10358000000000000000000000000000000000003B
+:10359000000000000000000000000000000000002B
+:1035A00000000000000000000000000000003C00DF
+:1035B000A4D2010000000000000000000000000094
+:1035C00000000000000000000000000000000000FB
+:1035D00000000000000000000000000000000000EB
+:1035E00000000000000000000000000000000000DB
+:1035F0003C00E0D2010000000000000000000000DC
+:1036000000000000000000000000000000000000BA
+:1036100000000000000000000000000000000000AA
+:10362000000000000000000000000000000000009A
+:1036300000003C001CD3010000000000000000005E
+:10364000000000000000000000000000000000007A
+:10365000000000000000000000000000000000006A
+:10366000000000000000000000000000000000005A
+:10367000000000003C0058D30100000000000000E2
+:10368000000000000000000000000000000000003A
+:10369000000000000000000000000000000000002A
+:1036A000000000000000000000000000000000001A
+:1036B0000000000000003C0094D301000000000066
+:1036C00000000000000000000000000000000000FA
+:1036D00000000000000000000000000000000000EA
+:1036E00000000000000000000000000000000000DA
+:1036F00000000000000000003C00D0D301000000EA
+:1037000000000000000000000000000000000000B9
+:1037100000000000000000000000000000000000A9
+:103720000000000000000000000000000000000099
+:10373000000000000000000000003C000CD401006C
+:103740000000000000000000000000000000000079
+:103750000000000000000000000000000000000069
+:103760000000000000000000000000000000000059
+:103770000000000000000000000000003C0048D4F1
+:103780000100000000000000000000000000000038
+:103790000000000000000000000000000000000029
+:1037A0000000000000000000000000000000000019
+:1037B00000000000000000000000000000003C00CD
+:1037C00084D40100000000000000000000000000A0
+:1037D00000000000000000000000000000000000E9
+:1037E00000000000000000000000000000000000D9
+:1037F00000000000000000000000000000000000C9
+:103800003C00C0D4010000000000000000000000E7
+:1038100000000000000000000000000000000000A8
+:103820000000000000000000000000000000000098
+:103830000000000000000000000000000000000088
+:1038400000003C00FCD4010000000000000000006B
+:103850000000000000000000000000000000000068
+:103860000000000000000000000000000000000058
+:103870000000000000000000000000000000000048
+:10388000000000003C0038D50100000000000000EE
+:103890000000000000000000000000000000000028
+:1038A0000000000000000000000000000000000018
+:1038B0000000000000000000000000000000000008
+:1038C0000000000000003C0074D501000000000072
+:1038D00000000000000000000000000000000000E8
+:1038E00000000000000000000000000000000000D8
+:1038F00000000000000000000000000000000000C8
+:1039000000000000000000003C00B0D501000000F5
+:1039100000000000000000000000000000000000A7
+:103920000000000000000000000000000000000097
+:103930000000000000000000000000000000000087
+:10394000000000000000000000003C00ECD5010079
+:103950000000000000000000000000000000000067
+:103960000000000000000000000000000000000057
+:103970000000000000000000000000000000000047
+:103980000000000000000000000000003C0028D6FD
+:103990000100000000000000000000000000000026
+:1039A0000000000000000000000000000000000017
+:1039B0000000000000000000000000000000000007
+:1039C00000000000000000000000000000003C00BB
+:1039D00064D60100000000000000000000000000AC
+:1039E00000000000000000000000000000000000D7
+:1039F00000000000000000000000000000000000C7
+:103A000000000000000000000000000000000000B6
+:103A10003C00A0D6010000000000000000000000F3
+:103A20000000000000000000000000000000000096
+:103A30000000000000000000000000000000000086
+:103A40000000000000000000000000000000000076
+:103A500000003C00DCD60100000000000000000077
+:103A60000000000000000000000000000000000056
+:103A70000000000000000000000000000000000046
+:103A80000000000000000000000000000000000036
+:103A9000000000003C0018D70100000000000000FA
+:103AA0000000000000000000000000000000000016
+:103AB0000000000000000000000000000000000006
+:103AC00000000000000000000000000000000000F6
+:103AD0000000000000003C0054D70100000000007E
+:103AE00000000000000000000000000000000000D6
+:103AF00000000000000000000000000000000000C6
+:103B000000000000000000000000000000000000B5
+:103B100000000000000000003C0090D70100000001
+:103B20000000000000000000000000000000000095
+:103B30000000000000000000000000000000000085
+:103B40000000000000000000000000000000000075
+:103B5000000000000000000000003C00CCD7010085
+:103B60000000000000000000000000000000000055
+:103B70000000000000000000000000000000000045
+:103B80000000000000000000000000000000000035
+:103B90000000000000000000000000003C0008D809
+:103BA0000100000000000000000000000000000014
+:103BB0000000000000000000000000000000000005
+:103BC00000000000000000000000000000000000F5
+:103BD00000000000000000000000000000003C00A9
+:103BE00044D80100000000000000000000000000B8
+:103BF00000000000000000000000000000000000C5
+:103C000000000000000000000000000000000000B4
+:103C100000000000000000000000000000000000A4
+:103C20003C0080D8010000000000000000000000FF
+:103C30000000000000000000000000000000000084
+:103C40000000000000000000000000000000000074
+:103C50000000000000000000000000000000000064
+:103C600000003C00BCD80100000000000000000083
+:103C70000000000000000000000000000000000044
+:103C80000000000000000000000000000000000034
+:103C90000000000000000000000000000000000024
+:103CA000000000003C00F8D8010000000000000007
+:103CB0000000000000000000000000000000000004
+:103CC00000000000000000000000000000000000F4
+:103CD00000000000000000000000000000000000E4
+:103CE0000000000000003C0034D90100000000008A
+:103CF00000000000000000000000000000000000C4
+:103D000000000000000000000000000000000000B3
+:103D100000000000000000000000000000000000A3
+:103D200000000000000000003C0070D9010000000D
+:103D30000000000000000000000000000000000083
+:103D40000000000000000000000000000000000073
+:103D50000000000000000000000000000000000063
+:103D6000000000000000000000003C00ACD9010091
+:103D70000000000000000000000000000000000043
+:103D80000000000000000000000000000000000033
+:103D90000000000000000000000000000000000023
+:103DA0000000000000000000000000003C00E8D916
+:103DB0000100000000000000000000000000000002
+:103DC00000000000000000000000000000000000F3
+:103DD00000000000000000000000000000000000E3
+:103DE00000000000000000000000000000003C0097
+:103DF00024DA0100000000000000000000000000C4
+:103E000000000000000000000000000000000000B2
+:103E100000000000000000000000000000000000A2
+:103E20000000000000000000000000000000000092
+:103E30003C0060DA0100000000000000000000000B
+:103E40000000000000000000000000000000000072
+:103E50000000000000000000000000000000000062
+:103E60000000000000000000000000000000000052
+:103E700000003C009CDA010000000000000000008F
+:103E80000000000000000000000000000000000032
+:103E90000000000000000000000000000000000022
+:103EA0000000000000000000000000000000000012
+:103EB000000000003C00D8DA010000000000000013
+:103EC00000000000000000000000000000000000F2
+:103ED00000000000000000000000000000000000E2
+:103EE00000000000000000000000000000000000D2
+:103EF0000000000000003C0014DB01000000000096
+:103F000000000000000000000000000000000000B1
+:103F100000000000000000000000000000000000A1
+:103F20000000000000000000000000000000000091
+:103F300000000000000000003C0050DB0100000019
+:103F40000000000000000000000000000000000071
+:103F50000000000000000000000000000000000061
+:103F60000000000000000000000000000000000051
+:103F7000000000000000000000003C008CDB01009D
+:103F80000000000000000000000000000000000031
+:103F90000000000000000000000000000000000021
+:103FA0000000000000000000000000000000000011
+:103FB0000000000000000000000000003C00C8DB22
+:103FC00001000000000000000000000000000000F0
+:103FD00000000000000000000000000000000000E1
+:103FE00000000000000000000000000000000000D1
+:103FF00000000000000000000000000000003C0085
+:1040000004DC0100000000000000000000000000CF
+:1040100000000000000000000000000000000000A0
+:104020000000000000000000000000000000000090
+:104030000000000000000000000000000000000080
+:104040003C0040DC01000000000000000000000017
+:104050000000000000000000000000000000000060
+:104060000000000000000000000000000000000050
+:104070000000000000000000000000000000000040
+:1040800000003C007CDC010000000000000000009B
+:104090000000000000000000000000000000000020
+:1040A0000000000000000000000000000000000010
+:1040B0000000000000000000000000000000000000
+:1040C000000000003C00B8DC01000000000000001F
+:1040D00000000000000000000000000000000000E0
+:1040E00000000000000000000000000000000000D0
+:1040F00000000000000000000000000000000000C0
+:104100000000000000003C00F4DC010000000000A2
+:10411000000000000000000000000000000000009F
+:10412000000000000000000000000000000000008F
+:10413000000000000000000000000000000000007F
+:1041400000000000000000003C0030DD0100000025
+:10415000000000000000000000000000000000005F
+:10416000000000000000000000000000000000004F
+:10417000000000000000000000000000000000003F
+:10418000000000000000000000003C006CDD0100A9
+:10419000000000000000000000000000000000001F
+:1041A000000000000000000000000000000000000F
+:1041B00000000000000000000000000000000000FF
+:1041C0000000000000000000000000003C00A8DD2E
+:1041D00001000000000000000000000000000000DE
+:1041E00000000000000000000000000000000000CF
+:1041F00000000000000000000000000000000000BF
+:1042000000000000000000000000000000003C0072
+:10421000E4DD0100000000000000000000000000DC
+:10422000000000000000000000000000000000008E
+:10423000000000000000000000000000000000007E
+:10424000000000000000000000000000000000006E
+:104250003C0020DE01000000000000000000000023
+:10426000000000000000000000000000000000004E
+:10427000000000000000000000000000000000003E
+:10428000000000000000000000000000000000002E
+:1042900000003C005CDE01000000000000000000A7
+:1042A000000000000000000000000000000000000E
+:1042B00000000000000000000000000000000000FE
+:1042C00000000000000000000000000000000000EE
+:1042D000000000003C0098DE01000000000000002B
+:1042E00000000000000000000000000000000000CE
+:1042F00000000000000000000000000000000000BE
+:1043000000000000000000000000000000000000AD
+:104310000000000000003C00D4DE010000000000AE
+:10432000000000000000000000000000000000008D
+:10433000000000000000000000000000000000007D
+:10434000000000000000000000000000000000006D
+:1043500000000000000000003C0010DF0100000031
+:10436000000000000000000000000000000000004D
+:10437000000000000000000000000000000000003D
+:10438000000000000000000000000000000000002D
+:10439000000000000000000000003C004CDF0100B5
+:1043A000000000000000000000000000000000000D
+:1043B00000000000000000000000000000000000FD
+:1043C00000000000000000000000000000000000ED
+:1043D0000000000000000000000000003C0088DF3A
+:1043E00001000000000000000000000000000000CC
+:1043F00000000000000000000000000000000000BD
+:1044000000000000000000000000000000000000AC
+:1044100000000000000000000000000000003C0060
+:10442000C4DF0100000000000000000000000000E8
+:10443000000000000000000000000000000000007C
+:10444000000000000000000000000000000000006C
+:10445000000000000000000000000000000000005C
+:104460003C0000E00100000000000000000000002F
+:10447000000000000000000000000000000000003C
+:10448000000000000000000000000000000000002C
+:10449000000000000000000000000000000000001C
+:1044A00000003C003CE001000000000000000000B3
+:1044B00000000000000000000000000000000000FC
+:1044C00000000000000000000000000000000000EC
+:1044D00000000000000000000000000000000000DC
+:1044E000000000003C0078E0010000000000000037
+:1044F00000000000000000000000000000000000BC
+:1045000000000000000000000000000000000000AB
+:10451000000000000000000000000000000000009B
+:104520000000000000003C00B4E0010000000000BA
+:10453000000000000000000000000000000000007B
+:10454000000000000000000000000000000000006B
+:10455000000000000000000000000000000000005B
+:1045600000000000000000003C00F0E0010000003E
+:10457000000000000000000000000000000000003B
+:10458000000000000000000000000000000000002B
+:10459000000000000000000000000000000000001B
+:1045A000000000000000000000003C002CE10100C1
+:1045B00000000000000000000000000000000000FB
+:1045C00000000000000000000000000000000000EB
+:1045D00000000000000000000000000000000000DB
+:1045E0000000000000000000000000003C0068E146
+:1045F00001000000000000000000000000000000BA
+:1046000000000000000000000000000000000000AA
+:10461000000000000000000000000000000000009A
+:1046200000000000000000000000000000003C004E
+:10463000A4E10100000000000000000000000000F4
+:10464000000000000000000000000000000000006A
+:10465000000000000000000000000000000000005A
+:10466000000000000000000000000000000000004A
+:104670003C00E0E10100000000000000000000003C
+:10468000000000000000000000000000000000002A
+:10469000000000000000000000000000000000001A
+:1046A000000000000000000000000000000000000A
+:1046B00000003C001CE201000000000000000000BF
+:1046C00000000000000000000000000000000000EA
+:1046D00000000000000000000000000000000000DA
+:1046E00000000000000000000000000000000000CA
+:1046F000000000003C0058E2010000000000000043
+:1047000000000000000000000000000000000000A9
+:104710000000000000000000000000000000000099
+:104720000000000000000000000000000000000089
+:104730000000000000003C0094E2010000000000C6
+:104740000000000000000000000000000000000069
+:104750000000000000000000000000000000000059
+:104760000000000000000000000000000000000049
+:1047700000000000000000003C00D0E2010000004A
+:104780000000000000000000000000000000000029
+:104790000000000000000000000000000000000019
+:1047A0000000000000000000000000000000000009
+:1047B000000000000000000000003C000CE30100CD
+:1047C00000000000000000000000000000000000E9
+:1047D00000000000000000000000000000000000D9
+:1047E00000000000000000000000000000000000C9
+:1047F0000000000000000000000000003C0048E352
+:1048000001000000000000000000000000000000A7
+:104810000000000000000000000000000000000098
+:104820000000000000000000000000000000000088
+:1048300000000000000000000000000000003C003C
+:1048400084E3010000000000000000000000000000
+:104850000000000000000000000000000000000058
+:104860000000000000000000000000000000000048
+:104870000000000000000000000000000000000038
+:104880003C00C0E301000000000000000000000048
+:104890000000000000000000000000000000000018
+:1048A0000000000000000000000000000000000008
+:1048B00000000000000000000000000000000000F8
+:1048C00000003C00FCE301000000000000000000CC
+:1048D00000000000000000000000000000000000D8
+:1048E00000000000000000000000000000000000C8
+:1048F00000000000000000000000000000000000B8
+:10490000000000003C0038E401000000000000004E
+:104910000000000000000000000000000000000097
+:104920000000000000000000000000000000000087
+:104930000000000000000000000000000000000077
+:104940000000000000003C0074E4010000000000D2
+:104950000000000000000000000000000000000057
+:104960000000000000000000000000000000000047
+:104970000000000000000000000000000000000037
+:1049800000000000000000003C00B0E40100000056
+:104990000000000000000000000000000000000017
+:1049A0000000000000000000000000000000000007
+:1049B00000000000000000000000000000000000F7
+:1049C000000000000000000000003C00ECE40100DA
+:1049D00000000000000000000000000000000000D7
+:1049E00000000000000000000000000000000000C7
+:1049F00000000000000000000000000000000000B7
+:104A00000000000000000000000000003C0028E55D
+:104A10000100000000000000000000000000000095
+:104A20000000000000000000000000000000000086
+:104A30000000000000000000000000000000000076
+:104A400000000000000000000000000000003C002A
+:104A500064E501000000000000000000000000000C
+:104A60000000000000000000000000000000000046
+:104A70000000000000000000000000000000000036
+:104A80000000000000000000000000000000000026
+:104A90003C00A0E501000000000000000000000054
+:104AA0000000000000000000000000000000000006
+:104AB00000000000000000000000000000000000F6
+:104AC00000000000000000000000000000000000E6
+:104AD00000003C00DCE501000000000000000000D8
+:104AE00000000000000000000000000000000000C6
+:104AF00000000000000000000000000000000000B6
+:104B000000000000000000000000000000000000A5
+:104B1000000000003C0018E601000000000000005A
+:104B20000000000000000000000000000000000085
+:104B30000000000000000000000000000000000075
+:104B40000000000000000000000000000000000065
+:104B50000000000000003C0054E6010000000000DE
+:104B60000000000000000000000000000000000045
+:104B70000000000000000000000000000000000035
+:104B80000000000000000000000000000000000025
+:104B900000000000000000003C0090E60100000062
+:104BA0000000000000000000000000000000000005
+:104BB00000000000000000000000000000000000F5
+:104BC00000000000000000000000000000000000E5
+:104BD000000000000000000000003C00CCE60100E6
+:104BE00000000000000000000000000000000000C5
+:104BF00000000000000000000000000000000000B5
+:104C000000000000000000000000000000000000A4
+:104C10000000000000000000000000003C0008E769
+:104C20000100000000000000000000000000000083
+:104C30000000000000000000000000000000000074
+:104C40000000000000000000000000000000000064
+:104C500000000000000000000000000000003C0018
+:104C600044E7010000000000000000000000000018
+:104C70000000000000000000000000000000000034
+:104C80000000000000000000000000000000000024
+:104C90000000000000000000000000000000000014
+:104CA0003C0080E701000000000000000000000060
+:104CB00000000000000000000000000000000000F4
+:104CC00000000000000000000000000000000000E4
+:104CD00000000000000000000000000000000000D4
+:104CE00000003C00BCE701000000000000000000E4
+:104CF00000000000000000000000000000000000B4
+:104D000000000000000000000000000000000000A3
+:104D10000000000000000000000000000000000093
+:104D2000000000003C00F8E7010000000000000067
+:104D30000000000000000000000000000000000073
+:104D40000000000000000000000000000000000063
+:104D50000000000000000000000000000000000053
+:104D60000000000000003C0034E8010000000000EA
+:104D70000000000000000000000000000000000033
+:104D80000000000000000000000000000000000023
+:104D90000000000000000000000000000000000013
+:104DA00000000000000000003C0070E8010000006E
+:104DB00000000000000000000000000000000000F3
+:104DC00000000000000000000000000000000000E3
+:104DD00000000000000000000000000000000000D3
+:104DE000000000000000000000003C00ACE80100F2
+:104DF00000000000000000000000000000000000B3
+:104E000000000000000000000000000000000000A2
+:104E10000000000000000000000000000000000092
+:104E20000000000000000000000000003C00E8E876
+:104E30000100000000000000000000000000000071
+:104E40000000000000000000000000000000000062
+:104E50000000000000000000000000000000000052
+:104E600000000000000000000000000000003C0006
+:104E700024E9010000000000000000000000000024
+:104E80000000000000000000000000000000000022
+:104E90000000000000000000000000000000000012
+:104EA0000000000000000000000000000000000002
+:104EB0003C0060E90100000000000000000000006C
+:104EC00000000000000000000000000000000000E2
+:104ED00000000000000000000000000000000000D2
+:104EE00000000000000000000000000000000000C2
+:104EF00000003C009CE901000000000000000000F0
+:104F000000000000000000000000000000000000A1
+:104F10000000000000000000000000000000000091
+:104F20000000000000000000000000000000000081
+:104F3000000000003C00D8E9010000000000000073
+:104F40000000000000000000000000000000000061
+:104F50000000000000000000000000000000000051
+:104F60000000000000000000000000000000000041
+:104F70000000000000003C0014EA010000000000F6
+:104F80000000000000000000000000000000000021
+:104F90000000000000000000000000000000000011
+:104FA0000000000000000000000000000000000001
+:104FB00000000000000000003C0050EA010000007A
+:104FC00000000000000000000000000000000000E1
+:104FD00000000000000000000000000000000000D1
+:104FE00000000000000000000000000000000000C1
+:104FF000000000000000000000003C008CEA0100FE
+:1050000000000000000000000000000000000000A0
+:105010000000000000000000000000000000000090
+:105020000000000000000000000000000000000080
+:105030000000000000000000000000003C00C8EA82
+:10504000010000000000000000000000000000005F
+:105050000000000000000000000000000000000050
+:105060000000000000000000000000000000000040
+:1050700000000000000000000000000000003C00F4
+:1050800004EB010000000000000000000000000030
+:105090000000000000000000000000000000000010
+:1050A0000000000000000000000000000000000000
+:1050B00000000000000000000000000000000000F0
+:1050C0003C0040EB01000000000000000000000078
+:1050D00000000000000000000000000000000000D0
+:1050E00000000000000000000000000000000000C0
+:1050F00000000000000000000000000000000000B0
+:1051000000003C007CEB01000000000000000000FB
+:10511000000000000000000000000000000000008F
+:10512000000000000000000000000000000000007F
+:10513000000000000000000000000000000000006F
+:10514000000000003C00B8EB01000000000000007F
+:10515000000000000000000000000000000000004F
+:10516000000000000000000000000000000000003F
+:10517000000000000000000000000000000000002F
+:105180000000000000003C00F4EB01000000000003
+:10519000000000000000000000000000000000000F
+:1051A00000000000000000000000000000000000FF
+:1051B00000000000000000000000000000000000EF
+:1051C00000000000000000003C0030EC0100000086
+:1051D00000000000000000000000000000000000CF
+:1051E00000000000000000000000000000000000BF
+:1051F00000000000000000000000000000000000AF
+:10520000000000000000000000003C006CEC010009
+:10521000000000000000000000000000000000008E
+:10522000000000000000000000000000000000007E
+:10523000000000000000000000000000000000006E
+:105240000000000000000000000000003C00A8EC8E
+:10525000010000000000000000000000000000004D
+:10526000000000000000000000000000000000003E
+:10527000000000000000000000000000000000002E
+:1052800000000000000000000000000000003C00E2
+:10529000E4EC01000000000000000000000000003D
+:1052A00000000000000000000000000000000000FE
+:1052B00000000000000000000000000000000000EE
+:1052C00000000000000000000000000000000000DE
+:1052D0003C0020ED01000000000000000000000084
+:1052E00000000000000000000000000000000000BE
+:1052F00000000000000000000000000000000000AE
+:10530000000000000000000000000000000000009D
+:1053100000003C005CED0100000000000000000007
+:10532000000000000000000000000000000000007D
+:10533000000000000000000000000000000000006D
+:10534000000000000000000000000000000000005D
+:10535000000000003C0098ED01000000000000008B
+:10536000000000000000000000000000000000003D
+:10537000000000000000000000000000000000002D
+:10538000000000000000000000000000000000001D
+:105390000000000000003C00D4ED0100000000000F
+:1053A00000000000000000000000000000000000FD
+:1053B00000000000000000000000000000000000ED
+:1053C00000000000000000000000000000000000DD
+:1053D00000000000000000003C0010EE0100000092
+:1053E00000000000000000000000000000000000BD
+:1053F00000000000000000000000000000000000AD
+:10540000000000000000000000000000000000009C
+:10541000000000000000000000003C004CEE010015
+:10542000000000000000000000000000000000007C
+:10543000000000000000000000000000000000006C
+:10544000000000000000000000000000000000005C
+:105450000000000000000000000000003C0088EE9A
+:10546000010000000000000000000000000000003B
+:10547000000000000000000000000000000000002C
+:10548000000000000000000000000000000000001C
+:1054900000000000000000000000000000003C00D0
+:1054A000C4EE010000000000000000000000000049
+:1054B00000000000000000000000000000000000EC
+:1054C00000000000000000000000000000000000DC
+:1054D00000000000000000000000000000000000CC
+:1054E0003C0000EF01000000000000000000000090
+:1054F00000000000000000000000000000000000AC
+:10550000000000000000000000000000000000009B
+:10551000000000000000000000000000000000008B
+:1055200000003C003CEF0100000000000000000013
+:10553000000000000000000000000000000000006B
+:10554000000000000000000000000000000000005B
+:10555000000000000000000000000000000000004B
+:10556000000000003C0078EF010000000000000097
+:10557000000000000000000000000000000000002B
+:10558000000000000000000000000000000000001B
+:10559000000000000000000000000000000000000B
+:1055A0000000000000003C00B4EF0100000000001B
+:1055B00000000000000000000000000000000000EB
+:1055C00000000000000000000000000000000000DB
+:1055D00000000000000000000000000000000000CB
+:1055E00000000000000000003C00F0EF010000009F
+:1055F00000000000000000000000000000000000AB
+:10560000000000000000000000000000000000009A
+:10561000000000000000000000000000000000008A
+:10562000000000000000000000003C002CF0010021
+:10563000000000000000000000000000000000006A
+:10564000000000000000000000000000000000005A
+:10565000000000000000000000000000000000004A
+:105660000000000000000000000000003C0068F0A6
+:105670000100000000000000000000000000000029
+:10568000000000000000000000000000000000001A
+:10569000000000000000000000000000000000000A
+:1056A00000000000000000000000000000003C00BE
+:1056B000A4F0010000000000000000000000000055
+:1056C00000000000000000000000000000000000DA
+:1056D00000000000000000000000000000000000CA
+:1056E00000000000000000000000000000000000BA
+:1056F0003C00E0F00100000000000000000000009D
+:105700000000000000000000000000000000000099
+:105710000000000000000000000000000000000089
+:105720000000000000000000000000000000000079
+:1057300000003C001CF1010000000000000000001F
+:105740000000000000000000000000000000000059
+:105750000000000000000000000000000000000049
+:105760000000000000000000000000000000000039
+:10577000000000003C0058F10100000000000000A3
+:105780000000000000000000000000000000000019
+:105790000000000000000000000000000000000009
+:1057A00000000000000000000000000000000000F9
+:1057B0000000000000003C0094F101000000000027
+:1057C00000000000000000000000000000000000D9
+:1057D00000000000000000000000000000000000C9
+:1057E00000000000000000000000000000000000B9
+:1057F00000000000000000003C00D0F101000000AB
+:105800000000000000000000000000000000000098
+:105810000000000000000000000000000000000088
+:105820000000000000000000000000000000000078
+:10583000000000000000000000003C000CF201002D
+:105840000000000000000000000000000000000058
+:105850000000000000000000000000000000000048
+:105860000000000000000000000000000000000038
+:105870000000000000000000000000003C0048F2B2
+:105880000100000000000000000000000000000017
+:105890000000000000000000000000000000000008
+:1058A00000000000000000000000000000000000F8
+:1058B00000000000000000000000000000003C00AC
+:1058C00084F2010000000000000000000000000061
+:1058D00000000000000000000000000000000000C8
+:1058E00000000000000000000000000000000000B8
+:1058F00000000000000000000000000000000000A8
+:105900003C00C0F2010000000000000000000000A8
+:105910000000000000000000000000000000000087
+:105920000000000000000000000000000000000077
+:105930000000000000000000000000000000000067
+:1059400000003C00FCF2010000000000000000002C
+:105950000000000000000000000000000000000047
+:105960000000000000000000000000000000000037
+:105970000000000000000000000000000000000027
+:10598000000000003C0038F30100000000000000AF
+:105990000000000000000000000000000000000007
+:1059A00000000000000000000000000000000000F7
+:1059B00000000000000000000000000000000000E7
+:1059C0000000000000003C0074F301000000000033
+:1059D00000000000000000000000000000000000C7
+:1059E00000000000000000000000000000000000B7
+:1059F00000000000000000000000000000000000A7
+:105A000000000000000000003C00B0F301000000B6
+:105A10000000000000000000000000000000000086
+:105A20000000000000000000000000000000000076
+:105A30000000000000000000000000000000000066
+:105A4000000000000000000000003C00ECF301003A
+:105A50000000000000000000000000000000000046
+:105A60000000000000000000000000000000000036
+:105A70000000000000000000000000000000000026
+:105A80000000000000000000000000003C0028F4BE
+:105A90000100000000000000000000000000000005
+:105AA00000000000000000000000000000000000F6
+:105AB00000000000000000000000000000000000E6
+:105AC00000000000000000000000000000003C009A
+:105AD00064F401000000000000000000000000006D
+:105AE00000000000000000000000000000000000B6
+:105AF00000000000000000000000000000000000A6
+:105B00000000000000000000000000000000000095
+:105B10003C00A0F4010000000000000000000000B4
+:105B20000000000000000000000000000000000075
+:105B30000000000000000000000000000000000065
+:105B40000000000000000000000000000000000055
+:105B500000003C00DCF40100000000000000000038
+:105B60000000000000000000000000000000000035
+:105B70000000000000000000000000000000000025
+:105B80000000000000000000000000000000000015
+:105B9000000000003C0018F50100000000000000BB
+:105BA00000000000000000000000000000000000F5
+:105BB00000000000000000000000000000000000E5
+:105BC00000000000000000000000000000000000D5
+:105BD0000000000000003C0054F50100000000003F
+:105BE00000000000000000000000000000000000B5
+:105BF00000000000000000000000000000000000A5
+:105C00000000000000000000000000000000000094
+:105C100000000000000000003C0090F501000000C2
+:105C20000000000000000000000000000000000074
+:105C30000000000000000000000000000000000064
+:105C40000000000000000000000000000000000054
+:105C5000000000000000000000003C00CCF5010046
+:105C60000000000000000000000000000000000034
+:105C70000000000000000000000000000000000024
+:105C80000000000000000000000000000000000014
+:105C90000000000000000000000000003C0008F6CA
+:105CA00001000000000000000000000000000000F3
+:105CB00000000000000000000000000000000000E4
+:105CC00000000000000000000000000000000000D4
+:105CD00000000000000000000000000000003C0088
+:105CE00044F6010000000000000000000000000079
+:105CF00000000000000000000000000000000000A4
+:105D00000000000000000000000000000000000093
+:105D10000000000000000000000000000000000083
+:105D20003C0080F6010000000000000000000000C0
+:105D30000000000000000000000000000000000063
+:105D40000000000000000000000000000000000053
+:105D50000000000000000000000000000000000043
+:105D600000003C00BCF60100000000000000000044
+:105D70000000000000000000000000000000000023
+:105D80000000000000000000000000000000000013
+:105D90000000000000000000000000000000000003
+:105DA000000000003C00F8F60100000000000000C8
+:105DB00000000000000000000000000000000000E3
+:105DC00000000000000000000000000000000000D3
+:105DD00000000000000000000000000000000000C3
+:105DE0000000000000003C0034F70100000000004B
+:105DF00000000000000000000000000000000000A3
+:105E00000000000000000000000000000000000092
+:105E10000000000000000000000000000000000082
+:105E200000000000000000003C0070F701000000CE
+:105E30000000000000000000000000000000000062
+:105E40000000000000000000000000000000000052
+:105E50000000000000000000000000000000000042
+:105E6000000000000000000000003C00ACF7010052
+:105E70000000000000000000000000000000000022
+:105E80000000000000000000000000000000000012
+:105E90000000000000000000000000000000000002
+:105EA0000000000000000000000000003C00E8F7D7
+:105EB00001000000000000000000000000000000E1
+:105EC00000000000000000000000000000000000D2
+:105ED00000000000000000000000000000000000C2
+:105EE00000000000000000000000000000003C0076
+:105EF00024F8010000000000000000000000000085
+:105F00000000000000000000000000000000000091
+:105F10000000000000000000000000000000000081
+:105F20000000000000000000000000000000000071
+:105F30003C0060F8010000000000000000000000CC
+:105F40000000000000000000000000000000000051
+:105F50000000000000000000000000000000000041
+:105F60000000000000000000000000000000000031
+:105F700000003C009CF80100000000000000000050
+:105F80000000000000000000000000000000000011
+:105F90000000000000000000000000000000000001
+:105FA00000000000000000000000000000000000F1
+:105FB000000000003C00D8F80100000000000000D4
+:105FC00000000000000000000000000000000000D1
+:105FD00000000000000000000000000000000000C1
+:105FE00000000000000000000000000000000000B1
+:105FF0000000000000003C0014F901000000000057
+:106000000000000000000000000000000000000090
+:106010000000000000000000000000000000000080
+:106020000000000000000000000000000000000070
+:1060300000000000000000003C0050F901000000DA
+:106040000000000000000000000000000000000050
+:106050000000000000000000000000000000000040
+:106060000000000000000000000000000000000030
+:10607000000000000000000000003C008CF901005E
+:106080000000000000000000000000000000000010
+:106090000000000000000000000000000000000000
+:1060A00000000000000000000000000000000000F0
+:1060B0000000000000000000000000003C00C8F9E3
+:1060C00001000000000000000000000000000000CF
+:1060D00000000000000000000000000000000000C0
+:1060E00000000000000000000000000000000000B0
+:1060F00000000000000000000000000000003C0064
+:1061000004FA010000000000000000000000000090
+:10611000000000000000000000000000000000007F
+:10612000000000000000000000000000000000006F
+:10613000000000000000000000000000000000005F
+:106140003C0040FA010000000000000000000000D8
+:10615000000000000000000000000000000000003F
+:10616000000000000000000000000000000000002F
+:10617000000000000000000000000000000000001F
+:1061800000003C007CFA010000000000000000005C
+:1061900000000000000000000000000000000000FF
+:1061A00000000000000000000000000000000000EF
+:1061B00000000000000000000000000000000000DF
+:1061C000000000003C00B8FA0100000000000000E0
+:1061D00000000000000000000000000000000000BF
+:1061E00000000000000000000000000000000000AF
+:1061F000000000000000000000000000000000009F
+:106200000000000000003C00F4FA01000000000063
+:10621000000000000000000000000000000000007E
+:10622000000000000000000000000000000000006E
+:10623000000000000000000000000000000000005E
+:1062400000000000000000003C0030FB01000000E6
+:10625000000000000000000000000000000000003E
+:10626000000000000000000000000000000000002E
+:10627000000000000000000000000000000000001E
+:10628000000000000000000000003C006CFB01006A
+:1062900000000000000000000000000000000000FE
+:1062A00000000000000000000000000000000000EE
+:1062B00000000000000000000000000000000000DE
+:1062C0000000000000000000000000003C00A8FBEF
+:1062D00001000000000000000000000000000000BD
+:1062E00000000000000000000000000000000000AE
+:1062F000000000000000000000000000000000009E
+:1063000000000000000000000000000000003C0051
+:10631000E4FB01000000000000000000000000009D
+:10632000000000000000000000000000000000006D
+:10633000000000000000000000000000000000005D
+:10634000000000000000000000000000000000004D
+:106350003C0020FC010000000000000000000000E4
+:10636000000000000000000000000000000000002D
+:10637000000000000000000000000000000000001D
+:10638000000000000000000000000000000000000D
+:1063900000003C005CFC0100000000000000000068
+:1063A00000000000000000000000000000000000ED
+:1063B00000000000000000000000000000000000DD
+:1063C00000000000000000000000000000000000CD
+:1063D000000000003C0098FC0100000000000000EC
+:1063E00000000000000000000000000000000000AD
+:1063F000000000000000000000000000000000009D
+:10640000000000000000000000000000000000008C
+:106410000000000000003C00D4FC0100000000006F
+:10642000000000000000000000000000000000006C
+:10643000000000000000000000000000000000005C
+:10644000000000000000000000000000000000004C
+:1064500000000000000000003C0010FD01000000F2
+:10646000000000000000000000000000000000002C
+:10647000000000000000000000000000000000001C
+:10648000000000000000000000000000000000000C
+:10649000000000000000000000003C004CFD010076
+:1064A00000000000000000000000000000000000EC
+:1064B00000000000000000000000000000000000DC
+:1064C00000000000000000000000000000000000CC
+:1064D0000000000000000000000000003C0088FDFB
+:1064E00001000000000000000000000000000000AB
+:1064F000000000000000000000000000000000009C
+:10650000000000000000000000000000000000008B
+:1065100000000000000000000000000000003C003F
+:10652000C4FD0100000000000000000000000000A9
+:10653000000000000000000000000000000000005B
+:10654000000000000000000000000000000000004B
+:10655000000000000000000000000000000000003B
+:106560003C0000FE010000000000000000000000F0
+:10657000000000000000000000000000000000001B
+:10658000000000000000000000000000000000000B
+:1065900000000000000000000000000000000000FB
+:1065A00000003C003CFE0100000000000000000074
+:1065B00000000000000000000000000000000000DB
+:1065C00000000000000000000000000000000000CB
+:1065D00000000000000000000000000000000000BB
+:1065E000000000003C0078FE0100000000000000F8
+:1065F000000000000000000000000000000000009B
+:10660000000000000000000000000000000000008A
+:10661000000000000000000000000000000000007A
+:106620000000000000003C00B4FE0100000000007B
+:10663000000000000000000000000000000000005A
+:10664000000000000000000000000000000000004A
+:10665000000000000000000000000000000000003A
+:1066600000000000000000003C00F0FE01000000FF
+:10667000000000000000000000000000000000001A
+:10668000000000000000000000000000000000000A
+:1066900000000000000000000000000000000000FA
+:1066A000000000000000000000003C002CFF010082
+:1066B00000000000000000000000000000000000DA
+:1066C00000000000000000000000000000000000CA
+:1066D00000000000000000000000000000000000BA
+:1066E0000000000000000000000000000C0068FF37
+:1066F00001000000000000000000000000003C005D
+:106700000010040070B52B4806218175C175017E0B
+:10671000490849000176017E02229143017626490B
+:106720000B785B085B000B7004238B700C234376A3
+:10673000202303751A244475242484761024C476F7
+:106740003C003C1004002A254D70057A3026B543E4
+:1067500020350572857A6D086D008572857A9543BE
+:106760008572857A042635438572857A08263543F5
+:106770008572857AA5438572057B2C430473047B5F
+:106780001C433C00781004000473047B40252C4318
+:106790000473847A23438372837AAB438372037BCB
+:1067A00080242343037308789043087008780122FB
+:1067B00010430870087804229043087070BD0000F0
+:1067C0000C8007003C00B4100400808007000149E1
+:1067D00004204873704740800700034980B50020BB
+:1067E000088000F00AFB80BD0000FC6B01007047D0
+:1067F000000080B500F067FB80BD80B50A49182015
+:10680000C1F73BFA09493C00F01004000220C1F72F
+:1068100037FA08491F20C1F733FA07491C20C1F78E
+:106820002FFA06490320C1F72BFA80BD992A0000F0
+:1068300041250000552500005D2500003925000098
+:1068400080B5BFF791FD80BD3C002C11040080B5E0
+:10685000054A05490A20BFF74EFF0120044980027E
+:106860000860486080BDB4740100B164000000108D
+:10687000070080B500F091FE80BD80B5054A05494E
+:106880001B20BFF738FF012004493C0068110400B9
+:10689000C0060860486080BDB87401002D6E00001D
+:1068A0000010070080B5044800F080FE0349002076
+:1068B0004860886080BD0000414B0000BC7401004E
+:1068C00080B5C5F7D5FECEF7D9F803493C00A41131
+:1068D0000400086003490A20D1F7EFF880BDBC74BA
+:1068E0000100496E000080B5012220210620C8F772
+:1068F00056FCBFF770FE03490020086020210248C3
+:10690000BFF763F980BDCC5C0100646D01003C0001
+:10691000E0110400084880B50068002805D006484A
+:106920005430426A0021BFF7F3F8044A04490320B7
+:10693000BFF7ACFD80BD0000506D010089980000DC
+:106940009198000080B500F003F800F019F880BDC0
+:106950003C001C12040010B5094C6021201CBFF73C
+:106960003AF90020C043A0602060FF200230E0849C
+:106970002022201C40300249BFF75BF910BD0010F7
+:1069800007007052010000200A49C0438860094B8B
+:106990000A493C0058120400002082000130000621
+:1069A000000E20289950F8D30649044A081C1030DC
+:1069B000083A03C27047000000100700E07E0100A3
+:1069C0007575000000A00700044800210022002384
+:1069D0000EC00C383C009412040001214160704745
+:1069E0000000707801007047000003480021002279
+:1069F00000230EC008C070470000885A01000449F7
+:106A000080B500204861024840211C30BFF7E9F8FA
+:106A100080BDFC5A01003C00D012040080B5CEF7C6
+:106A20003FF80349886103490320D1F755F880BD39
+:106A3000FC5A01000D17010080B5C0F7A5F980BD13
+:106A4000FEB56C4900200090C8786B4C6B4F430733
+:106A5000C006C017DB0EE3583C000C1304000130E5
+:106A600038623B61081C8078664E03224107A036DD
+:106A70000296490F3172890061583C1C6161019195
+:106A8000C006C00F7862201C002787610020211CEF
+:106A9000C86159485949007809793C0048130400F5
+:106AA0005A4C4E07760F711C8C46B1008E465649E3
+:106AB0008031002824D0524F01287F781AD0022834
+:106AC00071D14F48002F0CD0012F6CD140794D4D22
+:106AD0004007400F8200AA584B4D01303C00841300
+:106AE0000400EA61A07304224B48484DC8614A483B
+:106AF000002F00D04A482F1C11E04248002F55D1EA
+:106B00000770022747703F484078002810D00128BE
+:106B100001D002284AD13F483D4FC8613F483C0060
+:106B2000C013040088613A4970460858351CB861A2
+:106B30006046607304E03C48022288613B48C861BB
+:106B40000020324906E00E18B6787607760F042E3C
+:106B50002FD801309042F6D3C8792E4FC007C00F0E
+:106B60003C00FC130400F86033484168194341605D
+:106B7000816819438160019AB9698C461143FA69A9
+:106B8000866811438E4386604668314341600199AF
+:106B90000B43181C614608431043011C00220220CD
+:106BA000C7F73C003814040003FA1E4E403E7078CC
+:106BB000C008C00028437070701C017800E029E014
+:106BC0000825A94301700120C043B08000210120A5
+:106BD000CFF76CFC301C8030817809090901817085
+:106BE0000F2101703C0074140400164A69041160FE
+:106BF0005160029E1021327A7B6A002B00D1002165
+:106C000011432173817829438170E0780121084381
+:106C1000E070D2F7F2F9012000900098FEBDC05755
+:106C200001006C4301003C00B0140400A46C01009E
+:106C300040900700C91D0000811D0000A51D000037
+:106C4000991D0000F11D0000100007000010070052
+:106C50000349002088620870487008710862704714
+:106C6000AC7E010080B501213C00EC140400002042
+:106C7000CDF769FF80BDB0B50F48C0F718FC0E4DC9
+:106C8000032028700D490D480C3948600D480A4C06
+:106C9000886040211834201CBEF7C1FFFF216868BE
+:106CA000090608432060FF2106223C002815040045
+:106CB000201DBFF779F80120E060B0BDC0A8130A1D
+:106CC000206E0100C0A81301FFFFFF0080B502493C
+:106CD0000120C8F745FF80BD9D1C000098B50C4CF5
+:106CE00000206060E0600B4B0B4982003C006415A3
+:106CF0000400013020289950FADB6A460949052032
+:106D0000BFF72FFD0020C043206006492020086007
+:106D1000486098BD00000040070030740100A9756C
+:106D20000000B59F000000100700054900203C004E
+:106D3000A0150400086005488178282291438170DD
+:106D40008178114381707047786E01000000070060
+:106D500070470000414810B50068022188433F4950
+:106D60000860081C0068022108433C4908603C4850
+:106D70003C00DC1504004068802188433A494860A3
+:106D8000081C006880210843374908603748017AA9
+:106D9000012421430172017A022211430172017A16
+:106DA000042291430172017A082211430172017B8E
+:106DB00021433C00181604000173017B0222114399
+:106DC0000173017B042211430173017B08221143EB
+:106DD00001732E214173817B3822914328318173C5
+:106DE00020214174817BC908C900033181732221AC
+:106DF000C17320493C0054160400097A41721E49AF
+:106E0000497A01743C220277011C10314A735023E5
+:106E10008B735A23CB730D23011C20310B70174B3E
+:106E200043840E234B7000214182302101700521E3
+:106E30004170042141713C00901604008471C471BA
+:106E40000C210171F82141800F49CA728A72032214
+:106E50000A7209224A7208220A73027A40231A43EC
+:106E600002724C73FFF7A2FC0848017821430170BD
+:106E700010BD0000F00007003C00CC160400F40038
+:106E800007000C800700764601002409000080807E
+:106E90000700A080070080B518210948BEF7D7FE7B
+:106EA000084800213C3841608160C1600161416156
+:106EB000816101210162FFF75CFF3C0008170400BB
+:106EC000C0F76CFF80BD0000247E0100B0B52148F2
+:106ED000006840081F4940000860081C0068012144
+:106EE00008431C4908601C4A1079012108431071AD
+:106EF000107902218843107100F06CF83C004417AF
+:106F00000400107A012108431072107AFE21884390
+:106F10000A301072282090725A20D072114D14201D
+:106F200028772C1C1034A0731620A8751820E8753B
+:106F3000FFF7A1FC0C486886E07B4006400E3C0051
+:106F4000801704000E210843E073E07B8021084392
+:106F5000E07307484179042211434171B0BD00003C
+:106F6000F00007000080070030800700FF010000EC
+:106F70005000070080B5FFF7AFFF00201449C04361
+:106F80003C00BC1704008860C1F70BF913490020CE
+:106F90004862C860486108618861C8610F4B086237
+:106FA0000F4A086338331A8001225A710B4A403263
+:106FB000D0601360082313815060094A8A62FF225F
+:106FC0000A703C00F81704004870054800210022B0
+:106FD000503000230EC0C1F7FFF880BD003007001D
+:106FE000046C0100BEBA0000857500000348102142
+:106FF00081710221C1713021417270470080070008
+:10700000704700003C003418040000B5C1F7DBFBFA
+:1070100000BD7047000080B5CDF787FD014988604D
+:1070200080BD50D9010080B506210548BEF7FDFDA1
+:10703000044900200439086000F067F800F003F804
+:1070400080BDEC6701003C007018040010B5074CCF
+:107050002C21201CBEF710FE0120207003490020C7
+:107060001C39C8600861886110BD000078690100A2
+:1070700080B5CDF75DFD0949886009490820D0F742
+:1070800073FD08490920D0F73C00AC1804006FFDDF
+:1070900007491120D0F76BFD0648C2F774F980BD8F
+:1070A00000007869010021350000A1380000453456
+:1070B0000000BD26010080B586B00F48C4F745F931
+:1070C00000F045F8FFF7D7FFFFF73C00E818040091
+:1070D000ABFF0C490320D0F74DFD0B4869460090EB
+:1070E0000020019009480490094802900948039043
+:1070F000094805900020C4F7CFF806B080BD000015
+:10710000F467010045350000953200003C00241969
+:107110000400A07D0100FD320000CD310000457D5E
+:10712000010010B5CDF7D5FC0948094C302160614C
+:1071300008487430BEF7A9FD0020A062064920610E
+:10714000E1636064A06414212165606210BD3C00AD
+:1071500060190400B9750000447D0100701700003B
+:1071600080B502210920044AD1F7E8FECDF7ECFCF6
+:107170000249086380BD000039390000447D0100E8
+:1071800080B5AC210348BEF783FD00F051F800F054
+:107190003C009C19040049F880BDA46C010008B5AE
+:1071A00000F04DF800F045F800211620184AD1F7FC
+:1071B000C8FE174A0421101C403001700021817064
+:1071C0001121C18014490181101C8030C17808222E
+:1071D00091433C00D8190400C170C1781143C170BB
+:1071E0006A460F491420BFF7F5FA0E490720D0F779
+:1071F000CDFC0D490F20D0F7C9FCCDF7ABFC0B49F6
+:1072000008600A4844388068002802D00020C6F789
+:107210006FF908BD3C00141A0400B53B0000009053
+:107220000700E7FD00008D410000CD480000D9496E
+:107230000000A46C010080B500F06FFC80BD7047B9
+:10724000000080B500F061FC80BD70470000B0B563
+:1072500030210C48BEF73C00501A040025FD0B4CB1
+:1072600000250A48843C3822032170386560BEF747
+:10727000DDFD0648382201213838BEF7D7FD0E2043
+:10728000A5606070207000F01DF8B0BD946701002B
+:10729000044900B5012048603C008C1A0400886055
+:1072A000C860C3F7F8FF00BD0000D467010080B5D7
+:1072B00002210A20024AD1F750FE80BD00001D5A6B
+:1072C000000080B500F005F880BD80B500F0FDFB42
+:1072D00080BD80B502490420D0F73C00C81A0400E4
+:1072E00061FC80BD651F000000211748C94380B5BF
+:1072F000164B0170181C102220300271002210332E
+:107300009A73427904231A434271427918239A43AB
+:1073100008324271081CD7F759F800283C00041BBA
+:10732000040003D101219A20BFF7CBFB502009496B
+:1073300050220A60C8608860486008610120486186
+:107340000020D7F7D8F80449FF20086080BDF46B0F
+:1073500001003000070004020700F47401003C0043
+:10736000401B040080B5D7F7FBF880BD10B5FFF7D0
+:10737000ABFBBFF7DDFB8148CDF798FA0024231C57
+:1073800004220421002001F039FA002801D0BFF7BF
+:10739000C9FB231C0022FF21002001F02FFA002846
+:1073A0003C007C1B040001D0BFF7BFFB231C002264
+:1073B000FF21002001F025FA002801D0BFF7B5FB1E
+:1073C000C4F727FF704884706F497F2088706E492A
+:1073D0000C60032008606B4844706C480480694866
+:1073E000C0783C00B81B0400082108436749C870F6
+:1073F000081CC078042108436449C87001F07EFA73
+:10740000FFF77EFFFFF72CFE01F046FBFFF718FBAE
+:1074100001F052FAFFF782FB5F48C16810229143E6
+:10742000C16001693C00F41B04005D4A1143016125
+:107430000169D20A91430161C1685A4A1143C1608E
+:10744000816A594A1143816200F077F901F01FF80F
+:1074500000F093FA01F099FB00F0F1FF00F099FCC5
+:1074600000F0DDFC00F03C00301C040083FCFFF762
+:10747000B3FC01F031FA01F071FAFFF787FAFFF778
+:107480009BFA012101204B4AD1F77CFD012102200A
+:10749000494AD1F777FD02210320484AD1F772FD0E
+:1074A00002210420464AD1F73C006C1C04006DFD0B
+:1074B00002210520454AD1F768FD02210620434AF2
+:1074C000D1F763FD01210720424AD1F75EFD022179
+:1074D0001720404AD1F759FD022108203F4AD1F731
+:1074E00054FDFFF7C8FD3D4804603C00A81C0400A3
+:1074F0004460FFF717FAFFF709FAFFF74FFC00F0B7
+:1075000043F9FFF733FAFFF7FBFA01F085F801F0D2
+:10751000EBF901F023FA01F071F900F0E3FFFFF756
+:107520006FFA00F0AFF900F0BDF900F03C00E41C88
+:107530000400ADFC00F09BFEFFF7CDFAFFF7ABFEB9
+:1075400000F0C3F9FFF7ABFD00F08DFF00F021FF65
+:1075500000F065F900F097F900F0FDFE00F0E5FE9F
+:1075600000F03FF900F073F9FFF737FE00F03C0040
+:10757000201D040021F900F073FBFFF7E5FB00F08C
+:10758000D3FBFFF7A9FE00F0BBFB00F009FF00F002
+:10759000DBF91848C9F756F81748C9F72BF8002245
+:1075A0000121F020D1F72EFD002010BDA9690000B7
+:1075B0003C005C1D040000000700F00007002C00E8
+:1075C0000700001007003C000800C03F7438FCDFD3
+:1075D0007F3855690000E5130000610C00006D0C58
+:1075E00000003D0C0000F10D0000C53300003D0F10
+:1075F00000003C00981D0400ADD80000800007008A
+:10760000505701000440010080B501F0A9F900F0D5
+:10761000C9F8FFF7C5FE01F003FB01F093FAFFF78D
+:10762000CBF92C48FFF7E8F900F0AAF800F058FF72
+:10763000FFF734FD3C00D41D0400FFF7F2FBFFF719
+:107640007AFAFFF700FA00F034F900F03CF901F0A3
+:10765000E2F8FFF77AF9FFF772F9FFF79AF901F00C
+:1076600066F901F08EF901F0E0F800F006FF00F095
+:10767000F0FB00F046FB3C00101E040000F0BCFFD5
+:1076800000F0E4FC00F020FEFFF740FAFFF746FEB2
+:10769000FFF756FD00F02CF900F0FAFE00F08AFE2C
+:1076A00000F0D4F800F0B4F800F078FE00F04EFEE0
+:1076B00000F0DEF8FFF7ACFD3C004C1E040000F0CB
+:1076C0008CF800F0F8FAFFF776FBFFF720FE01F0E8
+:1076D000A6FA00F048FB00F07CFE00F05CF9BEF773
+:1076E00057FD002080BD803801000149002008605E
+:1076F0007047A87E010010B5041C3C00881E0400E1
+:1077000001D1BFF739FA0F487D21C900846001809B
+:107710000D490161802141800021C16001620B4857
+:1077200041801421818007214181064A4623043289
+:107730000524137054700A21917081763C00C41E98
+:1077400004000376048110BD0000C87401000087A6
+:10775000930330000700094880B50169426911436D
+:107760008269C0691143014300220320C6F7BFFCB0
+:10777000CCF71BFA0020C2F792F980BD00003C0054
+:10778000001F0400A46C0100054880B50021816041
+:107790000221C16003394160C7F73AFF80BD000094
+:1077A0004020070008B56A4604491520BFF754F881
+:1077B0000120034940050860486008BDA52101007B
+:1077C0003C003C1F04000010070070470000064802
+:1077D00080B58068C001800F05D10322C143C6F780
+:1077E000BAFCD6F700FE80BD00001000070070470D
+:1077F000000080B502212A20064AD1F7EAFB0022C8
+:1078000007203C00781F04000449BEF7EDFE044841
+:10781000C7F758FC80BD00008D890000D59B000093
+:107820001046010002480021002200230EC07047CC
+:10783000806E010080B502212C20064AD1F7CCFBD6
+:10784000002200203C00B41F04000449BEF7CFFE14
+:1078500004490220C8F70BFA80BD058A0000E99BA5
+:107860000000B18B000002480021002200230EC05E
+:1078700070471075010080B502212B20044AD1F712
+:10788000AEFB002202203C00F01F04000249BEF7BC
+:10789000B1FE80BD2D8A00008D8C00007047000075
+:1078A00080B502212D20074AD1F79CFB0022012040
+:1078B0000549BEF79FFE0548CBF756FA0448CCF7BA
+:1078C000F7F880BDAD8A00003C002C20040021E2C6
+:1078D0000000F9DF00002044010070470000024969
+:1078E00000200860012048607047AC79010080B535
+:1078F00002490D20D0F79BF980BD619800007047C8
+:10790000000080B5CDF777F903493C0068200400FA
+:107910000860011C0248CDF797F980BDA8790100E5
+:10792000C460010080B500F029F880BD80B586B044
+:107930000C48C3F76DFDD6F7D3FB0B480D490090FB
+:107940000A48049101900A48694602903C00A4202C
+:1079500004000020039005900120C3F700FD0749B3
+:107960000320D0F76AF906B080BD20F70100118727
+:107970000100958701005587010098D901006D87A6
+:10798000010080B50120D6F790FC034900203C009F
+:10799000E02004000860486002481439486080BD57
+:1079A00090D901003D82010070B50026094C094DB7
+:1079B0002660666044215035281CA661BEF7C8F9D0
+:1079C0001420E060E8632820E861A06028642E703D
+:1079D0003C001C21040070BD0000A46E010080B5B5
+:1079E00002211820044AD1F70CFB03490820D0F7E4
+:1079F0002AF980BD0000159C0000699C0000FEB5BE
+:107A0000264D2878C0070CD425490020087028701E
+:107A100024483C00582104008178490849008170BD
+:107A200081780122114381700024FF261F4F013607
+:107A3000211C01A8C6F732F800AB187901281FD025
+:107A4000022819D003281ED1B8680021B043B860BD
+:107A5000786830433C009421040078603A683240F2
+:107A6000A02005E03B683340934201D0012101E0B2
+:107A70000138F7D27868B0437860002903D001A8B4
+:107A800000F027FF02E001A800F045FF01342406C2
+:107A90002416062CCFDB3C00D0210400044902222E
+:107AA0000878104308702870FEBD0000040007002D
+:107AB000E06001000000070010000700B0B50020E2
+:107AC00015231449012542008D54521801300E2807
+:107AD0005370F8D30F481C223C000C2204001C38C1
+:107AE000BEF773F90D480E212A38BEF71CF90B4971
+:107AF000002008600B4C2A21201CBEF714F92570C9
+:107B00000E2060701720A070074853210170452196
+:107B1000417020218170B0BD00003C00482204006B
+:107B2000E6780100E4620100EB620100E862010016
+:107B30000C490D48002241600C4981600C49C1602C
+:107B40000C4901610C4941610C498261C1610C49D8
+:107B500001620C4941620C4981620C493C0084225B
+:107B60000400C162C26370470000C9750000287A32
+:107B70000100C17500008175000099750000CD7588
+:107B800000008975000091750000B57500008D75C5
+:107B90000000C5750000B0B50E480E4908603C00F5
+:107BA000C02204000831C0F743FE0C49002548609C
+:107BB0000B480A4C05600B48803C05601020207182
+:107BC000E070A07160712720C043C3F7F7FB282045
+:107BD000C3F7FCFB2572B0BDFF3F00002C7D010008
+:107BE0003C00FC2204001C6701002067010080B5F6
+:107BF0002C210148BEF7C7F880BD3C7E010080B54E
+:107C000038210148BEF7BFF880BD687E010080B50D
+:107C100002210E20024AD1F70CFA80BD000021E0BB
+:107C200000003C003823040070470000F0B585B028
+:107C3000002700AB2F4E1F8100250024281CD6F7FB
+:107C4000A1FB022D03D1D6F7F5FA00280CD00124B0
+:107C5000012D03D1072000AB187101E000AB1F71AB
+:107C600000AB18793C0074230400D6F708FC002C04
+:107C700039D0082103A8D6F7F2FA00AB187BFE280A
+:107C800031D1587B01282AD1022102A8D6F7E7FA80
+:107C900000AB1889002826D018891849884222D0BC
+:107CA00019890020BFF73C00B023040013F9041C1D
+:107CB000006900AB1989D6F7D5FA206800AB1A899C
+:107CC000011C0831083ACBF7A1F9002806D0022898
+:107CD00004D0022194203760BEF762FF201CBFF75A
+:107CE000C7F8D4E7012194203C00EC230400BEF740
+:107CF0005AFFD5F726FF01352D062D0E042DA5D3ED
+:107D000005B0F0BD000058570100FFFF00000A4811
+:107D10000021021C183280B5094B02E0016083800B
+:107D200008308242FAD104486C213C002824040027
+:107D30006C38BEF737F804490220C7F7D1FF80BD81
+:107D40007C790100FC0500009D75000080B50221D2
+:107D500026200D4AD1F77CF90C48C8F773FF0C4870
+:107D6000C8F776FF0B491020CFF794FF3C0064243E
+:107D700004000A490C20CFF790FF09490020C7F7FB
+:107D8000B2FFCCF76EFF0749086080BD00009DA6DA
+:107D90000000A9A4000081A4000031A70000B96D73
+:107DA0000000BDA600000C790100024908783C00E3
+:107DB000A0240400400840000870704758000700E5
+:107DC0000021084880B541618161017041704160C6
+:107DD00081601422C26001614262C161FFF704F850
+:107DE00080BD00001C75010080B502211D20044AE1
+:107DF0003C00DC240400D1F734F903490820CFF714
+:107E000052FF80BD000011E3000009E4000080B5CE
+:107E1000012125200A4AD1F724F9CCF728FF084987
+:107E2000086208490120CFF73EFF07490220CFF73B
+:107E30003AFF3C0018250400FEF7E6FF0548C1F7AD
+:107E4000E1F980BD29A900001C750100A1AA00006C
+:107E50002D19000045A8000010B5064C0C22227018
+:107E6000A0180549BDF7D8FF0020C8F785FB012001
+:107E7000A06010BD3C0054250400A4690100905787
+:107E80000100B0B51F4C00256580012020700A203C
+:107E9000A0809020E08030202081902060813020E0
+:107EA000A0811748042207211230BEF74CF814486D
+:107EB0000422052116303C0090250400BEF746F848
+:107EC0001248114AE08120827032157055700020EE
+:107ED0003C23410143438918F4319B1801300428A5
+:107EE0005960F5DB084806221A300949BDF79AFFA8
+:107EF0000748054C0C300FC83C00CC25040020344A
+:107F00000FC42021201CBDF762FFB0BD0000F86047
+:107F100001002C090000584001007047000007488C
+:107F200010B50068002808D00648BEF79CFE041C67
+:107F3000FFF79DFE201CBEF796FE3C0008260400BD
+:107F400010BD000058570100B5AD0000044980B5D0
+:107F50000020887002212020024AD1F791F880BDCC
+:107F6000B479010025B5000080B5CCF78FFE01493A
+:107F7000486180BDB479010080B518213C004426D9
+:107F800004001448BDF729FF1448012101700021A5
+:107F9000C1604170016100F002F900F0AAF800F040
+:107FA0001EF800F0BAF900F0CCF900F020F900F06A
+:107FB00064F900F0CEF900F0FCF800F082F93C0022
+:107FC0008026040000F028F800F06EF800F04AF86F
+:107FD000FFF7C2FF00F072F980BD0000407C010095
+:107FE00018630100B0B5084C0025084825772060CB
+:107FF000CEF7F0FD0020E562D0F7D0FA211F08800F
+:108000003C00BC260400D0F76CFBB0BD0000D47966
+:1080100001009575000080B5CCF7C1FC80BD054915
+:1080200080B500200870487003480449034A0830AE
+:10803000CCF727FE80BD2C630100EDBC00004DBDD8
+:1080400000003C00F826040080B5CCF72BFE054963
+:108050004860011C0448CCF74BFE04490320CFF7CD
+:108060003DFE80BD2C630100C4600100C1BC000066
+:1080700004480021002200230EC008C00249103825
+:10808000016070473C0034270400047A01001CE6BC
+:10809000010080B5CCF709FE0549054A4860022178
+:1080A0002420D0F7FCFF0348C9F76BFD80BD047A9C
+:1080B000010069BE000071EB000010B5044C1421F2
+:1080C000201CBDF796FE3C0070270400024820608B
+:1080D00010BD0000147A0100ECE5010080B5CCF77A
+:1080E000E7FD0749074A486002211F20D0F7DAFF61
+:1080F00005490120086005490C20CFF7F5FD80BD3A
+:10810000147A0100D5BF00003C00AC270400805A5F
+:10811000010085FF000080B5FFF74FFD0121212000
+:10812000024AD0F7C2FF80BD0000C9C1000080B57F
+:10813000CCF7C1FD02490863C9F757FD80BD287A15
+:10814000010010B5CCF7B7FD164C3C00E827040041
+:108150002061CCF7B3FD60611448154908601649E9
+:1081600014480860CCF7AAFD1449086000F034F800
+:10817000FFF7E0FFFFF75EFF00F004F900F08EF874
+:10818000FFF76EFFFFF7B0FFFFF78CFF3C002428DE
+:108190000400FFF704FF00F0AAF80A48BFF7BDFF8C
+:1081A000C9F7BBFD09490020CFF7A7FD10BD407CF2
+:1081B00001007DB70000187E0100BDB800001C7EE4
+:1081C0000100207E0100B9BA0000812401003C00BA
+:1081D0006028040080B538210148BDF719FE80BD34
+:1081E000905C010070470000B0B50C4C0B4D0020B6
+:1081F0000C3460602560E0600A202081281CC8F7EC
+:108200003FFD281CC8F73AFD083D68600448C9F7DF
+:108210003C009C2804001BFD201CC0F76EFA28803F
+:10822000B0BDB87A0100D5330100F8B51F4E1D4C22
+:1082300000200C2141438200013009190831000659
+:10824000000E0428B150F4D318480C383061CEF732
+:10825000F4F93C00D8280400144CA078000900016F
+:10826000A0700027E77067700024A50070590770A0
+:10827000201CBEF753F9715908710021201CCEF75C
+:108280007DF901342406240E042CEED3074C20780B
+:10829000000900013C00142904000A3020702078F5
+:1082A000F021884330302070A0780F210843A0705F
+:1082B000F8BD00500700107B010080B5CCF79FFB94
+:1082C00080BDB0B50C4C0B4D00200C3460602560B7
+:1082D000E0600A2020813C0050290400281CC8F7D7
+:1082E000E1FC281CC8F7D4FC083D6860201CC0F7DE
+:1082F0000DFA28800248C9F79BFCB0BD2C7B010019
+:108300004900010080B5CAF72FF880BD7047000012
+:10831000B0B5124D3C21281C3C008C290400BDF74F
+:1083200086FD0F4828213C30BDF781FD0D48002116
+:1083300014380161C160FF21017041700A490A4A85
+:10834000416001210C20D0F7C8FE2C1C30340C3DBC
+:108350000020D0F74AF920800C3C3C00C8290400DA
+:10836000AC42F8D1B0BD0000607B010020A1070045
+:1083700035CD0000084900200C22424352181071EC
+:1083800001300528F8DB04480021083801704160FD
+:10839000FF21417070470000747A01003C00042AFC
+:1083A000040080B578210148BDF747FD80BDC47B3E
+:1083B000010080B5CAF797FA80BD7047000010B57C
+:1083C0000B4CFF210531201CBDF737FD0948F0217A
+:1083D0000851201C4030C5F78EF96C2106483C003E
+:1083E000402A0400BDF72CFD0448C0216C30BDF7C5
+:1083F00027FD10BDC4690100B0D90100C86A0100A1
+:10840000B0B50B4D00241C20604340196C30C3F7FD
+:108410000FFE0134042CF6DBCCF76EFCA863C7F723
+:108420003C007C2A040075F90448C9F71CFC034889
+:10843000CFF703FAB0BDC4690100FD800000E1225E
+:10844000010010B5054C00202080034806210830AB
+:10845000BDF7D5FC1420606010BD987C010010B5FC
+:10846000084C3C00B82A04000020208060800648A8
+:1084700006210C30BDF7C6FC034806211230BDF7BB
+:10848000C1FC1420A06010BD587C010070470000A2
+:1084900080B502210D20054AD0F72EFE0448C8F70A
+:1084A0001FFC04483C00F42A0400CAF744FC80BDC9
+:1084B000000031D4000051B1000009B100000849AA
+:1084C00080B500200860FFF7D0FFFFF7C0FFFFF77F
+:1084D00004FC00F04AF8FFF70AFC00F03CF880BD0D
+:1084E0000000E46501003C00302B040080B500F082
+:1084F00029F800F01BF800F051F800F031F880BDC9
+:10850000704700007047000080B5FF2189310248A4
+:10851000BDF7A2FC80BD0000DC71010080B50249FE
+:108520000820CFF711FC80BD3C006C2B040059D90A
+:10853000000080B50348CFF74CF90249488080BD60
+:1085400000008D1F0000987C010080B50348CFF724
+:1085500040F90249888080BD0000D5230000587C86
+:1085600001007047000080B502483C00A82B0400C1
+:10857000CAF7E4FB80BD000071E0000080B5CCF7D5
+:10858000A5FB02210F20064AD0F7C2FD14210548A1
+:10859000BDF768FC034878211430BDF763FC80BD4B
+:1085A00035E200008466010080B5CCF73C00E42B86
+:1085B0000400B7FB0549086105490E20CFF7CDFB44
+:1085C00004490820CFF7C9FB80BDEC65010001021A
+:1085D0000100C12E0000014900200870704740D9F9
+:1085E00001007047000001490020087070473C00FE
+:1085F000202C0400A079010080B50748C8F7F2FFDD
+:10860000064948600648C0F707FB0648C0F786FBE6
+:108610000548C9F7A3FA80BDA9E40000A0790100CC
+:10862000B9E40000852E000081E40000074880B511
+:108630003C005C2C04000021002200230EC008C076
+:108640001038C821016000210C38024ACCF761FBC8
+:1086500080BDD0600100FDE5000080B5CCF767FB70
+:1086600004490860011C02480430CCF786FB80BD39
+:1086700000003C00982C0400C0600100094880B54F
+:108680000A21017041700849084A81600021C160D7
+:10869000527982700161416128211830BDF7EEFBEB
+:1086A00080BD00007C780100A08601000C5A01000A
+:1086B000F8B50F493C00D42C04000F480D884F88B2
+:1086C00006790024301B684368230C49584341183D
+:1086D0007D20C000BDF70FFD6100094AA64250523F
+:1086E00000D13D1C01342406240E102CEAD3054988
+:1086F00001200861F8BD3C00102D0400F65901006E
+:108700000C5A010034440F00125A01007C78010019
+:1087100080B500F0E7FA02490120086180BD000041
+:108720007C78010010B5041C081C0F494979002908
+:1087300001D10E4B00E00E4B3C004C2D0400002CF0
+:1087400007D0042111800A1C0124191CBDF7CDFBA0
+:108750000AE00124011C181C1288BDF7C6FB00F0BA
+:10876000C4FA054901200861201C10BD00000C5A04
+:108770000100FE590100FA5901003C00882D040057
+:108780007C7801000D488CB5C18800AB0C4A9980FB
+:1087900001890420D980188002211320D0F7D0FC51
+:1087A00000F0A6FA074901200861FFF78DFF6A462D
+:1087B00001A90020FFF7BCFF8CBD00003C00C42DC8
+:1087C0000400F459010095F900007C780100F8B527
+:1087D000134E0125B5700520F070114910480EC9DF
+:1087E0002C300EC0002070610F480F49104F00243C
+:1087F0004860A0003958201CD1F7D7F801343C005C
+:10880000002E0400102CF7D3064C0B4A2034201CF9
+:108810000A49B560CCF792FACCF79EFA3061206035
+:10882000F8BD000064730100B05801000418020094
+:1088300060000700D444010045FA000071FA00000E
+:108840003C003C2E04000C4930B50023CC560B4BA9
+:108850000020F0251A5C1107090F09190F2901DD05
+:108860000F2102E0002900DA00212A405118195492
+:1088700001300E28EEDB30BD000064730100C058EB
+:1088800001003C00782E0400B0B50D1C002808D073
+:10889000012414800520CCF7B5F88003C00F2870A0
+:1088A00007E028780122410452040520D0F7AEFDEC
+:1088B0000124201CB0BD000098B5054C6068CCF7C1
+:1088C000F5FD00903C00B42E040000AB1888E08059
+:1088D000CEF7FBFF98BDA058010038B5031C081C5B
+:1088E0000024002B174D07D00E2111800A1C0124F3
+:1088F000291CBDF70CFB22E01188042917D1011CAB
+:1089000068461288BDF73C00F02E040003FB009877
+:10891000002801DB323000E032380090011C642076
+:10892000BDF798FB0106091600900E22281CBDF722
+:1089300085FB06E00E2905D10A1C011C281CBDF789
+:10894000E9FA0124201C38BD3C002C2F0400DA5920
+:10895000010038B5031C081C0024002B174D07D05C
+:108960000E2111800A1C0124291CBDF7D6FA22E031
+:108970001188042917D1011C68461288BDF7CDFA69
+:108980000098002801DB323000E03C00682F040032
+:1089900032380090011C6420BDF762FB0106091605
+:1089A00000900E22281CBDF74FFB06E00E2905D1D2
+:1089B0000A1C011C281CBDF7B3FA0124201C38BD79
+:1089C000CC590100034880B5017800203C00A42F59
+:1089D0000400CCF7B4FB80BD0000A658010070472E
+:1089E00000000249032008700020487070479C7303
+:1089F000010080B502211120024AD0F7BCFB80BDE6
+:108A00000000A1FE0000F0B50B4F1C1C00233C0031
+:108A1000E02F0400FD562B1C062D01D10120F0BDD6
+:108A2000064E051CD80034363554801941708270CA
+:108A30004460581C38700020F0BD0000985A0100B6
+:108A400010B5041C0C4800F021F96078FF2804D010
+:108A50003C001C3004000123E056062100F0CDF854
+:108A6000084A012110780843074908702023184359
+:108A70000870802318431070087010BD0000919B8F
+:108A80000000E06001000400070010B50A49041C62
+:108A900008783C005830040040084000087008493D
+:108AA0000870084800F0F8F86078FF2804D0012327
+:108AB000E056052100F0A4F810BD0000E0600100C0
+:108AC00004000700919B00000348002100220023BE
+:108AD0000EC008C03C009430040070470000E860FD
+:108AE00001007047000010B5074C00206060208036
+:108AF000E06002211420044AD0F749FB02481030FC
+:108B0000A06010BD000058750100051D01007047F0
+:108B1000000010B548213C00D03004000A48BDF7E1
+:108B2000E3F9094CE0214834201CBDF7DDF90020B1
+:108B3000C10009190A1C083201301B284A60F7D30A
+:108B400001480438046010BD685B010080B5022153
+:108B50002320024AD0F71EFB3C000C31040080BDEC
+:108B600000004523010080B5FFF76BF880BD70471A
+:108B70000000F8B501201D49C00748601D49FF20CD
+:108B800008731C4E10203060050135601B4C80219D
+:108B9000201CBDF7ACF90021194A3C004831040003
+:108BA000154F00200B011B195A60CB00DB191874FC
+:108BB00001310829F6DB0F4CFA212180124961802E
+:108BC000A0606A4611490420BDF730FF6A4610498B
+:108BD0000820BDF72BFF1020706075603C008431C9
+:108BE000040060680221084360600B49064A081CC3
+:108BF0001030083A03C2F8BD000000010700006011
+:108C0000070000100700AC730100D1750000204E72
+:108C10000000052C0100112C010000A007003C0001
+:108C2000C031040070B50E1C0024C4F75BFE0028A0
+:108C30003BD04568FF2D38D00C2E28D201A39B5D78
+:108C40005B009F440507090B0D101316181B1E210E
+:108C5000182420E030241EE060241CE0C0241AE028
+:108C60003C00FC310400FF24813417E00924A401F6
+:108C700014E00924E40111E00F4C0FE00924240260
+:108C80000CE00924640209E00324E40206E009245C
+:108C9000A40203E009219E20BEF739F86000001904
+:108CA00040083C0038320400054980044018054A59
+:108CB000A900891848606420604370BDDC0700008B
+:108CC0008038010004000700024980B50860D0F731
+:108CD00097F880BD5C5B0100F8B50026174C174B78
+:108CE000194926703C0074320400002014330D88AA
+:108CF000154E154A04E0C100CF187A605E5001306D
+:108D0000A842F8DBC6F72BFDFF21114DA531281C29
+:108D1000BDF7FFF80021281C021C1432C260101C91
+:108D200001311429F8DB3C00B03204000026C66093
+:108D300005480C3060C009481821BDF7EDF8012046
+:108D4000043441C40020F8BD705D010009A000009A
+:108D500030D9010056570100045F0100A8600100EE
+:108D600080B50020CFF7B6FC3C00EC32040001498E
+:108D7000088080BD00002C7401001148F8B54179CD
+:108D8000002902D105780F4E01E045780F4E0223ED
+:108D9000F75E0024601B784364230C495843411854
+:108DA0007D20C000BDF7F5F961003C0028330400C8
+:108DB000094AAC42505201D10023F75E0134240627
+:108DC000240E102CE9D3F8BD0C5A0100FE59010005
+:108DD000FA59010034440F00325A010038B5104CE2
+:108DE000BE252573207A1821884320723C00643305
+:108DF00004006A460D490D20BDF733FE01200B49E2
+:108E000040030860486025732D20C003206025734F
+:108E1000207A102108432072064806490860002085
+:108E2000486038BD0000000307008D3E01002400AB
+:108E3000A0330400001007000087930304790100A9
+:108E400080B502211520024AD0F7C8F980BD000084
+:108E50000D3E010070470000040000600400440063
+:108E60000000040040200700FFFFFFFF4D656D6F0D
+:108E7000727920636865636B2E2E2E00204F4B0A9B
+:108E800000000000204641494C0A000057726974F6
+:108E9000696E67206669726D7761726520646174BE
+:108EA0006120746F20666C6173680A005665726990
+:108EB0006679696E67206669726D77617265206494
+:108EC0006174610A00000000566572696679206667
+:108ED00061696C6564206174206279746520256421
+:108EE0002C2030782530327820213D2030782530F4
+:108EF00032780A004669726D776172652073756316
+:108F00006365737366756C6C792073746F726564D6
+:108F100020696E20666C617368210A0005000600F6
+:108F200000000001000001480000000B0000014C9F
+:108F300000000009000001780000000F0000019C03
+:108F400000000001000001D800000001000001DC69
+:108F50000000000100000108000000010000010CF9
+:108F600000000001000001100000000100000114D9
+:108F70000000000100000118000000010000011CB9
+:108F80000000000100000120000000010000012499
+:108F9000000000030000012800000001000001346F
+:108FA0000000000100000138000000010000013C49
+:108FB0000000000100000140000000010000014429
+:040000058000000077
+:00000001FF
diff --git a/hardware/arduino/firmwares/wifishield/binary/wifi_dnld_2_1.elf b/hardware/arduino/firmwares/wifishield/binary/wifi_dnld_2_1.elf
new file mode 100644
index 0000000..7ccbf4d
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/binary/wifi_dnld_2_1.elf differ
diff --git a/hardware/arduino/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh b/hardware/arduino/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh
new file mode 100644
index 0000000..5082392
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+WIFI_FW_PATH="/hardware/arduino/firmwares/wifi-shield"
+AVR_TOOLS_PATH="/hardware/tools/avr/bin"
+
+progname=$0
+
+usage () {
+cat <<EOF
+Usage: $progname [-a Arduino_path] [-f which_firmware] [-h]
+ -a set the path where the Arduino IDE is installed
+ -f the firmware you want to upload, valid parameters are:
+ shield - to upgrade the WiFi shield firmware
+ all - to upgrade both firmwares
+ -h help
+EOF
+ exit 0
+}
+
+upgradeHDmodule () {
+ sleep 1 # Give time to the shield to end the boot
+ echo "****Upgrade HD WiFi module firmware****\n"
+ dfu-programmer at32uc3a1256 erase
+ dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem $WIFI_FW_PATH/wifi_dnld.hex
+ dfu-programmer at32uc3a1256 start
+ echo -n "\nRemove the J3 jumper then press the RESET button on the shield then type [ENTER] to upgrade the firmware of the shield..\n"
+ read readEnter
+}
+
+upgradeShield () {
+ sleep 1 # Give time to the shield to end the boot
+ echo "****Upgrade WiFi Shield firmware****\n"
+ dfu-programmer at32uc3a1256 erase
+ dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem $WIFI_FW_PATH/wifiHD.hex
+ dfu-programmer at32uc3a1256 start
+ echo "\nDone. Remove the J3 jumper and press the RESET button on the shield."
+ echo "Thank you!\n"
+}
+
+cat <<EOF
+
+ Arduino WiFi Shield upgrade
+=========================================
+Disclaimer: to access to the USB devices correctly, the dfu-programmer needs to be used as root. Run this script as root.
+
+EOF
+
+if [ $USER = 'root' ] ; then #check if the current user is root
+ while getopts ":a:f:h" opt; do
+ case $opt in
+ a)
+ ARDUINO_PATH=$OPTARG
+ WIFI_FW_PATH=$ARDUINO_PATH$WIFI_FW_PATH
+ AVR_TOOLS_PATH=$ARDUINO_PATH$AVR_TOOLS_PATH
+ cd $AVR_TOOLS_PATH
+ ./avr-objcopy --output-target=ihex $WIFI_FW_PATH/wifi_dnld.elf $WIFI_FW_PATH/wifi_dnld.hex
+ ./avr-objcopy --output-target=ihex $WIFI_FW_PATH/wifiHD.elf $WIFI_FW_PATH/wifiHD.hex
+ ;;
+ f)
+ if [ "$ARDUINO_PATH" != "" ] ; then
+ if [ "$OPTARG" = "all" ] ; then
+ upgradeHDmodule
+ upgradeShield
+ exit 0
+ else
+ if [ "$OPTARG" = "shield" ] ; then
+ upgradeShield
+ exit 0
+ else
+ echo "invalid parameter for the -f [firmware] option, please retry."
+ echo "Type -h for help\n"
+ exit 1
+ fi
+ fi
+ else
+ echo "Arduino Path not setted. Retry...\n"
+ fi
+ ;;
+ h)
+ usage ;;
+ \?)
+ echo "Invalid option: $OPTARG" >&2
+ usage
+ exit 1
+ ;;
+ :)
+ echo "Option -$OPTARG requires an argument." >&2
+ exit 1
+ ;;
+ esac
+ done
+else
+ echo "You are not root!\n"
+fi
+
+shift $(($OPTIND - 1))
diff --git a/hardware/arduino/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh b/hardware/arduino/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh
new file mode 100644
index 0000000..5082392
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+WIFI_FW_PATH="/hardware/arduino/firmwares/wifi-shield"
+AVR_TOOLS_PATH="/hardware/tools/avr/bin"
+
+progname=$0
+
+usage () {
+cat <<EOF
+Usage: $progname [-a Arduino_path] [-f which_firmware] [-h]
+ -a set the path where the Arduino IDE is installed
+ -f the firmware you want to upload, valid parameters are:
+ shield - to upgrade the WiFi shield firmware
+ all - to upgrade both firmwares
+ -h help
+EOF
+ exit 0
+}
+
+upgradeHDmodule () {
+ sleep 1 # Give time to the shield to end the boot
+ echo "****Upgrade HD WiFi module firmware****\n"
+ dfu-programmer at32uc3a1256 erase
+ dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem $WIFI_FW_PATH/wifi_dnld.hex
+ dfu-programmer at32uc3a1256 start
+ echo -n "\nRemove the J3 jumper then press the RESET button on the shield then type [ENTER] to upgrade the firmware of the shield..\n"
+ read readEnter
+}
+
+upgradeShield () {
+ sleep 1 # Give time to the shield to end the boot
+ echo "****Upgrade WiFi Shield firmware****\n"
+ dfu-programmer at32uc3a1256 erase
+ dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem $WIFI_FW_PATH/wifiHD.hex
+ dfu-programmer at32uc3a1256 start
+ echo "\nDone. Remove the J3 jumper and press the RESET button on the shield."
+ echo "Thank you!\n"
+}
+
+cat <<EOF
+
+ Arduino WiFi Shield upgrade
+=========================================
+Disclaimer: to access to the USB devices correctly, the dfu-programmer needs to be used as root. Run this script as root.
+
+EOF
+
+if [ $USER = 'root' ] ; then #check if the current user is root
+ while getopts ":a:f:h" opt; do
+ case $opt in
+ a)
+ ARDUINO_PATH=$OPTARG
+ WIFI_FW_PATH=$ARDUINO_PATH$WIFI_FW_PATH
+ AVR_TOOLS_PATH=$ARDUINO_PATH$AVR_TOOLS_PATH
+ cd $AVR_TOOLS_PATH
+ ./avr-objcopy --output-target=ihex $WIFI_FW_PATH/wifi_dnld.elf $WIFI_FW_PATH/wifi_dnld.hex
+ ./avr-objcopy --output-target=ihex $WIFI_FW_PATH/wifiHD.elf $WIFI_FW_PATH/wifiHD.hex
+ ;;
+ f)
+ if [ "$ARDUINO_PATH" != "" ] ; then
+ if [ "$OPTARG" = "all" ] ; then
+ upgradeHDmodule
+ upgradeShield
+ exit 0
+ else
+ if [ "$OPTARG" = "shield" ] ; then
+ upgradeShield
+ exit 0
+ else
+ echo "invalid parameter for the -f [firmware] option, please retry."
+ echo "Type -h for help\n"
+ exit 1
+ fi
+ fi
+ else
+ echo "Arduino Path not setted. Retry...\n"
+ fi
+ ;;
+ h)
+ usage ;;
+ \?)
+ echo "Invalid option: $OPTARG" >&2
+ usage
+ exit 1
+ ;;
+ :)
+ echo "Option -$OPTARG requires an argument." >&2
+ exit 1
+ ;;
+ esac
+ done
+else
+ echo "You are not root!\n"
+fi
+
+shift $(($OPTIND - 1))
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/.cproject b/hardware/arduino/firmwares/wifishield/wifiHD/.cproject
new file mode 100644
index 0000000..fa7fcdd
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/.cproject
@@ -0,0 +1,4045 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="avr32.managedbuild.config.gnu.exe.debug.1622245200">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="avr32.managedbuild.config.gnu.exe.debug.1622245200" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+<extension id="com.atmel.avr.toolchain.avr32gcc.elf32-avr32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="wifiHD" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="AVR32 Standalone debug configuration" id="avr32.managedbuild.config.gnu.exe.debug.1622245200" name="Debug" parent="avr32.managedbuild.config.gnu.exe.debug" postannouncebuildStep="Size Before build" postbuildStep="avr32-size ${BuildArtifactFileName}" preannouncebuildStep="" prebuildStep="">
+<folderInfo id="avr32.managedbuild.config.gnu.exe.debug.1622245200." name="/" resourcePath="">
+<toolChain id="avr32.managedbuild.toolchain.gnu.exe.debug.1787446984" name="32-bit AVR/GNU C/C++ Toolchain" superClass="avr32.managedbuild.toolchain.gnu.exe.debug">
+<targetPlatform id="avr32.managedbuild.target.gnu.platform.exe.debug.1577294140" name="%PlatformName.Dbg" superClass="avr32.managedbuild.target.gnu.platform.exe.debug"/>
+<builder buildPath="${workspace_loc:/wifiHD/Debug}" enableAutoBuild="false" id="avr32.managedbuild.target.gnu.builder.exe.debug.860077655" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="avr32.managedbuild.target.gnu.builder.exe.debug"/>
+<tool id="avr32.managedbuild.tool.gnu.archiver.exe.debug.716199814" name="32-bit AVR/GNU Archiver" superClass="avr32.managedbuild.tool.gnu.archiver.exe.debug"/>
+<tool id="avr32.managedbuild.tool.gnu.cpp.compiler.exe.debug.2050435638" name="32-bit AVR/GNU C++ Compiler" superClass="avr32.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+<option id="gnu.cpp.compiler.option.optimization.level.167185469" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.option.debugging.level.1072153032" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.cpp.compiler.option.mcu.538485808" name="Microcontroller Unit" superClass="avr32.cpp.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.compiler.option.include.paths.1291994818" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+</option>
+<option id="avr32.cpp.compiler.option.flashvault.1873560474" name="Enable FlashVault support" superClass="avr32.cpp.compiler.option.flashvault" value="false" valueType="boolean"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1012366065" name="32-bit AVR/GNU C Compiler" superClass="avr32.managedbuild.tool.gnu.c.compiler.exe.debug">
+<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.187661945" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" value="gnu.c.optimization.level.optimize" valueType="enumerated"/>
+<option id="gnu.c.compiler.option.debugging.level.957359437" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.c.compiler.option.mcu.442256180" name="Microcontroller Unit" superClass="avr32.c.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.compiler.option.optimization.flags.1362317068" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-fdata-sections -ffunction-sections" valueType="string"/>
+<option id="gnu.c.compiler.option.preprocessor.def.symbols.2032815329" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+<listOptionValue builtIn="false" value="BOARD=ARDUINO"/>
+<listOptionValue builtIn="false" value="NO_SYS"/>
+<listOptionValue builtIn="false" value="_DEBUG_"/>
+<listOptionValue builtIn="false" value="_ASSERT_ENABLE_"/>
+<listOptionValue builtIn="false" value="WITH_KEY"/>
+<listOptionValue builtIn="false" value="WITH_WPA"/>
+<listOptionValue builtIn="false" value="WITH_NO_DMA"/>
+<listOptionValue builtIn="false" value="DATAFLASH=1"/>
+<listOptionValue builtIn="false" value="_INFO_DEBUG_=1"/>
+</option>
+<option id="gnu.c.compiler.option.include.paths.199111087" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD"/>
+</option>
+<option id="avr32.c.compiler.option.flashvault.1511808014" name="Enable FlashVault support" superClass="avr32.c.compiler.option.flashvault" value="false" valueType="boolean"/>
+<option id="avr32.c.compiler.option.fpic.1413737757" name="Generate position-independent code" superClass="avr32.c.compiler.option.fpic" value="false" valueType="boolean"/>
+<option id="avr32.c.compiler.option.mforce-double-align.1833231832" name="Force double-word alignment" superClass="avr32.c.compiler.option.mforce-double-align" value="true" valueType="boolean"/>
+<option id="gnu.c.compiler.option.warnings.pedantic.error.266375625" name="Pedantic warnings as errors (-pedantic-errors)" superClass="gnu.c.compiler.option.warnings.pedantic.error" value="false" valueType="boolean"/>
+<option id="gnu.c.compiler.option.warnings.toerrors.1148543352" name="Warnings as errors (-Werror)" superClass="gnu.c.compiler.option.warnings.toerrors" value="false" valueType="boolean"/>
+<option id="gnu.c.compiler.option.misc.verbose.1690548506" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose" value="false" valueType="boolean"/>
+<option id="gnu.c.compiler.option.misc.other.617535058" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0" valueType="string"/>
+<inputType id="avr32.managedbuild.tool.gnu.c.compiler.input.253539519" superClass="avr32.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.linker.exe.debug.1134510857" name="32-bit AVR/GNU C Linker" superClass="avr32.managedbuild.tool.gnu.c.linker.exe.debug">
+<option id="avr32.c.linker.option.mcu.208178139" name="Microcontroller Unit" superClass="avr32.c.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.link.option.nostart.975559445" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" value="true" valueType="boolean"/>
+<option id="gnu.c.link.option.ldflags.569230699" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,--gc-sections -Wl,-e,_trampoline -T../src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds" valueType="string"/>
+<option id="gnu.c.link.option.paths.1433794230" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value=""${workspace_loc:/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC}""/>
+</option>
+<option id="gnu.c.link.option.libs.1720035119" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_spi_v2.7.0"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_wl_sta_intwpa_v2.7.0"/>
+</option>
+<option id="gnu.c.link.option.strip.878241046" name="Omit all symbol information (-s)" superClass="gnu.c.link.option.strip" value="false" valueType="boolean"/>
+<option id="avr32.c.linker.option.gc-sections.1193662367" name="Garbage collect unused sections" superClass="avr32.c.linker.option.gc-sections" value="true" valueType="boolean"/>
+<option id="avr32.c.linker.option.rodata-writable.1710110734" name="Put read-only data in writable data section" superClass="avr32.c.linker.option.rodata-writable" value="true" valueType="boolean"/>
+<option id="avr32.c.linker.option.fpic.953076621" name="Generate position-independent code" superClass="avr32.c.linker.option.fpic" value="false" valueType="boolean"/>
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.974320538" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.cpp.linker.exe.debug.2023008784" name="32-bit AVR/GNU C++ Linker" superClass="avr32.managedbuild.tool.gnu.cpp.linker.exe.debug">
+<option id="avr32.cpp.linker.option.mcu.1842160542" name="Microcontroller Unit" superClass="avr32.cpp.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.link.option.libs.553570579" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<option id="gnu.cpp.link.option.paths.1808219646" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.assembler.exe.debug.1265602469" name="32-bit AVR/GNU Assembler" superClass="avr32.managedbuild.tool.gnu.assembler.exe.debug">
+<option id="avr32.both.asm.option.debugging.level.1267695286" name="Debug Level" superClass="avr32.both.asm.option.debugging.level" value="avr32.both.asm.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.both.asm.option.mcu.1719949047" name="Microcontroller Unit" superClass="avr32.both.asm.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.both.asm.option.include.paths.856598085" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.preprocessor.exe.debug.634227134" name="32-bit AVR/GNU Preprocessing Assembler" superClass="avr32.managedbuild.tool.gnu.preprocessor.exe.debug">
+<option id="avr32.both.preprocessor.option.debugging.level.1586886701" name="Debug Level" superClass="avr32.both.preprocessor.option.debugging.level" value="avr32.both.preprocessor.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.both.preprocessor.option.mcu.1298401384" name="Microcontroller Unit" superClass="avr32.both.preprocessor.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="avr32.both.preprocessor.option.flags.1724795968" name="Assembler flags" superClass="avr32.both.preprocessor.option.flags" value="-Wa,-g" valueType="string"/>
+<option id="avr32.both.preprocessor.option.paths.1859276996" name="Include paths (-I)" superClass="avr32.both.preprocessor.option.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<inputType id="avr32.managedbuild.tool.gnu.preprocessor.input.678543067" superClass="avr32.managedbuild.tool.gnu.preprocessor.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<entry excluding="spb.h|httpd.h|httpd.c|platform_spi.h|clocks.c|clocks.h|nor_flash.h|nor_flash.c|wl_util.h|wl_util.c|startup.h|startup.c|ttcp.h|ttcp.c|fsdata.c|hdwireless_gif.h|http_server_gui.h|http_server_gui.c|SOFTWARE_FRAMEWORK/COMPONENTS/TOUCH|SOFTWARE_FRAMEWORK/DRIVERS/ADC|SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h|gui.c|SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC|SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY|SOFTWARE_FRAMEWORK/COMPONENTS/DISPLAY/ET024006DHU|gui_getstring.c|SOFTWARE_FRAMEWORK/BOARDS/EVK1105" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445;avr32.managedbuild.config.gnu.exe.release.1761605428.53366445.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1297103917;avr32.managedbuild.tool.gnu.c.compiler.input.1475497800">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200;avr32.managedbuild.config.gnu.exe.debug.1622245200.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1012366065;avr32.managedbuild.tool.gnu.c.compiler.input.253539519">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753;avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1323919988;avr32.managedbuild.tool.gnu.c.compiler.input.253409817">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428;avr32.managedbuild.config.gnu.exe.release.1761605428.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1267623154;avr32.managedbuild.tool.gnu.c.compiler.input.233400464">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cconfiguration>
+<cconfiguration id="avr32.managedbuild.config.gnu.exe.release.1761605428">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="avr32.managedbuild.config.gnu.exe.release.1761605428" moduleId="org.eclipse.cdt.core.settings" name="Release">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+<extension id="com.atmel.avr.toolchain.avr32gcc.elf32-avr32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="wifiHD" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="AVR32 Standalone release configuration" id="avr32.managedbuild.config.gnu.exe.release.1761605428" name="Release" parent="avr32.managedbuild.config.gnu.exe.release">
+<folderInfo id="avr32.managedbuild.config.gnu.exe.release.1761605428." name="/" resourcePath="">
+<toolChain id="avr32.managedbuild.toolchain.gnu.exe.release.192267767" name="32-bit AVR/GNU C/C++ Toolchain" superClass="avr32.managedbuild.toolchain.gnu.exe.release">
+<targetPlatform id="avr32.managedbuild.target.gnu.platform.exe.release.1727872047" name="%PlatformName.Dbg" superClass="avr32.managedbuild.target.gnu.platform.exe.release"/>
+<builder buildPath="${workspace_loc:/wifiHD/Release}" id="avr32.managedbuild.target.gnu.builder.exe.release.1711429384" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="avr32.managedbuild.target.gnu.builder.exe.release"/>
+<tool id="avr32.managedbuild.tool.gnu.archiver.exe.release.105383899" name="32-bit AVR/GNU Archiver" superClass="avr32.managedbuild.tool.gnu.archiver.exe.release"/>
+<tool id="avr32.managedbuild.tool.gnu.cpp.compiler.exe.release.945608372" name="32-bit AVR/GNU C++ Compiler" superClass="avr32.managedbuild.tool.gnu.cpp.compiler.exe.release">
+<option id="gnu.cpp.compiler.option.optimization.level.502745007" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.option.debugging.level.1743210246" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+<option defaultValue="gnu.c.optimization.level.most" id="avr32.cpp.compiler.option.optimization.level.release.1516030118" name="Optimization Level" superClass="avr32.cpp.compiler.option.optimization.level.release" valueType="enumerated"/>
+<option id="avr32.cpp.compiler.option.mcu.1422527380" name="Microcontroller Unit" superClass="avr32.cpp.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.compiler.option.include.paths.866682810" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+</option>
+<option id="avr32.cpp.compiler.option.flashvault.576086454" name="Enable FlashVault support" superClass="avr32.cpp.compiler.option.flashvault" value="false" valueType="boolean"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.compiler.exe.release.1267623154" name="32-bit AVR/GNU C Compiler" superClass="avr32.managedbuild.tool.gnu.c.compiler.exe.release">
+<option defaultValue="gnu.c.optimization.level.most" id="avr32.c.compiler.option.optimization.level.release.1407195495" name="Optimization Level" superClass="avr32.c.compiler.option.optimization.level.release" value="gnu.c.optimization.level.optimize" valueType="enumerated"/>
+<option id="gnu.c.compiler.option.debugging.level.1207086846" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.c.compiler.option.mcu.645886185" name="Microcontroller Unit" superClass="avr32.c.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.compiler.option.optimization.flags.1349270325" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-fdata-sections" valueType="string"/>
+<option id="gnu.c.compiler.option.preprocessor.def.symbols.1416657670" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+<listOptionValue builtIn="false" value="BOARD=ARDUINO"/>
+<listOptionValue builtIn="false" value="_ASSERT_ENABLE_"/>
+<listOptionValue builtIn="false" value="EXT_BOARD=SPB104"/>
+<listOptionValue builtIn="false" value="WITH_KEY"/>
+<listOptionValue builtIn="false" value="WITH_WPA"/>
+<listOptionValue builtIn="false" value="WITH_NO_DMA"/>
+<listOptionValue builtIn="false" value="DATAFLASH=1"/>
+<listOptionValue builtIn="false" value="_INFO_DEBUG_=1"/>
+</option>
+<option id="gnu.c.compiler.option.include.paths.1012245137" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD"/>
+</option>
+<option id="avr32.c.compiler.option.flashvault.579935240" name="Enable FlashVault support" superClass="avr32.c.compiler.option.flashvault" value="false" valueType="boolean"/>
+<option id="avr32.c.compiler.option.muse-rodata-section.46188949" name="Use section .rodata for read-only data" superClass="avr32.c.compiler.option.muse-rodata-section" value="false" valueType="boolean"/>
+<option id="avr32.c.compiler.option.mforce-double-align.1255447070" name="Force double-word alignment" superClass="avr32.c.compiler.option.mforce-double-align" value="true" valueType="boolean"/>
+<inputType id="avr32.managedbuild.tool.gnu.c.compiler.input.233400464" superClass="avr32.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.linker.exe.release.166522415" name="32-bit AVR/GNU C Linker" superClass="avr32.managedbuild.tool.gnu.c.linker.exe.release">
+<option id="avr32.c.linker.option.mcu.1388034810" name="Microcontroller Unit" superClass="avr32.c.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.link.option.nostart.1724907067" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" value="true" valueType="boolean"/>
+<option id="gnu.c.link.option.ldflags.870159720" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,--gc-sections -Wl,-e,_trampoline -T../src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds" valueType="string"/>
+<option id="gnu.c.link.option.paths.1927497406" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC"/>
+</option>
+<option id="gnu.c.link.option.libs.161654023" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_wl_sta_intwpa_v2.7.0"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_spi_v2.7.0"/>
+</option>
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.506365499" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.cpp.linker.exe.release.1069051853" name="32-bit AVR/GNU C++ Linker" superClass="avr32.managedbuild.tool.gnu.cpp.linker.exe.release">
+<option id="avr32.cpp.linker.option.mcu.1425379346" name="Microcontroller Unit" superClass="avr32.cpp.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.link.option.libs.672185409" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<option id="gnu.cpp.link.option.paths.58237415" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.assembler.exe.release.241240345" name="32-bit AVR/GNU Assembler" superClass="avr32.managedbuild.tool.gnu.assembler.exe.release">
+<option id="avr32.both.asm.option.debugging.level.1277884270" name="Debug Level" superClass="avr32.both.asm.option.debugging.level" value="avr32.both.asm.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.both.asm.option.mcu.856977235" name="Microcontroller Unit" superClass="avr32.both.asm.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.both.asm.option.include.paths.1233318581" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.preprocessor.exe.release.324928388" name="32-bit AVR/GNU Preprocessing Assembler" superClass="avr32.managedbuild.tool.gnu.preprocessor.exe.release">
+<option id="avr32.both.preprocessor.option.debugging.level.1893617259" name="Debug Level" superClass="avr32.both.preprocessor.option.debugging.level" value="avr32.both.preprocessor.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.both.preprocessor.option.mcu.1546028534" name="Microcontroller Unit" superClass="avr32.both.preprocessor.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="avr32.both.preprocessor.option.flags.211248019" name="Assembler flags" superClass="avr32.both.preprocessor.option.flags" value="-Wa,-g" valueType="string"/>
+<option id="avr32.both.preprocessor.option.paths.108191235" name="Include paths (-I)" superClass="avr32.both.preprocessor.option.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<inputType id="avr32.managedbuild.tool.gnu.preprocessor.input.1319925321" superClass="avr32.managedbuild.tool.gnu.preprocessor.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<entry excluding="spb.h|httpd.h|httpd.c|platform_spi.h|clocks.c|clocks.h|nor_flash.h|nor_flash.c|wl_util.h|wl_util.c|startup.h|startup.c|ttcp.h|ttcp.c|fsdata.c|hdwireless_gif.h|http_server_gui.h|http_server_gui.c|SOFTWARE_FRAMEWORK/COMPONENTS/TOUCH|SOFTWARE_FRAMEWORK/DRIVERS/ADC|SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h|gui.c|SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC|SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY|SOFTWARE_FRAMEWORK/COMPONENTS/DISPLAY/ET024006DHU|gui_getstring.c|SOFTWARE_FRAMEWORK/BOARDS/EVK1105" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445;avr32.managedbuild.config.gnu.exe.release.1761605428.53366445.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1297103917;avr32.managedbuild.tool.gnu.c.compiler.input.1475497800">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200;avr32.managedbuild.config.gnu.exe.debug.1622245200.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1012366065;avr32.managedbuild.tool.gnu.c.compiler.input.253539519">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753;avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1323919988;avr32.managedbuild.tool.gnu.c.compiler.input.253409817">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428;avr32.managedbuild.config.gnu.exe.release.1761605428.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1267623154;avr32.managedbuild.tool.gnu.c.compiler.input.233400464">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cconfiguration>
+<cconfiguration id="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753" moduleId="org.eclipse.cdt.core.settings" name="Debug_512">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+<extension id="com.atmel.avr.toolchain.avr32gcc.elf32-avr32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="wifiHD" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Debug version with UC3A1512" id="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753" name="Debug_512" parent="avr32.managedbuild.config.gnu.exe.debug" postannouncebuildStep="Size Before build" postbuildStep="avr32-size ${BuildArtifactFileName}" preannouncebuildStep="" prebuildStep="">
+<folderInfo id="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753." name="/" resourcePath="">
+<toolChain id="avr32.managedbuild.toolchain.gnu.exe.debug.2083074440" name="32-bit AVR/GNU C/C++ Toolchain" superClass="avr32.managedbuild.toolchain.gnu.exe.debug">
+<targetPlatform id="avr32.managedbuild.target.gnu.platform.exe.debug.38192914" name="%PlatformName.Dbg" superClass="avr32.managedbuild.target.gnu.platform.exe.debug"/>
+<builder buildPath="${workspace_loc:/wifiHD/Debug}" enableAutoBuild="false" id="avr32.managedbuild.target.gnu.builder.exe.debug.400270958" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="avr32.managedbuild.target.gnu.builder.exe.debug"/>
+<tool id="avr32.managedbuild.tool.gnu.archiver.exe.debug.1395287317" name="32-bit AVR/GNU Archiver" superClass="avr32.managedbuild.tool.gnu.archiver.exe.debug"/>
+<tool id="avr32.managedbuild.tool.gnu.cpp.compiler.exe.debug.1383760306" name="32-bit AVR/GNU C++ Compiler" superClass="avr32.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+<option id="gnu.cpp.compiler.option.optimization.level.1237270418" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.option.debugging.level.203852406" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.cpp.compiler.option.mcu.829173507" name="Microcontroller Unit" superClass="avr32.cpp.compiler.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.cpp.compiler.option.include.paths.43763334" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+</option>
+<option id="avr32.cpp.compiler.option.flashvault.1105479483" name="Enable FlashVault support" superClass="avr32.cpp.compiler.option.flashvault" value="false" valueType="boolean"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1323919988" name="32-bit AVR/GNU C Compiler" superClass="avr32.managedbuild.tool.gnu.c.compiler.exe.debug">
+<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1800930086" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" value="gnu.c.optimization.level.optimize" valueType="enumerated"/>
+<option id="gnu.c.compiler.option.debugging.level.741746123" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.c.compiler.option.mcu.783032953" name="Microcontroller Unit" superClass="avr32.c.compiler.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.c.compiler.option.optimization.flags.603264233" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-fdata-sections" valueType="string"/>
+<option id="gnu.c.compiler.option.preprocessor.def.symbols.1502866122" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+<listOptionValue builtIn="false" value="BOARD=ARDUINO"/>
+<listOptionValue builtIn="false" value="_APP_DEBUG_"/>
+<listOptionValue builtIn="false" value="_DEBUG_"/>
+<listOptionValue builtIn="false" value="_ASSERT_ENABLE_"/>
+<listOptionValue builtIn="false" value="EXT_BOARD=SPB104"/>
+<listOptionValue builtIn="false" value="WITH_KEY"/>
+<listOptionValue builtIn="false" value="WITH_WPA"/>
+<listOptionValue builtIn="false" value="WITH_NO_DMA"/>
+<listOptionValue builtIn="false" value="LWIP_DEBUG"/>
+<listOptionValue builtIn="false" value="_INFO_DEBUG_=1"/>
+</option>
+<option id="gnu.c.compiler.option.include.paths.1906241430" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD"/>
+</option>
+<option id="avr32.c.compiler.option.flashvault.1472510326" name="Enable FlashVault support" superClass="avr32.c.compiler.option.flashvault" value="false" valueType="boolean"/>
+<inputType id="avr32.managedbuild.tool.gnu.c.compiler.input.253409817" superClass="avr32.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.linker.exe.debug.626271173" name="32-bit AVR/GNU C Linker" superClass="avr32.managedbuild.tool.gnu.c.linker.exe.debug">
+<option id="avr32.c.linker.option.mcu.538638440" name="Microcontroller Unit" superClass="avr32.c.linker.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.c.link.option.nostart.1656241739" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" value="true" valueType="boolean"/>
+<option id="gnu.c.link.option.ldflags.87118628" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,--gc-sections" valueType="string"/>
+<option id="gnu.c.link.option.paths.812828263" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.1.1/UCR2/GCC"/>
+</option>
+<option id="gnu.c.link.option.libs.1653832984" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_spi_standalone_v2.1.1"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_wl_standalone_v2.1.1"/>
+</option>
+<option id="gnu.c.link.option.strip.877150339" name="Omit all symbol information (-s)" superClass="gnu.c.link.option.strip" value="false" valueType="boolean"/>
+<option id="avr32.c.linker.option.gc-sections.1011245889" name="Garbage collect unused sections" superClass="avr32.c.linker.option.gc-sections" value="true" valueType="boolean"/>
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1861379244" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.cpp.linker.exe.debug.1598170753" name="32-bit AVR/GNU C++ Linker" superClass="avr32.managedbuild.tool.gnu.cpp.linker.exe.debug">
+<option id="avr32.cpp.linker.option.mcu.1325073325" name="Microcontroller Unit" superClass="avr32.cpp.linker.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.cpp.link.option.libs.124073665" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<option id="gnu.cpp.link.option.paths.550636764" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.assembler.exe.debug.417825307" name="32-bit AVR/GNU Assembler" superClass="avr32.managedbuild.tool.gnu.assembler.exe.debug">
+<option id="avr32.both.asm.option.debugging.level.806412699" name="Debug Level" superClass="avr32.both.asm.option.debugging.level" value="avr32.both.asm.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.both.asm.option.mcu.1562959054" name="Microcontroller Unit" superClass="avr32.both.asm.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.both.asm.option.include.paths.1195320391" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.preprocessor.exe.debug.274353966" name="32-bit AVR/GNU Preprocessing Assembler" superClass="avr32.managedbuild.tool.gnu.preprocessor.exe.debug">
+<option id="avr32.both.preprocessor.option.debugging.level.8654492" name="Debug Level" superClass="avr32.both.preprocessor.option.debugging.level" value="avr32.both.preprocessor.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.both.preprocessor.option.mcu.1357262899" name="Microcontroller Unit" superClass="avr32.both.preprocessor.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="avr32.both.preprocessor.option.flags.1867526301" name="Assembler flags" superClass="avr32.both.preprocessor.option.flags" value="-Wa,-g" valueType="string"/>
+<option id="avr32.both.preprocessor.option.paths.703046204" name="Include paths (-I)" superClass="avr32.both.preprocessor.option.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<inputType id="avr32.managedbuild.tool.gnu.preprocessor.input.1411171721" superClass="avr32.managedbuild.tool.gnu.preprocessor.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<entry excluding="spb.h|httpd.h|httpd.c|platform_spi.h|clocks.c|clocks.h|nor_flash.h|nor_flash.c|wl_util.h|wl_util.c|startup.h|startup.c|ttcp.h|ttcp.c|fsdata.c|hdwireless_gif.h|http_server_gui.h|http_server_gui.c|SOFTWARE_FRAMEWORK/COMPONENTS/TOUCH|SOFTWARE_FRAMEWORK/DRIVERS/ADC|SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h|gui.c|SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC|SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY|SOFTWARE_FRAMEWORK/COMPONENTS/DISPLAY/ET024006DHU|gui_getstring.c|SOFTWARE_FRAMEWORK/BOARDS/EVK1105" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445;avr32.managedbuild.config.gnu.exe.release.1761605428.53366445.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1297103917;avr32.managedbuild.tool.gnu.c.compiler.input.1475497800">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200;avr32.managedbuild.config.gnu.exe.debug.1622245200.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1012366065;avr32.managedbuild.tool.gnu.c.compiler.input.253539519">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753;avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1323919988;avr32.managedbuild.tool.gnu.c.compiler.input.253409817">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428;avr32.managedbuild.config.gnu.exe.release.1761605428.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1267623154;avr32.managedbuild.tool.gnu.c.compiler.input.233400464">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cconfiguration>
+<cconfiguration id="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445" moduleId="org.eclipse.cdt.core.settings" name="Release_512">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+<extension id="com.atmel.avr.toolchain.avr32gcc.elf32-avr32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="wifiHD" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Release version for UC3A1512" id="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445" name="Release_512" parent="avr32.managedbuild.config.gnu.exe.release">
+<folderInfo id="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445." name="/" resourcePath="">
+<toolChain id="avr32.managedbuild.toolchain.gnu.exe.release.567531772" name="32-bit AVR/GNU C/C++ Toolchain" superClass="avr32.managedbuild.toolchain.gnu.exe.release">
+<targetPlatform id="avr32.managedbuild.target.gnu.platform.exe.release.316254328" name="%PlatformName.Dbg" superClass="avr32.managedbuild.target.gnu.platform.exe.release"/>
+<builder buildPath="${workspace_loc:/wifiHD/Release}" id="avr32.managedbuild.target.gnu.builder.exe.release.1357743529" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="avr32.managedbuild.target.gnu.builder.exe.release"/>
+<tool id="avr32.managedbuild.tool.gnu.archiver.exe.release.761598511" name="32-bit AVR/GNU Archiver" superClass="avr32.managedbuild.tool.gnu.archiver.exe.release"/>
+<tool id="avr32.managedbuild.tool.gnu.cpp.compiler.exe.release.137271919" name="32-bit AVR/GNU C++ Compiler" superClass="avr32.managedbuild.tool.gnu.cpp.compiler.exe.release">
+<option id="gnu.cpp.compiler.option.optimization.level.1518389785" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.option.debugging.level.1317941226" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+<option defaultValue="gnu.c.optimization.level.most" id="avr32.cpp.compiler.option.optimization.level.release.888183134" name="Optimization Level" superClass="avr32.cpp.compiler.option.optimization.level.release" valueType="enumerated"/>
+<option id="avr32.cpp.compiler.option.mcu.501397069" name="Microcontroller Unit" superClass="avr32.cpp.compiler.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.cpp.compiler.option.include.paths.721469775" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+</option>
+<option id="avr32.cpp.compiler.option.flashvault.194576687" name="Enable FlashVault support" superClass="avr32.cpp.compiler.option.flashvault" value="false" valueType="boolean"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.compiler.exe.release.1297103917" name="32-bit AVR/GNU C Compiler" superClass="avr32.managedbuild.tool.gnu.c.compiler.exe.release">
+<option defaultValue="gnu.c.optimization.level.most" id="avr32.c.compiler.option.optimization.level.release.920485052" name="Optimization Level" superClass="avr32.c.compiler.option.optimization.level.release" value="gnu.c.optimization.level.optimize" valueType="enumerated"/>
+<option id="gnu.c.compiler.option.debugging.level.601864900" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.c.compiler.option.mcu.1939612987" name="Microcontroller Unit" superClass="avr32.c.compiler.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.c.compiler.option.optimization.flags.1605444587" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-fdata-sections" valueType="string"/>
+<option id="gnu.c.compiler.option.preprocessor.def.symbols.2051999757" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+<listOptionValue builtIn="false" value="BOARD=ARDUINO"/>
+<listOptionValue builtIn="false" value="_ASSERT_ENABLE_"/>
+<listOptionValue builtIn="false" value="EXT_BOARD=SPB104"/>
+<listOptionValue builtIn="false" value="WITH_KEY"/>
+<listOptionValue builtIn="false" value="WITH_WPA"/>
+<listOptionValue builtIn="false" value="WITH_NO_DMA"/>
+<listOptionValue builtIn="false" value="LWIP_DEBUG"/>
+<listOptionValue builtIn="false" value="_INFO_DEBUG_=1"/>
+</option>
+<option id="gnu.c.compiler.option.include.paths.193739172" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD"/>
+</option>
+<option id="avr32.c.compiler.option.flashvault.706805068" name="Enable FlashVault support" superClass="avr32.c.compiler.option.flashvault" value="false" valueType="boolean"/>
+<inputType id="avr32.managedbuild.tool.gnu.c.compiler.input.1475497800" superClass="avr32.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.linker.exe.release.1288338195" name="32-bit AVR/GNU C Linker" superClass="avr32.managedbuild.tool.gnu.c.linker.exe.release">
+<option id="avr32.c.linker.option.mcu.1925600688" name="Microcontroller Unit" superClass="avr32.c.linker.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.c.link.option.nostart.2039417085" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" value="true" valueType="boolean"/>
+<option id="gnu.c.link.option.ldflags.1722356522" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,--gc-sections" valueType="string"/>
+<option id="gnu.c.link.option.paths.1959265164" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.1.1/UCR2/GCC"/>
+</option>
+<option id="gnu.c.link.option.libs.1049639323" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_spi_standalone_v2.1.1"/>
+<listOptionValue builtIn="false" value="_ucr2_hd_wl_standalone_v2.1.1"/>
+</option>
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.632786917" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.cpp.linker.exe.release.524443971" name="32-bit AVR/GNU C++ Linker" superClass="avr32.managedbuild.tool.gnu.cpp.linker.exe.release">
+<option id="avr32.cpp.linker.option.mcu.1441351036" name="Microcontroller Unit" superClass="avr32.cpp.linker.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.cpp.link.option.libs.357630882" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<option id="gnu.cpp.link.option.paths.1766302960" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.assembler.exe.release.1716843860" name="32-bit AVR/GNU Assembler" superClass="avr32.managedbuild.tool.gnu.assembler.exe.release">
+<option id="avr32.both.asm.option.debugging.level.1012502787" name="Debug Level" superClass="avr32.both.asm.option.debugging.level" value="avr32.both.asm.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.both.asm.option.mcu.1121971446" name="Microcontroller Unit" superClass="avr32.both.asm.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="gnu.both.asm.option.include.paths.1772545555" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.preprocessor.exe.release.1758206047" name="32-bit AVR/GNU Preprocessing Assembler" superClass="avr32.managedbuild.tool.gnu.preprocessor.exe.release">
+<option id="avr32.both.preprocessor.option.debugging.level.1064888815" name="Debug Level" superClass="avr32.both.preprocessor.option.debugging.level" value="avr32.both.preprocessor.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.both.preprocessor.option.mcu.1280537649" name="Microcontroller Unit" superClass="avr32.both.preprocessor.option.mcu" value="-mpart=uc3a1512" valueType="string"/>
+<option id="avr32.both.preprocessor.option.flags.1754897169" name="Assembler flags" superClass="avr32.both.preprocessor.option.flags" value="-Wa,-g" valueType="string"/>
+<option id="avr32.both.preprocessor.option.paths.213343763" name="Include paths (-I)" superClass="avr32.both.preprocessor.option.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/TC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<inputType id="avr32.managedbuild.tool.gnu.preprocessor.input.1134352373" superClass="avr32.managedbuild.tool.gnu.preprocessor.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<entry excluding="spb.h|httpd.h|httpd.c|platform_spi.h|clocks.c|clocks.h|nor_flash.h|nor_flash.c|wl_util.h|wl_util.c|startup.h|startup.c|ttcp.h|ttcp.c|fsdata.c|hdwireless_gif.h|http_server_gui.h|http_server_gui.c|SOFTWARE_FRAMEWORK/COMPONENTS/TOUCH|SOFTWARE_FRAMEWORK/DRIVERS/ADC|SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h|gui.c|SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC|SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY|SOFTWARE_FRAMEWORK/COMPONENTS/DISPLAY/ET024006DHU|gui_getstring.c|SOFTWARE_FRAMEWORK/BOARDS/EVK1105" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428.53366445;avr32.managedbuild.config.gnu.exe.release.1761605428.53366445.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1297103917;avr32.managedbuild.tool.gnu.c.compiler.input.1475497800">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200;avr32.managedbuild.config.gnu.exe.debug.1622245200.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1012366065;avr32.managedbuild.tool.gnu.c.compiler.input.253539519">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753;avr32.managedbuild.config.gnu.exe.debug.1622245200.609577753.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.1323919988;avr32.managedbuild.tool.gnu.c.compiler.input.253409817">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.1761605428;avr32.managedbuild.config.gnu.exe.release.1761605428.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1267623154;avr32.managedbuild.tool.gnu.c.compiler.input.233400464">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="wifiHD.avr32.managedbuild.target.gnu.exe_2.0.1.351102936" name="32-bit AVR/GNU Executable" projectType="avr32.managedbuild.target.gnu.exe_2.0.1"/>
+</storageModule>
+</cproject>
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/.project b/hardware/arduino/firmwares/wifishield/wifiHD/.project
new file mode 100644
index 0000000..c284bab
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/.project
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>wifiHD</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>make</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildLocation</key>
+ <value>${workspace_loc:/wifiHD/Debug}</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.atmel.avr32.core.nature</nature>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>UC3 Software Framework</name>
+ <type>2</type>
+ <locationURI>framework:/com.atmel.avr32.sf.uc3</locationURI>
+ </link>
+ </linkedResources>
+</projectDescription>
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/Release/wifiHD.elf b/hardware/arduino/firmwares/wifishield/wifiHD/Release/wifiHD.elf
new file mode 100644
index 0000000..e732373
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/Release/wifiHD.elf differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_access.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_access.h
new file mode 100644
index 0000000..2d38d50
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_access.h
@@ -0,0 +1,170 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Memory access control configuration file.
+ *
+ * This file contains the possible external configuration of the memory access
+ * control.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_ACCESS_H_
+#define _CONF_ACCESS_H_
+
+#include "compiler.h"
+#include "board.h"
+
+
+/*! \name Activation of Logical Unit Numbers
+ */
+//! @{
+#define LUN_0 DISABLE //!< On-Chip Virtual Memory.
+#define LUN_1 ENABLE //!< AT45DBX Data Flash.
+#define LUN_2 DISABLE //!< SD/MMC Card over SPI.
+#define LUN_3 DISABLE
+#define LUN_4 DISABLE
+#define LUN_5 DISABLE
+#define LUN_6 DISABLE
+#define LUN_7 DISABLE
+#define LUN_USB DISABLE //!< Host Mass-Storage Memory.
+//! @}
+
+/*! \name LUN 0 Definitions
+ */
+//! @{
+#define VIRTUAL_MEM LUN_0
+#define LUN_ID_VIRTUAL_MEM LUN_ID_0
+#define LUN_0_INCLUDE "virtual_mem.h"
+#define Lun_0_test_unit_ready virtual_test_unit_ready
+#define Lun_0_read_capacity virtual_read_capacity
+#define Lun_0_wr_protect virtual_wr_protect
+#define Lun_0_removal virtual_removal
+#define Lun_0_usb_read_10 virtual_usb_read_10
+#define Lun_0_usb_write_10 virtual_usb_write_10
+#define Lun_0_mem_2_ram virtual_mem_2_ram
+#define Lun_0_ram_2_mem virtual_ram_2_mem
+#define LUN_0_NAME "\"On-Chip Virtual Memory\""
+//! @}
+
+/*! \name LUN 1 Definitions
+ */
+//! @{
+#define AT45DBX_MEM LUN_1
+#define LUN_ID_AT45DBX_MEM LUN_ID_1
+#define LUN_1_INCLUDE "at45dbx_mem.h"
+#define Lun_1_test_unit_ready at45dbx_test_unit_ready
+#define Lun_1_read_capacity at45dbx_read_capacity
+#define Lun_1_wr_protect at45dbx_wr_protect
+#define Lun_1_removal at45dbx_removal
+#define Lun_1_usb_read_10 at45dbx_usb_read_10
+#define Lun_1_usb_write_10 at45dbx_usb_write_10
+#define Lun_1_mem_2_ram at45dbx_df_2_ram
+#define Lun_1_ram_2_mem at45dbx_ram_2_df
+#define LUN_1_NAME "\"AT45DBX Data Flash\""
+//! @}
+
+/*! \name LUN 2 Definitions
+ */
+//! @{
+#define SD_MMC_SPI_MEM LUN_2
+#define LUN_ID_SD_MMC_SPI_MEM LUN_ID_2
+#define LUN_2_INCLUDE "sd_mmc_spi_mem.h"
+#define Lun_2_test_unit_ready sd_mmc_spi_test_unit_ready
+#define Lun_2_read_capacity sd_mmc_spi_read_capacity
+#define Lun_2_wr_protect sd_mmc_spi_wr_protect
+#define Lun_2_removal sd_mmc_spi_removal
+#define Lun_2_usb_read_10 sd_mmc_spi_usb_read_10
+#define Lun_2_usb_write_10 sd_mmc_spi_usb_write_10
+#define Lun_2_mem_2_ram sd_mmc_spi_mem_2_ram
+#define Lun_2_ram_2_mem sd_mmc_spi_ram_2_mem
+#define LUN_2_NAME "\"SD/MMC Card over SPI\""
+//! @}
+
+/*! \name USB LUNs Definitions
+ */
+//! @{
+#define MEM_USB LUN_USB
+#define LUN_ID_MEM_USB LUN_ID_USB
+#define LUN_USB_INCLUDE "host_mem.h"
+#define Lun_usb_test_unit_ready(lun) host_test_unit_ready(lun)
+#define Lun_usb_read_capacity(lun, nb_sect) host_read_capacity(lun, nb_sect)
+#define Lun_usb_read_sector_size(lun) host_read_sector_size(lun)
+#define Lun_usb_wr_protect(lun) host_wr_protect(lun)
+#define Lun_usb_removal() host_removal()
+#define Lun_usb_mem_2_ram(addr, ram) host_read_10_ram(addr, ram)
+#define Lun_usb_ram_2_mem(addr, ram) host_write_10_ram(addr, ram)
+#define LUN_USB_NAME "\"Host Mass-Storage Memory\""
+//! @}
+
+/*! \name Actions Associated with Memory Accesses
+ *
+ * Write here the action to associate with each memory access.
+ *
+ * \warning Be careful not to waste time in order not to disturb the functions.
+ */
+//! @{
+#define memory_start_read_action(nb_sectors)
+#define memory_stop_read_action()
+#define memory_start_write_action(nb_sectors)
+#define memory_stop_write_action()
+//! @}
+
+/*! \name Activation of Interface Features
+ */
+//! @{
+#define ACCESS_USB DISABLED //!< MEM <-> USB interface.
+#define ACCESS_MEM_TO_RAM ENABLED //!< MEM <-> RAM interface.
+#define ACCESS_STREAM ENABLED //!< Streaming MEM <-> MEM interface. //mlf
+#define ACCESS_STREAM_RECORD DISABLED //!< Streaming MEM <-> MEM interface in record mode.
+#define ACCESS_MEM_TO_MEM DISABLED //!< MEM <-> MEM interface.
+#define ACCESS_CODEC DISABLED //!< Codec interface.
+//! @}
+
+/*! \name Specific Options for Access Control
+ */
+//! @{
+#define GLOBAL_WR_PROTECT DISABLED //!< Management of a global write protection.
+//! @}
+
+
+#endif // _CONF_ACCESS_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_at45dbx.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_at45dbx.h
new file mode 100644
index 0000000..3280e4f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_at45dbx.h
@@ -0,0 +1,83 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT45DBX configuration file.
+ *
+ * This file contains the possible external configuration of the AT45DBX.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_AT45DBX_H_
+#define _CONF_AT45DBX_H_
+
+
+#include "conf_access.h"
+
+#if AT45DBX_MEM == DISABLE
+ #error conf_at45dbx.h is #included although AT45DBX_MEM is disabled
+#endif
+
+
+#include "at45dbx.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+//! Size of AT45DBX data flash memories to manage.
+#define AT45DBX_MEM_SIZE AT45DBX_1MB
+
+//! Number of AT45DBX components to manage.
+#define AT45DBX_MEM_CNT 1
+
+//! First chip select used by AT45DBX components on the SPI module instance.
+//! AT45DBX_SPI_NPCS0_PIN always corresponds to this first NPCS, whatever it is.
+#define AT45DBX_SPI_FIRST_NPCS AT45DBX_SPI_NPCS
+
+//! SPI master speed in Hz.
+#define AT45DBX_SPI_MASTER_SPEED 12000000
+
+//! Number of bits in each SPI transfer.
+#define AT45DBX_SPI_BITS 8
+
+
+#endif // _CONF_AT45DBX_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h
new file mode 100644
index 0000000..aacdb13
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h
@@ -0,0 +1,108 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief CONF_EBI EBI/SMC driver for AVR32 UC3.
+ *
+ * \note The values defined in this file are device-specific. See the device
+ * datasheet for further information.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SMC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_EBI_H_
+#define _CONF_EBI_H_
+
+#include "compiler.h"
+#include "board.h"
+
+#if (ET024006DHU_SMC_USE_NCS == 0)
+#define SMC_USE_NCS0
+#define SMC_COMPONENT_CS0 ET024006DHU_SMC_COMPONENT_CS
+#else
+
+#if (ET024006DHU_SMC_USE_NCS == 2)
+#define SMC_USE_NCS2
+#define SMC_COMPONENT_CS2 ET024006DHU_SMC_COMPONENT_CS
+
+#else
+#error This board is not supported
+#endif
+#endif
+
+#define EBI_DATA_0 ET024006DHU_EBI_DATA_0
+#define EBI_DATA_1 ET024006DHU_EBI_DATA_1
+#define EBI_DATA_2 ET024006DHU_EBI_DATA_2
+#define EBI_DATA_3 ET024006DHU_EBI_DATA_3
+#define EBI_DATA_4 ET024006DHU_EBI_DATA_4
+#define EBI_DATA_5 ET024006DHU_EBI_DATA_5
+#define EBI_DATA_6 ET024006DHU_EBI_DATA_6
+#define EBI_DATA_7 ET024006DHU_EBI_DATA_7
+#define EBI_DATA_8 ET024006DHU_EBI_DATA_8
+#define EBI_DATA_9 ET024006DHU_EBI_DATA_9
+#define EBI_DATA_10 ET024006DHU_EBI_DATA_10
+#define EBI_DATA_11 ET024006DHU_EBI_DATA_11
+#define EBI_DATA_12 ET024006DHU_EBI_DATA_12
+#define EBI_DATA_13 ET024006DHU_EBI_DATA_13
+#define EBI_DATA_14 ET024006DHU_EBI_DATA_14
+#define EBI_DATA_15 ET024006DHU_EBI_DATA_15
+
+#if BOARD==EVK1105
+#ifdef EVK1105_REV3
+#define EBI_ADDR_19 AVR32_EBI_ADDR_19
+#define EBI_NCS_2 ET024006DHU_EBI_NCS
+#else
+#define EBI_ADDR_21 ET024006DHU_EBI_ADDR_21
+#define EBI_NCS_0 ET024006DHU_EBI_NCS
+#endif
+#elif BOARD == UC3C_EK
+#define EBI_ADDR_22 AVR32_EBI_ADDR_22
+#define EBI_NCS_0 ET024006DHU_EBI_NCS
+#elif BOARD == EVK1104
+#define EBI_ADDR_21 ET024006DHU_EBI_ADDR_21
+#define EBI_NCS_0 ET024006DHU_EBI_NCS
+#endif
+
+
+#define EBI_NWE0 ET024006DHU_EBI_NWE
+#define EBI_NRD ET024006DHU_EBI_NRD
+
+#endif // _CONF_EBI_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h
new file mode 100644
index 0000000..94b55e1
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h
@@ -0,0 +1,73 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief SD/MMC configuration file.
+ *
+ * This file contains the possible external configuration of the SD/MMC.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_SD_MMC_SPI_H_
+#define _CONF_SD_MMC_SPI_H_
+
+
+#include "conf_access.h"
+
+#if SD_MMC_SPI_MEM == DISABLE
+ #error conf_sd_mmc_spi.h is #included although SD_MMC_SPI_MEM is disabled
+#endif
+
+
+#include "sd_mmc_spi.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+//! SPI master speed in Hz.
+#define SD_MMC_SPI_MASTER_SPEED 12000000
+
+//! Number of bits in each SPI transfer.
+#define SD_MMC_SPI_BITS 8
+
+
+#endif // _CONF_SD_MMC_SPI_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x
new file mode 100644
index 0000000..c127121
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x
@@ -0,0 +1,74 @@
+/* This file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AVR32 UC3 ISP trampoline.
+ *
+ * In order to be able to program a project with both BatchISP and JTAGICE mkII
+ * without having to take the general-purpose fuses into consideration, add this
+ * file to the project and change the program entry point to _trampoline.
+ *
+ * The pre-programmed ISP will be erased if JTAGICE mkII is used.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32UC devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (C) 2006-2008, Atmel Corporation 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. The name of ATMEL may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+
+#include "conf_isp.h"
+
+
+//! @{
+//! \verbatim
+
+
+ // This must be linked @ 0x80000000 if it is to be run upon reset.
+ .section .reset, "ax", @progbits
+
+
+ .global _trampoline
+ .type _trampoline, @function
+_trampoline:
+ // Jump to program start.
+ rjmp program_start
+
+ .org PROGRAM_START_OFFSET
+program_start:
+ // Jump to the C runtime startup routine.
+ lda.w pc, _stext
+
+
+//! \endverbatim
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h
new file mode 100644
index 0000000..2b78ab6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h
@@ -0,0 +1,236 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1100 board header file.
+ *
+ * This file contains definitions and services related to the features of the
+ * EVK1100 board rev. B and C.
+ *
+ * To use this board, define BOARD=EVK1100.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _ARDUINO_H_
+#define _ARDUINO_H_
+
+#include "compiler.h"
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+# include "led.h"
+#endif // __AVR32_ABI_COMPILER__
+
+
+/*! \name Oscillator Definitions
+ */
+//! @{
+
+// RCOsc has no custom calibration by default. Set the following definition to
+// the appropriate value if a custom RCOsc calibration has been applied to your
+// part.
+//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz.
+
+#define FOSC32 32768 //!< Osc32 frequency: Hz.
+#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods.
+
+#define FOSC0 12000000 //!< Osc0 frequency: Hz.
+#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods.
+
+// Osc1 crystal is not mounted by default. Set the following definitions to the
+// appropriate values if a custom Osc1 crystal is mounted on your board.
+//#define FOSC1 12000000 //!< Osc1 frequency: Hz.
+//#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods.
+
+//! @}
+
+
+//! Number of LEDs.
+#define LED_COUNT 0
+
+/*! \name GPIO Connections of LEDs
+ */
+//! @{
+#define LED0_GPIO AVR32_PIN_PB19
+#define LED1_GPIO AVR32_PIN_PB20
+#define LED2_GPIO AVR32_PIN_PB21
+#define DEB_PIN_GPIO AVR32_PIN_PA20
+//! @}
+
+/*! \name PWM Channels of LEDs
+ */
+//! @{
+#define LED0_PWM 0
+#define LED1_PWM 1
+#define LED2_PWM 2
+//! @}
+
+/*! \name PWM Functions of LEDs
+ */
+//! @{
+#define LED0_PWM_FUNCTION AVR32_PWM_0_FUNCTION
+#define LED1_PWM_FUNCTION AVR32_PWM_1_FUNCTION
+#define LED2_PWM_FUNCTION AVR32_PWM_2_FUNCTION
+//! @}
+
+/*! \name Color Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED_MONO0_GREEN LED0
+#define LED_MONO1_RED LED1
+#define LED_MONO2_BLU LED2
+//! @}
+
+#if 0
+/*! \name SPI Connections of the DIP204 LCD
+ */
+//! @{
+#define DIP204_SPI (&AVR32_SPI1)
+#define DIP204_SPI_NPCS 2
+#define DIP204_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN
+#define DIP204_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION
+#define DIP204_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN
+#define DIP204_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION
+#define DIP204_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN
+#define DIP204_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION
+#define DIP204_SPI_NPCS_PIN AVR32_SPI1_NPCS_2_0_PIN
+#define DIP204_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION
+//! @}
+
+/*! \name GPIO and PWM Connections of the DIP204 LCD Backlight
+ */
+//! @{
+#define DIP204_BACKLIGHT_PIN AVR32_PIN_PB18
+#define DIP204_PWM_CHANNEL 6
+#define DIP204_PWM_PIN AVR32_PWM_6_PIN
+#define DIP204_PWM_FUNCTION AVR32_PWM_6_FUNCTION
+//! @}
+#endif
+
+/*! \name SPI Connections of the AT45DBX Data Flash Memory
+ */
+//! @{
+#define AT45DBX_SPI (&AVR32_SPI1)
+#define AT45DBX_SPI_NPCS 2
+#define AT45DBX_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN
+#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION
+#define AT45DBX_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN
+#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION
+#define AT45DBX_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN
+#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION
+#define AT45DBX_SPI_NPCS2_PIN AVR32_SPI1_NPCS_2_0_PIN
+#define AT45DBX_SPI_NPCS2_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION
+#define AT45DBX_CHIP_RESET AVR32_PIN_PA02
+//! @}
+
+
+/*! \name GPIO and SPI Connections of the SD/MMC Connector
+ */
+//! @{
+//#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02
+//#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA07
+#define SD_MMC_SPI (&AVR32_SPI1)
+#define SD_MMC_SPI_NPCS 1
+#define SD_MMC_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN
+#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION
+#define SD_MMC_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN
+#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION
+#define SD_MMC_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN
+#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION
+#define SD_MMC_SPI_NPCS_PIN AVR32_SPI1_NPCS_1_0_PIN
+#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_1_0_FUNCTION
+//! @}
+
+/* Timer Counter to generate clock for WiFi chip*/
+# define WIFI_TC (&AVR32_TC)
+# define WIFI_TC_CHANNEL_ID 0
+# define WIFI_TC_CHANNEL_PIN AVR32_TC_A0_0_0_PIN
+# define WIFI_TC_CHANNEL_FUNCTION AVR32_TC_A0_0_0_FUNCTION
+// Note that TC_A0_0_0 pin is pin 6 (PB23) on AT32UC3A1512 QFP100.
+
+/* Pin related to WiFi chip communication */
+#ifndef USE_POLL
+ #define USE_POLL
+#endif
+ #define SPI_CS 0
+ #define AVR32_SPI AVR32_SPI1
+ #define GPIO_IRQ_PIN AVR32_PIN_PA03
+ #define GPIO_IRQ AVR32_GPIO_IRQ_7
+ #define GPIO_W_RESET_PIN AVR32_PIN_PA07
+ #define GPIO_W_SHUTDOWN_PIN AVR32_PIN_PA09
+
+/* Pin related to shield communication */
+ #define ARDUINO_HANDSHAKE_PIN AVR32_PIN_PA25
+ #define ARDUINO_EXTINT_PIN AVR32_PIN_PA04 //not used
+
+ #define AVR32_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX
+ #define AVR32_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX
+
+
+#if 0
+/*! \name TWI Connections of the Spare TWI Connector
+ */
+//! @{
+#define SPARE_TWI (&AVR32_TWI)
+#define SPARE_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define SPARE_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define SPARE_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define SPARE_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+//! @}
+
+
+/*! \name SPI Connections of the Spare SPI Connector
+ */
+//! @{
+#define SPARE_SPI (&AVR32_SPI0)
+#define SPARE_SPI_NPCS 0
+#define SPARE_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define SPARE_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define SPARE_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define SPARE_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define SPARE_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define SPARE_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define SPARE_SPI_NPCS_PIN AVR32_SPI0_NPCS_0_0_PIN
+#define SPARE_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION
+//! @}
+#endif
+
+#endif // _ARDUINO_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c
new file mode 100644
index 0000000..d7cd439
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c
@@ -0,0 +1,346 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1100 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1100 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "preprocessor.h"
+#include "compiler.h"
+#include "arduino.h"
+#include "led.h"
+
+
+//! Structure describing LED hardware connections.
+typedef const struct
+{
+ struct
+ {
+ U32 PORT; //!< LED GPIO port.
+ U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port.
+ } GPIO; //!< LED GPIO descriptor.
+ struct
+ {
+ S32 CHANNEL; //!< LED PWM channel (< 0 if N/A).
+ S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A).
+ } PWM; //!< LED PWM descriptor.
+} tLED_DESCRIPTOR;
+
+
+//! Hardware descriptors of all LEDs.
+static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] =
+{
+#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \
+ { \
+ {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\
+ {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \
+ },
+ MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~)
+#undef INSERT_LED_DESCRIPTOR
+};
+
+
+//! Saved state of all LEDs.
+static volatile U32 LED_State = (1 << LED_COUNT) - 1;
+
+
+U32 LED_Read_Display(void)
+{
+ return LED_State;
+}
+
+
+void LED_Display(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor;
+ volatile avr32_gpio_port_t *led_gpio_port;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ LED_State = leds;
+
+ // For all LEDs...
+ for (led_descriptor = &LED_DESCRIPTOR[0];
+ led_descriptor < LED_DESCRIPTOR + LED_COUNT;
+ led_descriptor++)
+ {
+ // Set the LED to the requested state.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ }
+}
+
+
+U32 LED_Read_Display_Mask(U32 mask)
+{
+ return Rd_bits(LED_State, mask);
+}
+
+
+void LED_Display_Mask(U32 mask, U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ mask &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Wr_bits(LED_State, mask, leds);
+
+ // While there are specified LEDs left to manage...
+ while (mask)
+ {
+ // Select the next specified LED and set it to the requested state.
+ led_shift = 1 + ctz(mask);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ leds >>= led_shift - 1;
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ mask >>= led_shift;
+ }
+}
+
+
+Bool LED_Test(U32 leds)
+{
+ return Tst_bits(LED_State, leds);
+}
+
+
+void LED_Off(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Clr_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it off.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_On(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Set_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it on.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_Toggle(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Tgl_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and toggle it.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+U32 LED_Read_Display_Field(U32 field)
+{
+ return Rd_bitfield(LED_State, field);
+}
+
+
+void LED_Display_Field(U32 field, U32 leds)
+{
+ // Move the bit-field to the appropriate position for the bit-mask.
+ LED_Display_Mask(field, leds << ctz(field));
+}
+
+
+U8 LED_Get_Intensity(U32 led)
+{
+ tLED_DESCRIPTOR *led_descriptor;
+
+ // Check that the argument value is valid.
+ led = ctz(led);
+ led_descriptor = &LED_DESCRIPTOR[led];
+ if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0;
+
+ // Return the duty cycle value if the LED PWM channel is enabled, else 0.
+ return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ?
+ AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0;
+}
+
+
+void LED_Set_Intensity(U32 leds, U8 intensity)
+{
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_pwm_channel_t *led_pwm_channel;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // For each specified LED...
+ for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift)
+ {
+ // Select the next specified LED and check that it has a PWM channel.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ if (led_descriptor->PWM.CHANNEL < 0) continue;
+
+ // Initialize or update the LED PWM channel.
+ led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL];
+ if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)))
+ {
+ led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) &
+ ~(AVR32_PWM_CALG_MASK |
+ AVR32_PWM_CPOL_MASK |
+ AVR32_PWM_CPD_MASK);
+ led_pwm_channel->cprd = 0x000000FF;
+ led_pwm_channel->cdty = intensity;
+ AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL;
+ }
+ else
+ {
+ AVR32_PWM.isr;
+ while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL)));
+ led_pwm_channel->cupd = intensity;
+ }
+
+ // Switch the LED pin to its PWM function.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (led_descriptor->PWM.FUNCTION & 0x1)
+ {
+ led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK;
+ }
+ if (led_descriptor->PWM.FUNCTION & 0x2)
+ {
+ led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK;
+ }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h
new file mode 100644
index 0000000..a577124
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h
@@ -0,0 +1,191 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1100 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1100 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _LED_H_
+#define _LED_H_
+
+#include "compiler.h"
+
+
+/*! \name Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED0 0x01
+#define LED1 0x02
+#define LED2 0x04
+#define LED3 0x08
+#define LED4 0x10
+#define LED5 0x20
+#define LED6 0x40
+#define LED7 0x80
+//! @}
+
+
+/*! \brief Gets the last state of all LEDs set through the LED API.
+ *
+ * \return State of all LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display(void);
+
+/*! \brief Sets the state of all LEDs.
+ *
+ * \param leds New state of all LEDs (1 bit per LED).
+ *
+ * \note The pins of all LEDs are set to GPIO output mode.
+ */
+extern void LED_Display(U32 leds);
+
+/*! \brief Gets the last state of the specified LEDs set through the LED API.
+ *
+ * \param mask LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Mask(U32 mask);
+
+/*! \brief Sets the state of the specified LEDs.
+ *
+ * \param mask LEDs of which to set the state (1 bit per LED).
+ *
+ * \param leds New state of the specified LEDs (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Mask(U32 mask, U32 leds);
+
+/*! \brief Tests the last state of the specified LEDs set through the LED API.
+ *
+ * \param leds LEDs of which to test the state (1 bit per LED).
+ *
+ * \return \c TRUE if at least one of the specified LEDs has a state on, else
+ * \c FALSE.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern Bool LED_Test(U32 leds);
+
+/*! \brief Turns off the specified LEDs.
+ *
+ * \param leds LEDs to turn off (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Off(U32 leds);
+
+/*! \brief Turns on the specified LEDs.
+ *
+ * \param leds LEDs to turn on (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_On(U32 leds);
+
+/*! \brief Toggles the specified LEDs.
+ *
+ * \param leds LEDs to toggle (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Toggle(U32 leds);
+
+/*! \brief Gets as a bit-field the last state of the specified LEDs set through
+ * the LED API.
+ *
+ * \param field LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED, beginning with the first
+ * specified LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Field(U32 field);
+
+/*! \brief Sets as a bit-field the state of the specified LEDs.
+ *
+ * \param field LEDs of which to set the state (1 bit per LED).
+ * \param leds New state of the specified LEDs (1 bit per LED, beginning with
+ * the first specified LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Field(U32 field, U32 leds);
+
+/*! \brief Gets the intensity of the specified LED.
+ *
+ * \param led LED of which to get the intensity (1 bit per LED; only the least
+ * significant set bit is used).
+ *
+ * \return Intensity of the specified LED (0x00 to 0xFF).
+ *
+ * \warning The PWM channel of the specified LED is supposed to be used only by
+ * this module.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U8 LED_Get_Intensity(U32 led);
+
+/*! \brief Sets the intensity of the specified LEDs.
+ *
+ * \param leds LEDs of which to set the intensity (1 bit per LED).
+ * \param intensity New intensity of the specified LEDs (0x00 to 0xFF).
+ *
+ * \warning The PWM channels of the specified LEDs are supposed to be used only
+ * by this module.
+ *
+ * \note The pins of the specified LEDs are set to PWM output mode.
+ */
+extern void LED_Set_Intensity(U32 leds, U8 intensity);
+
+
+#endif // _LED_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h
new file mode 100644
index 0000000..edda44c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h
@@ -0,0 +1,433 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1105 board header file.
+ *
+ * This file contains definitions and services related to the features of the
+ * EVK1105 board rev. B.
+ *
+ * To use this board, define BOARD=EVK1105.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _EVK1105_H_
+#define _EVK1105_H_
+
+#ifdef EVK1105_REV3
+# include "evk1105_rev3.h"
+#else
+
+#include "compiler.h"
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+# include "led.h"
+#endif // __AVR32_ABI_COMPILER__
+
+
+/*! \name Oscillator Definitions
+ */
+//! @{
+
+// RCOsc has no custom calibration by default. Set the following definition to
+// the appropriate value if a custom RCOsc calibration has been applied to your
+// part.
+//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz.
+
+#define FOSC32 32768 //!< Osc32 frequency: Hz.
+#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods.
+
+#define FOSC0 12000000 //!< Osc0 frequency: Hz.
+#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods.
+
+#define FOSC1 11289600 //!< Osc1 frequency: Hz
+#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods.
+
+
+//! @}
+
+
+/*! \name SDRAM Definitions
+ */
+//! @{
+
+//! Part header file of used SDRAM(s).
+#define SDRAM_PART_HDR "MT48LC16M16A2TG7E/mt48lc16m16a2tg7e.h"
+
+//! Data bus width to use the SDRAM(s) with (16 or 32 bits; always 16 bits on
+//! UC3).
+#define SDRAM_DBW 16
+//! @}
+
+
+/*! \name USB Definitions
+ */
+//! @{
+//! Multiplexed pin used for USB_ID: AVR32_USBB_USB_ID_x_x.
+//! To be selected according to the AVR32_USBB_USB_ID_x_x_PIN and
+//! AVR32_USBB_USB_ID_x_x_FUNCTION definitions from <avr32/uc3axxxx.h>.
+#define AVR32_USBB_USB_ID_0_2_PIN 21
+#define AVR32_USBB_USB_ID_0_2_FUNCTION 2
+#define USB_ID AVR32_USBB_USB_ID_0_2
+
+//! Multiplexed pin used for USB_VBOF: AVR32_USBB_USB_VBOF_x_x.
+//! To be selected according to the AVR32_USBB_USB_VBOF_x_x_PIN and
+//! AVR32_USBB_USB_VBOF_x_x_FUNCTION definitions from <avr32/uc3axxxx.h>.
+# define USB_VBOF AVR32_USBB_USB_VBOF_0_1
+
+
+//! Active level of the USB_VBOF output pin.
+# define USB_VBOF_ACTIVE_LEVEL LOW
+
+//! USB overcurrent detection pin.
+# define USB_OVERCURRENT_DETECT_PIN AVR32_PIN_PX15
+
+//! @}
+
+
+//! GPIO connection of the MAC PHY PWR_DOWN/INT signal.
+# define MACB_INTERRUPT_PIN AVR32_PIN_PA26
+
+
+
+//! Number of LEDs.
+#define LED_COUNT 4
+
+/*! \name GPIO Connections of LEDs
+ */
+//! @{
+# define LED0_GPIO AVR32_PIN_PB27
+# define LED1_GPIO AVR32_PIN_PB28
+# define LED2_GPIO AVR32_PIN_PA05
+# define LED3_GPIO AVR32_PIN_PA06
+//! @}
+
+/*! \name Color Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED_MONO0_GREEN LED0
+#define LED_MONO1_GREEN LED1
+#define LED_MONO2_GREEN LED2
+#define LED_MONO3_GREEN LED3
+//! @}
+
+/*! \name PWM Channels of LEDs
+ */
+//! @{
+#define LED0_PWM 4
+#define LED1_PWM 5
+#define LED2_PWM (-1)
+#define LED3_PWM (-1)
+//! @}
+
+/*! \name PWM Functions of LEDs
+ */
+//! @{
+/* TODO: Implement PWM functionality */
+#define LED0_PWM_FUNCTION (-1)//AVR32_PWM_0_FUNCTION
+#define LED1_PWM_FUNCTION (-1)//AVR32_PWM_1_FUNCTION
+#define LED2_PWM_FUNCTION (-1)
+#define LED3_PWM_FUNCTION (-1)
+//! @}
+
+//! External interrupt connection of touch sensor.
+#define QT1081_EIC_EXTINT_PIN AVR32_EIC_EXTINT_1_PIN
+#define QT1081_EIC_EXTINT_FUNCTION AVR32_EIC_EXTINT_1_FUNCTION
+#define QT1081_EIC_EXTINT_IRQ AVR32_EIC_IRQ_1
+#define QT1081_EIC_EXTINT_INT AVR32_EIC_INT1
+/*! \name Touch sensor low power mode select
+ */
+#define QT1081_LP_MODE AVR32_PIN_PB29
+
+/*! \name GPIO Connections of touch buttons
+ */
+//! @{
+#define QT1081_TOUCH_SENSOR_0 AVR32_PIN_PB22
+#define QT1081_TOUCH_SENSOR_0_PRESSED 1
+#define QT1081_TOUCH_SENSOR_1 AVR32_PIN_PB23
+#define QT1081_TOUCH_SENSOR_1_PRESSED 1
+#define QT1081_TOUCH_SENSOR_2 AVR32_PIN_PB24
+#define QT1081_TOUCH_SENSOR_2_PRESSED 1
+#define QT1081_TOUCH_SENSOR_3 AVR32_PIN_PB25
+#define QT1081_TOUCH_SENSOR_3_PRESSED 1
+#define QT1081_TOUCH_SENSOR_4 AVR32_PIN_PB26
+#define QT1081_TOUCH_SENSOR_4_PRESSED 1
+
+#define QT1081_TOUCH_SENSOR_ENTER QT1081_TOUCH_SENSOR_4
+#define QT1081_TOUCH_SENSOR_ENTER_PRESSED QT1081_TOUCH_SENSOR_4_PRESSED
+#define QT1081_TOUCH_SENSOR_LEFT QT1081_TOUCH_SENSOR_3
+#define QT1081_TOUCH_SENSOR_LEFT_PRESSED QT1081_TOUCH_SENSOR_3_PRESSED
+#define QT1081_TOUCH_SENSOR_RIGHT QT1081_TOUCH_SENSOR_2
+#define QT1081_TOUCH_SENSOR_RIGHT_PRESSED QT1081_TOUCH_SENSOR_2_PRESSED
+#define QT1081_TOUCH_SENSOR_UP QT1081_TOUCH_SENSOR_0
+#define QT1081_TOUCH_SENSOR_UP_PRESSED QT1081_TOUCH_SENSOR_0_PRESSED
+#define QT1081_TOUCH_SENSOR_DOWN QT1081_TOUCH_SENSOR_1
+#define QT1081_TOUCH_SENSOR_DOWN_PRESSED QT1081_TOUCH_SENSOR_1_PRESSED
+//! @}
+
+/*! \name SPI Connections of the AT45DBX Data Flash Memory
+ */
+//! @{
+#define AT45DBX_SPI (&AVR32_SPI0)
+#define AT45DBX_SPI_NPCS 0
+#define AT45DBX_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define AT45DBX_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define AT45DBX_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define AT45DBX_SPI_NPCS0_PIN AVR32_SPI0_NPCS_0_0_PIN
+#define AT45DBX_SPI_NPCS0_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION
+//! @}
+
+/*! \name GPIO and SPI Connections of the SD/MMC Connector
+ */
+//! @{
+#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02
+#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA18
+#define SD_MMC_SPI (&AVR32_SPI0)
+#define SD_MMC_SPI_NPCS 1
+#define SD_MMC_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define SD_MMC_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define SD_MMC_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define SD_MMC_SPI_NPCS_PIN AVR32_SPI0_NPCS_1_0_PIN
+#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_1_0_FUNCTION
+//! @}
+
+
+/*! \name TWI expansion
+ */
+//! @{
+#define EXPANSION_TWI (&AVR32_TWI)
+#define EXPANSION_RESET AVR32_PIN_PX16
+#define EXPANSION_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define EXPANSION_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define EXPANSION_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define EXPANSION_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+//! @}
+
+/*! \name Wireless expansion
+ */
+
+#define WEXPANSION_EXTINT_PIN AVR32_EIC_EXTINT_8_PIN
+#define WEXPANSION_EXTINT_FUNCTION AVR32_EIC_EXTINT_8_FUNCTION
+#define WEXPANSION_GPIO1 AVR32_PIN_PB30
+#define WEXPANSION_GPIO2 AVR32_PIN_PB31
+
+#define WEXPANSION_SPI (&AVR32_SPI0)
+#define WEXPANSION_SPI_NPCS 2
+#define WEXPANSION_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define WEXPANSION_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define WEXPANSION_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define WEXPANSION_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define WEXPANSION_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define WEXPANSION_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define WEXPANSION_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN
+#define WEXPANSION_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION
+
+//! @}
+
+/*! \name ET024006DHU TFT display
+ */
+//! @{
+
+#define ET024006DHU_TE_PIN AVR32_PIN_PX19
+#define ET024006DHU_RESET_PIN AVR32_PIN_PX22
+#define ET024006DHU_BL_PIN AVR32_PWM_6_PIN
+#define ET024006DHU_BL_FUNCTION AVR32_PWM_6_FUNCTION
+#define ET024006DHU_DNC_PIN AVR32_EBI_ADDR_21_1_PIN
+#define ET024006DHU_DNC_FUNCTION AVR32_EBI_ADDR_21_1_FUNCTION
+#define ET024006DHU_EBI_NCS_PIN AVR32_EBI_NCS_0_1_PIN
+#define ET024006DHU_EBI_NCS_FUNCTION AVR32_EBI_NCS_0_1_FUNCTION
+
+//! @}
+/*! \name Optional SPI connection to the TFT
+ */
+//! @{
+
+#define ET024006DHU_SPI (&AVR32_SPI0)
+#define ET024006DHU_SPI_NPCS 3
+#define ET024006DHU_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define ET024006DHU_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define ET024006DHU_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define ET024006DHU_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define ET024006DHU_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define ET024006DHU_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define ET024006DHU_SPI_NPCS_PIN AVR32_SPI1_NPCS_3_0_PIN
+#define ET024006DHU_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_3_0_FUNCTION
+
+//! @}
+
+
+/*! \name Audio amplifier connection to the DAC
+ */
+//! @{
+
+#define TPA6130_ABDAC (&AVR32_ABDAC)
+
+#define TPA6130_DATA0_PIN AVR32_ABDAC_DATA_0_1_PIN
+#define TPA6130_DATA0_FUNCTION AVR32_ABDAC_DATA_0_1_FUNCTION
+#define TPA6130_DATAN0_PIN AVR32_ABDAC_DATAN_0_1_PIN
+#define TPA6130_DATAN0_FUNCTION AVR32_ABDAC_DATAN_0_1_FUNCTION
+#define TPA6130_DATA1_PIN AVR32_ABDAC_DATA_1_1_PIN
+#define TPA6130_DATA1_FUNCTION AVR32_ABDAC_DATA_1_1_FUNCTION
+#define TPA6130_DATAN1_PIN AVR32_ABDAC_DATAN_1_1_PIN
+#define TPA6130_DATAN1_FUNCTION AVR32_ABDAC_DATAN_1_1_FUNCTION
+
+#define TPA6130_ABDAC_PDCA_PID AVR32_PDCA_PID_ABDAC_TX
+#define TPA6130_ABDAC_PDCA_CHANNEL 0
+#define TPA6130_ABDAC_PDCA_IRQ AVR32_PDCA_IRQ_0
+#define TPA6130_ABDAC_PDCA_INT_LEVEL AVR32_INTC_INT3
+
+#define TPA6130_TWI (&AVR32_TWI)
+#define TPA6130_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define TPA6130_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define TPA6130_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define TPA6130_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+
+//! }@
+/*! \name TI TLV320AIC23B sound chip
+ */
+//! @{
+#define TLV320_SSC (&AVR32_SSC)
+#define TLV320_SSC_TX_CLOCK_PIN AVR32_SSC_TX_CLOCK_0_PIN
+#define TLV320_SSC_TX_CLOCK_FUNCTION AVR32_SSC_TX_CLOCK_0_FUNCTION
+#define TLV320_SSC_TX_DATA_PIN AVR32_SSC_TX_DATA_0_PIN
+#define TLV320_SSC_TX_DATA_FUNCTION AVR32_SSC_TX_DATA_0_FUNCTION
+#define TLV320_SSC_TX_FRAME_SYNC_PIN AVR32_SSC_TX_FRAME_SYNC_0_PIN
+#define TLV320_SSC_TX_FRAME_SYNC_FUNCTION AVR32_SSC_TX_FRAME_SYNC_0_FUNCTION
+
+#define TLV320_TWI (&AVR32_TWI)
+#define TLV320_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define TLV320_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define TLV320_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define TLV320_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+
+#define TLV320_PM_GCLK_PIN AVR32_PM_GCLK_0_0_PIN
+#define TLV320_PM_GCLK_FUNCTION AVR32_PM_GCLK_0_0_FUNCTION
+//! @}
+
+////! \name SPI: Apple Authentication Chip Hardware Connections
+////! @{
+#define IPOD_AUTH_CHIP_SPI (&AVR32_SPI0)
+#define IPOD_AUTH_CHIP_SPI_IRQ AVR32_SPI0_IRQ
+#define IPOD_AUTH_CHIP_SPI_NPCS 2
+#define IPOD_AUTH_CHIP_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define IPOD_AUTH_CHIP_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define IPOD_AUTH_CHIP_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define IPOD_AUTH_CHIP_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN
+#define IPOD_AUTH_CHIP_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_N_RESET_PIN AVR32_PIN_PB30
+#define IPOD_AUTH_CHIP_SPI_CP_READY_PIN AVR32_PIN_PB31
+//! }@
+
+/*! \name Connections of the iPOD Authentication Coprocessor
+ */
+//! @{
+
+#define IPOD_AUTH_CHIP_TWI (&AVR32_TWI)
+#define IPOD_AUTH_CHIP_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define IPOD_AUTH_CHIP_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define IPOD_AUTH_CHIP_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_TWI_N_RESET_PIN AVR32_PIN_PX16
+
+//! @}
+
+/*! \name USART connection to the UC3B board controller
+ */
+//! @{
+
+#define USART0_RXD_PIN AVR32_USART0_RXD_0_0_PIN
+#define USART0_RXD_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION
+#define USART0_TXD_PIN AVR32_USART0_TXD_0_0_PIN
+#define USART0_TXD_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION
+#define USART0_RTS_PIN AVR32_USART0_RTS_0_0_PIN
+#define USART0_RTS_FUNCTION AVR32_USART0_RTS_0_0_FUNCTION
+#define USART0_CTS_PIN AVR32_USART0_CTS_0_0_PIN
+#define USART0_CTS_FUNCTION AVR32_USART0_CTS_0_0_FUNCTION
+
+//! @}
+
+#define ADC_VEXT_PIN AVR32_ADC_AD_7_PIN
+#define ADC_VEXT_FUNCTION AVR32_ADC_AD_7_FUNCTION
+
+/*! \name LCD Connections of the ET024006DHU display
+ */
+//! @{
+#define ET024006DHU_SMC_USE_NCS 0
+#define ET024006DHU_SMC_COMPONENT_CS "smc_et024006dhu.h"
+
+#define ET024006DHU_EBI_DATA_0 AVR32_EBI_DATA_0
+#define ET024006DHU_EBI_DATA_1 AVR32_EBI_DATA_1
+#define ET024006DHU_EBI_DATA_2 AVR32_EBI_DATA_2
+#define ET024006DHU_EBI_DATA_3 AVR32_EBI_DATA_3
+#define ET024006DHU_EBI_DATA_4 AVR32_EBI_DATA_4
+#define ET024006DHU_EBI_DATA_5 AVR32_EBI_DATA_5
+#define ET024006DHU_EBI_DATA_6 AVR32_EBI_DATA_6
+#define ET024006DHU_EBI_DATA_7 AVR32_EBI_DATA_7
+#define ET024006DHU_EBI_DATA_8 AVR32_EBI_DATA_8
+#define ET024006DHU_EBI_DATA_9 AVR32_EBI_DATA_9
+#define ET024006DHU_EBI_DATA_10 AVR32_EBI_DATA_10
+#define ET024006DHU_EBI_DATA_11 AVR32_EBI_DATA_11
+#define ET024006DHU_EBI_DATA_12 AVR32_EBI_DATA_12
+#define ET024006DHU_EBI_DATA_13 AVR32_EBI_DATA_13
+#define ET024006DHU_EBI_DATA_14 AVR32_EBI_DATA_14
+#define ET024006DHU_EBI_DATA_15 AVR32_EBI_DATA_15
+
+#define ET024006DHU_EBI_ADDR_21 AVR32_EBI_ADDR_21_1
+
+#define ET024006DHU_EBI_NWE AVR32_EBI_NWE0_0
+#define ET024006DHU_EBI_NRD AVR32_EBI_NRD_0
+#define ET024006DHU_EBI_NCS AVR32_EBI_NCS_0_1
+//! @}
+
+
+#endif // !EVK1105_REVA
+
+#endif // _EVK1105_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c
new file mode 100644
index 0000000..561652a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c
@@ -0,0 +1,346 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1105 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1105 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "preprocessor.h"
+#include "compiler.h"
+#include "evk1105.h"
+#include "led.h"
+
+
+//! Structure describing LED hardware connections.
+typedef const struct
+{
+ struct
+ {
+ U32 PORT; //!< LED GPIO port.
+ U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port.
+ } GPIO; //!< LED GPIO descriptor.
+ struct
+ {
+ S32 CHANNEL; //!< LED PWM channel (< 0 if N/A).
+ S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A).
+ } PWM; //!< LED PWM descriptor.
+} tLED_DESCRIPTOR;
+
+
+//! Hardware descriptors of all LEDs.
+static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] =
+{
+#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \
+ { \
+ {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\
+ {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \
+ },
+ MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~)
+#undef INSERT_LED_DESCRIPTOR
+};
+
+
+//! Saved state of all LEDs.
+static volatile U32 LED_State = (1 << LED_COUNT) - 1;
+
+
+U32 LED_Read_Display(void)
+{
+ return LED_State;
+}
+
+
+void LED_Display(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor;
+ volatile avr32_gpio_port_t *led_gpio_port;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ LED_State = leds;
+
+ // For all LEDs...
+ for (led_descriptor = &LED_DESCRIPTOR[0];
+ led_descriptor < LED_DESCRIPTOR + LED_COUNT;
+ led_descriptor++)
+ {
+ // Set the LED to the requested state.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ }
+}
+
+
+U32 LED_Read_Display_Mask(U32 mask)
+{
+ return Rd_bits(LED_State, mask);
+}
+
+
+void LED_Display_Mask(U32 mask, U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ mask &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Wr_bits(LED_State, mask, leds);
+
+ // While there are specified LEDs left to manage...
+ while (mask)
+ {
+ // Select the next specified LED and set it to the requested state.
+ led_shift = 1 + ctz(mask);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ leds >>= led_shift - 1;
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ mask >>= led_shift;
+ }
+}
+
+
+Bool LED_Test(U32 leds)
+{
+ return Tst_bits(LED_State, leds);
+}
+
+
+void LED_Off(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Clr_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it off.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_On(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Set_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it on.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_Toggle(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Tgl_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and toggle it.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+U32 LED_Read_Display_Field(U32 field)
+{
+ return Rd_bitfield(LED_State, field);
+}
+
+
+void LED_Display_Field(U32 field, U32 leds)
+{
+ // Move the bit-field to the appropriate position for the bit-mask.
+ LED_Display_Mask(field, leds << ctz(field));
+}
+
+
+U8 LED_Get_Intensity(U32 led)
+{
+ tLED_DESCRIPTOR *led_descriptor;
+
+ // Check that the argument value is valid.
+ led = ctz(led);
+ led_descriptor = &LED_DESCRIPTOR[led];
+ if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0;
+
+ // Return the duty cycle value if the LED PWM channel is enabled, else 0.
+ return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ?
+ AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0;
+}
+
+
+void LED_Set_Intensity(U32 leds, U8 intensity)
+{
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_pwm_channel_t *led_pwm_channel;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // For each specified LED...
+ for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift)
+ {
+ // Select the next specified LED and check that it has a PWM channel.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ if (led_descriptor->PWM.CHANNEL < 0) continue;
+
+ // Initialize or update the LED PWM channel.
+ led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL];
+ if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)))
+ {
+ led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) &
+ ~(AVR32_PWM_CALG_MASK |
+ AVR32_PWM_CPOL_MASK |
+ AVR32_PWM_CPD_MASK);
+ led_pwm_channel->cprd = 0x000000FF;
+ led_pwm_channel->cdty = intensity;
+ AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL;
+ }
+ else
+ {
+ AVR32_PWM.isr;
+ while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL)));
+ led_pwm_channel->cupd = intensity;
+ }
+
+ // Switch the LED pin to its PWM function.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (led_descriptor->PWM.FUNCTION & 0x1)
+ {
+ led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK;
+ }
+ if (led_descriptor->PWM.FUNCTION & 0x2)
+ {
+ led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK;
+ }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h
new file mode 100644
index 0000000..7766b6a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h
@@ -0,0 +1,187 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1105 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1105 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _LED_H_
+#define _LED_H_
+
+#include "compiler.h"
+
+
+/*! \name Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED0 0x01
+#define LED1 0x02
+#define LED2 0x04
+#define LED3 0x08
+//! @}
+
+
+/*! \brief Gets the last state of all LEDs set through the LED API.
+ *
+ * \return State of all LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display(void);
+
+/*! \brief Sets the state of all LEDs.
+ *
+ * \param leds New state of all LEDs (1 bit per LED).
+ *
+ * \note The pins of all LEDs are set to GPIO output mode.
+ */
+extern void LED_Display(U32 leds);
+
+/*! \brief Gets the last state of the specified LEDs set through the LED API.
+ *
+ * \param mask LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Mask(U32 mask);
+
+/*! \brief Sets the state of the specified LEDs.
+ *
+ * \param mask LEDs of which to set the state (1 bit per LED).
+ *
+ * \param leds New state of the specified LEDs (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Mask(U32 mask, U32 leds);
+
+/*! \brief Tests the last state of the specified LEDs set through the LED API.
+ *
+ * \param leds LEDs of which to test the state (1 bit per LED).
+ *
+ * \return \c TRUE if at least one of the specified LEDs has a state on, else
+ * \c FALSE.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern Bool LED_Test(U32 leds);
+
+/*! \brief Turns off the specified LEDs.
+ *
+ * \param leds LEDs to turn off (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Off(U32 leds);
+
+/*! \brief Turns on the specified LEDs.
+ *
+ * \param leds LEDs to turn on (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_On(U32 leds);
+
+/*! \brief Toggles the specified LEDs.
+ *
+ * \param leds LEDs to toggle (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Toggle(U32 leds);
+
+/*! \brief Gets as a bit-field the last state of the specified LEDs set through
+ * the LED API.
+ *
+ * \param field LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED, beginning with the first
+ * specified LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Field(U32 field);
+
+/*! \brief Sets as a bit-field the state of the specified LEDs.
+ *
+ * \param field LEDs of which to set the state (1 bit per LED).
+ * \param leds New state of the specified LEDs (1 bit per LED, beginning with
+ * the first specified LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Field(U32 field, U32 leds);
+
+/*! \brief Gets the intensity of the specified LED.
+ *
+ * \param led LED of which to get the intensity (1 bit per LED; only the least
+ * significant set bit is used).
+ *
+ * \return Intensity of the specified LED (0x00 to 0xFF).
+ *
+ * \warning The PWM channel of the specified LED is supposed to be used only by
+ * this module.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U8 LED_Get_Intensity(U32 led);
+
+/*! \brief Sets the intensity of the specified LEDs.
+ *
+ * \param leds LEDs of which to set the intensity (1 bit per LED).
+ * \param intensity New intensity of the specified LEDs (0x00 to 0xFF).
+ *
+ * \warning The PWM channels of the specified LEDs are supposed to be used only
+ * by this module.
+ *
+ * \note The pins of the specified LEDs are set to PWM output mode.
+ */
+extern void LED_Set_Intensity(U32 leds, U8 intensity);
+
+
+#endif // _LED_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h
new file mode 100644
index 0000000..78ee91e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h
@@ -0,0 +1,120 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Standard board header file.
+ *
+ * This file includes the appropriate board header file according to the
+ * defined board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _BOARD_H_
+#define _BOARD_H_
+
+#include <avr32/io.h>
+
+/*! \name Base Boards
+ */
+//! @{
+#define EVK1100 1 //!< AT32UC3A EVK1100 board.
+#define EVK1101 2 //!< AT32UC3B EVK1101 board.
+#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board.
+#define EVK1104 4 //!< AT32UC3A3 EVK1104 board.
+#define EVK1105 5 //!< AT32UC3A EVK1105 board.
+#define STK1000 6 //!< AT32AP7000 STK1000 board.
+#define NGW100 7 //!< AT32AP7000 NGW100 board.
+#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board.
+#define UC3L_EK 9 //!< AT32UC3L-EK board.
+#define USER_BOARD 99 //!< User-reserved board (if any).
+//! @}
+
+/*! \name Extension Boards
+ */
+//! @{
+#define EXT1102 1 //!< AT32UC3B EXT1102 board.
+#define MC300 2 //!< AT32UC3 MC300 board.
+#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any).
+//! @}
+
+#if BOARD == EVK1100
+ #include "EVK1100/evk1100.h"
+#elif BOARD == EVK1101
+ #include "EVK1101/evk1101.h"
+#elif BOARD == UC3C_EK
+ #include "UC3C_EK/uc3c_ek.h"
+#elif BOARD == EVK1104
+ #include "EVK1104/evk1104.h"
+#elif BOARD == EVK1105
+ #include "EVK1105/evk1105.h"
+#elif BOARD == STK1000
+ #include "STK1000/stk1000.h"
+#elif BOARD == NGW100
+ #include "NGW100/ngw100.h"
+#elif BOARD == STK600_RCUC3L0
+ #include "STK600/RCUC3L0/stk600_rcuc3l0.h"
+#elif BOARD == UC3L_EK
+ #include "UC3L_EK/uc3l_ek.h"
+#elif BOARD == ARDUINO
+ #include "ARDUINO/arduino.h"
+#else
+ #error No known AVR32 board defined
+#endif
+
+#if (defined EXT_BOARD)
+ #if EXT_BOARD == EXT1102
+ #include "EXT1102/ext1102.h"
+ #elif EXT_BOARD == MC300
+ #include "MC300/mc300.h"
+ #elif EXT_BOARD == USER_EXT_BOARD
+ // User-reserved area: #include the header file of your extension board here
+ // (if any).
+ #endif
+#endif
+
+
+#ifndef FRCOSC
+ #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency.
+#endif
+
+
+#endif // _BOARD_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my
new file mode 100644
index 0000000..78ee91e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my
@@ -0,0 +1,120 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Standard board header file.
+ *
+ * This file includes the appropriate board header file according to the
+ * defined board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _BOARD_H_
+#define _BOARD_H_
+
+#include <avr32/io.h>
+
+/*! \name Base Boards
+ */
+//! @{
+#define EVK1100 1 //!< AT32UC3A EVK1100 board.
+#define EVK1101 2 //!< AT32UC3B EVK1101 board.
+#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board.
+#define EVK1104 4 //!< AT32UC3A3 EVK1104 board.
+#define EVK1105 5 //!< AT32UC3A EVK1105 board.
+#define STK1000 6 //!< AT32AP7000 STK1000 board.
+#define NGW100 7 //!< AT32AP7000 NGW100 board.
+#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board.
+#define UC3L_EK 9 //!< AT32UC3L-EK board.
+#define USER_BOARD 99 //!< User-reserved board (if any).
+//! @}
+
+/*! \name Extension Boards
+ */
+//! @{
+#define EXT1102 1 //!< AT32UC3B EXT1102 board.
+#define MC300 2 //!< AT32UC3 MC300 board.
+#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any).
+//! @}
+
+#if BOARD == EVK1100
+ #include "EVK1100/evk1100.h"
+#elif BOARD == EVK1101
+ #include "EVK1101/evk1101.h"
+#elif BOARD == UC3C_EK
+ #include "UC3C_EK/uc3c_ek.h"
+#elif BOARD == EVK1104
+ #include "EVK1104/evk1104.h"
+#elif BOARD == EVK1105
+ #include "EVK1105/evk1105.h"
+#elif BOARD == STK1000
+ #include "STK1000/stk1000.h"
+#elif BOARD == NGW100
+ #include "NGW100/ngw100.h"
+#elif BOARD == STK600_RCUC3L0
+ #include "STK600/RCUC3L0/stk600_rcuc3l0.h"
+#elif BOARD == UC3L_EK
+ #include "UC3L_EK/uc3l_ek.h"
+#elif BOARD == ARDUINO
+ #include "ARDUINO/arduino.h"
+#else
+ #error No known AVR32 board defined
+#endif
+
+#if (defined EXT_BOARD)
+ #if EXT_BOARD == EXT1102
+ #include "EXT1102/ext1102.h"
+ #elif EXT_BOARD == MC300
+ #include "MC300/mc300.h"
+ #elif EXT_BOARD == USER_EXT_BOARD
+ // User-reserved area: #include the header file of your extension board here
+ // (if any).
+ #endif
+#endif
+
+
+#ifndef FRCOSC
+ #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency.
+#endif
+
+
+#endif // _BOARD_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c
new file mode 100644
index 0000000..93d3dd9
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c
@@ -0,0 +1,653 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Management of the AT45DBX data flash controller through SPI.
+ *
+ * This file manages the accesses to the AT45DBX data flash components.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+//_____ I N C L U D E S ___________________________________________________
+
+#include "conf_access.h"
+
+
+#if AT45DBX_MEM == ENABLE
+
+#include "compiler.h"
+#include "board.h"
+#include "gpio.h"
+#include "spi.h"
+#include "conf_at45dbx.h"
+#include "at45dbx.h"
+
+
+#if AT45DBX_MEM_CNT > 4
+ #error AT45DBX_MEM_CNT must not exceed 4
+#endif
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+/*! \name AT45DBX Group A Commands
+ */
+//! @{
+#define AT45DBX_CMDA_RD_PAGE 0xD2 //!< Main Memory Page Read (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_ARRAY_LEG 0xE8 //!< Continuous Array Read, Legacy Command (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_ARRAY_LF_SM 0x03 //!< Continuous Array Read, Low-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDA_RD_ARRAY_AF_SM 0x0B //!< Continuous Array Read, Any-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDA_RD_SECTOR_PROT_REG 0x32 //!< Read Sector Protection Register (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_SECTOR_LKDN_REG 0x35 //!< Read Sector Lockdown Register (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_SECURITY_REG 0x77 //!< Read Security Register (Serial/8-bit Mode).
+//! @}
+
+/*! \name AT45DBX Group B Commands
+ */
+//! @{
+#define AT45DBX_CMDB_ER_PAGE 0x81 //!< Page Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_ER_BLOCK 0x50 //!< Block Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_ER_SECTOR 0x7C //!< Sector Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_ER_CHIP 0xC794809A //!< Chip Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_XFR_PAGE_TO_BUF1 0x53 //!< Main Memory Page to Buffer 1 Transfer (Serial/8-bit Mode).
+#define AT45DBX_CMDB_XFR_PAGE_TO_BUF2 0x55 //!< Main Memory Page to Buffer 2 Transfer (Serial/8-bit Mode).
+#define AT45DBX_CMDB_CMP_PAGE_TO_BUF1 0x60 //!< Main Memory Page to Buffer 1 Compare (Serial/8-bit Mode).
+#define AT45DBX_CMDB_CMP_PAGE_TO_BUF2 0x61 //!< Main Memory Page to Buffer 2 Compare (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF1_TO_PAGE_ER 0x83 //!< Buffer 1 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF2_TO_PAGE_ER 0x86 //!< Buffer 2 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF1_TO_PAGE 0x88 //!< Buffer 1 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF2_TO_PAGE 0x89 //!< Buffer 2 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_PAGE_TH_BUF1 0x82 //!< Main Memory Page Program through Buffer 1 (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_PAGE_TH_BUF2 0x85 //!< Main Memory Page Program through Buffer 2 (Serial/8-bit Mode).
+#define AT45DBX_CMDB_RWR_PAGE_TH_BUF1 0x58 //!< Auto Page Rewrite through Buffer 1 (Serial/8-bit Mode).
+#define AT45DBX_CMDB_RWR_PAGE_TH_BUF2 0x59 //!< Auto Page Rewrite through Buffer 2 (Serial/8-bit Mode).
+//! @}
+
+/*! \name AT45DBX Group C Commands
+ */
+//! @{
+#define AT45DBX_CMDC_RD_BUF1_LF_SM 0xD1 //!< Buffer 1 Read, Low-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF2_LF_SM 0xD3 //!< Buffer 2 Read, Low-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF1_AF_SM 0xD4 //!< Buffer 1 Read, Any-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF2_AF_SM 0xD6 //!< Buffer 2 Read, Any-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF1_AF_8M 0x54 //!< Buffer 1 Read, Any-Frequency Mode (8-bit Mode).
+#define AT45DBX_CMDC_RD_BUF2_AF_8M 0x56 //!< Buffer 2 Read, Any-Frequency Mode (8-bit Mode).
+#define AT45DBX_CMDC_WR_BUF1 0x84 //!< Buffer 1 Write (Serial/8-bit Mode).
+#define AT45DBX_CMDC_WR_BUF2 0x87 //!< Buffer 2 Write (Serial/8-bit Mode).
+#define AT45DBX_CMDC_RD_STATUS_REG 0xD7 //!< Status Register Read (Serial/8-bit Mode).
+#define AT45DBX_CMDC_RD_MNFCT_DEV_ID_SM 0x9F //!< Manufacturer and Device ID Read (Serial Mode).
+//! @}
+
+/*! \name AT45DBX Group D Commands
+ */
+//! @{
+#define AT45DBX_CMDD_EN_SECTOR_PROT 0x3D2A7FA9 //!< Enable Sector Protection (Serial/8-bit Mode).
+#define AT45DBX_CMDD_DIS_SECTOR_PROT 0x3D2A7F9A //!< Disable Sector Protection (Serial/8-bit Mode).
+#define AT45DBX_CMDD_ER_SECTOR_PROT_REG 0x3D2A7FCF //!< Erase Sector Protection Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_PR_SECTOR_PROT_REG 0x3D2A7FFC //!< Program Sector Protection Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_LKDN_SECTOR 0x3D2A7F30 //!< Sector Lockdown (Serial/8-bit Mode).
+#define AT45DBX_CMDD_PR_SECURITY_REG 0x9B000000 //!< Program Security Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_PR_CONF_REG 0x3D2A80A6 //!< Program Configuration Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_DEEP_PWR_DN 0xB9 //!< Deep Power-down (Serial/8-bit Mode).
+#define AT45DBX_CMDD_RSM_DEEP_PWR_DN 0xAB //!< Resume from Deep Power-down (Serial/8-bit Mode).
+//! @}
+
+
+/*! \name Bit-Masks and Values for the Status Register
+ */
+//! @{
+#define AT45DBX_MSK_BUSY 0x80 //!< Busy status bit-mask.
+#define AT45DBX_BUSY 0x00 //!< Busy status value (0x00 when busy, 0x80 when ready).
+#define AT45DBX_MSK_DENSITY 0x3C //!< Device density bit-mask.
+//! @}
+#if AT45DBX_MEM_SIZE == AT45DBX_1MB
+
+/*! \name AT45DB081 Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x24 //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 9 //!< Address bits for byte position within buffer.
+
+//! @}
+#elif AT45DBX_MEM_SIZE == AT45DBX_2MB
+
+/*! \name AT45DB161 Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x2C //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer.
+//! @}
+
+#elif AT45DBX_MEM_SIZE == AT45DBX_4MB
+
+/*! \name AT45DB321 Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x34 //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer.
+//! @}
+
+#elif AT45DBX_MEM_SIZE == AT45DBX_8MB
+
+/*! \name AT45DB642 Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x3C //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 11 //!< Address bits for byte position within buffer.
+//! @}
+
+#else
+ #error AT45DBX_MEM_SIZE is not defined to a supported value
+#endif
+
+//! Address bits for page selection.
+#define AT45DBX_PAGE_ADDR_BITS (AT45DBX_MEM_SIZE - AT45DBX_PAGE_BITS)
+
+//! Number of bits for addresses within pages.
+#define AT45DBX_PAGE_BITS (AT45DBX_BYTE_ADDR_BITS - 1)
+
+//! Page size in bytes.
+#define AT45DBX_PAGE_SIZE (1 << AT45DBX_PAGE_BITS)
+
+//! Bit-mask for byte position within buffer in \ref gl_ptr_mem.
+#define AT45DBX_MSK_PTR_BYTE ((1 << AT45DBX_PAGE_BITS) - 1)
+
+//! Bit-mask for page selection in \ref gl_ptr_mem.
+#define AT45DBX_MSK_PTR_PAGE (((1 << AT45DBX_PAGE_ADDR_BITS) - 1) << AT45DBX_PAGE_BITS)
+
+//! Bit-mask for byte position within sector in \ref gl_ptr_mem.
+#define AT45DBX_MSK_PTR_SECTOR ((1 << AT45DBX_SECTOR_BITS) - 1)
+
+
+/*! \brief Sends a dummy byte through SPI.
+ */
+#define spi_write_dummy() spi_write(AT45DBX_SPI, 0xFF)
+
+
+//! Boolean indicating whether memory is in busy state.
+static Bool at45dbx_busy;
+
+//! Memory data pointer.
+static U32 gl_ptr_mem;
+
+//! Sector buffer.
+static U8 sector_buf[AT45DBX_SECTOR_SIZE];
+
+
+/*! \name Control Functions
+ */
+//! @{
+
+
+Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz)
+{
+ // Setup SPI registers according to spiOptions.
+ for (spiOptions.reg = AT45DBX_SPI_FIRST_NPCS;
+ spiOptions.reg < AT45DBX_SPI_FIRST_NPCS + AT45DBX_MEM_CNT;
+ spiOptions.reg++)
+ {
+ if (spi_setupChipReg(AT45DBX_SPI, &spiOptions, pba_hz) != SPI_OK) return KO;
+ }
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+
+ return OK;
+}
+
+
+/*! \brief Selects or unselects a DF memory.
+ *
+ * \param memidx Memory ID of DF to select or unselect.
+ * \param bSelect Boolean indicating whether the DF memory has to be selected.
+ */
+static void at45dbx_chipselect_df(U8 memidx, Bool bSelect)
+{
+ if (bSelect)
+ {
+ // Select SPI chip.
+ spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx);
+ }
+ else
+ {
+ // Unselect SPI chip.
+ spi_unselectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx);
+ }
+}
+
+
+Bool at45dbx_mem_check(void)
+{
+ U8 df;
+ U16 status = 0;
+
+ // DF memory check.
+ for (df = 0; df < AT45DBX_MEM_CNT; df++)
+ {
+ // Select the DF memory to check.
+ at45dbx_chipselect_df(df, TRUE);
+
+ // Send the Status Register Read command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG);
+
+ // Send a dummy byte to read the status register.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &status);
+
+ // Unselect the checked DF memory.
+ at45dbx_chipselect_df(df, FALSE);
+
+ // Unexpected device density value.
+ if ((status & AT45DBX_MSK_DENSITY) < AT45DBX_DENSITY) return KO;
+ }
+
+ return OK;
+}
+
+
+/*! \brief Waits until the DF is ready.
+ */
+static void at45dbx_wait_ready(void)
+{
+ U16 status;
+
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Send the Status Register Read command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG);
+
+ // Read the status register until the DF is ready.
+ do
+ {
+ // Send a dummy byte to read the status register.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &status);
+ } while ((status & AT45DBX_MSK_BUSY) == AT45DBX_BUSY);
+
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+}
+
+
+Bool at45dbx_read_open(U32 sector)
+{
+ U32 addr;
+
+ // Set the global memory pointer to a byte address.
+ gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE.
+
+ // If the DF memory is busy, wait until it's ready.
+ if (at45dbx_busy) at45dbx_wait_ready();
+ at45dbx_busy = FALSE;
+
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Initiate a page read at a given sector.
+
+ // Send the Main Memory Page Read command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDA_RD_PAGE);
+
+ // Send the three address bytes, which comprise:
+ // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits;
+ // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read;
+ // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page.
+ // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local
+ // DF addressing. They are used for DF discrimination when there are several DFs.
+ addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) |
+ Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE);
+ spi_write(AT45DBX_SPI, LSB2W(addr));
+ spi_write(AT45DBX_SPI, LSB1W(addr));
+ spi_write(AT45DBX_SPI, LSB0W(addr));
+
+ // Send 32 don't care clock cycles to initialize the read operation.
+ spi_write_dummy();
+ spi_write_dummy();
+ spi_write_dummy();
+ spi_write_dummy();
+
+ return OK;
+}
+
+
+void at45dbx_read_close(void)
+{
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+}
+
+
+Bool at45dbx_write_open(U32 sector)
+{
+ U32 addr;
+
+ // Set the global memory pointer to a byte address.
+ gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE.
+
+ // If the DF memory is busy, wait until it's ready.
+ if (at45dbx_busy) at45dbx_wait_ready();
+ at45dbx_busy = FALSE;
+
+#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Transfer the content of the current page to buffer 1.
+
+ // Send the Main Memory Page to Buffer 1 Transfer command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDB_XFR_PAGE_TO_BUF1);
+
+ // Send the three address bytes, which comprise:
+ // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits;
+ // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read;
+ // - then AT45DBX_BYTE_ADDR_BITS don't care bits.
+ // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local
+ // DF addressing. They are used for DF discrimination when there are several DFs.
+ addr = Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS;
+ spi_write(AT45DBX_SPI, LSB2W(addr));
+ spi_write(AT45DBX_SPI, LSB1W(addr));
+ spi_write(AT45DBX_SPI, LSB0W(addr));
+
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Wait for end of page transfer.
+ at45dbx_wait_ready();
+#endif
+
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Initiate a page write at a given sector.
+
+ // Send the Main Memory Page Program through Buffer 1 command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDB_PR_PAGE_TH_BUF1);
+
+ // Send the three address bytes, which comprise:
+ // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits;
+ // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be written;
+ // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page.
+ // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local
+ // DF addressing. They are used for DF discrimination when there are several DFs.
+ addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) |
+ Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE);
+ spi_write(AT45DBX_SPI, LSB2W(addr));
+ spi_write(AT45DBX_SPI, LSB1W(addr));
+ spi_write(AT45DBX_SPI, LSB0W(addr));
+
+ return OK;
+}
+
+
+void at45dbx_write_close(void)
+{
+ // While end of logical sector not reached, zero-fill remaining memory bytes.
+ while (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_SECTOR))
+ {
+ spi_write(AT45DBX_SPI, 0x00);
+ gl_ptr_mem++;
+ }
+
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+}
+
+
+//! @}
+
+
+/*! \name Single-Byte Access Functions
+ */
+//! @{
+
+
+U8 at45dbx_read_byte(void)
+{
+ U16 data;
+
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously finished a page read.
+ // => We have to access the next page.
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_read_open input parameter is a sector.
+ at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Send a dummy byte to read the next data byte.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &data);
+ gl_ptr_mem++;
+
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+ {
+ // unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return data;
+}
+
+
+Bool at45dbx_write_byte(U8 b)
+{
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously launched a page programming.
+ // => We have to access the next page.
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_write_open input parameter is a sector.
+ at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Write the next data byte.
+ spi_write(AT45DBX_SPI, b);
+ gl_ptr_mem++;
+
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+ {
+ // unselect the DF memory gl_ptr_mem points to in order to program the page.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return OK;
+}
+
+
+//! @}
+
+
+/*! \name Multiple-Sector Access Functions
+ */
+//! @{
+
+
+Bool at45dbx_read_multiple_sector(U16 nb_sector)
+{
+ while (nb_sector--)
+ {
+ // Read the next sector.
+ at45dbx_read_sector_2_ram(sector_buf);
+ at45dbx_read_multiple_sector_callback(sector_buf);
+ }
+
+ return OK;
+}
+
+
+Bool at45dbx_write_multiple_sector(U16 nb_sector)
+{
+ while (nb_sector--)
+ {
+ // Write the next sector.
+ at45dbx_write_multiple_sector_callback(sector_buf);
+ at45dbx_write_sector_from_ram(sector_buf);
+ }
+
+ return OK;
+}
+
+
+//! @}
+
+
+/*! \name Single-Sector Access Functions
+ */
+//! @{
+
+
+Bool at45dbx_read_sector_2_ram(void *ram)
+{
+ U8 *_ram = ram;
+ U16 i;
+ U16 data;
+
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously finished a page read.
+ // => We have to access the next page.
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_read_open input parameter is a sector.
+ at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Read the next sector.
+ for (i = AT45DBX_SECTOR_SIZE; i; i--)
+ {
+ // Send a dummy byte to read the next data byte.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &data);
+ *_ram++ = data;
+ }
+
+ // Update the memory pointer.
+ gl_ptr_mem += AT45DBX_SECTOR_SIZE;
+
+#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+#endif
+ {
+ // unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return OK;
+}
+
+
+Bool at45dbx_write_sector_from_ram(const void *ram)
+{
+ const U8 *_ram = ram;
+ U16 i;
+
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously launched a page programming.
+ // => We have to access the next page.
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_write_open input parameter is a sector.
+ at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Write the next sector.
+ for (i = AT45DBX_SECTOR_SIZE; i; i--)
+ {
+ // Write the next data byte.
+ spi_write(AT45DBX_SPI, *_ram++);
+ }
+
+ // Update the memory pointer.
+ gl_ptr_mem += AT45DBX_SECTOR_SIZE;
+
+#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+#endif
+ {
+ // unselect the DF memory gl_ptr_mem points to in order to program the page.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return OK;
+}
+
+
+//! @}
+
+
+#endif // AT45DBX_MEM == ENABLE
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h
new file mode 100644
index 0000000..e5263b2
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h
@@ -0,0 +1,270 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Management of the AT45DBX data flash controller through SPI.
+ *
+ * This file manages the accesses to the AT45DBX data flash components.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _AT45DBX_H_
+#define _AT45DBX_H_
+
+
+#include "conf_access.h"
+
+#if AT45DBX_MEM == DISABLE
+ #error at45dbx.h is #included although AT45DBX_MEM is disabled
+#endif
+
+
+#include "spi.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+/*! \name Available AT45DBX Sizes
+ *
+ * Number of address bits of available AT45DBX data flash memories.
+ *
+ * \note Only memories with page sizes of at least 512 bytes (sector size) are
+ * supported.
+ */
+//! @{
+#define AT45DBX_1MB 20
+#define AT45DBX_2MB 21
+#define AT45DBX_4MB 22
+#define AT45DBX_8MB 23
+//! @}
+
+// AT45DBX_1MB
+#define AT45DBX_SECTOR_BITS 8 //! Number of bits for addresses within sectors.
+// AT45DBX_2MB AT45DBX_4MB AT45DBX_8MB
+//#define AT45DBX_SECTOR_BITS 9 //! Number of bits for addresses within sectors.
+
+//! Sector size in bytes.
+#define AT45DBX_SECTOR_SIZE (1 << AT45DBX_SECTOR_BITS)
+
+
+//_____ D E C L A R A T I O N S ____________________________________________
+
+/*! \name Control Functions
+ */
+//! @{
+
+/*! \brief Initializes the data flash controller and the SPI channel by which
+ * the DF is controlled.
+ *
+ * \param spiOptions Initialization options of the DF SPI channel.
+ * \param pba_hz SPI module input clock frequency (PBA clock, Hz).
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ */
+extern Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz);
+
+/*! \brief Performs a memory check on all DFs.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ */
+extern Bool at45dbx_mem_check(void);
+
+/*! \brief Opens a DF memory in read mode at a given sector.
+ *
+ * \param sector Start sector.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note Sector may be page-unaligned (depending on the DF page size).
+ */
+extern Bool at45dbx_read_open(U32 sector);
+
+/*! \brief Unselects the current DF memory.
+ */
+extern void at45dbx_read_close(void);
+
+/*! \brief This function opens a DF memory in write mode at a given sector.
+ *
+ * \param sector Start sector.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note Sector may be page-unaligned (depending on the DF page size).
+ *
+ * \note If \ref AT45DBX_PAGE_SIZE > \ref AT45DBX_SECTOR_SIZE, page content is
+ * first loaded in buffer to then be partially updated by write byte or
+ * write sector functions.
+ */
+extern Bool at45dbx_write_open(U32 sector);
+
+/*! \brief Fills the end of the current logical sector and launches page programming.
+ */
+extern void at45dbx_write_close(void);
+
+//! @}
+
+
+/*! \name Single-Byte Access Functions
+ */
+//! @{
+
+/*! \brief Performs a single byte read from DF memory.
+ *
+ * \return The read byte.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_read_open
+ * function.
+ */
+extern U8 at45dbx_read_byte(void);
+
+/*! \brief Performs a single byte write to DF memory.
+ *
+ * \param b The byte to write.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_write_open
+ * function.
+ */
+extern Bool at45dbx_write_byte(U8 b);
+
+//! @}
+
+
+/*! \name Multiple-Sector Access Functions
+ */
+//! @{
+
+/*! \brief Reads \a nb_sector sectors from DF memory.
+ *
+ * Data flow is: DF -> callback.
+ *
+ * \param nb_sector Number of contiguous sectors to read.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_read_open
+ * function.
+ *
+ * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of
+ * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each
+ * byte.
+ */
+extern Bool at45dbx_read_multiple_sector(U16 nb_sector);
+
+/*! \brief Callback function invoked after each sector read during
+ * \ref at45dbx_read_multiple_sector.
+ *
+ * \param psector Pointer to read sector.
+ */
+extern void at45dbx_read_multiple_sector_callback(const void *psector);
+
+/*! \brief Writes \a nb_sector sectors to DF memory.
+ *
+ * Data flow is: callback -> DF.
+ *
+ * \param nb_sector Number of contiguous sectors to write.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_write_open
+ * function.
+ *
+ * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of
+ * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each
+ * byte.
+ */
+extern Bool at45dbx_write_multiple_sector(U16 nb_sector);
+
+/*! \brief Callback function invoked before each sector write during
+ * \ref at45dbx_write_multiple_sector.
+ *
+ * \param psector Pointer to sector to write.
+ */
+extern void at45dbx_write_multiple_sector_callback(void *psector);
+
+//! @}
+
+
+/*! \name Single-Sector Access Functions
+ */
+//! @{
+
+/*! \brief Reads 1 DF sector to a RAM buffer.
+ *
+ * Data flow is: DF -> RAM.
+ *
+ * \param ram Pointer to RAM buffer.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_read_open
+ * function.
+ */
+extern Bool at45dbx_read_sector_2_ram(void *ram);
+
+/*! \brief Writes 1 DF sector from a RAM buffer.
+ *
+ * Data flow is: RAM -> DF.
+ *
+ * \param ram Pointer to RAM buffer.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_write_open
+ * function.
+ */
+extern Bool at45dbx_write_sector_from_ram(const void *ram);
+
+//! @}
+
+
+#endif // _AT45DBX_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c
new file mode 100644
index 0000000..4c0ace2
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c
@@ -0,0 +1,234 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief CTRL_ACCESS interface for the AT45DBX data flash controller.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+//_____ I N C L U D E S ___________________________________________________
+
+#include "conf_access.h"
+
+
+#if AT45DBX_MEM == ENABLE
+
+#include "conf_at45dbx.h"
+#include "at45dbx.h"
+#include "at45dbx_mem.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+//! Whether to detect write accesses to the memory.
+#define AT45DBX_MEM_TEST_CHANGE_STATE ENABLED
+
+
+#if (ACCESS_USB == ENABLED || ACCESS_MEM_TO_RAM == ENABLED) && AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED
+
+//! Memory data modified flag.
+static volatile Bool s_b_data_modify = FALSE;
+
+#endif
+
+
+/*! \name Control Interface
+ */
+//! @{
+
+
+Ctrl_status at45dbx_test_unit_ready(void)
+{
+ return (at45dbx_mem_check() == OK) ? CTRL_GOOD : CTRL_NO_PRESENT;
+}
+
+
+Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector)
+{
+ *u32_nb_sector = (AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) - 1;
+
+ return CTRL_GOOD;
+}
+
+
+Bool at45dbx_wr_protect(void)
+{
+ return FALSE;
+}
+
+
+Bool at45dbx_removal(void)
+{
+ return FALSE;
+}
+
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+#include "usb_drv.h"
+#include "scsi_decoder.h"
+
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+
+Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector)
+{
+ if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+ at45dbx_read_open(addr);
+ at45dbx_read_multiple_sector(nb_sector);
+ at45dbx_read_close();
+
+ return CTRL_GOOD;
+}
+
+
+void at45dbx_read_multiple_sector_callback(const void *psector)
+{
+ U16 data_to_transfer = AT45DBX_SECTOR_SIZE;
+
+ // Transfer read sector to the USB interface.
+ while (data_to_transfer)
+ {
+ while (!Is_usb_in_ready(g_scsi_ep_ms_in))
+ {
+ if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_in))
+ return; // USB Reset
+ }
+
+ Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_in);
+ data_to_transfer = usb_write_ep_txpacket(g_scsi_ep_ms_in, psector,
+ data_to_transfer, &psector);
+ Usb_ack_in_ready_send(g_scsi_ep_ms_in);
+ }
+}
+
+
+Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector)
+{
+ if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED
+ if (nb_sector) s_b_data_modify = TRUE;
+#endif
+
+ at45dbx_write_open(addr);
+ at45dbx_write_multiple_sector(nb_sector);
+ at45dbx_write_close();
+
+ return CTRL_GOOD;
+}
+
+
+void at45dbx_write_multiple_sector_callback(void *psector)
+{
+ U16 data_to_transfer = AT45DBX_SECTOR_SIZE;
+
+ // Transfer sector to write from the USB interface.
+ while (data_to_transfer)
+ {
+ while (!Is_usb_out_received(g_scsi_ep_ms_out))
+ {
+ if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_out))
+ return; // USB Reset
+ }
+
+ Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_out);
+ data_to_transfer = usb_read_ep_rxpacket(g_scsi_ep_ms_out, psector,
+ data_to_transfer, &psector);
+ Usb_ack_out_received_free(g_scsi_ep_ms_out);
+ }
+}
+
+
+//! @}
+
+#endif // ACCESS_USB == ENABLED
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+
+Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram)
+{
+ if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+ at45dbx_read_open(addr);
+ at45dbx_read_sector_2_ram(ram);
+ at45dbx_read_close();
+
+ return CTRL_GOOD;
+}
+
+
+Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram)
+{
+ if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED
+ s_b_data_modify = TRUE;
+#endif
+
+ at45dbx_write_open(addr);
+ at45dbx_write_sector_from_ram(ram);
+ at45dbx_write_close();
+
+ return CTRL_GOOD;
+}
+
+
+//! @}
+
+#endif // ACCESS_MEM_TO_RAM == ENABLED
+
+
+#endif // AT45DBX_MEM == ENABLE
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h
new file mode 100644
index 0000000..de24fa3
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h
@@ -0,0 +1,164 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief CTRL_ACCESS interface for the AT45DBX data flash controller.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _AT45DBX_MEM_H_
+#define _AT45DBX_MEM_H_
+
+
+#include "conf_access.h"
+
+#if AT45DBX_MEM == DISABLE
+ #error at45dbx_mem.h is #included although AT45DBX_MEM is disabled
+#endif
+
+
+#include "ctrl_access.h"
+
+
+//_____ D E C L A R A T I O N S ____________________________________________
+
+/*! \name Control Interface
+ */
+//! @{
+
+/*! \brief Tests the memory state and initializes the memory if required.
+ *
+ * The TEST UNIT READY SCSI primary command allows an application client to poll
+ * a LUN until it is ready without having to allocate memory for returned data.
+ *
+ * This command may be used to check the media status of LUNs with removable
+ * media.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_test_unit_ready(void);
+
+/*! \brief Returns the address of the last valid sector in the memory.
+ *
+ * \param u32_nb_sector Pointer to the address of the last valid sector.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector);
+
+/*! \brief Returns the write-protection state of the memory.
+ *
+ * \return \c TRUE if the memory is write-protected, else \c FALSE.
+ *
+ * \note Only used by removable memories with hardware-specific write
+ * protection.
+ */
+extern Bool at45dbx_wr_protect(void);
+
+/*! \brief Tells whether the memory is removable.
+ *
+ * \return \c TRUE if the memory is removable, else \c FALSE.
+ */
+extern Bool at45dbx_removal(void);
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+/*! \brief Tranfers data from the memory to USB.
+ *
+ * \param addr Address of first memory sector to read.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector);
+
+/*! \brief Tranfers data from USB to the memory.
+ *
+ * \param addr Address of first memory sector to write.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector);
+
+//! @}
+
+#endif
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+/*! \brief Copies 1 data sector from the memory to RAM.
+ *
+ * \param addr Address of first memory sector to read.
+ * \param ram Pointer to RAM buffer to write.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram);
+
+/*! \brief Copies 1 data sector from RAM to the memory.
+ *
+ * \param addr Address of first memory sector to write.
+ * \param ram Pointer to RAM buffer to read.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram);
+
+//! @}
+
+#endif
+
+
+#endif // _AT45DBX_MEM_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a
new file mode 100644
index 0000000..e01ab14
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a
new file mode 100644
index 0000000..9aa4f24
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a
new file mode 100644
index 0000000..00536f5
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a
new file mode 100644
index 0000000..a61dea3
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a
new file mode 100644
index 0000000..6883192
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a
new file mode 100644
index 0000000..0b09aa8
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt
new file mode 100644
index 0000000..5420c93
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt
@@ -0,0 +1 @@
+Revision: 2491
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h
new file mode 100644
index 0000000..17ba2ba
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h
@@ -0,0 +1,1687 @@
+/*
+ * Programming interface for wl_api.
+ * Copyright (C) 2010 HD Wireless AB
+ *
+ * You should have received a copy of the license along with this library.
+ */
+
+/*! \file wl_api.h *************************************************************
+ *
+ * \brief Basic WiFi API
+ *
+ * This file provides the wl_api interface.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices:
+ * \li SPB104 + EVK1100
+ * \li SPB104 + EVK1101
+ * \li SPB104 + EVK1104
+ * \li SPB104 + EVK1105 (SPI)
+ * \li SPB104 + EVK1105 (SPI + irq)
+ * \li SPB105 + EVK1105 (SPI)
+ * - AppNote:
+ *
+ * \author H&D Wireless AB: \n
+ *
+ *****************************************************************************
+ *
+ * \section intro Introduction
+ * This is the documentation for the generic WiFi Driver API \a wl_api.
+ *
+ * \section files Main Files
+ * - wl_api.h : WiFi driver interface.
+ * - lib_ucr*_hd_wifi_standalone_v*.*.a - Driver library.
+ *
+ */
+/** \mainpage wl_api Reference Manual
+
+\image html images/wl_api_block_diagram_small.png "wl_api Architecture"
+
+(o)WL API © is a programming interface for WiFi (802.11). It aims
+to be a complete interface for embedded applications wanting to use
+wireless as a communications interface. (o)WL API © is shortened
+"wl_api" in this document.
+
+wl_api has been designed to meet the following goals :
+ \li Simple : The API is as simple as is practicable
+ to make it easy to use.
+ \li Minimal size : The API is usable on very resource constrained
+ platforms.
+ \li Portable : The API is deployable on any platform with a standards
+ compliant C compiler.
+ \li OS independent : The API is deployable on systems using a real time
+ operating system as well as with applications running on the
+ "bare metal" of a hardware platform (that is without an operating system).
+
+As a consequence of these design goals wl_api does not allow very fine
+grained control of most parameters relating to 802.11 networks. That
+would increase the flexibility of the API while also increasing
+complexity and code size. When the underlying WiFi hardware can
+support a richer feature set the extra features can be offered as a
+add-on library if required.
+
+The wl_api is implemented by two libraries. The core library is
+compiled for a hardware platform and is independent of operating
+system or IP stack. The core library contains all WiFi
+functionality. The core library is supported by a suite of transport
+libraries. The transport libraries implements the hardware
+communication layer and are specific to the type of hardware interface
+used to connect the host platform to the WiFi hardware. For example,
+there are transport libraries for SPI and for SDIO. Only the core
+library has a public interface (wl_api.h) but applications will need
+to link with both the core library and a transport library matching
+the hardware configuration.
+
+\section wl_api_princ Operation Principles
+
+There are three important properties of wl_api to keep in mind when
+programming with it.
+
+The first is that wl_api is \b asynchronous. For instance, when the
+\a wl_connect() function is called to attempt connection with an access
+point it will trigger a sequence of packets being exchanged with the
+access point after which, if everything is okay, a connection has been
+established. The \a wl_connect() call is asynchronous (or non-blocking)
+which means that you don't know if the connection attempt has
+succeeded after the call returns. You only know if the sequence was
+successfully started or not. To find out if, and when, the connection
+attempt was successful you must register an event handler using the
+function \a wl_register_event_cb(). This is true of a number of API calls
+(which is indicated in their documentation).
+
+The second important property is that wl_api is \b polled. wl_api
+never executes "by itself", since it would then have to support
+interrupts, timers, locks and other operating system dependent
+features. Instead all asynchronous processes proceed when wl_api is
+polled by calling the \a wl_tick() function. When \a wl_tick() is called
+wl_api reacts to any received management frames, expires any internal timers and
+performs any other tasks necessary for forward progress. After
+\a wl_tick() returns nothing will happen unless it or some other wl_api
+function is called again. Also, to send and receive data, the \a wl_process_rx()
+and \a wl_process_tx() must be invoked upon reception and transmission of data.
+
+The third important property is that wl_api is \b not \b thread \b safe.
+All wl_api calls must execute in the same context since the
+library has no knowledge of the locking mechanisms available (if any).
+
+\section wl_api_code_examples A note on the code examples
+
+The code examples illustrate how to call the different wl_api functions.
+They do not constitute a complete program. Functions with the prefix "app_"
+in the code examples are application specific calls that illustrate a
+particular action. These functions are not part of the API and will have
+to be implemented if needed. For a complete working code example see
+one of the H&D Wireless software reference designs, such as the WiFi HTTP
+server demo code in the Atmel Software Framework.
+
+The API is structured into these functional groups:
+
+\li \ref wl_api
+\li \ref wl_wifi
+\li \ref wl_data
+\li \ref wl_transport
+\li \ref wl_custom
+
+Also documented here is the transport layers for SPI and SDIO.
+There interfaces are only necessary when porting the library to
+a new hardware platform.
+
+\li \ref wl_spi
+\li \ref wl_sdio
+
+ * \section contactinfo Contact Information
+ * For further information, visit
+ * <A href="http://www.hd-wireless.se/">H&D Wireless</A>.\n
+ * Support and FAQ: http://www.atmel.com/
+ */
+
+#ifndef WL_API_H
+#define WL_API_H
+
+#define WL_API_RELEASE_NAME "v2.7.0"
+
+/*! Maximum size of a SSID */
+#define WL_SSID_MAX_LENGTH 32
+/*! Size of a MAC-address or BSSID */
+#define WL_MAC_ADDR_LENGTH 6
+/*! Maximum length of a passphrase */
+#define WL_MAX_PASS_LEN 64
+/*! Indicates that there is no SNR information */
+#define WL_SNR_UNKNOWN -128
+
+#define SPB104 104
+#define SPB105 105
+
+/*! \ingroup wl_api
+ * API Error codes */
+typedef enum {
+ WL_FAILURE = -1,
+ WL_SUCCESS = 1,
+ WL_NOEFFECT,
+ WL_OOM,
+ WL_INVALID_LENGTH,
+ WL_NOT_SUPPORTED,
+ WL_ABSORBED,
+ WL_RESOURCES,
+ WL_BUSY,
+ WL_RETRY, /*!< Retry the operation later. The driver is busy
+ resolving an operation that conflicts with the
+ request. */
+ WL_INVALID_ARGS,
+ WL_AVAIL,
+ WL_CARD_FAILURE, /*!< Could not detect SPB device */
+ WL_FIRMWARE_INVALID, /*!< Invalid firmware data */
+
+} wl_err_t;
+
+/*! \ingroup wl_wifi
+ * Event identifiers */
+enum wl_event_id_t {
+ WL_EVENT_MEDIA_CONNECTED = 0,
+ WL_EVENT_CONN_FAILURE,
+ WL_EVENT_MEDIA_DISCONNECTED,
+ WL_EVENT_SCAN_COMPLETE,
+ WL_EVENT_FAILURE,
+ MAX_WL_EVENT
+};
+
+/*! \ingroup wl_wifi
+ * Authentication modes */
+enum wl_auth_mode {
+ AUTH_MODE_INVALID,
+ AUTH_MODE_AUTO,
+ AUTH_MODE_OPEN_SYSTEM,
+ AUTH_MODE_SHARED_KEY,
+ AUTH_MODE_WPA,
+ AUTH_MODE_WPA2,
+ AUTH_MODE_WPA_PSK,
+ AUTH_MODE_WPA2_PSK
+};
+
+/*! \ingroup wl_wifi
+ * Encryption modes */
+enum wl_enc_type { /* Values map to 802.11 encryption suites... */
+ ENC_TYPE_WEP = 5,
+ ENC_TYPE_TKIP = 2,
+ ENC_TYPE_CCMP = 4,
+ /* ... except these two, 7 and 8 are reserved in 802.11-2007 */
+ ENC_TYPE_NONE = 7,
+ ENC_TYPE_AUTO = 8
+};
+
+enum wl_host_attention_mode {
+ WL_HOST_ATTENTION_SDIO = 0x1, /*!< For SDIO or polled SPI */
+ WL_HOST_ATTENTION_SPI = 0x5a /*!< For SPI with interrupt line */
+};
+
+/*! \ingroup wl_wifi
+ * Event descriptor
+*/
+struct wl_event_t {
+ enum wl_event_id_t id; /**< Event identifier. */
+
+};
+
+/*! \ingroup wl_wifi
+ * Infrastructure (ESS) or Ad-hoc (IBSS) connection modes.
+ */
+enum wl_conn_type_t {
+ WL_CONN_TYPE_INFRA, /*!< For infrastructure mode (default) */
+ WL_CONN_TYPE_ADHOC /*!< For ad-hoc mode */
+};
+
+/* Note:
+ * If your environment does not have stdint.h you will have to
+ * define the fixed-width integer types specified in that file
+ * yourself, make sure that those definitions are included
+ * before any inclusions of wl_api.h, and build with the macro
+ * WITHOUT_STDINT defined. In this case the wl_api library
+ * must have been built with the same integer type definitions.
+ */
+
+#ifndef WITHOUT_STDINT
+#include <stdint.h>
+#endif
+
+/* Note:
+ * If your environment does not have stdio.h you will have to define
+ * the size_t type yourself, make sure that that definition is
+ * included before any inclusions of wl_api.h, and build with the
+ * macro WITHOUT_STDIO defined. In this case the wl_api library must
+ * have been built with the same size_t type definition.
+ */
+#ifndef WITHOUT_STDIO
+#include <stdio.h>
+#endif
+
+/*! \ingroup wl_wifi
+ *
+ * \brief SSID representation.
+ *
+ * The SSID is a binary string and cannot be treated as a
+ * C-string safely. An empty SSID is represented by a
+ * SSID struct with the len field set to 0.
+ */
+struct wl_ssid_t
+{
+ char ssid[WL_SSID_MAX_LENGTH]; /**< Octet array containing the SSID data. */
+ uint8_t len; /**< Length of valid data in ssid member.
+ * Cannot be longer than WL_SSID_MAX_LENGTH. */
+};
+
+/*! \ingroup wl_wifi
+ *
+ * MAC-address/BSSID representation
+ *
+ * A broadcast BSSID is one with all octets set to 0xFF.
+ */
+struct wl_mac_addr_t
+{
+ uint8_t octet[WL_MAC_ADDR_LENGTH]; /**< Octet array containing the MAC address
+ * data. This array is always WL_MAC_ADDR_LENGTH bytes.
+ */
+};
+
+/*! \ingroup wl_wifi
+ *
+ * Network representation
+ *
+ */
+struct wl_network_t
+{
+ struct wl_ssid_t ssid; /**< The SSID of the network. */
+ struct wl_mac_addr_t bssid; /**< The BSSID of the network. */
+ uint8_t channel; /**< The wlan channel which the network uses */
+ uint32_t beacon_period; /**< Beacon period for the network */
+ uint16_t dtim_period; /**< DTIM period for the network */
+ int32_t rssi; /**< Received Signal Strength in dBm (measured on beacons) */
+ int32_t snr; /**< Received Signal to noise ratio in dBm (measured on beacons) */
+ uint8_t enc_type; /**< The encryption type used in the network. */
+
+ enum wl_conn_type_t net_type; /**< Type of network (Infrastructure or Ad-Hoc */
+ size_t ie_len; /**< Always 0 unless wl_api has been built with WL_CONFIG_WPA_SUPPLICANT */
+
+ uint8_t ie[0]; /**< Not used unless wl_api has been built with WL_CONFIG_WPA_SUPPLICANT */
+};
+
+/*! \ingroup wl_wifi
+ * Network list representation. Array of pointers to wl_network_t entries.
+ *
+ */
+struct wl_network_list_t
+{
+ struct wl_network_t **net; /**< The list of pointers to networks */
+ size_t cnt; /**< Number of networks */
+};
+
+#define WL_RATE_1MBIT 2
+#define WL_RATE_2MBIT 4
+#define WL_RATE_5_5MBIT 11
+#define WL_RATE_6MBIT 12
+#define WL_RATE_9MBIT 18
+#define WL_RATE_11MBIT 22
+#define WL_RATE_12MBIT 24
+#define WL_RATE_18MBIT 36
+#define WL_RATE_22MBIT 44
+#define WL_RATE_24MBIT 48
+#define WL_RATE_33MBIT 66
+#define WL_RATE_36MBIT 72
+#define WL_RATE_48MBIT 96
+#define WL_RATE_54MBIT 108
+#define WL_RATE_NUM_RATES 14
+#define WL_RATE_INVALID WL_RATE_NUM_RATES
+
+/*! \ingroup wl_wifi
+ *
+ * Rate representation
+ *
+ */
+typedef uint8_t wl_rate_t;
+
+/** \defgroup wl_api Library support functions
+ *
+ * These functions manage the library in general. They concern initalizing
+ * the library, downloading firmware to the WiFi chip and handling events
+ * from the library.
+
+For this example we assume that the application is running stand-alone
+without an operating system.
+
+Before the library can do anything it needs to start up the WiFi
+hardware by downloading a firmware image. The firmware image is
+relatively big (around 144kB) and is therefore not included in the library
+it is only needed once. It is up to the application to decide where to
+store the firmware image and how to read it into the wl_api library.
+
+Step one is to write a function of the type \a ::wl_fw_read_cb_t
+that wl_api will call to retrive the firmware image. Assuming that you
+have some spare RAM (or whatever memory type is used for read only
+data, such as FLASH memory) on your platform you can simply include
+the firmware image from the \a wl_fw.h header file and write a
+firmware read function like this
+
+\code
+static size_t fw_read_cb(void* ctx,
+ uint8_t** buf,
+ size_t offset,
+ size_t len)
+{
+ if ( NULL == buf ) {
+ return 0;
+ }
+ *buf = ((uint8_t*) fw_buf) + offset;
+ if ( len > ( fw_len - offset ) ) {
+ return fw_len - offset;
+ }
+ return len;
+}
+
+\endcode
+
+If the firmware image is stored in ROM this function may have to read
+it back block by block instead.
+
+First, firmware must be downloaded to the device
+
+\code
+if ( wl_transport_init(fw_read_cb, NULL, &mode) != WL_SUCCESS ) {
+ app_error("Firmware download failed");
+ return 0;
+}
+\endcode
+
+The wl_api library is then initialized like this
+
+\code
+if ( wl_init(NULL, init_complete_cb, mode) != WL_SUCCESS ) {
+ app_error("Init failed");
+ return 0;
+}
+\endcode
+
+The library startup process will now require \a wl_poll() to be called
+a number of times before it can complete. In addition, if the
+application needs to know when the startup process has completed so
+that it can, for example, start up an IP stack it will have to supply
+a valid callback function of the type \a ::wl_init_complete_cb_t as a parameter
+to the \a wl_init() call and start polling the wl_api library.
+
+The init complete callback will only be executed during a call to \a wl_poll()
+or another wl_api function. This simplifies the implementation since no
+internal locking is required and the wl_api library becomes OS-independent.
+
+\code
+static void init_complete_cb(void* ctx) {
+ init_ip_stack();
+}
+\endcode
+
+Registering the event callback is straightforward :
+
+\code
+if (wl_register_event_cb(event_cb, NULL) != WL_SUCCESS) {
+ app_error("Failed to register event handler");
+ return 0;
+}
+\endcode
+
+Similar to \a wl_poll(), there is also a \a wl_tick() function that takes a
+free running "tick" counter with millisecond resolution as an argument so
+that it can trigger internal timers when necessary. Assuming that such a tick
+counter is provided by the macro GET_MS_TICK() the wl_api execution loop becomes
+
+\code
+while (TRUE) {
+ wl_tick(GET_MS_TICK());
+ wl_poll();
+}
+\endcode
+
+In a stand-alone application this loop would usually be the main application
+loop and include application specific calls as well.
+
+After some number of main loop iterations the init_complete_cb will be
+invoked and the application can initialize its IP stack.
+
+ * @{
+ */
+
+/*! \brief WiFi event callback.
+ *
+ * This function receives WiFi events that the application
+ * wants notification of. This function is supplied by the user
+ * of the API.
+ *
+ * @param event Struct describing the type of event and, for some
+ * events, additional information regarding the
+ * status of the event. See wl_event_t for additional
+ * information.
+ * @param ctx A context handle. This handle is passed
+ * untouched to the callback and has the same value
+ * as the context registered with the callback in
+ * wl_register_event_cb().
+ */
+typedef void (*wl_event_cb_t) (struct wl_event_t event, void* ctx);
+
+
+/*! \brief Initialization complete callback function.
+ *
+ * Invoked when WiFi initialization is complete.
+ *
+ * @param ctx Opaque context pointer as provided to \a wl_init() that will be
+ * passed back to the callback.
+ */
+typedef void (wl_init_complete_cb_t)(void* ctx);
+
+
+/*! \brief Register an event handler.
+ *
+ * Register an event handler with the driver. This
+ * event handler will be called whenever a event
+ * listed in #wl_event_id_t occurs.
+ * See #wl_event_cb_t and #wl_event_id_t for more details.
+ *
+ * @param cb Event callback function to register.
+ * @param ctx Opaque context pointer that will be
+ * passed to the callback when it is
+ * invoked. This parameter is never
+ * accessed by the API.
+ * @return WL_SUCCESS
+ */
+wl_err_t wl_register_event_cb(wl_event_cb_t cb, void* ctx);
+
+/*! \brief Initialize the wl_api library.
+ *
+ * Note that \a wl_poll() must be called for this function to progress
+ * towards complete init
+ *
+ * The startup process will proceed asynchronously and will inkove
+ * init_complete_cb when completed. The callback will not be invoked if any
+ * error occurs during initialization.
+ *
+ * This function should be called after firmware has been downloaded to the
+ * device.
+ *
+ * @param ctx Opaque context pointer that will be passed to the callback
+ * when invoked. This parameter is never accessed by the API.
+ * @param init_complete_cb callback function to invoke when initialization is
+ * complete.
+ * @param mode Indicates the host attention mode used by the device. If
+ * \a wl_transport_init() was used to download the firmware image to the
+ * device, the proper mode can be obtained from the mode parameter of
+ * that function.
+ *
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE
+ */
+wl_err_t wl_init(void* ctx, wl_init_complete_cb_t init_complete_cb,
+ enum wl_host_attention_mode mode);
+
+
+/*! \brief Shutdown the wl_api library and free resources.
+ *
+ * \a wl_init() must be invoked to startup the library
+ * again.
+ *
+ * @return
+ * - WL_SUCCESS on success
+ * - WL_FAILURE
+ *
+ */
+wl_err_t wl_shutdown(void);
+
+
+/*! \brief WiFi driver timer tick function
+ *
+ * Periodic timers are triggered from this function so it should be called as
+ * often as possible if precision timing is required (traffic timeouts,
+ * authentication timeouts etc).
+ *
+ * @param tick A tick count in us. This is used to expire timers
+ * in the driver.
+ */
+void wl_tick(uint32_t tick);
+
+/*! @} */
+
+
+/** \defgroup wl_wifi Connection Management
+ *
+ * These functions access WiFi-specific functionality such as
+ * scanning, connect/disconnect, authentication and encryption,
+ * and power save modes.
+ *
+
+\section scanning Scanning
+
+To scan all channels that are available in the current regulatory
+domain
+
+\code
+ if ( wl_scan() != WL_SUCCESS ) {
+ // May be busy scanning already, no fatal error
+ return 0;
+ }
+\endcode
+
+Since wl_scan() only starts the scanning process the application
+should add code to the event handler to catch the "scan complete" event
+and retrieve the list of seen networks from the library
+
+\code
+static void event_cb(struct wl_event_t event, void* ctx) {
+ switch(event.id) {
+ case WL_EVENT_SCAN_COMPLETE:
+ struct wl_network_list_t *netlist;
+ uint8_t netcnt;
+
+ wl_get_network_list(&netlist);
+ netcnt = netlist->cnt;
+ while (--netcnt) {
+ print_network(netlist->net[netcnt]);
+ }
+ break;
+ }
+}
+\endcode
+
+The function print_network() could display the network name, the SSID, in
+a user interface. It is important to keep in mind is that despite the fact
+that the SSID is usually presented as a ASCII string, it is
+in fact just a byte string and can legally contain all kinds of
+non-printable characters, including a 0-byte. This means that it is
+easy to end up with buffer overrun bugs if the SSID is ever treated
+as a normal string without precautions.
+
+\code
+void print_network(struct wl_network_t* wl_network)
+{
+ char ssid[WL_SSID_MAX_LENGTH + 1];
+ memset(ssid, 0, sizeof(ssid));
+ memcpy(ssid, wl_network->ssid.ssid, wl_network->ssid.len);
+ if (app_is_printable(ssid)) {
+ app_print("\"%s\" ", ssid);
+ }
+ else {
+ app_print("<binary SSID> ");
+ }
+ switch (wl_network->enc_type) {
+ case ENC_TYPE_WEP :
+ app_print("(WEP encryption)");
+ break;
+ case ENC_TYPE_TKIP :
+ app_print("(TKIP encryption)");
+ break;
+ case ENC_TYPE_CCMP :
+ app_print("(CCMP encryption)");
+ break;
+ }
+ app_print("\n");
+}
+\endcode
+
+\section connecting Connecting
+
+To connect to an access point (beware binary SSIDs) the connection process
+must be started
+
+\code
+ if ( wl_connect("My AP", strlen("My AP"))
+ != WL_SUCCESS ) {
+ app_error("Connection failed.\n");
+ return 0;
+ }
+\endcode
+
+and the \a WL_EVENT_MEDIA_CONNECTED and \a WL_EVENT_CONN_FAILURE events should be
+caught. To detect that a connection is terminated after it has been successfully established
+(such as when the AP goes out of range) the \a WL_EVENT_MEDIA_DISCONNECTED event
+must be also be caught
+
+
+\code
+static void event_cb(struct wl_event_t event, void* ctx) {
+ switch(event.id) {
+ case WL_EVENT_SCAN_COMPLETE:
+ struct wl_network_list_t *netlist;
+ uint8_t netcnt;
+
+ wl_get_network_list(&netlist);
+ netcnt = netlist->cnt;
+ while (--netcnt) {
+ print_network(netlist->net[netcnt]);
+ }
+ break;
+ case WL_EVENT_CONN_FAILURE:
+ app_error("Connection failed\n");
+ break;
+ case WL_EVENT_MEDIA_CONNECTED:
+ app_print("Connected to Access Point\n");
+ app_ip_interface_up();
+ break;
+ case WL_EVENT_MEDIA_DISCONNECTED:
+ app_print("Disconnected from Access Point\n");
+ app_ip_interface_down();
+ break;
+ }
+}
+\endcode
+
+\section security Security
+
+To use WEP a WEP key must be added before the connection is initiated.
+To set the 40-bit WEP key 0xDEADBEEF00 as default key for key index 0 do
+
+\code
+ char key[5] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x00 };
+ struct wl_mac_addr_t bssid;
+
+ // This means that the bssid is a broadcast bssid and the WEP key will be a default key instead of a key-mapping key.
+ memset(&bssid.octet, 0xff, sizeof bssid.octet);
+
+ if ( wl_add_wep_key(0, sizeof key, key, &bssid)
+ != WL_SUCCESS ) {
+ app_error("Failed to add WEP key.");
+ return 0;
+ }
+\endcode
+
+To use WPA/WPA2 with a Pre-shared key a passphrase must be associated
+with the network before the connection is initiated.
+
+\code
+ struct wl_network_t net;
+ char passphrase[] = "MySecretKey";
+
+ memset(&net, 0, sizeof net);
+ memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet);
+ strncpy(net.ssid.ssid, "My AP", strlen("My AP"));
+ net.ssid.len = strlen("My AP");
+ net.enc_type = ENC_TYPE_AUTO;
+ if (wl_set_passphrase(&net,
+ passphrase,
+ strlen(passphrase),
+ ENC_TYPE_AUTO,
+ AUTH_MODE_AUTO)
+ != WL_SUCCESS) {
+ app_error("Failed to add passphrase");
+ }
+\endcode
+
+The library supports several passphrase-network associations to be
+configured simultaneously. Be aware that the \a wl_connect() call
+can take up to 15 seconds longer than normal when using a pre-shared
+WPA/WPA2 key since the platform must calculate a temporal encryption
+key from the passphrase before the connection attempt can start.
+
+ * @{
+ */
+
+
+/*! \brief Scan all channels.
+ *
+ * Starts a scan of all WiFi channels allowed in this regulatory
+ * domain. The list of allowed channels (the domain) is adapted to the
+ * channels announced as allowed by the first AP heard.
+ *
+ * The scan will proceed asynchronously and will raise a
+ * WL_EVENT_SCAN_COMPLETE event when completed.
+ *
+ * Currently, there's a limit on the scan list size that depends on the
+ * architecture (6 networks for the AVR32 UCR1 architecture 16 networks for
+ * other architectures. If more network exist, the strongest networks are
+ * chosen. Note that the limitation on the scan list size does not limit the
+ * networks which the device can connect to. See wl_connect() for more
+ * details.
+ *
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE.
+ */
+wl_err_t wl_scan(void);
+
+/*! \brief Get the list of currently known networks.
+ *
+ * Retrieves the list of currently known networks from
+ * the driver. To ensure that this list is up-to-date
+ * a wl_scan() call should be issued and this function
+ * should be called upon reception of the WL_EVENT_SCAN_COMPLETE
+ * event. This function can be called at other times
+ * but the list of networks retrieved then might not
+ * correspond to the networks actually in range.
+ *
+ * Note that a successful scan does not necessarily
+ * find any networks.
+ *
+ * @param network_list Output buffer. The API call returns
+ * a pointer to allocated memory containing the network list.
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE.
+ */
+wl_err_t wl_get_network_list(struct wl_network_list_t **network_list);
+
+#ifdef WFE_6_12
+/*! \brief Start a Ad-hoc network.
+ *
+ * Attempt to start a Ad-hoc (IBSS) network. If a Ad-hoc network
+ * is successfully started then a WL_EVENT_MEDIA_CONNECTED event
+ * will be raised once the first peer station connects to the Ad-hoc
+ * network (and not when the network is announced on the air).
+ *
+ * If a Ad-hoc network should be started with encryption
+ * enabled then \a wl_set_passphrase() should be called before
+ * \a wl_start_adhoc_net() to configure the security parameters.
+ * The Ad-hoc network is started with the security parameters
+ * (if any) that was configured for the specified \a ssid.
+ *
+ * @param ssid The SSID of the new network. If there's a network
+ * already present with this SSID this call will fail.
+ * @param channel The channel to use. Valid channels are 1-14
+ * @param auth_mode The authentication mode to use. Supported
+ * authentication modes for Ad-hoc networks are
+ * AUTH_MODE_OPEN_SYSTEM and AUTH_MODE_SHARED_KEY.
+ * Passing other modes will cause a WL_INVALID_ARGS return.
+ * If AUTH_MODE_SHARED_KEY is used then a valid WEP
+ * key must be set with a call to \a wl_add_wep_key()
+ * and the default WEP key index must be set with a
+ * call to \a wl_set_default_wep_key().
+ * @return
+ * - WL_SUCCESS on success.
+ * - WL_INVALID_ARGS if the ssid is malformed, if
+ * the channel not valid or if the authentication mode
+ * is invalid.
+ * - WL_RETRY if the driver is busy resolving a conflicting
+ * operation. The operation should be retried after a wait
+ * (at least one call to wl_poll() for polled implementations).
+ * - WL_BUSY if the driver is already connected or if a network
+ * with the same SSID is already known.
+ *
+ */
+wl_err_t wl_start_adhoc_net(struct wl_ssid_t ssid,
+ uint8_t channel,
+ enum wl_auth_mode auth_mode);
+#endif
+/*! \brief Connect to a SSID.
+ *
+ * Attempt to connect to a given SSID. If the driver is already
+ * connected to an AP with a different SSID then this call will
+ * return WL_BUSY and wl_disconnect() should be called before
+ * trying again.
+ *
+ * The connection process will proceed asynchronously and will raise a
+ * WL_EVENT_MEDIA_CONNECTED event when completed, or a WL_EVENT_CONN_FAILURE
+ * when failed. After a WL_EVENT_MEDIA_CONNECTED event has been raised
+ * a WL_EVENT_MEDIA_DISCONNECT event will be raised if the connection is
+ * terminated. Note that this can be caused by external factors and can
+ * happen at any time.
+ *
+ * If wl_connect() is invoked with a network that is not shown in the
+ * scan list, the device will probe for that specific network and connect
+ * to it, if found. This is also the method to use in order to connect to
+ * "hidden" networks (AP's that doesn't broadcast its SSID).
+ *
+ * @param ssid Pointer to the SSID string.
+ * Freed by caller.
+ * @param ssid_len Length of the SSID string in octets. Max value is 32.
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE if the network could not be found
+ * - WL_BUSY if the driver is already connected
+ * - WL_RETRY if the driver is busy resolving a conflicting operation.
+ * The operation should be retried after a wait (at least one call to wl_poll()
+ * for polled implementations).
+ */
+wl_err_t wl_connect(char* ssid, size_t ssid_len);
+
+/*! \brief Connect to a BSSID
+ *
+ * Attempt to connect to a given BSSID. If the driver is already
+ * connected to an AP with a different BSSID then this call will
+ * return WL_BUSY and wl_disconnect() should be called before
+ * trying again.
+ *
+ * The connection process will proceed asynchronously and will raise a
+ * WL_EVENT_MEDIA_CONNECTED event when completed, or a WL_EVENT_CONN_FAILURE
+ * when failed. After a WL_EVENT_MEDIA_CONNECTED event has been raised
+ * a WL_EVENT_MEDIA_DISCONNECT event will be raised if the connection is
+ * terminated. Note that this can be caused by external factors and can
+ * happen at any time.
+ *
+ * If wl_connect_bssid() is invoked with a network that is not shown in the
+ * scan list, the device will probe for that specific network and connect
+ * to it, if found.
+ *
+ * @param bssid Pointer to the BSSID. Freed by caller.
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE if the network could not be found
+ * - WL_BUSY if the driver is already connected
+ * - WL_RETRY if the driver is busy resolving a conflicting operation.
+ * The operation should be retried after a wait (at least one call to wl_poll()
+ * for polled implementations).
+ */
+wl_err_t wl_connect_bssid(struct wl_mac_addr_t bssid);
+
+/*! \brief Disconnect from the network
+ *
+ * Disconnect from any currently associated network.
+ *
+ * The disconnection process will proceed asynchronously and will raise a
+ * WL_EVENT_MEDIA_DISCONNECTED event when completed.
+ * @return
+ * - WL_SUCCESS if the disconnect process was started
+ * - WL_FAILURE if the driver was not connected
+ * - WL_RETRY if the driver is in the process of connecting.
+ * In this case the disconnect must be retried after
+ * the connection attempt has completed (resulted in a
+ * WL_EVENT_MEDIA_CONNECTED or a WL_EVENT_CONN_FAILURE event).
+ */
+wl_err_t wl_disconnect(void);
+
+/*!
+ * @brief Add a WEP encryption key to the device.
+ *
+ * Configure a key into the device. The key type (WEP-40, WEP-104)
+ * is determined by the size of the key (5 bytes for WEP-40, 13 bytes for WEP-104).
+ *
+ * @param key_idx The key index to set. Valid values are 0-3.
+ * @param key_len Length of key in bytes. Valid values are 5 and 13.
+ * @param key Key input buffer.
+ * @param bssid BSSID that the key applies to. If this is
+ * the broadcast BSSID then the key is configured
+ * as one of the default keys (not _the_ default key,
+ * this must be set by calling set_default_wep_key()
+ * after adding it). If the BSSID is a valid unicast
+ * bssid then the key is configured as a key-mapping
+ * key ( See 802.11-2007 8.2.1.3 ).
+ * @return
+ * - WL_SUCCESS on success.
+ * - WL_INVALID_LENGTH if the key length is bad.
+ * - WL_FAILURE on failure
+ */
+wl_err_t wl_add_wep_key(uint8_t key_idx,
+ size_t key_len,
+ const void *key,
+ struct wl_mac_addr_t *bssid);
+
+/*! @brief Set the default WEP key index.
+ *
+ * Select which WEP key to use for transmitted packets.
+ * For this to work correctly you must have added a WEP
+ * key with \a wl_add_wep_key() as a default key, using the
+ * same index as the one set in this call.
+ * @param key_idx Index of the key to make the default key.
+ * Valid values are 0-3.
+ * @return WL_SUCCESS or WL_FAILURE.
+ */
+wl_err_t wl_set_default_wep_key(uint8_t key_idx);
+
+/*! \brief Delete a WEP key.
+ *
+ * Deletes a WEP key from the driver.
+ *
+ * @param key_idx The index of the key to delete. Valid values are 0-3.
+ * @param bssid BSSID that the key applies to. If this is
+ * the broadcast BSSID then the key deleted is a default key.
+ * If the BSSID is a valid unicast bssid then the deleted
+ * key is a key-mapping key.
+ * @return WL_SUCCESS or WL_FAILURE
+ */
+wl_err_t wl_delete_wep_key(uint8_t key_idx, struct wl_mac_addr_t *bssid);
+
+/*! @brief Set a WPA/WPA2 passphase
+ *
+ * Associate a WPA/WPA2/RSN passphrase with a network.
+ * The number of passphrases that can be stored can
+ * vary but is always at least one. Passphrases can
+ * be added until \a wl_add_wpa_passphrase() returns
+ * WL_RESOURCES.
+ *
+ * @param net Network with which to associate the passphrase.
+ * @param passphrase Passphrase. Valid characters in a passphrase
+ * must lie between ASCII 32-126 (decimal).
+ * @param len Length of passphrase. Valid lengths are 8-63.
+ * @param enc_type Encryption type. If this is set to ENC_TYPE_AUTO
+ * then the most secure supported mode will be automatically
+ * selected. Normally you only need to pass something else here
+ * if you need to enforce picking a certain encryption mode when
+ * the network supports several modes and you don't want to use
+ * the best one.
+ * @param auth_mode Authentication mode. If this is set to AUTH_MODE_AUTO
+ * then the most secure mode will be automatically selected.
+ * Normally you only need to pass something else here if the network
+ * announces support for both WPA and WPA2/RSN and the passphrases are
+ * different.
+ * @return
+ * - WL_SUCCESS
+ * - WL_INVALID_ARGS if the passphrase length is invalid.
+ * - WL_RESOURCES if no more passphrases can be added.
+ */
+wl_err_t wl_set_passphrase(const struct wl_network_t *net,
+ const char *passphrase,
+ const size_t len,
+ const enum wl_enc_type enc_type,
+ const enum wl_auth_mode auth_mode);
+
+/*! @brief Remove a WPA/WPA2 passphase
+ *
+ * Remove a WPA/WPA2/RSN passphrase associated with a network.
+ *
+ * @param net Network with which to associate the passphrase.
+ * If net is NULL then all stored passphrases will be
+ * cleared.
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE if no passphrase was associated with the net.
+ */
+wl_err_t wl_clear_passphrase(struct wl_network_t *net);
+
+
+/*! \brief Enable legacy power save mode
+ *
+ * Enable legacy power save mode. In legacy power save mode, the device
+ * will power down when idle. When connected, the device will wake up to
+ * receive beacon frames and any buffered data from the AP. The response
+ * time when legacy power save is enabled might therefore be as long as the
+ * AP beacon interval (mostly 100 ms). However, the throughput should not
+ * be affected.
+ *
+ * @return WL_SUCCESS or WL_FAILURE.
+ */
+wl_err_t wl_enable_ps(void);
+
+/*! \brief Disable legacy power save mode
+ *
+ * @return WL_SUCCESS or WL_FAILURE.
+ */
+wl_err_t wl_disable_ps(void);
+
+/*! \brief Configure power save parameters.
+ *
+ * @param use_ps_poll Use PS-Poll frames to retrieve buffered data. Any changes
+ * to this parameter will take effect upon next connect
+ * or when power save is enabled through wl_enable_ps().
+ * Note: To retrieve one buffered packet, the ps poll scheme
+ * needs one ps poll packet to the AP instead of two null
+ * packets in the power management bit scheme. Ps poll avoids
+ * the overhead of traffic monitoring time in active mode as
+ * well. But since each ps poll request can make the AP
+ * release only one buffered packet, it is not the optimal
+ * scheme for applications with heavy downlink traffic.
+ * @param ps_traffic_timeout Timeout in [ms] to wait for more buffered data
+ * from AP. This setting has no effect if
+ * use_ps_poll is 1. Any changes to this parameter
+ * will take effect immediately.
+ * @param ps_delay Power save will de delayed ps_delay [ms] after connecting to
+ * an AP.
+ * @param rx_all_dtim If set to 1, then STA will wake up to listen to every
+ * beacon containing DTIM (delivery traffic indication messages) when
+ * connected. The actual DTIM interval is configured in the AP.
+ * If the DTIM interval, as configured in the AP, is larger than
+ * \a listen_interval, the STA will wakeup according to the
+ * \a listen_interval parameter.
+ * @param listen_interval The Listen Interval field is used to indicate to the
+ * AP how often a STA in power save mode wakes to listen
+ * to beacon frames. The value of this parameter is expressed in units
+ * of Beacon Interval. An AP may use the Listen Interval information in
+ * determining the lifetime of frames that it buffers for a STA.
+ * Any changes to this parameter will take effect upon next association.
+ *
+ * @return WL_SUCCESS or WL_FAILURE.
+ */
+wl_err_t wl_conf_ps(uint8_t use_ps_poll,
+ uint32_t ps_traffic_timeout,
+ uint32_t ps_delay,
+ uint8_t rx_all_dtim,
+ uint16_t listen_interval);
+
+/*! \brief Get the interface MAC address.
+ *
+ * Return the 802.3 MAC address of the network interface.
+ *
+ * @param buf Output buffer. It must be at least WL_MAC_ADDR_LENGTH
+ * bytes long and only the first WL_MAC_ADDR_LENGTH bytes
+ * will contain valid data.
+ * @return
+ * - WL_FAILURE if the interface is not up.
+ * - WL_SUCCESS
+ */
+wl_err_t wl_get_mac_addr(uint8_t* buf);
+
+/*! \brief Return the associated network.
+ *
+ * Return the description of the currently associated
+ * network, if any.
+ *
+ * @return The network description, or NULL of the driver
+ * is unconnected.
+ */
+struct wl_network_t* wl_get_current_network(void);
+/*! @} */
+
+/** \defgroup wl_data Data Transfer
+ *
+ * \brief Packet processing interface.
+ *
+ * Note that the examples in this group assumes that the transport library
+ * functions in the \a wl_transport group are being used. For more information,
+ * See the documentation for those functions in the \a wl_transport group.
+
+For the IP stack integration you need to intercept received packets so
+they can be sent up the stack and to transmit packets coming down the
+stack.
+
+By default the wl_api library discards all data packets. To receive
+them the application must register a rx interrupt service routine (isr)
+using the \a wl_register_rx_isr() function.
+
+\code
+static void rx_isr(void* ctx) {
+ rx_pending = TRUE;
+}
+\endcode
+
+Since the rx_isr() function is only called in interrupt context, it is not
+safe to perform the actual read directly from rx_isr(). If an OS is used,
+the normal case is to signal a receiver thread to invoke the ip stack
+read function to read the pending data. In a system that runs without an OS
+(as in the example), a flag is set to indicate that wl_rx() can be invoked
+from the ip stack read function next time the ip stack is polled.
+The beginning of a ip stack read function can look like this
+
+\code
+static void ip_stack_rx_pkt() {
+ char *pkt = malloc(MAX_PKT_SIZE);
+ uint16_t len = MAX_PKT_SIZE;
+
+ if (p == NULL) {
+ app_error("Out of memory.");
+ return;
+ }
+ wl_rx(pkt, &len);
+ if (0 == len) {
+ app_error("Packet reception failed.");
+ free(pkt);
+ return
+ }
+}
+\endcode
+
+Since the ip_stack_rx_pkt() function should only be called when there is
+actually a packet ready to read you do not have to check the return value
+from \a wl_rx() since it only returns failure if there is no packet ready to
+read.
+
+A packet arriving from the WiFi interface can be either a data
+packet or a message from the WiFi hardware to the WiFi driver
+(which is implemented by the wl_api library). This means that
+wl_api must process every packet to decide if it is an internal
+message or a data frame that
+should be passed up to the application. Data packets are
+prefixed with an extra header containing some administrative
+information, and may be followed by padding bytes and so
+wl_api also needs to strip the extra header and any padding
+before the packet can be safely ingested by the IP stack.
+All this happens in the function \a wl_process_rx() which \b must
+be called on every packet received by a call to \a wl_rx().
+
+Continuing the ip_stack_rx_pkt() example
+
+\code
+ {
+ char* stripped_pkt;
+ size_t stripped_pkt_len;
+ uint16_t vlan;
+ int status;
+
+ status = wl_process_rx(pkt,
+ len,
+ &stripped_pkt,
+ &stripped_pkt_len,
+ &vlan);
+ if (WL_ABSORBED == status) {
+ // This is normal. The packet was a
+ // wl_api-internal message.
+ free(pkt);
+ return;
+ }
+ app_ip_stack_input(stripped_pkt,
+ stripped_pkt_len,
+ vlan);
+ free(pkt);
+ }
+}
+\endcode
+
+If \a wl_process_rx() decides that the packet was a command it processes
+it and returns \a WL_ABSORBED to signal that the packet should
+not be used by anyone else. Otherwise stripped_pkt is
+pointing to the beginning of a 802.3 Ethernet frame of length
+stripped_pkt_len. If the IP stack supports VLAN and QoS
+the extra VLAN tag should be passed to the IP stack
+together with the packet. For IP stacks without this support the VLAN tag
+contents can safely be ignored, but it must still be filled in by \a wl_process_tx().
+
+To register the receive isr
+
+\code
+ wl_register_rx_isr(rx_isr, NULL);
+\endcode
+
+Transmitting data packets happens in a similar way but does not
+require a callback/isr since the application/IP stack knows when it has
+packets to send.
+
+\code
+int ip_stack_tx_pkt(char *pkt, size_t len, uint16_t vlan_tag) {
+ int status;
+ char wlan_hdr[WL_HEADER_SIZE];
+ // The packet must have an Ethernet header
+ if (len < ETHERNET_HEADER_SIZE) {
+ app_error("Invalid packet length");
+ return 0;
+ }
+ hdr_len = sizeof wlan_hdr;
+ status = wl_process_tx(pkt,
+ ETHERNET_HEADER_SIZE,
+ len,
+ wlan_hdr,
+ vlan_tag,
+ NULL);
+ if ( WL_SUCCESS != status ) {
+ app_error("Packet processing failed");
+ return 0;
+ }
+ // Transmit the header first
+ if (wl_tx(wlan_hdr, hdr_len) != WL_SUCCESS) {
+ app_error("Header transmission failed");
+ return 0;
+ }
+ // Then transmit the data packet
+ if (wl_tx(pkt, len) != WL_SUCCESS) {
+ app_error("Packet transmission failed");
+ return 0;
+ }
+}
+\endcode
+
+The final piece of the puzzle in the IP stack integration is
+the MAC address of the WiFi interface
+
+\code
+ char mac_addr[WL_MAC_ADDR_LENGTH];
+
+ wl_get_mac_addr(mac_addr);
+ ip_stack_set_mac_address(mac_addr);
+\endcode
+
+ * @{
+ */
+
+/*! Size of the wl_api packet header */
+#ifdef WFE_6_12
+#define WL_HEADER_SIZE 16
+#else
+#define WL_HEADER_SIZE 14
+#endif
+
+/*! Maximum packet size (including wl_api headers and paddings)
+ *
+ * Maximum packet size is obtained with the following data:
+ *
+ * 1500 bytes of Ethernet payload (MTU) + 14 bytes of Ethernet header +
+ * WL_HEADER_SIZE of wl header. This data is then size-aligned to 16.
+ *
+ */
+#define WL_MAX_PKT_LEN 1536
+
+
+/*!
+ * \brief Process rx packet.
+ *
+ * Processes a raw rx packet by unencrypting it (if necessary)
+ * and stripping headers so as to output a 802.3 frame.
+ *
+ * wl_process_rx() will strip bytes both from the head and from the tail.
+ *
+ * Upon return from wl_process_rx(), the pointer at stripped_pkt will
+ * point to the start of the Ethernet header, hence adjusting the offset
+ * by WL_HEADER_LEN bytes. Any padding (added by the wifi device) will
+ * be removed from the tail of the packet, hence making len smaller.
+ *
+ * The wl_api library of the device will not perform any Ethernet padding
+ * removal. The padding removal performed by wl_process_rx() is only for
+ * the padding used in the protocol shared by the host and the device.
+ * This padding is mainly there to ensure that the host does not have to
+ * deal with rx of odd-sized data buffers (which some DMA's have problems
+ * to handle).
+ *
+ * @param pkt Input buffer (raw packet)
+ * @param pkt_len Length of the input buffer (in bytes)
+ * @param stripped_pkt Pointer to the packet with the
+ * transport header stripped.
+ * @param stripped_pkt_len Length of the stripped packet.
+ * @param vlanid_prio VLAN ID and 802.1p priority value
+ * using following format:
+ * <PRE>
+ * 1
+ * 5|432109876543|210
+ * -+------------+---
+ * 0| VLANID |PRI
+ * </PRE>
+ *
+ * @returns
+ * - WL_FAILURE
+ * - WL_ABSORBED if the packet was an internal driver command
+ * and not a proper data packet. The packet should
+ * be freed and the stripped_pkt will not point
+ * to a valid packet.
+ * - WL_SUCCESS
+ */
+wl_err_t wl_process_rx(char *pkt, size_t pkt_len, char **stripped_pkt,
+ size_t *stripped_pkt_len, uint16_t *vlanid_prio);
+
+/*! \brief Process tx packet.
+ *
+ * Prepare tx packet for transmission.
+ *
+ * This function is typically used only by the TCP/IP stack driver.
+ *
+ * Takes a Ethernet II frame header and generates a message passing header
+ * for it.
+ *
+ * The caller should ensure that any frames injected into wl_process_tx()
+ * are proper Ethernet frames. The wl_api library or the device will not
+ * perform any Ethernet padding if the frames are too short.
+ *
+ * The Ethernet header is assumed to have the following layout :
+ * <dst addr:6><src addr:6><type:2>...
+ * The rest of the Ethernet header buffer (if any) is ignored.
+ *
+ * A note on the TX packet representation :
+ * If your TX packets are simple contiguous buffers you can ignore
+ * the rest of this note and pass NULL in parameter \a pkt_handle.
+ * A TX packet may have a more complex structure than a RX packet
+ * (which must be a contiguous, flat buffer). The IP stack may
+ * for example represent a packet as a linked list of buffers where
+ * the Ethernet header, the IP header and other headers, are represented
+ * by separate buffers. In some cases, such as when the driver is
+ * running in SoftAP mode, a TX packet has to be copied and queued
+ * internally for later processing and to support this when packets
+ * have a complicated structure a special data access function can
+ * be registered. See \a wl_register_pkt_read_cb() for details.
+ * If you use \a wl_process_tx() with non-simple packets you
+ * should pass a handle to the packet in parameter \a pkt_handle
+ * and register an access function with \a wl_register_pkt_read_cb().
+ *
+ * @param eth_hdr Input buffer (Ethernet header)
+ * @param eth_hdr_len Input buffer length (must be >= 14)
+ * This is usually the same as pkt_len unless e.g linked list or buffers
+ * chained in other ways are being used.
+ * @param pkt_len Length of the complete data packet (in bytes)
+ * @param hdr Pointer to the header buffer (must be
+ * allocated by the caller). The length of the buffer
+ * must be at least WL_HEADER_SIZE bytes.
+ * @param vlanid_prio VLAN ID and 802.1p priority value
+ * using following format:
+ * <PRE>
+ * 1
+ * 5|432109876543|210
+ * -+------------+---
+ * 0| VLANID |PRI
+ * </PRE>
+ * Ignored for legacy association (no WMM)
+ * @param pkt_handle A handle to the complete packet. If this parameter
+ * is NULL then \a eth_hdr is expected to point to the whole packet
+ * in a single contiguous buffer (the default). If a different packet
+ * representation is used this parameter should be a handle to the
+ * complete packet and will be passed unmodified to the data
+ * access function that was registered with \a wl_register_pkt_read_cb().
+ *
+ * @returns
+ * - WL_FAILURE
+ * - WL_RESOURCES if packet can not be processed at the moment.
+ * The caller must either drop the packet or try
+ * retransmit it later.
+ * - WL_AVAIL if network not available
+ * - WL_SUCCESS if packet is ready for transmission through wl_tx().
+ */
+wl_err_t wl_process_tx(char *eth_hdr,
+ size_t eth_hdr_len,
+ size_t pkt_len,
+ char *hdr,
+ uint16_t vlanid_prio,
+ void *pkt_handle);
+
+
+/*! \brief Get current TX and RX rate used for data transfer
+ *
+ * During transmission and reception of data, the actual rate used will depend
+ * on the signal quality. This function can be used to get the actual rate used
+ * for the last tx and rx data.
+ *
+ * @param tx will hold the tx rate upon successful return.
+ * @param rx will hold the rx rate upon successful return.
+ *
+ * @return
+ * - WL_SUCCESS on success
+ * - WL_FAILURE on failure.
+ */
+wl_err_t wl_get_rate(wl_rate_t *tx, wl_rate_t *rx);
+
+
+/*! @} */ /* End wl_data group */
+
+
+/** \defgroup wl_transport Transport interface
+ *
+ * \brief Low level transport interface.
+ *
+ * These functions access the low level transport driver which makes
+ * the application independent of the actual physical transport
+ * layer (usually SDIO or SPI).
+ *
+
+For applications running on an real time kernel or without an
+operating system, the provided transport library will fit right into the
+application design. However, when running on a more complex operating system
+(such as windows or linux) which has its own transport primitivies and
+components (and probably its own IP stack) it might be preferred to design a
+custom transport library for that specific environment. Therefore, these
+transport interface functions are fully optional.
+
+
+ * @{
+ */
+
+#define WL_RX_MIN_PKT_LEN 32
+
+
+/*! \brief WiFi event callback.
+ *
+ * This function is invoked in interrupt context when there is new data
+ * available from the mac. This function is supplied by the user
+ * of the API.
+ *
+ * This function is typically used only by the TCP/IP stack driver.
+ *
+ * @param ctx A context handle. This handle is passed
+ * untouched to the callback and has the same value
+ * as the context registered with the callback in
+ * wl_register_event_cb().
+ */
+typedef void (*wl_rx_isr_t) (void* ctx);
+
+
+/*! \brief Firmware access function.
+ *
+ * Reads the WiFi firmware image. This function is supplied by
+ * the user of this API since storage for the firmware image is
+ * managed by the application.
+ *
+ * This function should read the specified number of bytes of the
+ * firmware image starting at the specified \a offset. The number of
+ * bytes to read is given in \a len. Upon return, \a buf should point
+ * to a buffer which holds the read data and the number of valid bytes
+ * in \a buf is returned from the call.
+ *
+ * This function will be called repeatedly until the complete firmware
+ * image has been read.
+ *
+ * This function may be called again at any time while the driver is
+ * running to download further pieces of the WiFi firmware image as
+ * needed by the runtime requirements. This will normally only happen
+ * when the driver switches between networks of different kinds such
+ * as from WEP to WPA, or from ESS to IBSS for example.
+ *
+ * For convenience, any time a firmware chunk has been completely
+ * downloaded this function will be called once with the \a buf
+ * parameter set to NULL to indicate that no more data is needed right
+ * now and that any dynamically allocated buffers which holds firmware
+ * data can be freed without much performance impact.
+ *
+ * @param ctx Opaque context pointer as provided to \a wl_init() that will be
+ * passed back to the callback.
+ * @param buf Should be assigned the address of the buffer holding the read
+ * data upon return. This parameter can be NULL which indicates
+ * that there are no further immediately pending accesses.
+ * @param offset Offset in bytes from the start of the firmware image.
+ * Data should be copied into buf starting at \a offset.
+ * @param len The number of bytes to copy into \a buf.
+ * @return The number of bytes copied into buf. This may be smaller than
+ * \len if the implementation of the function so requires.
+ */
+typedef size_t (wl_fw_read_cb_t)(void *ctx,
+ const uint8_t **buf,
+ size_t offset,
+ size_t len);
+
+
+/*! \brief Initialize the transport interface and download the WiFi firmware
+ * image to the device.
+ *
+ * This operation will proceed synchronously until the firmware is completely
+ * downloaded. wl_init() should be called after this function has returned to
+ * perform device initialization.
+ *
+ * @param fw_read_cb callback function to invoke during firmware download.
+ * @param ctx Opaque context pointer that will be passed to the callbacks
+ * when they are invoked. This parameter is never
+ * accessed by the API.
+ * @param mode will hold the host attention mode used by the transport layer.
+ * This parameter can be passed directly to \a wl_init().
+ *
+ * @return
+ *
+ * - WL_CARD_FAILURE if the wl hardware device is not available
+ * - WL_FIRMWARE_INVALID if the firmware obtained through fw_read_cb is
+ * invalid.
+ * - WL_OOM if the necessary memory could not be allocated.
+ */
+wl_err_t wl_transport_init(wl_fw_read_cb_t *fw_read_cb,
+ void *ctx,
+ enum wl_host_attention_mode *mode);
+
+/*! \brief WiFi driver forward progress function
+ *
+ * This function must be called in polled environments to
+ * ensure forward progress. The call can be made as often as possible from
+ * the main application loop. However, the call will not have any effect unless
+ * there is an interrupt pending from the hardware.
+ *
+ * In interrupt mode, wl_poll() must be called if no interrupt
+ * handler is registered through wl_register_rx_isr(). When an interrupt
+ * handler is registered, it is no longer necessary to invoke wl_poll().
+ *
+ * Note that this function should not be invoked from interrupt context.
+ *
+ */
+void wl_poll(void);
+
+
+/*! \brief Register RX callback
+ *
+ * Register function to be called by the low level transport driver
+ * when a new packet is available or when there is a state change in the
+ * data path. When invoked, any pending data can be fetched by calling wl_rx().
+ *
+ * This function is typically used only by the TCP/IP stack driver.
+ * Note, the registered function is called in interrupt context.
+ *
+ * @param isr rx interrup handler.
+ * @param ctx Opaque context pointer that is passed unmodified to the
+ * rx_cb callback when it is invoked.
+ *
+ * @return WL_SUCCESS
+ */
+wl_err_t wl_register_rx_isr(wl_rx_isr_t isr, void* ctx);
+
+
+/*! \brief Read pending packet
+ *
+ * Read a pending packet from the low level transport driver.
+ * The read packet must be passed to the wl_process_rx() function
+ * for proper driver operation.
+ *
+ * @param buf Buffer to read the packet into. This buffer must be
+ * at least WL_MAX_PKT_LEN bytes long.
+ * @param len Length of buf in bytes. Contains the length of the
+ * read packet in bytes on output.
+ * @return
+ * - WL_FAILURE if no RX packet is pending.
+ * - WL_SUCCESS
+ */
+wl_err_t wl_rx(uint8_t* buf, uint16_t* len);
+
+/*! \brief Send processed tx packet
+ *
+ * Send a packet to the low level transport driver.
+ * This packet has to have been successfully processed by the
+ * wl_process_tx() function.
+ *
+ * @param buf Buffer to send.
+ * @param len Length of buf in bytes.
+ *
+ * @return
+ * - WL_FAILURE if the interface is not ready to send.
+ * - WL_SUCCESS if the packet was successfully transmitted.
+ */
+wl_err_t wl_tx(const uint8_t* buf, uint16_t len);
+
+
+/*! \brief Configure data alignment
+ *
+ * This function can be used if the host SDIO/SPI controller has certain
+ * requirements on the data transfer sizes that can be used on the SDIO/SPI bus.
+ *
+ * If the txsize parameter is non-zero, additional padding data should be added
+ * when performing the low level transfer of data buffer of sizes that are not
+ * a multiple of the size_align parameter. See \ref wl_sdio and \ref wl_spi for
+ * more information.
+ *
+ * @param txsize will configure the size alignment for tx data.
+ *
+ */
+void wl_conf_alignment(uint8_t txsize);
+
+
+/*! @} */ /* End wl_transport group */
+
+
+/** \defgroup wl_custom Custom environment support
+ *
+ * \brief Support for custom environments
+ *
+ * These functions should only be used in cases where the transport library is
+ * not used at all. This usually applies to operating systems and environments
+ * where there already exists a transport layer framework, e.g. linux or
+ * windows.
+ *
+ *
+
+Note that the \a wl_poll() function is part of the transport library. Therefore,
+it should not be used in custom environments. Therefore, it is necessary to
+implement a custom polling or interrupt based scheme to ensure that any
+incoming packets are processed by the core.
+
+ * @{
+ */
+
+ /*! \brief Wakeup callback function.
+ *
+ * Invoked when the WiFi device should wake up from power save mode.
+ * This function should send the proper commands to the device.
+ *
+ * Note that this type should only be used in custom environments, where
+ * the transport library is not used.
+ *
+ * @param ctx Opaque context pointer as provided to \a wl_register_wakeup_cb()
+ * that will be passed back to the callback.
+ * @param wakeup indicates whether wakeup should be set or cleared in the
+ * device.
+ */
+typedef void (wl_wakeup_cb_t)(void* ctx, uint8_t wakeup);
+
+/*! \brief Register wakeup callback function.
+ *
+ * Register a function that will be invoked when the WiFi device should wake
+ * up from power save mode.
+ *
+ * Note that this function should only be used in custom environments, where
+ * the transport library is not used.
+ *
+ * @param wakeup_cb Will be invoked when the device should wakeup from sleep
+ * mode.
+ * @param ctx Opaque context pointer that will be passed back to the callback.
+ */
+void wl_register_wakeup_cb(wl_wakeup_cb_t *wakeup_cb, void *ctx);
+
+
+/*! \brief Management tx callback function.
+ *
+ * Invoked when the a management message should be transmitted to the
+ * WiFi device. This function should ensure that the message is passed through
+ * to the device and should never fail.
+ *
+ * Note that this type should only be used in custom environments, where
+ * the transport library is not used.
+ *
+ * @param ctx Opaque context pointer as provided to \a wl_register_mgmt_tx_cb()
+ * that will be passed back to the callback.
+ * @param buf Points to the buffer which holds the management data,
+ * @param len Size of the buffer.
+ */
+typedef void (wl_mgmt_tx_cb_t)(void *ctx, const uint8_t *buf, uint16_t len);
+
+
+/*! \brief Register management tx callback function
+ *
+ * Register a function that will be invoked when a management message should
+ * be transmitted to the device.
+ *
+ * Note that this function should only be used in custom environments, where
+ * the transport library is not used.
+ *
+ * IMPORTANT : In a custom environment without a transport library \a
+ * wl_register_mgmt_tx_cb() \b must have been called
+ * before \a wl_fw_download() is called since \a
+ * wl_fw_download() depends on the \a mgmt_tx_cb() to send
+ * the firmware data to the WiFi chip.
+ *
+ * @param mgmt_tx_cb The callback function to invoke.
+ * @param ctx Opaque context pointer that will be passed back to the callback.
+ */
+void wl_register_mgmt_tx_cb(wl_mgmt_tx_cb_t *mgmt_tx_cb, void *ctx);
+
+
+
+/*! \brief Download the WiFi firmware image to the device.
+ *
+ * This operation will proceed synchronously until the firmware is completely
+ * downloaded. wl_init() should be called after this function has returned to
+ * perform device initialization. This function depends on \a
+ * wl_register_mgmt_tx_cb(). See that function for details.
+ *
+ * @param ctx Opaque context pointer that will be passed to the callbacks
+ * when they are invoked. This parameter is never
+ * accessed by the API.
+ * @param fw_read_cb callback function to invoke during firmware download.
+ *
+ * @return
+ *
+ * - WL_CARD_FAILURE if the wl hardware device is not available
+ * - WL_FIRMWARE_INVALID if the firmware obtained through fw_read_cb is
+ * invalid.
+ * - WL_OOM if the necessary memory could not be allocated.
+ */
+ wl_err_t wl_fw_download(wl_fw_read_cb_t *fw_read_cb, void *ctx);
+
+
+
+/*! @} */ /* End wl_custom group */
+
+
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h
new file mode 100644
index 0000000..5be5f37
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h
@@ -0,0 +1,19287 @@
+/*
+ * Programming interface for wl_api.
+ * Copyright (C) 2010 HD Wireless AB
+ *
+ * You should have received a copy of the license along with this library.
+ */
+
+#ifndef WITHOUT_STDINT
+#include <stdint.h>
+#endif
+const uint8_t fw_buf[154188] = {
+ 0x10, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00,
+ 0x38, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x20, 0x61, 0x04, 0x00,
+ 0x30, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x30, 0x61, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00,
+ 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee,
+ 0xee, 0xee, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0,
+ 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0,
+ 0x9f, 0xe5, 0x00, 0x00, 0xa0, 0xe1, 0x18, 0xf0,
+ 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x44, 0x00,
+ 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08,
+ 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x08,
+ 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0f, 0xe1, 0x1f, 0x00, 0xc0, 0xe3,
+ 0x13, 0x00, 0x80, 0xe3, 0xc0, 0x00, 0x80, 0xe3,
+ 0x00, 0xf0, 0x2f, 0xe1, 0x1c, 0xf0, 0x9f, 0xe5,
+ 0x3d, 0x02, 0x00, 0xeb, 0x5a, 0x02, 0x00, 0xeb,
+ 0x8d, 0x02, 0x00, 0xeb, 0x01, 0x00, 0x8f, 0xe2,
+ 0x10, 0xff, 0x2f, 0xe1, 0x41, 0xf0, 0xde, 0xfb,
+ 0x01, 0xf0, 0xdc, 0xfd, 0x3c, 0x00, 0x78, 0x00,
+ 0x00, 0x00, 0xfe, 0xe7, 0x00, 0x00, 0x5c, 0x00,
+ 0x00, 0x00, 0x78, 0x47, 0xc0, 0x46, 0x01, 0x00,
+ 0x00, 0xea, 0x78, 0x47, 0xc0, 0x46, 0x17, 0x00,
+ 0x00, 0xea, 0x8c, 0x11, 0x9f, 0xe5, 0x00, 0x20,
+ 0x91, 0xe5, 0x00, 0x30, 0x0f, 0xe1, 0x84, 0x11,
+ 0x9f, 0xe5, 0xfd, 0x20, 0xa1, 0xe8, 0x80, 0x01,
+ 0x9f, 0xe5, 0x80, 0x21, 0x9f, 0xe5, 0x01, 0x20,
+ 0x42, 0xe0, 0x0d, 0x00, 0x40, 0xe0, 0x3c, 0x00,
+ 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x50, 0xe1,
+ 0x28, 0x00, 0x00, 0xaa, 0x68, 0x01, 0x9f, 0xe5,
+ 0x0d, 0x00, 0x50, 0xe1, 0x02, 0x00, 0x00, 0xba,
+ 0x04, 0x20, 0x10, 0xe4, 0x04, 0x20, 0x81, 0xe4,
+ 0xfa, 0xff, 0xff, 0xea, 0x58, 0x11, 0x9f, 0xe5,
+ 0x58, 0x01, 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5,
+ 0x3c, 0x11, 0x9f, 0xe5, 0x50, 0x01, 0x9f, 0xe5,
+ 0x00, 0x00, 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1,
+ 0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x48, 0x11,
+ 0x9f, 0xe5, 0x00, 0x00, 0x91, 0xe5, 0x24, 0x11,
+ 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, 0x2c, 0x11,
+ 0x9f, 0xe5, 0x38, 0x01, 0x9f, 0xe5, 0x00, 0x00,
+ 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, 0x74, 0x02,
+ 0x00, 0xeb, 0x10, 0x01, 0x9f, 0xe5, 0x28, 0x11,
+ 0x9f, 0xe5, 0x04, 0x20, 0x91, 0xe4, 0x04, 0x20,
+ 0x00, 0xe4, 0x04, 0x21, 0x9f, 0xe5, 0x02, 0x00,
+ 0x51, 0xe1, 0x3c, 0x00, 0x2c, 0x01, 0x00, 0x00,
+ 0xfa, 0xff, 0xff, 0x1a, 0xf0, 0x10, 0x9f, 0xe5,
+ 0xfd, 0x20, 0xb1, 0xe8, 0x03, 0xf0, 0x2f, 0xe1,
+ 0xe0, 0x10, 0x9f, 0xe5, 0x00, 0x20, 0x81, 0xe5,
+ 0xe8, 0x10, 0x9f, 0xe5, 0xf4, 0x20, 0x9f, 0xe5,
+ 0x00, 0x20, 0x81, 0xe5, 0x02, 0x10, 0x80, 0xe2,
+ 0x00, 0x00, 0x20, 0xe0, 0x01, 0x00, 0x40, 0xe2,
+ 0x11, 0xff, 0x2f, 0xe1, 0x01, 0x00, 0x8f, 0xe2,
+ 0x10, 0xff, 0x2f, 0xe1, 0x3c, 0x00, 0x68, 0x01,
+ 0x00, 0x00, 0x01, 0xf0, 0x9c, 0xf8, 0x78, 0x47,
+ 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff,
+ 0x2f, 0xe1, 0x01, 0xf0, 0x94, 0xf8, 0x78, 0x47,
+ 0x00, 0x00, 0x03, 0x00, 0x2d, 0xe9, 0x00, 0x10,
+ 0x0f, 0xe1, 0x00, 0x10, 0x80, 0xe5, 0xb8, 0x10,
+ 0x9f, 0xe5, 0x04, 0x10, 0x80, 0xe5, 0x00, 0x10,
+ 0xa0, 0xe1, 0x10, 0x00, 0x80, 0xe2, 0xfc, 0x1f,
+ 0xa0, 0xe8, 0x00, 0x20, 0xa0, 0xe1, 0x3c, 0x00,
+ 0xa4, 0x01, 0x00, 0x00, 0x01, 0x30, 0xa0, 0xe1,
+ 0x03, 0x00, 0xbd, 0xe8, 0x08, 0x00, 0x83, 0xe5,
+ 0x0c, 0x10, 0x83, 0xe5, 0xd3, 0x00, 0xa0, 0xe3,
+ 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8,
+ 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4,
+ 0xd2, 0x00, 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1,
+ 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1,
+ 0x04, 0x10, 0x82, 0xe4, 0xd1, 0x00, 0xa0, 0xe3,
+ 0x3c, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0,
+ 0x21, 0xe1, 0x00, 0x7f, 0xa2, 0xe8, 0x00, 0x10,
+ 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, 0xd7, 0x00,
+ 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60,
+ 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10,
+ 0x82, 0xe4, 0xdb, 0x00, 0xa0, 0xe3, 0x00, 0xf0,
+ 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10,
+ 0x4f, 0xe1, 0x00, 0x10, 0x82, 0xe5, 0x00, 0x00,
+ 0x93, 0xe5, 0x3c, 0x00, 0x1c, 0x02, 0x00, 0x00,
+ 0x00, 0xf0, 0x2f, 0xe1, 0x1e, 0xff, 0x2f, 0xe1,
+ 0x20, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00,
+ 0x20, 0xee, 0x01, 0x00, 0xd8, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0x9f, 0xe5,
+ 0x10, 0x01, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00,
+ 0xee, 0xee, 0xee, 0xee, 0x24, 0x03, 0x00, 0x00,
+ 0x20, 0x02, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x63, 0x1c, 0x0b, 0x4d, 0x3c, 0x00, 0x58, 0x02,
+ 0x00, 0x00, 0x01, 0xd1, 0x6c, 0x69, 0x10, 0xe0,
+ 0x00, 0xf0, 0x6c, 0xfb, 0x09, 0x48, 0xff, 0xf7,
+ 0x0c, 0xff, 0xec, 0x60, 0x08, 0x4a, 0x51, 0x68,
+ 0x50, 0x68, 0x88, 0x42, 0xfc, 0xd0, 0x02, 0x20,
+ 0x28, 0x70, 0x01, 0x21, 0x8a, 0x20, 0x01, 0xf0,
+ 0x12, 0xf8, 0x20, 0x1c, 0xb0, 0xbd, 0x30, 0x00,
+ 0x07, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x3c, 0x00,
+ 0x94, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0xf0,
+ 0x50, 0xfb, 0x14, 0x48, 0xff, 0xf7, 0xf0, 0xfe,
+ 0x13, 0x49, 0x14, 0x48, 0xc1, 0x60, 0x01, 0x21,
+ 0x13, 0x4a, 0x49, 0x03, 0x91, 0x60, 0x13, 0x49,
+ 0xca, 0x78, 0x08, 0x23, 0x9a, 0x43, 0xca, 0x70,
+ 0xca, 0x78, 0x04, 0x23, 0x1a, 0x43, 0xca, 0x70,
+ 0x6b, 0x1c, 0x0d, 0xd0, 0x0e, 0x4b, 0x5a, 0x68,
+ 0x59, 0x68, 0x91, 0x42, 0xfc, 0xd0, 0xbe, 0x21,
+ 0x3c, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x19, 0x73,
+ 0x19, 0x7a, 0x11, 0x22, 0x91, 0x43, 0x19, 0x72,
+ 0x19, 0x7a, 0xc9, 0x07, 0xfc, 0xd4, 0x02, 0x21,
+ 0x01, 0x70, 0xff, 0xf7, 0xd0, 0xfe, 0x20, 0x1c,
+ 0xb0, 0xbd, 0x91, 0x02, 0x00, 0x00, 0xff, 0xff,
+ 0xff, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 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, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 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, 0x00, 0x00, 0x47,
+ 0x08, 0x47, 0x10, 0x47, 0x18, 0x47, 0x20, 0x47,
+ 0x28, 0x47, 0x30, 0x47, 0x38, 0x47, 0x10, 0xb5,
+ 0x04, 0x1c, 0x10, 0x1c, 0x00, 0xf0, 0x23, 0xf9,
+ 0x03, 0xc4, 0x10, 0xbc, 0x08, 0xbc, 0x18, 0x47,
+ 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x03, 0x00, 0x00,
+ 0x10, 0xb4, 0x04, 0x2a, 0x0e, 0xd3, 0x03, 0x1c,
+ 0x0b, 0x43, 0x9b, 0x07, 0x0a, 0xd1, 0x08, 0xc8,
+ 0x10, 0xc9, 0xa3, 0x42, 0x02, 0xd1, 0x04, 0x3a,
+ 0x04, 0x2a, 0xf8, 0xd2, 0xa3, 0x42, 0x01, 0xd0,
+ 0x04, 0x38, 0x04, 0x39, 0x00, 0x2a, 0x02, 0xd1,
+ 0x00, 0x20, 0x10, 0xbc, 0x70, 0x47, 0xd3, 0x07,
+ 0x01, 0xd5, 0x01, 0x32, 0x05, 0xe0, 0x03, 0x78,
+ 0x0c, 0x78, 0x01, 0x31, 0x3c, 0x00, 0x38, 0x04,
+ 0x00, 0x00, 0x01, 0x30, 0xa3, 0x42, 0x07, 0xd1,
+ 0x03, 0x78, 0x0c, 0x78, 0x01, 0x31, 0x01, 0x30,
+ 0xa3, 0x42, 0x01, 0xd1, 0x02, 0x3a, 0xf1, 0xd1,
+ 0x18, 0x1b, 0xe9, 0xe7, 0x00, 0x00, 0x78, 0x47,
+ 0x00, 0x00, 0x00, 0x20, 0xa0, 0xe3, 0x04, 0x00,
+ 0x51, 0xe3, 0x08, 0x00, 0x00, 0x3a, 0x03, 0xc0,
+ 0x10, 0xe2, 0x0d, 0x00, 0x00, 0x0a, 0x04, 0xc0,
+ 0x6c, 0xe2, 0x02, 0x00, 0x5c, 0xe3, 0x3c, 0x00,
+ 0x74, 0x04, 0x00, 0x00, 0x01, 0x20, 0xc0, 0xe4,
+ 0x01, 0x20, 0xc0, 0xa4, 0x01, 0x20, 0xc0, 0xc4,
+ 0x0c, 0x10, 0x41, 0xe0, 0x06, 0x00, 0x00, 0xea,
+ 0x81, 0xcf, 0xb0, 0xe1, 0x01, 0x20, 0xc0, 0x24,
+ 0x01, 0x20, 0xc0, 0x24, 0x01, 0x20, 0xc0, 0x44,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00,
+ 0x00, 0x20, 0xa0, 0xe3, 0x00, 0x40, 0x2d, 0xe9,
+ 0x02, 0x30, 0xa0, 0xe1, 0x02, 0xc0, 0xa0, 0xe1,
+ 0x3c, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x02, 0xe0,
+ 0xa0, 0xe1, 0x20, 0x10, 0x51, 0xe2, 0x0c, 0x50,
+ 0xa0, 0x28, 0x0c, 0x50, 0xa0, 0x28, 0x20, 0x10,
+ 0x51, 0x22, 0xfb, 0xff, 0xff, 0x2a, 0x01, 0x1e,
+ 0xb0, 0xe1, 0x0c, 0x50, 0xa0, 0x28, 0x0c, 0x00,
+ 0xa0, 0x48, 0x00, 0x40, 0xbd, 0xe8, 0x01, 0x11,
+ 0xb0, 0xe1, 0x04, 0x20, 0x80, 0x24, 0x1e, 0xff,
+ 0x2f, 0x01, 0x01, 0x20, 0xc0, 0x44, 0x01, 0x20,
+ 0xc0, 0x44, 0x3c, 0x00, 0xec, 0x04, 0x00, 0x00,
+ 0x40, 0x04, 0x11, 0xe3, 0x01, 0x20, 0xc0, 0x14,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00,
+ 0x03, 0x00, 0x52, 0xe3, 0x3e, 0x00, 0x00, 0x9a,
+ 0x03, 0xc0, 0x10, 0xe2, 0x08, 0x00, 0x00, 0x0a,
+ 0x01, 0x30, 0xd1, 0xe4, 0x02, 0x00, 0x5c, 0xe3,
+ 0x0c, 0x20, 0x82, 0xe0, 0x01, 0xc0, 0xd1, 0x94,
+ 0x01, 0x30, 0xc0, 0xe4, 0x01, 0x30, 0xd1, 0x34,
+ 0x04, 0x20, 0x42, 0xe2, 0x3c, 0x00, 0x28, 0x05,
+ 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x94, 0x01, 0x30,
+ 0xc0, 0x34, 0x03, 0x30, 0x11, 0xe2, 0x1e, 0x00,
+ 0x00, 0x0a, 0x04, 0x20, 0x52, 0xe2, 0x2f, 0x00,
+ 0x00, 0x3a, 0x03, 0xc0, 0x31, 0xe7, 0x02, 0x00,
+ 0x53, 0xe3, 0x08, 0x00, 0x00, 0x0a, 0x0f, 0x00,
+ 0x00, 0x8a, 0x2c, 0x34, 0xa0, 0xe1, 0x04, 0xc0,
+ 0xb1, 0xe5, 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x3c,
+ 0x83, 0xe1, 0x04, 0x30, 0x80, 0xe4, 0x3c, 0x00,
+ 0x64, 0x05, 0x00, 0x00, 0xf9, 0xff, 0xff, 0x2a,
+ 0x01, 0x10, 0x81, 0xe2, 0x23, 0x00, 0x00, 0xea,
+ 0x2c, 0x38, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5,
+ 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x38, 0x83, 0xe1,
+ 0x04, 0x30, 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a,
+ 0x02, 0x10, 0x81, 0xe2, 0x1b, 0x00, 0x00, 0xea,
+ 0x2c, 0x3c, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5,
+ 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x34, 0x83, 0xe1,
+ 0x3c, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x30,
+ 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, 0x03, 0x10,
+ 0x81, 0xe2, 0x13, 0x00, 0x00, 0xea, 0x78, 0x47,
+ 0x00, 0x00, 0x10, 0x40, 0x2d, 0xe9, 0x20, 0x20,
+ 0x52, 0xe2, 0x05, 0x00, 0x00, 0x3a, 0x18, 0x50,
+ 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x18, 0x50,
+ 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x20, 0x20,
+ 0x52, 0x22, 0xf9, 0xff, 0xff, 0x2a, 0x02, 0xce,
+ 0xb0, 0xe1, 0x3c, 0x00, 0xdc, 0x05, 0x00, 0x00,
+ 0x18, 0x50, 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28,
+ 0x18, 0x00, 0xb1, 0x48, 0x18, 0x00, 0xa0, 0x48,
+ 0x10, 0x40, 0xbd, 0xe8, 0x02, 0xcf, 0xb0, 0xe1,
+ 0x04, 0x30, 0x91, 0x24, 0x04, 0x30, 0x80, 0x24,
+ 0x1e, 0xff, 0x2f, 0x01, 0x82, 0x2f, 0xb0, 0xe1,
+ 0x01, 0x20, 0xd1, 0x44, 0x01, 0x30, 0xd1, 0x24,
+ 0x01, 0xc0, 0xd1, 0x24, 0x01, 0x20, 0xc0, 0x44,
+ 0x01, 0x30, 0xc0, 0x24, 0x3c, 0x00, 0x18, 0x06,
+ 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x24, 0x1e, 0xff,
+ 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0xff, 0x30,
+ 0x01, 0xe2, 0x02, 0x10, 0xa0, 0xe1, 0x03, 0x24,
+ 0x83, 0xe1, 0x02, 0x28, 0x82, 0xe1, 0x88, 0xff,
+ 0xff, 0xea, 0x78, 0x47, 0x00, 0x00, 0x80, 0x24,
+ 0x10, 0xe2, 0x00, 0x00, 0x60, 0x42, 0x41, 0x30,
+ 0x32, 0xe0, 0x00, 0x10, 0x61, 0x22, 0xa1, 0xc1,
+ 0x70, 0xe0, 0x20, 0x00, 0x00, 0x3a, 0x3c, 0x00,
+ 0x54, 0x06, 0x00, 0x00, 0x21, 0xc4, 0x70, 0xe0,
+ 0x0f, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1,
+ 0xff, 0x24, 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0,
+ 0x17, 0x00, 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0,
+ 0x09, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1,
+ 0xff, 0x28, 0x82, 0xe3, 0x21, 0xc4, 0x70, 0xe0,
+ 0x00, 0x04, 0xa0, 0x21, 0xff, 0x2c, 0x82, 0x23,
+ 0x21, 0xc2, 0x70, 0xe0, 0x0e, 0x00, 0x00, 0x3a,
+ 0x3c, 0x00, 0x90, 0x06, 0x00, 0x00, 0x00, 0xc0,
+ 0x70, 0xe2, 0x83, 0x00, 0x00, 0x2a, 0x20, 0x04,
+ 0xa0, 0x21, 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3,
+ 0x70, 0xe0, 0x00, 0x13, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0xa1, 0xc2, 0x70, 0xe0, 0x80, 0x12,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc2,
+ 0x70, 0xe0, 0x00, 0x12, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x3c, 0x00, 0xcc, 0x06, 0x00, 0x00,
+ 0xa1, 0xc1, 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20,
+ 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0,
+ 0x00, 0x11, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0,
+ 0xa1, 0xc0, 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20,
+ 0x02, 0x20, 0xa2, 0xe0, 0x01, 0xc0, 0x70, 0xe0,
+ 0x00, 0x10, 0x41, 0x20, 0x02, 0x20, 0xb2, 0xe0,
+ 0xe5, 0xff, 0xff, 0x2a, 0xc3, 0x0f, 0x32, 0xe0,
+ 0xa3, 0x0f, 0x80, 0xe0, 0x3c, 0x00, 0x08, 0x07,
+ 0x00, 0x00, 0x00, 0x10, 0x61, 0x22, 0x1e, 0xff,
+ 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0x00, 0x20,
+ 0xa0, 0xe3, 0xa1, 0xc1, 0x70, 0xe0, 0x20, 0x00,
+ 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x0f, 0x00,
+ 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0xff, 0x24,
+ 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, 0x17, 0x00,
+ 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x09, 0x00,
+ 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0x3c, 0x00,
+ 0x44, 0x07, 0x00, 0x00, 0xff, 0x28, 0x82, 0xe3,
+ 0x21, 0xc4, 0x70, 0xe0, 0x00, 0x04, 0xa0, 0x21,
+ 0xff, 0x2c, 0x82, 0x23, 0x21, 0xc2, 0x70, 0xe0,
+ 0x0e, 0x00, 0x00, 0x3a, 0x00, 0xc0, 0x70, 0xe2,
+ 0x50, 0x00, 0x00, 0x2a, 0x20, 0x04, 0xa0, 0x21,
+ 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, 0x41, 0x20,
+ 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, 0x70, 0xe0,
+ 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0,
+ 0x3c, 0x00, 0x80, 0x07, 0x00, 0x00, 0xa1, 0xc2,
+ 0x70, 0xe0, 0x80, 0x12, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x21, 0xc2, 0x70, 0xe0, 0x00, 0x12,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc1,
+ 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, 0x00, 0x11,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc0,
+ 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x3c, 0x00, 0xbc, 0x07, 0x00, 0x00,
+ 0x01, 0xc0, 0x70, 0xe0, 0x00, 0x10, 0x41, 0x20,
+ 0x02, 0x20, 0xb2, 0xe0, 0xe5, 0xff, 0xff, 0x2a,
+ 0x02, 0x00, 0xa0, 0xe1, 0x1e, 0xff, 0x2f, 0xe1,
+ 0x78, 0x47, 0x00, 0x00, 0x0a, 0x10, 0x40, 0xe2,
+ 0x20, 0x01, 0x40, 0xe0, 0x20, 0x02, 0x80, 0xe0,
+ 0x20, 0x04, 0x80, 0xe0, 0x20, 0x08, 0x80, 0xe0,
+ 0xa0, 0x01, 0xa0, 0xe1, 0x00, 0x21, 0x80, 0xe0,
+ 0x82, 0x10, 0x51, 0xe0, 0x3c, 0x00, 0xf8, 0x07,
+ 0x00, 0x00, 0x01, 0x00, 0x80, 0x52, 0x0a, 0x10,
+ 0x81, 0x42, 0x1e, 0xff, 0x2f, 0xe1, 0x30, 0xb4,
+ 0x44, 0x1c, 0x81, 0x07, 0x08, 0xd0, 0x01, 0x78,
+ 0x01, 0x30, 0x00, 0x29, 0x02, 0xd1, 0x00, 0x1b,
+ 0x30, 0xbc, 0x70, 0x47, 0x81, 0x07, 0xf6, 0xd1,
+ 0x0b, 0x4a, 0xd5, 0x01, 0x02, 0xc8, 0x8b, 0x1a,
+ 0x8b, 0x43, 0x2b, 0x40, 0xfa, 0xd0, 0x00, 0x1b,
+ 0x0a, 0x06, 0x01, 0xd1, 0x03, 0x38, 0x3c, 0x00,
+ 0x34, 0x08, 0x00, 0x00, 0xef, 0xe7, 0x0a, 0x04,
+ 0x12, 0x0e, 0x01, 0xd1, 0x02, 0x38, 0xea, 0xe7,
+ 0x09, 0x02, 0x09, 0x0e, 0xe7, 0xd1, 0x01, 0x38,
+ 0xe5, 0xe7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+ 0xf0, 0xb4, 0x03, 0x1c, 0x04, 0x1c, 0x0c, 0x43,
+ 0xa4, 0x07, 0x0c, 0xd1, 0x10, 0x4d, 0xef, 0x01,
+ 0x02, 0xe0, 0x04, 0x31, 0x04, 0x3a, 0x10, 0xc3,
+ 0x04, 0x2a, 0x04, 0xd3, 0x0c, 0x68, 0x66, 0x1b,
+ 0x3c, 0x00, 0x70, 0x08, 0x00, 0x00, 0xa6, 0x43,
+ 0x3e, 0x40, 0xf5, 0xd0, 0x00, 0x2a, 0x07, 0xd0,
+ 0x0c, 0x78, 0x01, 0x31, 0x1c, 0x70, 0x01, 0x33,
+ 0x00, 0x2c, 0x03, 0xd0, 0x01, 0x3a, 0xf7, 0xd1,
+ 0xf0, 0xbc, 0x70, 0x47, 0x01, 0x2a, 0xfb, 0xd9,
+ 0x51, 0x1e, 0x00, 0x22, 0x1a, 0x70, 0x01, 0x33,
+ 0x01, 0x39, 0xfb, 0xd1, 0xf4, 0xe7, 0x01, 0x01,
+ 0x01, 0x01, 0x78, 0x47, 0x00, 0x00, 0x02, 0x00,
+ 0xa0, 0xe3, 0x3c, 0x00, 0xac, 0x08, 0x00, 0x00,
+ 0x02, 0x10, 0xa0, 0xe3, 0x2e, 0xfe, 0xff, 0xea,
+ 0x1f, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0x0f, 0xe1,
+ 0xc0, 0x00, 0x80, 0xe3, 0x00, 0xf0, 0x2f, 0xe1,
+ 0x81, 0x00, 0xa0, 0xe3, 0x02, 0x10, 0xa0, 0xe3,
+ 0x01, 0x20, 0x8f, 0xe2, 0x12, 0xff, 0x2f, 0xe1,
+ 0x00, 0xf0, 0xe6, 0xfc, 0x78, 0x47, 0x00, 0x00,
+ 0x1f, 0x40, 0xbd, 0xe8, 0xfe, 0xff, 0xff, 0xea,
+ 0x1f, 0x50, 0x2d, 0xe9, 0x3c, 0x00, 0xe8, 0x08,
+ 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff,
+ 0x2f, 0xe1, 0x00, 0xf0, 0x40, 0xfb, 0x78, 0x47,
+ 0x00, 0x00, 0x1f, 0x50, 0xbd, 0xe8, 0x04, 0xf0,
+ 0x5e, 0xe2, 0x1f, 0x50, 0x2d, 0xe9, 0x01, 0x00,
+ 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0xf0,
+ 0x18, 0xfb, 0x78, 0x47, 0x00, 0x00, 0x1f, 0x50,
+ 0xbd, 0xe8, 0x04, 0xf0, 0x5e, 0xe2, 0x00, 0xbd,
+ 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, 0x3c, 0x00,
+ 0x24, 0x09, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xe1,
+ 0xc0, 0x30, 0xc3, 0xe3, 0x03, 0xf0, 0x21, 0xe1,
+ 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1,
+ 0x01, 0xbd, 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47,
+ 0x00, 0x30, 0x0f, 0xe1, 0xc0, 0x30, 0x83, 0xe3,
+ 0x03, 0xf0, 0x21, 0xe1, 0x01, 0x00, 0x8f, 0xe2,
+ 0x10, 0xff, 0x2f, 0xe1, 0x01, 0xbd, 0x00, 0x00,
+ 0x18, 0x00, 0x9f, 0xe5, 0x04, 0x10, 0x90, 0xe4,
+ 0x3c, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x00,
+ 0x51, 0xe3, 0x02, 0x00, 0x00, 0x0a, 0x04, 0x20,
+ 0x90, 0xe4, 0x00, 0x20, 0x81, 0xe5, 0xf9, 0xff,
+ 0xff, 0xea, 0x0e, 0xf0, 0xa0, 0xe1, 0x7c, 0x09,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00,
+ 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd8, 0x03,
+ 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0xd8, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x09, 0x00, 0x00,
+ 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
+ 0x44, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+ 0x00, 0x80, 0x01, 0x00, 0x10, 0x8e, 0x01, 0x00,
+ 0x10, 0x8e, 0x01, 0x00, 0x88, 0xf8, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00,
+ 0xc4, 0x33, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1,
+ 0x58, 0x40, 0x9f, 0xe5, 0x3c, 0x00, 0xd8, 0x09,
+ 0x00, 0x00, 0x04, 0x00, 0x94, 0xe4, 0x01, 0x00,
+ 0x50, 0xe3, 0x05, 0xf0, 0xa0, 0x01, 0x04, 0x10,
+ 0x94, 0xe4, 0x04, 0x20, 0x94, 0xe4, 0x03, 0x00,
+ 0x00, 0xeb, 0x04, 0x00, 0x94, 0xe4, 0x04, 0x10,
+ 0x94, 0xe4, 0x07, 0x00, 0x00, 0xeb, 0xf5, 0xff,
+ 0xff, 0xea, 0x01, 0x00, 0x50, 0xe1, 0x0e, 0xf0,
+ 0xa0, 0x01, 0x02, 0x00, 0x51, 0xe1, 0x04, 0x30,
+ 0x90, 0x14, 0x04, 0x30, 0x81, 0x14, 0x3c, 0x00,
+ 0x14, 0x0a, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x1a,
+ 0x0e, 0xf0, 0xa0, 0xe1, 0x14, 0x20, 0x9f, 0xe5,
+ 0x00, 0x20, 0x92, 0xe5, 0x01, 0x00, 0x50, 0xe1,
+ 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a,
+ 0x0e, 0xf0, 0xa0, 0xe1, 0x80, 0x09, 0x00, 0x00,
+ 0xcc, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x20, 0xe6, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00,
+ 0x53, 0x56, 0x43, 0x5f, 0x00, 0x04, 0x00, 0x00,
+ 0x3c, 0x00, 0x50, 0x0a, 0x00, 0x00, 0x20, 0xee,
+ 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x49, 0x52,
+ 0x51, 0x5f, 0x00, 0x02, 0x00, 0x00, 0x20, 0xf2,
+ 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x49,
+ 0x51, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x20, 0xf4,
+ 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x42,
+ 0x54, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4,
+ 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x55, 0x4e,
+ 0x44, 0x5f, 0x3c, 0x00, 0x8c, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, 0x01, 0x00,
+ 0x1f, 0x00, 0x00, 0x00, 0x55, 0x53, 0x52, 0x5f,
+ 0x01, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1,
+ 0x00, 0x60, 0x0f, 0xe1, 0x8c, 0x40, 0x9f, 0xe5,
+ 0x04, 0x10, 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3,
+ 0x09, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4,
+ 0x01, 0x10, 0x80, 0xe0, 0x03, 0x10, 0xc1, 0xe3,
+ 0x04, 0x20, 0x94, 0xe4, 0x3c, 0x00, 0xc8, 0x0a,
+ 0x00, 0x00, 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0,
+ 0x2f, 0xe1, 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20,
+ 0x94, 0xe4, 0x13, 0x00, 0x00, 0xeb, 0xf2, 0xff,
+ 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, 0x05, 0xf0,
+ 0xa0, 0xe1, 0x0e, 0x50, 0xa0, 0xe1, 0x00, 0x60,
+ 0x0f, 0xe1, 0x44, 0x40, 0x9f, 0xe5, 0x04, 0x10,
+ 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, 0x08, 0x00,
+ 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, 0x3c, 0x00,
+ 0x04, 0x0b, 0x00, 0x00, 0x01, 0x10, 0x80, 0xe0,
+ 0x03, 0x10, 0xc1, 0xe3, 0x04, 0x20, 0x94, 0xe4,
+ 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, 0x2f, 0xe1,
+ 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, 0x94, 0xe4,
+ 0xf3, 0xff, 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1,
+ 0x05, 0xf0, 0xa0, 0xe1, 0x01, 0x00, 0x50, 0xe1,
+ 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a,
+ 0x0e, 0xf0, 0xa0, 0xe1, 0x3c, 0x0a, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x01, 0x60,
+ 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0x70, 0x47,
+ 0x00, 0x00, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00,
+ 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x10, 0x0e,
+ 0x01, 0xee, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00,
+ 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x1e, 0xff,
+ 0x2f, 0xe1, 0x10, 0x1e, 0x10, 0xee, 0x01, 0x00,
+ 0x11, 0xe3, 0x03, 0x00, 0x00, 0x0a, 0x10, 0x1e,
+ 0x11, 0xee, 0x3c, 0x00, 0x7c, 0x0b, 0x00, 0x00,
+ 0x00, 0x10, 0x80, 0xe5, 0x01, 0x00, 0xa0, 0xe3,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x20, 0xe0,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x8d, 0x46, 0x97, 0x46,
+ 0x78, 0x47, 0xc0, 0x46, 0x78, 0xfd, 0xff, 0xea,
+ 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x28, 0x01, 0xd9,
+ 0x00, 0xf0, 0xac, 0xfb, 0x0c, 0x48, 0x40, 0x68,
+ 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, 0x0b, 0x48,
+ 0x01, 0x68, 0x09, 0x48, 0x3c, 0x00, 0xb8, 0x0b,
+ 0x00, 0x00, 0x12, 0x30, 0x00, 0x29, 0x05, 0xd0,
+ 0x06, 0x21, 0x61, 0x43, 0x40, 0x5c, 0xc3, 0x00,
+ 0x18, 0x18, 0x04, 0xe0, 0x06, 0x21, 0x61, 0x43,
+ 0x40, 0x5c, 0x14, 0x23, 0x58, 0x43, 0x0a, 0x30,
+ 0x00, 0x06, 0x00, 0x0e, 0x10, 0xbd, 0xd4, 0x7a,
+ 0x01, 0x00, 0xa8, 0x69, 0x01, 0x00, 0x80, 0xb5,
+ 0x09, 0x4a, 0x09, 0x49, 0x03, 0x20, 0x00, 0xf0,
+ 0xf2, 0xf9, 0x08, 0x49, 0x08, 0x20, 0x3c, 0x00,
+ 0xf4, 0x0b, 0x00, 0x00, 0x08, 0x60, 0x48, 0x60,
+ 0x07, 0x49, 0x1d, 0x20, 0x01, 0xf0, 0xb2, 0xfc,
+ 0x06, 0x49, 0x1e, 0x20, 0x01, 0xf0, 0xae, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00,
+ 0x31, 0x27, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x29, 0x25, 0x00, 0x00, 0x31, 0x25, 0x00, 0x00,
+ 0x05, 0x49, 0x80, 0xb5, 0x08, 0x20, 0x88, 0x60,
+ 0x1d, 0x20, 0x01, 0xf0, 0xbf, 0xfc, 0x1e, 0x20,
+ 0x3c, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x01, 0xf0,
+ 0xbc, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xd1, 0x2a,
+ 0x80, 0xb5, 0x01, 0xd1, 0x05, 0xf0, 0x19, 0xfc,
+ 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20,
+ 0x08, 0x80, 0x05, 0x20, 0x05, 0xf0, 0xd5, 0xfb,
+ 0x80, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x80, 0xb5,
+ 0x54, 0x28, 0x01, 0xd1, 0x06, 0xf0, 0xcd, 0xf8,
+ 0x80, 0xbd, 0x3c, 0x00, 0x6c, 0x0c, 0x00, 0x00,
+ 0xb0, 0xb5, 0x10, 0x4d, 0x02, 0x1c, 0x01, 0x24,
+ 0x01, 0x2a, 0x0d, 0x48, 0x29, 0x68, 0x06, 0xd0,
+ 0xc4, 0x2a, 0x03, 0xd1, 0x6a, 0x68, 0x00, 0x2a,
+ 0x05, 0xd0, 0xac, 0x60, 0xb0, 0xbd, 0x0e, 0xf0,
+ 0x89, 0xfb, 0x6c, 0x60, 0x08, 0xe0, 0x00, 0x22,
+ 0xaa, 0x60, 0x6c, 0x60, 0x0e, 0xf0, 0x82, 0xfb,
+ 0x00, 0x21, 0x04, 0x20, 0x12, 0xf0, 0xc8, 0xfc,
+ 0x06, 0xf0, 0xd8, 0xf8, 0x3c, 0x00, 0xa8, 0x0c,
+ 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x60,
+ 0x01, 0x00, 0xbc, 0x74, 0x01, 0x00, 0x05, 0x4a,
+ 0x51, 0x69, 0x08, 0x1a, 0x11, 0x69, 0x09, 0x68,
+ 0x10, 0x31, 0x81, 0x42, 0x01, 0xd8, 0x50, 0x61,
+ 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x8c, 0x6e,
+ 0x01, 0x00, 0x01, 0x49, 0x49, 0x68, 0x40, 0x1a,
+ 0x70, 0x47, 0x8c, 0x6e, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x69, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0x0c, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00,
+ 0x02, 0x4a, 0x51, 0x69, 0x08, 0x18, 0x50, 0x61,
+ 0x70, 0x47, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00,
+ 0x0e, 0x49, 0x0f, 0x48, 0x10, 0xb5, 0x19, 0x22,
+ 0x92, 0x01, 0x41, 0x60, 0x89, 0x18, 0xc1, 0x60,
+ 0x0b, 0x49, 0x00, 0x22, 0x0c, 0x31, 0x01, 0x60,
+ 0x0a, 0x49, 0x82, 0x60, 0x09, 0x68, 0x01, 0x23,
+ 0xdb, 0x03, 0xc9, 0x18, 0x08, 0x4c, 0x41, 0x61,
+ 0x3c, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x21, 0x68,
+ 0x00, 0x29, 0x02, 0xd0, 0x07, 0x49, 0x01, 0x61,
+ 0x01, 0xe0, 0x00, 0xf0, 0x0c, 0xf8, 0x22, 0x60,
+ 0x10, 0xbd, 0x44, 0xdc, 0x01, 0x00, 0x8c, 0x6e,
+ 0x01, 0x00, 0xc8, 0x09, 0x00, 0x00, 0x34, 0x58,
+ 0x01, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x01, 0x48,
+ 0x02, 0x49, 0x08, 0x61, 0x70, 0x47, 0xc8, 0x09,
+ 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, 0x08, 0x28,
+ 0x05, 0xd2, 0x3c, 0x00, 0x5c, 0x0d, 0x00, 0x00,
+ 0x03, 0x4b, 0x80, 0x00, 0x19, 0x50, 0x02, 0x49,
+ 0x20, 0x31, 0x0a, 0x50, 0x70, 0x47, 0x00, 0x00,
+ 0x64, 0x6d, 0x01, 0x00, 0x70, 0xb5, 0x06, 0x1c,
+ 0x0d, 0x48, 0x0d, 0x1c, 0x00, 0x68, 0x14, 0x1c,
+ 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0,
+ 0x09, 0xfc, 0x70, 0xbd, 0x28, 0x06, 0x01, 0xd5,
+ 0x00, 0xf0, 0x22, 0xfe, 0x22, 0x1c, 0x29, 0x1c,
+ 0x30, 0x1c, 0x08, 0xf0, 0x3c, 0x00, 0x98, 0x0d,
+ 0x00, 0x00, 0xdd, 0xfd, 0x01, 0x1c, 0x03, 0x48,
+ 0x54, 0x30, 0x43, 0x69, 0x32, 0x1c, 0xff, 0xf7,
+ 0x1b, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0x50, 0x6d,
+ 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0d, 0x48,
+ 0x1f, 0x1c, 0x00, 0x68, 0x15, 0x1c, 0x0c, 0x1c,
+ 0x00, 0x28, 0x02, 0xd1, 0x28, 0x1c, 0x00, 0xf0,
+ 0xe8, 0xfb, 0x20, 0x06, 0x01, 0xd5, 0x00, 0xf0,
+ 0x02, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, 0x3c, 0x00,
+ 0xd4, 0x0d, 0x00, 0x00, 0x30, 0x1c, 0x08, 0xf0,
+ 0xbd, 0xfd, 0x01, 0x1c, 0x03, 0x48, 0x54, 0x30,
+ 0x43, 0x69, 0x3a, 0x1c, 0xff, 0xf7, 0xfb, 0xfa,
+ 0xf8, 0xbd, 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00,
+ 0xf8, 0xb5, 0xf1, 0x28, 0x4e, 0xd1, 0x2a, 0x48,
+ 0x69, 0x46, 0x82, 0x69, 0xff, 0xf7, 0xee, 0xfa,
+ 0x27, 0x49, 0x00, 0x26, 0x54, 0x39, 0xc8, 0x68,
+ 0x8b, 0x68, 0xc2, 0x00, 0x01, 0x30, 0xd5, 0x18,
+ 0x3c, 0x00, 0x10, 0x0e, 0x00, 0x00, 0x07, 0x28,
+ 0xc8, 0x60, 0x00, 0xd1, 0xce, 0x60, 0x22, 0x48,
+ 0x6c, 0x68, 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0,
+ 0x00, 0x21, 0x20, 0x1c, 0x08, 0xf0, 0x3b, 0xfb,
+ 0x6e, 0x60, 0x25, 0x68, 0x20, 0x89, 0xa9, 0x78,
+ 0x02, 0x39, 0x40, 0x1a, 0xe9, 0x78, 0x40, 0x1a,
+ 0x20, 0x81, 0xa8, 0x78, 0x28, 0x18, 0x02, 0x38,
+ 0x20, 0x60, 0x6e, 0x78, 0x28, 0x78, 0x08, 0x28,
+ 0x17, 0xd2, 0x3c, 0x00, 0x4c, 0x0e, 0x00, 0x00,
+ 0x30, 0x06, 0x07, 0xd5, 0x27, 0x1c, 0x20, 0x1c,
+ 0x00, 0xf0, 0x7a, 0xfc, 0x04, 0x1c, 0x38, 0x1c,
+ 0x00, 0xf0, 0x9c, 0xfb, 0x28, 0x78, 0x0f, 0x49,
+ 0x40, 0x39, 0x80, 0x00, 0x0a, 0x58, 0x00, 0x2a,
+ 0x04, 0xd0, 0x31, 0x1c, 0x20, 0x1c, 0xff, 0xf7,
+ 0xb3, 0xfa, 0x08, 0xe0, 0x05, 0x21, 0x00, 0xe0,
+ 0x04, 0x21, 0x06, 0x20, 0x00, 0xf0, 0x10, 0xfa,
+ 0x20, 0x1c, 0x00, 0xf0, 0x3c, 0x00, 0x88, 0x0e,
+ 0x00, 0x00, 0x87, 0xfb, 0x30, 0x06, 0x01, 0xd5,
+ 0x00, 0xf0, 0xa1, 0xfd, 0xf8, 0xbd, 0x01, 0x21,
+ 0x06, 0x20, 0x00, 0xf0, 0x04, 0xfa, 0xf9, 0xe7,
+ 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, 0xcc, 0x5c,
+ 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, 0x19, 0x4f,
+ 0x01, 0x24, 0x54, 0x35, 0x29, 0x1c, 0x03, 0x20,
+ 0x7c, 0x60, 0x17, 0x4b, 0x18, 0x4a, 0x05, 0xf0,
+ 0xf4, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x3c, 0x00,
+ 0xc4, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x38, 0x60,
+ 0x1f, 0xe0, 0x3c, 0x60, 0x07, 0x21, 0x28, 0x1c,
+ 0xea, 0x69, 0xff, 0xf7, 0x83, 0xfa, 0x38, 0x20,
+ 0x00, 0xf0, 0x80, 0xfc, 0x00, 0x24, 0xb8, 0x60,
+ 0xb8, 0x68, 0xe6, 0x00, 0x35, 0x18, 0x68, 0x46,
+ 0x02, 0x21, 0x00, 0xf0, 0x75, 0xfb, 0x28, 0x60,
+ 0x28, 0x1c, 0x00, 0xf0, 0xa5, 0xfd, 0xb8, 0x68,
+ 0x81, 0x59, 0x06, 0x48, 0x54, 0x30, 0x02, 0x6a,
+ 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xf7,
+ 0x6c, 0xfa, 0x01, 0x34, 0x07, 0x2c, 0xea, 0xdb,
+ 0x00, 0x20, 0xf8, 0x60, 0x38, 0x61, 0xf8, 0xbd,
+ 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, 0x81, 0x9a,
+ 0x00, 0x00, 0x61, 0x9a, 0x00, 0x00, 0x05, 0x48,
+ 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0,
+ 0x03, 0x48, 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21,
+ 0xff, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0x50, 0x6d,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0xb5, 0x0a, 0x4e,
+ 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, 0xa1, 0x69,
+ 0x00, 0x29, 0x07, 0xd0, 0x30, 0x68, 0x41, 0x60,
+ 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, 0xff, 0xf7,
+ 0x3e, 0xfa, 0xf4, 0xe7, 0x03, 0x49, 0x02, 0x20,
+ 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, 0x07, 0x00,
+ 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00,
+ 0x70, 0xb5, 0x0a, 0x4e, 0x3c, 0x00, 0x78, 0x0f,
+ 0x00, 0x00, 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e,
+ 0xe1, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x70, 0x68,
+ 0x41, 0x60, 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58,
+ 0xff, 0xf7, 0x24, 0xfa, 0xf4, 0xe7, 0x03, 0x49,
+ 0x02, 0x20, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10,
+ 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02,
+ 0x07, 0x00, 0xb0, 0xb5, 0x09, 0x4d, 0x04, 0x1c,
+ 0x28, 0x1c, 0x20, 0x22, 0x40, 0x30, 0x3c, 0x00,
+ 0xb4, 0x0f, 0x00, 0x00, 0x05, 0x49, 0xff, 0xf7,
+ 0x9f, 0xfa, 0xe0, 0x68, 0xe8, 0x60, 0x20, 0x69,
+ 0x28, 0x61, 0xa0, 0x6a, 0xa8, 0x62, 0x60, 0x68,
+ 0x68, 0x60, 0xb0, 0xbd, 0x70, 0x52, 0x01, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x00, 0x24,
+ 0x00, 0x23, 0x20, 0x28, 0x01, 0xdb, 0x01, 0x24,
+ 0x07, 0xe0, 0x08, 0x4e, 0x80, 0x00, 0x35, 0x58,
+ 0x07, 0x4f, 0xbd, 0x42, 0x00, 0xd0, 0x2b, 0x1c,
+ 0x3c, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x31, 0x50,
+ 0x13, 0x60, 0x00, 0x2c, 0x03, 0xd0, 0x21, 0x1c,
+ 0x82, 0x20, 0x00, 0xf0, 0x52, 0xf9, 0x20, 0x1c,
+ 0xf8, 0xbd, 0xe0, 0x7e, 0x01, 0x00, 0x75, 0x75,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0b, 0x4d, 0x04, 0x1c,
+ 0x28, 0x68, 0x00, 0x28, 0x0f, 0xd0, 0x20, 0x1c,
+ 0x12, 0xf0, 0xb7, 0xfd, 0x00, 0x28, 0x0a, 0xd0,
+ 0x21, 0x7a, 0x28, 0x7a, 0x0a, 0x07, 0x00, 0x07,
+ 0x00, 0x0f, 0x3c, 0x00, 0x2c, 0x10, 0x00, 0x00,
+ 0x12, 0x0f, 0x90, 0x42, 0x29, 0x72, 0x01, 0xd0,
+ 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd,
+ 0x70, 0x78, 0x01, 0x00, 0xf0, 0xb5, 0x42, 0x4e,
+ 0x05, 0x1c, 0x30, 0x68, 0x85, 0xb0, 0x00, 0x28,
+ 0x63, 0xd0, 0x00, 0x24, 0x00, 0x20, 0x00, 0x2d,
+ 0x06, 0xd0, 0x69, 0x78, 0x18, 0x29, 0x03, 0xd1,
+ 0xe9, 0x79, 0x01, 0x29, 0x00, 0xd1, 0x01, 0x20,
+ 0x00, 0x28, 0x45, 0xd0, 0x3c, 0x00, 0x68, 0x10,
+ 0x00, 0x00, 0x00, 0x20, 0xb0, 0x72, 0x81, 0x00,
+ 0x4a, 0x19, 0x93, 0x7a, 0x59, 0x06, 0x89, 0x0f,
+ 0xdb, 0x06, 0x04, 0xd5, 0xb3, 0x7a, 0x01, 0x27,
+ 0x8f, 0x40, 0x3b, 0x43, 0xb3, 0x72, 0xd2, 0x7a,
+ 0x13, 0x09, 0x12, 0x07, 0x12, 0x0f, 0x93, 0x42,
+ 0x05, 0xd3, 0x01, 0x22, 0x8a, 0x40, 0x14, 0x43,
+ 0x01, 0xaa, 0x89, 0x00, 0x50, 0x50, 0x01, 0x30,
+ 0x04, 0x28, 0xe4, 0xdb, 0xb0, 0x7a, 0x3c, 0x00,
+ 0xa4, 0x10, 0x00, 0x00, 0x20, 0x40, 0x01, 0x07,
+ 0x0d, 0xd5, 0x41, 0x07, 0x09, 0xd5, 0xc1, 0x07,
+ 0x05, 0xd5, 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24,
+ 0x05, 0xe0, 0x02, 0x99, 0x02, 0xe0, 0x01, 0x99,
+ 0x00, 0xe0, 0x03, 0x99, 0x04, 0x91, 0x41, 0x07,
+ 0x09, 0xd5, 0xc1, 0x07, 0x05, 0xd5, 0x81, 0x07,
+ 0x01, 0xd5, 0x00, 0x24, 0x03, 0xe0, 0x02, 0x99,
+ 0x00, 0xe0, 0x01, 0x99, 0x03, 0x91, 0xc1, 0x07,
+ 0x3c, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x05, 0xd5,
+ 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, 0x01, 0xe0,
+ 0x02, 0x99, 0x01, 0x91, 0x80, 0x07, 0x01, 0xd5,
+ 0x00, 0x24, 0x22, 0xe0, 0x0f, 0x2c, 0x20, 0xd1,
+ 0x70, 0x68, 0x00, 0x28, 0x0b, 0xd0, 0x04, 0x9a,
+ 0x02, 0xab, 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a,
+ 0x28, 0x1c, 0x0b, 0xf0, 0x8a, 0xfb, 0x00, 0x20,
+ 0x70, 0x60, 0x10, 0xe0, 0x17, 0xe0, 0x30, 0x7a,
+ 0x29, 0x7a, 0x3c, 0x00, 0x1c, 0x11, 0x00, 0x00,
+ 0x00, 0x07, 0x09, 0x07, 0x09, 0x0f, 0x00, 0x0f,
+ 0x88, 0x42, 0x07, 0xd0, 0x04, 0x9a, 0x02, 0xab,
+ 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, 0x28, 0x1c,
+ 0x0b, 0xf0, 0x76, 0xfb, 0x28, 0x7a, 0x30, 0x72,
+ 0x01, 0x20, 0x0f, 0x2c, 0x00, 0xd0, 0x00, 0x20,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x01, 0x20, 0xfb, 0xe7,
+ 0x70, 0x78, 0x01, 0x00, 0x0d, 0x4a, 0x70, 0xb5,
+ 0x11, 0x68, 0x00, 0x20, 0x3c, 0x00, 0x58, 0x11,
+ 0x00, 0x00, 0x00, 0x29, 0x0e, 0xd0, 0x11, 0x7a,
+ 0x09, 0x06, 0x0b, 0xd5, 0x53, 0x7a, 0x94, 0x7a,
+ 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40,
+ 0x1e, 0x1c, 0x16, 0x40, 0x03, 0xd0, 0x22, 0x40,
+ 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0xff, 0x31,
+ 0x09, 0x06, 0x09, 0x16, 0xf2, 0xd5, 0x70, 0xbd,
+ 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x10, 0xb5,
+ 0x08, 0x4c, 0x20, 0x68, 0x00, 0x28, 0x3c, 0x00,
+ 0x94, 0x11, 0x00, 0x00, 0x04, 0xd0, 0x60, 0x68,
+ 0x00, 0x28, 0x01, 0xd1, 0x0b, 0xf0, 0xc0, 0xfb,
+ 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x07, 0xc4,
+ 0x0c, 0x3c, 0x01, 0x20, 0x60, 0x60, 0x10, 0xbd,
+ 0x70, 0x78, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0x08, 0x60, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0e, 0x4d, 0x04, 0x1c, 0x00, 0x20,
+ 0x68, 0x72, 0x20, 0x1c, 0x12, 0xf0, 0xde, 0xfc,
+ 0x3c, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x28,
+ 0x12, 0xd0, 0x00, 0x20, 0x03, 0x21, 0x01, 0x22,
+ 0x0f, 0x1a, 0x16, 0x1c, 0x23, 0x7a, 0xbe, 0x40,
+ 0x33, 0x40, 0x04, 0xd0, 0x6b, 0x7a, 0x16, 0x1c,
+ 0x86, 0x40, 0x33, 0x43, 0x6b, 0x72, 0x01, 0x30,
+ 0x00, 0x06, 0x00, 0x0e, 0x03, 0x28, 0xef, 0xd9,
+ 0xf8, 0xbd, 0x70, 0x78, 0x01, 0x00, 0x92, 0x00,
+ 0x51, 0x18, 0x8a, 0x7a, 0x12, 0x07, 0x12, 0x0f,
+ 0x02, 0x70, 0x3c, 0x00, 0x0c, 0x12, 0x00, 0x00,
+ 0xca, 0x7a, 0x12, 0x07, 0x12, 0x0f, 0x42, 0x70,
+ 0xca, 0x7a, 0x12, 0x09, 0x82, 0x70, 0x09, 0x7b,
+ 0x81, 0x80, 0x70, 0x47, 0x03, 0x4a, 0x0f, 0x21,
+ 0x52, 0x7a, 0x01, 0x20, 0x91, 0x43, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00,
+ 0x40, 0x07, 0x05, 0x49, 0x40, 0x0f, 0x05, 0x4a,
+ 0x09, 0x56, 0x52, 0x7a, 0x01, 0x20, 0x0a, 0x40,
+ 0x00, 0xd1, 0x00, 0x20, 0x3c, 0x00, 0x48, 0x12,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x5e, 0x46,
+ 0x01, 0x00, 0x70, 0x78, 0x01, 0x00, 0x12, 0x4a,
+ 0x70, 0xb5, 0x53, 0x7a, 0x94, 0x7a, 0xff, 0x20,
+ 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40,
+ 0x1e, 0x1c, 0x16, 0x40, 0x14, 0xd0, 0x22, 0x40,
+ 0x12, 0xd1, 0x08, 0x06, 0x00, 0x0e, 0x07, 0xd0,
+ 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x07, 0xd0,
+ 0x03, 0x28, 0x07, 0xd1, 0x07, 0x20, 0x3c, 0x00,
+ 0x84, 0x12, 0x00, 0x00, 0x70, 0xbd, 0x03, 0x20,
+ 0x70, 0xbd, 0x01, 0x20, 0x70, 0xbd, 0x05, 0x20,
+ 0x70, 0xbd, 0xff, 0x20, 0x70, 0xbd, 0xff, 0x31,
+ 0x09, 0x06, 0x09, 0x16, 0xe1, 0xd5, 0x70, 0xbd,
+ 0x70, 0x78, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x13, 0x48, 0x0d, 0x1c, 0x81, 0x68, 0x00, 0x29,
+ 0x05, 0xd0, 0x01, 0x7b, 0x00, 0x29, 0x01, 0xd1,
+ 0x04, 0x73, 0x45, 0x73, 0xf8, 0xbd, 0x0f, 0x4e,
+ 0x3c, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x31, 0x1c,
+ 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, 0x1a, 0x70,
+ 0xc9, 0x79, 0x59, 0x70, 0x42, 0x68, 0x00, 0x2a,
+ 0x07, 0xd0, 0x20, 0x02, 0x28, 0x43, 0x01, 0x1c,
+ 0x00, 0x20, 0xff, 0xf7, 0x7e, 0xf8, 0x00, 0x28,
+ 0x04, 0xd1, 0x2a, 0x1c, 0x21, 0x1c, 0x00, 0x20,
+ 0x11, 0xf0, 0x0f, 0xf8, 0x00, 0xab, 0x18, 0x88,
+ 0xf0, 0x84, 0xe2, 0xe7, 0x00, 0x00, 0x88, 0x5a,
+ 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x12, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x81, 0x20, 0xff, 0xf7, 0xcd, 0xff, 0x80, 0xbd,
+ 0x01, 0x49, 0x01, 0x20, 0x88, 0x60, 0x70, 0x47,
+ 0x88, 0x5a, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0x88, 0x60, 0x08, 0x7b, 0x00, 0x28,
+ 0x02, 0xd0, 0x49, 0x7b, 0xff, 0xf7, 0xbc, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00,
+ 0x02, 0x4a, 0x01, 0x1c, 0x3c, 0x00, 0x38, 0x13,
+ 0x00, 0x00, 0x50, 0x68, 0x51, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x10, 0xb5,
+ 0x0c, 0x1c, 0x07, 0xf0, 0x64, 0xfa, 0x04, 0x61,
+ 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, 0xff, 0xb5,
+ 0x0e, 0x1c, 0x1f, 0x1c, 0x38, 0x20, 0x81, 0xb0,
+ 0x00, 0xf0, 0x3d, 0xfa, 0x1d, 0x49, 0x04, 0x1c,
+ 0x48, 0x69, 0x00, 0x28, 0x01, 0xd1, 0x4c, 0x61,
+ 0x00, 0xe0, 0x04, 0x60, 0x30, 0x01, 0x3c, 0x00,
+ 0x74, 0x13, 0x00, 0x00, 0x00, 0x90, 0x00, 0x04,
+ 0x00, 0x0c, 0x00, 0xf0, 0x15, 0xfa, 0x05, 0x1c,
+ 0x00, 0x99, 0xff, 0xf7, 0x8b, 0xf8, 0x00, 0x20,
+ 0x73, 0x1e, 0x04, 0xe0, 0x01, 0x01, 0x4a, 0x19,
+ 0x10, 0x32, 0x6a, 0x50, 0x01, 0x30, 0x98, 0x42,
+ 0xf8, 0xd3, 0x00, 0x01, 0x2d, 0x50, 0x38, 0x21,
+ 0x20, 0x1c, 0xff, 0xf7, 0x7b, 0xf8, 0xa5, 0x60,
+ 0x65, 0x60, 0xe6, 0x85, 0x0c, 0x20, 0x60, 0x86,
+ 0x3c, 0x00, 0xb0, 0x13, 0x00, 0x00, 0xaf, 0x20,
+ 0x80, 0x01, 0xe0, 0x61, 0x0e, 0x20, 0xe0, 0x86,
+ 0x00, 0x20, 0x20, 0x60, 0x01, 0x98, 0xe0, 0x60,
+ 0x38, 0x68, 0x60, 0x61, 0x03, 0x99, 0x04, 0x48,
+ 0x08, 0x60, 0x04, 0x48, 0x38, 0x60, 0x05, 0xb0,
+ 0x00, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xfc, 0x5a,
+ 0x01, 0x00, 0xdd, 0x15, 0x01, 0x00, 0xfd, 0x16,
+ 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xf0, 0x2a,
+ 0x80, 0xb5, 0x3c, 0x00, 0xec, 0x13, 0x00, 0x00,
+ 0x04, 0xd0, 0xf1, 0x2a, 0x07, 0xd1, 0x06, 0xf0,
+ 0x09, 0xfb, 0x80, 0xbd, 0x07, 0xf0, 0x0c, 0xfa,
+ 0x0d, 0xf0, 0xa8, 0xfa, 0x80, 0xbd, 0x01, 0x21,
+ 0x02, 0x20, 0xff, 0xf7, 0x4d, 0xff, 0x80, 0xbd,
+ 0x01, 0x49, 0x00, 0x20, 0x48, 0x61, 0x70, 0x47,
+ 0xfc, 0x5a, 0x01, 0x00, 0x00, 0x28, 0x02, 0xd0,
+ 0x00, 0x29, 0x00, 0xd0, 0xc1, 0x60, 0x70, 0x47,
+ 0xf8, 0xb5, 0x17, 0x1c, 0x3c, 0x00, 0x28, 0x14,
+ 0x00, 0x00, 0x0e, 0x1c, 0x05, 0x1c, 0x1c, 0x1c,
+ 0x1c, 0x30, 0x07, 0xf0, 0xc8, 0xf8, 0x01, 0x69,
+ 0x42, 0x69, 0x80, 0x68, 0x89, 0x19, 0x89, 0x1a,
+ 0x81, 0x42, 0x06, 0xd2, 0x23, 0x1c, 0x3a, 0x1c,
+ 0x31, 0x1c, 0x28, 0x1c, 0x00, 0xf0, 0x05, 0xf8,
+ 0xf8, 0xbd, 0x00, 0x20, 0x38, 0x60, 0x20, 0x60,
+ 0xfa, 0xe7, 0xff, 0xb5, 0x85, 0xb0, 0x05, 0x98,
+ 0x01, 0x27, 0x0e, 0x1c, 0x1c, 0x30, 0x3c, 0x00,
+ 0x64, 0x14, 0x00, 0x00, 0x07, 0xf0, 0xae, 0xf8,
+ 0x04, 0x1c, 0x80, 0x88, 0x04, 0x30, 0x03, 0x90,
+ 0x2c, 0x48, 0x04, 0x90, 0x80, 0x79, 0x02, 0x90,
+ 0xa0, 0x69, 0xb0, 0x42, 0x17, 0xd2, 0x35, 0x1a,
+ 0x11, 0xe0, 0x03, 0x98, 0xff, 0xf7, 0x16, 0xfc,
+ 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, 0x8e, 0x20,
+ 0xff, 0xf7, 0x08, 0xff, 0x00, 0x25, 0x00, 0x27,
+ 0x05, 0xe0, 0x21, 0x68, 0x01, 0x60, 0x20, 0x60,
+ 0x3c, 0x00, 0xa0, 0x14, 0x00, 0x00, 0xa0, 0x69,
+ 0x01, 0x30, 0xa0, 0x61, 0x01, 0x3d, 0xeb, 0xd2,
+ 0x00, 0x2f, 0x35, 0xd0, 0xa0, 0x69, 0x80, 0x1b,
+ 0xa0, 0x61, 0x20, 0x69, 0x80, 0x19, 0x20, 0x61,
+ 0x61, 0x69, 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42,
+ 0x03, 0xd9, 0x07, 0x21, 0x8e, 0x20, 0xff, 0xf7,
+ 0xec, 0xfe, 0x25, 0x68, 0x2f, 0x1c, 0x70, 0x1e,
+ 0x01, 0x95, 0x00, 0xe0, 0x3f, 0x68, 0x01, 0x38,
+ 0xfc, 0xd2, 0x3c, 0x00, 0xdc, 0x14, 0x00, 0x00,
+ 0x38, 0x68, 0x20, 0x60, 0x02, 0x98, 0x04, 0x99,
+ 0x88, 0x71, 0x2e, 0x68, 0x2c, 0x60, 0x32, 0x1d,
+ 0x00, 0x92, 0x29, 0x1c, 0x20, 0x31, 0x01, 0x22,
+ 0x28, 0x1d, 0x05, 0x9b, 0x08, 0xf0, 0x7a, 0xfc,
+ 0xbd, 0x42, 0x01, 0xd0, 0x35, 0x1c, 0xf0, 0xe7,
+ 0x00, 0x20, 0x38, 0x61, 0x01, 0x98, 0x07, 0x99,
+ 0x04, 0x30, 0x08, 0x60, 0x08, 0x98, 0x04, 0x37,
+ 0x07, 0x60, 0x09, 0xb0, 0x3c, 0x00, 0x18, 0x15,
+ 0x00, 0x00, 0xf0, 0xbd, 0x02, 0x98, 0x04, 0x99,
+ 0x88, 0x71, 0xf9, 0xe7, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x15, 0x1c,
+ 0x00, 0x20, 0x0c, 0x60, 0x09, 0xe0, 0xe2, 0x68,
+ 0x20, 0x1c, 0x00, 0x92, 0xa3, 0x8a, 0x21, 0x68,
+ 0xa2, 0x69, 0x08, 0xf0, 0x56, 0xfc, 0x20, 0x1c,
+ 0xe4, 0x68, 0x00, 0x2c, 0xf3, 0xd1, 0x28, 0x60,
+ 0x38, 0xbd, 0x80, 0xb5, 0x0c, 0xe0, 0x3c, 0x00,
+ 0x54, 0x15, 0x00, 0x00, 0xc2, 0x68, 0x8a, 0x42,
+ 0x08, 0xd1, 0x00, 0x21, 0xc1, 0x60, 0x00, 0x28,
+ 0x03, 0xd1, 0x06, 0x21, 0x8e, 0x20, 0xff, 0xf7,
+ 0x9d, 0xfe, 0x80, 0xbd, 0x10, 0x1c, 0x00, 0x28,
+ 0xf7, 0xd0, 0xef, 0xe7, 0x10, 0xb5, 0x04, 0x1c,
+ 0x0c, 0xd0, 0xa0, 0x69, 0x00, 0x28, 0x06, 0xd1,
+ 0x20, 0x69, 0x00, 0x28, 0x03, 0xd0, 0x06, 0xf0,
+ 0xf7, 0xfd, 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c,
+ 0x3c, 0x00, 0x90, 0x15, 0x00, 0x00, 0x06, 0xf0,
+ 0xf2, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x10, 0xb5,
+ 0x00, 0x28, 0x09, 0xd0, 0xc4, 0x68, 0x03, 0xe0,
+ 0xff, 0xf7, 0xe7, 0xff, 0x20, 0x1c, 0xf9, 0xe7,
+ 0x00, 0x2c, 0xf9, 0xd1, 0xff, 0xf7, 0xe1, 0xff,
+ 0x10, 0xbd, 0x01, 0x1c, 0x00, 0x20, 0x04, 0xe0,
+ 0x0a, 0x89, 0xc9, 0x68, 0x10, 0x18, 0x00, 0x04,
+ 0x00, 0x0c, 0x00, 0x29, 0xf8, 0xd1, 0x70, 0x47,
+ 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x15, 0x00, 0x00,
+ 0x00, 0xe0, 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29,
+ 0xfb, 0xd1, 0x70, 0x47, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x0c, 0x1c, 0x1c, 0x20, 0x00, 0xf0, 0x68, 0xfa,
+ 0x05, 0x1c, 0x00, 0x2e, 0x01, 0xd1, 0x00, 0x2c,
+ 0x02, 0xd1, 0x30, 0x1c, 0x01, 0x21, 0x03, 0xe0,
+ 0x20, 0x1c, 0x00, 0xf0, 0x5d, 0xfa, 0x00, 0x21,
+ 0x00, 0x22, 0x00, 0x92, 0x0a, 0x1c, 0x01, 0x1c,
+ 0x23, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x08, 0x16,
+ 0x00, 0x00, 0x08, 0xf0, 0xf2, 0xfb, 0x28, 0x1c,
+ 0xf8, 0xbd, 0xb0, 0xb5, 0x03, 0x32, 0x92, 0x08,
+ 0x92, 0x00, 0x14, 0x04, 0x24, 0x0c, 0x09, 0x19,
+ 0x1d, 0x1c, 0xc9, 0x18, 0x09, 0x04, 0x09, 0x0c,
+ 0xff, 0xf7, 0xd7, 0xff, 0x01, 0x89, 0x02, 0x68,
+ 0x12, 0x19, 0x09, 0x1b, 0x49, 0x1b, 0x02, 0x60,
+ 0x01, 0x81, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0xb5,
+ 0x0a, 0x4c, 0xa0, 0x21, 0x20, 0x1c, 0x3c, 0x00,
+ 0x44, 0x16, 0x00, 0x00, 0xfe, 0xf7, 0x2a, 0xff,
+ 0x00, 0x20, 0x26, 0x1c, 0xa0, 0x36, 0x07, 0x4d,
+ 0x07, 0xe0, 0x0c, 0x21, 0x41, 0x43, 0x49, 0x19,
+ 0x0e, 0xc9, 0x27, 0x1d, 0x0e, 0xc7, 0x20, 0x34,
+ 0x01, 0x30, 0xa6, 0x42, 0xf5, 0xd1, 0xf8, 0xbd,
+ 0xd0, 0x5c, 0x01, 0x00, 0xc8, 0x3f, 0x01, 0x00,
+ 0xf7, 0xb5, 0xc4, 0x68, 0x06, 0x1c, 0x00, 0x25,
+ 0x00, 0x2c, 0x82, 0xb0, 0x23, 0xd0, 0x20, 0x89,
+ 0x3c, 0x00, 0x80, 0x16, 0x00, 0x00, 0x90, 0x42,
+ 0x20, 0xd3, 0xe1, 0x68, 0x87, 0x1a, 0x01, 0x91,
+ 0x00, 0x21, 0xe1, 0x60, 0x03, 0x99, 0x00, 0x20,
+ 0xff, 0xf7, 0xa1, 0xff, 0x05, 0x1c, 0x20, 0x89,
+ 0xc0, 0x1b, 0x20, 0x81, 0x2a, 0x68, 0x03, 0x99,
+ 0x30, 0x1c, 0x00, 0xf0, 0x16, 0xf8, 0x20, 0x89,
+ 0xc0, 0x19, 0x20, 0x81, 0x01, 0x99, 0x20, 0x1c,
+ 0xff, 0xf7, 0xb1, 0xfe, 0x21, 0x1c, 0x28, 0x1c,
+ 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0x16, 0x00, 0x00,
+ 0xad, 0xfe, 0x29, 0x1c, 0x30, 0x1c, 0xff, 0xf7,
+ 0xa9, 0xfe, 0x01, 0x20, 0x00, 0x2d, 0x00, 0xd1,
+ 0x00, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xf7, 0xb5, 0x04, 0x1c, 0x0e, 0x1c, 0x00, 0x20,
+ 0x01, 0xe0, 0x20, 0x1c, 0x0c, 0x1c, 0xe1, 0x68,
+ 0x00, 0x29, 0xfa, 0xd1, 0x27, 0x89, 0xb7, 0x42,
+ 0x0a, 0xd3, 0xb8, 0x1b, 0x00, 0x04, 0x00, 0x0c,
+ 0x20, 0x81, 0x21, 0x68, 0x3c, 0x00, 0xf8, 0x16,
+ 0x00, 0x00, 0x09, 0x18, 0x02, 0x98, 0x32, 0x1c,
+ 0xfe, 0xf7, 0xfb, 0xfe, 0xfe, 0xbd, 0xf1, 0x1b,
+ 0x0d, 0x04, 0x2d, 0x0c, 0x00, 0x28, 0x19, 0xd0,
+ 0x01, 0x89, 0xa9, 0x42, 0x16, 0xd3, 0x49, 0x1b,
+ 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x00, 0x68,
+ 0x41, 0x18, 0x02, 0x98, 0x2a, 0x1c, 0xfe, 0xf7,
+ 0xe8, 0xfe, 0x21, 0x68, 0x02, 0x98, 0x72, 0x1b,
+ 0x40, 0x19, 0xfe, 0xf7, 0xe2, 0xfe, 0x3c, 0x00,
+ 0x34, 0x17, 0x00, 0x00, 0x20, 0x89, 0xc0, 0x1b,
+ 0x20, 0x81, 0x20, 0x68, 0xc0, 0x19, 0x20, 0x60,
+ 0xdf, 0xe7, 0x03, 0x21, 0x8e, 0x20, 0xff, 0xf7,
+ 0xad, 0xfd, 0xda, 0xe7, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x00, 0x26, 0x13, 0xe0, 0x21, 0x89, 0x00, 0x20,
+ 0xff, 0xf7, 0x3e, 0xff, 0x05, 0x1c, 0x22, 0x89,
+ 0x21, 0x68, 0x00, 0x68, 0xfe, 0xf7, 0xc8, 0xfe,
+ 0x00, 0x2e, 0x01, 0xd1, 0x2e, 0x1c, 0x03, 0xe0,
+ 0x3c, 0x00, 0x70, 0x17, 0x00, 0x00, 0x29, 0x1c,
+ 0x38, 0x1c, 0xff, 0xf7, 0x50, 0xfe, 0xe4, 0x68,
+ 0x2f, 0x1c, 0x00, 0x2c, 0xe9, 0xd1, 0x30, 0x1c,
+ 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x89,
+ 0x40, 0x1a, 0x05, 0x04, 0x20, 0x68, 0x2d, 0x0c,
+ 0x40, 0x18, 0x29, 0x1c, 0xff, 0xf7, 0x1f, 0xff,
+ 0x21, 0x89, 0x49, 0x1b, 0x21, 0x81, 0xe1, 0x68,
+ 0xc1, 0x60, 0xe0, 0x60, 0xb0, 0xbd, 0x10, 0xb5,
+ 0x03, 0x30, 0x3c, 0x00, 0xac, 0x17, 0x00, 0x00,
+ 0x09, 0x4a, 0x81, 0x08, 0x10, 0x68, 0x3d, 0x24,
+ 0x08, 0x4b, 0x64, 0x01, 0x89, 0x00, 0x09, 0x18,
+ 0x1b, 0x19, 0x99, 0x42, 0x01, 0xd8, 0x11, 0x60,
+ 0x10, 0xbd, 0x0f, 0x21, 0x80, 0x20, 0xff, 0xf7,
+ 0x6b, 0xfd, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0xb4, 0xcf, 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00,
+ 0x10, 0xb5, 0x11, 0xf0, 0x61, 0xff, 0x04, 0x1c,
+ 0x03, 0xd1, 0x0d, 0x21, 0x3c, 0x00, 0xe8, 0x17,
+ 0x00, 0x00, 0x80, 0x20, 0xff, 0xf7, 0x5b, 0xfd,
+ 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x01, 0x1f, 0x0b, 0x68, 0x0d, 0x48, 0x00, 0x22,
+ 0x83, 0x42, 0x04, 0xd0, 0x01, 0x32, 0x10, 0x30,
+ 0x03, 0x2a, 0xf9, 0xd3, 0x01, 0xe0, 0x03, 0x2a,
+ 0x06, 0xd3, 0x09, 0x24, 0x21, 0x1c, 0x80, 0x20,
+ 0xff, 0xf7, 0x45, 0xfd, 0x20, 0x1c, 0xb0, 0xbd,
+ 0x05, 0x4b, 0x00, 0x24, 0x9a, 0x79, 0x3c, 0x00,
+ 0x24, 0x18, 0x00, 0x00, 0x85, 0x68, 0x0d, 0x60,
+ 0x81, 0x60, 0x9a, 0x71, 0xf5, 0xe7, 0x00, 0x00,
+ 0x20, 0x57, 0x01, 0x00, 0x20, 0x10, 0x07, 0x00,
+ 0xb0, 0xb5, 0x00, 0x21, 0x10, 0x4a, 0x00, 0x23,
+ 0xd4, 0x68, 0x84, 0x42, 0x04, 0xd2, 0x01, 0x33,
+ 0x10, 0x32, 0x03, 0x2b, 0xf8, 0xd3, 0x01, 0xe0,
+ 0x03, 0x2b, 0x01, 0xd3, 0x04, 0x21, 0x0e, 0xe0,
+ 0x0a, 0x4c, 0xa3, 0x79, 0x90, 0x68, 0x00, 0x28,
+ 0x3c, 0x00, 0x60, 0x18, 0x00, 0x00, 0x02, 0xd1,
+ 0xa3, 0x71, 0x03, 0x21, 0x06, 0xe0, 0x05, 0x68,
+ 0x95, 0x60, 0xa3, 0x71, 0x00, 0x29, 0x01, 0xd1,
+ 0x04, 0xc0, 0xb0, 0xbd, 0x80, 0x20, 0xff, 0xf7,
+ 0x14, 0xfd, 0x00, 0x20, 0xb0, 0xbd, 0x20, 0x57,
+ 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xa0, 0x30,
+ 0x00, 0x8a, 0x40, 0x07, 0x40, 0x0f, 0x08, 0x28,
+ 0x0f, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x3c, 0x00, 0x9c, 0x18, 0x00, 0x00,
+ 0x05, 0x03, 0x03, 0x05, 0x07, 0x07, 0x09, 0x09,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x02, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47,
+ 0x04, 0x20, 0x70, 0x47, 0xb0, 0xb5, 0x10, 0x4d,
+ 0x68, 0x69, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x49,
+ 0x00, 0x22, 0x2c, 0x31, 0x03, 0xc9, 0x01, 0x43,
+ 0x03, 0x20, 0x06, 0xf0, 0xcf, 0xff, 0x0b, 0x4c,
+ 0x00, 0x22, 0x03, 0xcc, 0x3c, 0x00, 0xd8, 0x18,
+ 0x00, 0x00, 0x08, 0x3c, 0x01, 0x43, 0x03, 0x20,
+ 0x06, 0xf0, 0xaf, 0xff, 0x03, 0xcc, 0x08, 0x43,
+ 0x07, 0x49, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60,
+ 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x01, 0x20,
+ 0x68, 0x61, 0xb0, 0xbd, 0x00, 0x00, 0x64, 0x73,
+ 0x01, 0x00, 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x0f, 0xf0,
+ 0xa8, 0xfa, 0x05, 0x4d, 0xe8, 0x6a, 0x3c, 0x00,
+ 0x14, 0x19, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1,
+ 0x00, 0x2c, 0x04, 0xd0, 0x20, 0x1c, 0x0f, 0xf0,
+ 0xb7, 0xfd, 0x01, 0x20, 0x28, 0x70, 0xb0, 0xbd,
+ 0xf4, 0x6e, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5,
+ 0x88, 0x6a, 0x00, 0x28, 0x04, 0xda, 0x00, 0x20,
+ 0x88, 0x62, 0x01, 0x21, 0x0d, 0xf0, 0x42, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7e, 0x01, 0x00,
+ 0xf8, 0xb5, 0x1e, 0x4d, 0x04, 0x1c, 0x00, 0x20,
+ 0x3c, 0x00, 0x50, 0x19, 0x00, 0x00, 0x68, 0x62,
+ 0xa8, 0x70, 0x1c, 0x48, 0x00, 0x78, 0xc0, 0x07,
+ 0x22, 0xd5, 0xb8, 0x20, 0x03, 0x59, 0x1a, 0x48,
+ 0x00, 0x78, 0x0e, 0x28, 0x09, 0xd1, 0x0a, 0x1c,
+ 0x80, 0x32, 0x06, 0xd0, 0x18, 0x4e, 0x0d, 0x20,
+ 0x32, 0x5c, 0x8a, 0x42, 0x01, 0xdd, 0x01, 0x38,
+ 0xfa, 0xd1, 0x59, 0x1e, 0x0b, 0x06, 0x1b, 0x0e,
+ 0xab, 0x70, 0xab, 0x62, 0x0e, 0x28, 0x0b, 0xd2,
+ 0x08, 0xe0, 0x3c, 0x00, 0x8c, 0x19, 0x00, 0x00,
+ 0x62, 0x18, 0xb0, 0x32, 0x12, 0x7b, 0x82, 0x42,
+ 0x02, 0xd8, 0x58, 0x1a, 0xa8, 0x62, 0x02, 0xe0,
+ 0x01, 0x39, 0x00, 0x29, 0xf4, 0xda, 0x0e, 0xf0,
+ 0x35, 0xf9, 0x00, 0x90, 0x00, 0xab, 0x18, 0x78,
+ 0x59, 0x78, 0x81, 0x42, 0x00, 0xd9, 0x58, 0x78,
+ 0xed, 0x30, 0xe8, 0x70, 0x01, 0x21, 0x20, 0x1c,
+ 0x0d, 0xf0, 0x02, 0xfd, 0xf8, 0xbd, 0x00, 0x00,
+ 0xac, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x19,
+ 0x00, 0x00, 0x1d, 0x75, 0x01, 0x00, 0x11, 0x67,
+ 0x01, 0x00, 0xc7, 0x52, 0x01, 0x00, 0x0e, 0x49,
+ 0x10, 0xb5, 0x08, 0x69, 0x8b, 0x68, 0xc2, 0x00,
+ 0xd4, 0x18, 0x62, 0x68, 0x00, 0x2a, 0x0f, 0xd1,
+ 0x01, 0x30, 0x08, 0x61, 0x07, 0x28, 0x01, 0xd1,
+ 0x00, 0x20, 0x08, 0x61, 0x20, 0x1c, 0x00, 0xf0,
+ 0x24, 0xf8, 0x05, 0x48, 0x21, 0x68, 0x54, 0x30,
+ 0x02, 0x6a, 0xfe, 0xf7, 0xec, 0xfc, 0x3c, 0x00,
+ 0x04, 0x1a, 0x00, 0x00, 0x10, 0xbd, 0x06, 0x21,
+ 0x06, 0x20, 0xff, 0xf7, 0x4b, 0xfc, 0x10, 0xbd,
+ 0x50, 0x6d, 0x01, 0x00, 0x08, 0x49, 0x09, 0x79,
+ 0xc9, 0x07, 0x08, 0x4a, 0x08, 0xd4, 0x00, 0xe0,
+ 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, 0xfb, 0xd1,
+ 0x01, 0x89, 0x04, 0x31, 0x01, 0x81, 0x00, 0xe0,
+ 0x00, 0x20, 0xd0, 0x62, 0x70, 0x47, 0x00, 0x00,
+ 0x60, 0x80, 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00,
+ 0x3c, 0x00, 0x40, 0x1a, 0x00, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x19, 0x21, 0x89, 0x01, 0x00, 0x20,
+ 0xff, 0xf7, 0xc5, 0xfd, 0x01, 0x1c, 0x60, 0x60,
+ 0x20, 0x68, 0xff, 0xf7, 0xe0, 0xfc, 0x60, 0x68,
+ 0x21, 0x68, 0x08, 0x30, 0x08, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x0a, 0x28, 0x01, 0xda, 0x04, 0x20,
+ 0x04, 0xe0, 0x50, 0x28, 0x01, 0xda, 0x05, 0x20,
+ 0x00, 0xe0, 0x07, 0x20, 0x04, 0x4a, 0x11, 0x78,
+ 0x38, 0x23, 0x3c, 0x00, 0x7c, 0x1a, 0x00, 0x00,
+ 0xc0, 0x00, 0x18, 0x40, 0x99, 0x43, 0x08, 0x43,
+ 0x10, 0x70, 0x70, 0x47, 0x88, 0x00, 0x07, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x40, 0x68,
+ 0x08, 0xe0, 0x01, 0x69, 0xa9, 0x42, 0x04, 0xd1,
+ 0x44, 0x68, 0x05, 0xf0, 0xc7, 0xfd, 0x20, 0x1c,
+ 0x00, 0xe0, 0x40, 0x68, 0x00, 0x28, 0xf4, 0xd1,
+ 0xb0, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00,
+ 0xf8, 0xb5, 0x00, 0x25, 0x3c, 0x00, 0xb8, 0x1a,
+ 0x00, 0x00, 0x06, 0xf0, 0x84, 0xfd, 0x11, 0x4f,
+ 0x04, 0x1c, 0xbe, 0x79, 0x20, 0x68, 0x00, 0x28,
+ 0x07, 0xd1, 0xa0, 0x88, 0x04, 0x30, 0xff, 0xf7,
+ 0xf2, 0xf8, 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21,
+ 0x0f, 0xe0, 0x01, 0x68, 0x21, 0x60, 0xa1, 0x69,
+ 0x01, 0x39, 0xa1, 0x61, 0x10, 0xc0, 0x05, 0x1c,
+ 0x20, 0x69, 0x01, 0x30, 0x20, 0x61, 0x61, 0x69,
+ 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, 0x3c, 0x00,
+ 0xf4, 0x1a, 0x00, 0x00, 0x03, 0xd9, 0x07, 0x21,
+ 0x8e, 0x20, 0xff, 0xf7, 0xd3, 0xfb, 0xbe, 0x71,
+ 0x28, 0x1c, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00,
+ 0xb0, 0xb5, 0x09, 0xf0, 0xbb, 0xff, 0x2f, 0x4c,
+ 0x00, 0x28, 0x20, 0x74, 0x03, 0xd0, 0x01, 0x21,
+ 0x01, 0x20, 0x0a, 0xf0, 0x71, 0xfc, 0x2b, 0x4d,
+ 0x14, 0x35, 0x28, 0x68, 0x00, 0x28, 0x4d, 0xd0,
+ 0x01, 0x21, 0x0f, 0x20, 0x11, 0xf0, 0x82, 0xfd,
+ 0x3c, 0x00, 0x30, 0x1b, 0x00, 0x00, 0x28, 0x89,
+ 0x08, 0xf0, 0xfb, 0xff, 0x01, 0x1c, 0x01, 0x22,
+ 0x0f, 0x20, 0x11, 0xf0, 0x40, 0xfd, 0xe0, 0x78,
+ 0x01, 0x25, 0x02, 0x28, 0x36, 0xd1, 0x0a, 0xf0,
+ 0xc6, 0xf8, 0x00, 0x28, 0x0a, 0xd0, 0x0b, 0xf0,
+ 0x92, 0xfb, 0x1e, 0x49, 0x09, 0x68, 0x40, 0x18,
+ 0x11, 0xf0, 0x5f, 0xf8, 0x00, 0x28, 0x01, 0xd1,
+ 0x02, 0x20, 0x2f, 0xe0, 0xe0, 0x78, 0x02, 0x28,
+ 0x24, 0xd1, 0x3c, 0x00, 0x6c, 0x1b, 0x00, 0x00,
+ 0x60, 0x70, 0x25, 0x70, 0x60, 0x68, 0x01, 0x28,
+ 0x1c, 0xd0, 0x15, 0x48, 0x10, 0x38, 0x81, 0x7b,
+ 0x00, 0x29, 0x04, 0xd1, 0x85, 0x73, 0x0f, 0x20,
+ 0x13, 0x49, 0x10, 0xf0, 0x01, 0xfc, 0x08, 0xf0,
+ 0x4f, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x48,
+ 0x01, 0x21, 0x98, 0x38, 0x00, 0x69, 0x01, 0xf0,
+ 0xb7, 0xfd, 0x00, 0x28, 0x05, 0xd0, 0x01, 0x20,
+ 0x0e, 0xf0, 0x0c, 0xfd, 0x3c, 0x00, 0xa8, 0x1b,
+ 0x00, 0x00, 0x01, 0x20, 0x0e, 0xf0, 0x1d, 0xfc,
+ 0xb0, 0xbd, 0x05, 0xf0, 0xdc, 0xfe, 0xb0, 0xbd,
+ 0xe0, 0x78, 0x00, 0x28, 0x01, 0xd1, 0x25, 0x70,
+ 0xf7, 0xe7, 0x03, 0x20, 0x00, 0xe0, 0x04, 0x20,
+ 0x0d, 0xf0, 0x8d, 0xfa, 0xb0, 0xbd, 0x84, 0x66,
+ 0x01, 0x00, 0x6c, 0x57, 0x01, 0x00, 0xe9, 0x03,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x00, 0x21,
+ 0x00, 0x20, 0x0a, 0x4d, 0x00, 0xe0, 0x3c, 0x00,
+ 0xe4, 0x1b, 0x00, 0x00, 0x01, 0x31, 0xcb, 0x00,
+ 0x5a, 0x19, 0x16, 0x79, 0x01, 0x2e, 0x02, 0xd0,
+ 0x52, 0x79, 0xa2, 0x42, 0x02, 0xd0, 0x0b, 0x29,
+ 0xf4, 0xd3, 0x70, 0xbd, 0x0b, 0x29, 0xfc, 0xd2,
+ 0xc8, 0x00, 0x01, 0x21, 0x5a, 0x19, 0x28, 0x58,
+ 0x11, 0x71, 0x70, 0xbd, 0x38, 0x58, 0x01, 0x00,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23,
+ 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x6a,
+ 0x3c, 0x00, 0x20, 0x1c, 0x00, 0x00, 0xfe, 0xf7,
+ 0xda, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5,
+ 0x04, 0xf0, 0x37, 0xff, 0x00, 0x20, 0x11, 0xf0,
+ 0x84, 0xfc, 0x00, 0x20, 0x80, 0xbd, 0xb0, 0xb5,
+ 0x05, 0x4c, 0x05, 0x1c, 0x20, 0x6b, 0xe1, 0x6a,
+ 0x02, 0xf0, 0xe3, 0xfd, 0x29, 0x1c, 0xa0, 0x6a,
+ 0x02, 0xf0, 0x11, 0xfb, 0xb0, 0xbd, 0xa4, 0x6c,
+ 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x1c, 0x00, 0x00,
+ 0xb0, 0xb5, 0x03, 0x1c, 0x08, 0x1c, 0x14, 0x1c,
+ 0x00, 0x2b, 0x0c, 0x4d, 0x09, 0xd0, 0x69, 0x69,
+ 0x89, 0x00, 0x01, 0x31, 0x0a, 0x04, 0x12, 0x0c,
+ 0x22, 0x80, 0x29, 0x1c, 0xfe, 0xf7, 0x3e, 0xfc,
+ 0x0a, 0xe0, 0x01, 0x1c, 0x28, 0x1c, 0x22, 0x88,
+ 0xfe, 0xf7, 0x38, 0xfc, 0x20, 0x88, 0x01, 0x28,
+ 0x02, 0xd9, 0x80, 0x08, 0x01, 0x38, 0x68, 0x61,
+ 0x01, 0x20, 0xb0, 0xbd, 0x3c, 0x00, 0x98, 0x1c,
+ 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0xf1, 0xb5,
+ 0x00, 0x98, 0x00, 0x26, 0xc1, 0x68, 0x08, 0x68,
+ 0x09, 0x89, 0x1c, 0x29, 0x34, 0xd3, 0xc1, 0x88,
+ 0xff, 0x23, 0x01, 0x33, 0x99, 0x42, 0x2f, 0xd1,
+ 0x01, 0x88, 0xc9, 0x1a, 0x2c, 0xd1, 0x41, 0x88,
+ 0x08, 0x29, 0x29, 0xd1, 0x01, 0x79, 0x06, 0x29,
+ 0x26, 0xd1, 0x41, 0x79, 0x04, 0x29, 0x23, 0xd1,
+ 0x00, 0x25, 0x00, 0x24, 0x07, 0x1c, 0x3c, 0x00,
+ 0xd4, 0x1c, 0x00, 0x00, 0x18, 0x37, 0x0b, 0xe0,
+ 0xa0, 0x00, 0x41, 0x18, 0x04, 0x31, 0x04, 0x22,
+ 0x38, 0x1c, 0xfe, 0xf7, 0x8b, 0xfb, 0x00, 0x28,
+ 0x01, 0xd1, 0x01, 0x25, 0x04, 0xe0, 0x01, 0x34,
+ 0x0a, 0x49, 0x48, 0x69, 0xa0, 0x42, 0xef, 0xd8,
+ 0x08, 0x49, 0x08, 0x78, 0x00, 0x28, 0x0a, 0xd0,
+ 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, 0x06, 0xd1,
+ 0x00, 0x2d, 0x04, 0xd1, 0x00, 0x98, 0xc0, 0x68,
+ 0x3c, 0x00, 0x10, 0x1d, 0x00, 0x00, 0xff, 0xf7,
+ 0x42, 0xfc, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e,
+ 0x01, 0x00, 0x02, 0x49, 0x48, 0x60, 0x01, 0x20,
+ 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x01, 0x26,
+ 0x03, 0xf0, 0xef, 0xfa, 0x25, 0x1c, 0x10, 0x35,
+ 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x1d, 0x00, 0x00,
+ 0x04, 0xd0, 0x00, 0x20, 0x20, 0x77, 0x03, 0xf0,
+ 0xf1, 0xfb, 0x07, 0xe0, 0x03, 0xf0, 0x38, 0xfd,
+ 0x00, 0x28, 0x09, 0xd0, 0x01, 0x20, 0x20, 0x77,
+ 0x03, 0xf0, 0xce, 0xfc, 0x01, 0x1c, 0x06, 0x22,
+ 0x28, 0x1c, 0xfe, 0xf7, 0xc3, 0xfb, 0x02, 0xe0,
+ 0x02, 0x20, 0x20, 0x77, 0x00, 0x26, 0x30, 0x1c,
+ 0x70, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0x7a,
+ 0xc0, 0x07, 0x03, 0x49, 0x3c, 0x00, 0x88, 0x1d,
+ 0x00, 0x00, 0xc0, 0x0f, 0x88, 0x62, 0x70, 0x47,
+ 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, 0x88, 0x62,
+ 0x70, 0x47, 0xa4, 0x6c, 0x01, 0x00, 0x06, 0x48,
+ 0x80, 0x7a, 0xc1, 0x07, 0x06, 0x4a, 0xc9, 0x0f,
+ 0x91, 0x62, 0x20, 0x21, 0x80, 0x07, 0x00, 0xd4,
+ 0x00, 0x21, 0xa0, 0x32, 0x11, 0x70, 0x70, 0x47,
+ 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0x3c, 0x00,
+ 0xc4, 0x1d, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x07, 0x4a, 0x12, 0x68, 0x07, 0x4b, 0x9b, 0x69,
+ 0x1a, 0x40, 0x01, 0xd0, 0x01, 0x22, 0x00, 0xe0,
+ 0x00, 0x22, 0x0a, 0x60, 0x01, 0x21, 0x00, 0x2a,
+ 0x00, 0xd0, 0x00, 0x21, 0x01, 0x60, 0x70, 0x47,
+ 0x10, 0x00, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x01, 0x22, 0x02, 0x60, 0x0a, 0x60, 0x70, 0x47,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x1c, 0x58, 0x31,
+ 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x1c,
+ 0x06, 0x22, 0x28, 0x1d, 0xfe, 0xf7, 0x77, 0xfb,
+ 0x21, 0x1c, 0x5e, 0x31, 0x06, 0x22, 0x28, 0x1c,
+ 0x0a, 0x30, 0xfe, 0xf7, 0x70, 0xfb, 0x21, 0x1c,
+ 0x64, 0x31, 0x06, 0x22, 0x28, 0x1c, 0x10, 0x30,
+ 0xfe, 0xf7, 0x69, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5,
+ 0x00, 0x25, 0x1d, 0x72, 0x17, 0x1c, 0x0e, 0x1c,
+ 0xb2, 0x6d, 0x00, 0x21, 0x92, 0x19, 0x50, 0x32,
+ 0xd2, 0x7a, 0x3c, 0x00, 0x3c, 0x1e, 0x00, 0x00,
+ 0x1c, 0x1c, 0x5a, 0x72, 0x00, 0x78, 0x32, 0x1c,
+ 0x80, 0x32, 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30,
+ 0x01, 0x90, 0x08, 0x98, 0x02, 0x92, 0x00, 0x28,
+ 0x01, 0xd1, 0x30, 0x7f, 0x2b, 0xe0, 0x37, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x00, 0xdd, 0x01, 0x1c,
+ 0x01, 0x98, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x98,
+ 0x01, 0x28, 0x10, 0xd1, 0x02, 0x9a, 0x90, 0x6b,
+ 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0x78, 0x1e,
+ 0x00, 0x00, 0x88, 0x42, 0x01, 0xd9, 0x45, 0x1a,
+ 0x01, 0x3d, 0x70, 0x19, 0xb0, 0x30, 0x03, 0xe0,
+ 0xb5, 0x6d, 0x01, 0x3d, 0x70, 0x19, 0x50, 0x30,
+ 0x00, 0x7b, 0x0f, 0xe0, 0x02, 0x9a, 0x10, 0x6a,
+ 0x00, 0x28, 0x07, 0xd0, 0x88, 0x42, 0x01, 0xd9,
+ 0x45, 0x1a, 0x01, 0x3d, 0x70, 0x19, 0xa0, 0x30,
+ 0x00, 0x79, 0x03, 0xe0, 0xbd, 0x69, 0x01, 0x3d,
+ 0x78, 0x19, 0x00, 0x7f, 0xa0, 0x72, 0x3c, 0x00,
+ 0xb4, 0x1e, 0x00, 0x00, 0x0e, 0xf0, 0x0c, 0xf8,
+ 0x0e, 0x28, 0x11, 0xd1, 0xa0, 0x7a, 0x08, 0xf0,
+ 0x67, 0xff, 0x00, 0x28, 0x0c, 0xd0, 0x78, 0x68,
+ 0x00, 0x28, 0x05, 0xd1, 0x1b, 0x48, 0x00, 0x25,
+ 0x00, 0x78, 0x08, 0xf0, 0x4b, 0xff, 0x02, 0xe0,
+ 0x45, 0x1e, 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72,
+ 0x02, 0x9a, 0x50, 0x69, 0x00, 0x28, 0x17, 0xd0,
+ 0x08, 0x98, 0x01, 0x28, 0x14, 0xd0, 0xa0, 0x7a,
+ 0x3c, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0x08, 0xf0,
+ 0x4e, 0xff, 0x00, 0x28, 0x0f, 0xd0, 0x01, 0x98,
+ 0x00, 0x28, 0x07, 0xd0, 0x02, 0x20, 0x20, 0x72,
+ 0x70, 0x6c, 0x80, 0x19, 0x40, 0x30, 0xc0, 0x79,
+ 0x60, 0x72, 0x04, 0xe0, 0x7d, 0x68, 0x01, 0x3d,
+ 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, 0x02, 0x9a,
+ 0xa0, 0x7a, 0x91, 0x69, 0x08, 0xf0, 0x51, 0xff,
+ 0x20, 0x60, 0x02, 0x9a, 0x60, 0x7a, 0x91, 0x69,
+ 0x08, 0xf0, 0x3c, 0x00, 0x2c, 0x1f, 0x00, 0x00,
+ 0x4b, 0xff, 0x60, 0x60, 0xa0, 0x7a, 0xe0, 0x72,
+ 0x25, 0x73, 0xfe, 0xbd, 0xd4, 0x7e, 0x01, 0x00,
+ 0x90, 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x0e,
+ 0x00, 0x2a, 0x8c, 0xb5, 0x01, 0xd0, 0x8a, 0x22,
+ 0x00, 0xe0, 0x88, 0x22, 0x00, 0xab, 0x1a, 0x80,
+ 0x0c, 0xf0, 0xc2, 0xf8, 0x01, 0x90, 0x68, 0x46,
+ 0x0b, 0xf0, 0xbc, 0xfa, 0x8c, 0xbd, 0x00, 0x00,
+ 0x01, 0x1c, 0x08, 0x48, 0x3c, 0x00, 0x68, 0x1f,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28,
+ 0x09, 0xd0, 0x49, 0x68, 0x02, 0x20, 0x00, 0x29,
+ 0x00, 0xd1, 0x01, 0x20, 0x01, 0x06, 0x09, 0x0e,
+ 0x00, 0x20, 0x06, 0xf0, 0xd8, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0xb5,
+ 0x01, 0x90, 0x04, 0x1c, 0x44, 0x30, 0x01, 0xaa,
+ 0x69, 0x46, 0x11, 0xf0, 0xb8, 0xfd, 0x00, 0x28,
+ 0x0b, 0xd0, 0xa0, 0x69, 0x00, 0x21, 0x3c, 0x00,
+ 0xa4, 0x1f, 0x00, 0x00, 0xc2, 0x07, 0xd2, 0x0f,
+ 0x02, 0x20, 0xff, 0xf7, 0xc9, 0xff, 0x00, 0x21,
+ 0x20, 0x1c, 0x0f, 0xf0, 0xd9, 0xfe, 0x1c, 0xbd,
+ 0x04, 0x21, 0x98, 0x20, 0xff, 0xf7, 0x72, 0xf9,
+ 0xf9, 0xe7, 0x00, 0x00, 0x8c, 0xb5, 0x00, 0xab,
+ 0x84, 0x21, 0x19, 0x80, 0x05, 0x4b, 0x02, 0x1c,
+ 0x18, 0x1c, 0x99, 0x8a, 0x0c, 0xf0, 0x8e, 0xf8,
+ 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, 0x7c, 0xfa,
+ 0x3c, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x8c, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x06, 0x49, 0x80, 0xb5, 0xc9, 0x68,
+ 0x14, 0x23, 0x40, 0x31, 0x89, 0x7a, 0x04, 0x4a,
+ 0x59, 0x43, 0x89, 0x18, 0x80, 0x00, 0x08, 0x58,
+ 0xfe, 0xf7, 0xe9, 0xf9, 0x80, 0xbd, 0x70, 0x7c,
+ 0x01, 0x00, 0x54, 0x47, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x20, 0xff, 0xf7, 0xd6, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x20, 0x00, 0x00,
+ 0x80, 0xb5, 0x12, 0x48, 0x11, 0x49, 0x80, 0x8a,
+ 0x0a, 0x8b, 0x00, 0x21, 0x00, 0x28, 0xc2, 0xb0,
+ 0x0c, 0xd1, 0x01, 0x2a, 0x05, 0xd0, 0x02, 0x2a,
+ 0x15, 0xd0, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x22,
+ 0x07, 0xe0, 0x02, 0x22, 0x00, 0xab, 0x5a, 0x80,
+ 0x99, 0x80, 0x04, 0xe0, 0x00, 0xab, 0x5a, 0x80,
+ 0x0d, 0x22, 0x00, 0xab, 0x9a, 0x80, 0x00, 0xab,
+ 0x18, 0x80, 0xff, 0x20, 0x3c, 0x00, 0x58, 0x20,
+ 0x00, 0x00, 0x98, 0x71, 0xd9, 0x71, 0x68, 0x46,
+ 0x00, 0xf0, 0xd1, 0xf9, 0x42, 0xb0, 0x80, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x09, 0xf0, 0x5f, 0xfc, 0x00, 0x20, 0x05, 0xf0,
+ 0x2a, 0xf9, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0,
+ 0x36, 0xf9, 0x20, 0x1c, 0x0f, 0xf0, 0xb3, 0xfe,
+ 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x1c, 0xb5,
+ 0x09, 0xf0, 0x4f, 0xfc, 0x07, 0x20, 0x3c, 0x00,
+ 0x94, 0x20, 0x00, 0x00, 0x00, 0xab, 0x07, 0x4c,
+ 0x18, 0x80, 0xe1, 0x8a, 0x20, 0x1c, 0x0c, 0xf0,
+ 0x0b, 0xf8, 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0,
+ 0x17, 0xfa, 0x20, 0x1c, 0x0f, 0xf0, 0x9e, 0xfe,
+ 0x1c, 0xbd, 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, 0xff, 0xf7,
+ 0xf1, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0x15, 0x4c,
+ 0xc2, 0xb0, 0xa0, 0x8a, 0x00, 0x28, 0x03, 0xd0,
+ 0x3c, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x01, 0x28,
+ 0x1e, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x01, 0x20,
+ 0xe1, 0x68, 0x40, 0x31, 0x88, 0x72, 0x20, 0x69,
+ 0x08, 0xf0, 0x23, 0xfd, 0x02, 0x1c, 0x0c, 0x48,
+ 0x18, 0x38, 0x80, 0x88, 0xe1, 0x68, 0x0f, 0xf0,
+ 0xa4, 0xfe, 0xa0, 0x8a, 0x00, 0xab, 0x18, 0x80,
+ 0x01, 0x20, 0x58, 0x80, 0x00, 0x20, 0x98, 0x80,
+ 0xff, 0x21, 0x99, 0x71, 0xd8, 0x71, 0x68, 0x46,
+ 0x00, 0xf0, 0x3c, 0x00, 0x0c, 0x21, 0x00, 0x00,
+ 0x7b, 0xf9, 0x42, 0xb0, 0x10, 0xbd, 0x03, 0x21,
+ 0x98, 0x20, 0xff, 0xf7, 0xc5, 0xf8, 0xf8, 0xe7,
+ 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0x03, 0x48, 0x0f, 0xf0, 0x60, 0xfe,
+ 0x00, 0x20, 0x05, 0xf0, 0xcd, 0xf8, 0x80, 0xbd,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x48,
+ 0x0f, 0xf0, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0x70, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x48, 0x21,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20,
+ 0xff, 0xf7, 0xa9, 0xf8, 0x80, 0xbd, 0x80, 0xb5,
+ 0x03, 0x20, 0xff, 0xf7, 0x34, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0xf0, 0xb5, 0x21, 0x4e, 0x00, 0x27,
+ 0xb1, 0x8a, 0x30, 0x1c, 0x00, 0x25, 0x04, 0x24,
+ 0x00, 0x29, 0x00, 0x8b, 0xc3, 0xb0, 0x1e, 0xd1,
+ 0x01, 0x28, 0x07, 0xd0, 0x31, 0x1c, 0x49, 0x8b,
+ 0x02, 0x28, 0x12, 0xd1, 0x00, 0x29, 0x3c, 0x00,
+ 0x84, 0x21, 0x00, 0x00, 0x07, 0xd1, 0x00, 0x24,
+ 0x05, 0xe0, 0x00, 0x24, 0x01, 0x25, 0x02, 0x20,
+ 0x00, 0xab, 0xd8, 0x80, 0x1f, 0x81, 0x0f, 0xf0,
+ 0x7f, 0xff, 0x00, 0x2c, 0x10, 0xd1, 0xf1, 0x68,
+ 0x05, 0x20, 0x40, 0x31, 0x88, 0x72, 0x0e, 0xe0,
+ 0x00, 0x29, 0x1a, 0xd1, 0x00, 0xab, 0xd8, 0x80,
+ 0x0e, 0x20, 0x02, 0xe0, 0x00, 0xab, 0xd8, 0x80,
+ 0x0d, 0x20, 0x00, 0xab, 0x18, 0x81, 0x07, 0xe0,
+ 0x3c, 0x00, 0xc0, 0x21, 0x00, 0x00, 0x30, 0x1c,
+ 0x0f, 0xf0, 0x13, 0xfe, 0x20, 0x1c, 0xff, 0xf7,
+ 0xfc, 0xfe, 0x00, 0x2d, 0x08, 0xd0, 0xb0, 0x8a,
+ 0x00, 0xab, 0x98, 0x80, 0xff, 0x20, 0x98, 0x72,
+ 0xdf, 0x72, 0x01, 0xa8, 0x00, 0xf0, 0x11, 0xf9,
+ 0x43, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0,
+ 0x6c, 0xf8, 0x04, 0x4c, 0xe0, 0x8a, 0x05, 0xf0,
+ 0x78, 0xf8, 0x3c, 0x00, 0xfc, 0x21, 0x00, 0x00,
+ 0x0f, 0xf0, 0x4c, 0xff, 0x20, 0x1c, 0x0f, 0xf0,
+ 0xf3, 0xfd, 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, 0xd8, 0xfe,
+ 0x01, 0x48, 0x0f, 0xf0, 0xe9, 0xfd, 0x80, 0xbd,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x20,
+ 0xff, 0xf7, 0xce, 0xfe, 0x01, 0x20, 0x05, 0xf0,
+ 0x5f, 0xf8, 0x02, 0x48, 0x0f, 0xf0, 0xdc, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x22,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5,
+ 0x03, 0x20, 0xff, 0xf7, 0xc0, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x1d, 0x4d, 0xc2, 0xb0,
+ 0x28, 0x8b, 0x00, 0xab, 0xff, 0x21, 0x58, 0x80,
+ 0x99, 0x71, 0x00, 0x21, 0xd9, 0x71, 0xaa, 0x8a,
+ 0x00, 0x24, 0x01, 0x2a, 0x18, 0xd1, 0x2a, 0x1c,
+ 0x52, 0x8b, 0x02, 0x28, 0x0f, 0xd1, 0x00, 0x2a,
+ 0x16, 0xd1, 0x03, 0x20, 0x58, 0x80, 0x3c, 0x00,
+ 0x74, 0x22, 0x00, 0x00, 0x99, 0x80, 0x2c, 0x1c,
+ 0xff, 0x22, 0x98, 0x1d, 0xe9, 0x69, 0xfe, 0xf7,
+ 0x3b, 0xf9, 0xe1, 0x68, 0x04, 0x20, 0x40, 0x31,
+ 0x88, 0x72, 0x10, 0xe0, 0x00, 0x2a, 0x06, 0xd1,
+ 0x01, 0x24, 0x0e, 0x20, 0x01, 0xe0, 0x01, 0x24,
+ 0x0d, 0x20, 0x00, 0xab, 0x98, 0x80, 0x28, 0x1c,
+ 0x0f, 0xf0, 0xa4, 0xfd, 0x04, 0x20, 0xff, 0xf7,
+ 0x8d, 0xfe, 0x00, 0x2c, 0x05, 0xd0, 0xa8, 0x8a,
+ 0x3c, 0x00, 0xb0, 0x22, 0x00, 0x00, 0x00, 0xab,
+ 0x18, 0x80, 0x68, 0x46, 0x00, 0xf0, 0xa5, 0xf8,
+ 0x42, 0xb0, 0xb0, 0xbd, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0,
+ 0x00, 0xf8, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0,
+ 0x0c, 0xf8, 0x20, 0x1c, 0x0f, 0xf0, 0x89, 0xfd,
+ 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5,
+ 0x04, 0x20, 0xff, 0xf7, 0x6e, 0xfe, 0x01, 0x48,
+ 0x0f, 0xf0, 0x3c, 0x00, 0xec, 0x22, 0x00, 0x00,
+ 0x7f, 0xfd, 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x20, 0xff, 0xf7, 0x64, 0xfe,
+ 0x01, 0x20, 0x04, 0xf0, 0xf5, 0xff, 0x02, 0x48,
+ 0x0f, 0xf0, 0x72, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x20,
+ 0xff, 0xf7, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x19, 0x4d, 0x04, 0x24, 0xa9, 0x8a,
+ 0x28, 0x1c, 0x02, 0x8b, 0x3c, 0x00, 0x28, 0x23,
+ 0x00, 0x00, 0xc2, 0xb0, 0x01, 0x29, 0x14, 0xd1,
+ 0x40, 0x8b, 0x04, 0x2a, 0x0b, 0xd1, 0x00, 0x28,
+ 0x00, 0xd1, 0x00, 0x24, 0x0f, 0xf0, 0xad, 0xfe,
+ 0x00, 0x2c, 0x19, 0xd1, 0xe9, 0x68, 0x05, 0x20,
+ 0x40, 0x31, 0x88, 0x72, 0x17, 0xe0, 0x00, 0x28,
+ 0x10, 0xd1, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x20,
+ 0x02, 0xe0, 0x00, 0xab, 0x5a, 0x80, 0x0d, 0x20,
+ 0x00, 0xab, 0x98, 0x80, 0x19, 0x80, 0x3c, 0x00,
+ 0x64, 0x23, 0x00, 0x00, 0xff, 0x20, 0x98, 0x71,
+ 0x00, 0x20, 0xd8, 0x71, 0x68, 0x46, 0x00, 0xf0,
+ 0x49, 0xf8, 0x42, 0xb0, 0xb0, 0xbd, 0x28, 0x1c,
+ 0x0f, 0xf0, 0x38, 0xfd, 0x20, 0x1c, 0xff, 0xf7,
+ 0x21, 0xfe, 0xf6, 0xe7, 0x70, 0x7c, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x20, 0x04, 0xf0, 0x9e, 0xff,
+ 0x03, 0x4c, 0xe0, 0x8a, 0x04, 0xf0, 0xaa, 0xff,
+ 0x20, 0x1c, 0x0f, 0xf0, 0x27, 0xfd, 0x10, 0xbd,
+ 0x3c, 0x00, 0xa0, 0x23, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7,
+ 0x0c, 0xfe, 0x01, 0x48, 0x0f, 0xf0, 0x1d, 0xfd,
+ 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x20, 0xff, 0xf7, 0x02, 0xfe, 0x01, 0x20,
+ 0x04, 0xf0, 0x93, 0xff, 0x02, 0x48, 0x0f, 0xf0,
+ 0x10, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x01, 0x1c,
+ 0x44, 0x31, 0x3c, 0x00, 0xdc, 0x23, 0x00, 0x00,
+ 0x04, 0x1c, 0x06, 0x22, 0x28, 0x1c, 0xfe, 0xf7,
+ 0x89, 0xf8, 0xec, 0x60, 0x20, 0x69, 0x03, 0xf0,
+ 0x97, 0xf8, 0x01, 0x1c, 0x06, 0x22, 0xa8, 0x18,
+ 0xfe, 0xf7, 0x80, 0xf8, 0x04, 0x20, 0xff, 0xf7,
+ 0xf7, 0xfd, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x90, 0xb5, 0x04, 0x1c, 0x80, 0x88, 0x93, 0xb0,
+ 0x00, 0x28, 0x06, 0xd0, 0x15, 0x49, 0x06, 0x22,
+ 0x48, 0x80, 0x18, 0x31, 0x3c, 0x00, 0x18, 0x24,
+ 0x00, 0x00, 0x88, 0x1f, 0xfe, 0xf7, 0x6d, 0xf8,
+ 0x68, 0x46, 0x0c, 0xf0, 0x14, 0xf8, 0x20, 0x88,
+ 0x01, 0x28, 0x08, 0xd1, 0x60, 0x88, 0x03, 0x28,
+ 0x05, 0xd1, 0xa0, 0x88, 0x00, 0x28, 0x02, 0xd1,
+ 0x06, 0x20, 0x0c, 0xa9, 0x08, 0x70, 0xa0, 0x79,
+ 0x06, 0x21, 0xff, 0x28, 0x04, 0xd0, 0xe0, 0x79,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x1c, 0x08, 0x31,
+ 0x0b, 0x20, 0x08, 0xaa, 0x50, 0x72, 0x3c, 0x00,
+ 0x54, 0x24, 0x00, 0x00, 0x20, 0x1c, 0x08, 0xf0,
+ 0x3b, 0xff, 0x03, 0x90, 0x68, 0x46, 0x0b, 0xf0,
+ 0x31, 0xf8, 0x13, 0xb0, 0x90, 0xbd, 0x00, 0x00,
+ 0x58, 0x7c, 0x01, 0x00, 0x07, 0x4b, 0x1a, 0x78,
+ 0x82, 0x42, 0x01, 0xd0, 0x00, 0x29, 0x07, 0xd0,
+ 0xff, 0x20, 0x18, 0x70, 0x04, 0x48, 0x01, 0x88,
+ 0x01, 0x22, 0x52, 0x03, 0x91, 0x43, 0x01, 0x80,
+ 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00,
+ 0x3c, 0x00, 0x90, 0x24, 0x00, 0x00, 0x32, 0x80,
+ 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x23,
+ 0x07, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x79,
+ 0x0a, 0xf0, 0x4f, 0xf9, 0x01, 0x20, 0x03, 0x49,
+ 0xa0, 0x40, 0x08, 0x39, 0x0a, 0x78, 0x10, 0x43,
+ 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x74, 0x7a,
+ 0x01, 0x00, 0x03, 0x4a, 0x00, 0x21, 0x11, 0x54,
+ 0x80, 0x00, 0x30, 0x32, 0x10, 0x58, 0x01, 0x70,
+ 0x70, 0x47, 0x3c, 0x00, 0xcc, 0x24, 0x00, 0x00,
+ 0xe0, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xfe, 0xf7, 0x12, 0xff,
+ 0x20, 0x1c, 0xff, 0xf7, 0xed, 0xff, 0x00, 0x21,
+ 0x20, 0x1c, 0x0e, 0xf0, 0x89, 0xfb, 0x10, 0xbd,
+ 0x05, 0x49, 0x80, 0xb5, 0x88, 0x60, 0x08, 0x7f,
+ 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x08, 0x58,
+ 0xfd, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00,
+ 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x25,
+ 0x00, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x21, 0x91, 0x20, 0xfe, 0xf7, 0xc7, 0xfe,
+ 0x80, 0xbd, 0x02, 0x4a, 0x11, 0x68, 0x81, 0x43,
+ 0x11, 0x60, 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e,
+ 0x01, 0x00, 0x80, 0xb5, 0xfe, 0xf7, 0xe9, 0xfe,
+ 0x80, 0xbd, 0x80, 0xb5, 0xfe, 0xf7, 0xe5, 0xfe,
+ 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0x31, 0xfa,
+ 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x3c, 0x00,
+ 0x44, 0x25, 0x00, 0x00, 0x04, 0x20, 0x88, 0x60,
+ 0x00, 0xf0, 0xd0, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x99, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0,
+ 0x99, 0xfb, 0x80, 0xbd, 0x38, 0xb5, 0x20, 0x28,
+ 0x15, 0xd2, 0x0d, 0x4c, 0x22, 0x1c, 0x20, 0x32,
+ 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79,
+ 0x5a, 0x70, 0x0a, 0x4b, 0x82, 0x00, 0x99, 0x50,
+ 0x3c, 0x00, 0x80, 0x25, 0x00, 0x00, 0x01, 0x21,
+ 0x81, 0x40, 0x08, 0x48, 0x01, 0x60, 0x42, 0x68,
+ 0x11, 0x43, 0x41, 0x60, 0x00, 0xab, 0x18, 0x88,
+ 0xe0, 0x84, 0x38, 0xbd, 0x01, 0x21, 0xff, 0x20,
+ 0xfe, 0xf7, 0x83, 0xfe, 0xf9, 0xe7, 0x00, 0x10,
+ 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0x20, 0x28, 0x09, 0xd2, 0x05, 0x49,
+ 0x06, 0x4b, 0x82, 0x00, 0x99, 0x50, 0x05, 0x4a,
+ 0x51, 0x68, 0x3c, 0x00, 0xbc, 0x25, 0x00, 0x00,
+ 0x01, 0x23, 0x83, 0x40, 0x99, 0x43, 0x51, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0xa9, 0x75, 0x00, 0x00,
+ 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00,
+ 0x02, 0x4a, 0x11, 0x68, 0x08, 0x43, 0x10, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, 0x01, 0x00,
+ 0x0b, 0x48, 0x01, 0x68, 0x03, 0x22, 0x12, 0x04,
+ 0x11, 0x43, 0x01, 0x60, 0x01, 0x68, 0x07, 0x22,
+ 0x12, 0x06, 0x91, 0x43, 0x3c, 0x00, 0xf8, 0x25,
+ 0x00, 0x00, 0x01, 0x22, 0x52, 0x06, 0x89, 0x18,
+ 0x01, 0x60, 0x01, 0x68, 0x12, 0x0c, 0x11, 0x43,
+ 0x01, 0x60, 0x01, 0x68, 0x52, 0x08, 0x11, 0x43,
+ 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, 0x80, 0x00,
+ 0x07, 0x00, 0xfe, 0xb5, 0x1c, 0x4e, 0x05, 0x1c,
+ 0xb0, 0x8a, 0xf2, 0x68, 0x12, 0xd0, 0x01, 0x24,
+ 0x00, 0x29, 0x09, 0xd1, 0x11, 0x6d, 0x02, 0xaa,
+ 0x01, 0xab, 0xfe, 0xf7, 0xf8, 0xfe, 0x3c, 0x00,
+ 0x34, 0x26, 0x00, 0x00, 0x02, 0x98, 0x00, 0x28,
+ 0x01, 0xd0, 0x00, 0x24, 0x0b, 0xe0, 0x01, 0xaa,
+ 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x70, 0xff,
+ 0x05, 0xe0, 0x11, 0x6d, 0x02, 0xaa, 0x00, 0x24,
+ 0x01, 0xab, 0xfe, 0xf7, 0x01, 0xff, 0x0e, 0x49,
+ 0x08, 0x1c, 0x20, 0x30, 0x82, 0x79, 0x00, 0xab,
+ 0x1a, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x30, 0x68,
+ 0x00, 0x28, 0x02, 0xd1, 0x02, 0x98, 0x30, 0x60,
+ 0x3c, 0x00, 0x70, 0x26, 0x00, 0x00, 0x02, 0xe0,
+ 0x02, 0x98, 0x72, 0x68, 0xd0, 0x60, 0x01, 0x98,
+ 0x00, 0xab, 0x70, 0x60, 0x18, 0x88, 0xc8, 0x84,
+ 0xf0, 0x68, 0xc0, 0x6c, 0xf0, 0x60, 0x20, 0x1c,
+ 0xfe, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x54, 0x27,
+ 0x1d, 0x4e, 0x00, 0x20, 0x30, 0x60, 0x70, 0x60,
+ 0x67, 0x43, 0x38, 0x04, 0x15, 0x1c, 0x00, 0x0c,
+ 0xb1, 0x82, 0x3c, 0x00, 0xac, 0x26, 0x00, 0x00,
+ 0xff, 0xf7, 0x96, 0xf8, 0x08, 0x21, 0x30, 0x61,
+ 0x00, 0x26, 0x17, 0x4a, 0x14, 0xe0, 0x03, 0x1c,
+ 0x24, 0x33, 0x42, 0x61, 0x03, 0x61, 0xc6, 0x61,
+ 0x01, 0x83, 0x08, 0x33, 0x03, 0x60, 0xb1, 0x23,
+ 0x43, 0x60, 0x03, 0x1c, 0x64, 0x33, 0xc3, 0x60,
+ 0x0c, 0x23, 0x03, 0x81, 0x03, 0x1c, 0x54, 0x33,
+ 0x4c, 0x30, 0x28, 0xc0, 0x01, 0x3c, 0x18, 0x1c,
+ 0x00, 0x2c, 0xe8, 0xd1, 0x3c, 0x00, 0xe8, 0x26,
+ 0x00, 0x00, 0x09, 0x4e, 0x07, 0x22, 0x30, 0x69,
+ 0xd2, 0x43, 0xc1, 0x19, 0x50, 0x50, 0x02, 0x1c,
+ 0x10, 0x32, 0x80, 0x39, 0x8a, 0x63, 0xf0, 0x60,
+ 0xb0, 0x60, 0x00, 0x21, 0x00, 0x20, 0xff, 0xf7,
+ 0x88, 0xff, 0x30, 0x69, 0xf0, 0x60, 0xb0, 0x60,
+ 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x91, 0x00,
+ 0x05, 0x00, 0x01, 0x48, 0x40, 0x6a, 0x70, 0x47,
+ 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x3c, 0x00,
+ 0x24, 0x27, 0x00, 0x00, 0x01, 0x48, 0x00, 0x88,
+ 0x70, 0x47, 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00,
+ 0x06, 0x49, 0x80, 0xb5, 0x08, 0x88, 0x01, 0x30,
+ 0x08, 0x80, 0x05, 0x49, 0x08, 0x20, 0x08, 0x60,
+ 0x04, 0x49, 0x88, 0x69, 0x88, 0x61, 0x00, 0xf0,
+ 0x21, 0xf8, 0x80, 0xbd, 0xfc, 0x6b, 0x01, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x03, 0x4a, 0x01, 0x20, 0x12, 0x1d, 0x06, 0xca,
+ 0x3c, 0x00, 0x60, 0x27, 0x00, 0x00, 0x91, 0x42,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0xe8, 0x7d,
+ 0x01, 0x00, 0x06, 0x48, 0x00, 0xb5, 0xc0, 0x7c,
+ 0x00, 0x28, 0x03, 0xd1, 0xff, 0xf7, 0xef, 0xff,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x00, 0xbd,
+ 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, 0xa0, 0x80,
+ 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x80, 0x07,
+ 0x02, 0xd5, 0x06, 0xf0, 0x3e, 0xfd, 0x03, 0xe0,
+ 0xe0, 0x07, 0x3c, 0x00, 0x9c, 0x27, 0x00, 0x00,
+ 0x01, 0xd5, 0x06, 0xf0, 0xe3, 0xfd, 0x60, 0x07,
+ 0x01, 0xd5, 0xfe, 0xf7, 0xab, 0xfd, 0x10, 0xbd,
+ 0x02, 0x4a, 0x01, 0x1c, 0x10, 0x68, 0x11, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00,
+ 0x38, 0xb5, 0x20, 0x4d, 0x2c, 0x1c, 0x20, 0x34,
+ 0xa0, 0x79, 0x00, 0xab, 0x18, 0x70, 0xe0, 0x79,
+ 0x58, 0x70, 0xfe, 0xf7, 0x27, 0xfa, 0x00, 0xab,
+ 0x18, 0x88, 0xe8, 0x84, 0x3c, 0x00, 0xd8, 0x27,
+ 0x00, 0x00, 0x1a, 0x48, 0x81, 0x78, 0x08, 0x22,
+ 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43,
+ 0x81, 0x70, 0x17, 0x48, 0x41, 0x68, 0x80, 0x22,
+ 0x91, 0x43, 0x41, 0x60, 0x01, 0x68, 0x11, 0x43,
+ 0x01, 0x60, 0x00, 0x20, 0x01, 0x30, 0x64, 0x28,
+ 0xfc, 0xd3, 0xa0, 0x79, 0x0f, 0x4d, 0x00, 0xab,
+ 0x18, 0x70, 0xe0, 0x79, 0x10, 0x4c, 0x58, 0x70,
+ 0x20, 0x1c, 0x10, 0x30, 0x00, 0xf0, 0x3c, 0x00,
+ 0x14, 0x28, 0x00, 0x00, 0xdf, 0xfb, 0x00, 0x20,
+ 0xc0, 0x43, 0xa0, 0x61, 0xff, 0xf7, 0x9c, 0xff,
+ 0x00, 0x28, 0x09, 0xd0, 0x0a, 0x49, 0x08, 0x69,
+ 0x01, 0x30, 0x08, 0x61, 0x00, 0x20, 0x3c, 0x31,
+ 0x89, 0x68, 0x48, 0x63, 0x06, 0xf0, 0xee, 0xfc,
+ 0x00, 0xab, 0x18, 0x88, 0xe8, 0x84, 0x38, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0xf4, 0x00, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x3c, 0x00, 0x50, 0x28, 0x00, 0x00, 0xe8, 0x7d,
+ 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, 0x00, 0x6a,
+ 0x00, 0x28, 0x01, 0xd0, 0xfe, 0xf7, 0xc1, 0xf9,
+ 0x07, 0x48, 0x07, 0x49, 0x3c, 0x30, 0x80, 0x68,
+ 0x10, 0x30, 0x48, 0x61, 0x01, 0x20, 0x08, 0x61,
+ 0x05, 0x49, 0x08, 0x68, 0x80, 0x22, 0x90, 0x43,
+ 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xe8, 0x7d,
+ 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xf4, 0x00,
+ 0x07, 0x00, 0x3c, 0x00, 0x8c, 0x28, 0x00, 0x00,
+ 0x80, 0xb5, 0x0c, 0xf0, 0xcb, 0xfe, 0x06, 0xf0,
+ 0xbf, 0xfc, 0x80, 0xbd, 0x01, 0x49, 0xc8, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00,
+ 0x02, 0x4a, 0x91, 0x6a, 0x08, 0x43, 0x90, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00,
+ 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x00, 0x21, 0x02, 0x79, 0x03, 0x68, 0x1a, 0x70,
+ 0x01, 0x31, 0x08, 0x30, 0x3c, 0x00, 0xc8, 0x28,
+ 0x00, 0x00, 0x03, 0x29, 0xf8, 0xd3, 0x70, 0x47,
+ 0x00, 0x00, 0x28, 0x52, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48,
+ 0x81, 0x62, 0x70, 0x47, 0x00, 0x00, 0x85, 0x75,
+ 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0xf8, 0xb5,
+ 0xff, 0xf7, 0x33, 0xff, 0x28, 0x4f, 0x00, 0x28,
+ 0x04, 0xd0, 0xff, 0xf7, 0xc8, 0xff, 0x38, 0x6a,
+ 0x01, 0x30, 0x38, 0x62, 0xf8, 0x6a, 0x3c, 0x00,
+ 0x04, 0x29, 0x00, 0x00, 0x00, 0x28, 0x02, 0xd0,
+ 0x01, 0x89, 0x04, 0x39, 0x01, 0x81, 0x38, 0x6b,
+ 0x00, 0x25, 0x00, 0x28, 0x08, 0xd0, 0x0b, 0x20,
+ 0x3d, 0x63, 0x10, 0xf0, 0xe5, 0xfa, 0x1e, 0x49,
+ 0x08, 0x68, 0x21, 0x22, 0x90, 0x43, 0x08, 0x60,
+ 0x38, 0x78, 0x3c, 0x21, 0x1b, 0x4a, 0x41, 0x43,
+ 0x8c, 0x18, 0xff, 0x22, 0x79, 0x6a, 0x3a, 0x70,
+ 0x00, 0x29, 0x0c, 0xd0, 0xb9, 0x69, 0x01, 0x31,
+ 0x3c, 0x00, 0x40, 0x29, 0x00, 0x00, 0xb9, 0x61,
+ 0x7d, 0x62, 0xbd, 0x68, 0x00, 0x2d, 0x04, 0xd0,
+ 0x63, 0x6b, 0x7a, 0x6b, 0x00, 0x21, 0xfd, 0xf7,
+ 0x47, 0xfd, 0xf8, 0xbd, 0x04, 0x28, 0x03, 0xd3,
+ 0x01, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0xa1, 0xfc,
+ 0x38, 0x69, 0x26, 0x1c, 0x01, 0x30, 0x38, 0x61,
+ 0x20, 0x36, 0x30, 0x78, 0x02, 0x28, 0x03, 0xd0,
+ 0x0c, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x95, 0xfc,
+ 0x35, 0x70, 0x3c, 0x00, 0x7c, 0x29, 0x00, 0x00,
+ 0xa1, 0x69, 0x00, 0x29, 0xe8, 0xd0, 0x63, 0x6b,
+ 0x30, 0x34, 0x20, 0x78, 0x0c, 0x1c, 0x00, 0x21,
+ 0x7a, 0x6b, 0xfd, 0xf7, 0x27, 0xfd, 0xdf, 0xe7,
+ 0x04, 0x6c, 0x01, 0x00, 0xf4, 0x00, 0x07, 0x00,
+ 0x18, 0xdb, 0x01, 0x00, 0x10, 0xb5, 0x0b, 0x4c,
+ 0x60, 0x6a, 0x00, 0x28, 0x0e, 0xd0, 0x0a, 0x48,
+ 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x20, 0x60, 0x62,
+ 0xa4, 0x68, 0x00, 0x2c, 0x3c, 0x00, 0xb8, 0x29,
+ 0x00, 0x00, 0x05, 0xd0, 0x7e, 0x23, 0xdb, 0x43,
+ 0x00, 0x22, 0x01, 0x21, 0xfd, 0xf7, 0x0d, 0xfd,
+ 0x10, 0xbd, 0xe0, 0x69, 0x01, 0x30, 0xe0, 0x61,
+ 0x10, 0xbd, 0x04, 0x6c, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x09, 0x48, 0x41, 0x68, 0x3f, 0x22,
+ 0x12, 0x04, 0x91, 0x43, 0x0d, 0x22, 0x12, 0x04,
+ 0x89, 0x18, 0x41, 0x60, 0x41, 0x68, 0x01, 0x22,
+ 0x52, 0x02, 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00,
+ 0xf4, 0x29, 0x00, 0x00, 0x03, 0x48, 0x81, 0x78,
+ 0x81, 0x70, 0x81, 0x78, 0x81, 0x70, 0x70, 0x47,
+ 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0xf0, 0xb5, 0x01, 0x25, 0x08, 0x24, 0x00, 0x20,
+ 0x0e, 0x4a, 0x0f, 0x49, 0x00, 0x26, 0x3c, 0x23,
+ 0x43, 0x43, 0xd1, 0x52, 0x9b, 0x18, 0x5d, 0x71,
+ 0x9b, 0x60, 0x5e, 0x61, 0x1c, 0x82, 0xc0, 0x27,
+ 0xdf, 0x60, 0x20, 0x27, 0xfe, 0x54, 0x9e, 0x61,
+ 0x3c, 0x00, 0x30, 0x2a, 0x00, 0x00, 0x30, 0x27,
+ 0xfe, 0x54, 0x07, 0x4f, 0x3f, 0x18, 0x20, 0x37,
+ 0x01, 0x30, 0x05, 0x28, 0x9f, 0x63, 0xe9, 0xd3,
+ 0x05, 0x48, 0xff, 0x32, 0x01, 0x32, 0x90, 0x62,
+ 0xf0, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xbe, 0xba,
+ 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, 0x06, 0x6c,
+ 0x01, 0x00, 0x01, 0x49, 0x48, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x05, 0x49,
+ 0x08, 0x5c, 0x3c, 0x00, 0x6c, 0x2a, 0x00, 0x00,
+ 0x05, 0x49, 0x49, 0x68, 0x40, 0x18, 0xc0, 0x06,
+ 0xc0, 0x0e, 0x04, 0x49, 0x20, 0x30, 0x48, 0x72,
+ 0x70, 0x47, 0x00, 0x00, 0xa0, 0x57, 0x01, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x80, 0xb5, 0x15, 0x21, 0x84, 0x20, 0xfe, 0xf7,
+ 0x07, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, 0x43, 0x48,
+ 0x84, 0x68, 0x03, 0x34, 0x42, 0x4d, 0x04, 0xe0,
+ 0x20, 0x1c, 0x10, 0xf0, 0x3c, 0x00, 0xa8, 0x2a,
+ 0x00, 0x00, 0xb9, 0xf8, 0x00, 0x28, 0x71, 0xd1,
+ 0x28, 0x69, 0xc0, 0x07, 0xf7, 0xd5, 0x3e, 0x48,
+ 0x28, 0x60, 0x3e, 0x4a, 0x14, 0x1c, 0x20, 0x34,
+ 0x20, 0x79, 0x00, 0x90, 0x3c, 0x23, 0x3c, 0x49,
+ 0x58, 0x43, 0x45, 0x18, 0x28, 0x79, 0xff, 0xf7,
+ 0xcc, 0xff, 0x28, 0x1c, 0x3a, 0x49, 0x08, 0x30,
+ 0x48, 0x60, 0x01, 0x26, 0x08, 0x1c, 0x06, 0x60,
+ 0x68, 0x6a, 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00,
+ 0xe4, 0x2a, 0x00, 0x00, 0xa9, 0x6a, 0x92, 0x6a,
+ 0x35, 0x4b, 0x9f, 0x68, 0xd7, 0x1b, 0x1a, 0x68,
+ 0x51, 0x18, 0x79, 0x18, 0x8a, 0x42, 0x5a, 0x68,
+ 0x00, 0xd8, 0x00, 0xe0, 0x01, 0x32, 0x06, 0xc0,
+ 0xe8, 0x6a, 0xfe, 0xf7, 0x87, 0xff, 0x2d, 0x49,
+ 0xe8, 0x6a, 0x48, 0x60, 0x30, 0x1c, 0x0e, 0x60,
+ 0x66, 0x79, 0x1f, 0xe0, 0x2b, 0x48, 0x46, 0x61,
+ 0x04, 0x7f, 0x29, 0x49, 0x20, 0x1c, 0x50, 0x39,
+ 0x3c, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x89, 0x6a,
+ 0xfd, 0xf7, 0x5a, 0xfc, 0x00, 0x98, 0x84, 0x42,
+ 0x10, 0xd0, 0x3c, 0x20, 0x22, 0x49, 0x60, 0x43,
+ 0x40, 0x18, 0x87, 0x69, 0x00, 0x2f, 0x09, 0xd0,
+ 0x00, 0x21, 0x20, 0x30, 0x01, 0x70, 0x7e, 0x23,
+ 0xdb, 0x43, 0x02, 0x21, 0x00, 0x22, 0x20, 0x1c,
+ 0xfd, 0xf7, 0x4c, 0xfc, 0x01, 0x20, 0xa0, 0x40,
+ 0x86, 0x43, 0x00, 0x2e, 0xdd, 0xd1, 0xe9, 0x69,
+ 0x00, 0x29, 0x3c, 0x00, 0x5c, 0x2b, 0x00, 0x00,
+ 0x03, 0xd0, 0x30, 0x20, 0x40, 0x5d, 0xfd, 0xf7,
+ 0x3a, 0xfc, 0x16, 0x4c, 0x50, 0x3c, 0x60, 0x6a,
+ 0x00, 0x28, 0x03, 0xd0, 0x0a, 0x21, 0x84, 0x20,
+ 0xfe, 0xf7, 0x96, 0xfb, 0x20, 0x35, 0x28, 0x78,
+ 0x01, 0x28, 0x03, 0xd0, 0x0b, 0x21, 0x84, 0x20,
+ 0xfe, 0xf7, 0x8e, 0xfb, 0x02, 0x20, 0x28, 0x70,
+ 0xe0, 0x68, 0x01, 0x30, 0x00, 0xe0, 0x07, 0xe0,
+ 0xe0, 0x60, 0x00, 0x98, 0x3c, 0x00, 0x98, 0x2b,
+ 0x00, 0x00, 0x20, 0x70, 0x00, 0x98, 0x60, 0x70,
+ 0x0a, 0x48, 0x00, 0x68, 0x60, 0x63, 0xf8, 0xbd,
+ 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x30, 0x80,
+ 0x07, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x54, 0x6c, 0x01, 0x00, 0x00, 0xa0,
+ 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0x3c, 0x22,
+ 0x3c, 0x23, 0x4a, 0x43, 0x09, 0x49, 0x3c, 0x00,
+ 0xd4, 0x2b, 0x00, 0x00, 0xb0, 0xb5, 0x54, 0x18,
+ 0x58, 0x43, 0x45, 0x18, 0x21, 0x1c, 0x38, 0x22,
+ 0x28, 0x1c, 0xfd, 0xf7, 0xe5, 0xfc, 0xa0, 0x6b,
+ 0x00, 0x78, 0xa9, 0x6b, 0x08, 0x70, 0x00, 0x20,
+ 0x20, 0x34, 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00,
+ 0x18, 0xdb, 0x01, 0x00, 0x3c, 0x23, 0x07, 0x49,
+ 0x58, 0x43, 0x10, 0xb5, 0x44, 0x18, 0x20, 0x34,
+ 0x20, 0x78, 0x02, 0x28, 0x03, 0xd1, 0x0d, 0x21,
+ 0x3c, 0x00, 0x10, 0x2c, 0x00, 0x00, 0x84, 0x20,
+ 0xfe, 0xf7, 0x47, 0xfb, 0x00, 0x20, 0x20, 0x70,
+ 0x10, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xff, 0xb5,
+ 0x3c, 0x20, 0x48, 0x43, 0x1a, 0x49, 0x81, 0xb0,
+ 0x44, 0x18, 0x26, 0x1c, 0x20, 0x36, 0x30, 0x78,
+ 0x15, 0x1c, 0x0f, 0x9f, 0x02, 0x28, 0x03, 0xd1,
+ 0x04, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x31, 0xfb,
+ 0x01, 0x20, 0x30, 0x70, 0x25, 0x71, 0x0b, 0x99,
+ 0x30, 0x22, 0x3c, 0x00, 0x4c, 0x2c, 0x00, 0x00,
+ 0x61, 0x80, 0x0a, 0x99, 0xe1, 0x62, 0x0d, 0x99,
+ 0xa1, 0x61, 0x0c, 0x99, 0xe1, 0x61, 0x0e, 0x99,
+ 0x61, 0x62, 0xa7, 0x62, 0x01, 0x99, 0x11, 0x55,
+ 0x7e, 0x21, 0xc9, 0x43, 0x61, 0x63, 0x04, 0x99,
+ 0x00, 0x29, 0x00, 0xd1, 0x00, 0x20, 0x06, 0x1c,
+ 0x28, 0x1c, 0x08, 0xf0, 0x8b, 0xf8, 0x00, 0x28,
+ 0x01, 0xd0, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0xa1, 0x6b, 0x30, 0x43, 0x3c, 0x00, 0x88, 0x2c,
+ 0x00, 0x00, 0x08, 0x70, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x80, 0xb5,
+ 0x14, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x03, 0xfb,
+ 0x80, 0xbd, 0x01, 0x48, 0x40, 0x78, 0x70, 0x47,
+ 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x02, 0x48,
+ 0x00, 0x69, 0xc0, 0x07, 0xc0, 0x0f, 0x70, 0x47,
+ 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x01, 0x1c,
+ 0x3c, 0x23, 0x04, 0x4a, 0x59, 0x43, 0x3c, 0x00,
+ 0xc4, 0x2c, 0x00, 0x00, 0x89, 0x18, 0x20, 0x31,
+ 0x09, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x18, 0xdb, 0x01, 0x00,
+ 0x08, 0x48, 0x40, 0x6a, 0x00, 0x28, 0x0a, 0xd1,
+ 0x07, 0x4a, 0x00, 0x21, 0x20, 0x23, 0x9b, 0x5c,
+ 0x02, 0x2b, 0x04, 0xd0, 0x01, 0x31, 0x3c, 0x32,
+ 0x05, 0x29, 0xf7, 0xd3, 0x70, 0x47, 0x01, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00,
+ 0x3c, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x18, 0xdb,
+ 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, 0x04, 0x1c,
+ 0x17, 0x1c, 0xfe, 0xf7, 0x82, 0xfe, 0x20, 0x1c,
+ 0x11, 0x4c, 0x60, 0x60, 0x01, 0x20, 0x20, 0x60,
+ 0x10, 0x4d, 0x68, 0x69, 0x01, 0x30, 0x68, 0x61,
+ 0x68, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21,
+ 0x84, 0x20, 0xfe, 0xf7, 0xba, 0xfa, 0xa0, 0x68,
+ 0x40, 0x07, 0x03, 0xd5, 0x06, 0x21, 0x84, 0x20,
+ 0xfe, 0xf7, 0x3c, 0x00, 0x3c, 0x2d, 0x00, 0x00,
+ 0xb3, 0xfa, 0x08, 0x48, 0x00, 0x69, 0x00, 0x28,
+ 0x03, 0xda, 0xaa, 0x21, 0x84, 0x20, 0xfe, 0xf7,
+ 0xab, 0xfa, 0x02, 0x20, 0x68, 0x62, 0xae, 0x60,
+ 0x2f, 0x70, 0xf8, 0xbd, 0x00, 0x30, 0x07, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00,
+ 0x04, 0x4a, 0x51, 0x80, 0x10, 0x71, 0x03, 0x48,
+ 0x03, 0x49, 0x08, 0x30, 0x48, 0x60, 0x01, 0x20,
+ 0x08, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x78, 0x2d,
+ 0x00, 0x00, 0x3c, 0x6c, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x00, 0x21, 0x00, 0x23, 0x05, 0xe0,
+ 0x02, 0x89, 0x43, 0x60, 0xc0, 0x68, 0x51, 0x18,
+ 0x09, 0x04, 0x09, 0x0c, 0x00, 0x28, 0xf7, 0xd1,
+ 0x04, 0x31, 0x08, 0x04, 0x00, 0x0c, 0x70, 0x47,
+ 0x00, 0x00, 0x02, 0x4a, 0x51, 0x6b, 0x08, 0x43,
+ 0x50, 0x63, 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c,
+ 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, 0x3c, 0x00,
+ 0xb4, 0x2d, 0x00, 0x00, 0x22, 0x1c, 0x20, 0x32,
+ 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79,
+ 0x5a, 0x70, 0x03, 0x68, 0x40, 0x68, 0x06, 0x4a,
+ 0x50, 0x65, 0x05, 0x48, 0x13, 0x65, 0x50, 0x30,
+ 0x81, 0x60, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84,
+ 0x38, 0xbd, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0x98, 0xb5, 0x0d, 0x4c,
+ 0x20, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab,
+ 0x3c, 0x00, 0xf0, 0x2d, 0x00, 0x00, 0x19, 0x70,
+ 0xc0, 0x79, 0x58, 0x70, 0x0a, 0x48, 0x00, 0xf0,
+ 0xec, 0xf8, 0x09, 0x49, 0x00, 0x20, 0x48, 0x62,
+ 0xff, 0xf7, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0,
+ 0x12, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x49, 0xfa,
+ 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, 0x98, 0xbd,
+ 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x03, 0x48,
+ 0x01, 0x7a, 0x3c, 0x00, 0x2c, 0x2e, 0x00, 0x00,
+ 0xfe, 0x22, 0x91, 0x43, 0x0a, 0x31, 0x01, 0x72,
+ 0x70, 0x47, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x90, 0xb5, 0x0e, 0x4c, 0x85, 0xb0, 0xa0, 0x78,
+ 0x02, 0x28, 0x14, 0xd1, 0x03, 0x20, 0xa0, 0x70,
+ 0x0b, 0x49, 0x00, 0x20, 0x00, 0x22, 0x04, 0x92,
+ 0x02, 0x90, 0x03, 0x91, 0xe1, 0x88, 0x01, 0x22,
+ 0x01, 0x92, 0x00, 0x91, 0x61, 0x78, 0x20, 0x78,
+ 0x22, 0x69, 0xe3, 0x68, 0x3c, 0x00, 0x68, 0x2e,
+ 0x00, 0x00, 0x08, 0xf0, 0x94, 0xfd, 0x04, 0x48,
+ 0x09, 0xf0, 0x7f, 0xf9, 0x05, 0xb0, 0x90, 0xbd,
+ 0x00, 0x00, 0xb4, 0x79, 0x01, 0x00, 0xad, 0xb6,
+ 0x00, 0x00, 0x71, 0xb6, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0c, 0x4d, 0xac, 0x79, 0x0c, 0x49, 0x09, 0x78,
+ 0x00, 0x29, 0x03, 0xd0, 0x01, 0x29, 0x0e, 0xd0,
+ 0x02, 0x29, 0x08, 0xd1, 0xc2, 0x88, 0x00, 0x2a,
+ 0x09, 0xd0, 0x01, 0x23, 0x81, 0x68, 0x3c, 0x00,
+ 0xa4, 0x2e, 0x00, 0x00, 0x02, 0x20, 0x0f, 0xf0,
+ 0xc1, 0xf8, 0x03, 0xe0, 0x02, 0x21, 0x86, 0x20,
+ 0xfe, 0xf7, 0xf8, 0xf9, 0xac, 0x71, 0xb0, 0xbd,
+ 0x20, 0x10, 0x07, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x68, 0x07, 0x49, 0x4a, 0x60,
+ 0x03, 0x79, 0xca, 0x78, 0xcb, 0x70, 0x00, 0x79,
+ 0x90, 0x42, 0x06, 0xd0, 0x03, 0x48, 0x14, 0x30,
+ 0x00, 0x89, 0x07, 0xf0, 0x27, 0xfe, 0x06, 0xf0,
+ 0x3c, 0x00, 0xe0, 0x2e, 0x00, 0x00, 0xab, 0xfa,
+ 0x80, 0xbd, 0x84, 0x66, 0x01, 0x00, 0x70, 0xb5,
+ 0x16, 0x4c, 0x15, 0x4d, 0xa0, 0x78, 0x00, 0x26,
+ 0x98, 0x3d, 0x01, 0x28, 0x03, 0xd1, 0x28, 0x69,
+ 0x08, 0xf0, 0xfb, 0xfc, 0xa6, 0x70, 0x60, 0x68,
+ 0x01, 0x28, 0x03, 0xd0, 0x00, 0x21, 0x28, 0x69,
+ 0x00, 0xf0, 0xff, 0xfb, 0x0e, 0x48, 0x29, 0x69,
+ 0x0c, 0xf0, 0x31, 0xfa, 0x01, 0x20, 0x0c, 0xf0,
+ 0xe4, 0xf8, 0x3c, 0x00, 0x1c, 0x2f, 0x00, 0x00,
+ 0xe0, 0x78, 0x01, 0x28, 0x02, 0xd0, 0x01, 0x20,
+ 0x60, 0x70, 0x00, 0xe0, 0x66, 0x70, 0x06, 0x48,
+ 0x14, 0x30, 0x41, 0x68, 0x01, 0x29, 0x06, 0xd1,
+ 0x06, 0x60, 0x41, 0x6f, 0x00, 0x29, 0x02, 0xd0,
+ 0x00, 0x20, 0xfd, 0xf7, 0x4c, 0xfa, 0x70, 0xbd,
+ 0x84, 0x66, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x30, 0xb5, 0x00, 0x22, 0x00, 0x23, 0x01, 0x25,
+ 0x2c, 0x1c, 0x94, 0x40, 0x3c, 0x00, 0x58, 0x2f,
+ 0x00, 0x00, 0x04, 0x40, 0x01, 0xd0, 0xca, 0x54,
+ 0x01, 0x33, 0x01, 0x32, 0x0e, 0x2a, 0xf6, 0xdb,
+ 0x18, 0x1c, 0x30, 0xbd, 0x00, 0x00, 0xff, 0xb5,
+ 0x01, 0x27, 0x00, 0x26, 0x05, 0x1c, 0x02, 0x20,
+ 0x81, 0xb0, 0x00, 0x90, 0x00, 0x2d, 0x18, 0xd0,
+ 0x28, 0x78, 0xff, 0x28, 0x15, 0xd0, 0x00, 0x24,
+ 0x10, 0xe0, 0x28, 0x19, 0x80, 0x78, 0x0a, 0x99,
+ 0x00, 0x29, 0x01, 0xd0, 0x01, 0x06, 0x3c, 0x00,
+ 0x94, 0x2f, 0x00, 0x00, 0x08, 0xd5, 0x07, 0xf0,
+ 0xe9, 0xfe, 0x0e, 0x28, 0x03, 0xd0, 0x01, 0x21,
+ 0x81, 0x40, 0x0e, 0x43, 0x00, 0xe0, 0x00, 0x27,
+ 0x01, 0x34, 0x68, 0x78, 0xa0, 0x42, 0xeb, 0xdc,
+ 0x00, 0x98, 0x02, 0x9d, 0x01, 0x38, 0x00, 0x90,
+ 0xdf, 0xd1, 0x03, 0x98, 0x31, 0x1c, 0x81, 0x43,
+ 0x02, 0xd0, 0x03, 0x98, 0x06, 0x40, 0x00, 0x27,
+ 0x04, 0x98, 0x06, 0x60, 0x05, 0xb0, 0x38, 0x1c,
+ 0x3c, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0xf0, 0xbd,
+ 0x00, 0x00, 0x02, 0x21, 0x01, 0x60, 0x64, 0x21,
+ 0x01, 0xe0, 0x01, 0x39, 0x02, 0xd0, 0x02, 0x68,
+ 0x92, 0x07, 0xfa, 0xd4, 0x01, 0x20, 0x00, 0x29,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x10, 0xb5,
+ 0x00, 0x20, 0xc4, 0x43, 0x05, 0x4b, 0x02, 0x22,
+ 0x01, 0x01, 0x5a, 0x50, 0xc9, 0x18, 0x8c, 0x60,
+ 0x01, 0x30, 0x08, 0x28, 0xf8, 0xdb, 0x10, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x30, 0x00, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0xf0, 0xb5, 0x05, 0x1c,
+ 0x60, 0x35, 0xc7, 0x6a, 0x04, 0x1c, 0x28, 0x7b,
+ 0x00, 0x2f, 0x8b, 0xb0, 0x15, 0xd0, 0x08, 0x28,
+ 0x15, 0xd2, 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07,
+ 0x09, 0x09, 0x0c, 0x0c, 0x01, 0x26, 0x00, 0x21,
+ 0x09, 0xe0, 0x00, 0x26, 0x06, 0xe0, 0x02, 0x26,
+ 0x02, 0x21, 0x04, 0xe0, 0x3c, 0x00, 0x48, 0x30,
+ 0x00, 0x00, 0x03, 0x26, 0x03, 0x21, 0x01, 0xe0,
+ 0x04, 0x26, 0x01, 0x21, 0x8c, 0x22, 0x12, 0x59,
+ 0x07, 0x91, 0x26, 0x49, 0x06, 0x90, 0x04, 0x91,
+ 0x00, 0x20, 0x03, 0x90, 0x05, 0x97, 0x08, 0x92,
+ 0xe0, 0x69, 0x22, 0x69, 0x21, 0x1c, 0x70, 0x31,
+ 0x01, 0x91, 0x21, 0x49, 0x00, 0x90, 0x70, 0x00,
+ 0x40, 0x18, 0x60, 0x30, 0x02, 0x92, 0x03, 0x88,
+ 0x59, 0x1c, 0x01, 0x80, 0x1e, 0x48, 0x3c, 0x00,
+ 0x84, 0x30, 0x00, 0x00, 0x02, 0x88, 0xa1, 0x68,
+ 0x0a, 0xa8, 0x09, 0xf0, 0xe1, 0xff, 0x60, 0x60,
+ 0xe8, 0x7a, 0xa1, 0x6a, 0xc9, 0x07, 0x00, 0x07,
+ 0x00, 0x0e, 0xc9, 0x0d, 0x08, 0x43, 0x61, 0x6a,
+ 0x22, 0x69, 0xc9, 0x07, 0x89, 0x0d, 0x01, 0x43,
+ 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x80, 0x03, 0x08, 0x43, 0x21, 0x6a, 0xc9, 0x03,
+ 0x08, 0x43, 0x08, 0x21, 0x08, 0x43, 0x0a, 0x99,
+ 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x08, 0x80,
+ 0x20, 0x1c, 0xfe, 0xf7, 0x98, 0xfe, 0x20, 0x69,
+ 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0,
+ 0x82, 0xf9, 0x0b, 0xb0, 0xf0, 0xbd, 0x80, 0x79,
+ 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0x0f, 0xf9,
+ 0x20, 0x69, 0x06, 0x49, 0x80, 0x79, 0x80, 0x00,
+ 0x09, 0x58, 0x20, 0x1c, 0xfd, 0xf7, 0x74, 0xf9,
+ 0xef, 0xe7, 0x79, 0x2f, 0x01, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x30, 0x00, 0x00,
+ 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x58, 0x30, 0x8a, 0xb0,
+ 0x0e, 0xf0, 0x7c, 0xfe, 0x22, 0x1c, 0x80, 0x32,
+ 0x51, 0x68, 0x00, 0x29, 0x01, 0xd0, 0x11, 0x7a,
+ 0x07, 0xe0, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x69,
+ 0x80, 0x07, 0x01, 0xd5, 0x03, 0x21, 0x00, 0xe0,
+ 0x01, 0x21, 0xd2, 0x68, 0x07, 0x91, 0x22, 0x49,
+ 0x00, 0x20, 0x08, 0x92, 0x3c, 0x00, 0x38, 0x31,
+ 0x00, 0x00, 0x04, 0x91, 0x00, 0x22, 0x05, 0x92,
+ 0x06, 0x90, 0x03, 0x90, 0xe0, 0x69, 0x22, 0x69,
+ 0x00, 0x90, 0x21, 0x1c, 0x70, 0x31, 0x1c, 0x48,
+ 0x01, 0x91, 0x02, 0x92, 0x03, 0x89, 0x59, 0x1c,
+ 0x01, 0x81, 0x1a, 0x48, 0x02, 0x88, 0xa1, 0x68,
+ 0x09, 0xa8, 0x09, 0xf0, 0x76, 0xff, 0x60, 0x60,
+ 0x6b, 0x20, 0x00, 0x5d, 0xa1, 0x6a, 0x22, 0x69,
+ 0xc9, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x00,
+ 0x74, 0x31, 0x00, 0x00, 0xc9, 0x0d, 0x01, 0x43,
+ 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x80, 0x03, 0x08, 0x43, 0x09, 0x99, 0x08, 0x80,
+ 0x20, 0x1c, 0xfe, 0xf7, 0x35, 0xfe, 0x20, 0x69,
+ 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0,
+ 0x1f, 0xf9, 0x0a, 0xb0, 0x10, 0xbd, 0x80, 0x79,
+ 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0xac, 0xf8,
+ 0x20, 0x69, 0x07, 0x49, 0x80, 0x79, 0x80, 0x00,
+ 0x3c, 0x00, 0xb0, 0x31, 0x00, 0x00, 0x09, 0x58,
+ 0x20, 0x1c, 0xfd, 0xf7, 0x11, 0xf9, 0xef, 0xe7,
+ 0x00, 0x00, 0xbd, 0x2f, 0x01, 0x00, 0x24, 0x6a,
+ 0x01, 0x00, 0x08, 0x61, 0x01, 0x00, 0x74, 0x57,
+ 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x1c, 0x00, 0x69,
+ 0x04, 0x21, 0x07, 0xf0, 0xd2, 0xfa, 0x00, 0x28,
+ 0x09, 0xd0, 0x42, 0x78, 0x02, 0x32, 0x01, 0x1c,
+ 0x68, 0x46, 0xfd, 0xf7, 0x88, 0xf9, 0xe8, 0x6a,
+ 0x6c, 0x46, 0x3c, 0x00, 0xec, 0x31, 0x00, 0x00,
+ 0x02, 0x90, 0x00, 0xe0, 0x00, 0x24, 0x28, 0x1c,
+ 0x14, 0x30, 0x02, 0xf0, 0x03, 0xfb, 0x00, 0x28,
+ 0x04, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0x05, 0xf0,
+ 0xa5, 0xfe, 0x3e, 0xbd, 0x00, 0x2c, 0xfc, 0xd0,
+ 0x02, 0x49, 0x20, 0x1c, 0x49, 0x69, 0xfd, 0xf7,
+ 0xe2, 0xf8, 0xf6, 0xe7, 0x44, 0x7d, 0x01, 0x00,
+ 0x70, 0xb5, 0x1e, 0x1c, 0x18, 0x23, 0x58, 0x43,
+ 0x06, 0x4b, 0x04, 0x9d, 0x3c, 0x00, 0x28, 0x32,
+ 0x00, 0x00, 0x19, 0x50, 0xc4, 0x18, 0x00, 0x20,
+ 0x60, 0x61, 0x62, 0x60, 0xa6, 0x60, 0xe5, 0x60,
+ 0x0f, 0xf0, 0xb9, 0xfd, 0x20, 0x61, 0x70, 0xbd,
+ 0x00, 0x00, 0xb8, 0x7d, 0x01, 0x00, 0x02, 0x4a,
+ 0x01, 0x1c, 0x90, 0x69, 0x91, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x6b, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x04, 0x49, 0x04, 0x4b, 0x3c, 0x00,
+ 0x64, 0x32, 0x00, 0x00, 0xca, 0x68, 0x09, 0x69,
+ 0x5c, 0x3b, 0x5b, 0x68, 0xc9, 0x1a, 0x41, 0x43,
+ 0x50, 0x18, 0x70, 0x47, 0xa0, 0x7d, 0x01, 0x00,
+ 0x01, 0x48, 0x00, 0x78, 0x70, 0x47, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22,
+ 0x01, 0x49, 0xfd, 0xf7, 0x35, 0xf9, 0x80, 0xbd,
+ 0xfe, 0x67, 0x01, 0x00, 0xf0, 0xb5, 0x89, 0xb0,
+ 0x00, 0x93, 0x16, 0x4f, 0x13, 0x1c, 0x0e, 0x1c,
+ 0x3c, 0x00, 0xa0, 0x32, 0x00, 0x00, 0x04, 0x1c,
+ 0x3a, 0x1c, 0x01, 0xf0, 0x62, 0xff, 0x01, 0xa9,
+ 0x06, 0xa8, 0xa2, 0x68, 0x02, 0xf0, 0x0b, 0xf9,
+ 0x01, 0xaa, 0x06, 0xa9, 0x38, 0x1c, 0x63, 0x6a,
+ 0x02, 0xf0, 0x81, 0xfc, 0x05, 0x1c, 0x01, 0x28,
+ 0x14, 0xd1, 0x0c, 0x48, 0xfc, 0x21, 0xc8, 0x51,
+ 0x38, 0x1c, 0x02, 0xf0, 0x0c, 0xf8, 0x03, 0x21,
+ 0x30, 0x1c, 0x07, 0xf0, 0x52, 0xfa, 0x00, 0x28,
+ 0x07, 0xd0, 0x3c, 0x00, 0xdc, 0x32, 0x00, 0x00,
+ 0x80, 0x78, 0x00, 0xf0, 0x33, 0xfc, 0x20, 0x1c,
+ 0x10, 0x30, 0x0e, 0xf0, 0x47, 0xfd, 0x00, 0xe0,
+ 0x00, 0x25, 0x28, 0x1c, 0x09, 0xb0, 0xf0, 0xbd,
+ 0xf4, 0x67, 0x01, 0x00, 0xc1, 0x38, 0x00, 0x00,
+ 0x10, 0xb5, 0x07, 0x4c, 0x06, 0x48, 0x06, 0x22,
+ 0x21, 0x1d, 0x08, 0x38, 0xfd, 0xf7, 0xf6, 0xf8,
+ 0x01, 0xf0, 0xfc, 0xff, 0x00, 0xf0, 0x42, 0xfc,
+ 0x20, 0x1c, 0x02, 0xf0, 0x3c, 0x00, 0x18, 0x33,
+ 0x00, 0x00, 0x27, 0xfc, 0x10, 0xbd, 0xf4, 0x67,
+ 0x01, 0x00, 0x08, 0x49, 0xc9, 0x68, 0x00, 0x29,
+ 0x0a, 0xd0, 0x06, 0x4a, 0x01, 0x32, 0x51, 0x78,
+ 0x12, 0x78, 0x48, 0x43, 0x00, 0x2a, 0x01, 0xd1,
+ 0x08, 0x18, 0x70, 0x47, 0x10, 0x18, 0x70, 0x47,
+ 0x01, 0x30, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28,
+ 0x5a, 0x69, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00,
+ 0x54, 0x33, 0x00, 0x00, 0x10, 0x1c, 0x59, 0x61,
+ 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0xb9, 0x75, 0x00, 0x00, 0x07, 0x49, 0x00, 0x20,
+ 0x0a, 0x78, 0x02, 0x2a, 0x09, 0xd1, 0x0a, 0x7c,
+ 0x00, 0x2a, 0x05, 0xd1, 0xca, 0x68, 0x00, 0x2a,
+ 0x03, 0xd0, 0x49, 0x69, 0x00, 0x29, 0x00, 0xd0,
+ 0x01, 0x20, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00,
+ 0x0c, 0x4a, 0x80, 0xb5, 0x01, 0x21, 0x51, 0x60,
+ 0x3c, 0x00, 0x90, 0x33, 0x00, 0x00, 0x09, 0xf0,
+ 0x6a, 0xf8, 0x09, 0x48, 0x1c, 0x30, 0x81, 0x69,
+ 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, 0x83, 0x61,
+ 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0xf0,
+ 0xd2, 0xf8, 0x80, 0xbd, 0x00, 0x22, 0x00, 0x21,
+ 0x03, 0x48, 0x00, 0xf0, 0x5c, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28,
+ 0x16, 0xd1, 0x3c, 0x00, 0xcc, 0x33, 0x00, 0x00,
+ 0x0e, 0x4d, 0x02, 0x2c, 0x09, 0xd1, 0x00, 0xf0,
+ 0x2b, 0xfa, 0x00, 0x28, 0x0e, 0xd0, 0x68, 0x69,
+ 0x00, 0x28, 0x0b, 0xd1, 0x21, 0x1c, 0x13, 0x20,
+ 0x0c, 0xe0, 0x03, 0x2c, 0xfa, 0xd1, 0x00, 0xf0,
+ 0xf9, 0xf9, 0x00, 0x28, 0x02, 0xd0, 0x28, 0x7c,
+ 0x00, 0x28, 0xf3, 0xd0, 0xb0, 0xbd, 0x21, 0x1c,
+ 0x00, 0x06, 0x00, 0x0e, 0x04, 0xf0, 0x62, 0xfc,
+ 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x34,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0c, 0x4c, 0x00, 0x25, 0x25, 0x74, 0x65, 0x61,
+ 0xe5, 0x60, 0x00, 0xf0, 0x3c, 0xfa, 0x00, 0xf0,
+ 0x34, 0xfa, 0x07, 0x48, 0x1c, 0x38, 0x05, 0x61,
+ 0x09, 0xf0, 0x33, 0xff, 0x20, 0x78, 0x00, 0x28,
+ 0x02, 0xd1, 0x04, 0xf0, 0x6e, 0xfa, 0xb0, 0xbd,
+ 0x02, 0x28, 0xfc, 0xd1, 0x04, 0xf0, 0xa5, 0xfb,
+ 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x3c, 0x00,
+ 0x44, 0x34, 0x00, 0x00, 0x0c, 0x48, 0x80, 0xb5,
+ 0x01, 0x78, 0x00, 0x29, 0x12, 0xd0, 0xc0, 0x68,
+ 0x00, 0x28, 0x0f, 0xd1, 0x08, 0x48, 0x1c, 0x38,
+ 0x40, 0x69, 0x00, 0x28, 0x0a, 0xd1, 0x07, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x00, 0x22,
+ 0x07, 0x21, 0x10, 0x20, 0x10, 0xf0, 0xa0, 0xf9,
+ 0x02, 0xf0, 0x2c, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0xd4, 0x67, 0x01, 0x00,
+ 0x3c, 0x00, 0x80, 0x34, 0x00, 0x00, 0xf8, 0xb5,
+ 0x1d, 0x4e, 0x1c, 0x4d, 0x04, 0x1c, 0xf0, 0x68,
+ 0x02, 0x27, 0x1c, 0x3d, 0x00, 0x28, 0x07, 0xd0,
+ 0xe8, 0x68, 0x00, 0x28, 0x04, 0xd0, 0xfd, 0xf7,
+ 0xc2, 0xfe, 0x00, 0x28, 0x00, 0xd0, 0xbc, 0x43,
+ 0x00, 0x2c, 0x14, 0xd0, 0x37, 0x70, 0xf0, 0x68,
+ 0x14, 0x4f, 0x00, 0x28, 0x10, 0xd0, 0xe0, 0x07,
+ 0x17, 0xd4, 0xfd, 0xf7, 0xb4, 0xfe, 0x00, 0x28,
+ 0x13, 0xd0, 0x3c, 0x00, 0xbc, 0x34, 0x00, 0x00,
+ 0x70, 0x69, 0x00, 0x28, 0x06, 0xd1, 0xe8, 0x68,
+ 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, 0x1a, 0xff,
+ 0x0d, 0xf0, 0x0a, 0xfa, 0xf8, 0xbd, 0x68, 0x69,
+ 0x00, 0x28, 0x05, 0xd1, 0x09, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x2c, 0x04, 0xd1,
+ 0x39, 0x1c, 0x20, 0x1c, 0x0e, 0xf0, 0x52, 0xfd,
+ 0xf0, 0xe7, 0x04, 0xf0, 0x1d, 0xfb, 0x02, 0xf0,
+ 0xeb, 0xfb, 0xeb, 0xe7, 0x3c, 0x00, 0xf8, 0x34,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x50, 0xc3,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x05, 0x48,
+ 0x41, 0x69, 0x00, 0x29, 0x04, 0xd0, 0x40, 0x6a,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x49,
+ 0x00, 0x20, 0x48, 0x60, 0x08, 0x60, 0x88, 0x60,
+ 0x08, 0xf0, 0x9b, 0xff, 0x07, 0x21, 0x3c, 0x00,
+ 0x34, 0x35, 0x00, 0x00, 0x12, 0x20, 0x22, 0x79,
+ 0x10, 0xf0, 0x3a, 0xf9, 0x10, 0xbd, 0x00, 0x00,
+ 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0x08, 0x60, 0x70, 0x47, 0xe8, 0x67, 0x01, 0x00,
+ 0xf8, 0xb5, 0x07, 0x1c, 0x0e, 0x1c, 0x08, 0xf0,
+ 0xa3, 0xfa, 0x13, 0x4d, 0x04, 0x1c, 0x68, 0x68,
+ 0x00, 0x28, 0x17, 0xd0, 0x00, 0x2f, 0x02, 0xd0,
+ 0xa8, 0x68, 0x03, 0x28, 0x13, 0xd3, 0x00, 0x20,
+ 0x3c, 0x00, 0x70, 0x35, 0x00, 0x00, 0xa8, 0x60,
+ 0x68, 0x60, 0x21, 0x1c, 0x0f, 0x20, 0x0e, 0xf0,
+ 0xf0, 0xfe, 0x28, 0x68, 0x00, 0x28, 0x03, 0xd0,
+ 0x00, 0x2c, 0x06, 0xd1, 0x01, 0x20, 0x02, 0xe0,
+ 0x01, 0x2c, 0x02, 0xd1, 0x00, 0x20, 0xff, 0xf7,
+ 0xfa, 0xfe, 0xf8, 0xbd, 0x72, 0x1c, 0x00, 0x21,
+ 0x04, 0x48, 0x00, 0xf0, 0x68, 0xf8, 0xa8, 0x68,
+ 0x01, 0x30, 0xa8, 0x60, 0xf5, 0xe7, 0x5c, 0x69,
+ 0x01, 0x00, 0x3c, 0x00, 0xac, 0x35, 0x00, 0x00,
+ 0x51, 0x35, 0x00, 0x00, 0x0a, 0x49, 0x80, 0xb5,
+ 0xca, 0x68, 0x00, 0x2a, 0x0b, 0xd0, 0x42, 0x68,
+ 0x00, 0x2a, 0x09, 0xd0, 0x00, 0x22, 0x4a, 0x62,
+ 0x02, 0x68, 0x0a, 0x62, 0x02, 0x68, 0x07, 0x21,
+ 0x17, 0x20, 0x10, 0xf0, 0xef, 0xf8, 0x80, 0xbd,
+ 0x01, 0x20, 0x48, 0x62, 0x80, 0xbd, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0x70, 0xb5, 0x14, 0x4d,
+ 0x84, 0x6c, 0xe9, 0x68, 0x3c, 0x00, 0xe8, 0x35,
+ 0x00, 0x00, 0x00, 0x29, 0x17, 0xd0, 0x40, 0x30,
+ 0xec, 0x61, 0x40, 0x78, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x68, 0x62, 0x28, 0x6a, 0x0e, 0x4e,
+ 0x00, 0x1b, 0xb0, 0x42, 0x0c, 0xd2, 0x08, 0xf0,
+ 0x3a, 0xfe, 0x29, 0x6a, 0x40, 0x1a, 0xb0, 0x42,
+ 0x03, 0xd2, 0x02, 0x22, 0x07, 0x21, 0x13, 0x20,
+ 0x09, 0xe0, 0x04, 0xf0, 0xb6, 0xfa, 0x70, 0xbd,
+ 0x07, 0x48, 0xa9, 0x68, 0x0b, 0xf0, 0x3c, 0x00,
+ 0x24, 0x36, 0x00, 0x00, 0xbd, 0xfe, 0x22, 0x1c,
+ 0x07, 0x21, 0x16, 0x20, 0x10, 0xf0, 0xc0, 0xf8,
+ 0x70, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0xa0, 0x86, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x0a, 0x49, 0x80, 0xb5, 0x00, 0x20, 0x88, 0x61,
+ 0x08, 0x69, 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48,
+ 0x1c, 0x30, 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0,
+ 0x01, 0xf0, 0xd2, 0xff, 0x02, 0x28, 0x03, 0xd1,
+ 0x3c, 0x00, 0x60, 0x36, 0x00, 0x00, 0x00, 0xf0,
+ 0x12, 0xf9, 0x00, 0xf0, 0xbc, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0xf0, 0xb5,
+ 0x06, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x91, 0xb0,
+ 0x01, 0xa8, 0x40, 0x21, 0xfc, 0xf7, 0x0d, 0xff,
+ 0x00, 0x21, 0x68, 0x46, 0xfd, 0xf7, 0xa7, 0xff,
+ 0x04, 0x90, 0x01, 0xa8, 0x06, 0x22, 0x08, 0x49,
+ 0xfc, 0xf7, 0x31, 0xff, 0x06, 0x22, 0x02, 0xa8,
+ 0x02, 0x30, 0x3c, 0x00, 0x9c, 0x36, 0x00, 0x00,
+ 0x06, 0x49, 0xfc, 0xf7, 0x2b, 0xff, 0x00, 0xab,
+ 0xdc, 0x76, 0x0c, 0x95, 0x31, 0x1c, 0x01, 0xa8,
+ 0x07, 0xf0, 0x4e, 0xf8, 0x11, 0xb0, 0xf0, 0xbd,
+ 0x12, 0x61, 0x01, 0x00, 0xf8, 0x67, 0x01, 0x00,
+ 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b,
+ 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80,
+ 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0x12, 0xff,
+ 0x16, 0xe0, 0x04, 0x22, 0x3c, 0x00, 0xd8, 0x36,
+ 0x00, 0x00, 0x01, 0x1c, 0x18, 0x1c, 0xfc, 0xf7,
+ 0x0c, 0xff, 0x09, 0x48, 0x10, 0x38, 0x00, 0x69,
+ 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, 0x0c, 0x30,
+ 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, 0x01, 0xf0,
+ 0x84, 0xff, 0x02, 0x28, 0x03, 0xd1, 0x00, 0xf0,
+ 0xc4, 0xf8, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20,
+ 0x80, 0xbd, 0x6c, 0x69, 0x01, 0x00, 0xf8, 0xb5,
+ 0x04, 0x1c, 0x0f, 0x1c, 0x00, 0x25, 0x3c, 0x00,
+ 0x14, 0x37, 0x00, 0x00, 0x00, 0x26, 0x01, 0xf0,
+ 0x73, 0xff, 0x02, 0x28, 0x2f, 0xd1, 0x19, 0x49,
+ 0x01, 0x2f, 0x08, 0x68, 0x07, 0xd1, 0x02, 0x1c,
+ 0x22, 0x40, 0x0a, 0xd1, 0x20, 0x43, 0x08, 0x60,
+ 0xa0, 0x42, 0x06, 0xd1, 0x04, 0xe0, 0x00, 0x28,
+ 0x03, 0xd0, 0xa0, 0x43, 0x08, 0x60, 0x00, 0xd1,
+ 0x01, 0x25, 0x48, 0x68, 0x00, 0x28, 0x1a, 0xd1,
+ 0x00, 0x2d, 0x17, 0xd0, 0x01, 0x20, 0x48, 0x60,
+ 0x3c, 0x00, 0x50, 0x37, 0x00, 0x00, 0x38, 0x1c,
+ 0x08, 0xf0, 0x89, 0xfe, 0x0b, 0x48, 0x1c, 0x30,
+ 0x81, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23,
+ 0x83, 0x61, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20,
+ 0xff, 0xf7, 0xf1, 0xfe, 0x06, 0xe0, 0x00, 0x22,
+ 0x00, 0x21, 0x04, 0x48, 0xff, 0xf7, 0x7b, 0xff,
+ 0x00, 0xe0, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35,
+ 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x37, 0x00, 0x00,
+ 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x12, 0x4b,
+ 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80,
+ 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0xaa, 0xfe,
+ 0x18, 0xe0, 0x04, 0x22, 0x01, 0x1c, 0x18, 0x1c,
+ 0xfc, 0xf7, 0xa4, 0xfe, 0x0a, 0x48, 0x10, 0x30,
+ 0xc1, 0x68, 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x78,
+ 0x00, 0x28, 0x0b, 0xd0, 0x01, 0xf0, 0x1e, 0xff,
+ 0x02, 0x28, 0x07, 0xd1, 0x3c, 0x00, 0xc8, 0x37,
+ 0x00, 0x00, 0x00, 0xf0, 0x64, 0xf8, 0x00, 0xf0,
+ 0x2e, 0xf8, 0x00, 0x28, 0x01, 0xd1, 0x09, 0xf0,
+ 0x7a, 0xfd, 0x01, 0x20, 0x80, 0xbd, 0x68, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x20, 0x69,
+ 0x00, 0x28, 0x09, 0xd0, 0xa1, 0x69, 0x00, 0x29,
+ 0x06, 0xd1, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43,
+ 0x03, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xe1, 0xfe,
+ 0x21, 0x69, 0x01, 0x20, 0x00, 0x29, 0x3c, 0x00,
+ 0x04, 0x38, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x20,
+ 0x10, 0xbd, 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00,
+ 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x28, 0x03, 0xd0,
+ 0xfd, 0xf7, 0x9a, 0xfc, 0xe0, 0x60, 0x10, 0xbd,
+ 0x01, 0x20, 0x00, 0x21, 0xe1, 0x60, 0x10, 0xbd,
+ 0x78, 0x69, 0x01, 0x00, 0x0a, 0x48, 0x0a, 0x49,
+ 0x10, 0xb5, 0xc0, 0x68, 0x1c, 0x39, 0xc9, 0x68,
+ 0x00, 0x28, 0x03, 0xd0, 0x00, 0x29, 0x01, 0xd0,
+ 0x3c, 0x00, 0x40, 0x38, 0x00, 0x00, 0x01, 0x24,
+ 0x00, 0xe0, 0x00, 0x24, 0x00, 0x2c, 0x03, 0xd0,
+ 0x02, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xb7, 0xfe,
+ 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x00, 0x20,
+ 0x21, 0x69, 0x00, 0x29, 0x0c, 0xd0, 0x06, 0x49,
+ 0x1c, 0x31, 0x09, 0x78, 0x00, 0x29, 0x07, 0xd0,
+ 0x00, 0xf0, 0x09, 0xf8, 0x01, 0x20, 0xa0, 0x61,
+ 0x20, 0x69, 0x3c, 0x00, 0x7c, 0x38, 0x00, 0x00,
+ 0x7d, 0x23, 0xdb, 0x00, 0x58, 0x43, 0x10, 0xbd,
+ 0x5c, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x21,
+ 0x07, 0x20, 0x0f, 0xf0, 0xd1, 0xfe, 0x80, 0xbd,
+ 0x80, 0xb5, 0x02, 0x21, 0x07, 0x20, 0x0f, 0xf0,
+ 0xcb, 0xfe, 0x80, 0xbd, 0x06, 0x48, 0x80, 0xb5,
+ 0x00, 0x78, 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7,
+ 0x29, 0xfd, 0x00, 0x22, 0x07, 0x21, 0x11, 0x20,
+ 0x0f, 0xf0, 0x7c, 0xff, 0x3c, 0x00, 0xb8, 0x38,
+ 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x10, 0x1c,
+ 0x06, 0x4a, 0x51, 0x61, 0x00, 0xf0, 0xa3, 0xf8,
+ 0x10, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x11, 0x20,
+ 0x00, 0x22, 0x07, 0x21, 0x0f, 0xf0, 0x69, 0xff,
+ 0x10, 0xbd, 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49,
+ 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x3c, 0x00,
+ 0xf4, 0x38, 0x00, 0x00, 0xe0, 0x69, 0x00, 0x28,
+ 0x0c, 0xd1, 0xe0, 0x62, 0x01, 0x20, 0xe0, 0x61,
+ 0x0b, 0xf0, 0x08, 0xfd, 0x0b, 0xf0, 0x74, 0xfe,
+ 0x01, 0x20, 0x00, 0xf0, 0xb5, 0xf8, 0x0f, 0xf0,
+ 0x4d, 0xfa, 0x60, 0x63, 0x10, 0xbd, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0xc8, 0x61, 0x88, 0x63, 0x00, 0xf0,
+ 0x89, 0xf8, 0x00, 0xf0, 0x01, 0xf9, 0x02, 0xf0,
+ 0x3c, 0x00, 0x30, 0x39, 0x00, 0x00, 0x91, 0xfb,
+ 0x80, 0xbd, 0x44, 0x7d, 0x01, 0x00, 0x10, 0xb5,
+ 0x01, 0x28, 0x38, 0xd1, 0x08, 0x06, 0x00, 0x0e,
+ 0x05, 0x28, 0x32, 0xd1, 0x1d, 0x4c, 0x20, 0x78,
+ 0x01, 0x28, 0x09, 0xd0, 0x02, 0x28, 0x1b, 0xd0,
+ 0x03, 0x28, 0x2a, 0xd1, 0x02, 0xf0, 0x7d, 0xfb,
+ 0x00, 0xf0, 0x6f, 0xf8, 0x01, 0x20, 0x10, 0xe0,
+ 0x17, 0x48, 0x21, 0x6b, 0x0b, 0xf0, 0x1b, 0xfd,
+ 0x0b, 0xf0, 0x3c, 0x00, 0x6c, 0x39, 0x00, 0x00,
+ 0x41, 0xfe, 0x15, 0x48, 0x00, 0x69, 0x03, 0x28,
+ 0x01, 0xd3, 0xc0, 0x07, 0x03, 0xd5, 0x01, 0x21,
+ 0x20, 0x6b, 0x07, 0xf0, 0x19, 0xff, 0x02, 0x20,
+ 0x00, 0xf0, 0x78, 0xf8, 0x10, 0xbd, 0x0f, 0x48,
+ 0x00, 0x68, 0x20, 0x64, 0x0a, 0x48, 0x5c, 0x30,
+ 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60,
+ 0x03, 0xf0, 0xcc, 0xfc, 0x03, 0x20, 0x00, 0xf0,
+ 0x69, 0xf8, 0x01, 0x20, 0x3c, 0x00, 0xa8, 0x39,
+ 0x00, 0x00, 0xe0, 0x62, 0x10, 0xbd, 0x09, 0x21,
+ 0x00, 0xe0, 0x08, 0x21, 0x09, 0x20, 0xfd, 0xf7,
+ 0x76, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0xf4, 0x68,
+ 0x01, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0f, 0x4c, 0x20, 0x78, 0x65, 0x1e, 0x01, 0x28,
+ 0x0f, 0xd1, 0x00, 0x20, 0xff, 0xf7, 0xa1, 0xfc,
+ 0x0c, 0x49, 0x09, 0x88, 0x49, 0x08, 0x3c, 0x00,
+ 0xe4, 0x39, 0x00, 0x00, 0x40, 0x1a, 0x0f, 0xf0,
+ 0x19, 0xf9, 0x00, 0x28, 0x04, 0xd0, 0x28, 0x78,
+ 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x05, 0xd0,
+ 0x20, 0x78, 0x00, 0x28, 0x04, 0xd1, 0x28, 0x78,
+ 0x03, 0x28, 0x01, 0xd1, 0x01, 0x20, 0xb0, 0xbd,
+ 0x00, 0x20, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x01, 0x49, 0xc8, 0x64,
+ 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0x3c, 0x00, 0x20, 0x3a, 0x00, 0x00, 0x04, 0x49,
+ 0x05, 0x4a, 0x89, 0x68, 0x12, 0x6d, 0x01, 0x20,
+ 0x91, 0x42, 0x00, 0xd3, 0x00, 0x20, 0x70, 0x47,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x6b,
+ 0x07, 0xf0, 0xf9, 0xfe, 0xa0, 0x6b, 0x00, 0x28,
+ 0x03, 0xd1, 0x03, 0x48, 0x21, 0x6b, 0x0b, 0xf0,
+ 0x92, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x3a, 0x00, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x04, 0x48, 0x00, 0x78,
+ 0x02, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x44, 0x7d, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c,
+ 0xff, 0xf7, 0xd0, 0xff, 0x06, 0x1c, 0x01, 0x2f,
+ 0x26, 0x4d, 0x1f, 0xd0, 0x02, 0x2f, 0x45, 0xd0,
+ 0x03, 0x2f, 0x12, 0xd1, 0x24, 0x48, 0x25, 0x4b,
+ 0x00, 0x69, 0x6a, 0x69, 0x3c, 0x00, 0x98, 0x3a,
+ 0x00, 0x00, 0x41, 0x08, 0x5a, 0x43, 0x23, 0x4b,
+ 0xd4, 0x18, 0x8c, 0x42, 0x00, 0xd9, 0x0c, 0x1c,
+ 0x00, 0x2e, 0x05, 0xd0, 0x1e, 0x49, 0x5b, 0x39,
+ 0x09, 0x78, 0x00, 0x29, 0x00, 0xd1, 0x04, 0x1c,
+ 0x05, 0x22, 0x21, 0x1c, 0x09, 0x20, 0x0f, 0xf0,
+ 0x80, 0xfd, 0x18, 0x4a, 0x5c, 0x3a, 0x17, 0x70,
+ 0xf8, 0xbd, 0xff, 0xf7, 0xd6, 0xfb, 0x00, 0x28,
+ 0x02, 0xd0, 0x28, 0x69, 0x00, 0x28, 0x3c, 0x00,
+ 0xd4, 0x3a, 0x00, 0x00, 0x0e, 0xd0, 0x04, 0xf0,
+ 0xcf, 0xfb, 0x13, 0x4b, 0x69, 0x69, 0x11, 0x4a,
+ 0x59, 0x43, 0x5c, 0x3a, 0xd2, 0x6b, 0x89, 0x18,
+ 0x88, 0x42, 0x01, 0xd9, 0x44, 0x1a, 0x04, 0xe0,
+ 0x00, 0x24, 0x02, 0xe0, 0x04, 0xf0, 0xae, 0xfd,
+ 0x04, 0x1c, 0x00, 0x2e, 0xdb, 0xd0, 0x09, 0x48,
+ 0x5b, 0x38, 0x00, 0x78, 0x01, 0x28, 0xd6, 0xd1,
+ 0x08, 0x4b, 0x9c, 0x42, 0x02, 0xd9, 0x58, 0x42,
+ 0x3c, 0x00, 0x10, 0x3b, 0x00, 0x00, 0x24, 0x18,
+ 0xd0, 0xe7, 0x00, 0x24, 0xce, 0xe7, 0x04, 0xf0,
+ 0xae, 0xfb, 0xca, 0xe7, 0x00, 0x00, 0xf4, 0x68,
+ 0x01, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0x98, 0x3a,
+ 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0xb5,
+ 0x05, 0x21, 0x09, 0x20, 0x0f, 0xf0, 0x7d, 0xfd,
+ 0x02, 0x49, 0x00, 0x20, 0x08, 0x70, 0x80, 0xbd,
+ 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x70, 0xb5,
+ 0x06, 0x1c, 0x3c, 0x00, 0x4c, 0x3b, 0x00, 0x00,
+ 0x0d, 0xf0, 0xbc, 0xfa, 0xff, 0xf7, 0xce, 0xfe,
+ 0x09, 0x4c, 0x0a, 0x48, 0x21, 0x6b, 0x0b, 0xf0,
+ 0x21, 0xfc, 0x01, 0x25, 0x01, 0x21, 0x30, 0x06,
+ 0x00, 0x0e, 0xa5, 0x63, 0x07, 0xf0, 0x3a, 0xfe,
+ 0x05, 0x48, 0x29, 0x02, 0x09, 0x58, 0x00, 0x29,
+ 0x00, 0xd1, 0x05, 0x61, 0x70, 0xbd, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3b,
+ 0x00, 0x00, 0x02, 0x4a, 0x11, 0x6c, 0x08, 0x43,
+ 0x10, 0x64, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xbf, 0xfe,
+ 0x0b, 0xf0, 0xa1, 0xfb, 0x80, 0xbd, 0x02, 0x4a,
+ 0x01, 0x1c, 0x10, 0x69, 0x11, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0xf3, 0xb5,
+ 0x06, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0xf8, 0x4c,
+ 0x08, 0x90, 0xe2, 0x69, 0x08, 0x25, 0x3c, 0x00,
+ 0xc4, 0x3b, 0x00, 0x00, 0x00, 0x2a, 0x03, 0xd0,
+ 0x06, 0xa9, 0x07, 0xa8, 0xfc, 0xf7, 0x06, 0xfc,
+ 0x30, 0x1c, 0xf3, 0x4e, 0x00, 0x27, 0x20, 0x36,
+ 0x82, 0x28, 0x6f, 0xd0, 0x15, 0xdc, 0x01, 0x28,
+ 0x18, 0xd0, 0x80, 0x28, 0x6b, 0xd1, 0xee, 0x4d,
+ 0x80, 0x3d, 0xa8, 0x68, 0x01, 0x28, 0x67, 0xd1,
+ 0x68, 0x68, 0x0f, 0xf0, 0x1b, 0xf8, 0x00, 0x28,
+ 0x63, 0xd1, 0x01, 0x21, 0x01, 0x20, 0x0d, 0xf0,
+ 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x9d, 0xf8,
+ 0x08, 0xf0, 0xdb, 0xfd, 0x0b, 0xb0, 0xf0, 0xbd,
+ 0x83, 0x28, 0x6d, 0xd0, 0x84, 0x28, 0x55, 0xd1,
+ 0xe7, 0xe0, 0x0a, 0x98, 0x0a, 0x28, 0x04, 0xd2,
+ 0x03, 0xa3, 0x1b, 0x18, 0x1b, 0x5a, 0x5b, 0x00,
+ 0x9f, 0x44, 0xf6, 0xe0, 0x00, 0x00, 0xee, 0x00,
+ 0x0b, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xf7, 0x00,
+ 0xf7, 0x00, 0x2f, 0x00, 0x88, 0x00, 0x8b, 0x00,
+ 0xad, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x00, 0x00,
+ 0x00, 0xf0, 0x56, 0xfe, 0x00, 0x28, 0x17, 0xd0,
+ 0xd6, 0x4a, 0x80, 0x3a, 0xd1, 0x6a, 0x06, 0x98,
+ 0x81, 0x42, 0x16, 0xd0, 0x06, 0x21, 0x00, 0x28,
+ 0x00, 0xd1, 0x07, 0x21, 0x0d, 0x06, 0x2d, 0x0e,
+ 0x00, 0x28, 0x0e, 0xd0, 0xcf, 0x4a, 0x01, 0x20,
+ 0x80, 0x3a, 0x50, 0x65, 0x0f, 0xf0, 0xa0, 0xf8,
+ 0xcc, 0x4a, 0x80, 0x3a, 0x50, 0x66, 0x04, 0xe0,
+ 0x00, 0x21, 0x16, 0x20, 0x3c, 0x00, 0x78, 0x3c,
+ 0x00, 0x00, 0x0f, 0xf0, 0xdc, 0xfc, 0x01, 0x25,
+ 0x02, 0x20, 0x05, 0x90, 0x2e, 0xe2, 0xc6, 0x48,
+ 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x2e, 0xd0,
+ 0xc6, 0x49, 0x20, 0x69, 0xc4, 0x4d, 0x40, 0x18,
+ 0x0e, 0xf0, 0xc1, 0xff, 0x00, 0x28, 0x12, 0xd0,
+ 0x0f, 0xf0, 0x85, 0xf8, 0xc1, 0x49, 0x49, 0x42,
+ 0x40, 0x18, 0xbd, 0x49, 0x20, 0x61, 0x80, 0x39,
+ 0x48, 0x6e, 0x40, 0x19, 0x0e, 0xf0, 0x3c, 0x00,
+ 0xb4, 0x3c, 0x00, 0x00, 0xbb, 0xff, 0x00, 0x28,
+ 0x11, 0xd0, 0x0a, 0xe0, 0xf7, 0xe0, 0x17, 0xe2,
+ 0xb2, 0xe0, 0xb0, 0xe0, 0xb6, 0x49, 0x20, 0x69,
+ 0x80, 0x39, 0x49, 0x6e, 0x40, 0x1a, 0xa8, 0x42,
+ 0x05, 0xdb, 0xb3, 0x49, 0xb5, 0x4d, 0x80, 0x39,
+ 0x4f, 0x65, 0x03, 0xf0, 0x27, 0xfb, 0x06, 0x22,
+ 0x29, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x72, 0xfc,
+ 0x47, 0xe0, 0x95, 0xe0, 0x00, 0xf0, 0xfe, 0xfd,
+ 0x3c, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x28,
+ 0x42, 0xd1, 0xaa, 0x4d, 0xc4, 0x3d, 0xef, 0x60,
+ 0x08, 0xf0, 0x19, 0xfd, 0x03, 0xf0, 0x15, 0xfb,
+ 0xa8, 0x6a, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7,
+ 0x4c, 0xff, 0xaf, 0x62, 0xa4, 0x48, 0x80, 0x38,
+ 0x00, 0x68, 0x00, 0x21, 0xff, 0xf7, 0xf9, 0xfc,
+ 0x08, 0xf0, 0x3f, 0xf9, 0x09, 0x21, 0x16, 0x20,
+ 0x0f, 0xf0, 0x87, 0xfc, 0x00, 0x22, 0x16, 0x21,
+ 0x83, 0x20, 0x3c, 0x00, 0x2c, 0x3d, 0x00, 0x00,
+ 0x0f, 0xf0, 0x40, 0xfd, 0xff, 0xf7, 0x86, 0xfc,
+ 0x21, 0xe0, 0x00, 0xf0, 0x1b, 0xfe, 0x1e, 0xe0,
+ 0x06, 0xf0, 0x54, 0xfa, 0x97, 0x4d, 0x80, 0x3d,
+ 0xa9, 0x6f, 0x40, 0x1a, 0x04, 0x90, 0x06, 0x98,
+ 0x00, 0x28, 0x01, 0xd0, 0xaf, 0x65, 0x02, 0xe0,
+ 0xa8, 0x6d, 0x00, 0x28, 0x08, 0xd1, 0x91, 0x48,
+ 0xc4, 0x38, 0x00, 0x78, 0x80, 0x07, 0x03, 0xd5,
+ 0x92, 0x48, 0x47, 0x60, 0x3c, 0x00, 0x68, 0x3d,
+ 0x00, 0x00, 0x00, 0xf0, 0x02, 0xfe, 0x04, 0x98,
+ 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, 0x02, 0xd2,
+ 0x01, 0x20, 0xe8, 0x63, 0x53, 0xe0, 0xef, 0x63,
+ 0x51, 0xe0, 0x87, 0x4a, 0xb5, 0x7a, 0x80, 0x3a,
+ 0x00, 0x2d, 0x4c, 0xd0, 0x0d, 0xf0, 0x71, 0xff,
+ 0x00, 0xf0, 0xad, 0xfd, 0x07, 0x1c, 0x82, 0x48,
+ 0x80, 0x38, 0x40, 0x6f, 0xff, 0x30, 0x5f, 0x30,
+ 0x0e, 0xf0, 0x3d, 0xff, 0x02, 0x1c, 0x3c, 0x00,
+ 0xa4, 0x3d, 0x00, 0x00, 0x7e, 0x48, 0x80, 0x38,
+ 0x40, 0x6d, 0x00, 0x28, 0x1a, 0xd1, 0x00, 0xf0,
+ 0xf1, 0xfd, 0x00, 0x28, 0x16, 0xd1, 0x04, 0x2d,
+ 0x02, 0xd1, 0x00, 0x2f, 0x12, 0xd1, 0x1b, 0xe0,
+ 0x00, 0x2f, 0x06, 0xd0, 0x02, 0x2d, 0x14, 0xd0,
+ 0x79, 0x48, 0x40, 0x68, 0x00, 0x28, 0x09, 0xd0,
+ 0x12, 0xe0, 0x00, 0x2a, 0x10, 0xd1, 0x4b, 0x21,
+ 0xc9, 0x00, 0x01, 0x23, 0x09, 0x22, 0x16, 0x20,
+ 0x3c, 0x00, 0xe0, 0x3d, 0x00, 0x00, 0x0f, 0xf0,
+ 0xd6, 0xfc, 0x6e, 0x4a, 0x73, 0x48, 0x80, 0x3a,
+ 0x11, 0x68, 0x0b, 0xf0, 0xd8, 0xfa, 0x18, 0xe0,
+ 0x01, 0x21, 0x00, 0x20, 0x01, 0xe0, 0x01, 0x21,
+ 0x01, 0x20, 0x00, 0xf0, 0x2a, 0xfe, 0x10, 0xe0,
+ 0x67, 0x4a, 0x6c, 0x49, 0x80, 0x3a, 0x90, 0x6e,
+ 0x40, 0x18, 0x90, 0x66, 0x01, 0x25, 0x08, 0x95,
+ 0x8b, 0xe1, 0x04, 0x21, 0x6c, 0xe1, 0x61, 0x4a,
+ 0x66, 0x48, 0x3c, 0x00, 0x1c, 0x3e, 0x00, 0x00,
+ 0x80, 0x3a, 0x11, 0x68, 0x0b, 0xf0, 0xaa, 0xfa,
+ 0x88, 0xe1, 0xaf, 0x60, 0xa8, 0x6f, 0xe8, 0x67,
+ 0x63, 0x48, 0x01, 0x6d, 0xa9, 0x67, 0x07, 0x9a,
+ 0x14, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x08, 0x18, 0x12, 0x30, 0xa8, 0x66, 0x70, 0x78,
+ 0xb0, 0x70, 0x30, 0x78, 0x70, 0x70, 0x02, 0x20,
+ 0x30, 0x70, 0xa0, 0x69, 0xfc, 0xf7, 0xc2, 0xfa,
+ 0xef, 0x64, 0xa8, 0x6f, 0x3c, 0x00, 0x58, 0x3e,
+ 0x00, 0x00, 0xe9, 0x6f, 0x59, 0x4b, 0x40, 0x1a,
+ 0x98, 0x42, 0x12, 0xd2, 0x68, 0x6d, 0x06, 0x99,
+ 0x88, 0x42, 0x0e, 0xd0, 0x30, 0x78, 0x02, 0x28,
+ 0x0b, 0xd8, 0x0e, 0xf0, 0x9c, 0xff, 0xa9, 0x6f,
+ 0x08, 0x22, 0x40, 0x1a, 0x52, 0x49, 0x09, 0x1a,
+ 0x3b, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x85, 0xfc,
+ 0x00, 0xe0, 0xaf, 0x65, 0x01, 0x20, 0x05, 0x90,
+ 0x08, 0x90, 0x43, 0x48, 0x02, 0x25, 0x3c, 0x00,
+ 0x94, 0x3e, 0x00, 0x00, 0xc4, 0x38, 0xc1, 0x68,
+ 0x00, 0x29, 0x72, 0xd1, 0x01, 0x21, 0xc1, 0x60,
+ 0x49, 0x48, 0x00, 0x6b, 0x00, 0x28, 0x6c, 0xd0,
+ 0x08, 0xf0, 0x66, 0xfc, 0x69, 0xe0, 0x3c, 0x48,
+ 0x00, 0x22, 0x01, 0x92, 0x80, 0x38, 0x80, 0x68,
+ 0x01, 0x28, 0x04, 0xd1, 0x38, 0x48, 0x80, 0x38,
+ 0x87, 0x60, 0x01, 0x20, 0x48, 0xe1, 0x3a, 0x48,
+ 0x01, 0x23, 0x43, 0x60, 0x34, 0x48, 0xc4, 0x38,
+ 0x3c, 0x00, 0xd0, 0x3e, 0x00, 0x00, 0x00, 0x78,
+ 0x00, 0x28, 0x0a, 0xd1, 0x00, 0xf0, 0x25, 0xfe,
+ 0x00, 0x28, 0x06, 0xd0, 0xff, 0x21, 0x91, 0x31,
+ 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, 0x0f, 0xf0,
+ 0x52, 0xfc, 0x2c, 0x49, 0x80, 0x39, 0x48, 0x6f,
+ 0x89, 0x6f, 0x42, 0x1a, 0x03, 0x92, 0x06, 0xf0,
+ 0x76, 0xf9, 0x28, 0x49, 0x80, 0x39, 0x89, 0x6f,
+ 0x03, 0x9a, 0x40, 0x1a, 0x02, 0x90, 0x37, 0x20,
+ 0x00, 0x01, 0x3c, 0x00, 0x0c, 0x3f, 0x00, 0x00,
+ 0x10, 0x1a, 0x50, 0x28, 0x0d, 0xd2, 0x23, 0x48,
+ 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x04, 0xd1,
+ 0x02, 0x98, 0xff, 0x38, 0x55, 0x38, 0x14, 0x28,
+ 0x01, 0xd2, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22,
+ 0x01, 0x92, 0x03, 0x9a, 0x01, 0x20, 0xff, 0x3a,
+ 0x0b, 0x3a, 0x50, 0x2a, 0x00, 0xd3, 0x00, 0x20,
+ 0x04, 0x90, 0x00, 0x28, 0x0a, 0xd0, 0x17, 0x48,
+ 0x80, 0x38, 0xc0, 0x6f, 0x3c, 0x00, 0x48, 0x3f,
+ 0x00, 0x00, 0x08, 0x1a, 0x9b, 0x21, 0xc9, 0x00,
+ 0x40, 0x1a, 0x14, 0x28, 0x01, 0xd2, 0x01, 0x22,
+ 0x00, 0xe0, 0x00, 0x22, 0x00, 0x92, 0x00, 0x2a,
+ 0x11, 0xd0, 0x0f, 0x4d, 0x01, 0x20, 0x80, 0x3d,
+ 0x68, 0x65, 0x0e, 0xf0, 0x20, 0xff, 0x68, 0x66,
+ 0x01, 0x25, 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0,
+ 0x5e, 0xfb, 0x00, 0x21, 0x16, 0x20, 0x0f, 0xf0,
+ 0x5a, 0xfb, 0x00, 0xe0, 0xba, 0xe0, 0x3c, 0x00,
+ 0x84, 0x3f, 0x00, 0x00, 0xf0, 0x79, 0x02, 0x28,
+ 0x3c, 0xd8, 0x05, 0x4a, 0x80, 0x3a, 0x51, 0x6c,
+ 0x00, 0x29, 0x37, 0xd1, 0x13, 0x6c, 0x11, 0x1c,
+ 0x00, 0x2b, 0x33, 0xd1, 0x16, 0xe0, 0x00, 0x00,
+ 0x24, 0x6d, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00,
+ 0xc0, 0x5c, 0x15, 0x00, 0x70, 0x99, 0x14, 0x00,
+ 0xb0, 0x57, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xe2, 0x04, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00,
+ 0x3c, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x53, 0x07,
+ 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0xc8, 0x57,
+ 0x01, 0x00, 0x4a, 0x6d, 0x00, 0x2a, 0x02, 0xd0,
+ 0xb2, 0x7a, 0x02, 0x2a, 0x15, 0xd1, 0x00, 0x9a,
+ 0x00, 0x2a, 0x03, 0xd0, 0xca, 0x6d, 0x01, 0x32,
+ 0xca, 0x65, 0x00, 0xe0, 0xcf, 0x65, 0x01, 0x9a,
+ 0x00, 0x2a, 0x0b, 0xd0, 0x8a, 0x6f, 0xcb, 0x6f,
+ 0xd2, 0x1a, 0x5a, 0x4b, 0x9a, 0x42, 0x02, 0xd2,
+ 0x8a, 0x6d, 0x3c, 0x00, 0xfc, 0x3f, 0x00, 0x00,
+ 0x01, 0x32, 0x00, 0xe0, 0x01, 0x22, 0x8a, 0x65,
+ 0x00, 0xe0, 0x8f, 0x65, 0x04, 0x99, 0x00, 0x29,
+ 0x01, 0xd1, 0x02, 0x28, 0x0b, 0xd9, 0x54, 0x4a,
+ 0x02, 0x28, 0x1e, 0xd9, 0xd0, 0x6f, 0x61, 0x68,
+ 0x88, 0x42, 0x1a, 0xd1, 0x91, 0x6f, 0x08, 0x1a,
+ 0x50, 0x49, 0x88, 0x42, 0x15, 0xdd, 0x4e, 0x4b,
+ 0x98, 0x6f, 0xe1, 0x68, 0x40, 0x1a, 0x7d, 0x21,
+ 0xc9, 0x00, 0x88, 0x42, 0x3c, 0x00, 0x38, 0x40,
+ 0x00, 0x00, 0x0b, 0xdd, 0x61, 0x69, 0x40, 0x1a,
+ 0x00, 0x28, 0x04, 0xdd, 0x02, 0x11, 0x40, 0x11,
+ 0x10, 0x18, 0x40, 0x18, 0x01, 0xe0, 0x80, 0x10,
+ 0x08, 0x18, 0x60, 0x61, 0x58, 0x6f, 0xe0, 0x60,
+ 0x03, 0x98, 0xff, 0x38, 0x23, 0x38, 0x14, 0x28,
+ 0x09, 0xd2, 0x02, 0x98, 0xff, 0x38, 0x23, 0x38,
+ 0x14, 0x28, 0x04, 0xd2, 0x3e, 0x4a, 0x90, 0x6f,
+ 0x50, 0x64, 0x90, 0x6a, 0x90, 0x64, 0x3c, 0x00,
+ 0x74, 0x40, 0x00, 0x00, 0x0e, 0xf0, 0x9a, 0xfe,
+ 0x3a, 0x49, 0x49, 0x6c, 0x40, 0x1a, 0x3b, 0x49,
+ 0x88, 0x42, 0x01, 0xd9, 0x37, 0x49, 0x4f, 0x64,
+ 0x39, 0x49, 0x03, 0x98, 0x40, 0x18, 0x14, 0x28,
+ 0x07, 0xd2, 0x34, 0x49, 0xc8, 0x6b, 0x00, 0x28,
+ 0x03, 0xd0, 0x88, 0x6f, 0x08, 0x64, 0x88, 0x6a,
+ 0x88, 0x64, 0x0e, 0xf0, 0x83, 0xfe, 0x2f, 0x49,
+ 0x09, 0x6c, 0x40, 0x1a, 0x31, 0x49, 0x88, 0x42,
+ 0x3c, 0x00, 0xb0, 0x40, 0x00, 0x00, 0x01, 0xd9,
+ 0x2c, 0x48, 0x07, 0x64, 0x04, 0x20, 0x05, 0x90,
+ 0x08, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0xb9, 0xfa,
+ 0x28, 0x48, 0x40, 0x6d, 0x00, 0x28, 0x02, 0xd0,
+ 0x04, 0x99, 0x00, 0x29, 0x08, 0xd0, 0x29, 0x49,
+ 0x00, 0x28, 0x00, 0xd1, 0x29, 0x49, 0x3b, 0x1c,
+ 0x06, 0x22, 0x16, 0x20, 0x0f, 0xf0, 0x57, 0xfb,
+ 0x02, 0x2d, 0x09, 0xd0, 0x06, 0x2d, 0x0a, 0xd0,
+ 0x07, 0x2d, 0x3c, 0x00, 0xec, 0x40, 0x00, 0x00,
+ 0x13, 0xd1, 0x07, 0xe0, 0x01, 0x21, 0x16, 0x20,
+ 0xfd, 0xf7, 0xd6, 0xf8, 0x1e, 0xe0, 0x1a, 0x4a,
+ 0x57, 0x63, 0x97, 0x63, 0x18, 0x4a, 0x06, 0x98,
+ 0xd0, 0x62, 0x07, 0x99, 0x11, 0x63, 0x53, 0x6b,
+ 0x18, 0x43, 0x50, 0x63, 0x90, 0x6b, 0x08, 0x43,
+ 0x90, 0x63, 0x05, 0x98, 0x00, 0x28, 0x05, 0xd0,
+ 0x05, 0x98, 0x0c, 0xf0, 0x5f, 0xfa, 0x05, 0x98,
+ 0x0c, 0xf0, 0xd2, 0xf9, 0x3c, 0x00, 0x28, 0x41,
+ 0x00, 0x00, 0x08, 0x2d, 0x05, 0xd0, 0x0d, 0x48,
+ 0x44, 0x38, 0x85, 0x70, 0x28, 0x1c, 0x03, 0xf0,
+ 0xdc, 0xfd, 0x11, 0x49, 0xe0, 0x69, 0x88, 0x42,
+ 0x00, 0xd1, 0x61, 0xe5, 0x08, 0x98, 0x00, 0x28,
+ 0xfb, 0xd0, 0xb0, 0x7a, 0x02, 0x28, 0xf8, 0xd1,
+ 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0x6f, 0xfa,
+ 0x02, 0x20, 0x0d, 0xf0, 0xe8, 0xfe, 0x53, 0xe5,
+ 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x3c, 0x00,
+ 0x64, 0x41, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x20, 0xa1, 0x07, 0x00, 0x20, 0x4e, 0x00, 0x00,
+ 0x3f, 0xfb, 0xff, 0xff, 0xa0, 0x86, 0x01, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0xc0, 0x5c, 0x15, 0x00,
+ 0xf1, 0x1d, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x21, 0x48,
+ 0x00, 0x68, 0x21, 0x4d, 0x69, 0x69, 0x08, 0x40,
+ 0x01, 0xd1, 0x01, 0x27, 0x00, 0xe0, 0x00, 0x27,
+ 0x3c, 0x00, 0xa0, 0x41, 0x00, 0x00, 0x1d, 0x4d,
+ 0x01, 0x26, 0x69, 0x6a, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x26, 0x1b, 0x4d, 0x1a, 0x48, 0x2c, 0x1c,
+ 0xa0, 0x30, 0x02, 0x7a, 0x28, 0x1c, 0x40, 0x30,
+ 0x80, 0x34, 0x10, 0x23, 0xb7, 0x42, 0x10, 0xd1,
+ 0x01, 0x25, 0xc5, 0x80, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x23, 0x1a, 0x43, 0x11, 0x1c, 0x01, 0x73,
+ 0x01, 0x20, 0x0e, 0xf0, 0x88, 0xfe, 0x08, 0x20,
+ 0x20, 0x70, 0x3c, 0x00, 0xdc, 0x41, 0x00, 0x00,
+ 0x00, 0x22, 0x16, 0x21, 0x80, 0x20, 0x13, 0xe0,
+ 0x11, 0x27, 0xc7, 0x80, 0x2e, 0x1c, 0x0b, 0x4d,
+ 0x00, 0x29, 0x00, 0xd1, 0x00, 0x23, 0x1a, 0x43,
+ 0x11, 0x1c, 0x01, 0x73, 0x01, 0x20, 0x0e, 0xf0,
+ 0x75, 0xfe, 0x08, 0x20, 0x20, 0x70, 0x30, 0x6d,
+ 0x00, 0x22, 0x16, 0x21, 0x68, 0x67, 0x82, 0x20,
+ 0x0f, 0xf0, 0xd0, 0xfa, 0xf8, 0xbd, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x18, 0x42,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x00, 0x90,
+ 0x07, 0x00, 0xb0, 0xb5, 0x0f, 0x4d, 0x04, 0x1c,
+ 0xaa, 0x7a, 0x01, 0x21, 0x08, 0x1c, 0x00, 0x2a,
+ 0x00, 0xd0, 0x00, 0x20, 0x00, 0x2c, 0x00, 0xd0,
+ 0x00, 0x21, 0x88, 0x42, 0x0a, 0xd0, 0x00, 0x2c,
+ 0x04, 0xd1, 0x00, 0xf0, 0x42, 0xfb, 0x00, 0xf0,
+ 0xd6, 0xfa, 0x03, 0xe0, 0x00, 0xf0, 0xd9, 0xfa,
+ 0x00, 0xf0, 0x09, 0xf8, 0xa8, 0x7a, 0x3c, 0x00,
+ 0x54, 0x42, 0x00, 0x00, 0x02, 0x49, 0xe4, 0x39,
+ 0x48, 0x71, 0xac, 0x72, 0xb0, 0xbd, 0x00, 0x00,
+ 0x44, 0x6d, 0x01, 0x00, 0x80, 0xb5, 0x3e, 0xf0,
+ 0x55, 0xf8, 0x02, 0x49, 0x01, 0x20, 0x08, 0x70,
+ 0x80, 0xbd, 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00,
+ 0xf3, 0xb5, 0x01, 0x20, 0x8d, 0xb0, 0x0f, 0x1c,
+ 0x01, 0x24, 0x08, 0x90, 0x0e, 0xf0, 0x92, 0xfd,
+ 0x06, 0x1c, 0x00, 0xf0, 0xb5, 0xfa, 0x09, 0x90,
+ 0x3c, 0x00, 0x90, 0x42, 0x00, 0x00, 0x00, 0xf0,
+ 0x80, 0xfb, 0x07, 0x90, 0xfe, 0xf7, 0x3f, 0xfa,
+ 0x05, 0x1c, 0x00, 0x21, 0x0c, 0x91, 0x08, 0xf0,
+ 0xf0, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x0a, 0x90, 0xfe, 0xf7,
+ 0x12, 0xfd, 0x05, 0xf0, 0xe0, 0xfe, 0x0b, 0x90,
+ 0x00, 0x2d, 0x23, 0xd0, 0x28, 0x88, 0x41, 0x07,
+ 0x20, 0xd4, 0x29, 0x1d, 0x04, 0x91, 0x0a, 0x35,
+ 0x00, 0x06, 0x3c, 0x00, 0xcc, 0x42, 0x00, 0x00,
+ 0x80, 0x0e, 0x01, 0x21, 0x20, 0x28, 0x03, 0x95,
+ 0x00, 0xd0, 0x00, 0x21, 0x0d, 0x1c, 0x04, 0x98,
+ 0x06, 0xf0, 0x38, 0xfd, 0x0c, 0x90, 0x04, 0x98,
+ 0x06, 0xf0, 0x10, 0xfd, 0x00, 0x28, 0x08, 0xd0,
+ 0x03, 0x98, 0x01, 0xf0, 0x87, 0xfa, 0x00, 0x28,
+ 0x03, 0xd0, 0x00, 0x2d, 0x01, 0xd1, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x0c, 0x99, 0x01, 0x43,
+ 0x0c, 0x91, 0xfc, 0xf7, 0x3c, 0x00, 0x08, 0x43,
+ 0x00, 0x00, 0x23, 0xff, 0x00, 0x28, 0x2f, 0xd0,
+ 0x07, 0xf0, 0x99, 0xff, 0x05, 0x1c, 0x07, 0xf0,
+ 0xb2, 0xff, 0x04, 0x90, 0xff, 0xf7, 0xf3, 0xf8,
+ 0x0c, 0x99, 0x01, 0x43, 0x00, 0x2d, 0x06, 0xd0,
+ 0x04, 0x98, 0xf0, 0x4a, 0x30, 0x1a, 0x90, 0x42,
+ 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0x08, 0x43, 0x0c, 0x90, 0x0b, 0x98, 0x0a, 0x9b,
+ 0x18, 0x43, 0x01, 0x1c, 0x0b, 0x91, 0x3c, 0x00,
+ 0x44, 0x43, 0x00, 0x00, 0x05, 0xf0, 0xce, 0xfe,
+ 0x00, 0x28, 0x1a, 0xd1, 0x00, 0x2d, 0x06, 0xd0,
+ 0x04, 0x98, 0xe7, 0x49, 0x30, 0x1a, 0x88, 0x42,
+ 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0x0c, 0x99, 0x08, 0x43, 0x05, 0x1c, 0x00, 0xf0,
+ 0x1f, 0xfb, 0x28, 0x43, 0x03, 0xe0, 0x00, 0xf0,
+ 0x1b, 0xfb, 0x0c, 0x99, 0x08, 0x43, 0x0c, 0x90,
+ 0x00, 0xf0, 0xd4, 0xfb, 0x0b, 0x99, 0x01, 0x43,
+ 0x3c, 0x00, 0x80, 0x43, 0x00, 0x00, 0x0b, 0x91,
+ 0xdc, 0x49, 0xc8, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0x01, 0x38, 0xc8, 0x60, 0x08, 0xf0, 0xe7, 0xfb,
+ 0x06, 0x90, 0x08, 0xf0, 0x90, 0xfd, 0x31, 0x1a,
+ 0x05, 0x91, 0x06, 0x99, 0xd6, 0x48, 0x81, 0x42,
+ 0x08, 0xd8, 0x00, 0x2f, 0x08, 0xd1, 0x05, 0x99,
+ 0x40, 0x08, 0x81, 0x42, 0x04, 0xd9, 0x06, 0x99,
+ 0x81, 0x42, 0x01, 0xd9, 0x00, 0x24, 0x8b, 0xe0,
+ 0xd0, 0x48, 0x3c, 0x00, 0xbc, 0x43, 0x00, 0x00,
+ 0x05, 0x99, 0xd0, 0x4d, 0x81, 0x42, 0x26, 0xd2,
+ 0xe8, 0x79, 0x10, 0x28, 0x06, 0xd2, 0x00, 0x2f,
+ 0x21, 0xd1, 0xcc, 0x48, 0xa0, 0x38, 0x80, 0x6a,
+ 0x00, 0x28, 0x1c, 0xd1, 0x09, 0xf0, 0x62, 0xff,
+ 0x04, 0x90, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x20,
+ 0xc3, 0x49, 0x13, 0xe0, 0x09, 0xf0, 0x10, 0xfe,
+ 0x00, 0x28, 0x03, 0xd0, 0xc4, 0x48, 0xc0, 0x69,
+ 0x00, 0x28, 0xf4, 0xd0, 0x3c, 0x00, 0xf8, 0x43,
+ 0x00, 0x00, 0x04, 0x98, 0x05, 0x28, 0x03, 0xd0,
+ 0xc1, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x65, 0xd1,
+ 0xbb, 0x49, 0x48, 0x6a, 0x00, 0x28, 0x23, 0xd0,
+ 0x01, 0x38, 0x48, 0x62, 0x00, 0xf0, 0x87, 0xff,
+ 0x00, 0x28, 0x11, 0xd0, 0xbb, 0x48, 0x05, 0x99,
+ 0x81, 0x42, 0x0d, 0xd2, 0x01, 0xf0, 0x9b, 0xf8,
+ 0x04, 0x30, 0x0d, 0xf0, 0xee, 0xfc, 0x40, 0x30,
+ 0xc1, 0x7a, 0x01, 0x29, 0x4e, 0xd0, 0x3c, 0x00,
+ 0x34, 0x44, 0x00, 0x00, 0x80, 0x7a, 0x00, 0x28,
+ 0x01, 0xd0, 0x05, 0x28, 0x49, 0xd3, 0x01, 0xf0,
+ 0xdf, 0xf8, 0x02, 0x28, 0x10, 0xd0, 0x00, 0x2f,
+ 0x02, 0xd1, 0x06, 0x98, 0x00, 0x28, 0x40, 0xd1,
+ 0x00, 0x20, 0x08, 0x90, 0x82, 0xe1, 0xaa, 0x48,
+ 0xa0, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x38, 0xd0,
+ 0xa8, 0x48, 0x80, 0x69, 0x48, 0x62, 0x34, 0xe0,
+ 0x0a, 0xa9, 0x03, 0xc9, 0x08, 0x43, 0x45, 0xd0,
+ 0x3c, 0x00, 0x70, 0x44, 0x00, 0x00, 0xa3, 0x48,
+ 0x29, 0x78, 0xa0, 0x38, 0x02, 0x29, 0x40, 0xd8,
+ 0x40, 0x6d, 0x00, 0x28, 0x0a, 0xd0, 0x9f, 0x48,
+ 0xa2, 0x49, 0x20, 0x38, 0xc0, 0x68, 0x40, 0x18,
+ 0x0e, 0xf0, 0xc7, 0xfb, 0x00, 0x28, 0x01, 0xd0,
+ 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x96, 0x4a,
+ 0x90, 0x6a, 0x00, 0x28, 0x02, 0xda, 0x64, 0x08,
+ 0x64, 0x00, 0x2a, 0xe0, 0x00, 0x29, 0x09, 0xd1,
+ 0x95, 0x4b, 0x3c, 0x00, 0xac, 0x44, 0x00, 0x00,
+ 0xa0, 0x3b, 0x5b, 0x6d, 0x00, 0x2b, 0x02, 0xd0,
+ 0x05, 0x28, 0x0d, 0xdb, 0x01, 0xe0, 0x07, 0x28,
+ 0x0a, 0xdb, 0x01, 0x20, 0xc0, 0x43, 0x90, 0x62,
+ 0x64, 0x08, 0x8e, 0x49, 0x64, 0x00, 0x00, 0x20,
+ 0xa0, 0x39, 0x88, 0x65, 0x14, 0xe0, 0xd1, 0xe0,
+ 0x39, 0x43, 0x11, 0xd1, 0x89, 0x49, 0xa0, 0x39,
+ 0xcb, 0x6d, 0x00, 0x2b, 0x02, 0xd1, 0x89, 0x6d,
+ 0x01, 0x29, 0x09, 0xd9, 0x3c, 0x00, 0xe8, 0x44,
+ 0x00, 0x00, 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1,
+ 0x07, 0x28, 0x01, 0xdb, 0x64, 0x08, 0x64, 0x00,
+ 0x01, 0x30, 0x90, 0x62, 0xbd, 0xe0, 0x7d, 0x49,
+ 0x88, 0x69, 0x04, 0x90, 0x00, 0x20, 0x88, 0x61,
+ 0x0c, 0x98, 0x00, 0x28, 0x2c, 0xd0, 0x07, 0xf0,
+ 0x66, 0xfc, 0x00, 0x28, 0x02, 0xd0, 0x02, 0x20,
+ 0x04, 0x43, 0x25, 0xe0, 0x7a, 0x48, 0xc0, 0x6a,
+ 0x00, 0x28, 0x04, 0xd1, 0x77, 0x48, 0x3c, 0x00,
+ 0x24, 0x45, 0x00, 0x00, 0xa0, 0x38, 0xc0, 0x68,
+ 0x00, 0x28, 0x1c, 0xd1, 0x04, 0x98, 0x00, 0x28,
+ 0x0d, 0xd1, 0x28, 0x78, 0x10, 0x28, 0x02, 0xd3,
+ 0xe8, 0x78, 0x02, 0x28, 0x02, 0xd9, 0x28, 0x79,
+ 0x10, 0x28, 0x04, 0xd3, 0x04, 0x24, 0x6b, 0x49,
+ 0x01, 0x22, 0x8a, 0x61, 0x94, 0xe0, 0x6c, 0x48,
+ 0xa0, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x71, 0xd0,
+ 0x05, 0xf0, 0xa2, 0xfd, 0x00, 0x28, 0x6d, 0xd0,
+ 0x3c, 0x00, 0x60, 0x45, 0x00, 0x00, 0x64, 0x08,
+ 0x64, 0x00, 0x88, 0xe0, 0xff, 0xf7, 0x5b, 0xfa,
+ 0x00, 0x28, 0x1a, 0xd0, 0x68, 0x48, 0x00, 0x78,
+ 0x02, 0x28, 0x01, 0xd1, 0x00, 0x2f, 0x14, 0xd1,
+ 0x00, 0x20, 0xfe, 0xf7, 0x70, 0xfe, 0x30, 0x1a,
+ 0x04, 0x90, 0xff, 0xf7, 0x6c, 0xfa, 0x00, 0x28,
+ 0x07, 0xd0, 0xff, 0xf7, 0x1e, 0xfa, 0x00, 0x28,
+ 0x03, 0xd0, 0x5d, 0x49, 0x04, 0x98, 0x88, 0x42,
+ 0x4f, 0xd3, 0x3c, 0x00, 0x9c, 0x45, 0x00, 0x00,
+ 0x05, 0xf0, 0x6c, 0xfd, 0x00, 0x28, 0x4b, 0xd1,
+ 0x53, 0x49, 0x08, 0x78, 0x03, 0x28, 0x08, 0xd1,
+ 0x88, 0x68, 0x01, 0x22, 0xd2, 0x07, 0x30, 0x1a,
+ 0x90, 0x42, 0x41, 0xd2, 0x01, 0x22, 0x0a, 0x70,
+ 0x57, 0xe0, 0x54, 0x48, 0x00, 0x78, 0x02, 0x28,
+ 0x01, 0xd1, 0x00, 0x2f, 0x51, 0xd1, 0x4a, 0x49,
+ 0x88, 0x68, 0x51, 0x49, 0x80, 0x1b, 0x88, 0x42,
+ 0x07, 0xd9, 0x01, 0x20, 0x3c, 0x00, 0xd8, 0x45,
+ 0x00, 0x00, 0xfe, 0xf7, 0x42, 0xfe, 0x7d, 0x21,
+ 0x09, 0x01, 0x40, 0x18, 0x44, 0x49, 0x88, 0x60,
+ 0x4a, 0x48, 0x00, 0x78, 0x02, 0x28, 0x04, 0xd1,
+ 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x47, 0x4b, 0x47, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x3c, 0x49, 0x89, 0x68,
+ 0x89, 0x1b, 0x88, 0x42, 0x30, 0xd9, 0x07, 0x9b,
+ 0x00, 0x20, 0x03, 0x93, 0x00, 0xf0, 0x3c, 0x00,
+ 0x14, 0x46, 0x00, 0x00, 0x79, 0xff, 0x02, 0x90,
+ 0xff, 0xf7, 0xd8, 0xf9, 0x04, 0x90, 0x01, 0xf0,
+ 0x57, 0xf8, 0x04, 0x99, 0x02, 0x9a, 0x51, 0x43,
+ 0x48, 0x43, 0x01, 0x90, 0x00, 0xf0, 0xdc, 0xff,
+ 0x41, 0x1c, 0x01, 0x98, 0x01, 0x22, 0x48, 0x43,
+ 0x11, 0x1c, 0x00, 0xe0, 0x1b, 0xe0, 0x31, 0x4b,
+ 0x5b, 0x6a, 0x83, 0x42, 0x00, 0xd3, 0x00, 0x21,
+ 0x03, 0x9b, 0x01, 0x22, 0x00, 0x2b, 0x00, 0xd0,
+ 0x3c, 0x00, 0x50, 0x46, 0x00, 0x00, 0x00, 0x22,
+ 0x2c, 0x4b, 0x51, 0x43, 0x9b, 0x6a, 0x01, 0x22,
+ 0x83, 0x42, 0x00, 0xd3, 0x00, 0x22, 0x50, 0x00,
+ 0x08, 0x18, 0x03, 0xd0, 0x23, 0x49, 0x03, 0x20,
+ 0x08, 0x70, 0x03, 0xe0, 0x09, 0x98, 0xc0, 0x68,
+ 0x06, 0x28, 0x08, 0xd9, 0x02, 0x24, 0x08, 0x98,
+ 0x00, 0x28, 0x6e, 0xd0, 0x1d, 0x49, 0x00, 0x20,
+ 0xc8, 0x61, 0x48, 0x61, 0xa5, 0xe0, 0x1a, 0x49,
+ 0x48, 0x69, 0x3c, 0x00, 0x8c, 0x46, 0x00, 0x00,
+ 0x00, 0x28, 0x0a, 0xd1, 0x00, 0x2f, 0x05, 0xd0,
+ 0x01, 0x22, 0x4a, 0x61, 0xc8, 0x69, 0x80, 0x18,
+ 0xc8, 0x61, 0x0a, 0xe0, 0x00, 0x20, 0xc8, 0x61,
+ 0x03, 0xe0, 0x00, 0x2f, 0x05, 0xd1, 0x00, 0x20,
+ 0x48, 0x61, 0x0d, 0x98, 0x00, 0x28, 0x00, 0xd1,
+ 0xc8, 0x68, 0x00, 0x20, 0x08, 0x90, 0x08, 0x78,
+ 0x01, 0x28, 0x2f, 0xd0, 0x02, 0x28, 0x4b, 0xd1,
+ 0x00, 0x2f, 0x08, 0xd1, 0x3c, 0x00, 0xc8, 0x46,
+ 0x00, 0x00, 0xe8, 0x78, 0x00, 0x28, 0x02, 0xd1,
+ 0x28, 0x78, 0x10, 0x28, 0x43, 0xd2, 0x28, 0x79,
+ 0x10, 0x28, 0x40, 0xd2, 0x48, 0x68, 0x0a, 0x69,
+ 0x30, 0x1a, 0x90, 0x42, 0x67, 0xd3, 0x01, 0x22,
+ 0x0a, 0x70, 0x38, 0xe0, 0x00, 0x00, 0xe2, 0x04,
+ 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0x7e,
+ 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x88, 0x13,
+ 0x00, 0x00, 0x44, 0x6d, 0x01, 0x00, 0x3c, 0x00,
+ 0x04, 0x47, 0x00, 0x00, 0xc8, 0x57, 0x01, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0x98, 0x3a, 0x00, 0x00,
+ 0xc0, 0x57, 0x01, 0x00, 0x40, 0x0d, 0x03, 0x00,
+ 0xc4, 0x09, 0x00, 0x00, 0xb2, 0x0c, 0x00, 0x00,
+ 0x00, 0x20, 0x0b, 0x9a, 0x0a, 0x9b, 0xc0, 0x43,
+ 0x1a, 0x43, 0x37, 0xd0, 0x00, 0x2f, 0x35, 0xd1,
+ 0x07, 0x9b, 0x00, 0x2b, 0x08, 0xd0, 0x6a, 0x78,
+ 0x02, 0x2a, 0x2f, 0xd9, 0x2a, 0x78, 0x10, 0x2a,
+ 0x3c, 0x00, 0x40, 0x47, 0x00, 0x00, 0x2c, 0xd2,
+ 0x2a, 0x79, 0x10, 0x2a, 0x29, 0xd2, 0x25, 0x4b,
+ 0x1a, 0x6c, 0x00, 0x2a, 0x06, 0xd0, 0x9a, 0x6a,
+ 0x9f, 0x6c, 0xba, 0x42, 0x02, 0xd1, 0x1f, 0x20,
+ 0x1f, 0xe0, 0x2e, 0xe0, 0x20, 0x4b, 0x5a, 0x6c,
+ 0x00, 0x2a, 0x03, 0xd0, 0x1f, 0x4f, 0xb3, 0x1a,
+ 0xbb, 0x42, 0x16, 0xd3, 0x1c, 0x4b, 0x00, 0x2a,
+ 0x05, 0xd0, 0x9a, 0x6a, 0x9f, 0x6c, 0xba, 0x42,
+ 0x01, 0xd1, 0x3c, 0x00, 0x7c, 0x47, 0x00, 0x00,
+ 0x0f, 0x20, 0x0d, 0xe0, 0x07, 0x9a, 0x00, 0x2a,
+ 0x04, 0xd0, 0xea, 0x79, 0x20, 0x2a, 0x01, 0xd1,
+ 0x00, 0x20, 0x05, 0xe0, 0xea, 0x79, 0x10, 0x2a,
+ 0x01, 0xd3, 0x03, 0x20, 0x00, 0xe0, 0x9a, 0x6a,
+ 0x12, 0x4a, 0x12, 0x68, 0x02, 0x40, 0x0b, 0xd1,
+ 0x01, 0x20, 0x08, 0x90, 0x02, 0x20, 0x08, 0x70,
+ 0x0f, 0x48, 0x08, 0x61, 0x4e, 0x60, 0x64, 0xe7,
+ 0xff, 0xe7, 0x01, 0x20, 0x3c, 0x00, 0xb8, 0x47,
+ 0x00, 0x00, 0x08, 0x90, 0x60, 0xe7, 0x0c, 0x49,
+ 0x88, 0x6a, 0x00, 0x28, 0x01, 0xda, 0x01, 0x30,
+ 0x02, 0xe0, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20,
+ 0x88, 0x62, 0x00, 0x20, 0x08, 0x62, 0x08, 0x99,
+ 0x20, 0x04, 0x08, 0x43, 0x0f, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x71, 0x02,
+ 0x00, 0x00, 0x08, 0x20, 0x07, 0x00, 0x53, 0x07,
+ 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, 0x3c, 0x00,
+ 0xf4, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x00, 0x48, 0x70, 0x47, 0x50, 0x7e, 0x01, 0x00,
+ 0x80, 0xb5, 0x3d, 0xf0, 0x7f, 0xfd, 0x02, 0x49,
+ 0x01, 0x20, 0x08, 0x70, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c,
+ 0x0e, 0xf0, 0xc8, 0xfa, 0x26, 0x49, 0x04, 0x1c,
+ 0x88, 0x6a, 0x26, 0x4e, 0x00, 0x28, 0x01, 0xd0,
+ 0x04, 0x20, 0x03, 0xe0, 0x70, 0x6a, 0x00, 0x28,
+ 0x3c, 0x00, 0x30, 0x48, 0x00, 0x00, 0x01, 0xd0,
+ 0x01, 0x38, 0x70, 0x62, 0x00, 0x27, 0x00, 0x2d,
+ 0x02, 0xd0, 0xb7, 0x61, 0xf7, 0x61, 0x0a, 0xe0,
+ 0xb0, 0x69, 0x1c, 0x49, 0x01, 0x30, 0xb0, 0x61,
+ 0x49, 0x6d, 0x00, 0x29, 0x03, 0xd0, 0x03, 0x28,
+ 0x01, 0xd9, 0x01, 0x20, 0xf0, 0x61, 0xb4, 0x60,
+ 0xf1, 0x68, 0x00, 0x91, 0x08, 0xf0, 0xf7, 0xfc,
+ 0xf0, 0x60, 0x00, 0x99, 0x88, 0x42, 0x02, 0xd0,
+ 0x30, 0x62, 0x3c, 0x00, 0x6c, 0x48, 0x00, 0x00,
+ 0x34, 0x61, 0x0b, 0xe0, 0x00, 0xf0, 0x90, 0xf8,
+ 0x00, 0x28, 0x01, 0xd0, 0x11, 0x48, 0x00, 0xe0,
+ 0x11, 0x48, 0x31, 0x69, 0x61, 0x1a, 0x81, 0x42,
+ 0x00, 0xd9, 0x37, 0x62, 0x0b, 0x4a, 0x0c, 0x48,
+ 0xd1, 0x6c, 0x20, 0x30, 0x00, 0x29, 0x01, 0xd0,
+ 0x0a, 0x21, 0x03, 0xe0, 0x01, 0x7a, 0x00, 0x29,
+ 0x01, 0xd0, 0xff, 0x31, 0x01, 0x72, 0x00, 0x2d,
+ 0x03, 0xd1, 0x01, 0x7a, 0x3c, 0x00, 0xa8, 0x48,
+ 0x00, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x91, 0x6a,
+ 0x00, 0x7a, 0x00, 0x28, 0x00, 0xd1, 0x17, 0x65,
+ 0xf8, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x3c, 0x7e,
+ 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, 0xa8, 0x61,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x49,
+ 0x80, 0xb5, 0x89, 0x68, 0x00, 0x29, 0x07, 0xd0,
+ 0x05, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x21,
+ 0x08, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x3c, 0x00,
+ 0xe4, 0x48, 0x00, 0x00, 0x05, 0xfa, 0x80, 0xbd,
+ 0x60, 0x6c, 0x01, 0x00, 0x07, 0x48, 0x00, 0x68,
+ 0x07, 0x49, 0x4a, 0x69, 0x10, 0x40, 0x01, 0xd0,
+ 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x49, 0x6a,
+ 0x88, 0x42, 0x01, 0xd1, 0x01, 0x20, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x10, 0x00, 0x07, 0x00,
+ 0xa4, 0x6c, 0x01, 0x00, 0x70, 0xb5, 0x0e, 0xf0,
+ 0x49, 0xfa, 0x02, 0x1c, 0x00, 0xf0, 0x3a, 0xf8,
+ 0x3c, 0x00, 0x20, 0x49, 0x00, 0x00, 0x10, 0x49,
+ 0x00, 0x28, 0x0e, 0xd0, 0x08, 0x1c, 0xa0, 0x31,
+ 0x0e, 0x78, 0x0e, 0x4b, 0x10, 0x2e, 0x01, 0xd3,
+ 0x80, 0x6f, 0x03, 0xe0, 0x49, 0x78, 0x10, 0x29,
+ 0x0e, 0xd3, 0xc0, 0x6f, 0xc0, 0x18, 0x84, 0x1a,
+ 0x0a, 0xe0, 0x08, 0x1c, 0x80, 0x30, 0x45, 0x69,
+ 0x08, 0x49, 0x8d, 0x42, 0x01, 0xd9, 0x0c, 0x1c,
+ 0x05, 0xe0, 0xc0, 0x68, 0x10, 0x1a, 0x2c, 0x1a,
+ 0x00, 0x2c, 0x3c, 0x00, 0x5c, 0x49, 0x00, 0x00,
+ 0x00, 0xda, 0x64, 0x19, 0x20, 0x1c, 0x70, 0xbd,
+ 0xa4, 0x6c, 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0x80, 0xb5, 0x05, 0xf0,
+ 0xb7, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x07, 0xf0,
+ 0x1f, 0xff, 0x80, 0xbd, 0x03, 0x48, 0x00, 0x78,
+ 0x00, 0x28, 0xfa, 0xd0, 0x07, 0xf0, 0x70, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00,
+ 0x03, 0x49, 0x01, 0x20, 0x3c, 0x00, 0x98, 0x49,
+ 0x00, 0x00, 0x49, 0x69, 0x03, 0x29, 0x00, 0xd8,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x60, 0x6c,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x00, 0x24,
+ 0x28, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x05, 0xf0,
+ 0x6a, 0xfb, 0x04, 0x06, 0x24, 0x0e, 0xfe, 0xf7,
+ 0xd2, 0xfc, 0x00, 0x02, 0x20, 0x43, 0x02, 0xd1,
+ 0x68, 0x6a, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20,
+ 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, 0x3c, 0x00,
+ 0xd4, 0x49, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00,
+ 0x01, 0x21, 0x01, 0x28, 0x00, 0xd0, 0x00, 0x21,
+ 0x01, 0x48, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00,
+ 0x60, 0x6c, 0x01, 0x00, 0x15, 0x48, 0x10, 0xb5,
+ 0x04, 0x68, 0x15, 0x48, 0x00, 0x6a, 0x00, 0x28,
+ 0x14, 0xd0, 0xff, 0xf7, 0xcb, 0xff, 0x00, 0x28,
+ 0x0e, 0xd1, 0x11, 0x48, 0x11, 0x49, 0xc4, 0x30,
+ 0x40, 0x69, 0x88, 0x42, 0x08, 0xd2, 0xcc, 0x08,
+ 0x3c, 0x00, 0x10, 0x4a, 0x00, 0x00, 0xa0, 0x42,
+ 0x05, 0xd3, 0xff, 0xf7, 0x7e, 0xff, 0xa0, 0x42,
+ 0x01, 0xda, 0x0c, 0x4c, 0x01, 0xe0, 0xff, 0x24,
+ 0x91, 0x34, 0x7d, 0x20, 0x00, 0x01, 0x84, 0x42,
+ 0x04, 0xd9, 0x00, 0x22, 0x16, 0x21, 0x83, 0x20,
+ 0x0e, 0xf0, 0xbd, 0xfe, 0x01, 0x23, 0x09, 0x22,
+ 0x21, 0x1c, 0x16, 0x20, 0x0e, 0xf0, 0xa7, 0xfe,
+ 0x10, 0xbd, 0xb0, 0x57, 0x01, 0x00, 0x60, 0x6c,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x4a, 0x00, 0x00,
+ 0xc0, 0x5d, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, 0x00, 0xf0,
+ 0x43, 0xf8, 0x00, 0x28, 0x0f, 0xd0, 0x08, 0x4c,
+ 0x20, 0x78, 0xc0, 0x07, 0x03, 0xd4, 0x05, 0xf0,
+ 0xab, 0xf9, 0x09, 0xf0, 0x31, 0xfe, 0x00, 0x2d,
+ 0x05, 0xd0, 0x20, 0x78, 0x80, 0x07, 0x02, 0xd4,
+ 0x30, 0x1c, 0x02, 0xf0, 0xfd, 0xfe, 0x70, 0xbd,
+ 0x60, 0x6c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x4a,
+ 0x00, 0x00, 0xb0, 0xb5, 0x00, 0x28, 0x18, 0xd0,
+ 0x11, 0x48, 0x81, 0x42, 0x15, 0xd2, 0x10, 0x48,
+ 0x0c, 0x1c, 0x0d, 0x18, 0x07, 0xf0, 0xdf, 0xfa,
+ 0x81, 0x00, 0x09, 0x18, 0xa1, 0x42, 0x01, 0xd2,
+ 0x40, 0x00, 0x03, 0xe0, 0x41, 0x00, 0x09, 0x18,
+ 0xa1, 0x42, 0x01, 0xd2, 0x24, 0x1a, 0x06, 0xe0,
+ 0x41, 0x00, 0xa1, 0x42, 0x03, 0xd2, 0x40, 0x08,
+ 0xf8, 0xe7, 0x06, 0x4d, 0x07, 0x4c, 0x3c, 0x00,
+ 0xc4, 0x4a, 0x00, 0x00, 0x0e, 0xf0, 0x72, 0xf9,
+ 0x00, 0x19, 0x29, 0x1c, 0x07, 0xf0, 0xdc, 0xfa,
+ 0xb0, 0xbd, 0x00, 0x00, 0x80, 0xb9, 0x2a, 0x00,
+ 0x53, 0x07, 0x00, 0x00, 0x4c, 0x1d, 0x00, 0x00,
+ 0x88, 0x13, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0xf0,
+ 0xfd, 0xfa, 0x00, 0x28, 0x13, 0xd1, 0xfe, 0xf7,
+ 0xb5, 0xfe, 0x0a, 0x4c, 0x0a, 0x4d, 0x00, 0x28,
+ 0x60, 0x63, 0x00, 0xd0, 0x28, 0x60, 0x0e, 0xf0,
+ 0x3c, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x55, 0xf9,
+ 0x21, 0x6a, 0x00, 0x29, 0x04, 0xd1, 0xe1, 0x69,
+ 0x40, 0x1a, 0x29, 0x68, 0x88, 0x42, 0x01, 0xd9,
+ 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd,
+ 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57,
+ 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xdd, 0xff,
+ 0x00, 0x28, 0x05, 0xd0, 0x05, 0xf0, 0xb7, 0xfa,
+ 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd,
+ 0x00, 0x20, 0x3c, 0x00, 0x3c, 0x4b, 0x00, 0x00,
+ 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c,
+ 0x00, 0x21, 0xa2, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0xa1, 0x60, 0x02, 0xf0, 0x83, 0xf9, 0x10, 0xbd,
+ 0x61, 0x60, 0x01, 0x1c, 0x00, 0x22, 0x04, 0x20,
+ 0x0e, 0xf0, 0x36, 0xfd, 0x03, 0x48, 0x21, 0x68,
+ 0x0a, 0xf0, 0x08, 0xfc, 0x10, 0xbd, 0x00, 0x00,
+ 0xbc, 0x74, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x78, 0x4b,
+ 0x00, 0x00, 0x01, 0xd1, 0xfc, 0xf7, 0xc1, 0xfb,
+ 0x20, 0x4c, 0xe0, 0x6a, 0x00, 0x28, 0x15, 0xd0,
+ 0x1f, 0x4b, 0xa0, 0x69, 0x58, 0x43, 0xc6, 0x0b,
+ 0x20, 0x88, 0x46, 0x43, 0xf0, 0x00, 0x80, 0x19,
+ 0xe6, 0x60, 0xfb, 0xf7, 0x1c, 0xfe, 0xa8, 0x42,
+ 0x05, 0xd8, 0x30, 0x1c, 0xfb, 0xf7, 0x17, 0xfe,
+ 0x80, 0x19, 0xa8, 0x42, 0x02, 0xd2, 0x00, 0x20,
+ 0xe0, 0x60, 0x20, 0xe0, 0xe5, 0x60, 0x3c, 0x00,
+ 0xb4, 0x4b, 0x00, 0x00, 0x00, 0x2d, 0x1d, 0xd0,
+ 0x26, 0x88, 0xa0, 0x69, 0x70, 0x43, 0xc1, 0x03,
+ 0x28, 0x1c, 0xfb, 0xf7, 0xa5, 0xfd, 0x60, 0x61,
+ 0x0d, 0x48, 0x32, 0x1c, 0x29, 0x1c, 0x30, 0x30,
+ 0xfb, 0xf7, 0x0a, 0xfc, 0x0c, 0x4b, 0x60, 0x69,
+ 0x58, 0x43, 0xc0, 0x0b, 0x60, 0x62, 0x01, 0xf0,
+ 0xb7, 0xfd, 0xa0, 0x62, 0xe0, 0x68, 0x00, 0x28,
+ 0x04, 0xd0, 0x20, 0x69, 0xa1, 0x68, 0xfb, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x4b, 0x00, 0x00, 0xf4, 0xfb,
+ 0x70, 0xbd, 0x05, 0x48, 0xa1, 0x68, 0xfb, 0xf7,
+ 0xef, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x74,
+ 0x01, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xc0, 0xc6,
+ 0x2d, 0x00, 0x88, 0x13, 0x00, 0x00, 0xf1, 0xb5,
+ 0x3e, 0x48, 0x00, 0xab, 0x81, 0x78, 0xc0, 0x78,
+ 0x3e, 0x4f, 0x0a, 0x07, 0x04, 0x07, 0x58, 0x78,
+ 0x3b, 0x49, 0x12, 0x0f, 0x08, 0x5c, 0x14, 0x39,
+ 0x24, 0x0f, 0x3c, 0x00, 0x2c, 0x4c, 0x00, 0x00,
+ 0x80, 0x18, 0x78, 0x60, 0x01, 0x30, 0xb8, 0x60,
+ 0x18, 0x78, 0x35, 0x4d, 0x08, 0x5c, 0x00, 0x19,
+ 0xb8, 0x61, 0x01, 0x30, 0xf8, 0x61, 0xeb, 0x78,
+ 0x33, 0x48, 0x1e, 0x09, 0x33, 0x4b, 0x18, 0x38,
+ 0x81, 0x78, 0x5e, 0x43, 0xab, 0x78, 0x1d, 0x09,
+ 0xc8, 0x23, 0x6b, 0x43, 0x00, 0x29, 0x08, 0xd1,
+ 0x2b, 0x4d, 0x2d, 0x78, 0x3d, 0x60, 0xc5, 0x60,
+ 0x7d, 0x25, 0xed, 0x00, 0x3c, 0x00, 0x68, 0x4c,
+ 0x00, 0x00, 0x5d, 0x1b, 0x2c, 0x4b, 0x07, 0xe0,
+ 0x27, 0x4d, 0x6d, 0x78, 0x3d, 0x60, 0xc5, 0x60,
+ 0x4b, 0x25, 0x2d, 0x01, 0x5d, 0x1b, 0x28, 0x4b,
+ 0xf6, 0x18, 0x02, 0x20, 0x00, 0xf0, 0x57, 0xf8,
+ 0x28, 0x1a, 0xf8, 0x60, 0x22, 0x48, 0x22, 0x1c,
+ 0x18, 0x38, 0x81, 0x78, 0x03, 0x20, 0x00, 0xf0,
+ 0x4e, 0xf8, 0x30, 0x1a, 0x38, 0x62, 0x39, 0x68,
+ 0x00, 0xab, 0x79, 0x61, 0x5a, 0x78, 0x3c, 0x00,
+ 0xa4, 0x4c, 0x00, 0x00, 0x56, 0x23, 0xf9, 0x68,
+ 0x5a, 0x43, 0x89, 0x1a, 0xf9, 0x60, 0xc8, 0x31,
+ 0x39, 0x61, 0x18, 0x49, 0x18, 0x39, 0x89, 0x78,
+ 0x00, 0x29, 0xb9, 0x69, 0x11, 0xd1, 0x00, 0xab,
+ 0x1a, 0x78, 0x13, 0x4b, 0x14, 0x3b, 0x9a, 0x5c,
+ 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, 0x59, 0x43,
+ 0x14, 0x4b, 0x59, 0x1a, 0x51, 0x43, 0x0a, 0x23,
+ 0x59, 0x43, 0x40, 0x1a, 0x38, 0x62, 0x12, 0x49,
+ 0x3c, 0x00, 0xe0, 0x4c, 0x00, 0x00, 0x10, 0xe0,
+ 0x00, 0xab, 0x1a, 0x78, 0x0a, 0x4b, 0x14, 0x3b,
+ 0x9a, 0x5c, 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23,
+ 0x59, 0x43, 0x0d, 0x4b, 0x59, 0x1a, 0x51, 0x43,
+ 0x0a, 0x23, 0x59, 0x43, 0x40, 0x1a, 0x0b, 0x49,
+ 0x38, 0x62, 0x40, 0x18, 0x78, 0x62, 0xf8, 0xbd,
+ 0x00, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x66, 0x5a,
+ 0x01, 0x00, 0x94, 0x78, 0x01, 0x00, 0xa0, 0x86,
+ 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4d, 0x00, 0x00,
+ 0x00, 0x48, 0x71, 0x00, 0xb0, 0xd6, 0x8c, 0x00,
+ 0x88, 0x10, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00,
+ 0x58, 0x12, 0x00, 0x00, 0x70, 0x11, 0x01, 0x00,
+ 0x30, 0xb5, 0x19, 0x4b, 0x02, 0x28, 0xdd, 0x68,
+ 0x06, 0xd1, 0x00, 0x29, 0x04, 0xd1, 0x2b, 0x1c,
+ 0x0c, 0x33, 0x9c, 0x1a, 0x64, 0x23, 0x5c, 0x43,
+ 0x02, 0x28, 0x09, 0xd1, 0x01, 0x29, 0x07, 0xd1,
+ 0x64, 0x23, 0x7d, 0x24, 0x3c, 0x00, 0x58, 0x4d,
+ 0x00, 0x00, 0xe4, 0x00, 0x6b, 0x43, 0x1c, 0x19,
+ 0xa0, 0x23, 0x53, 0x43, 0xe4, 0x1a, 0x0a, 0x23,
+ 0x5a, 0x43, 0x03, 0x28, 0x09, 0xd1, 0x00, 0x29,
+ 0x07, 0xd1, 0x13, 0x23, 0xff, 0x24, 0xe4, 0x00,
+ 0x6b, 0x43, 0x1b, 0x19, 0x9b, 0x1a, 0x1c, 0x1c,
+ 0x5c, 0x43, 0x03, 0x28, 0x08, 0xd1, 0x01, 0x29,
+ 0x06, 0xd1, 0x0e, 0x20, 0x05, 0x49, 0x68, 0x43,
+ 0x40, 0x18, 0x80, 0x1a, 0x04, 0x1c, 0x3c, 0x00,
+ 0x94, 0x4d, 0x00, 0x00, 0x44, 0x43, 0x20, 0x1c,
+ 0x30, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00,
+ 0x84, 0x08, 0x00, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0x0c, 0x23, 0x60, 0x78, 0x05, 0x49, 0x14, 0x31,
+ 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, 0x01, 0xf0,
+ 0x4f, 0xfc, 0x00, 0x21, 0x60, 0x78, 0x02, 0xf0,
+ 0x4b, 0xff, 0x10, 0xbd, 0x4c, 0x7b, 0x01, 0x00,
+ 0x0c, 0x48, 0xf8, 0xb5, 0x40, 0x78, 0x0c, 0x23,
+ 0x3c, 0x00, 0xd0, 0x4d, 0x00, 0x00, 0x0a, 0x49,
+ 0x58, 0x43, 0x14, 0x31, 0x44, 0x18, 0x26, 0x1d,
+ 0x60, 0xce, 0x30, 0x1c, 0x0b, 0xf0, 0x0b, 0xfd,
+ 0x00, 0x27, 0x41, 0x20, 0x47, 0x55, 0x05, 0x48,
+ 0x29, 0x1c, 0x02, 0xf0, 0xf0, 0xfe, 0x28, 0x1c,
+ 0x01, 0xf0, 0x31, 0xfc, 0x04, 0x34, 0xc0, 0xc4,
+ 0xf8, 0xbd, 0x4c, 0x7b, 0x01, 0x00, 0x55, 0x80,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x4c, 0x21,
+ 0x28, 0x78, 0x3c, 0x00, 0x0c, 0x4e, 0x00, 0x00,
+ 0x09, 0x4a, 0x41, 0x43, 0x8c, 0x18, 0x22, 0x68,
+ 0x01, 0x21, 0xfb, 0xf7, 0xe1, 0xfa, 0x28, 0x78,
+ 0x01, 0xf0, 0xfa, 0xfb, 0x3c, 0x23, 0xe0, 0x56,
+ 0x41, 0x1e, 0x01, 0x20, 0x07, 0xf0, 0x34, 0xfb,
+ 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x7c, 0x01, 0x00,
+ 0x58, 0xe3, 0x01, 0x00, 0x0c, 0x23, 0x07, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x80, 0xb5, 0x40, 0x68,
+ 0x41, 0x6b, 0x00, 0x29, 0x3c, 0x00, 0x48, 0x4e,
+ 0x00, 0x00, 0x02, 0xd0, 0x0b, 0xf0, 0xfb, 0xfd,
+ 0x80, 0xbd, 0x0b, 0xf0, 0x2c, 0xfd, 0x80, 0xbd,
+ 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x38, 0x22,
+ 0x0a, 0x4b, 0x42, 0x43, 0xd2, 0x18, 0x00, 0x29,
+ 0x80, 0xb5, 0x04, 0xd0, 0x02, 0x29, 0x07, 0xd1,
+ 0x0b, 0xf0, 0xfb, 0xfc, 0x80, 0xbd, 0xd2, 0x6a,
+ 0x01, 0x21, 0xfb, 0xf7, 0xb0, 0xfa, 0x80, 0xbd,
+ 0x03, 0x21, 0x86, 0x20, 0xfc, 0xf7, 0x3c, 0x00,
+ 0x84, 0x4e, 0x00, 0x00, 0x0f, 0xfa, 0x80, 0xbd,
+ 0xd4, 0xe4, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x06,
+ 0x24, 0x0e, 0x0c, 0x20, 0x0e, 0x49, 0x60, 0x43,
+ 0x40, 0x18, 0x45, 0x68, 0xa8, 0x6b, 0x00, 0x28,
+ 0x03, 0xd1, 0x00, 0x21, 0x20, 0x1c, 0xfd, 0xf7,
+ 0xe1, 0xfa, 0x20, 0x1c, 0x07, 0xf0, 0xf2, 0xff,
+ 0x00, 0x28, 0x08, 0xd0, 0x28, 0x1c, 0x60, 0x30,
+ 0xc1, 0x79, 0x01, 0x29, 0x03, 0xd9, 0xff, 0x31,
+ 0x3c, 0x00, 0xc0, 0x4e, 0x00, 0x00, 0xc1, 0x71,
+ 0xff, 0x31, 0x81, 0x71, 0x01, 0x21, 0x20, 0x1c,
+ 0x02, 0xf0, 0xc5, 0xfe, 0xb0, 0xbd, 0x60, 0x7b,
+ 0x01, 0x00, 0x70, 0xb5, 0x00, 0x06, 0x00, 0x0e,
+ 0x05, 0x1c, 0x4c, 0x23, 0x0a, 0x49, 0x58, 0x43,
+ 0x44, 0x18, 0x3c, 0x20, 0x00, 0x5d, 0xff, 0x30,
+ 0x06, 0x06, 0x36, 0x16, 0x28, 0x1c, 0x01, 0xf0,
+ 0x90, 0xfb, 0x00, 0x21, 0x28, 0x1c, 0x22, 0x68,
+ 0xfb, 0xf7, 0x3c, 0x00, 0xfc, 0x4e, 0x00, 0x00,
+ 0x6f, 0xfa, 0x31, 0x1c, 0x00, 0x20, 0x07, 0xf0,
+ 0xc7, 0xfa, 0x70, 0xbd, 0x58, 0xe3, 0x01, 0x00,
+ 0x0c, 0x22, 0x0f, 0x4b, 0x42, 0x43, 0xd2, 0x18,
+ 0x10, 0xb5, 0x54, 0x68, 0x00, 0x29, 0x0d, 0xd0,
+ 0x02, 0x29, 0x0f, 0xd1, 0x2c, 0x20, 0x00, 0x5d,
+ 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, 0x0c, 0x20,
+ 0xfc, 0xf7, 0xba, 0xf9, 0x20, 0x1c, 0x0b, 0xf0,
+ 0xbb, 0xfc, 0x10, 0xbd, 0x3c, 0x00, 0x38, 0x4f,
+ 0x00, 0x00, 0x00, 0x21, 0x02, 0xf0, 0x8d, 0xfe,
+ 0x10, 0xbd, 0x04, 0x21, 0x0c, 0x20, 0xfc, 0xf7,
+ 0xae, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x29, 0x07, 0xd0,
+ 0x0c, 0x23, 0x05, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x40, 0x68, 0x0b, 0xf0, 0x4a, 0xfc, 0x80, 0xbd,
+ 0x01, 0x21, 0x02, 0xf0, 0x76, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x3c, 0x00,
+ 0x74, 0x4f, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x00, 0x29, 0x05, 0xd0, 0x02, 0x29, 0x1a, 0xd1,
+ 0x20, 0x1c, 0x0b, 0xf0, 0xeb, 0xfc, 0x10, 0xbd,
+ 0x0d, 0x48, 0x04, 0x70, 0x0d, 0x48, 0x07, 0xf0,
+ 0x07, 0xf9, 0x0d, 0x48, 0x01, 0x88, 0x01, 0x22,
+ 0x12, 0x03, 0x11, 0x43, 0x01, 0x80, 0x4c, 0x20,
+ 0x0a, 0x49, 0x60, 0x43, 0x40, 0x18, 0x40, 0x30,
+ 0x00, 0x78, 0xfd, 0xf7, 0x5d, 0xfd, 0x20, 0x1c,
+ 0x3c, 0x00, 0xb0, 0x4f, 0x00, 0x00, 0x0a, 0xf0,
+ 0xd4, 0xf8, 0x10, 0xbd, 0x03, 0x21, 0x86, 0x20,
+ 0xfc, 0xf7, 0x73, 0xf9, 0x10, 0xbd, 0x3c, 0x7c,
+ 0x01, 0x00, 0x05, 0x4e, 0x00, 0x00, 0x32, 0x80,
+ 0x07, 0x00, 0x58, 0xe3, 0x01, 0x00, 0xff, 0xb5,
+ 0x05, 0x1c, 0x01, 0x20, 0x83, 0xb0, 0x01, 0x90,
+ 0x0c, 0x20, 0x5d, 0x4a, 0x68, 0x43, 0x86, 0x18,
+ 0x01, 0x27, 0x00, 0x29, 0x74, 0x68, 0x0e, 0xd0,
+ 0x02, 0x29, 0x3c, 0x00, 0xec, 0x4f, 0x00, 0x00,
+ 0x6a, 0xd1, 0x2c, 0x20, 0x00, 0x5d, 0x00, 0x28,
+ 0x03, 0xd0, 0x06, 0x21, 0x0c, 0x20, 0xfc, 0xf7,
+ 0x53, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, 0x20, 0xfd,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x52, 0x48, 0x14, 0x38,
+ 0x45, 0x70, 0xa0, 0x6b, 0x00, 0x28, 0x07, 0xd0,
+ 0x50, 0x48, 0x07, 0xf0, 0x7f, 0xf8, 0x01, 0x21,
+ 0x28, 0x1c, 0xfd, 0xf7, 0x25, 0xfa, 0x1c, 0xe0,
+ 0x4d, 0x48, 0x07, 0xf0, 0x3c, 0x00, 0x28, 0x50,
+ 0x00, 0x00, 0x77, 0xf8, 0x4a, 0x48, 0x14, 0x38,
+ 0x05, 0x70, 0x4b, 0x48, 0x01, 0x88, 0x01, 0x22,
+ 0x52, 0x03, 0x11, 0x43, 0x01, 0x80, 0x40, 0x20,
+ 0x00, 0x5d, 0xfd, 0xf7, 0x12, 0xfd, 0xb0, 0x68,
+ 0x00, 0x28, 0x09, 0xd1, 0x28, 0x1c, 0x07, 0xf0,
+ 0x64, 0xff, 0xb0, 0x60, 0x00, 0x28, 0x03, 0xd1,
+ 0x09, 0x21, 0x0c, 0x20, 0xfc, 0xf7, 0x23, 0xf9,
+ 0x05, 0x98, 0x00, 0x28, 0x03, 0xd0, 0x3c, 0x00,
+ 0x64, 0x50, 0x00, 0x00, 0xe0, 0x6c, 0x01, 0x30,
+ 0xe0, 0x64, 0x0e, 0xe0, 0x67, 0x20, 0x00, 0x5d,
+ 0x00, 0x28, 0x07, 0xd1, 0xe0, 0x6c, 0x00, 0x28,
+ 0x04, 0xd1, 0x39, 0x48, 0x02, 0x38, 0xc0, 0x6a,
+ 0xa0, 0x64, 0x09, 0xe0, 0x20, 0x6d, 0x00, 0x28,
+ 0x01, 0xd0, 0x00, 0x27, 0x04, 0xe0, 0x28, 0x1c,
+ 0x07, 0xf0, 0x00, 0xff, 0x00, 0x28, 0xe5, 0xd1,
+ 0x05, 0x98, 0x20, 0x65, 0x20, 0x1c, 0x20, 0x30,
+ 0x3c, 0x00, 0xa0, 0x50, 0x00, 0x00, 0x62, 0x6a,
+ 0x02, 0x90, 0x81, 0x7b, 0x28, 0x1c, 0x07, 0xf0,
+ 0x78, 0xff, 0x00, 0x2f, 0x19, 0xd0, 0x20, 0x1c,
+ 0x60, 0x30, 0xc1, 0x79, 0x4a, 0x1c, 0xc2, 0x71,
+ 0x80, 0x79, 0x81, 0x42, 0x02, 0xd2, 0x01, 0x20,
+ 0x01, 0xe0, 0x40, 0xe0, 0x00, 0x20, 0x01, 0x90,
+ 0x00, 0x28, 0x0a, 0xd0, 0x25, 0x48, 0x00, 0x78,
+ 0x80, 0x07, 0x06, 0xd5, 0x00, 0xf0, 0x0d, 0xfb,
+ 0x01, 0x1c, 0x3c, 0x00, 0xdc, 0x50, 0x00, 0x00,
+ 0x20, 0x1c, 0x0b, 0xf0, 0x15, 0xfd, 0x01, 0x90,
+ 0x01, 0x98, 0x00, 0x28, 0x0f, 0xd0, 0x02, 0x98,
+ 0x00, 0x7b, 0x02, 0x28, 0x03, 0xd1, 0x20, 0x1c,
+ 0x04, 0xf0, 0xd0, 0xfe, 0x84, 0xe7, 0x01, 0x28,
+ 0x00, 0xd0, 0x7e, 0xe7, 0x21, 0x1c, 0x30, 0x1c,
+ 0x04, 0xf0, 0xe2, 0xfe, 0x7c, 0xe7, 0x25, 0x1c,
+ 0x60, 0x35, 0xe8, 0x79, 0xff, 0x30, 0xa8, 0x71,
+ 0x68, 0x7a, 0x06, 0xf0, 0x3c, 0x00, 0x18, 0x51,
+ 0x00, 0x00, 0x9d, 0xfc, 0x0d, 0xf0, 0x47, 0xfe,
+ 0x07, 0x1c, 0x05, 0xf0, 0x12, 0xff, 0x3f, 0x18,
+ 0x02, 0x98, 0x81, 0x7b, 0x20, 0x69, 0x04, 0x30,
+ 0x00, 0xf0, 0x35, 0xfa, 0x61, 0x6a, 0x05, 0xf0,
+ 0xea, 0xfe, 0x39, 0x18, 0x6b, 0x7a, 0x30, 0x88,
+ 0x80, 0x31, 0x09, 0x4a, 0x0d, 0xf0, 0x91, 0xfe,
+ 0x5d, 0xe7, 0x03, 0x21, 0x0c, 0x20, 0xfc, 0xf7,
+ 0xaa, 0xf8, 0x58, 0xe7, 0x00, 0x00, 0x3c, 0x00,
+ 0x54, 0x51, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00,
+ 0xa5, 0x4d, 0x00, 0x00, 0xc9, 0x4d, 0x00, 0x00,
+ 0x32, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00,
+ 0x8d, 0x4e, 0x00, 0x00, 0xff, 0xb5, 0x81, 0xb0,
+ 0x1f, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x10, 0x1c,
+ 0x0a, 0x9e, 0x00, 0xf0, 0xf5, 0xfc, 0x29, 0x1c,
+ 0x10, 0x31, 0x20, 0x1d, 0x06, 0x22, 0xfb, 0xf7,
+ 0xb7, 0xf9, 0xa8, 0x8e, 0x20, 0x80, 0xe8, 0x8e,
+ 0x3c, 0x00, 0x90, 0x51, 0x00, 0x00, 0x60, 0x80,
+ 0x02, 0x99, 0x20, 0x1c, 0x00, 0xf0, 0x07, 0xf9,
+ 0xff, 0x34, 0x01, 0x34, 0x66, 0x60, 0x27, 0x60,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xf8, 0xb5,
+ 0x0f, 0x1c, 0x1e, 0x1c, 0x05, 0x1c, 0x14, 0x1c,
+ 0x10, 0x1c, 0x00, 0xf0, 0xd8, 0xfc, 0xa8, 0x88,
+ 0x39, 0x1c, 0x20, 0x80, 0x28, 0x89, 0x60, 0x80,
+ 0x20, 0x1c, 0x00, 0xf0, 0xf0, 0xf8, 0xff, 0x34,
+ 0x01, 0x34, 0x3c, 0x00, 0xcc, 0x51, 0x00, 0x00,
+ 0x66, 0x60, 0xf8, 0xbd, 0x70, 0xb5, 0x04, 0x1c,
+ 0xc0, 0x68, 0x05, 0x68, 0x20, 0x1c, 0x14, 0x30,
+ 0x06, 0x1c, 0x00, 0xf0, 0x0f, 0xfb, 0x00, 0x28,
+ 0x16, 0xd0, 0x01, 0x22, 0x02, 0x21, 0x20, 0x69,
+ 0x05, 0xf0, 0xf8, 0xfa, 0x00, 0x28, 0x01, 0xd0,
+ 0xfb, 0xf7, 0x24, 0xff, 0x00, 0x22, 0x02, 0x21,
+ 0x20, 0x69, 0x05, 0xf0, 0xef, 0xfa, 0x00, 0x28,
+ 0x06, 0xd0, 0xfb, 0xf7, 0x3c, 0x00, 0x08, 0x52,
+ 0x00, 0x00, 0x01, 0xff, 0x00, 0x28, 0x02, 0xd0,
+ 0x30, 0x1c, 0x0b, 0xf0, 0x7c, 0xfb, 0x68, 0x89,
+ 0x80, 0x07, 0xc0, 0x0f, 0x03, 0xf0, 0xa7, 0xf8,
+ 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0xc1, 0x68, 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c,
+ 0xfb, 0xf7, 0xd4, 0xf8, 0x70, 0xbd, 0x94, 0x67,
+ 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x10, 0x1c,
+ 0x0d, 0x1c, 0x19, 0x1c, 0xff, 0x22, 0x3c, 0x00,
+ 0x44, 0x52, 0x00, 0x00, 0x00, 0x27, 0xff, 0x2d,
+ 0x25, 0xd0, 0x00, 0x29, 0x05, 0xd0, 0x4b, 0x88,
+ 0x00, 0x2b, 0x02, 0xd0, 0x00, 0xf0, 0x50, 0xfc,
+ 0x15, 0xe0, 0x00, 0x21, 0x10, 0x4e, 0x4b, 0x00,
+ 0x9e, 0x19, 0x02, 0x23, 0xf6, 0x5e, 0x86, 0x42,
+ 0x01, 0xdd, 0x0a, 0x1c, 0x04, 0xe0, 0x01, 0x31,
+ 0x09, 0x06, 0x09, 0x0e, 0x26, 0x29, 0xf1, 0xd3,
+ 0x09, 0x4e, 0x50, 0x00, 0x80, 0x19, 0x4e, 0x23,
+ 0x3c, 0x00, 0x80, 0x52, 0x00, 0x00, 0xc0, 0x5e,
+ 0x27, 0x2a, 0x07, 0xd2, 0x06, 0x49, 0x20, 0x39,
+ 0x49, 0x57, 0x47, 0x31, 0x40, 0x1a, 0x20, 0x60,
+ 0x01, 0x27, 0x02, 0xe0, 0x7e, 0x20, 0xc0, 0x43,
+ 0x20, 0x60, 0x38, 0x1c, 0xf8, 0xbd, 0xfa, 0x47,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x7e, 0x21,
+ 0x05, 0x1c, 0x00, 0x20, 0xc9, 0x43, 0x00, 0x2c,
+ 0x0f, 0xd0, 0x10, 0x1c, 0x05, 0xf0, 0x6b, 0xfd,
+ 0x00, 0x28, 0x3c, 0x00, 0xbc, 0x52, 0x00, 0x00,
+ 0x02, 0xd0, 0x21, 0x1c, 0xc9, 0x39, 0x01, 0xe0,
+ 0x21, 0x1c, 0x86, 0x39, 0x02, 0x20, 0xc0, 0x43,
+ 0xfb, 0xf7, 0xb4, 0xf9, 0x01, 0x1c, 0x01, 0x20,
+ 0x29, 0x60, 0xb0, 0xbd, 0x98, 0xb5, 0x14, 0x1c,
+ 0x00, 0x22, 0x00, 0x92, 0x22, 0x1c, 0xfd, 0xf7,
+ 0x43, 0xfe, 0x98, 0xbd, 0x05, 0x49, 0x80, 0xb5,
+ 0x08, 0x60, 0x05, 0x49, 0x01, 0x20, 0xc8, 0x61,
+ 0x01, 0x21, 0x00, 0x20, 0x3c, 0x00, 0xf8, 0x52,
+ 0x00, 0x00, 0x03, 0xf0, 0x1c, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20,
+ 0x03, 0xf0, 0x11, 0xfe, 0x06, 0xf0, 0x0d, 0xfb,
+ 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd,
+ 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0x09, 0x69, 0x00, 0x29, 0x00, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0x53, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00,
+ 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0,
+ 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c,
+ 0x0d, 0x1c, 0x04, 0x1c, 0x00, 0x28, 0x01, 0xd0,
+ 0x01, 0x2c, 0x07, 0xd1, 0x00, 0xf0, 0x36, 0xfa,
+ 0x00, 0x28, 0x05, 0xd0, 0x13, 0xf0, 0xca, 0xf9,
+ 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd,
+ 0x3c, 0x00, 0x70, 0x53, 0x00, 0x00, 0x01, 0x20,
+ 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, 0x0a, 0x4c,
+ 0x04, 0x34, 0x61, 0xc4, 0x10, 0x3c, 0x00, 0xf0,
+ 0x24, 0xfa, 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0,
+ 0xc6, 0xf9, 0x01, 0xe0, 0x00, 0xf0, 0xe5, 0xf8,
+ 0xc0, 0x30, 0xc3, 0x6b, 0x22, 0x1d, 0x07, 0xca,
+ 0xfb, 0xf7, 0x20, 0xf8, 0x00, 0x20, 0x70, 0xbd,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0d, 0x1c, 0x3c, 0x00, 0xac, 0x53, 0x00, 0x00,
+ 0x00, 0x21, 0x04, 0x1c, 0x28, 0x1c, 0x05, 0xf0,
+ 0xe3, 0xf9, 0x23, 0x1c, 0xff, 0x33, 0x21, 0x33,
+ 0xff, 0x27, 0x00, 0x28, 0x05, 0xd0, 0x22, 0x22,
+ 0x01, 0x1c, 0x18, 0x1c, 0xfb, 0xf7, 0x96, 0xf8,
+ 0x00, 0xe0, 0x1f, 0x70, 0x03, 0x21, 0x28, 0x1c,
+ 0x05, 0xf0, 0xd2, 0xf9, 0x26, 0x1c, 0xff, 0x36,
+ 0x41, 0x36, 0x00, 0x28, 0x05, 0xd0, 0x03, 0x22,
+ 0x01, 0x1c, 0xb0, 0x1c, 0x3c, 0x00, 0xe8, 0x53,
+ 0x00, 0x00, 0xfb, 0xf7, 0x86, 0xf8, 0x00, 0xe0,
+ 0xb7, 0x70, 0x01, 0x21, 0x28, 0x1c, 0x05, 0xf0,
+ 0xc2, 0xf9, 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c,
+ 0x20, 0x1c, 0xff, 0x30, 0x0a, 0x22, 0x46, 0x30,
+ 0xfb, 0xf7, 0x77, 0xf8, 0x00, 0xe0, 0x77, 0x71,
+ 0x32, 0x21, 0x28, 0x1c, 0x05, 0xf0, 0xb3, 0xf9,
+ 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, 0x20, 0x1c,
+ 0xff, 0x30, 0x12, 0x22, 0x50, 0x30, 0x3c, 0x00,
+ 0x24, 0x54, 0x00, 0x00, 0xfb, 0xf7, 0x68, 0xf8,
+ 0x00, 0xe0, 0xf7, 0x73, 0x06, 0x21, 0x28, 0x1c,
+ 0x05, 0xf0, 0xa4, 0xf9, 0x00, 0x28, 0x07, 0xd0,
+ 0x01, 0x1c, 0x20, 0x1c, 0xff, 0x30, 0x04, 0x22,
+ 0x63, 0x30, 0xfb, 0xf7, 0x59, 0xf8, 0xf8, 0xbd,
+ 0xff, 0x34, 0x61, 0x34, 0xa7, 0x70, 0xfa, 0xe7,
+ 0x08, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x00, 0x28,
+ 0x01, 0xd1, 0x07, 0x48, 0x01, 0x68, 0x08, 0x1c,
+ 0x3c, 0x00, 0x60, 0x54, 0x00, 0x00, 0x05, 0xd1,
+ 0x03, 0x21, 0x90, 0x20, 0xfb, 0xf7, 0x1d, 0xff,
+ 0x00, 0x20, 0x80, 0xbd, 0x01, 0xf0, 0xd7, 0xfb,
+ 0x80, 0xbd, 0x1c, 0x67, 0x01, 0x00, 0x20, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xe7, 0xff,
+ 0x80, 0xbd, 0xf0, 0xb5, 0x00, 0x24, 0x84, 0x46,
+ 0x00, 0x20, 0x0b, 0xe0, 0x87, 0x40, 0x17, 0x40,
+ 0x07, 0xd0, 0x14, 0x23, 0x0b, 0x4d, 0x43, 0x43,
+ 0x5b, 0x19, 0x3c, 0x00, 0x9c, 0x54, 0x00, 0x00,
+ 0x1b, 0x7c, 0x65, 0x46, 0x2b, 0x55, 0x01, 0x34,
+ 0x01, 0x30, 0x01, 0x27, 0x3b, 0x1c, 0x0e, 0x28,
+ 0x00, 0xd3, 0x00, 0x23, 0x0e, 0x88, 0x3d, 0x1c,
+ 0xa6, 0x42, 0x00, 0xdc, 0x00, 0x25, 0x2b, 0x40,
+ 0xe7, 0xd1, 0x0c, 0x80, 0xf0, 0xbd, 0x00, 0x00,
+ 0x74, 0x40, 0x01, 0x00, 0x78, 0xb5, 0x04, 0x1c,
+ 0x01, 0x20, 0x20, 0x70, 0x08, 0x20, 0x00, 0xab,
+ 0x0d, 0x1c, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0x54,
+ 0x00, 0x00, 0x16, 0x1c, 0xa0, 0x1c, 0x69, 0x46,
+ 0xff, 0xf7, 0xd1, 0xff, 0x00, 0xab, 0x00, 0x22,
+ 0xd2, 0x43, 0x19, 0x88, 0x82, 0x40, 0x61, 0x70,
+ 0x32, 0x20, 0x28, 0x70, 0x10, 0x20, 0x18, 0x80,
+ 0x32, 0x40, 0xa8, 0x1c, 0x69, 0x46, 0xff, 0xf7,
+ 0xc2, 0xff, 0x00, 0xab, 0x18, 0x88, 0x68, 0x70,
+ 0x78, 0xbd, 0x80, 0xb5, 0x02, 0xf0, 0x35, 0xff,
+ 0x00, 0x21, 0x00, 0x28, 0x00, 0xd0, 0x3c, 0x00,
+ 0x14, 0x55, 0x00, 0x00, 0x01, 0x69, 0x08, 0x1c,
+ 0x80, 0xbd, 0x00, 0x00, 0x05, 0x49, 0x00, 0x28,
+ 0x01, 0xd0, 0xc8, 0x68, 0x00, 0xe0, 0x08, 0x69,
+ 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00,
+ 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0,
+ 0x04, 0x30, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x02, 0x48, 0x00, 0x69,
+ 0x3c, 0x00, 0x50, 0x55, 0x00, 0x00, 0x00, 0x28,
+ 0xff, 0xd1, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x69,
+ 0x00, 0x28, 0x03, 0xd1, 0x04, 0x21, 0x90, 0x20,
+ 0xfb, 0xf7, 0x9b, 0xfe, 0x20, 0x69, 0x10, 0xbd,
+ 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x00, 0xf0, 0x40, 0xf9, 0x00, 0x28,
+ 0x01, 0xd0, 0x00, 0x20, 0x10, 0xbd, 0x20, 0x1c,
+ 0x00, 0xf0, 0x3c, 0x00, 0x8c, 0x55, 0x00, 0x00,
+ 0x57, 0xf9, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20,
+ 0x10, 0xbd, 0x02, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0x70, 0xb5, 0x0f, 0x4e, 0x04, 0x1c, 0x30, 0x68,
+ 0x0d, 0x1c, 0x00, 0x28, 0x07, 0xd0, 0x21, 0x1c,
+ 0x04, 0x30, 0x05, 0xf0, 0xc1, 0xfb, 0x00, 0x28,
+ 0x01, 0xd0, 0x30, 0x68, 0x0b, 0xe0, 0x09, 0x4a,
+ 0x10, 0x68, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c,
+ 0x14, 0x1c, 0x04, 0x30, 0x3c, 0x00, 0xc8, 0x55,
+ 0x00, 0x00, 0x05, 0xf0, 0xb4, 0xfb, 0x00, 0x28,
+ 0x02, 0xd0, 0x20, 0x68, 0x9c, 0x30, 0x00, 0xe0,
+ 0x03, 0x48, 0x40, 0x5d, 0x70, 0xbd, 0x20, 0x67,
+ 0x01, 0x00, 0x1c, 0x67, 0x01, 0x00, 0xcc, 0x47,
+ 0x01, 0x00, 0x04, 0x49, 0x00, 0x20, 0x09, 0x69,
+ 0x00, 0x29, 0x02, 0xd0, 0xff, 0x31, 0x01, 0x31,
+ 0x88, 0x69, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0x01, 0x48, 0x00, 0x7a, 0x3c, 0x00,
+ 0x04, 0x56, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0xac, 0x7c, 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c,
+ 0x00, 0x20, 0x1f, 0x1c, 0x14, 0x1c, 0x00, 0x29,
+ 0x02, 0x90, 0x19, 0xd0, 0x01, 0x29, 0x26, 0xd0,
+ 0x02, 0x29, 0x47, 0xd1, 0x26, 0x48, 0x00, 0x78,
+ 0x05, 0xf0, 0xa0, 0xfb, 0xa0, 0x72, 0x0a, 0xf0,
+ 0x4f, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0xa0, 0x7a,
+ 0x05, 0xf0, 0xaa, 0xfb, 0x00, 0x28, 0x04, 0xd0,
+ 0x3c, 0x00, 0x40, 0x56, 0x00, 0x00, 0x20, 0x48,
+ 0x00, 0x78, 0x05, 0xf0, 0x92, 0xfb, 0xa0, 0x72,
+ 0x00, 0x20, 0x20, 0x72, 0x2f, 0xe0, 0x1d, 0x4d,
+ 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfb, 0xf7,
+ 0x52, 0xfe, 0x00, 0x97, 0x2a, 0x68, 0x23, 0x1c,
+ 0x18, 0x32, 0x11, 0x1c, 0x30, 0x1c, 0xfc, 0xf7,
+ 0xde, 0xfb, 0x26, 0xe0, 0x30, 0x1c, 0x0c, 0xf0,
+ 0xca, 0xfb, 0x05, 0x1c, 0x02, 0xd0, 0xa8, 0x68,
+ 0x00, 0x28, 0x3c, 0x00, 0x7c, 0x56, 0x00, 0x00,
+ 0x08, 0xd1, 0x13, 0x48, 0x00, 0x68, 0x00, 0x28,
+ 0x01, 0xd1, 0xfb, 0xf7, 0x3b, 0xfe, 0x10, 0x48,
+ 0x00, 0x68, 0x18, 0x30, 0x02, 0x1c, 0x0e, 0x48,
+ 0x00, 0x97, 0x01, 0x68, 0x23, 0x1c, 0x18, 0x31,
+ 0x30, 0x1c, 0xfc, 0xf7, 0xc3, 0xfb, 0x00, 0x2d,
+ 0x0a, 0xd0, 0x40, 0x35, 0x28, 0x88, 0x80, 0x06,
+ 0x06, 0xd4, 0x00, 0x20, 0x20, 0x60, 0x03, 0xe0,
+ 0x01, 0x21, 0x90, 0x20, 0x3c, 0x00, 0xb8, 0x56,
+ 0x00, 0x00, 0xfb, 0xf7, 0xf4, 0xfd, 0x02, 0x98,
+ 0xfe, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x90, 0x57,
+ 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x20, 0x02, 0xf0,
+ 0x4a, 0xfe, 0x18, 0x23, 0x05, 0x4a, 0x58, 0x43,
+ 0x80, 0x18, 0x40, 0x69, 0x01, 0x21, 0x00, 0x28,
+ 0x00, 0xd0, 0x41, 0x78, 0x08, 0x1c, 0x80, 0xbd,
+ 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0x3c, 0x00,
+ 0xf4, 0x56, 0x00, 0x00, 0x02, 0x49, 0x08, 0x69,
+ 0x00, 0x28, 0x00, 0xd1, 0xc8, 0x68, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68,
+ 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00,
+ 0x10, 0xb5, 0x05, 0x4c, 0xe0, 0x68, 0x00, 0x28,
+ 0x03, 0xd1, 0x05, 0x21, 0x90, 0x20, 0xfb, 0xf7,
+ 0xbd, 0xfd, 0xe0, 0x68, 0x10, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x30, 0x57, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x00, 0x2a,
+ 0x03, 0xd0, 0x11, 0x49, 0x12, 0x4f, 0x0e, 0x78,
+ 0x01, 0xe0, 0x11, 0x4f, 0x0c, 0x26, 0x08, 0x2e,
+ 0x01, 0xd2, 0x34, 0x1c, 0x00, 0xe0, 0x08, 0x24,
+ 0x01, 0x21, 0x01, 0x70, 0x44, 0x70, 0x39, 0x1c,
+ 0x22, 0x1c, 0x02, 0x30, 0xfa, 0xf7, 0xcb, 0xfe,
+ 0x32, 0x1b, 0x00, 0x2a, 0x07, 0xdd, 0x32, 0x20,
+ 0x28, 0x70, 0x3c, 0x00, 0x6c, 0x57, 0x00, 0x00,
+ 0x39, 0x19, 0xa8, 0x1c, 0x6a, 0x70, 0xfa, 0xf7,
+ 0xc1, 0xfe, 0xf8, 0xbd, 0xff, 0x20, 0x28, 0x70,
+ 0x00, 0x20, 0x68, 0x70, 0xf9, 0xe7, 0x00, 0x00,
+ 0xa4, 0x69, 0x01, 0x00, 0xb0, 0x69, 0x01, 0x00,
+ 0x90, 0x57, 0x01, 0x00, 0x01, 0x49, 0x48, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00,
+ 0x03, 0x49, 0x80, 0xb5, 0x08, 0x60, 0x01, 0x21,
+ 0x01, 0x20, 0x03, 0xf0, 0x3c, 0x00, 0xa8, 0x57,
+ 0x00, 0x00, 0xc5, 0xfb, 0x80, 0xbd, 0x1c, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x01, 0x20,
+ 0x03, 0xf0, 0xbd, 0xfb, 0x06, 0xf0, 0xb9, 0xf8,
+ 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd,
+ 0x00, 0x00, 0x1c, 0x67, 0x01, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0xc9, 0x68, 0x00, 0x29, 0x00, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, 0x3c, 0x00,
+ 0xe4, 0x57, 0x00, 0x00, 0x00, 0x28, 0x01, 0xd0,
+ 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x01, 0x20, 0x03, 0xf0, 0x9b, 0xfb, 0x80, 0xbd,
+ 0x05, 0x4a, 0x80, 0xb5, 0x12, 0x69, 0x00, 0x21,
+ 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, 0x05, 0xf0,
+ 0x91, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd,
+ 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, 0x80, 0xb5,
+ 0x3c, 0x00, 0x20, 0x58, 0x00, 0x00, 0x12, 0x69,
+ 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, 0x11, 0x1c,
+ 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, 0x8b, 0xfa,
+ 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, 0x10, 0x67,
+ 0x01, 0x00, 0x05, 0x4a, 0x80, 0xb5, 0xd2, 0x68,
+ 0x00, 0x21, 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d,
+ 0x05, 0xf0, 0x73, 0xfa, 0x01, 0x1c, 0x08, 0x1c,
+ 0x80, 0xbd, 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a,
+ 0x80, 0xb5, 0x3c, 0x00, 0x5c, 0x58, 0x00, 0x00,
+ 0xd2, 0x68, 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0,
+ 0x11, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0,
+ 0x6d, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd,
+ 0x10, 0x67, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c,
+ 0x1f, 0x1c, 0x87, 0xb0, 0x10, 0x9e, 0x00, 0x24,
+ 0x02, 0xf0, 0x72, 0xfd, 0x18, 0x23, 0x13, 0x49,
+ 0x58, 0x43, 0x08, 0x58, 0x00, 0x28, 0x19, 0xd0,
+ 0x04, 0x1c, 0x33, 0x1c, 0x3c, 0x00, 0x98, 0x58,
+ 0x00, 0x00, 0x3a, 0x1c, 0x28, 0x1c, 0x09, 0x99,
+ 0xfa, 0xf7, 0x9f, 0xfd, 0x04, 0x1c, 0x14, 0xd0,
+ 0x18, 0x20, 0x00, 0xab, 0x18, 0x80, 0xaa, 0x68,
+ 0x01, 0xa8, 0x69, 0x46, 0xff, 0xf7, 0xe7, 0xfd,
+ 0x6a, 0x46, 0x01, 0xa9, 0x00, 0x20, 0x07, 0xf0,
+ 0x44, 0xfe, 0x00, 0x28, 0x05, 0xd1, 0x0a, 0x21,
+ 0x00, 0xe0, 0x0f, 0x21, 0x90, 0x20, 0xfb, 0xf7,
+ 0xea, 0xfc, 0x20, 0x1c, 0x0b, 0xb0, 0x3c, 0x00,
+ 0xd4, 0x58, 0x00, 0x00, 0xf0, 0xbd, 0x00, 0x00,
+ 0x94, 0x67, 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24,
+ 0x02, 0xf0, 0x44, 0xfd, 0x18, 0x23, 0x05, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, 0x00, 0x28,
+ 0x02, 0xd0, 0xfa, 0xf7, 0x71, 0xfd, 0x01, 0x24,
+ 0x20, 0x1c, 0x10, 0xbd, 0x94, 0x67, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x4b, 0x00, 0xf0, 0x4e, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00,
+ 0x3c, 0x00, 0x10, 0x59, 0x00, 0x00, 0x80, 0xb5,
+ 0x02, 0x4b, 0x00, 0xf0, 0x46, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0e, 0x1c, 0x15, 0x1c, 0x00, 0x28, 0x1c, 0x49,
+ 0x10, 0xd0, 0x48, 0x68, 0x1c, 0x4a, 0x28, 0x80,
+ 0x00, 0x20, 0x07, 0xe0, 0x0b, 0x18, 0x1c, 0x7a,
+ 0x14, 0x23, 0x63, 0x43, 0x9b, 0x18, 0x1b, 0x7c,
+ 0x33, 0x54, 0x01, 0x30, 0x2b, 0x88, 0x83, 0x42,
+ 0xf4, 0xdc, 0x3c, 0x00, 0x4c, 0x59, 0x00, 0x00,
+ 0x24, 0xe0, 0x00, 0x20, 0x0f, 0x1c, 0x00, 0x24,
+ 0x08, 0x60, 0x0f, 0xe0, 0x30, 0x5d, 0x05, 0xf0,
+ 0x07, 0xfa, 0x0e, 0x28, 0x01, 0xd1, 0x00, 0x20,
+ 0xf8, 0xbd, 0x39, 0x19, 0x08, 0x72, 0x01, 0x22,
+ 0x39, 0x68, 0x82, 0x40, 0x11, 0x43, 0x08, 0x1c,
+ 0x38, 0x60, 0x01, 0x34, 0x28, 0x88, 0xa0, 0x42,
+ 0xec, 0xdc, 0x28, 0x88, 0x78, 0x60, 0xff, 0xf7,
+ 0xb7, 0xfe, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x59,
+ 0x00, 0x00, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29,
+ 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0,
+ 0x52, 0xfb, 0x01, 0x20, 0xe3, 0xe7, 0x2c, 0x7d,
+ 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, 0x10, 0xb5,
+ 0x1c, 0x1c, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x78,
+ 0x0e, 0x28, 0x05, 0xd2, 0x14, 0x23, 0x0c, 0x4a,
+ 0x58, 0x43, 0x80, 0x18, 0x00, 0x7c, 0x00, 0xe0,
+ 0x00, 0x20, 0x08, 0x70, 0x0e, 0xe0, 0x3c, 0x00,
+ 0xc4, 0x59, 0x00, 0x00, 0x08, 0x78, 0x05, 0xf0,
+ 0xd1, 0xf9, 0x20, 0x70, 0xff, 0xf7, 0x92, 0xfe,
+ 0x00, 0x28, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29,
+ 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0,
+ 0x2d, 0xfb, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0x74, 0x40, 0x01, 0x00, 0x80, 0xb5, 0x27, 0x20,
+ 0xc0, 0x43, 0x09, 0xf0, 0x31, 0xfc, 0x80, 0xbd,
+ 0x80, 0xb5, 0x27, 0x20, 0xc0, 0x43, 0x09, 0xf0,
+ 0x3c, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x39, 0xfc,
+ 0x80, 0xbd, 0x80, 0xb5, 0x28, 0x20, 0x09, 0xf0,
+ 0x42, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x28, 0x20, 0x09, 0xf0, 0x4a, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x01, 0x28, 0x28, 0xd1,
+ 0x01, 0x29, 0x01, 0xd0, 0xfb, 0xf7, 0x6b, 0xfc,
+ 0xff, 0xf7, 0xe9, 0xfd, 0x02, 0x28, 0x1a, 0xd1,
+ 0x07, 0xf0, 0x13, 0xfc, 0x12, 0x4c, 0x21, 0x69,
+ 0x88, 0x42, 0x3c, 0x00, 0x3c, 0x5a, 0x00, 0x00,
+ 0x15, 0xd0, 0x07, 0xf0, 0x0d, 0xfc, 0x20, 0x61,
+ 0x20, 0x68, 0x7d, 0x24, 0xe4, 0x00, 0x44, 0x43,
+ 0x0d, 0xf0, 0xae, 0xf9, 0x05, 0x1c, 0x07, 0xf0,
+ 0x0b, 0xfc, 0x28, 0x1a, 0x84, 0x42, 0x00, 0xd9,
+ 0x24, 0x1a, 0x01, 0x22, 0x21, 0x1c, 0x0a, 0x20,
+ 0x0d, 0xf0, 0xb2, 0xfd, 0xb0, 0xbd, 0x00, 0x21,
+ 0x09, 0x20, 0x0c, 0xf0, 0x75, 0xfc, 0xb0, 0xbd,
+ 0x07, 0x21, 0x0a, 0x20, 0x3c, 0x00, 0x78, 0x5a,
+ 0x00, 0x00, 0xfb, 0xf7, 0x14, 0xfc, 0xb0, 0xbd,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x7d, 0x20,
+ 0x02, 0x49, 0x00, 0x01, 0x08, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x10, 0xb5,
+ 0x81, 0x6d, 0x04, 0x1c, 0xff, 0x30, 0x46, 0x30,
+ 0x0c, 0xf0, 0xd1, 0xfc, 0x20, 0x1c, 0xff, 0x30,
+ 0x50, 0x30, 0xa1, 0x6d, 0x0c, 0xf0, 0xcb, 0xfc,
+ 0x10, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00,
+ 0xb4, 0x5a, 0x00, 0x00, 0x0d, 0x1c, 0x02, 0xf0,
+ 0x59, 0xfc, 0x20, 0x1c, 0x02, 0xf0, 0x56, 0xfc,
+ 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x18, 0x22, 0x29, 0x1c, 0xfa, 0xf7, 0x70, 0xfd,
+ 0xb0, 0xbd, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xbc, 0xfb,
+ 0x20, 0x1c, 0x09, 0xf0, 0xc7, 0xfb, 0x10, 0xbd,
+ 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xd0, 0xfb,
+ 0x3c, 0x00, 0xf0, 0x5a, 0x00, 0x00, 0x20, 0x1c,
+ 0x09, 0xf0, 0xdb, 0xfb, 0x10, 0xbd, 0x70, 0xb5,
+ 0x0c, 0x78, 0x06, 0x1c, 0x48, 0x88, 0x4d, 0x78,
+ 0xe2, 0x00, 0x80, 0x1a, 0xe9, 0x00, 0x40, 0x1a,
+ 0x01, 0x1c, 0x41, 0x43, 0x12, 0x31, 0x24, 0x20,
+ 0xfa, 0xf7, 0x91, 0xfd, 0x21, 0x1c, 0x61, 0x43,
+ 0xc9, 0x00, 0x40, 0x18, 0x29, 0x1c, 0x69, 0x43,
+ 0xc9, 0x00, 0x42, 0x18, 0x0c, 0x49, 0x88, 0x79,
+ 0x0c, 0x4b, 0x3c, 0x00, 0x2c, 0x5b, 0x00, 0x00,
+ 0x53, 0x43, 0x0c, 0x4a, 0x13, 0x60, 0x53, 0x7b,
+ 0x34, 0x02, 0x14, 0x60, 0x52, 0x7b, 0x88, 0x71,
+ 0x01, 0x33, 0x58, 0x10, 0x08, 0x4b, 0x80, 0x1a,
+ 0x01, 0x21, 0x49, 0x02, 0x58, 0x43, 0x00, 0x28,
+ 0x00, 0xda, 0x49, 0x42, 0x08, 0x18, 0x80, 0x12,
+ 0x21, 0x38, 0x70, 0xbd, 0x20, 0x10, 0x07, 0x00,
+ 0xec, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00,
+ 0x03, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x5b,
+ 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x21,
+ 0x04, 0x30, 0xfa, 0xf7, 0x70, 0xfc, 0xff, 0x20,
+ 0x21, 0x30, 0xff, 0x21, 0x01, 0x55, 0x20, 0x1c,
+ 0xff, 0x30, 0x41, 0x30, 0x81, 0x70, 0x41, 0x71,
+ 0xc1, 0x73, 0xff, 0x20, 0x63, 0x30, 0x01, 0x55,
+ 0x00, 0x20, 0x20, 0x61, 0x60, 0x61, 0xff, 0x34,
+ 0x01, 0x34, 0xa0, 0x60, 0xe0, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00,
+ 0xa4, 0x5b, 0x00, 0x00, 0x08, 0x1c, 0x58, 0x60,
+ 0x9a, 0x60, 0x1c, 0x1c, 0x1e, 0x60, 0x15, 0x1c,
+ 0x9b, 0x8a, 0xe2, 0x8a, 0x31, 0x1c, 0x02, 0xf0,
+ 0xa1, 0xfc, 0x28, 0x1a, 0xe0, 0x60, 0x70, 0xbd,
+ 0x70, 0xb5, 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c,
+ 0x1e, 0x1c, 0x00, 0x25, 0xeb, 0x43, 0x22, 0x1c,
+ 0x18, 0x32, 0x0b, 0xf0, 0xf7, 0xfb, 0x22, 0x1c,
+ 0xff, 0x32, 0x50, 0x32, 0x11, 0x1c, 0x0a, 0x39,
+ 0x3c, 0x00, 0xe0, 0x5b, 0x00, 0x00, 0x01, 0x23,
+ 0x20, 0x1c, 0x00, 0xf0, 0xc6, 0xf8, 0x0c, 0x28,
+ 0x10, 0xd0, 0x01, 0x25, 0x20, 0x1c, 0x0b, 0xf0,
+ 0xac, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0x19, 0xf8,
+ 0x20, 0x1c, 0x00, 0xf0, 0x0a, 0xf8, 0x20, 0x1c,
+ 0x00, 0xf0, 0x29, 0xf8, 0x31, 0x1c, 0x20, 0x1c,
+ 0x0b, 0xf0, 0x17, 0xfa, 0x28, 0x1c, 0x70, 0xbd,
+ 0x00, 0x00, 0xff, 0x21, 0x1d, 0x31, 0x09, 0x58,
+ 0x80, 0x30, 0x3c, 0x00, 0x1c, 0x5c, 0x00, 0x00,
+ 0x89, 0x07, 0x00, 0x29, 0x01, 0xda, 0x01, 0x21,
+ 0x00, 0xe0, 0x00, 0x21, 0xc1, 0x62, 0x70, 0x47,
+ 0x01, 0x1c, 0x80, 0x31, 0x00, 0x22, 0x0a, 0x63,
+ 0x07, 0x4a, 0x12, 0x68, 0x00, 0x2a, 0x09, 0xd0,
+ 0x42, 0x88, 0x92, 0x06, 0x06, 0xd5, 0xff, 0x30,
+ 0x01, 0x30, 0xc0, 0x69, 0x40, 0x07, 0x01, 0xd4,
+ 0x01, 0x20, 0x08, 0x63, 0x70, 0x47, 0x00, 0x00,
+ 0xac, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x5c,
+ 0x00, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x4a, 0x88,
+ 0x00, 0x20, 0x52, 0x05, 0x05, 0xd5, 0xff, 0x31,
+ 0x01, 0x31, 0xc9, 0x69, 0x49, 0x07, 0x00, 0xd4,
+ 0x01, 0x20, 0x06, 0xf0, 0xec, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x98, 0x68,
+ 0x17, 0x1c, 0x0e, 0x1c, 0x1c, 0x1c, 0x00, 0x28,
+ 0x02, 0xd1, 0x20, 0x1c, 0x0c, 0xf0, 0x31, 0xf8,
+ 0xab, 0x69, 0x39, 0x1c, 0x30, 0x1c, 0x3c, 0x00,
+ 0x94, 0x5c, 0x00, 0x00, 0xa2, 0x68, 0x0b, 0xf0,
+ 0x95, 0xfb, 0xf8, 0xbd, 0xf8, 0xb5, 0x16, 0x1c,
+ 0x0d, 0x1c, 0x1f, 0x1c, 0x00, 0x24, 0x02, 0xf0,
+ 0x61, 0xfb, 0x18, 0x23, 0x06, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0x43, 0x68, 0x00, 0x2b, 0x05, 0xd0,
+ 0x3a, 0x1c, 0x31, 0x1c, 0x28, 0x1c, 0xfa, 0xf7,
+ 0x8e, 0xfb, 0x01, 0x24, 0x20, 0x1c, 0xf8, 0xbd,
+ 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x07, 0xf0,
+ 0x3c, 0x00, 0xd0, 0x5c, 0x00, 0x00, 0xc5, 0xfa,
+ 0x09, 0x49, 0x08, 0x61, 0x08, 0x68, 0x00, 0x28,
+ 0x02, 0xd1, 0x7d, 0x20, 0x00, 0x01, 0x08, 0x60,
+ 0x08, 0x68, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43,
+ 0x00, 0x23, 0x01, 0x22, 0x0a, 0x20, 0x0d, 0xf0,
+ 0x4e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x0a, 0x20,
+ 0x0d, 0xf0, 0x97, 0xfc, 0x80, 0xbd, 0xf8, 0xb5,
+ 0x0e, 0x1c, 0x3c, 0x00, 0x0c, 0x5d, 0x00, 0x00,
+ 0x51, 0x68, 0x14, 0x1c, 0x12, 0x68, 0xa5, 0x68,
+ 0x0b, 0x1c, 0x75, 0x1b, 0x57, 0x19, 0x97, 0x42,
+ 0x00, 0xd2, 0x01, 0x31, 0x42, 0x68, 0x00, 0x25,
+ 0x8a, 0x42, 0x02, 0xdd, 0x01, 0x25, 0x62, 0x60,
+ 0x05, 0xe0, 0x9a, 0x42, 0x03, 0xd1, 0x01, 0x68,
+ 0xb9, 0x42, 0x00, 0xd9, 0x01, 0x25, 0x00, 0x2d,
+ 0x09, 0xd0, 0x01, 0x68, 0x21, 0x60, 0xa6, 0x60,
+ 0xa3, 0x8a, 0xe2, 0x8a, 0x3c, 0x00, 0x48, 0x5d,
+ 0x00, 0x00, 0x60, 0x68, 0x02, 0xf0, 0xd7, 0xfb,
+ 0x30, 0x1a, 0xe0, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0x07, 0xfb,
+ 0x18, 0x23, 0x03, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x18, 0x21, 0xfa, 0xf7, 0x98, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0xfe, 0xb5,
+ 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, 0x1e, 0x1c,
+ 0x0c, 0x25, 0x01, 0x22, 0x00, 0x92, 0x3c, 0x00,
+ 0x84, 0x5d, 0x00, 0x00, 0xa2, 0x69, 0x02, 0xab,
+ 0xfd, 0xf7, 0xf0, 0xf8, 0x00, 0x28, 0x45, 0xd0,
+ 0x02, 0x98, 0x27, 0x21, 0x02, 0x1c, 0x0a, 0x40,
+ 0x01, 0xd1, 0x08, 0x43, 0x02, 0x90, 0x21, 0x49,
+ 0xa0, 0x69, 0x08, 0x40, 0x06, 0xd0, 0x02, 0x98,
+ 0x01, 0x40, 0x03, 0xd1, 0x49, 0x21, 0xc9, 0x00,
+ 0x08, 0x43, 0x02, 0x90, 0xa0, 0x6d, 0x02, 0x99,
+ 0x88, 0x42, 0x30, 0xd0, 0x00, 0x2e, 0x2d, 0xd0,
+ 0x3c, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x40, 0x21,
+ 0x20, 0x1c, 0x58, 0x30, 0xfa, 0xf7, 0x69, 0xfb,
+ 0x02, 0x98, 0x00, 0x25, 0x00, 0x26, 0x37, 0x1c,
+ 0xa0, 0x65, 0x19, 0xe0, 0xc0, 0x07, 0x11, 0xd5,
+ 0xf0, 0x19, 0x00, 0x19, 0x70, 0x30, 0x05, 0x71,
+ 0x28, 0x1c, 0x04, 0xf0, 0xd4, 0xff, 0x00, 0x28,
+ 0x04, 0xd0, 0xa0, 0x19, 0x80, 0x30, 0x05, 0x72,
+ 0x01, 0x36, 0x03, 0xe0, 0xe0, 0x19, 0x60, 0x30,
+ 0x05, 0x70, 0x3c, 0x00, 0xfc, 0x5d, 0x00, 0x00,
+ 0x01, 0x37, 0x01, 0x35, 0x2d, 0x06, 0x02, 0x98,
+ 0x2d, 0x0e, 0x40, 0x08, 0x02, 0x90, 0x02, 0x98,
+ 0x00, 0x28, 0xe2, 0xd1, 0x84, 0x20, 0x06, 0x51,
+ 0xf0, 0x19, 0x20, 0x67, 0xe7, 0x65, 0x00, 0x25,
+ 0x00, 0xe0, 0x0b, 0x25, 0x28, 0x1c, 0xfe, 0xbd,
+ 0xd8, 0x3a, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x1c,
+ 0x08, 0x1c, 0x11, 0x1c, 0x00, 0x24, 0xe2, 0x43,
+ 0x6b, 0x46, 0xff, 0xf7, 0x3c, 0x00, 0x38, 0x5e,
+ 0x00, 0x00, 0x4f, 0xfa, 0x00, 0x28, 0x05, 0xd0,
+ 0xa8, 0x69, 0x00, 0x99, 0x01, 0x40, 0x81, 0x42,
+ 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd,
+ 0x00, 0x00, 0x7c, 0xb5, 0x05, 0x6a, 0x86, 0x69,
+ 0x04, 0x1c, 0xc0, 0x68, 0xfb, 0xf7, 0xb7, 0xfb,
+ 0xe1, 0x69, 0xfb, 0xf7, 0xda, 0xfa, 0x20, 0x1c,
+ 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89,
+ 0x89, 0x18, 0xc1, 0x83, 0x06, 0x49, 0x3c, 0x00,
+ 0x74, 0x5e, 0x00, 0x00, 0x01, 0x94, 0x00, 0x91,
+ 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, 0x01, 0x68,
+ 0xe0, 0x68, 0xc0, 0x68, 0x00, 0xf0, 0xf2, 0xf9,
+ 0x7c, 0xbd, 0x00, 0x00, 0x91, 0x5e, 0x00, 0x00,
+ 0xb0, 0xb5, 0xd1, 0x68, 0x55, 0x69, 0xc8, 0x68,
+ 0x14, 0x1c, 0x14, 0x4b, 0x0c, 0xe0, 0x02, 0x68,
+ 0x9a, 0x42, 0x07, 0xd1, 0xc2, 0x68, 0xca, 0x60,
+ 0x00, 0x21, 0xc1, 0x60, 0x01, 0x60, 0xfb, 0xf7,
+ 0x3c, 0x00, 0xb0, 0x5e, 0x00, 0x00, 0x73, 0xfb,
+ 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, 0x00, 0x28,
+ 0xf0, 0xd1, 0xe0, 0x68, 0xc0, 0x68, 0xe8, 0x60,
+ 0xe0, 0x68, 0xc5, 0x60, 0x20, 0x1c, 0x40, 0x30,
+ 0xc1, 0x8b, 0x2a, 0x89, 0x89, 0x18, 0xc1, 0x83,
+ 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7,
+ 0xba, 0xff, 0xb0, 0xbd, 0x04, 0x48, 0x04, 0xf0,
+ 0x4e, 0xf9, 0x00, 0x6a, 0x07, 0xf0, 0x77, 0xfa,
+ 0xb0, 0xbd, 0x3c, 0x00, 0xec, 0x5e, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0xa0, 0x6a, 0x01, 0x00,
+ 0xf1, 0xb5, 0x82, 0xb0, 0x02, 0x98, 0x06, 0x69,
+ 0x01, 0x1c, 0x08, 0x36, 0x60, 0x31, 0x45, 0x68,
+ 0x01, 0x91, 0x82, 0xe0, 0x10, 0x21, 0x00, 0x20,
+ 0x2f, 0x69, 0xfb, 0xf7, 0x63, 0xfb, 0x68, 0x61,
+ 0x01, 0x89, 0x08, 0x39, 0x09, 0x04, 0x09, 0x0c,
+ 0x01, 0x81, 0x68, 0x69, 0x00, 0x68, 0x40, 0x18,
+ 0x08, 0x21, 0xfb, 0xf7, 0x3c, 0x00, 0x28, 0x5f,
+ 0x00, 0x00, 0x57, 0xfb, 0xe8, 0x61, 0x68, 0x69,
+ 0x71, 0x88, 0x00, 0x68, 0x20, 0x22, 0x01, 0x80,
+ 0x71, 0x68, 0x41, 0x60, 0x01, 0x99, 0x49, 0x7b,
+ 0x89, 0x01, 0x11, 0x43, 0xc1, 0x70, 0x00, 0x21,
+ 0x81, 0x70, 0x28, 0x20, 0xfb, 0xf7, 0x75, 0xfc,
+ 0x39, 0x88, 0x04, 0x1c, 0xc1, 0x81, 0xa8, 0x6b,
+ 0x00, 0x28, 0x03, 0xd1, 0x01, 0x20, 0x80, 0x02,
+ 0x08, 0x43, 0xe0, 0x81, 0x06, 0x22, 0x3c, 0x00,
+ 0x64, 0x5f, 0x00, 0x00, 0x39, 0x1d, 0x20, 0x1c,
+ 0x10, 0x30, 0xfa, 0xf7, 0xc5, 0xfa, 0x39, 0x1c,
+ 0x0a, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x16, 0x30,
+ 0x00, 0x90, 0xfa, 0xf7, 0xbd, 0xfa, 0x39, 0x1c,
+ 0x10, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x1c, 0x30,
+ 0xfa, 0xf7, 0xb6, 0xfa, 0xe1, 0x89, 0x25, 0x4a,
+ 0x5c, 0x20, 0x11, 0x40, 0x01, 0x22, 0x92, 0x03,
+ 0x11, 0x43, 0x40, 0x5b, 0xe1, 0x81, 0x0f, 0x21,
+ 0x3c, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x08, 0x40,
+ 0x60, 0x84, 0x20, 0x1c, 0x20, 0x30, 0x16, 0x21,
+ 0x81, 0x71, 0x00, 0x21, 0x21, 0x70, 0xe9, 0x6b,
+ 0x00, 0x29, 0x07, 0xd0, 0x29, 0x69, 0x09, 0x8b,
+ 0x09, 0x07, 0x09, 0x0f, 0x21, 0x70, 0xa1, 0x84,
+ 0x18, 0x21, 0x81, 0x71, 0x06, 0x22, 0x60, 0x1c,
+ 0x00, 0x99, 0xfa, 0xf7, 0x94, 0xfa, 0x70, 0x68,
+ 0x00, 0x0e, 0xe0, 0x71, 0x70, 0x68, 0x00, 0x02,
+ 0x00, 0x0e, 0x3c, 0x00, 0xdc, 0x5f, 0x00, 0x00,
+ 0x20, 0x72, 0x70, 0x68, 0x00, 0x04, 0x00, 0x0e,
+ 0x60, 0x72, 0x70, 0x68, 0xa0, 0x72, 0x70, 0x88,
+ 0x00, 0x0a, 0xe0, 0x72, 0x70, 0x88, 0x20, 0x73,
+ 0x70, 0x88, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c,
+ 0x70, 0x80, 0x02, 0xd1, 0x70, 0x68, 0x01, 0x30,
+ 0x70, 0x60, 0xac, 0x61, 0x02, 0x98, 0x28, 0x62,
+ 0x2d, 0x68, 0x00, 0x2d, 0x00, 0xd0, 0x79, 0xe7,
+ 0x02, 0x98, 0x04, 0x49, 0x3c, 0x00, 0x18, 0x60,
+ 0x00, 0x00, 0x42, 0x68, 0x04, 0x48, 0x04, 0xf0,
+ 0x74, 0xf8, 0xfe, 0xbd, 0x00, 0x00, 0x8f, 0xc7,
+ 0xff, 0xff, 0x3d, 0xda, 0x00, 0x00, 0xa0, 0x6a,
+ 0x01, 0x00, 0xb0, 0xb5, 0x07, 0x4d, 0x28, 0x78,
+ 0x03, 0x28, 0x08, 0xd0, 0x00, 0x24, 0x2c, 0x70,
+ 0x69, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x01, 0x20,
+ 0xfa, 0xf7, 0xc8, 0xf9, 0x6c, 0x60, 0xb0, 0xbd,
+ 0x00, 0x00, 0x9c, 0x73, 0x01, 0x00, 0x3c, 0x00,
+ 0x54, 0x60, 0x00, 0x00, 0xf8, 0xb5, 0x2b, 0x4b,
+ 0xd8, 0x6a, 0x00, 0x28, 0x50, 0xd0, 0x2a, 0x48,
+ 0x01, 0x1c, 0xff, 0x31, 0x01, 0x31, 0xca, 0x68,
+ 0x01, 0x32, 0xca, 0x60, 0x1a, 0x6c, 0x00, 0x2a,
+ 0x02, 0xd1, 0x4a, 0x69, 0x01, 0x32, 0x4a, 0x61,
+ 0x0a, 0x69, 0x01, 0x32, 0x0a, 0x61, 0xda, 0x68,
+ 0x00, 0x2a, 0x04, 0xd0, 0x1f, 0x4a, 0x01, 0x32,
+ 0x12, 0x78, 0x00, 0x2a, 0x02, 0xd1, 0x8a, 0x69,
+ 0x3c, 0x00, 0x90, 0x60, 0x00, 0x00, 0x01, 0x32,
+ 0x8a, 0x61, 0x00, 0x25, 0x07, 0x1d, 0x18, 0x26,
+ 0x1a, 0x4a, 0x6e, 0x43, 0x74, 0x32, 0x90, 0x59,
+ 0x00, 0x28, 0x29, 0xd0, 0xb4, 0x18, 0x60, 0x69,
+ 0x00, 0x28, 0x25, 0xd1, 0x60, 0x68, 0x00, 0x28,
+ 0x02, 0xd0, 0x01, 0x68, 0x00, 0x29, 0x05, 0xd1,
+ 0xa1, 0x68, 0x00, 0x29, 0x1c, 0xd0, 0x09, 0x68,
+ 0x00, 0x29, 0x19, 0xd0, 0x00, 0x28, 0x05, 0xd0,
+ 0xe1, 0x68, 0x3c, 0x00, 0xcc, 0x60, 0x00, 0x00,
+ 0x01, 0x31, 0xe1, 0x60, 0x00, 0x68, 0x81, 0x42,
+ 0x11, 0xd3, 0xa0, 0x68, 0x00, 0x28, 0x06, 0xd0,
+ 0x21, 0x69, 0x00, 0x68, 0x08, 0x18, 0x0c, 0xf0,
+ 0xa3, 0xfd, 0x00, 0x28, 0x07, 0xd0, 0x06, 0x4a,
+ 0x01, 0x20, 0x60, 0x61, 0x74, 0x32, 0x91, 0x59,
+ 0x38, 0x1c, 0xfa, 0xf7, 0x70, 0xf9, 0x01, 0x35,
+ 0x02, 0x2d, 0xcb, 0xdb, 0xf8, 0xbd, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x61,
+ 0x00, 0x00, 0xf4, 0x67, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0f, 0x1c, 0x00, 0x25, 0x04, 0x1c, 0x00, 0x28,
+ 0x25, 0xd0, 0x20, 0x1c, 0x04, 0xf0, 0x03, 0xfe,
+ 0x00, 0x28, 0x06, 0xd0, 0xff, 0xf7, 0xff, 0xf8,
+ 0x04, 0x1c, 0xff, 0xf7, 0x50, 0xfb, 0x06, 0x1c,
+ 0x07, 0xe0, 0x20, 0x1c, 0xff, 0xf7, 0x91, 0xfb,
+ 0x06, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0x6f, 0xfb,
+ 0x04, 0x1c, 0x00, 0x2e, 0x06, 0xd0, 0x3c, 0x00,
+ 0x44, 0x61, 0x00, 0x00, 0xff, 0xf7, 0x4c, 0xfb,
+ 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, 0x01, 0x20,
+ 0x07, 0xe0, 0x00, 0x2c, 0x06, 0xd0, 0xff, 0xf7,
+ 0xef, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25,
+ 0x00, 0x20, 0x38, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0xb0, 0xb5, 0xc5, 0x68, 0x04, 0x1c, 0x0d, 0xf0,
+ 0x8f, 0xfc, 0x20, 0x7e, 0xc1, 0x07, 0x08, 0xd5,
+ 0xe1, 0x68, 0xa9, 0x42, 0x05, 0xd9, 0x22, 0x69,
+ 0x3c, 0x00, 0x80, 0x61, 0x00, 0x00, 0x91, 0x42,
+ 0x02, 0xd3, 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82,
+ 0x81, 0x07, 0x08, 0xd5, 0xe1, 0x68, 0xa9, 0x42,
+ 0x05, 0xd2, 0x22, 0x69, 0x91, 0x42, 0x02, 0xd8,
+ 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, 0x40, 0x07,
+ 0x06, 0xd5, 0xe0, 0x68, 0x21, 0x69, 0x88, 0x42,
+ 0x02, 0xd1, 0xe0, 0x8a, 0x01, 0x30, 0xe0, 0x82,
+ 0xe0, 0x8a, 0xa1, 0x8a, 0x88, 0x42, 0x0d, 0xd3,
+ 0x60, 0x7e, 0x3c, 0x00, 0xbc, 0x61, 0x00, 0x00,
+ 0x02, 0x28, 0x0b, 0xd0, 0x20, 0x68, 0xe1, 0x68,
+ 0x04, 0x22, 0x07, 0xf0, 0x65, 0xfb, 0x60, 0x7e,
+ 0x00, 0x28, 0x03, 0xd1, 0x20, 0x68, 0x08, 0xf0,
+ 0xab, 0xff, 0xb0, 0xbd, 0x00, 0x20, 0xe0, 0x82,
+ 0xb0, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c,
+ 0x0c, 0x23, 0x20, 0x49, 0x58, 0x43, 0x45, 0x18,
+ 0x00, 0x20, 0xa8, 0x60, 0x30, 0x1c, 0x06, 0xf0,
+ 0x91, 0xfe, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x61,
+ 0x00, 0x00, 0x68, 0x60, 0x33, 0xd0, 0x01, 0x20,
+ 0xa8, 0x70, 0x2c, 0x20, 0x00, 0x5d, 0x02, 0x28,
+ 0x03, 0xd1, 0x20, 0x1c, 0x03, 0xf0, 0x45, 0xfe,
+ 0x10, 0xe0, 0x61, 0x6b, 0x00, 0x29, 0x0a, 0xd0,
+ 0x01, 0x28, 0x04, 0xd1, 0x21, 0x1c, 0x28, 0x1c,
+ 0x03, 0xf0, 0x55, 0xfe, 0x06, 0xe0, 0x20, 0x1c,
+ 0x0a, 0xf0, 0x0d, 0xfc, 0x02, 0xe0, 0x20, 0x1c,
+ 0x0a, 0xf0, 0x3d, 0xfb, 0x0d, 0x48, 0x3c, 0x00,
+ 0x34, 0x62, 0x00, 0x00, 0x14, 0x38, 0x41, 0x68,
+ 0x00, 0x29, 0x10, 0xd0, 0x20, 0x1c, 0x40, 0x30,
+ 0x02, 0x8b, 0x12, 0x07, 0x92, 0x0f, 0x01, 0x2a,
+ 0x09, 0xd0, 0x80, 0x8b, 0x32, 0x02, 0x00, 0x09,
+ 0x00, 0x04, 0x10, 0x43, 0x81, 0x22, 0x02, 0x43,
+ 0x0c, 0x20, 0x0d, 0xf0, 0xb7, 0xf9, 0x0c, 0xf0,
+ 0xa5, 0xfd, 0x60, 0x64, 0x70, 0xbd, 0x00, 0x00,
+ 0x60, 0x7b, 0x01, 0x00, 0xff, 0xb5, 0x08, 0x1c,
+ 0x3c, 0x00, 0x70, 0x62, 0x00, 0x00, 0x11, 0x1c,
+ 0x0c, 0x32, 0x20, 0x24, 0x14, 0x43, 0x0c, 0x4a,
+ 0x83, 0xb0, 0x0c, 0xae, 0x52, 0x68, 0x60, 0xce,
+ 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63,
+ 0x0d, 0x23, 0x40, 0x27, 0xbb, 0x52, 0x94, 0x61,
+ 0x14, 0x84, 0x01, 0x22, 0x02, 0x92, 0x32, 0x1c,
+ 0x00, 0x90, 0x01, 0x91, 0x23, 0x1c, 0x29, 0x1c,
+ 0x03, 0x98, 0x00, 0xf0, 0x66, 0xf9, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x3c, 0x00, 0xac, 0x62, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x00, 0x27, 0x11, 0x4e, 0x1d, 0xe0, 0xe0, 0x68,
+ 0x00, 0x28, 0x70, 0x68, 0x0c, 0xd1, 0x80, 0x88,
+ 0x00, 0x07, 0x0d, 0xd1, 0x01, 0x21, 0x0c, 0x48,
+ 0xfb, 0xf7, 0x84, 0xf9, 0xc4, 0x60, 0xe8, 0x60,
+ 0x70, 0x68, 0x81, 0x88, 0x01, 0x31, 0x02, 0xe0,
+ 0x81, 0x88, 0x22, 0x89, 0x89, 0x18, 0x81, 0x80,
+ 0xe0, 0x68, 0x39, 0x1c, 0x3c, 0x00, 0xe8, 0x62,
+ 0x00, 0x00, 0x00, 0x28, 0x01, 0xd1, 0x71, 0x68,
+ 0xc9, 0x6d, 0x25, 0x1c, 0x61, 0x60, 0x04, 0x1c,
+ 0x00, 0x2c, 0xdf, 0xd1, 0xf8, 0xbd, 0xa0, 0x7e,
+ 0x01, 0x00, 0x06, 0x49, 0x10, 0xb5, 0x49, 0x68,
+ 0x00, 0x23, 0x05, 0xe0, 0x8a, 0x88, 0x04, 0x89,
+ 0x12, 0x19, 0x8a, 0x80, 0x43, 0x60, 0xc0, 0x68,
+ 0x00, 0x28, 0xf7, 0xd1, 0x10, 0xbd, 0xa0, 0x7e,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x49, 0x3c, 0x00,
+ 0x24, 0x63, 0x00, 0x00, 0x00, 0x24, 0x49, 0x68,
+ 0x0a, 0xe0, 0x8a, 0x88, 0x03, 0x89, 0xd2, 0x18,
+ 0x8a, 0x80, 0xc3, 0x68, 0x22, 0x1c, 0x00, 0x2b,
+ 0x00, 0xd1, 0xca, 0x6d, 0x42, 0x60, 0x18, 0x1c,
+ 0x00, 0x28, 0xf2, 0xd1, 0x10, 0xbd, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x01, 0x1c, 0x13, 0x48,
+ 0x10, 0xb5, 0x40, 0x68, 0x00, 0x23, 0x09, 0xe0,
+ 0x82, 0x88, 0x0c, 0x89, 0x12, 0x19, 0x82, 0x80,
+ 0x3c, 0x00, 0x60, 0x63, 0x00, 0x00, 0x4b, 0x60,
+ 0xca, 0x68, 0x00, 0x2a, 0x00, 0xd1, 0x41, 0x66,
+ 0xc9, 0x68, 0x00, 0x29, 0xf3, 0xd1, 0x01, 0x1c,
+ 0x68, 0x31, 0x81, 0x64, 0xc3, 0x64, 0x43, 0x65,
+ 0x82, 0x88, 0x08, 0x23, 0x11, 0x1c, 0x08, 0x31,
+ 0x89, 0x07, 0x89, 0x0f, 0x59, 0x1a, 0x50, 0x23,
+ 0x19, 0x52, 0x51, 0x18, 0x81, 0x80, 0x01, 0x1c,
+ 0x40, 0x6e, 0x48, 0x31, 0xc1, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x63, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x49,
+ 0x00, 0x24, 0x4b, 0x68, 0x06, 0xe0, 0xc2, 0x68,
+ 0x21, 0x1c, 0x00, 0x2a, 0x00, 0xd1, 0xd9, 0x6d,
+ 0x41, 0x60, 0x10, 0x1c, 0x00, 0x28, 0xf6, 0xd1,
+ 0x10, 0xbd, 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xfe, 0xb5, 0x06, 0x1c,
+ 0x0c, 0x48, 0x0c, 0x1c, 0x40, 0x68, 0x80, 0x21,
+ 0x81, 0x70, 0x00, 0x21, 0x3c, 0x00, 0xd8, 0x63,
+ 0x00, 0x00, 0xc1, 0x70, 0x15, 0x1c, 0x40, 0x22,
+ 0x81, 0x63, 0x11, 0x52, 0x81, 0x61, 0x01, 0x84,
+ 0x00, 0x20, 0x04, 0x22, 0x02, 0x92, 0x00, 0x90,
+ 0x01, 0x91, 0x29, 0x1c, 0x20, 0x1c, 0x1a, 0x1c,
+ 0x33, 0x1c, 0x00, 0xf0, 0xbc, 0xf8, 0xfe, 0xbd,
+ 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, 0x70, 0xb5,
+ 0x06, 0x1c, 0x17, 0x48, 0x80, 0x78, 0x02, 0x21,
+ 0x16, 0x4a, 0x88, 0x43, 0x90, 0x70, 0x3c, 0x00,
+ 0x14, 0x64, 0x00, 0x00, 0x10, 0x1c, 0x80, 0x78,
+ 0x08, 0x43, 0x11, 0x1c, 0x88, 0x70, 0x13, 0x48,
+ 0x00, 0x24, 0xc4, 0x70, 0x70, 0x20, 0xfb, 0xf7,
+ 0xd9, 0xf9, 0x11, 0x4d, 0x70, 0x21, 0x68, 0x60,
+ 0xfa, 0xf7, 0x34, 0xf8, 0x30, 0x07, 0x00, 0x0f,
+ 0x69, 0x68, 0x90, 0x30, 0xc8, 0x65, 0x0d, 0x48,
+ 0x68, 0x22, 0x08, 0x80, 0x08, 0x1c, 0x28, 0x30,
+ 0x89, 0x60, 0x48, 0x61, 0x08, 0x20, 0x08, 0x82,
+ 0x3c, 0x00, 0x50, 0x64, 0x00, 0x00, 0x08, 0x1c,
+ 0x38, 0x30, 0x48, 0x63, 0x20, 0x38, 0x48, 0x64,
+ 0x5a, 0x20, 0x50, 0x54, 0x06, 0x48, 0x08, 0x31,
+ 0x41, 0x64, 0x44, 0x65, 0x70, 0xbd, 0x00, 0x00,
+ 0x07, 0x00, 0x58, 0x00, 0x07, 0x00, 0xa0, 0x7e,
+ 0x01, 0x00, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x0a, 0x4b, 0x10, 0xb5, 0x58, 0x6d,
+ 0x0a, 0x49, 0x00, 0x22, 0x49, 0x68, 0x00, 0x24,
+ 0x4a, 0x62, 0x3c, 0x00, 0x8c, 0x64, 0x00, 0x00,
+ 0x5c, 0x65, 0x4b, 0x6e, 0x00, 0x2b, 0x01, 0xd0,
+ 0xda, 0x60, 0x4a, 0x66, 0x8b, 0x6d, 0x00, 0x2b,
+ 0x03, 0xd0, 0x0a, 0x6e, 0x00, 0x21, 0xf9, 0xf7,
+ 0x9c, 0xff, 0x10, 0xbd, 0x00, 0x30, 0x07, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5,
+ 0x08, 0x88, 0x01, 0x30, 0x08, 0x80, 0x01, 0x20,
+ 0x07, 0x49, 0x80, 0x02, 0x08, 0x60, 0x07, 0x4c,
+ 0xa2, 0x6d, 0x00, 0x2a, 0x3c, 0x00, 0xc8, 0x64,
+ 0x00, 0x00, 0x05, 0xd0, 0x05, 0x21, 0xd1, 0x20,
+ 0x0d, 0xf0, 0x6f, 0xf9, 0x01, 0x20, 0xa0, 0x65,
+ 0x10, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5,
+ 0x83, 0xb0, 0x0c, 0xae, 0x86, 0x46, 0x8c, 0x46,
+ 0x0e, 0x4a, 0x43, 0xce, 0x0f, 0xad, 0x0f, 0x1c,
+ 0x52, 0x68, 0x0c, 0x37, 0x30, 0xcd, 0x97, 0x70,
+ 0xd3, 0x70, 0x96, 0x63, 0x0d, 0x26, 0x3c, 0x00,
+ 0x04, 0x65, 0x00, 0x00, 0x40, 0x27, 0xbe, 0x52,
+ 0x05, 0x9e, 0x96, 0x61, 0x13, 0x84, 0x00, 0x22,
+ 0x02, 0x92, 0x2a, 0x1c, 0x00, 0x90, 0x01, 0x91,
+ 0x21, 0x1c, 0x60, 0x46, 0x73, 0x46, 0x00, 0xf0,
+ 0x29, 0xf8, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0xff, 0xb5, 0x10, 0x1c,
+ 0x1a, 0x1c, 0x0c, 0x1c, 0x19, 0x1c, 0x60, 0x23,
+ 0xff, 0x32, 0x13, 0x43, 0x0c, 0x4a, 0x83, 0xb0,
+ 0x3c, 0x00, 0x40, 0x65, 0x00, 0x00, 0x0c, 0xae,
+ 0x52, 0x68, 0x60, 0xce, 0x93, 0x70, 0x00, 0x23,
+ 0xd3, 0x70, 0x93, 0x63, 0x40, 0x27, 0xbb, 0x52,
+ 0x93, 0x61, 0x13, 0x84, 0x03, 0x22, 0x02, 0x92,
+ 0x01, 0x91, 0x29, 0x1c, 0x32, 0x1c, 0x00, 0x90,
+ 0x20, 0x1c, 0x03, 0x9b, 0x00, 0xf0, 0x05, 0xf8,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xa0, 0x7e,
+ 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x11, 0x48,
+ 0x1c, 0x1c, 0x3c, 0x00, 0x7c, 0x65, 0x00, 0x00,
+ 0x08, 0x9b, 0x07, 0x9f, 0x40, 0x68, 0xde, 0x00,
+ 0x81, 0x65, 0x02, 0x66, 0x00, 0x21, 0x81, 0x80,
+ 0x0d, 0x48, 0x81, 0x59, 0x20, 0x1c, 0xf9, 0xf7,
+ 0x22, 0xff, 0x0b, 0x48, 0x30, 0x18, 0x41, 0x68,
+ 0x28, 0x1c, 0xf9, 0xf7, 0x1c, 0xff, 0x07, 0x49,
+ 0x06, 0x98, 0x49, 0x68, 0x00, 0x2c, 0x88, 0x62,
+ 0x0f, 0x86, 0x00, 0xd1, 0x2c, 0x1c, 0x05, 0x48,
+ 0x4c, 0x62, 0x45, 0x65, 0x3c, 0x00, 0xb8, 0x65,
+ 0x00, 0x00, 0x01, 0x21, 0x01, 0x65, 0x01, 0x64,
+ 0xf8, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0x90, 0x52,
+ 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5,
+ 0x83, 0xb0, 0x0d, 0xae, 0x60, 0xce, 0x0c, 0x9f,
+ 0x08, 0x1c, 0x11, 0x1c, 0xd2, 0x19, 0xff, 0x32,
+ 0x40, 0x24, 0x14, 0x43, 0x0b, 0x4a, 0x52, 0x68,
+ 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63,
+ 0x40, 0x23, 0x9f, 0x52, 0x94, 0x61, 0x3c, 0x00,
+ 0xf4, 0x65, 0x00, 0x00, 0x14, 0x84, 0x02, 0x22,
+ 0x02, 0x92, 0x32, 0x1c, 0x00, 0x90, 0x01, 0x91,
+ 0x23, 0x1c, 0x29, 0x1c, 0x03, 0x98, 0xff, 0xf7,
+ 0xb5, 0xff, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x4c, 0x21, 0x0d, 0x4a,
+ 0x41, 0x43, 0x10, 0xb5, 0x8c, 0x18, 0x0c, 0x49,
+ 0x09, 0x78, 0x88, 0x42, 0x07, 0xd1, 0x05, 0xf0,
+ 0xc7, 0xfd, 0x0a, 0x48, 0x01, 0x88, 0x01, 0x22,
+ 0x3c, 0x00, 0x30, 0x66, 0x00, 0x00, 0x12, 0x03,
+ 0x91, 0x43, 0x01, 0x80, 0x20, 0x1c, 0x30, 0x30,
+ 0x0c, 0x23, 0xc1, 0x56, 0x40, 0x7b, 0x81, 0x42,
+ 0x02, 0xdd, 0x20, 0x8d, 0x0c, 0xf0, 0xe5, 0xfb,
+ 0x10, 0xbd, 0x58, 0xe3, 0x01, 0x00, 0x3c, 0x7c,
+ 0x01, 0x00, 0x32, 0x80, 0x07, 0x00, 0x01, 0x1c,
+ 0x60, 0x31, 0x80, 0xb5, 0xca, 0x79, 0x8b, 0x79,
+ 0x9a, 0x42, 0x07, 0xd9, 0x48, 0x7a, 0x0c, 0x23,
+ 0x07, 0x49, 0x3c, 0x00, 0x6c, 0x66, 0x00, 0x00,
+ 0x58, 0x43, 0x08, 0x5a, 0x0c, 0xf0, 0xd0, 0xfb,
+ 0x80, 0xbd, 0x20, 0x30, 0x00, 0x7b, 0x01, 0x28,
+ 0xfa, 0xd1, 0x48, 0x7a, 0x05, 0xf0, 0x40, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x1c, 0x21, 0xf9, 0xf7,
+ 0x03, 0xff, 0x03, 0x48, 0xa0, 0x80, 0xe0, 0x80,
+ 0x20, 0x81, 0x60, 0x81, 0xa0, 0x81, 0x10, 0xbd,
+ 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x66,
+ 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, 0x00, 0x20,
+ 0x83, 0xb0, 0x0d, 0x1c, 0x06, 0x2c, 0x02, 0x90,
+ 0x38, 0xd2, 0x1f, 0x4a, 0xff, 0x26, 0xc1, 0x00,
+ 0x89, 0x18, 0x89, 0x78, 0xa1, 0x42, 0x03, 0xd1,
+ 0xc0, 0x00, 0x80, 0x18, 0x46, 0x78, 0x04, 0xe0,
+ 0x01, 0x30, 0x00, 0x06, 0x00, 0x16, 0x06, 0x28,
+ 0xf1, 0xdb, 0xff, 0x2e, 0x24, 0xd0, 0x01, 0x93,
+ 0x20, 0x1c, 0x0d, 0xf0, 0xe8, 0xf9, 0x3c, 0x00,
+ 0xe4, 0x66, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd0,
+ 0x24, 0x21, 0x28, 0x1c, 0x01, 0xab, 0x02, 0xaa,
+ 0xfa, 0xf7, 0x30, 0xfe, 0x10, 0x49, 0xf0, 0x00,
+ 0x30, 0x39, 0x0f, 0x58, 0x31, 0x06, 0x09, 0x16,
+ 0x28, 0x1c, 0x05, 0x9a, 0x01, 0x9b, 0xf9, 0xf7,
+ 0x6e, 0xfe, 0x06, 0x1c, 0x10, 0xd1, 0x20, 0x1c,
+ 0x0d, 0xf0, 0xd0, 0xf9, 0x00, 0x28, 0x0b, 0xd0,
+ 0x28, 0x1c, 0x69, 0x69, 0xfa, 0xf7, 0x12, 0xfe,
+ 0x3c, 0x00, 0x20, 0x67, 0x00, 0x00, 0x02, 0x98,
+ 0x68, 0x61, 0x04, 0xe0, 0x06, 0x2c, 0x01, 0xd3,
+ 0x07, 0x26, 0x00, 0xe0, 0x08, 0x26, 0x30, 0x1c,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xcc, 0x5a,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x09, 0xf0,
+ 0x86, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c,
+ 0x09, 0xf0, 0xb5, 0xf8, 0x10, 0xbd, 0xfe, 0xb5,
+ 0x13, 0x4d, 0x04, 0x1c, 0xae, 0x69, 0x00, 0x2e,
+ 0x1c, 0xd0, 0x3c, 0x00, 0x5c, 0x67, 0x00, 0x00,
+ 0x10, 0x4f, 0x30, 0x37, 0x78, 0x68, 0x60, 0x43,
+ 0x01, 0x1c, 0x28, 0x88, 0xf9, 0xf7, 0xd2, 0xff,
+ 0x39, 0x68, 0x61, 0x43, 0x41, 0x18, 0x01, 0xa8,
+ 0x32, 0x1c, 0xf9, 0xf7, 0x37, 0xfe, 0x02, 0x98,
+ 0x29, 0x6a, 0x40, 0x18, 0x28, 0x62, 0x0b, 0xd4,
+ 0xe9, 0x69, 0x88, 0x42, 0x08, 0xd9, 0xa9, 0x69,
+ 0x40, 0x1a, 0x28, 0x62, 0x01, 0x98, 0x01, 0x30,
+ 0x01, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x67,
+ 0x00, 0x00, 0x02, 0x90, 0x01, 0x90, 0x01, 0x98,
+ 0xfe, 0xbd, 0xc8, 0x74, 0x01, 0x00, 0xf8, 0xb5,
+ 0x00, 0x28, 0x28, 0xd0, 0x00, 0x24, 0x14, 0x4d,
+ 0x00, 0xe0, 0x01, 0x34, 0x61, 0x00, 0x09, 0x19,
+ 0x49, 0x19, 0x49, 0x78, 0x00, 0x29, 0xf8, 0xd1,
+ 0x63, 0x00, 0x1b, 0x19, 0x03, 0x33, 0x07, 0x22,
+ 0x69, 0x46, 0x03, 0xf0, 0xd4, 0xfb, 0x00, 0x2c,
+ 0x0f, 0xd0, 0x00, 0x20, 0x00, 0x99, 0x3c, 0x00,
+ 0xd4, 0x67, 0x00, 0x00, 0x0a, 0xe0, 0x42, 0x00,
+ 0x12, 0x18, 0xae, 0x5c, 0x53, 0x18, 0x52, 0x19,
+ 0x5e, 0x71, 0x56, 0x78, 0x01, 0x30, 0x9e, 0x71,
+ 0x92, 0x78, 0xda, 0x71, 0xa0, 0x42, 0xf2, 0xdb,
+ 0x00, 0x98, 0x03, 0x22, 0x02, 0x30, 0x03, 0x49,
+ 0xf9, 0xf7, 0x7e, 0xfe, 0xf8, 0xbd, 0x00, 0x00,
+ 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x08, 0x1c, 0xfa, 0xf7,
+ 0x3c, 0x00, 0x10, 0x68, 0x00, 0x00, 0x9d, 0xff,
+ 0x04, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, 0xd9, 0xfe,
+ 0x21, 0x1c, 0xfa, 0xf7, 0xfc, 0xfd, 0x20, 0x1c,
+ 0xb0, 0xbd, 0xf3, 0xb5, 0x44, 0x48, 0x0c, 0x1c,
+ 0x00, 0x78, 0x81, 0xb0, 0x01, 0x28, 0x72, 0xd1,
+ 0xfa, 0xf7, 0x82, 0xf8, 0x41, 0x4d, 0xe8, 0x6a,
+ 0x41, 0x49, 0x08, 0x60, 0xe8, 0x6b, 0x48, 0x60,
+ 0x40, 0x48, 0xfa, 0xf7, 0xa6, 0xf9, 0xe8, 0x6a,
+ 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x68, 0x00, 0x00,
+ 0xfc, 0xda, 0x22, 0x1c, 0x0f, 0x20, 0x01, 0x99,
+ 0x0a, 0xf0, 0xa4, 0xf8, 0x38, 0x4d, 0x02, 0x27,
+ 0x2f, 0x63, 0x38, 0x4a, 0x64, 0x26, 0x00, 0x20,
+ 0xaa, 0x21, 0x08, 0x32, 0x13, 0x18, 0x01, 0x30,
+ 0x00, 0x04, 0x00, 0x0c, 0x64, 0x28, 0x19, 0x74,
+ 0xf8, 0xd3, 0x16, 0x81, 0x00, 0x20, 0x50, 0x60,
+ 0x10, 0x1c, 0x10, 0x30, 0x10, 0x60, 0x00, 0x25,
+ 0x17, 0x1c, 0xd2, 0x60, 0x3c, 0x00, 0x88, 0x68,
+ 0x00, 0x00, 0x08, 0xe0, 0x28, 0x1c, 0xf9, 0xf7,
+ 0xa2, 0xff, 0x41, 0x31, 0x78, 0x19, 0x01, 0x35,
+ 0x2d, 0x04, 0x2d, 0x0c, 0x01, 0x74, 0xb5, 0x42,
+ 0xf4, 0xd3, 0x26, 0x4d, 0x6f, 0x63, 0x01, 0x20,
+ 0x28, 0x63, 0x24, 0x4d, 0xe8, 0x6a, 0x00, 0x28,
+ 0xfb, 0xda, 0x0b, 0x22, 0x3b, 0x1c, 0x24, 0x4e,
+ 0x03, 0xe0, 0x01, 0x32, 0x64, 0x2a, 0x00, 0xd1,
+ 0x00, 0x22, 0x10, 0x1c, 0x0c, 0x21, 0x3c, 0x00,
+ 0xc4, 0x68, 0x00, 0x00, 0x01, 0x39, 0x75, 0x5c,
+ 0x1f, 0x18, 0x3f, 0x7c, 0xbd, 0x42, 0xf3, 0xd1,
+ 0x01, 0x38, 0x00, 0xd5, 0x63, 0x20, 0x00, 0x29,
+ 0xf4, 0xd1, 0x18, 0x4e, 0x50, 0x1c, 0xf1, 0x6b,
+ 0x1a, 0x4a, 0x10, 0x1c, 0x01, 0x38, 0xfd, 0xd1,
+ 0xf0, 0x6b, 0x88, 0x42, 0x01, 0xd0, 0x01, 0x1c,
+ 0xf7, 0xe7, 0x02, 0x27, 0x37, 0x63, 0x16, 0x4d,
+ 0x90, 0x21, 0x28, 0x1c, 0xf9, 0xf7, 0xce, 0xfd,
+ 0x3c, 0x00, 0x00, 0x69, 0x00, 0x00, 0x28, 0x1c,
+ 0x28, 0x30, 0x28, 0x60, 0x28, 0x1c, 0x10, 0x30,
+ 0x2f, 0x81, 0xe8, 0x60, 0x28, 0x1c, 0x20, 0x30,
+ 0x28, 0x61, 0x04, 0x21, 0x00, 0xe0, 0x0c, 0xe0,
+ 0x29, 0x83, 0xe8, 0x61, 0xed, 0x62, 0x75, 0x63,
+ 0x01, 0x20, 0x30, 0x63, 0x22, 0x1c, 0x89, 0x20,
+ 0x01, 0x99, 0x0a, 0xf0, 0x38, 0xf8, 0x00, 0x20,
+ 0x28, 0x63, 0xfe, 0xbd, 0x00, 0x00, 0x08, 0x57,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x69, 0x00, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x10, 0x8e, 0x01, 0x00,
+ 0x74, 0xff, 0x01, 0x00, 0x09, 0x57, 0x01, 0x00,
+ 0x20, 0x4e, 0x00, 0x00, 0xe4, 0xfe, 0x01, 0x00,
+ 0x80, 0xb5, 0x13, 0x28, 0x1e, 0xd0, 0xf0, 0x28,
+ 0x16, 0xd1, 0x09, 0xf0, 0xb5, 0xf9, 0x00, 0x28,
+ 0x13, 0xd1, 0x0d, 0xf0, 0xbf, 0xfa, 0x11, 0xf0,
+ 0x0d, 0xfc, 0x00, 0x22, 0x04, 0x21, 0xc4, 0x20,
+ 0x0c, 0xf0, 0x1c, 0xff, 0x3c, 0x00, 0x78, 0x69,
+ 0x00, 0x00, 0x09, 0x48, 0x00, 0x21, 0x00, 0x78,
+ 0x05, 0xf0, 0x3f, 0xfd, 0x05, 0xf0, 0x93, 0xf8,
+ 0x07, 0x49, 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd,
+ 0x01, 0x1c, 0x01, 0x20, 0xfa, 0xf7, 0x87, 0xfc,
+ 0x80, 0xbd, 0x00, 0xf0, 0x32, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x6a, 0x57, 0x01, 0x00, 0x3c, 0xd9,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0xf0, 0xff, 0xf9,
+ 0x0b, 0x49, 0x02, 0x24, 0x48, 0x60, 0x3c, 0x00,
+ 0xb4, 0x69, 0x00, 0x00, 0x0a, 0x48, 0x04, 0x61,
+ 0x01, 0x20, 0x77, 0x21, 0x09, 0x03, 0x08, 0x61,
+ 0x08, 0x4d, 0x68, 0x68, 0x80, 0x07, 0x02, 0xd4,
+ 0x68, 0x68, 0x20, 0x43, 0x68, 0x60, 0x09, 0xf0,
+ 0xc7, 0xf9, 0x68, 0x68, 0xa0, 0x43, 0x68, 0x60,
+ 0x00, 0x20, 0xb0, 0xbd, 0xe0, 0x60, 0x01, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00,
+ 0x80, 0xb5, 0x01, 0x23, 0x03, 0x22, 0x00, 0x21,
+ 0x3c, 0x00, 0xf0, 0x69, 0x00, 0x00, 0x02, 0x20,
+ 0x3c, 0xf0, 0xf1, 0xfa, 0x00, 0x28, 0x01, 0xd0,
+ 0xfa, 0xf7, 0x81, 0xfc, 0x80, 0xbd, 0x1c, 0xb5,
+ 0xfc, 0xf7, 0xf5, 0xfa, 0xfa, 0xf7, 0x19, 0xfe,
+ 0x01, 0xf0, 0x03, 0xf9, 0x00, 0x24, 0x21, 0x1c,
+ 0x68, 0x46, 0x01, 0xf0, 0xe2, 0xfb, 0x00, 0xab,
+ 0x18, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x02, 0x28,
+ 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, 0x0c, 0xf0,
+ 0xb2, 0xfc, 0x3c, 0x00, 0x2c, 0x6a, 0x00, 0x00,
+ 0x01, 0x34, 0x24, 0x06, 0x24, 0x16, 0x06, 0x2c,
+ 0xec, 0xdb, 0xfa, 0xf7, 0x09, 0xf9, 0xfa, 0xf7,
+ 0xe7, 0xfc, 0xfa, 0xf7, 0x33, 0xfa, 0xfa, 0xf7,
+ 0x6d, 0xfa, 0xfb, 0xf7, 0xdf, 0xff, 0x05, 0xf0,
+ 0x4d, 0xfb, 0x06, 0xf0, 0x81, 0xfc, 0x0b, 0xf0,
+ 0x7d, 0xf9, 0x07, 0xf0, 0x29, 0xfc, 0x11, 0x48,
+ 0x10, 0x21, 0x01, 0x60, 0x09, 0x01, 0x01, 0x60,
+ 0xc9, 0x02, 0x01, 0x60, 0x3c, 0x00, 0x68, 0x6a,
+ 0x00, 0x00, 0x89, 0x00, 0x01, 0x60, 0x20, 0x21,
+ 0x01, 0x60, 0x04, 0x21, 0x01, 0x60, 0x08, 0x21,
+ 0x01, 0x60, 0x40, 0x21, 0x01, 0x60, 0x80, 0x21,
+ 0x01, 0x60, 0x89, 0x00, 0x01, 0x60, 0x49, 0x00,
+ 0x01, 0x60, 0x49, 0x00, 0x01, 0x60, 0x49, 0x00,
+ 0x01, 0x60, 0xc9, 0x03, 0x01, 0x60, 0x89, 0x0b,
+ 0x01, 0x60, 0xf9, 0xf7, 0x41, 0xff, 0x1c, 0xbd,
+ 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00,
+ 0xa4, 0x6a, 0x00, 0x00, 0x80, 0xb5, 0x3b, 0xf0,
+ 0x4f, 0xf8, 0x3b, 0xf0, 0x7d, 0xf9, 0xfa, 0xf7,
+ 0x4b, 0xf9, 0x80, 0xbd, 0xf8, 0xb5, 0x00, 0x25,
+ 0x00, 0x24, 0x00, 0x22, 0x00, 0x28, 0x71, 0xd0,
+ 0x43, 0x4f, 0xb9, 0x68, 0x0b, 0x1a, 0xbb, 0x60,
+ 0xf8, 0x68, 0x39, 0x1c, 0x01, 0x30, 0xf8, 0x60,
+ 0x89, 0x6a, 0x00, 0x2b, 0x1e, 0xdc, 0x02, 0x24,
+ 0x00, 0x29, 0x06, 0xda, 0xfb, 0x69, 0x98, 0x42,
+ 0x3c, 0x00, 0xe0, 0x6a, 0x00, 0x00, 0x06, 0xdd,
+ 0x3b, 0x69, 0x98, 0x42, 0x09, 0xdd, 0x07, 0xe0,
+ 0xbb, 0x69, 0x98, 0x42, 0x01, 0xdc, 0x01, 0x24,
+ 0x03, 0xe0, 0x7b, 0x69, 0x98, 0x42, 0x00, 0xdd,
+ 0x03, 0x24, 0x78, 0x6a, 0x00, 0x28, 0x08, 0xd0,
+ 0x00, 0x20, 0x78, 0x62, 0x03, 0x2c, 0x01, 0xd1,
+ 0x02, 0x24, 0x02, 0xe0, 0x02, 0x2c, 0x00, 0xd1,
+ 0x01, 0x24, 0x2e, 0x48, 0x01, 0x2c, 0x00, 0x79,
+ 0x18, 0xd1, 0x3c, 0x00, 0x1c, 0x6b, 0x00, 0x00,
+ 0xbb, 0x78, 0x99, 0x42, 0x15, 0xda, 0x3b, 0x78,
+ 0x7b, 0x70, 0x39, 0x70, 0x01, 0x31, 0xb9, 0x62,
+ 0x01, 0xd5, 0x01, 0x31, 0xb9, 0x62, 0xb9, 0x6a,
+ 0x01, 0x25, 0x99, 0x42, 0x03, 0xd1, 0x04, 0x28,
+ 0x04, 0xd2, 0x01, 0x30, 0x00, 0xe0, 0x00, 0x20,
+ 0x38, 0x71, 0x01, 0x22, 0x00, 0x29, 0x33, 0xda,
+ 0x27, 0xe0, 0x03, 0x2c, 0x35, 0xd1, 0x00, 0x26,
+ 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, 0x58, 0x6b,
+ 0x00, 0x00, 0x1e, 0x49, 0x81, 0x40, 0x38, 0x6a,
+ 0x08, 0x18, 0x0c, 0xf0, 0x5c, 0xf8, 0x00, 0x28,
+ 0x2c, 0xd0, 0x1b, 0x48, 0x00, 0x78, 0x40, 0x07,
+ 0x05, 0xd5, 0xf8, 0x68, 0x39, 0x69, 0x88, 0x42,
+ 0x01, 0xdb, 0x03, 0x23, 0xfe, 0x56, 0xb8, 0x6a,
+ 0xb0, 0x42, 0x12, 0xdd, 0x01, 0x21, 0x79, 0x62,
+ 0x39, 0x78, 0x01, 0x25, 0x79, 0x70, 0x38, 0x70,
+ 0x01, 0x38, 0xb8, 0x62, 0x88, 0x42, 0x3c, 0x00,
+ 0x94, 0x6b, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x21,
+ 0x39, 0x71, 0x00, 0x28, 0x0c, 0xda, 0x07, 0x20,
+ 0x38, 0x71, 0x00, 0xe0, 0x12, 0xe0, 0x07, 0xe0,
+ 0x38, 0x79, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30,
+ 0x38, 0x71, 0x06, 0xe0, 0x00, 0x2a, 0x02, 0xd0,
+ 0x0c, 0xf0, 0xf8, 0xf8, 0x38, 0x62, 0x00, 0x2c,
+ 0x04, 0xd0, 0xfe, 0xf7, 0x97, 0xfd, 0x29, 0x1c,
+ 0x08, 0xf0, 0xfc, 0xfb, 0xf8, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0xd0, 0x6b, 0x00, 0x00, 0xac, 0x7e,
+ 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x1d, 0x75,
+ 0x01, 0x00, 0x80, 0xb5, 0x10, 0x68, 0x00, 0x28,
+ 0x02, 0xd0, 0x00, 0xf0, 0x0a, 0xf8, 0x80, 0xbd,
+ 0x03, 0x48, 0xc0, 0x69, 0x80, 0x68, 0x08, 0xf0,
+ 0xb2, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x84, 0x6a,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68,
+ 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7,
+ 0x7a, 0xfb, 0x3c, 0x00, 0x0c, 0x6c, 0x00, 0x00,
+ 0xe0, 0x68, 0xe1, 0x69, 0xc0, 0x68, 0x23, 0x1c,
+ 0x01, 0x4a, 0xff, 0xf7, 0xd7, 0xfb, 0x10, 0xbd,
+ 0xdd, 0x6b, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0x1c,
+ 0x0c, 0x21, 0x00, 0x20, 0xfa, 0xf7, 0xd6, 0xfc,
+ 0x04, 0x1c, 0x00, 0x68, 0x00, 0x21, 0x41, 0x60,
+ 0x01, 0x60, 0x29, 0x88, 0x01, 0x81, 0x69, 0x88,
+ 0x41, 0x81, 0x29, 0x1c, 0xff, 0x31, 0x21, 0x31,
+ 0x20, 0x1c, 0x03, 0xf0, 0x3c, 0x00, 0x48, 0x6c,
+ 0x00, 0x00, 0x77, 0xf9, 0x29, 0x1c, 0xff, 0x31,
+ 0x46, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x71, 0xf9,
+ 0x29, 0x1c, 0xff, 0x31, 0x50, 0x31, 0x20, 0x1c,
+ 0x03, 0xf0, 0x6b, 0xf9, 0x29, 0x1c, 0xff, 0x31,
+ 0x43, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x65, 0xf9,
+ 0x29, 0x1c, 0xff, 0x31, 0x63, 0x31, 0x20, 0x1c,
+ 0x03, 0xf0, 0x5f, 0xf9, 0x04, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, 0x3c, 0x00,
+ 0x84, 0x6c, 0x00, 0x00, 0xff, 0xf7, 0x8e, 0xfd,
+ 0x20, 0x1c, 0xb0, 0xbd, 0xe4, 0x62, 0x01, 0x00,
+ 0xf8, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, 0x04, 0xd1,
+ 0x05, 0x21, 0x18, 0x20, 0xfa, 0xf7, 0x02, 0xfb,
+ 0x4d, 0xe0, 0x29, 0x1c, 0x12, 0x31, 0x06, 0x22,
+ 0x60, 0x1c, 0xf9, 0xf7, 0x25, 0xfc, 0x22, 0x1c,
+ 0x30, 0x32, 0x00, 0x26, 0x00, 0x21, 0x00, 0x20,
+ 0x16, 0x70, 0x34, 0x4b, 0x1b, 0x5c, 0x2f, 0x8a,
+ 0x3c, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0xdf, 0x40,
+ 0xff, 0x07, 0x07, 0xd5, 0x17, 0x78, 0x01, 0x33,
+ 0x01, 0x37, 0x17, 0x70, 0x67, 0x18, 0x30, 0x37,
+ 0x7b, 0x70, 0x01, 0x31, 0x01, 0x30, 0x0e, 0x28,
+ 0xee, 0xdb, 0xa8, 0x7b, 0x60, 0x72, 0x10, 0x78,
+ 0x00, 0x28, 0x2b, 0xd0, 0x2a, 0x48, 0x1e, 0x21,
+ 0x09, 0x5c, 0x27, 0x1c, 0x10, 0x37, 0x21, 0x72,
+ 0x01, 0x68, 0x61, 0x81, 0xc1, 0x89, 0x21, 0x77,
+ 0x81, 0x89, 0x3c, 0x00, 0xfc, 0x6c, 0x00, 0x00,
+ 0x79, 0x73, 0xc1, 0x8a, 0xa1, 0x81, 0x01, 0x8b,
+ 0xe1, 0x81, 0x42, 0x8a, 0x21, 0x1c, 0x60, 0x31,
+ 0x4a, 0x80, 0x82, 0x8a, 0x8a, 0x80, 0x1f, 0x49,
+ 0x2c, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x09, 0xd0,
+ 0x02, 0x29, 0x0a, 0xd1, 0x01, 0x22, 0x62, 0x62,
+ 0x62, 0x72, 0x42, 0x8b, 0xa2, 0x81, 0x80, 0x8b,
+ 0xe0, 0x81, 0x03, 0xe0, 0x01, 0x21, 0x66, 0x62,
+ 0x00, 0xe0, 0x00, 0x21, 0x3c, 0x00, 0x38, 0x6d,
+ 0x00, 0x00, 0xe8, 0x7b, 0x08, 0x40, 0x01, 0xd1,
+ 0x00, 0x20, 0xf8, 0xbd, 0xa8, 0x68, 0x43, 0x1c,
+ 0x09, 0xd0, 0x22, 0x1c, 0x12, 0x32, 0x00, 0x92,
+ 0x93, 0x1d, 0x02, 0x32, 0x21, 0x1c, 0x01, 0xf0,
+ 0x9c, 0xfa, 0xa0, 0x62, 0x00, 0xe0, 0xa6, 0x62,
+ 0x68, 0x7b, 0x29, 0x1c, 0x1d, 0x31, 0x20, 0x74,
+ 0x0b, 0x48, 0x20, 0x22, 0x20, 0x62, 0x20, 0x1c,
+ 0x42, 0x30, 0xbe, 0x73, 0xf9, 0xf7, 0x3c, 0x00,
+ 0x74, 0x6d, 0x00, 0x00, 0xc1, 0xfb, 0x40, 0x34,
+ 0x26, 0x70, 0x68, 0x7e, 0x04, 0x49, 0x60, 0x70,
+ 0x68, 0x68, 0x2c, 0x31, 0x48, 0x60, 0x01, 0x20,
+ 0xda, 0xe7, 0x00, 0x00, 0x90, 0x58, 0x01, 0x00,
+ 0xc8, 0x6e, 0x01, 0x00, 0x91, 0x02, 0x01, 0x00,
+ 0x70, 0xb5, 0x16, 0x1c, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x00, 0x28, 0x06, 0xd0, 0x0c, 0x20, 0xfa, 0xf7,
+ 0x47, 0xfd, 0x30, 0xc0, 0x08, 0x38, 0x06, 0x72,
+ 0x3c, 0x00, 0xb0, 0x6d, 0x00, 0x00, 0x70, 0xbd,
+ 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x01, 0x1c,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0xd0,
+ 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0xfc, 0xf7,
+ 0xa0, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x0c, 0x79,
+ 0x01, 0x00, 0x70, 0xb5, 0x0e, 0x1c, 0x04, 0x1c,
+ 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, 0x8f, 0xfa,
+ 0x06, 0x4d, 0x28, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0xfa, 0xf7, 0x3c, 0x00, 0xec, 0x6d, 0x00, 0x00,
+ 0x89, 0xfa, 0x04, 0x48, 0x2e, 0x60, 0xc4, 0x60,
+ 0x01, 0x21, 0x01, 0x70, 0x70, 0xbd, 0x00, 0x00,
+ 0xa8, 0x7e, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00,
+ 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x68, 0x00, 0x28,
+ 0x01, 0xd1, 0xfa, 0xf7, 0x77, 0xfa, 0x05, 0x48,
+ 0x00, 0x69, 0x21, 0x68, 0xf9, 0xf7, 0xdf, 0xfa,
+ 0x00, 0x20, 0x20, 0x60, 0x10, 0xbd, 0x00, 0x00,
+ 0xa8, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0x28, 0x6e,
+ 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, 0x01, 0x20,
+ 0x05, 0x49, 0xc0, 0x06, 0x80, 0xb5, 0x08, 0x60,
+ 0x00, 0x22, 0x03, 0x21, 0x54, 0x20, 0x0c, 0xf0,
+ 0xb8, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x04, 0x21,
+ 0xc4, 0x20, 0x0c, 0xf0, 0xae, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x00, 0x88,
+ 0x02, 0x49, 0xff, 0xf7, 0xb8, 0xff, 0x3c, 0x00,
+ 0x64, 0x6e, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0x75, 0x4b, 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00,
+ 0xf8, 0xb5, 0x06, 0x1c, 0x31, 0x48, 0x00, 0x25,
+ 0xc0, 0x68, 0x0c, 0x1c, 0x00, 0x28, 0x30, 0xd0,
+ 0x2e, 0x48, 0x2f, 0x4f, 0x04, 0x30, 0x00, 0x78,
+ 0x38, 0x76, 0x2c, 0x48, 0x04, 0x30, 0x40, 0x78,
+ 0x38, 0x81, 0x00, 0x2a, 0x0b, 0xd0, 0xf9, 0xf7,
+ 0xa5, 0xfa, 0x1f, 0x20, 0xb8, 0x76, 0x20, 0x1c,
+ 0x3c, 0x00, 0xa0, 0x6e, 0x00, 0x00, 0xf9, 0xf7,
+ 0xf6, 0xf9, 0x25, 0x48, 0x04, 0x30, 0x80, 0x78,
+ 0xb8, 0x76, 0x43, 0xe0, 0x25, 0x48, 0x22, 0x49,
+ 0x84, 0x42, 0x4d, 0x69, 0x02, 0xd2, 0x6c, 0x43,
+ 0xe4, 0x0b, 0x0f, 0xe0, 0x1f, 0x48, 0x21, 0x1c,
+ 0x80, 0x6a, 0x00, 0x90, 0xf9, 0xf7, 0x23, 0xfc,
+ 0x00, 0x99, 0x02, 0x1c, 0x4a, 0x43, 0xa1, 0x1a,
+ 0x1a, 0x4a, 0x69, 0x43, 0x52, 0x6a, 0xc9, 0x0b,
+ 0x50, 0x43, 0x3c, 0x00, 0xdc, 0x6e, 0x00, 0x00,
+ 0x44, 0x18, 0x02, 0x2c, 0x01, 0xd8, 0x00, 0x20,
+ 0xf8, 0xbd, 0xf9, 0xf7, 0x7d, 0xfa, 0x1f, 0x20,
+ 0xb8, 0x76, 0x20, 0x1c, 0xf9, 0xf7, 0xae, 0xf9,
+ 0x04, 0x1c, 0x11, 0x48, 0x04, 0x30, 0x80, 0x78,
+ 0xb8, 0x76, 0x0f, 0x4f, 0x7d, 0x6a, 0xac, 0x42,
+ 0x04, 0xd2, 0x20, 0x1c, 0xff, 0xf7, 0x22, 0xfc,
+ 0x05, 0x1c, 0x12, 0xe0, 0x21, 0x1c, 0x28, 0x1c,
+ 0xf9, 0xf7, 0xfc, 0xfb, 0x3c, 0x00, 0x18, 0x6f,
+ 0x00, 0x00, 0x06, 0x1c, 0x68, 0x43, 0x20, 0x1a,
+ 0xff, 0xf7, 0x17, 0xfc, 0x05, 0x1c, 0x00, 0x24,
+ 0x04, 0xe0, 0x78, 0x6a, 0xff, 0xf7, 0x11, 0xfc,
+ 0x45, 0x19, 0x01, 0x34, 0xb4, 0x42, 0xf8, 0xd3,
+ 0x28, 0x1c, 0xd4, 0xe7, 0x00, 0x00, 0xc8, 0x74,
+ 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0xc0, 0xc6,
+ 0x2d, 0x00, 0x01, 0x1c, 0x7d, 0x20, 0x80, 0xb5,
+ 0xc0, 0x00, 0xf9, 0xf7, 0x72, 0xfb, 0x3c, 0x00,
+ 0x54, 0x6f, 0x00, 0x00, 0x02, 0x49, 0x88, 0x61,
+ 0x40, 0x08, 0xc8, 0x61, 0x80, 0xbd, 0x00, 0x00,
+ 0xc8, 0x74, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c,
+ 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x42, 0xfa,
+ 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x0a, 0xfa,
+ 0x00, 0xf0, 0x68, 0xfe, 0x10, 0xbd, 0x00, 0x00,
+ 0x85, 0x6f, 0x00, 0x00, 0x30, 0xb5, 0x0f, 0x4d,
+ 0x2a, 0x78, 0x04, 0x2a, 0x19, 0xd8, 0x00, 0x2a,
+ 0x3c, 0x00, 0x90, 0x6f, 0x00, 0x00, 0x17, 0xd0,
+ 0x00, 0x21, 0x07, 0xe0, 0x4b, 0x00, 0x5b, 0x18,
+ 0x5c, 0x19, 0x01, 0x23, 0xe4, 0x56, 0x84, 0x42,
+ 0x02, 0xda, 0x01, 0x31, 0x8a, 0x42, 0xf5, 0xdc,
+ 0x8a, 0x42, 0x00, 0xd1, 0x01, 0x39, 0x48, 0x00,
+ 0x40, 0x18, 0x40, 0x19, 0x81, 0x78, 0x02, 0x4a,
+ 0x34, 0x3a, 0x11, 0x70, 0xc0, 0x78, 0x50, 0x70,
+ 0x30, 0xbd, 0x00, 0x75, 0x01, 0x00, 0x30, 0xb5,
+ 0x11, 0x1c, 0x3c, 0x00, 0xcc, 0x6f, 0x00, 0x00,
+ 0x38, 0x31, 0x85, 0xb0, 0x91, 0x62, 0x08, 0x21,
+ 0x11, 0x86, 0x00, 0x23, 0x14, 0x1c, 0x01, 0x1c,
+ 0x53, 0x63, 0xc0, 0x68, 0x15, 0x4d, 0x0b, 0xe0,
+ 0x02, 0x68, 0xaa, 0x42, 0x06, 0xd1, 0xc2, 0x68,
+ 0xca, 0x60, 0xc3, 0x60, 0x03, 0x60, 0xfa, 0xf7,
+ 0xd1, 0xfa, 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68,
+ 0x00, 0x28, 0xf1, 0xd1, 0x22, 0x1c, 0x40, 0x32,
+ 0x08, 0x21, 0x20, 0x68, 0x3c, 0x00, 0x08, 0x70,
+ 0x00, 0x00, 0xfa, 0xf7, 0x64, 0xfb, 0x0b, 0x49,
+ 0x20, 0x1c, 0x48, 0x30, 0x02, 0x90, 0x04, 0x94,
+ 0x03, 0x91, 0xe0, 0x69, 0x82, 0x88, 0x01, 0x68,
+ 0x6e, 0x20, 0x01, 0x92, 0x00, 0x91, 0x22, 0x1c,
+ 0x56, 0x32, 0x03, 0x5d, 0x21, 0x1c, 0x28, 0x31,
+ 0x20, 0x68, 0xff, 0xf7, 0x58, 0xfa, 0x05, 0xb0,
+ 0x30, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0xd5, 0x70,
+ 0x00, 0x00, 0x1c, 0xb5, 0x07, 0x49, 0x3c, 0x00,
+ 0x44, 0x70, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x90,
+ 0x00, 0x91, 0xc0, 0x69, 0x13, 0x1c, 0x84, 0x88,
+ 0x01, 0x68, 0x10, 0x68, 0x48, 0x33, 0x22, 0x1c,
+ 0xff, 0xf7, 0x08, 0xf9, 0x1c, 0xbd, 0x00, 0x00,
+ 0xc9, 0x6f, 0x00, 0x00, 0x10, 0xb5, 0x14, 0x1c,
+ 0x18, 0x48, 0x03, 0xf0, 0x89, 0xf8, 0xa0, 0x42,
+ 0x01, 0xd0, 0xfa, 0xf7, 0x45, 0xf9, 0x04, 0x22,
+ 0x20, 0x1c, 0x40, 0x30, 0xa1, 0x6a, 0xf9, 0xf7,
+ 0x3c, 0x00, 0x80, 0x70, 0x00, 0x00, 0xbd, 0xf9,
+ 0x00, 0x28, 0x02, 0xd1, 0x01, 0x20, 0x20, 0x62,
+ 0x05, 0xe0, 0x00, 0x20, 0x20, 0x62, 0x84, 0x20,
+ 0x00, 0x5d, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c,
+ 0x09, 0xf0, 0x23, 0xfb, 0x05, 0xe0, 0x20, 0x68,
+ 0xfa, 0xf7, 0x79, 0xfa, 0x20, 0x1c, 0xfa, 0xf7,
+ 0xa4, 0xfb, 0xe0, 0x69, 0x80, 0x79, 0x06, 0x28,
+ 0x06, 0xd1, 0x20, 0x6a, 0x06, 0x49, 0x00, 0x28,
+ 0x03, 0xd0, 0x3c, 0x00, 0xbc, 0x70, 0x00, 0x00,
+ 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x10, 0xbd,
+ 0x48, 0x69, 0x01, 0x30, 0x48, 0x61, 0x10, 0xbd,
+ 0xa0, 0x6a, 0x01, 0x00, 0x28, 0x61, 0x01, 0x00,
+ 0x1c, 0xb5, 0x14, 0x1c, 0x15, 0x48, 0x03, 0xf0,
+ 0x51, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7,
+ 0x0d, 0xf9, 0x20, 0x1c, 0x4f, 0x30, 0x02, 0x79,
+ 0x41, 0x79, 0x00, 0xab, 0x12, 0x02, 0x11, 0x43,
+ 0xc2, 0x78, 0x12, 0x04, 0x3c, 0x00, 0xf8, 0x70,
+ 0x00, 0x00, 0x11, 0x43, 0x82, 0x78, 0x12, 0x06,
+ 0x11, 0x43, 0x00, 0x91, 0x01, 0x78, 0x40, 0x78,
+ 0x09, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c,
+ 0x69, 0x46, 0x06, 0xf0, 0x3c, 0xf9, 0x00, 0x28,
+ 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, 0xe3, 0xfa,
+ 0x1c, 0xbd, 0x20, 0x68, 0xfa, 0xf7, 0x39, 0xfa,
+ 0x20, 0x1c, 0xfa, 0xf7, 0x64, 0xfb, 0xf7, 0xe7,
+ 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x3c, 0x00,
+ 0x34, 0x71, 0x00, 0x00, 0xbc, 0xb5, 0x1f, 0x4d,
+ 0x14, 0x1c, 0x28, 0x1c, 0xdc, 0x30, 0x03, 0xf0,
+ 0x1f, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7,
+ 0xdb, 0xf8, 0xa0, 0x6c, 0x00, 0xab, 0x02, 0x78,
+ 0x81, 0x78, 0x12, 0x02, 0x11, 0x43, 0x02, 0x79,
+ 0x12, 0x04, 0x11, 0x43, 0x42, 0x79, 0x12, 0x06,
+ 0x11, 0x43, 0x00, 0x91, 0x81, 0x79, 0xc0, 0x79,
+ 0x00, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c,
+ 0x3c, 0x00, 0x70, 0x71, 0x00, 0x00, 0x69, 0x46,
+ 0x06, 0xf0, 0x0b, 0xf9, 0x00, 0x28, 0x17, 0xd0,
+ 0x01, 0x28, 0x0e, 0xd1, 0xed, 0x6c, 0x00, 0x2d,
+ 0x0b, 0xd0, 0x80, 0x20, 0x02, 0x5d, 0xe0, 0x6c,
+ 0x01, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x00, 0x21,
+ 0x60, 0x68, 0x6b, 0x46, 0x0a, 0x30, 0xf9, 0xf7,
+ 0x23, 0xf9, 0x20, 0x68, 0xfa, 0xf7, 0xfb, 0xf9,
+ 0x20, 0x1c, 0xfa, 0xf7, 0x26, 0xfb, 0xbc, 0xbd,
+ 0x20, 0x1c, 0x3c, 0x00, 0xac, 0x71, 0x00, 0x00,
+ 0x00, 0xf0, 0x8e, 0xfe, 0xfa, 0xe7, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0xbc, 0xb5, 0x04, 0x1c,
+ 0x40, 0x6a, 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0,
+ 0x60, 0x68, 0x00, 0x8b, 0x05, 0x07, 0x2d, 0x0f,
+ 0x22, 0x1c, 0x40, 0x32, 0x08, 0x21, 0x20, 0x68,
+ 0xfa, 0xf7, 0x7e, 0xfa, 0xa1, 0x68, 0x01, 0x95,
+ 0x00, 0x91, 0x21, 0x1c, 0x22, 0x1c, 0x60, 0x32,
+ 0x20, 0x68, 0x50, 0x31, 0x3c, 0x00, 0xe8, 0x71,
+ 0x00, 0x00, 0x0d, 0x1c, 0xe3, 0x68, 0x09, 0xf0,
+ 0xe2, 0xff, 0xe0, 0x69, 0x80, 0x6b, 0x00, 0x28,
+ 0x03, 0xd1, 0xfe, 0xf7, 0xe8, 0xfa, 0x00, 0x28,
+ 0x01, 0xd0, 0x18, 0x20, 0x00, 0xe0, 0x10, 0x20,
+ 0x06, 0x49, 0x01, 0x94, 0x00, 0x91, 0xe1, 0x69,
+ 0x08, 0x23, 0x09, 0x68, 0x0a, 0x18, 0x21, 0x1c,
+ 0x28, 0x31, 0x28, 0x1c, 0xff, 0xf7, 0x87, 0xf9,
+ 0xbc, 0xbd, 0x35, 0x71, 0x00, 0x00, 0x3c, 0x00,
+ 0x24, 0x72, 0x00, 0x00, 0x10, 0xb5, 0x10, 0x1c,
+ 0x38, 0x30, 0x90, 0x62, 0x04, 0x20, 0x10, 0x86,
+ 0x00, 0x20, 0x50, 0x63, 0x10, 0x68, 0x14, 0x1c,
+ 0x40, 0x32, 0x04, 0x21, 0xfa, 0xf7, 0x4a, 0xfa,
+ 0x23, 0x1c, 0x21, 0x1c, 0x28, 0x31, 0x02, 0x4a,
+ 0x20, 0x68, 0xff, 0xf7, 0xbd, 0xf8, 0x10, 0xbd,
+ 0x65, 0x70, 0x00, 0x00, 0x0e, 0xb5, 0xc3, 0x69,
+ 0x02, 0x1c, 0x98, 0x88, 0x05, 0x49, 0x02, 0x92,
+ 0x3c, 0x00, 0x60, 0x72, 0x00, 0x00, 0x01, 0x91,
+ 0x00, 0x90, 0x1b, 0x68, 0x10, 0x68, 0x91, 0x69,
+ 0x03, 0x22, 0xff, 0xf7, 0xae, 0xf9, 0x0e, 0xbd,
+ 0x00, 0x00, 0x25, 0x72, 0x00, 0x00, 0x0e, 0xb5,
+ 0x02, 0x1c, 0x06, 0x49, 0x10, 0x20, 0x00, 0x90,
+ 0x02, 0x92, 0x13, 0x1c, 0x01, 0x91, 0x10, 0x68,
+ 0x00, 0x22, 0x70, 0x33, 0x00, 0x21, 0xff, 0xf7,
+ 0x9c, 0xf9, 0x0e, 0xbd, 0x00, 0x00, 0x25, 0x72,
+ 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x72, 0x00, 0x00,
+ 0x10, 0xb5, 0x03, 0x1c, 0x00, 0x21, 0x00, 0x20,
+ 0x08, 0x4c, 0x00, 0xe0, 0x01, 0x31, 0xca, 0x00,
+ 0xa2, 0x58, 0x9a, 0x42, 0x02, 0xd0, 0x0b, 0x29,
+ 0xf8, 0xd3, 0x10, 0xbd, 0x0b, 0x29, 0xfc, 0xd2,
+ 0xc9, 0x00, 0x09, 0x19, 0x00, 0x20, 0x08, 0x71,
+ 0x01, 0x20, 0x10, 0xbd, 0x38, 0x58, 0x01, 0x00,
+ 0x8c, 0xb5, 0x00, 0xab, 0x86, 0x21, 0x19, 0x80,
+ 0x01, 0x1c, 0x04, 0x48, 0x3c, 0x00, 0xd8, 0x72,
+ 0x00, 0x00, 0x06, 0xf0, 0xee, 0xfe, 0x01, 0x90,
+ 0x68, 0x46, 0x06, 0xf0, 0xfa, 0xf8, 0x8c, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x48, 0x0d, 0x49, 0x94, 0xb0,
+ 0x04, 0x80, 0x06, 0x22, 0x18, 0x31, 0x0c, 0x30,
+ 0xf9, 0xf7, 0xfb, 0xf8, 0x01, 0xa8, 0x07, 0xf0,
+ 0xa2, 0xf8, 0x0c, 0x20, 0x09, 0xa9, 0x48, 0x72,
+ 0x00, 0xab, 0x1c, 0x80, 0x02, 0x21, 0x3c, 0x00,
+ 0x14, 0x73, 0x00, 0x00, 0x68, 0x46, 0x03, 0xf0,
+ 0xdb, 0xff, 0x04, 0x90, 0x01, 0xa8, 0x06, 0xf0,
+ 0xd1, 0xf8, 0x14, 0xb0, 0x10, 0xbd, 0x00, 0x00,
+ 0x58, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0,
+ 0x45, 0xfe, 0x05, 0xf0, 0x53, 0xfa, 0x80, 0xbd,
+ 0x10, 0xb5, 0x19, 0x4c, 0xe0, 0x68, 0x00, 0x28,
+ 0x06, 0xd0, 0x61, 0x1c, 0x08, 0x78, 0x00, 0x28,
+ 0x03, 0xd1, 0x48, 0x78, 0xff, 0x30, 0x08, 0x70,
+ 0x3c, 0x00, 0x50, 0x73, 0x00, 0x00, 0x10, 0xbd,
+ 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x08, 0x70,
+ 0xa1, 0x68, 0x00, 0x29, 0xf7, 0xd0, 0x00, 0x28,
+ 0xf5, 0xd1, 0x0e, 0x48, 0x54, 0x30, 0x81, 0x78,
+ 0x00, 0x29, 0x03, 0xd1, 0xc1, 0x78, 0xff, 0x31,
+ 0x81, 0x70, 0x10, 0xbd, 0xff, 0x31, 0x09, 0x06,
+ 0x09, 0x0e, 0x81, 0x70, 0xf9, 0xd1, 0xa1, 0x69,
+ 0x00, 0x29, 0xf6, 0xd0, 0x80, 0x88, 0x03, 0xf0,
+ 0xd0, 0xfb, 0x3c, 0x00, 0x8c, 0x73, 0x00, 0x00,
+ 0x04, 0x4a, 0x01, 0x1c, 0x5c, 0x32, 0x0c, 0x32,
+ 0x05, 0xca, 0x80, 0x1a, 0xa2, 0x69, 0xf9, 0xf7,
+ 0x1f, 0xf8, 0x10, 0xbd, 0x44, 0x7d, 0x01, 0x00,
+ 0xf0, 0xb5, 0x04, 0x1c, 0x40, 0x68, 0x00, 0x25,
+ 0x01, 0x79, 0x00, 0x22, 0x85, 0xb0, 0xc9, 0x07,
+ 0xcb, 0x17, 0x69, 0x49, 0x01, 0x33, 0x89, 0x6a,
+ 0x10, 0x29, 0x05, 0xd3, 0x66, 0x49, 0xc0, 0x39,
+ 0x08, 0x6b, 0x01, 0x30, 0x3c, 0x00, 0xc8, 0x73,
+ 0x00, 0x00, 0x08, 0x63, 0x8e, 0xe0, 0x21, 0x68,
+ 0x0e, 0x68, 0xf6, 0x78, 0xb7, 0x06, 0xff, 0x0f,
+ 0xb6, 0x09, 0x00, 0x2b, 0x04, 0x97, 0x06, 0xd0,
+ 0x63, 0x69, 0x1f, 0x1c, 0x1b, 0x6a, 0x50, 0x37,
+ 0x9f, 0x42, 0x00, 0xd1, 0x01, 0x25, 0x00, 0x2d,
+ 0x02, 0xd0, 0x63, 0x69, 0x1b, 0x6a, 0x04, 0xe0,
+ 0x3c, 0x23, 0x59, 0x4f, 0x73, 0x43, 0xdb, 0x19,
+ 0x04, 0x33, 0xe3, 0x61, 0x9f, 0x88, 0x3c, 0x00,
+ 0x04, 0x74, 0x00, 0x00, 0x00, 0x2f, 0x70, 0xd0,
+ 0x9b, 0x79, 0x02, 0x2b, 0x6e, 0xd0, 0x04, 0x2b,
+ 0x17, 0xd0, 0x06, 0x2b, 0x69, 0xd1, 0x08, 0x68,
+ 0xa0, 0x61, 0x08, 0x89, 0x04, 0x38, 0x08, 0x81,
+ 0x20, 0x68, 0x01, 0x68, 0x04, 0x31, 0x01, 0x60,
+ 0x4e, 0x49, 0x00, 0x29, 0x5d, 0xd0, 0x04, 0x9f,
+ 0xba, 0x42, 0x5a, 0xd1, 0x49, 0x48, 0x22, 0x1c,
+ 0x1c, 0x30, 0x02, 0xf0, 0x65, 0xfe, 0x05, 0xb0,
+ 0x3c, 0x00, 0x40, 0x74, 0x00, 0x00, 0xf0, 0xbd,
+ 0x09, 0x68, 0x25, 0x1c, 0xca, 0x79, 0x40, 0x35,
+ 0x26, 0x1c, 0xea, 0x73, 0x8b, 0x79, 0x22, 0x1c,
+ 0x50, 0x32, 0x13, 0x70, 0x4b, 0x79, 0x60, 0x36,
+ 0x53, 0x70, 0x0b, 0x79, 0x93, 0x70, 0x4b, 0x78,
+ 0xd3, 0x70, 0x09, 0x78, 0x11, 0x71, 0x00, 0x21,
+ 0x29, 0x72, 0x16, 0x21, 0xb1, 0x73, 0x61, 0x6a,
+ 0x00, 0x29, 0x06, 0xd0, 0x01, 0x8b, 0x09, 0x07,
+ 0x09, 0x0f, 0x3c, 0x00, 0x7c, 0x74, 0x00, 0x00,
+ 0x29, 0x72, 0xb1, 0x81, 0x18, 0x21, 0xb1, 0x73,
+ 0x01, 0x1c, 0x0a, 0x31, 0x20, 0x1c, 0x06, 0x22,
+ 0x49, 0x30, 0xf9, 0xf7, 0x33, 0xf8, 0x60, 0x68,
+ 0x14, 0x22, 0x01, 0x88, 0xe9, 0x82, 0x01, 0x1d,
+ 0x20, 0x1c, 0x58, 0x30, 0xf9, 0xf7, 0x2a, 0xf8,
+ 0xe8, 0x8a, 0x30, 0x49, 0x08, 0x40, 0x01, 0x21,
+ 0x89, 0x03, 0x08, 0x43, 0xe8, 0x82, 0x70, 0x89,
+ 0x0f, 0x21, 0x08, 0x40, 0x3c, 0x00, 0xb8, 0x74,
+ 0x00, 0x00, 0x70, 0x81, 0x20, 0x68, 0x01, 0x89,
+ 0x08, 0x39, 0x01, 0x81, 0x20, 0x68, 0x01, 0x68,
+ 0x08, 0x31, 0x01, 0x60, 0x08, 0x21, 0x00, 0x20,
+ 0xfa, 0xf7, 0x83, 0xf8, 0x05, 0x1c, 0x02, 0x68,
+ 0x20, 0x68, 0x08, 0x21, 0xfa, 0xf7, 0xfb, 0xf8,
+ 0x20, 0x68, 0xfa, 0xf7, 0x74, 0xf8, 0x21, 0x49,
+ 0xc5, 0x60, 0x2f, 0xe0, 0x30, 0xe0, 0xff, 0xe7,
+ 0x21, 0x68, 0x60, 0x68, 0x0a, 0x68, 0x3c, 0x00,
+ 0xf4, 0x74, 0x00, 0x00, 0x80, 0x23, 0xa2, 0x64,
+ 0x1e, 0x55, 0xe5, 0x64, 0x55, 0x79, 0x13, 0x79,
+ 0x2d, 0x02, 0x5b, 0x19, 0x95, 0x79, 0x2d, 0x04,
+ 0x5b, 0x19, 0xd5, 0x79, 0x2d, 0x06, 0x5b, 0x19,
+ 0x95, 0x78, 0x12, 0x78, 0x12, 0x02, 0xaa, 0x18,
+ 0x15, 0x04, 0x0a, 0x89, 0x2d, 0x0c, 0x08, 0x3a,
+ 0x0a, 0x81, 0x21, 0x68, 0x0a, 0x68, 0x08, 0x32,
+ 0x0a, 0x60, 0xe1, 0x69, 0x02, 0x1c, 0x0a, 0x32,
+ 0x3c, 0x00, 0x30, 0x75, 0x00, 0x00, 0x01, 0xa8,
+ 0x09, 0x68, 0x0b, 0xf0, 0x3e, 0xf9, 0xe0, 0x69,
+ 0x2b, 0x1c, 0x01, 0x68, 0x20, 0x1c, 0x70, 0x30,
+ 0x01, 0xaa, 0x0b, 0xf0, 0x86, 0xf9, 0x09, 0x49,
+ 0x01, 0x22, 0x6d, 0xe7, 0x20, 0x68, 0xfa, 0xf7,
+ 0x22, 0xf8, 0x20, 0x1c, 0xfa, 0xf7, 0x4d, 0xf9,
+ 0x70, 0xe7, 0x84, 0x6a, 0x01, 0x00, 0x68, 0x61,
+ 0x01, 0x00, 0x55, 0x72, 0x00, 0x00, 0x8f, 0xc7,
+ 0xff, 0xff, 0x3c, 0x00, 0x6c, 0x75, 0x00, 0x00,
+ 0x41, 0x70, 0x00, 0x00, 0x79, 0x72, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x82, 0x20, 0xf9, 0xf7,
+ 0x93, 0xfe, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0xc0, 0x68, 0xf9, 0xf7, 0xfa, 0xff,
+ 0x01, 0x20, 0x80, 0xbd, 0x3c, 0x00, 0xa8, 0x75,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0xff, 0x20,
+ 0xf9, 0xf7, 0x79, 0xfe, 0x80, 0xbd, 0x70, 0x47,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x20,
+ 0x70, 0x47, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x06, 0x21, 0x99, 0x20,
+ 0xf9, 0xf7, 0x65, 0xfe, 0x80, 0xbd, 0xb0, 0xb5,
+ 0x00, 0x25, 0x01, 0x29, 0x12, 0x4c, 0x3c, 0x00,
+ 0xe4, 0x75, 0x00, 0x00, 0x0f, 0xd1, 0x0a, 0xf0,
+ 0x0f, 0xfc, 0x00, 0x28, 0x1d, 0xd0, 0x61, 0x78,
+ 0x3c, 0x23, 0x59, 0x43, 0x09, 0x19, 0x04, 0x31,
+ 0x01, 0x62, 0x61, 0x1c, 0x41, 0x62, 0x84, 0x62,
+ 0x04, 0x1c, 0x50, 0x34, 0x06, 0xe0, 0x00, 0x29,
+ 0x0f, 0xd1, 0x3c, 0x20, 0x50, 0x43, 0x25, 0x70,
+ 0x04, 0x19, 0x04, 0x34, 0x00, 0x2c, 0x08, 0xd0,
+ 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x21,
+ 0x3c, 0x00, 0x20, 0x76, 0x00, 0x00, 0xf8, 0xf7,
+ 0x18, 0xff, 0xa5, 0x80, 0x07, 0x20, 0xa0, 0x71,
+ 0xb0, 0xbd, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x00, 0x21, 0x01, 0xf0, 0x41, 0xfc,
+ 0x60, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x21, 0x68,
+ 0x01, 0x60, 0x20, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0x61, 0x68, 0x41, 0x60, 0x12, 0x4e, 0x70, 0x68,
+ 0xa0, 0x42, 0x01, 0xd1, 0x60, 0x68, 0x70, 0x60,
+ 0xe0, 0x68, 0x3c, 0x00, 0x5c, 0x76, 0x00, 0x00,
+ 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x25, 0x06, 0xe0,
+ 0xe0, 0x68, 0xe9, 0x00, 0x41, 0x18, 0x14, 0x20,
+ 0x0b, 0xf0, 0xe2, 0xff, 0x01, 0x35, 0x30, 0x88,
+ 0x85, 0x42, 0xf5, 0xdb, 0x06, 0x21, 0x20, 0x1c,
+ 0x44, 0x30, 0xf8, 0xf7, 0xe9, 0xfe, 0x20, 0x6b,
+ 0x00, 0x28, 0x01, 0xd0, 0xf9, 0xf7, 0x86, 0xff,
+ 0xe0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xfa, 0xf7,
+ 0xaf, 0xf8, 0x70, 0xbd, 0x3c, 0x00, 0x98, 0x76,
+ 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0xf0, 0xb5,
+ 0x1d, 0x4f, 0x05, 0x9d, 0x3f, 0x68, 0x01, 0x26,
+ 0x1c, 0x1c, 0x33, 0x1c, 0x00, 0x2f, 0x00, 0xd0,
+ 0x2b, 0x1c, 0x1d, 0x06, 0x2d, 0x0e, 0x00, 0x29,
+ 0x06, 0xd0, 0x11, 0x78, 0x0e, 0x23, 0x16, 0x4f,
+ 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, 0x10, 0xe0,
+ 0x21, 0x78, 0x00, 0x29, 0x13, 0xd0, 0xff, 0x31,
+ 0x0d, 0xe0, 0x01, 0x29, 0x01, 0xd9, 0x3c, 0x00,
+ 0xd4, 0x76, 0x00, 0x00, 0x01, 0x31, 0x11, 0x70,
+ 0x11, 0x78, 0x0e, 0x23, 0x0f, 0x4f, 0x49, 0x08,
+ 0x11, 0x70, 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43,
+ 0xdb, 0x19, 0x59, 0x5c, 0x21, 0x70, 0x21, 0x78,
+ 0x00, 0x29, 0x02, 0xd1, 0x11, 0x78, 0x00, 0x29,
+ 0xea, 0xd1, 0x09, 0x48, 0xc0, 0x68, 0x00, 0x28,
+ 0x05, 0xd0, 0x21, 0x78, 0x30, 0x1c, 0x00, 0x29,
+ 0x00, 0xd1, 0x00, 0x20, 0xf0, 0xbd, 0x01, 0x20,
+ 0x3c, 0x00, 0x10, 0x77, 0x00, 0x00, 0xf0, 0xbd,
+ 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x24, 0x67,
+ 0x01, 0x00, 0x5c, 0x67, 0x01, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x84, 0x46, 0x00, 0x20, 0xf0, 0xb5,
+ 0x00, 0x29, 0x09, 0xd0, 0x11, 0x78, 0x1a, 0x4e,
+ 0xb1, 0x70, 0x19, 0x4e, 0xb1, 0x78, 0x71, 0x70,
+ 0x31, 0x70, 0x01, 0x21, 0x31, 0x61, 0x27, 0xe0,
+ 0x16, 0x4e, 0x01, 0x23, 0xf1, 0x56, 0x63, 0x46,
+ 0x5f, 0x68, 0x3c, 0x00, 0x4c, 0x77, 0x00, 0x00,
+ 0x00, 0x23, 0xf6, 0x56, 0x01, 0x25, 0xcc, 0x0f,
+ 0xb7, 0x42, 0x00, 0xd9, 0x00, 0x25, 0x00, 0x2c,
+ 0x01, 0xd0, 0x00, 0x2d, 0xe8, 0xd1, 0x0e, 0x4f,
+ 0x3b, 0x69, 0x00, 0x2b, 0x03, 0xd0, 0x00, 0x2d,
+ 0x01, 0xd1, 0x16, 0x70, 0x02, 0xe0, 0x1c, 0x43,
+ 0x01, 0xd1, 0x11, 0x70, 0x01, 0x20, 0x01, 0x24,
+ 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x24, 0x3c, 0x61,
+ 0x00, 0x2c, 0x02, 0xd0, 0x3c, 0x00, 0x88, 0x77,
+ 0x00, 0x00, 0x71, 0x1c, 0x39, 0x70, 0x01, 0xe0,
+ 0xff, 0x31, 0x79, 0x70, 0x00, 0x28, 0xd5, 0xd0,
+ 0x01, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x90, 0xb5, 0x0a, 0x4c, 0x00, 0x20,
+ 0x93, 0xb0, 0x20, 0x61, 0x03, 0x90, 0x68, 0x46,
+ 0x00, 0x21, 0x08, 0xf0, 0x84, 0xfd, 0x20, 0x7a,
+ 0x02, 0x28, 0x01, 0xd1, 0xe0, 0x6b, 0x00, 0xe0,
+ 0x20, 0x6c, 0xe0, 0x61, 0x01, 0x20, 0x3c, 0x00,
+ 0xc4, 0x77, 0x00, 0x00, 0x08, 0xf0, 0x8a, 0xfd,
+ 0x13, 0xb0, 0x90, 0xbd, 0xf4, 0x6e, 0x01, 0x00,
+ 0xf7, 0xb5, 0x05, 0x1c, 0x88, 0x88, 0x0c, 0x1c,
+ 0x82, 0xb0, 0x1f, 0x4f, 0x00, 0x28, 0x00, 0xd1,
+ 0x00, 0x27, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1,
+ 0xf9, 0xf7, 0x8a, 0xfd, 0x1b, 0x48, 0x3b, 0x1c,
+ 0x00, 0x68, 0x21, 0x1c, 0x02, 0x68, 0x28, 0x1c,
+ 0x00, 0x92, 0x04, 0x9a, 0xfe, 0xf7, 0x3c, 0xf8,
+ 0x3c, 0x00, 0x00, 0x78, 0x00, 0x00, 0x06, 0x1c,
+ 0x22, 0xd0, 0x03, 0x21, 0x04, 0x98, 0x02, 0xf0,
+ 0xb8, 0xff, 0x00, 0x28, 0x1b, 0xd0, 0x80, 0x78,
+ 0x01, 0x21, 0x03, 0xf0, 0xe4, 0xff, 0xa0, 0x88,
+ 0xa1, 0x8e, 0x48, 0x43, 0x00, 0x04, 0x0f, 0x49,
+ 0x00, 0x0c, 0x08, 0x80, 0x03, 0xf0, 0x81, 0xf9,
+ 0x01, 0x22, 0x00, 0x2d, 0x00, 0xd1, 0x00, 0x22,
+ 0x01, 0x1c, 0x0e, 0x20, 0x0b, 0xf0, 0xc9, 0xfe,
+ 0x00, 0x2f, 0x3c, 0x00, 0x3c, 0x78, 0x00, 0x00,
+ 0x08, 0xd1, 0x00, 0x21, 0x28, 0x1c, 0x02, 0xf0,
+ 0xbd, 0xfc, 0x03, 0xe0, 0x00, 0x26, 0x28, 0x1c,
+ 0x00, 0xf0, 0x0a, 0xf8, 0x30, 0x1c, 0x05, 0xb0,
+ 0xf0, 0xbd, 0x00, 0x00, 0xc1, 0xa1, 0x00, 0x00,
+ 0xe4, 0x65, 0x01, 0x00, 0xa8, 0x7c, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0xfe, 0xf7, 0x38, 0xf8,
+ 0x01, 0x21, 0x00, 0x2c, 0x00, 0xd1, 0x00, 0x21,
+ 0x0e, 0x20, 0x0b, 0xf0, 0x3c, 0x00, 0x78, 0x78,
+ 0x00, 0x00, 0xdd, 0xfe, 0x10, 0xbd, 0xf8, 0xb5,
+ 0x07, 0x1c, 0x0b, 0xf0, 0x94, 0xfa, 0xfd, 0xf7,
+ 0xbc, 0xfe, 0x00, 0x26, 0x02, 0x28, 0x1e, 0x4d,
+ 0x01, 0xd0, 0x2e, 0x70, 0xf8, 0xbd, 0xfd, 0xf7,
+ 0x3e, 0xf8, 0x04, 0x1c, 0xf9, 0xf7, 0x59, 0xfc,
+ 0x00, 0x28, 0x14, 0xd0, 0xfd, 0xf7, 0x77, 0xf8,
+ 0x00, 0x28, 0x10, 0xd0, 0x02, 0xf0, 0xf9, 0xfb,
+ 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, 0x3c, 0x00,
+ 0xb4, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x15, 0x4c,
+ 0x33, 0x1c, 0x21, 0x1c, 0x07, 0x22, 0x16, 0x20,
+ 0x0b, 0xf0, 0x66, 0xff, 0x68, 0x78, 0x80, 0x21,
+ 0x08, 0x43, 0x68, 0x70, 0x02, 0xf0, 0x0a, 0xfc,
+ 0x00, 0x28, 0xde, 0xd1, 0x28, 0x78, 0x80, 0x07,
+ 0xdb, 0xd4, 0xfd, 0xf7, 0x23, 0xf9, 0x00, 0x28,
+ 0x05, 0xd1, 0x28, 0x78, 0xc0, 0x07, 0x02, 0xd5,
+ 0xfd, 0xf7, 0x42, 0xf8, 0xd1, 0xe7, 0x02, 0xf0,
+ 0x3c, 0x00, 0xf0, 0x78, 0x00, 0x00, 0xcd, 0xfb,
+ 0x00, 0x28, 0xcd, 0xd0, 0x28, 0x78, 0x02, 0x21,
+ 0x08, 0x43, 0x28, 0x70, 0x21, 0x1c, 0x38, 0x1c,
+ 0xfd, 0xf7, 0xc1, 0xf8, 0xc4, 0xe7, 0x60, 0x6c,
+ 0x01, 0x00, 0x71, 0x02, 0x00, 0x00, 0x10, 0xb5,
+ 0x12, 0x4c, 0x01, 0x20, 0x20, 0x70, 0xfe, 0xf7,
+ 0xf0, 0xf9, 0x01, 0x21, 0xa0, 0x68, 0xfb, 0xf7,
+ 0xf4, 0xfe, 0xa0, 0x68, 0x03, 0xf0, 0x87, 0xff,
+ 0x0d, 0x48, 0x3c, 0x00, 0x2c, 0x79, 0x00, 0x00,
+ 0xa1, 0x68, 0x07, 0xf0, 0x23, 0xfd, 0xfb, 0xf7,
+ 0x55, 0xff, 0xe0, 0x68, 0x00, 0x28, 0x0d, 0xd0,
+ 0x09, 0x49, 0x06, 0x20, 0x0a, 0xf0, 0x24, 0xfd,
+ 0x08, 0x49, 0x05, 0x20, 0x0a, 0xf0, 0x20, 0xfd,
+ 0xfb, 0xf7, 0x6e, 0xff, 0x00, 0x28, 0x01, 0xd0,
+ 0x05, 0xf0, 0xf8, 0xfc, 0x10, 0xbd, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x79,
+ 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, 0xf0, 0xb5,
+ 0x24, 0x4d, 0x23, 0x4c, 0x68, 0x7c, 0x20, 0x3c,
+ 0x9b, 0xb0, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x28,
+ 0x03, 0xd8, 0x20, 0x89, 0x01, 0x38, 0x20, 0x81,
+ 0x37, 0xe0, 0x00, 0x27, 0x6f, 0x74, 0x34, 0xe0,
+ 0x1c, 0x4e, 0x68, 0x22, 0x14, 0x36, 0x31, 0x1c,
+ 0x0c, 0x31, 0x01, 0xa8, 0xf8, 0xf7, 0x09, 0xfe,
+ 0x18, 0x48, 0x33, 0x89, 0x01, 0x21, 0x3c, 0x00,
+ 0xa4, 0x79, 0x00, 0x00, 0x44, 0x30, 0x0a, 0x1c,
+ 0x00, 0x2b, 0x00, 0x7b, 0x00, 0xd1, 0x02, 0x1c,
+ 0x12, 0x06, 0x12, 0x0e, 0x0d, 0xaf, 0x3a, 0x70,
+ 0x94, 0x46, 0xaa, 0x7b, 0x93, 0x19, 0x30, 0x33,
+ 0x5b, 0x7b, 0x7b, 0x70, 0xea, 0x73, 0x01, 0x32,
+ 0x12, 0x06, 0x12, 0x0e, 0x00, 0x27, 0x82, 0x42,
+ 0xaa, 0x73, 0x01, 0xd3, 0xaf, 0x73, 0x04, 0xe0,
+ 0x62, 0x46, 0x01, 0x2a, 0x01, 0xd1, 0x77, 0x60,
+ 0x3c, 0x00, 0xe0, 0x79, 0x00, 0x00, 0x00, 0xe0,
+ 0x71, 0x60, 0x06, 0x48, 0x07, 0x4a, 0x80, 0x38,
+ 0x81, 0x67, 0x42, 0x67, 0x68, 0x22, 0x01, 0xa9,
+ 0xf8, 0xf7, 0xdd, 0xfd, 0x27, 0x81, 0x08, 0xf0,
+ 0x12, 0xfd, 0x1b, 0xb0, 0xf0, 0xbd, 0x84, 0x66,
+ 0x01, 0x00, 0xe9, 0x2e, 0x00, 0x00, 0xf1, 0xb5,
+ 0x86, 0xb0, 0x06, 0x99, 0x00, 0x20, 0x88, 0x61,
+ 0x06, 0x98, 0x84, 0x68, 0x80, 0x8d, 0x65, 0x68,
+ 0x01, 0x28, 0x3c, 0x00, 0x1c, 0x7a, 0x00, 0x00,
+ 0x4c, 0xd9, 0x35, 0x49, 0x49, 0x68, 0x05, 0x91,
+ 0x00, 0x29, 0x47, 0xd0, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x23, 0x03, 0x90, 0x28, 0x1c, 0x96, 0x46,
+ 0x94, 0x46, 0x06, 0x68, 0x04, 0x96, 0xf2, 0x78,
+ 0x80, 0x26, 0xb2, 0x43, 0x3f, 0x2a, 0x2e, 0xd8,
+ 0xd7, 0x06, 0xff, 0x0e, 0x01, 0x26, 0xbe, 0x40,
+ 0x37, 0x1c, 0x04, 0x9e, 0x52, 0x09, 0xb6, 0x78,
+ 0x76, 0x00, 0xb2, 0x18, 0x3c, 0x00, 0x58, 0x7a,
+ 0x00, 0x00, 0x26, 0x4e, 0x92, 0x00, 0x1c, 0x36,
+ 0xb2, 0x58, 0x3a, 0x40, 0x1e, 0xd0, 0x03, 0xe0,
+ 0x02, 0x90, 0x02, 0x89, 0xc0, 0x68, 0x51, 0x18,
+ 0x00, 0x28, 0xf9, 0xd1, 0x05, 0x98, 0x81, 0x42,
+ 0x14, 0xd8, 0x70, 0x46, 0x01, 0x30, 0x86, 0x46,
+ 0x00, 0x2b, 0x04, 0xd0, 0x60, 0x46, 0xd8, 0x60,
+ 0x01, 0x98, 0x62, 0x46, 0xd0, 0x60, 0x03, 0x98,
+ 0x01, 0x38, 0x03, 0x90, 0x06, 0xd0, 0x3c, 0x00,
+ 0x94, 0x7a, 0x00, 0x00, 0x23, 0x1c, 0x24, 0x68,
+ 0x60, 0x68, 0x02, 0x9a, 0x01, 0x90, 0x94, 0x46,
+ 0xc9, 0xe7, 0x70, 0x46, 0x01, 0x28, 0x07, 0xd9,
+ 0x2a, 0x1c, 0x00, 0x21, 0x3f, 0x20, 0x01, 0xf0,
+ 0x51, 0xff, 0x05, 0x1c, 0x06, 0x98, 0x85, 0x61,
+ 0x28, 0x1c, 0x01, 0xf0, 0xb3, 0xff, 0x0e, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x07, 0xd0, 0x28, 0x68,
+ 0x01, 0x88, 0x40, 0x79, 0x02, 0x31, 0x09, 0x1a,
+ 0x3c, 0x00, 0xd0, 0x7a, 0x00, 0x00, 0x28, 0x1c,
+ 0x01, 0xf0, 0xe5, 0xfc, 0xa2, 0x68, 0x06, 0x98,
+ 0xc0, 0x68, 0x06, 0x99, 0x0b, 0x69, 0x29, 0x1c,
+ 0xf8, 0xf7, 0x7c, 0xfc, 0x03, 0x49, 0x08, 0x69,
+ 0x01, 0x30, 0x08, 0x61, 0x07, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4a, 0x80, 0x00,
+ 0x12, 0x58, 0xd0, 0x06, 0xc0, 0x0e, 0x01, 0x30,
+ 0x07, 0x4b, 0x3c, 0x00, 0x0c, 0x7b, 0x00, 0x00,
+ 0x1c, 0x68, 0x00, 0x2c, 0xfc, 0xdb, 0x5a, 0x60,
+ 0x20, 0x22, 0x12, 0x1a, 0x91, 0x40, 0x19, 0x60,
+ 0x19, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x10, 0xbd,
+ 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, 0x07, 0x00,
+ 0xb0, 0xb5, 0x12, 0x4c, 0x00, 0x25, 0x25, 0x70,
+ 0xa1, 0x68, 0x11, 0x48, 0x07, 0xf0, 0x32, 0xfc,
+ 0x65, 0x61, 0xfb, 0xf7, 0xa3, 0xfe, 0xe0, 0x68,
+ 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, 0x48, 0x7b,
+ 0x00, 0x00, 0xfb, 0xf7, 0xa4, 0xfe, 0x01, 0x21,
+ 0x07, 0x20, 0x0b, 0xf0, 0x70, 0xfd, 0x0a, 0x49,
+ 0x06, 0x20, 0x0a, 0xf0, 0x4c, 0xfc, 0x09, 0x49,
+ 0x05, 0x20, 0x0a, 0xf0, 0x48, 0xfc, 0xa0, 0x68,
+ 0x03, 0xf0, 0x67, 0xfe, 0x00, 0x21, 0xa0, 0x68,
+ 0xfb, 0xf7, 0xcd, 0xfd, 0x05, 0xf0, 0xab, 0xfb,
+ 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00,
+ 0x84, 0x7b, 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00,
+ 0x10, 0xb5, 0x0f, 0x4c, 0x20, 0x7c, 0x00, 0x28,
+ 0x19, 0xd1, 0x60, 0x69, 0x00, 0x28, 0x16, 0xd1,
+ 0xe0, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x0a, 0x48,
+ 0x1c, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0x05, 0xf0, 0xce, 0xfb, 0x01, 0x21, 0x07, 0x20,
+ 0x0b, 0xf0, 0x40, 0xfd, 0xa0, 0x68, 0x03, 0xf0,
+ 0x3f, 0xfe, 0x04, 0x48, 0xa1, 0x68, 0x07, 0xf0,
+ 0x3c, 0x00, 0xc0, 0x7b, 0x00, 0x00, 0xdb, 0xfb,
+ 0x01, 0x20, 0x20, 0x70, 0x10, 0xbd, 0x78, 0x69,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x70, 0xb5,
+ 0x0e, 0x4c, 0x01, 0x22, 0xa3, 0x68, 0xe5, 0x68,
+ 0x26, 0x8a, 0x5d, 0x1b, 0xb5, 0x42, 0x01, 0xd1,
+ 0x00, 0x22, 0x06, 0xe0, 0x25, 0x68, 0x01, 0x33,
+ 0x2e, 0x68, 0xa3, 0x60, 0x26, 0x60, 0x04, 0x35,
+ 0x03, 0xc5, 0x00, 0x2a, 0x04, 0xd1, 0x01, 0x21,
+ 0x9d, 0x20, 0x3c, 0x00, 0xfc, 0x7b, 0x00, 0x00,
+ 0xf9, 0xf7, 0x52, 0xfb, 0x70, 0xbd, 0x03, 0x49,
+ 0x02, 0x20, 0x08, 0x60, 0x70, 0xbd, 0x00, 0x00,
+ 0x44, 0xe3, 0x01, 0x00, 0x40, 0x20, 0x07, 0x00,
+ 0x80, 0xb5, 0x02, 0xf0, 0xb9, 0xf8, 0x80, 0xbd,
+ 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0xf9, 0xf7,
+ 0x3f, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, 0xf9, 0xf7,
+ 0x37, 0xfb, 0x00, 0x20, 0x3c, 0x00, 0x38, 0x7c,
+ 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x01, 0x21, 0x2b, 0x20, 0xf9, 0xf7, 0x2f, 0xfb,
+ 0x02, 0x20, 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49,
+ 0x01, 0x20, 0x08, 0x61, 0x70, 0x47, 0x7c, 0x78,
+ 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x23,
+ 0x0f, 0x1c, 0x17, 0x49, 0x58, 0x43, 0x45, 0x18,
+ 0x6c, 0x68, 0x30, 0x1c, 0x0b, 0xf0, 0x3f, 0xfe,
+ 0x00, 0x2f, 0x09, 0xd1, 0x30, 0x1c, 0x3c, 0x00,
+ 0x74, 0x7c, 0x00, 0x00, 0x03, 0xf0, 0xee, 0xfe,
+ 0x41, 0x20, 0x07, 0x55, 0x11, 0x48, 0x21, 0x1c,
+ 0xff, 0xf7, 0xa6, 0xff, 0xf8, 0xbd, 0x41, 0x20,
+ 0x07, 0x55, 0xa0, 0x6b, 0x00, 0x28, 0x03, 0xd0,
+ 0x20, 0x1c, 0x00, 0xf0, 0xdf, 0xf9, 0xf5, 0xe7,
+ 0x20, 0x1c, 0x00, 0xf0, 0xdb, 0xf9, 0xac, 0x68,
+ 0x00, 0x2c, 0x02, 0xd0, 0x00, 0x20, 0xa8, 0x60,
+ 0xed, 0xe7, 0x30, 0x1c, 0x05, 0xf0, 0x34, 0xf9,
+ 0x3c, 0x00, 0xb0, 0x7c, 0x00, 0x00, 0x04, 0x1c,
+ 0xe8, 0xd1, 0x08, 0x21, 0x0c, 0x20, 0xf9, 0xf7,
+ 0xf4, 0xfa, 0xe3, 0xe7, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x55, 0x80, 0x00, 0x00, 0x07, 0x4a,
+ 0x80, 0xb5, 0x50, 0x70, 0x51, 0x60, 0x12, 0x78,
+ 0x06, 0x4b, 0x80, 0x00, 0x52, 0x01, 0xd2, 0x18,
+ 0x10, 0x18, 0x40, 0x38, 0x02, 0x68, 0x08, 0x1c,
+ 0xf8, 0xf7, 0x7b, 0xfb, 0x80, 0xbd, 0x78, 0x69,
+ 0x01, 0x00, 0x3c, 0x00, 0xec, 0x7c, 0x00, 0x00,
+ 0xfc, 0x42, 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x49,
+ 0x04, 0x1c, 0xc8, 0x70, 0x08, 0x4d, 0xe4, 0x35,
+ 0xa8, 0x7a, 0x08, 0x71, 0x08, 0x2c, 0x01, 0xd3,
+ 0xf9, 0xf7, 0xfc, 0xfa, 0xa8, 0x7a, 0x05, 0x49,
+ 0x40, 0x01, 0x40, 0x18, 0xa1, 0x00, 0x40, 0x58,
+ 0xf8, 0xf7, 0x60, 0xfb, 0xb0, 0xbd, 0x00, 0x00,
+ 0x60, 0x6c, 0x01, 0x00, 0x80, 0x43, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x28, 0x3c, 0x00, 0x28, 0x7d,
+ 0x00, 0x00, 0x01, 0xd0, 0x09, 0xf0, 0x1d, 0xf9,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c,
+ 0x00, 0x20, 0x08, 0x60, 0x68, 0x68, 0x09, 0xf0,
+ 0x36, 0xfb, 0x6c, 0x60, 0xb0, 0xbd, 0x10, 0xb5,
+ 0x04, 0x1c, 0x09, 0xf0, 0x34, 0xfb, 0x21, 0x68,
+ 0x00, 0x29, 0x00, 0xd1, 0x64, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x00, 0x21, 0x01, 0x60, 0x40, 0x60,
+ 0x70, 0x47, 0xf8, 0xb5, 0x46, 0x68, 0x3c, 0x00,
+ 0x64, 0x7d, 0x00, 0x00, 0x04, 0x1c, 0x40, 0x6a,
+ 0x35, 0x1c, 0x0a, 0x35, 0x00, 0x28, 0x04, 0xd0,
+ 0x20, 0x1c, 0xf9, 0xf7, 0x89, 0xfd, 0x07, 0x1c,
+ 0x00, 0xe0, 0x04, 0x27, 0x29, 0x1c, 0x60, 0x69,
+ 0x00, 0xf0, 0xf6, 0xfc, 0x79, 0x00, 0x0f, 0x18,
+ 0xba, 0x88, 0xf1, 0x8a, 0x05, 0x1c, 0x8a, 0x42,
+ 0x05, 0xd1, 0x30, 0x88, 0x00, 0x05, 0x02, 0xd5,
+ 0x04, 0xf0, 0xbe, 0xfb, 0x3c, 0xe0, 0x28, 0x68,
+ 0x3c, 0x00, 0xa0, 0x7d, 0x00, 0x00, 0x00, 0x28,
+ 0x0f, 0xd0, 0x01, 0x32, 0x8a, 0x42, 0x04, 0xd1,
+ 0xf9, 0xf7, 0x0f, 0xfc, 0x21, 0x68, 0xc1, 0x60,
+ 0x0b, 0xe0, 0xf9, 0xf7, 0xf0, 0xfb, 0xf0, 0x8a,
+ 0x00, 0x07, 0x04, 0xd0, 0x00, 0x21, 0x29, 0x60,
+ 0x29, 0xe0, 0x08, 0x07, 0x27, 0xd1, 0x20, 0x68,
+ 0x28, 0x60, 0xf0, 0x8a, 0xb8, 0x80, 0x13, 0x48,
+ 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x31, 0x88,
+ 0x49, 0x05, 0x3c, 0x00, 0xdc, 0x7d, 0x00, 0x00,
+ 0x18, 0xd4, 0x29, 0x68, 0x21, 0x60, 0x00, 0x21,
+ 0x29, 0x60, 0xe1, 0x69, 0x00, 0x29, 0x0d, 0xd0,
+ 0x89, 0x79, 0x02, 0x29, 0x0a, 0xd1, 0x08, 0x21,
+ 0x21, 0x86, 0x21, 0x1c, 0x38, 0x31, 0xa1, 0x62,
+ 0x22, 0x1c, 0xdc, 0x30, 0x08, 0x49, 0x02, 0xf0,
+ 0x81, 0xf9, 0xf8, 0xbd, 0x20, 0x1c, 0x00, 0xf0,
+ 0x5f, 0xf8, 0xfa, 0xe7, 0x20, 0x1c, 0xf9, 0xf7,
+ 0xef, 0xfc, 0xf6, 0xe7, 0x3c, 0x00, 0x18, 0x7e,
+ 0x00, 0x00, 0x20, 0x68, 0xf9, 0xf7, 0xbd, 0xfb,
+ 0xf7, 0xe7, 0xc4, 0x69, 0x01, 0x00, 0xb9, 0x71,
+ 0x00, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, 0x09, 0x78,
+ 0x01, 0x24, 0xc9, 0x07, 0x21, 0xd5, 0x02, 0xf0,
+ 0x8c, 0xff, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24,
+ 0x1b, 0xe0, 0x0e, 0x4e, 0x75, 0x6e, 0x00, 0x2d,
+ 0x17, 0xd0, 0x34, 0x6e, 0x06, 0x22, 0x31, 0x1c,
+ 0x38, 0x1c, 0xf8, 0xf7, 0xd4, 0xfa, 0x3c, 0x00,
+ 0x54, 0x7e, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd1,
+ 0x01, 0x20, 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20,
+ 0x04, 0x1c, 0x03, 0xe0, 0x01, 0x3d, 0x06, 0x36,
+ 0x00, 0x2d, 0xee, 0xd1, 0x00, 0x2c, 0x03, 0xd1,
+ 0x02, 0x4e, 0xb0, 0x6e, 0x01, 0x30, 0xb0, 0x66,
+ 0x20, 0x1c, 0xf8, 0xbd, 0x10, 0x79, 0x01, 0x00,
+ 0x30, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x06, 0x49,
+ 0x00, 0x22, 0x1c, 0x23, 0xcc, 0x56, 0xac, 0x42,
+ 0x3c, 0x00, 0x90, 0x7e, 0x00, 0x00, 0x01, 0xd1,
+ 0x08, 0x1c, 0x30, 0xbd, 0x01, 0x32, 0x48, 0x31,
+ 0x01, 0x2a, 0xf5, 0xd3, 0x30, 0xbd, 0xcc, 0x6d,
+ 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x00, 0x22,
+ 0x1c, 0x23, 0x53, 0x43, 0xe3, 0x58, 0x83, 0x42,
+ 0x04, 0xd1, 0x1c, 0x20, 0x50, 0x43, 0x00, 0x19,
+ 0x0a, 0x60, 0x10, 0xbd, 0x01, 0x32, 0x0e, 0x2a,
+ 0xf2, 0xd3, 0x00, 0x20, 0x10, 0xbd, 0xdc, 0x71,
+ 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x7e, 0x00, 0x00,
+ 0xf0, 0xb5, 0x41, 0x68, 0x95, 0xb0, 0x07, 0x1c,
+ 0x90, 0x37, 0x13, 0x91, 0x04, 0x1c, 0xf8, 0x78,
+ 0x25, 0x1c, 0x80, 0x35, 0xc6, 0x07, 0x28, 0x79,
+ 0xf6, 0x0f, 0x4a, 0x49, 0x02, 0x28, 0x4d, 0xd1,
+ 0x0a, 0x6d, 0x00, 0x2a, 0x4a, 0xd0, 0x48, 0x68,
+ 0x01, 0x30, 0x48, 0x60, 0x0a, 0xf0, 0x58, 0xff,
+ 0x44, 0x49, 0x08, 0x61, 0x48, 0x61, 0x13, 0x99,
+ 0x09, 0x79, 0xc9, 0x07, 0x3c, 0x00, 0x08, 0x7f,
+ 0x00, 0x00, 0x01, 0xd4, 0x41, 0x49, 0x88, 0x61,
+ 0x20, 0x68, 0x06, 0x22, 0x06, 0x90, 0xa1, 0x68,
+ 0x03, 0xa8, 0xf8, 0xf7, 0xee, 0xfa, 0x06, 0x22,
+ 0x04, 0xa8, 0x02, 0x30, 0xe1, 0x68, 0xf8, 0xf7,
+ 0xe8, 0xfa, 0x07, 0xa8, 0x06, 0x22, 0x21, 0x69,
+ 0xf8, 0xf7, 0xe3, 0xfa, 0xb8, 0x78, 0x08, 0xab,
+ 0x00, 0x21, 0x98, 0x70, 0x0c, 0x96, 0x63, 0x6a,
+ 0x20, 0x1c, 0xa0, 0x30, 0x0a, 0x1c, 0x3c, 0x00,
+ 0x44, 0x7f, 0x00, 0x00, 0x00, 0x2b, 0x02, 0xd0,
+ 0x02, 0x8a, 0x52, 0x07, 0x52, 0x0f, 0x08, 0xab,
+ 0xda, 0x70, 0x00, 0xab, 0x99, 0x84, 0x13, 0x99,
+ 0x09, 0x88, 0xc9, 0x0b, 0xd9, 0x84, 0x69, 0x6b,
+ 0x10, 0xab, 0x10, 0x91, 0xa9, 0x6b, 0x11, 0x91,
+ 0x80, 0x8b, 0x29, 0x49, 0x18, 0x81, 0x09, 0x6d,
+ 0x03, 0xa8, 0xf8, 0xf7, 0x32, 0xfa, 0x29, 0x79,
+ 0x68, 0x6b, 0x0b, 0xf0, 0x4d, 0xfd, 0x29, 0x79,
+ 0x3c, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xa8, 0x6b,
+ 0x0b, 0xf0, 0x67, 0xfd, 0x3d, 0xe0, 0x00, 0x28,
+ 0x38, 0xd1, 0x48, 0x6d, 0x14, 0x90, 0x00, 0x28,
+ 0x34, 0xd0, 0x20, 0x68, 0x06, 0x22, 0x03, 0x90,
+ 0xa1, 0x68, 0x68, 0x46, 0xf8, 0xf7, 0xab, 0xfa,
+ 0x06, 0x22, 0x68, 0x46, 0x80, 0x18, 0xe1, 0x68,
+ 0xf8, 0xf7, 0xa5, 0xfa, 0x05, 0xa8, 0x06, 0x22,
+ 0x21, 0x69, 0xf8, 0xf7, 0xa0, 0xfa, 0x00, 0x21,
+ 0x04, 0x91, 0x3c, 0x00, 0xbc, 0x7f, 0x00, 0x00,
+ 0xb9, 0x78, 0x08, 0xa8, 0x10, 0xab, 0x01, 0x72,
+ 0x08, 0x96, 0xe9, 0x68, 0x0b, 0x91, 0x69, 0x79,
+ 0x41, 0x72, 0x68, 0x6b, 0x0e, 0x90, 0xa8, 0x6b,
+ 0x10, 0x90, 0x28, 0x8d, 0xd8, 0x80, 0x68, 0x8d,
+ 0x18, 0x81, 0xe1, 0x69, 0x0c, 0xa8, 0x00, 0x29,
+ 0x04, 0xd0, 0x89, 0x79, 0x01, 0x70, 0x20, 0x6a,
+ 0x0d, 0x90, 0x01, 0xe0, 0x07, 0x21, 0x01, 0x70,
+ 0x68, 0x46, 0x14, 0x99, 0x3c, 0x00, 0xf8, 0x7f,
+ 0x00, 0x00, 0xf8, 0xf7, 0xef, 0xf9, 0x02, 0xe0,
+ 0x20, 0x68, 0xf9, 0xf7, 0xca, 0xfa, 0x20, 0x1c,
+ 0xf9, 0xf7, 0xf5, 0xfb, 0x15, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x22, 0x01, 0x89,
+ 0x0c, 0x31, 0x01, 0x81, 0x05, 0x68, 0x21, 0x1c,
+ 0x0c, 0x3d, 0x05, 0x60, 0xa8, 0x18, 0xf8, 0xf7,
+ 0x64, 0xfa, 0x06, 0x22, 0xa1, 0x18, 0x3c, 0x00,
+ 0x34, 0x80, 0x00, 0x00, 0x28, 0x1c, 0xf8, 0xf7,
+ 0x5f, 0xfa, 0xa0, 0x8f, 0x00, 0x09, 0xe0, 0x62,
+ 0x20, 0x63, 0x03, 0x48, 0x01, 0x69, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xc7, 0xf9, 0xb0, 0xbd, 0x00, 0x00,
+ 0x7c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x60, 0x36, 0x05, 0x1c, 0x70, 0x7a, 0x0c, 0x23,
+ 0x25, 0x49, 0x58, 0x43, 0x44, 0x18, 0xa8, 0x6b,
+ 0x00, 0x27, 0x00, 0x28, 0x06, 0xd0, 0xa0, 0x78,
+ 0x3c, 0x00, 0x70, 0x80, 0x00, 0x00, 0x01, 0x28,
+ 0x03, 0xd1, 0xa7, 0x70, 0x70, 0x7a, 0x0a, 0xf0,
+ 0xb6, 0xfd, 0x2a, 0x1c, 0x0c, 0x21, 0x80, 0x20,
+ 0x0b, 0xf0, 0x95, 0xfb, 0xa8, 0x6b, 0x00, 0x28,
+ 0x33, 0xd0, 0xa0, 0x78, 0x02, 0x28, 0x0b, 0xd0,
+ 0x04, 0x28, 0x22, 0xd1, 0xa7, 0x70, 0x2f, 0x1c,
+ 0x40, 0x37, 0x78, 0x78, 0x02, 0x28, 0x0c, 0xd1,
+ 0x70, 0x7a, 0x0a, 0xf0, 0xa0, 0xfd, 0x18, 0xe0,
+ 0x03, 0x20, 0x3c, 0x00, 0xac, 0x80, 0x00, 0x00,
+ 0xa0, 0x70, 0x12, 0x49, 0x00, 0x20, 0x14, 0x39,
+ 0x09, 0x69, 0xf8, 0xf7, 0x90, 0xf9, 0x0f, 0xe0,
+ 0x2c, 0x1c, 0x07, 0xe0, 0x78, 0x78, 0x41, 0x21,
+ 0x22, 0x1c, 0x08, 0x55, 0x0c, 0x21, 0x80, 0x20,
+ 0x0b, 0xf0, 0x70, 0xfb, 0x60, 0x34, 0x60, 0x7a,
+ 0x04, 0xf0, 0x20, 0xff, 0x04, 0x1c, 0xf1, 0xd1,
+ 0x70, 0x7a, 0x40, 0x35, 0xa9, 0x8b, 0x00, 0x02,
+ 0x09, 0x09, 0x09, 0x04, 0x3c, 0x00, 0xe8, 0x80,
+ 0x00, 0x00, 0x08, 0x43, 0x81, 0x21, 0x01, 0x43,
+ 0x0c, 0x20, 0x0b, 0xf0, 0xa0, 0xfa, 0xf8, 0xbd,
+ 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0xf8, 0xb5,
+ 0x1c, 0x49, 0x05, 0x1c, 0x88, 0x6a, 0x01, 0x30,
+ 0x88, 0x62, 0x28, 0x1c, 0x0b, 0xf0, 0x7d, 0xfd,
+ 0x04, 0x1c, 0x11, 0xd0, 0x2b, 0x1c, 0x20, 0x33,
+ 0x1e, 0x1c, 0x5a, 0x79, 0x20, 0x1c, 0xb4, 0x30,
+ 0x19, 0x79, 0x14, 0x4f, 0xfd, 0xf7, 0x3c, 0x00,
+ 0x24, 0x81, 0x00, 0x00, 0x89, 0xf8, 0xaa, 0x7a,
+ 0x20, 0x1c, 0xb8, 0x30, 0xb1, 0x79, 0xfd, 0xf7,
+ 0xb9, 0xf8, 0x00, 0x2f, 0x04, 0xd1, 0x01, 0x21,
+ 0x28, 0x68, 0xfa, 0xf7, 0x6d, 0xfa, 0xf8, 0xbd,
+ 0x60, 0x68, 0xbc, 0x21, 0xc0, 0x8a, 0x08, 0x53,
+ 0x28, 0x68, 0x00, 0x21, 0xfa, 0xf7, 0x64, 0xfa,
+ 0x00, 0x28, 0x09, 0xd0, 0x06, 0x49, 0xc8, 0x6a,
+ 0x01, 0x30, 0xc8, 0x62, 0x00, 0x2c, 0xee, 0xd0,
+ 0x3c, 0x00, 0x60, 0x81, 0x00, 0x00, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x47, 0xfb, 0xea, 0xe7, 0x20, 0x1c,
+ 0xf8, 0xf7, 0x3c, 0xf9, 0xe6, 0xe7, 0xc4, 0x69,
+ 0x01, 0x00, 0xa1, 0xff, 0x00, 0x00, 0xf8, 0xb5,
+ 0x16, 0x4c, 0x05, 0x1f, 0x00, 0x22, 0x21, 0x1c,
+ 0xa0, 0x31, 0x03, 0xe0, 0x28, 0x68, 0xa0, 0x42,
+ 0x09, 0xd0, 0x20, 0x34, 0xa1, 0x42, 0xf9, 0xd1,
+ 0x00, 0x2a, 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20,
+ 0xf9, 0xf7, 0x3c, 0x00, 0x9c, 0x81, 0x00, 0x00,
+ 0x83, 0xf8, 0xf8, 0xbd, 0x0d, 0x4f, 0xbe, 0x79,
+ 0x60, 0x69, 0x01, 0x30, 0x60, 0x61, 0xf8, 0xf7,
+ 0x97, 0xfd, 0xa8, 0x42, 0x07, 0xd1, 0xa0, 0x88,
+ 0x04, 0x30, 0xf8, 0xf7, 0x97, 0xfd, 0xe0, 0x69,
+ 0x01, 0x30, 0xe0, 0x61, 0x05, 0xe0, 0x20, 0x68,
+ 0x28, 0x60, 0x25, 0x60, 0xa0, 0x69, 0x01, 0x30,
+ 0xa0, 0x61, 0xbe, 0x71, 0xe5, 0xe7, 0x00, 0x00,
+ 0xd0, 0x5c, 0x01, 0x00, 0x3c, 0x00, 0xd8, 0x81,
+ 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x00, 0x29,
+ 0x01, 0xdb, 0x06, 0x29, 0x01, 0xdb, 0x02, 0x20,
+ 0x70, 0x47, 0x06, 0x4b, 0xc9, 0x00, 0x5a, 0x5c,
+ 0xc9, 0x18, 0x02, 0x70, 0x4a, 0x78, 0x42, 0x70,
+ 0x8a, 0x78, 0x82, 0x70, 0x49, 0x68, 0x41, 0x60,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0xcc, 0x5a,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xf9, 0xf7, 0x3c, 0x00,
+ 0x14, 0x82, 0x00, 0x00, 0x75, 0xf8, 0x10, 0x48,
+ 0x40, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24,
+ 0x10, 0x2d, 0x00, 0xd3, 0x0f, 0x25, 0x06, 0x20,
+ 0x0b, 0x49, 0x60, 0x43, 0x12, 0x31, 0x40, 0x18,
+ 0x41, 0x78, 0x80, 0x78, 0x49, 0x19, 0x09, 0x06,
+ 0x09, 0x0e, 0x88, 0x42, 0x00, 0xd2, 0x01, 0x1c,
+ 0x01, 0x20, 0x88, 0x40, 0x05, 0x49, 0x01, 0x38,
+ 0x09, 0x68, 0x08, 0x40, 0x00, 0x04, 0x00, 0x0c,
+ 0x3c, 0x00, 0x50, 0x82, 0x00, 0x00, 0x02, 0xf0,
+ 0x44, 0xfe, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x7a,
+ 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x1c, 0x09, 0xf0, 0xcf, 0xfd,
+ 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0,
+ 0x82, 0xfd, 0x05, 0x61, 0xb0, 0xbd, 0x80, 0xb5,
+ 0x0a, 0xf0, 0x97, 0xfd, 0x03, 0x4a, 0x0c, 0x32,
+ 0x06, 0xca, 0x89, 0x18, 0x08, 0x1a, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x82, 0x00, 0x00,
+ 0xa0, 0x7d, 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4c,
+ 0x04, 0x9e, 0x64, 0x68, 0x0d, 0xe0, 0x65, 0x68,
+ 0x85, 0x42, 0x09, 0xd1, 0x20, 0x7a, 0x08, 0x70,
+ 0xe0, 0x68, 0x10, 0x60, 0x20, 0x69, 0x18, 0x60,
+ 0x20, 0x7d, 0x30, 0x80, 0x01, 0x20, 0x70, 0xbd,
+ 0x24, 0x68, 0x00, 0x2c, 0xef, 0xd1, 0x00, 0x20,
+ 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0x82,
+ 0x00, 0x00, 0x20, 0x30, 0x81, 0x7b, 0x20, 0x69,
+ 0x04, 0x30, 0xfd, 0xf7, 0x64, 0xf9, 0x01, 0x1c,
+ 0x62, 0x20, 0x02, 0x5b, 0x63, 0x6a, 0x40, 0x34,
+ 0x20, 0x78, 0x02, 0xf0, 0xce, 0xfd, 0x10, 0xbd,
+ 0x00, 0x00, 0x0b, 0x49, 0x10, 0xb5, 0x08, 0x88,
+ 0x8a, 0x69, 0x0a, 0x23, 0x50, 0x43, 0x58, 0x43,
+ 0x0e, 0xd0, 0x08, 0x4a, 0x53, 0x89, 0x94, 0x88,
+ 0xd2, 0x88, 0x1b, 0x19, 0x52, 0x04, 0x3c, 0x00,
+ 0x04, 0x83, 0x00, 0x00, 0x52, 0x0c, 0x9a, 0x18,
+ 0xc9, 0x68, 0x06, 0x32, 0x4a, 0x43, 0x0a, 0x21,
+ 0x51, 0x43, 0xf8, 0xf7, 0xfd, 0xf9, 0x10, 0xbd,
+ 0xc8, 0x74, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00,
+ 0x10, 0xb5, 0x43, 0x1c, 0x01, 0xd1, 0x10, 0x48,
+ 0x10, 0xbd, 0x0f, 0x4a, 0x0e, 0x4b, 0x94, 0x3a,
+ 0x12, 0x68, 0x44, 0x3b, 0x1b, 0x7a, 0x10, 0xe0,
+ 0x54, 0x68, 0x84, 0x42, 0x0c, 0xd1, 0x00, 0x29,
+ 0x3c, 0x00, 0x40, 0x83, 0x00, 0x00, 0x0f, 0xd1,
+ 0x02, 0x2b, 0x03, 0xd1, 0xd4, 0x7b, 0x02, 0x2c,
+ 0x0a, 0xd2, 0x04, 0xe0, 0x00, 0x2b, 0x05, 0xd1,
+ 0xd4, 0x7b, 0xe4, 0x07, 0x04, 0xd4, 0x12, 0x68,
+ 0x00, 0x2a, 0xec, 0xd1, 0x00, 0x20, 0x10, 0xbd,
+ 0x10, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x38, 0x6f,
+ 0x01, 0x00, 0x01, 0x1c, 0x01, 0x20, 0x01, 0x29,
+ 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, 0x00, 0xb5,
+ 0x02, 0x1c, 0x3c, 0x00, 0x7c, 0x83, 0x00, 0x00,
+ 0xfd, 0xf7, 0xce, 0xf8, 0x00, 0x28, 0x08, 0xd0,
+ 0x10, 0x1c, 0xff, 0xf7, 0xf1, 0xff, 0x18, 0x23,
+ 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x69,
+ 0x00, 0xbd, 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00,
+ 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x28,
+ 0x00, 0xd1, 0x08, 0x48, 0x07, 0x49, 0x00, 0x68,
+ 0x50, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x02, 0xd0,
+ 0x02, 0x29, 0x04, 0xd1, 0x3c, 0x00, 0xb8, 0x83,
+ 0x00, 0x00, 0x00, 0xe0, 0x01, 0x21, 0x00, 0xf0,
+ 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x12, 0x4a,
+ 0x12, 0x4b, 0x12, 0x7a, 0x2c, 0x3b, 0x00, 0x2a,
+ 0x03, 0xd1, 0x5a, 0x68, 0x00, 0x2a, 0x18, 0xd1,
+ 0x04, 0xe0, 0x02, 0x2a, 0x02, 0xd1, 0x9a, 0x68,
+ 0x00, 0x2a, 0x12, 0xd1, 0x00, 0x20, 0x70, 0x47,
+ 0xc2, 0x7b, 0x8a, 0x42, 0x01, 0xd0, 0x3c, 0x00,
+ 0xf4, 0x83, 0x00, 0x00, 0x03, 0x2a, 0x0a, 0xd1,
+ 0x82, 0x7e, 0x01, 0x2a, 0x07, 0xd1, 0x02, 0x7f,
+ 0x01, 0x32, 0x12, 0x06, 0x12, 0x0e, 0x02, 0x77,
+ 0xc3, 0x7e, 0x9a, 0x42, 0xee, 0xd2, 0x00, 0x68,
+ 0x00, 0x28, 0xec, 0xd1, 0x70, 0x47, 0x00, 0x00,
+ 0xf4, 0x6e, 0x01, 0x00, 0xf7, 0xb5, 0x84, 0x46,
+ 0x00, 0x20, 0x01, 0x27, 0x00, 0x24, 0x00, 0x25,
+ 0x88, 0xb0, 0x07, 0xe0, 0x62, 0x46, 0x52, 0x5d,
+ 0x3c, 0x00, 0x30, 0x84, 0x00, 0x00, 0x00, 0x2a,
+ 0x05, 0xd0, 0xab, 0x00, 0x6e, 0x46, 0xf2, 0x50,
+ 0x01, 0x35, 0x8d, 0x42, 0xf5, 0xd3, 0x00, 0x2d,
+ 0x00, 0xd0, 0x01, 0x20, 0x00, 0x28, 0x28, 0xd0,
+ 0x00, 0x27, 0x16, 0x4c, 0x6e, 0x46, 0x22, 0xe0,
+ 0x20, 0x1c, 0x00, 0xf0, 0x30, 0xf8, 0x01, 0x28,
+ 0x01, 0xd0, 0x07, 0x28, 0x06, 0xd1, 0x00, 0x21,
+ 0x20, 0x1c, 0x00, 0xf0, 0x34, 0xf8, 0x31, 0x68,
+ 0x88, 0x42, 0x3c, 0x00, 0x6c, 0x84, 0x00, 0x00,
+ 0x01, 0xd2, 0x02, 0x27, 0x14, 0xe0, 0x20, 0x68,
+ 0xc9, 0x00, 0x0c, 0x18, 0x08, 0x3c, 0x20, 0x1c,
+ 0x00, 0xf0, 0x1c, 0xf8, 0x07, 0x28, 0x07, 0xd1,
+ 0x01, 0x20, 0x01, 0x2d, 0x00, 0xd0, 0x00, 0x20,
+ 0x24, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x08, 0x34,
+ 0x01, 0x3d, 0x04, 0x36, 0x00, 0x2d, 0xda, 0xd1,
+ 0x0a, 0x98, 0x04, 0x60, 0x0b, 0xb0, 0x38, 0x1c,
+ 0xf0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x84,
+ 0x00, 0x00, 0x20, 0x52, 0x01, 0x00, 0x00, 0x68,
+ 0x00, 0x29, 0x01, 0xd0, 0x80, 0x02, 0x80, 0x0a,
+ 0x70, 0x47, 0x10, 0xb5, 0x40, 0x68, 0x80, 0x00,
+ 0x44, 0x0f, 0x08, 0x2c, 0x03, 0xd3, 0x02, 0x21,
+ 0x87, 0x20, 0xf8, 0xf7, 0xec, 0xfe, 0x20, 0x1c,
+ 0x10, 0xbd, 0x00, 0x29, 0x02, 0xd0, 0x00, 0x68,
+ 0x80, 0x0d, 0x70, 0x47, 0x40, 0x68, 0x80, 0x05,
+ 0x80, 0x0d, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0x84, 0x00, 0x00, 0x10, 0xb5, 0x40, 0x68,
+ 0x40, 0x01, 0x44, 0x0f, 0x05, 0x2c, 0x03, 0xd3,
+ 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, 0xd6, 0xfe,
+ 0x20, 0x1c, 0x10, 0xbd, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x88, 0x0a, 0x00, 0x90, 0x1c, 0x48, 0x8e, 0x05,
+ 0xc0, 0x69, 0xb6, 0x0d, 0x17, 0x1c, 0x1c, 0x1c,
+ 0x00, 0x28, 0x05, 0xd1, 0x18, 0x48, 0x81, 0x69,
+ 0x8d, 0x42, 0x1d, 0xd0, 0x85, 0x61, 0x11, 0xe0,
+ 0x3c, 0x00, 0x20, 0x85, 0x00, 0x00, 0xfd, 0xf7,
+ 0xe8, 0xf8, 0x15, 0x49, 0x09, 0x78, 0x0e, 0x29,
+ 0x07, 0xd1, 0x00, 0x28, 0x05, 0xd0, 0x11, 0x49,
+ 0x50, 0x31, 0x06, 0x23, 0xc9, 0x56, 0xf9, 0xf7,
+ 0x06, 0xfa, 0x0e, 0x49, 0x00, 0x20, 0xc8, 0x61,
+ 0x8d, 0x61, 0x29, 0x1c, 0x20, 0x1c, 0xf8, 0xf7,
+ 0xe2, 0xf8, 0x79, 0x43, 0x20, 0x1c, 0xf8, 0xf7,
+ 0xde, 0xf8, 0x08, 0x48, 0x41, 0x61, 0x20, 0x1c,
+ 0x00, 0x99, 0x3c, 0x00, 0x5c, 0x85, 0x00, 0x00,
+ 0xf8, 0xf7, 0xd8, 0xf8, 0x05, 0x48, 0x40, 0x69,
+ 0x0a, 0x18, 0xa2, 0x42, 0x01, 0xd2, 0x40, 0x18,
+ 0x01, 0xe0, 0x40, 0x18, 0x00, 0x1b, 0x80, 0x02,
+ 0x80, 0x19, 0xf8, 0xbd, 0xac, 0x7c, 0x01, 0x00,
+ 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c,
+ 0x06, 0x1c, 0x14, 0x1c, 0x1d, 0x1c, 0x07, 0xf0,
+ 0xa1, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0x20, 0x1c,
+ 0x02, 0xf0, 0xfc, 0xfb, 0x3c, 0x00, 0x98, 0x85,
+ 0x00, 0x00, 0x00, 0x28, 0x04, 0xd0, 0x08, 0x48,
+ 0x00, 0x78, 0x02, 0xf0, 0xe4, 0xfb, 0x04, 0x1c,
+ 0x01, 0x21, 0x00, 0x2e, 0xac, 0x72, 0x00, 0xd0,
+ 0x39, 0x1c, 0x20, 0x1c, 0x02, 0xf0, 0x07, 0xfc,
+ 0x28, 0x60, 0x00, 0x20, 0x28, 0x72, 0x6c, 0x72,
+ 0xf8, 0xbd, 0x90, 0x57, 0x01, 0x00, 0x03, 0x1c,
+ 0x0a, 0x48, 0x10, 0xb5, 0x00, 0x24, 0x02, 0x1c,
+ 0xa0, 0x32, 0x03, 0xe0, 0x81, 0x88, 0x3c, 0x00,
+ 0xd4, 0x85, 0x00, 0x00, 0x99, 0x42, 0x09, 0xd2,
+ 0x20, 0x30, 0x82, 0x42, 0xf9, 0xd1, 0x00, 0x2c,
+ 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, 0xf8, 0xf7,
+ 0x5d, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0xd0, 0x5c, 0x01, 0x00, 0xff, 0xb5, 0x06, 0x1c,
+ 0x00, 0x20, 0x81, 0xb0, 0x10, 0x60, 0x1f, 0x1c,
+ 0x01, 0x25, 0x14, 0x1c, 0x30, 0x1c, 0xff, 0xf7,
+ 0x6d, 0xff, 0x05, 0x28, 0x12, 0xd2, 0x02, 0xa3,
+ 0x3c, 0x00, 0x10, 0x86, 0x00, 0x00, 0x1b, 0x5c,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03,
+ 0x03, 0x03, 0x08, 0x00, 0x39, 0x1c, 0x30, 0x1c,
+ 0xff, 0xf7, 0x55, 0xff, 0x03, 0xe0, 0x02, 0x98,
+ 0xf8, 0xf7, 0xeb, 0xf8, 0x01, 0x30, 0x20, 0x60,
+ 0x04, 0xe0, 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7,
+ 0x34, 0xfe, 0x00, 0x25, 0x20, 0x68, 0x80, 0x28,
+ 0x04, 0xd9, 0x06, 0x21, 0x87, 0x20, 0xf8, 0xf7,
+ 0x2c, 0xfe, 0x3c, 0x00, 0x4c, 0x86, 0x00, 0x00,
+ 0x00, 0x25, 0x28, 0x1c, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x70, 0xb5, 0x17, 0x4c, 0x60, 0x6c, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x1d, 0xe0, 0x16, 0x4e,
+ 0x14, 0x4d, 0x31, 0x88, 0xa0, 0x6c, 0x00, 0x28,
+ 0x08, 0xd0, 0x28, 0x78, 0x81, 0x42, 0x05, 0xd9,
+ 0xf8, 0xf7, 0x4c, 0xf8, 0x01, 0x38, 0xfa, 0xf7,
+ 0x51, 0xfe, 0x0e, 0xe0, 0xe0, 0x6c, 0x00, 0x28,
+ 0x0a, 0xd0, 0x00, 0x20, 0x3c, 0x00, 0x88, 0x86,
+ 0x00, 0x00, 0xfa, 0xf7, 0x4a, 0xfe, 0x29, 0x78,
+ 0x32, 0x88, 0x91, 0x42, 0x04, 0xd9, 0x90, 0x42,
+ 0x02, 0xd9, 0x10, 0x1c, 0x00, 0xe0, 0x08, 0x1c,
+ 0xfa, 0xf7, 0xdf, 0xfd, 0xe1, 0x6b, 0x44, 0x1a,
+ 0x0a, 0xf0, 0x81, 0xfb, 0x20, 0x1a, 0x00, 0xd5,
+ 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0xf8, 0x60, 0x01, 0x00, 0xfc, 0x60,
+ 0x01, 0x00, 0xff, 0xb5, 0x27, 0x4e, 0x3c, 0x00,
+ 0xc4, 0x86, 0x00, 0x00, 0x04, 0x1c, 0xb0, 0x79,
+ 0x0f, 0x1c, 0x15, 0x1c, 0x81, 0xb0, 0x00, 0x90,
+ 0x0a, 0xf0, 0x6c, 0xfb, 0xc1, 0x19, 0x23, 0x48,
+ 0x07, 0x68, 0x00, 0x2f, 0x05, 0xd1, 0x0a, 0x21,
+ 0x80, 0x20, 0xf8, 0xf7, 0xdf, 0xfd, 0x05, 0xb0,
+ 0xf0, 0xbd, 0x1e, 0x48, 0x40, 0x68, 0x84, 0x46,
+ 0x00, 0x28, 0x01, 0xd1, 0x00, 0x22, 0x0e, 0xe0,
+ 0x82, 0x68, 0x03, 0x68, 0xab, 0x42, 0x07, 0xd1,
+ 0x3c, 0x00, 0x00, 0x87, 0x00, 0x00, 0x03, 0x79,
+ 0xa3, 0x42, 0x04, 0xd1, 0x0b, 0x21, 0x80, 0x20,
+ 0xf8, 0xf7, 0xcb, 0xfd, 0x23, 0xe0, 0xc0, 0x68,
+ 0x00, 0x28, 0xf1, 0xd1, 0x13, 0x4b, 0xf8, 0x68,
+ 0x18, 0x60, 0x3d, 0x60, 0x3c, 0x71, 0xb9, 0x60,
+ 0x04, 0x98, 0x8d, 0x1a, 0x38, 0x61, 0x60, 0x46,
+ 0x00, 0x23, 0x05, 0xe0, 0x84, 0x68, 0xa4, 0x1a,
+ 0xac, 0x42, 0x03, 0xda, 0x03, 0x1c, 0xc0, 0x68,
+ 0x00, 0x28, 0x3c, 0x00, 0x3c, 0x87, 0x00, 0x00,
+ 0xf7, 0xd1, 0xf8, 0x60, 0x00, 0x2b, 0x08, 0xd1,
+ 0x07, 0x48, 0x3b, 0x1c, 0x47, 0x60, 0x08, 0x48,
+ 0x06, 0x4a, 0x00, 0x88, 0x0a, 0xf0, 0x8a, 0xfb,
+ 0x00, 0xe0, 0xdf, 0x60, 0x00, 0x98, 0xb0, 0x71,
+ 0xc3, 0xe7, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00,
+ 0x7c, 0x5d, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00,
+ 0x2c, 0x74, 0x01, 0x00, 0xf3, 0xb5, 0x83, 0xb0,
+ 0x04, 0x1c, 0x09, 0xd0, 0x3c, 0x00, 0x78, 0x87,
+ 0x00, 0x00, 0x20, 0x1c, 0x04, 0x99, 0x09, 0xf0,
+ 0x8e, 0xfb, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x1c,
+ 0x30, 0x30, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0xf0,
+ 0x0e, 0xfb, 0x1e, 0x4a, 0x00, 0x26, 0x04, 0x9f,
+ 0x01, 0x96, 0x00, 0x90, 0x02, 0x92, 0x02, 0x9c,
+ 0x00, 0x25, 0x39, 0x1c, 0x20, 0x1c, 0x14, 0x30,
+ 0x02, 0xf0, 0xc5, 0xfa, 0x00, 0x28, 0x01, 0xd0,
+ 0x26, 0x1c, 0x03, 0xe0, 0x01, 0x35, 0x3c, 0x00,
+ 0xb4, 0x87, 0x00, 0x00, 0x1c, 0x34, 0x04, 0x2d,
+ 0xf2, 0xd3, 0x00, 0x2e, 0x22, 0xd1, 0x01, 0x98,
+ 0x13, 0x4f, 0x01, 0x30, 0x01, 0x90, 0x02, 0x28,
+ 0xe8, 0xd3, 0x01, 0x21, 0xc9, 0x06, 0x02, 0x9a,
+ 0x00, 0x20, 0x13, 0x69, 0x00, 0x9c, 0xe3, 0x1a,
+ 0x8b, 0x42, 0x01, 0xdd, 0x19, 0x1c, 0x16, 0x1c,
+ 0x01, 0x30, 0x1c, 0x32, 0x04, 0x28, 0xf4, 0xd3,
+ 0x30, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf8, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x87, 0x00, 0x00, 0xd3, 0xfe,
+ 0x30, 0x1c, 0xfd, 0xf7, 0x4a, 0xff, 0x30, 0x1c,
+ 0x14, 0x30, 0x06, 0x22, 0x04, 0x99, 0xf7, 0xf7,
+ 0x7a, 0xfe, 0x00, 0x9c, 0x30, 0x1c, 0x34, 0x61,
+ 0xbd, 0xe7, 0x30, 0x6a, 0x01, 0x00, 0x34, 0x42,
+ 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, 0x4c, 0x69,
+ 0x03, 0xe0, 0xe1, 0x68, 0x81, 0x42, 0x03, 0xd0,
+ 0x24, 0x68, 0x00, 0x2c, 0xf9, 0xd1, 0x01, 0xe0,
+ 0x00, 0x2c, 0x3c, 0x00, 0x2c, 0x88, 0x00, 0x00,
+ 0x03, 0xd1, 0x02, 0x21, 0x02, 0x20, 0xf8, 0xf7,
+ 0x37, 0xfd, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00,
+ 0xfc, 0x5a, 0x01, 0x00, 0x10, 0xb5, 0xc3, 0x07,
+ 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, 0x0c, 0x43,
+ 0x5c, 0x61, 0x1c, 0x7e, 0x14, 0x43, 0x1c, 0x76,
+ 0x80, 0x07, 0x06, 0xd5, 0x04, 0x48, 0x43, 0x69,
+ 0x19, 0x43, 0x41, 0x61, 0x01, 0x7e, 0x11, 0x43,
+ 0x01, 0x76, 0x10, 0xbd, 0x3c, 0x00, 0x68, 0x88,
+ 0x00, 0x00, 0xfc, 0x57, 0x01, 0x00, 0x18, 0x58,
+ 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x16, 0x1c, 0x00, 0xf0, 0x08, 0xf8, 0xa0, 0x07,
+ 0xc0, 0x17, 0x01, 0x30, 0x32, 0x1c, 0x29, 0x1c,
+ 0x00, 0xf0, 0x21, 0xf8, 0x70, 0xbd, 0x10, 0xb5,
+ 0xc3, 0x07, 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69,
+ 0x8c, 0x43, 0x5c, 0x61, 0x1c, 0x7e, 0x94, 0x43,
+ 0x1c, 0x76, 0x80, 0x07, 0x06, 0xd5, 0x3c, 0x00,
+ 0xa4, 0x88, 0x00, 0x00, 0x04, 0x48, 0x43, 0x69,
+ 0x8b, 0x43, 0x43, 0x61, 0x01, 0x7e, 0x91, 0x43,
+ 0x01, 0x76, 0x10, 0xbd, 0xfc, 0x57, 0x01, 0x00,
+ 0x18, 0x58, 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f,
+ 0x80, 0xb5, 0x01, 0x20, 0x00, 0xf0, 0x02, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x30, 0xb5, 0x15, 0x1c,
+ 0x0c, 0x1c, 0x00, 0x28, 0x87, 0xb0, 0x02, 0xd0,
+ 0x1c, 0x22, 0x22, 0x49, 0x01, 0xe0, 0x22, 0x49,
+ 0x3c, 0x00, 0xe0, 0x88, 0x00, 0x00, 0x1c, 0x22,
+ 0x68, 0x46, 0xf7, 0xf7, 0x64, 0xfe, 0x05, 0x99,
+ 0x00, 0xab, 0x1a, 0x7e, 0x8c, 0x43, 0x20, 0x1c,
+ 0x95, 0x43, 0x02, 0x9a, 0x29, 0x1c, 0x02, 0x40,
+ 0x02, 0x92, 0x01, 0x9a, 0x02, 0x40, 0x01, 0x92,
+ 0x00, 0x9a, 0x02, 0x40, 0x00, 0x92, 0x03, 0x9a,
+ 0x02, 0x40, 0x03, 0x92, 0x98, 0x7c, 0x08, 0x40,
+ 0x98, 0x74, 0x58, 0x7c, 0x08, 0x40, 0x58, 0x74,
+ 0x18, 0x7c, 0x3c, 0x00, 0x1c, 0x89, 0x00, 0x00,
+ 0x08, 0x40, 0x18, 0x74, 0xd8, 0x7c, 0x08, 0x40,
+ 0xd8, 0x74, 0x02, 0x99, 0x10, 0x48, 0x41, 0x61,
+ 0x01, 0xaa, 0x06, 0xca, 0x91, 0x43, 0x81, 0x61,
+ 0x81, 0x68, 0x01, 0x9a, 0x11, 0x43, 0x81, 0x60,
+ 0x81, 0x68, 0x00, 0x9a, 0x91, 0x43, 0x81, 0x60,
+ 0x00, 0xaa, 0x06, 0xca, 0x11, 0x43, 0x42, 0x68,
+ 0x11, 0x43, 0x41, 0x60, 0x41, 0x68, 0x03, 0x9a,
+ 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, 0x58, 0x89,
+ 0x00, 0x00, 0x04, 0xa8, 0x0b, 0xf0, 0x01, 0xf8,
+ 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0xfc, 0x57,
+ 0x01, 0x00, 0x18, 0x58, 0x01, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x01, 0x1c,
+ 0x01, 0x20, 0x08, 0xf0, 0xe0, 0xf9, 0x00, 0x2c,
+ 0x02, 0xd0, 0x03, 0xf0, 0x1c, 0xff, 0x10, 0xbd,
+ 0xfe, 0xf7, 0xd1, 0xfc, 0x10, 0xbd, 0xf0, 0xb5,
+ 0x0c, 0x1c, 0x01, 0x0e, 0x01, 0x23, 0x3c, 0x00,
+ 0x94, 0x89, 0x00, 0x00, 0x1b, 0x06, 0x09, 0x06,
+ 0x99, 0x42, 0x9f, 0xb0, 0x28, 0xd1, 0x17, 0x49,
+ 0x08, 0x40, 0x00, 0x21, 0x1a, 0x28, 0x00, 0xd3,
+ 0x02, 0x21, 0x00, 0x29, 0x19, 0xd1, 0xc5, 0x00,
+ 0x13, 0x4f, 0x10, 0xa8, 0xee, 0x19, 0xb2, 0x88,
+ 0x21, 0x68, 0xf7, 0xf7, 0x9d, 0xfd, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xea, 0xfd, 0x7a, 0x59, 0x01, 0xa9,
+ 0x10, 0xa8, 0xf7, 0xf7, 0x07, 0xfd, 0x00, 0x28,
+ 0x3c, 0x00, 0xd0, 0x89, 0x00, 0x00, 0x05, 0xd0,
+ 0x10, 0x98, 0x01, 0xa9, 0x01, 0x90, 0xb0, 0x79,
+ 0x00, 0xf0, 0x9d, 0xf8, 0x1f, 0xb0, 0xf0, 0xbd,
+ 0x2a, 0x20, 0xf8, 0xf7, 0x5e, 0xfc, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xd5, 0xfd, 0xf6, 0xe7, 0x03, 0x21,
+ 0x2a, 0x20, 0xf8, 0xf7, 0x56, 0xfc, 0xf1, 0xe7,
+ 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x24, 0x45,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x80, 0x28,
+ 0x02, 0xd0, 0x3c, 0x00, 0x0c, 0x8a, 0x00, 0x00,
+ 0x81, 0x28, 0x08, 0xd1, 0x03, 0xe0, 0x20, 0x1c,
+ 0x00, 0xf0, 0x06, 0xf9, 0x10, 0xbd, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xbc, 0xfd, 0x10, 0xbd, 0x03, 0x21,
+ 0x2c, 0x20, 0xf8, 0xf7, 0x3d, 0xfc, 0xf6, 0xe7,
+ 0xf0, 0xb5, 0x0c, 0x1c, 0x00, 0x21, 0x8b, 0xb0,
+ 0x0a, 0x91, 0x01, 0x0e, 0x01, 0x23, 0x1b, 0x06,
+ 0x09, 0x06, 0x99, 0x42, 0x2a, 0xd1, 0x18, 0x49,
+ 0x08, 0x40, 0x06, 0x1c, 0x3c, 0x00, 0x48, 0x8a,
+ 0x00, 0x00, 0x06, 0x2e, 0x01, 0xd3, 0x07, 0x21,
+ 0x24, 0xe0, 0x20, 0x89, 0xf8, 0xf7, 0xf1, 0xfe,
+ 0x22, 0x89, 0x21, 0x68, 0x05, 0x1c, 0xf7, 0xf7,
+ 0x4c, 0xfd, 0x20, 0x1c, 0xf8, 0xf7, 0x99, 0xfd,
+ 0xf4, 0x00, 0x0f, 0x4e, 0x28, 0x1c, 0x0a, 0xaa,
+ 0x69, 0x46, 0x33, 0x59, 0xf7, 0xf7, 0xb4, 0xfc,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x07, 0xd1,
+ 0x28, 0x68, 0x69, 0x46, 0x00, 0x90, 0x3c, 0x00,
+ 0x84, 0x8a, 0x00, 0x00, 0xa0, 0x19, 0x00, 0x79,
+ 0x0a, 0x9a, 0x00, 0xf0, 0x09, 0xf9, 0x28, 0x1c,
+ 0xf8, 0xf7, 0xb0, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd,
+ 0x01, 0x21, 0x2b, 0x20, 0xf8, 0xf7, 0x02, 0xfc,
+ 0xf8, 0xe7, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00,
+ 0x28, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x0e,
+ 0x01, 0x23, 0x1b, 0x06, 0x09, 0x06, 0x99, 0x42,
+ 0x80, 0xb5, 0x08, 0xd0, 0x5b, 0x00, 0x99, 0x42,
+ 0x3c, 0x00, 0xc0, 0x8a, 0x00, 0x00, 0x0b, 0xd1,
+ 0x00, 0x06, 0x00, 0x0e, 0x11, 0x1c, 0x00, 0xf0,
+ 0x0e, 0xf9, 0x80, 0xbd, 0x05, 0x49, 0x01, 0x40,
+ 0x10, 0x1c, 0x05, 0xf0, 0xa2, 0xf9, 0x80, 0xbd,
+ 0x01, 0x21, 0x2d, 0x20, 0xf8, 0xf7, 0xe1, 0xfb,
+ 0x80, 0xbd, 0x7f, 0xff, 0xff, 0x00, 0x80, 0xb5,
+ 0x01, 0x1c, 0x0f, 0x20, 0x00, 0xf0, 0x13, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, 0x04, 0x20,
+ 0x00, 0xf0, 0x3c, 0x00, 0xfc, 0x8a, 0x00, 0x00,
+ 0x0d, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c,
+ 0x17, 0x20, 0x00, 0xf0, 0x07, 0xf8, 0x80, 0xbd,
+ 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, 0x00, 0xf0,
+ 0x01, 0xf8, 0x80, 0xbd, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, 0x0f, 0x1c,
+ 0x19, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, 0xea, 0xfb,
+ 0x08, 0x48, 0x04, 0x5d, 0x21, 0x1c, 0x00, 0x20,
+ 0xf8, 0xf7, 0x50, 0xfd, 0x3c, 0x00, 0x38, 0x8b,
+ 0x00, 0x00, 0x05, 0x1c, 0x22, 0x1c, 0x39, 0x1c,
+ 0x00, 0x68, 0xf7, 0xf7, 0xda, 0xfc, 0x2a, 0x1c,
+ 0x31, 0x1c, 0x07, 0x20, 0xf8, 0xf7, 0x11, 0xf9,
+ 0xf8, 0xbd, 0xf4, 0x45, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0d, 0x1c, 0x16, 0x1c, 0x04, 0x1c, 0x1f, 0x1c,
+ 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x39, 0xfd,
+ 0x14, 0x22, 0x01, 0x68, 0x0e, 0x4b, 0x72, 0x43,
+ 0xd2, 0x18, 0x0c, 0x71, 0x12, 0x7c, 0x3c, 0x00,
+ 0x74, 0x8b, 0x00, 0x00, 0x4a, 0x71, 0x0d, 0x60,
+ 0x0b, 0x4a, 0x8f, 0x71, 0x12, 0x68, 0x7f, 0x2a,
+ 0x03, 0xd9, 0x52, 0x05, 0x52, 0x0e, 0x80, 0x23,
+ 0x1a, 0x43, 0xca, 0x71, 0x07, 0x4a, 0x00, 0x23,
+ 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, 0x02, 0x1c,
+ 0x81, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x08, 0xf9,
+ 0xf8, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00,
+ 0xfc, 0x5a, 0x01, 0x00, 0x80, 0x6e, 0x01, 0x00,
+ 0x3c, 0x00, 0xb0, 0x8b, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7,
+ 0x0e, 0xfd, 0x21, 0x8b, 0xe2, 0x7d, 0x05, 0x1c,
+ 0x09, 0x05, 0x52, 0x07, 0x52, 0x0f, 0x49, 0x0c,
+ 0x00, 0x68, 0x11, 0x43, 0x81, 0x80, 0xa1, 0x7d,
+ 0x14, 0x23, 0x0e, 0x4a, 0x59, 0x43, 0x89, 0x18,
+ 0x09, 0x7c, 0xc1, 0x71, 0xe1, 0x6a, 0x01, 0x60,
+ 0xe1, 0x68, 0x28, 0x1c, 0xf8, 0xf7, 0x17, 0xfc,
+ 0x0a, 0x48, 0x3c, 0x00, 0xec, 0x8b, 0x00, 0x00,
+ 0x00, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf7, 0xf7,
+ 0xf1, 0xfb, 0x07, 0x49, 0x04, 0x31, 0x88, 0x68,
+ 0x01, 0x30, 0x88, 0x60, 0x00, 0x21, 0x2a, 0x1c,
+ 0x00, 0x20, 0x23, 0x6b, 0xf8, 0xf7, 0xd2, 0xf8,
+ 0x01, 0x20, 0xb0, 0xbd, 0x74, 0x40, 0x01, 0x00,
+ 0x7c, 0x6e, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0x28, 0x8c,
+ 0x00, 0x00, 0x92, 0xb0, 0x01, 0x68, 0x68, 0x46,
+ 0x08, 0x22, 0xf7, 0xf7, 0x62, 0xfc, 0x00, 0xab,
+ 0x98, 0x88, 0x40, 0x07, 0x40, 0x0f, 0xd8, 0x77,
+ 0x98, 0x88, 0x40, 0x04, 0x00, 0x0d, 0x18, 0x84,
+ 0xd8, 0x88, 0x58, 0x84, 0x00, 0x98, 0x0d, 0x90,
+ 0x05, 0x94, 0x20, 0x89, 0x08, 0x38, 0x20, 0x81,
+ 0x05, 0x98, 0x01, 0x68, 0x08, 0x31, 0x01, 0x60,
+ 0x00, 0x20, 0x0a, 0x90, 0x0c, 0x90, 0x3c, 0x00,
+ 0x64, 0x8c, 0x00, 0x00, 0x00, 0x21, 0x11, 0x20,
+ 0x09, 0xf0, 0x78, 0xfb, 0x05, 0x49, 0x06, 0x4a,
+ 0x08, 0x68, 0x01, 0x30, 0x08, 0x60, 0x02, 0x21,
+ 0x02, 0xa8, 0x01, 0xf0, 0xcd, 0xfc, 0x12, 0xb0,
+ 0x10, 0xbd, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00,
+ 0x55, 0x8b, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x20,
+ 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, 0x2b, 0x21,
+ 0x0a, 0xf0, 0x8a, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0xa0, 0x8c, 0x00, 0x00, 0xf7, 0xb5,
+ 0x04, 0x1c, 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43,
+ 0x17, 0x1c, 0x06, 0x2c, 0x01, 0xd3, 0xf8, 0xf7,
+ 0x26, 0xfb, 0x0b, 0x48, 0x05, 0x5d, 0x29, 0x1c,
+ 0x00, 0x20, 0xf8, 0xf7, 0x8c, 0xfc, 0x04, 0x1c,
+ 0x00, 0x68, 0x01, 0x99, 0x2a, 0x1c, 0xf7, 0xf7,
+ 0x16, 0xfc, 0x39, 0x1c, 0x20, 0x1c, 0xf8, 0xf7,
+ 0xa2, 0xfb, 0x22, 0x1c, 0x31, 0x1c, 0x00, 0x23,
+ 0x02, 0x20, 0x3c, 0x00, 0xdc, 0x8c, 0x00, 0x00,
+ 0xf8, 0xf7, 0x68, 0xf8, 0xfe, 0xbd, 0x00, 0x00,
+ 0x20, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x1c,
+ 0x80, 0xb5, 0x00, 0x23, 0x01, 0x20, 0xf8, 0xf7,
+ 0x5d, 0xf8, 0x80, 0xbd, 0xff, 0xb5, 0x9f, 0xb0,
+ 0x1f, 0x1c, 0x05, 0x1c, 0x0a, 0x30, 0x1e, 0x90,
+ 0x1c, 0xaa, 0x1d, 0xa9, 0x0a, 0xf0, 0x00, 0xff,
+ 0x00, 0x28, 0x71, 0xd0, 0x00, 0x2f, 0x09, 0xd0,
+ 0x0a, 0x21, 0x00, 0x20, 0x3c, 0x00, 0x18, 0x8d,
+ 0x00, 0x00, 0xf8, 0xf7, 0x5e, 0xfc, 0x06, 0x68,
+ 0x04, 0x1c, 0x30, 0x1d, 0xfa, 0xf7, 0xaf, 0xfa,
+ 0x05, 0xe0, 0x04, 0x21, 0x00, 0x20, 0xf8, 0xf7,
+ 0x54, 0xfc, 0x06, 0x68, 0x04, 0x1c, 0x28, 0x89,
+ 0x36, 0x49, 0x01, 0x22, 0x08, 0x80, 0x70, 0x80,
+ 0xe8, 0x88, 0x14, 0xa9, 0x30, 0x80, 0x19, 0xa8,
+ 0xfc, 0xf7, 0xf5, 0xfc, 0xfc, 0xf7, 0xff, 0xfb,
+ 0x01, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x3c, 0x00,
+ 0x54, 0x8d, 0x00, 0x00, 0x20, 0x1c, 0x01, 0xf0,
+ 0xef, 0xf8, 0x19, 0xa9, 0x20, 0x1c, 0x01, 0xf0,
+ 0xeb, 0xf8, 0x14, 0xa9, 0x20, 0x1c, 0x01, 0xf0,
+ 0xe7, 0xf8, 0x20, 0x1c, 0x20, 0x99, 0xfd, 0xf7,
+ 0x4b, 0xfd, 0x00, 0x22, 0x02, 0x21, 0x01, 0xf0,
+ 0x33, 0xfd, 0x06, 0x1c, 0x1c, 0x99, 0x00, 0x20,
+ 0x88, 0x61, 0x30, 0x1c, 0xf8, 0xf7, 0x1c, 0xfa,
+ 0x00, 0x2e, 0x0b, 0xd0, 0x30, 0x7a, 0x00, 0x28,
+ 0x3c, 0x00, 0x90, 0x8d, 0x00, 0x00, 0x02, 0xd0,
+ 0x40, 0x21, 0x08, 0x43, 0x30, 0x72, 0x1c, 0x98,
+ 0x02, 0x22, 0x81, 0x69, 0x11, 0x43, 0x81, 0x61,
+ 0x04, 0xe0, 0x1c, 0x99, 0x02, 0x22, 0x88, 0x69,
+ 0x90, 0x43, 0x88, 0x61, 0x1d, 0xaa, 0x06, 0xca,
+ 0x01, 0xa8, 0x05, 0xf0, 0x58, 0xfb, 0x09, 0xa8,
+ 0x00, 0x2f, 0x02, 0xd0, 0x02, 0x22, 0x42, 0x72,
+ 0x01, 0xe0, 0x00, 0x21, 0x41, 0x72, 0x04, 0x94,
+ 0x01, 0xa8, 0x3c, 0x00, 0xcc, 0x8d, 0x00, 0x00,
+ 0x04, 0xf0, 0x7a, 0xfb, 0x01, 0x21, 0x1c, 0x98,
+ 0x08, 0xf0, 0xc8, 0xff, 0x00, 0x2f, 0x04, 0xd0,
+ 0x1c, 0x98, 0x01, 0x22, 0x81, 0x69, 0x11, 0x43,
+ 0x81, 0x61, 0xa8, 0x88, 0x1c, 0x9c, 0x01, 0xf0,
+ 0x9f, 0xfe, 0x02, 0x1c, 0x21, 0x1c, 0x00, 0xe0,
+ 0x04, 0xe0, 0x07, 0x48, 0x40, 0x88, 0x09, 0xf0,
+ 0x1f, 0xf8, 0x04, 0xe0, 0x3a, 0x1c, 0x00, 0x21,
+ 0x05, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0x08, 0x8e,
+ 0x00, 0x00, 0x9b, 0xf8, 0x00, 0x20, 0x23, 0xb0,
+ 0xf0, 0xbd, 0xfc, 0x60, 0x01, 0x00, 0x98, 0x7c,
+ 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68,
+ 0x05, 0x68, 0xa0, 0x1d, 0x01, 0xf0, 0x95, 0xff,
+ 0x00, 0x28, 0x45, 0xd0, 0x21, 0x1c, 0x14, 0x31,
+ 0x20, 0x1c, 0x6a, 0x46, 0x0a, 0xf0, 0x55, 0xfe,
+ 0x00, 0x28, 0x3d, 0xd0, 0xfc, 0xf7, 0x7d, 0xfa,
+ 0x00, 0x28, 0x39, 0xd1, 0x00, 0x98, 0x3c, 0x00,
+ 0x44, 0x8e, 0x00, 0x00, 0x4b, 0x21, 0x09, 0x5c,
+ 0x01, 0x29, 0x34, 0xd1, 0x04, 0x26, 0x09, 0xf0,
+ 0x19, 0xf9, 0x68, 0x88, 0x00, 0x28, 0x1b, 0xd1,
+ 0xa8, 0x88, 0x03, 0x21, 0x89, 0x03, 0x88, 0x43,
+ 0x15, 0x49, 0x00, 0x26, 0x08, 0x80, 0x01, 0x22,
+ 0x02, 0x21, 0x20, 0x69, 0x01, 0xf0, 0xb8, 0xfc,
+ 0x04, 0x1c, 0x14, 0xd0, 0x00, 0x98, 0x80, 0x69,
+ 0x80, 0x07, 0x10, 0xd5, 0xf8, 0xf7, 0x9a, 0xf9,
+ 0x3c, 0x00, 0x80, 0x8e, 0x00, 0x00, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xdd, 0xf8, 0x00, 0x28, 0x09, 0xd1,
+ 0xf8, 0xf7, 0x7f, 0xf9, 0x01, 0x26, 0x00, 0x98,
+ 0x02, 0x22, 0x81, 0x69, 0x91, 0x43, 0x81, 0x61,
+ 0x00, 0x21, 0x01, 0xe0, 0x00, 0x98, 0x02, 0x21,
+ 0x08, 0xf0, 0x61, 0xff, 0x00, 0x98, 0x80, 0x69,
+ 0xa9, 0x88, 0xc2, 0x07, 0xd2, 0x0f, 0x30, 0x1c,
+ 0xf9, 0xf7, 0x45, 0xf8, 0xf8, 0xbd, 0xfa, 0x60,
+ 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x8e, 0x00, 0x00,
+ 0x1c, 0xb5, 0x04, 0x69, 0x00, 0x23, 0x00, 0x22,
+ 0x00, 0x2c, 0x13, 0xd1, 0x4b, 0x24, 0x24, 0x5c,
+ 0x02, 0x2c, 0x03, 0xd1, 0x02, 0x29, 0x05, 0xd0,
+ 0x01, 0x22, 0x03, 0xe0, 0x02, 0x29, 0x01, 0xd1,
+ 0x01, 0x22, 0x01, 0x23, 0x00, 0x2a, 0x05, 0xd0,
+ 0x00, 0x90, 0x04, 0x20, 0x01, 0x93, 0x69, 0x46,
+ 0x09, 0xf0, 0x36, 0xfa, 0x1c, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x8e,
+ 0x00, 0x00, 0xf2, 0x21, 0x0f, 0x20, 0x0c, 0x4d,
+ 0x0a, 0xf0, 0x99, 0xfb, 0x28, 0x78, 0x08, 0x28,
+ 0x0b, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x07, 0x03, 0x03, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x00, 0x2c, 0x01, 0xd1, 0x05, 0xf0,
+ 0xbc, 0xfb, 0xb0, 0xbd, 0x01, 0x2c, 0xfc, 0xd1,
+ 0xff, 0x20, 0x07, 0xf0, 0x38, 0xfa, 0xb0, 0xbd,
+ 0x00, 0x00, 0x74, 0x66, 0x01, 0x00, 0x3c, 0x00,
+ 0x34, 0x8f, 0x00, 0x00, 0x8c, 0xb5, 0x05, 0x4a,
+ 0x00, 0xab, 0x11, 0x72, 0x00, 0x90, 0x19, 0x71,
+ 0x69, 0x46, 0x08, 0x20, 0x09, 0xf0, 0x0a, 0xfa,
+ 0x8c, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00,
+ 0xf3, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x27,
+ 0x85, 0xb0, 0x06, 0x68, 0x09, 0xf0, 0x26, 0xff,
+ 0x98, 0x49, 0x48, 0x63, 0x20, 0x69, 0x03, 0x21,
+ 0x01, 0xf0, 0x08, 0xfc, 0x96, 0x4d, 0x00, 0x28,
+ 0x3c, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x4d, 0xd0,
+ 0x95, 0x49, 0x40, 0x31, 0x09, 0x79, 0x80, 0x78,
+ 0x81, 0x42, 0x47, 0xd1, 0x01, 0x21, 0x20, 0x69,
+ 0x01, 0xf0, 0xfb, 0xfb, 0x02, 0x90, 0x20, 0x69,
+ 0x32, 0x21, 0x01, 0xf0, 0xf6, 0xfb, 0x01, 0x90,
+ 0x02, 0x1c, 0x8d, 0x48, 0x02, 0x99, 0xfc, 0xf7,
+ 0x46, 0xff, 0x00, 0x28, 0x36, 0xd0, 0x00, 0x23,
+ 0x8a, 0x48, 0x02, 0x99, 0x01, 0x9a, 0xfc, 0xf7,
+ 0xe4, 0xfe, 0x3c, 0x00, 0xac, 0x8f, 0x00, 0x00,
+ 0x0b, 0x28, 0x2e, 0xd1, 0x86, 0x4a, 0x51, 0x88,
+ 0x70, 0x89, 0x41, 0x40, 0x03, 0x91, 0x0b, 0x1c,
+ 0x84, 0x49, 0x0b, 0x40, 0x25, 0xd1, 0x50, 0x80,
+ 0x03, 0x99, 0x17, 0x1c, 0x00, 0x29, 0x0b, 0xd0,
+ 0x03, 0x99, 0x48, 0x05, 0x02, 0xd5, 0x38, 0x1c,
+ 0xfc, 0xf7, 0x40, 0xfe, 0x03, 0x99, 0x88, 0x06,
+ 0x02, 0xd5, 0x38, 0x1c, 0xfc, 0xf7, 0x24, 0xfe,
+ 0x2a, 0x21, 0x20, 0x69, 0x3c, 0x00, 0xe8, 0x8f,
+ 0x00, 0x00, 0x01, 0xf0, 0xc8, 0xfb, 0x00, 0x28,
+ 0x0d, 0xd0, 0x80, 0x78, 0xe9, 0x69, 0x81, 0x42,
+ 0x09, 0xd0, 0xe8, 0x61, 0x38, 0x1c, 0xfc, 0xf7,
+ 0x16, 0xfe, 0x38, 0x1c, 0xfc, 0xf7, 0x07, 0xfe,
+ 0x38, 0x1c, 0xfc, 0xf7, 0x26, 0xfe, 0x00, 0x27,
+ 0x20, 0x1c, 0x20, 0x30, 0x04, 0x90, 0x40, 0x7a,
+ 0x08, 0x28, 0x71, 0xd1, 0x0a, 0xf0, 0xd1, 0xfc,
+ 0x00, 0x20, 0x68, 0x61, 0x00, 0x23, 0x3c, 0x00,
+ 0x24, 0x90, 0x00, 0x00, 0x2b, 0x61, 0xa8, 0x68,
+ 0x66, 0x49, 0x01, 0x30, 0xa8, 0x60, 0x30, 0x89,
+ 0x5c, 0x31, 0x88, 0x82, 0x01, 0xf0, 0x7a, 0xfd,
+ 0x62, 0x49, 0x5c, 0x31, 0x08, 0x61, 0x22, 0x6a,
+ 0x04, 0x98, 0x18, 0x21, 0x00, 0x7a, 0x01, 0xf0,
+ 0x33, 0xfe, 0xe1, 0x6a, 0x40, 0x18, 0x03, 0x90,
+ 0x5c, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x0d, 0xd0,
+ 0x00, 0x2f, 0x0b, 0xd1, 0x59, 0x48, 0x01, 0x23,
+ 0x3c, 0x00, 0x60, 0x90, 0x00, 0x00, 0x5c, 0x30,
+ 0x01, 0x68, 0x1b, 0x07, 0x00, 0x22, 0x30, 0x68,
+ 0x09, 0xf0, 0x49, 0xff, 0x00, 0x28, 0x00, 0xd1,
+ 0x05, 0x27, 0x00, 0x21, 0xa0, 0x6b, 0x0a, 0xf0,
+ 0xce, 0xfc, 0x00, 0x21, 0x20, 0x6c, 0x0a, 0xf0,
+ 0xe8, 0xfc, 0x4f, 0x4b, 0x03, 0xce, 0x03, 0x9a,
+ 0x5c, 0x33, 0xfc, 0xf7, 0x88, 0xfd, 0x00, 0x20,
+ 0x4c, 0x4e, 0x05, 0x21, 0xb0, 0x63, 0x20, 0x69,
+ 0x01, 0xf0, 0x3c, 0x00, 0x9c, 0x90, 0x00, 0x00,
+ 0x6f, 0xfb, 0x01, 0x1c, 0x01, 0xd1, 0xf0, 0x60,
+ 0x1c, 0xe0, 0x01, 0x20, 0xf0, 0x60, 0x88, 0x78,
+ 0x45, 0x4a, 0x01, 0x32, 0x10, 0x70, 0xc8, 0x78,
+ 0x50, 0x70, 0x47, 0x4a, 0x10, 0x70, 0x30, 0x69,
+ 0x00, 0x28, 0x0a, 0xd0, 0x4a, 0x78, 0x08, 0x79,
+ 0x05, 0x31, 0x09, 0xf0, 0xdd, 0xfa, 0x31, 0x69,
+ 0xf7, 0xf7, 0x85, 0xf9, 0xf0, 0x68, 0x00, 0x28,
+ 0x04, 0xd0, 0x3b, 0x4a, 0x3c, 0x00, 0xd8, 0x90,
+ 0x00, 0x00, 0x01, 0x32, 0x10, 0x78, 0x00, 0x28,
+ 0x08, 0xd1, 0x00, 0x20, 0xa8, 0x61, 0x71, 0x6a,
+ 0x00, 0x29, 0x03, 0xd0, 0x20, 0x1c, 0x14, 0x30,
+ 0xf7, 0xf7, 0x74, 0xf9, 0x34, 0x4a, 0x5c, 0x32,
+ 0x10, 0x69, 0x31, 0x6a, 0x41, 0x18, 0x00, 0xe0,
+ 0x20, 0xe0, 0x0a, 0x23, 0xd0, 0x68, 0x0a, 0x22,
+ 0x09, 0xf0, 0xfb, 0xfe, 0x00, 0x28, 0x07, 0xd0,
+ 0x2d, 0x4a, 0x31, 0x6a, 0x5c, 0x32, 0x3c, 0x00,
+ 0x14, 0x91, 0x00, 0x00, 0xd0, 0x68, 0x40, 0x1a,
+ 0x11, 0x69, 0x40, 0x1a, 0x70, 0x60, 0x29, 0x4a,
+ 0x5c, 0x32, 0xd0, 0x68, 0x30, 0x62, 0xf0, 0x69,
+ 0x00, 0x28, 0x04, 0xd0, 0xfa, 0xf7, 0x00, 0xfd,
+ 0x01, 0x20, 0xfa, 0xf7, 0xa1, 0xfc, 0xfa, 0xf7,
+ 0x81, 0xfc, 0x27, 0x48, 0x00, 0x68, 0x03, 0xf0,
+ 0x07, 0xf9, 0x06, 0x98, 0x00, 0x28, 0x03, 0xd1,
+ 0x1e, 0x4e, 0x00, 0x23, 0xb3, 0x60, 0x16, 0xe0,
+ 0x3c, 0x00, 0x50, 0x91, 0x00, 0x00, 0x1c, 0x4e,
+ 0x01, 0x20, 0xb0, 0x60, 0x06, 0x98, 0x01, 0x68,
+ 0x40, 0x68, 0xb0, 0x65, 0x19, 0x48, 0x71, 0x65,
+ 0x54, 0x30, 0xc0, 0x88, 0x00, 0x28, 0x09, 0xd0,
+ 0xb1, 0x69, 0x00, 0x29, 0x06, 0xd0, 0x01, 0xf0,
+ 0xdc, 0xfc, 0x01, 0x1c, 0xe0, 0x6a, 0xb2, 0x69,
+ 0xf7, 0xf7, 0x2f, 0xf9, 0x00, 0x2f, 0x15, 0xd1,
+ 0x12, 0x48, 0x01, 0x69, 0x00, 0x29, 0x08, 0xd1,
+ 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x91, 0x00, 0x00,
+ 0x01, 0x61, 0x2a, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0x00, 0x21, 0x00, 0x20, 0xf7, 0xf7, 0x20, 0xf9,
+ 0x09, 0x49, 0x00, 0x23, 0xcb, 0x62, 0x2b, 0x61,
+ 0x6b, 0x61, 0x06, 0xf0, 0xb5, 0xf8, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x6b, 0x68, 0x06, 0x48, 0x00, 0x2b,
+ 0xf9, 0xd0, 0x02, 0x1d, 0x11, 0x1c, 0x38, 0x1c,
+ 0xf7, 0xf7, 0x0f, 0xf9, 0xf3, 0xe7, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x91,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xf4, 0x67,
+ 0x01, 0x00, 0x03, 0x08, 0x00, 0x00, 0xf8, 0x60,
+ 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x08, 0xb5,
+ 0xf8, 0xf7, 0x2f, 0xfd, 0x00, 0x90, 0x00, 0xab,
+ 0x18, 0x88, 0x00, 0x28, 0x0c, 0xd0, 0x05, 0xf0,
+ 0x50, 0xff, 0x00, 0xab, 0x59, 0x88, 0x18, 0x88,
+ 0x05, 0xf0, 0x6d, 0xf9, 0xfe, 0xf7, 0x97, 0xf8,
+ 0x03, 0x20, 0xfb, 0xf7, 0x0e, 0xf8, 0x3c, 0x00,
+ 0x04, 0x92, 0x00, 0x00, 0x08, 0xbd, 0x01, 0x20,
+ 0xff, 0xf7, 0xb2, 0xfb, 0x00, 0x20, 0x08, 0xf0,
+ 0x8d, 0xfe, 0xf7, 0xe7, 0xf8, 0xb5, 0x4f, 0x49,
+ 0x8c, 0x68, 0x20, 0x6a, 0x00, 0x68, 0x05, 0x78,
+ 0xfc, 0xf7, 0x68, 0xfa, 0x00, 0x28, 0x12, 0xd0,
+ 0x2a, 0x07, 0x92, 0x0f, 0x01, 0x21, 0x01, 0x2a,
+ 0x00, 0xd0, 0x00, 0x21, 0x00, 0x29, 0x03, 0xd0,
+ 0x29, 0x06, 0x09, 0x0f, 0x0b, 0x29, 0x06, 0xd1,
+ 0x3c, 0x00, 0x40, 0x92, 0x00, 0x00, 0x2a, 0x21,
+ 0x09, 0x5d, 0x08, 0x18, 0x90, 0x30, 0x00, 0x7b,
+ 0xf9, 0xf7, 0x0d, 0xfc, 0x41, 0x4f, 0x3c, 0x3f,
+ 0xb8, 0x6b, 0x79, 0x6b, 0xf7, 0xf7, 0xc0, 0xf8,
+ 0xa0, 0x6c, 0x00, 0x26, 0xc6, 0x60, 0x60, 0x6b,
+ 0x80, 0x08, 0x04, 0xd0, 0xb8, 0x69, 0x01, 0x30,
+ 0xb8, 0x61, 0x06, 0xf0, 0xdc, 0xf9, 0x39, 0x4d,
+ 0x28, 0x69, 0x80, 0x05, 0x80, 0x0f, 0x08, 0xd1,
+ 0x78, 0x69, 0x3c, 0x00, 0x7c, 0x92, 0x00, 0x00,
+ 0x04, 0x21, 0x01, 0x30, 0x78, 0x61, 0x60, 0x6b,
+ 0x40, 0x08, 0x40, 0x00, 0x08, 0x43, 0x60, 0x63,
+ 0xb8, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x60, 0x6b,
+ 0x08, 0x21, 0x08, 0x43, 0x60, 0x63, 0x20, 0x1c,
+ 0x20, 0x30, 0x00, 0x90, 0x39, 0x68, 0xf7, 0xf7,
+ 0x9a, 0xf8, 0x03, 0x20, 0x00, 0x02, 0x28, 0x60,
+ 0x2b, 0x49, 0x88, 0x68, 0xa0, 0x63, 0xc8, 0x68,
+ 0xe0, 0x63, 0x08, 0x79, 0x3c, 0x00, 0xb8, 0x92,
+ 0x00, 0x00, 0xc0, 0x06, 0xc0, 0x0e, 0x25, 0x1c,
+ 0x40, 0x35, 0x28, 0x71, 0x48, 0x79, 0x68, 0x71,
+ 0x23, 0x48, 0x3c, 0x38, 0x46, 0x62, 0x00, 0x98,
+ 0x80, 0x7a, 0x01, 0xf0, 0x5e, 0xfd, 0x00, 0x21,
+ 0x00, 0x28, 0x21, 0x4a, 0x01, 0xd0, 0x11, 0x78,
+ 0x03, 0xe0, 0x93, 0x78, 0xdb, 0x07, 0x00, 0xd5,
+ 0x51, 0x78, 0xa9, 0x71, 0x00, 0x28, 0x04, 0xd0,
+ 0x1b, 0x49, 0x14, 0x31, 0x08, 0x68, 0x3c, 0x00,
+ 0xf4, 0x92, 0x00, 0x00, 0x20, 0x64, 0x00, 0xe0,
+ 0x6e, 0x80, 0xb8, 0x6a, 0xc0, 0x07, 0x02, 0xd5,
+ 0xff, 0x20, 0x28, 0x71, 0xae, 0x71, 0xe6, 0x61,
+ 0xb8, 0x68, 0x01, 0x30, 0xb8, 0x60, 0x79, 0x68,
+ 0x88, 0x42, 0x03, 0xd0, 0x0b, 0x21, 0x85, 0x20,
+ 0xf7, 0xf7, 0xc4, 0xff, 0x0d, 0x49, 0x88, 0x68,
+ 0xc0, 0x6c, 0x88, 0x60, 0xfb, 0x6a, 0x00, 0x2b,
+ 0x0c, 0xd0, 0x0e, 0x4a, 0xd4, 0x7b, 0x00, 0x2b,
+ 0x3c, 0x00, 0x30, 0x93, 0x00, 0x00, 0x02, 0xdd,
+ 0x7f, 0x2c, 0x05, 0xd2, 0x01, 0xe0, 0x00, 0x2c,
+ 0x02, 0xd0, 0xd4, 0x7b, 0xe3, 0x18, 0xd3, 0x73,
+ 0xfe, 0x62, 0xc9, 0x68, 0x88, 0x42, 0x03, 0xd1,
+ 0x05, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0xa9, 0xff,
+ 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xe8, 0x80,
+ 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0xfe, 0xb5,
+ 0x30, 0x4c, 0x3c, 0x00, 0x6c, 0x93, 0x00, 0x00,
+ 0xa0, 0x6b, 0x21, 0x6b, 0xf7, 0xf7, 0x33, 0xf8,
+ 0x2d, 0x49, 0x3c, 0x31, 0x8e, 0x68, 0x70, 0x8b,
+ 0x06, 0x28, 0x04, 0xd2, 0xe0, 0x69, 0x01, 0x30,
+ 0xe0, 0x61, 0x0e, 0x20, 0x30, 0x85, 0x28, 0x49,
+ 0x3c, 0x31, 0x0d, 0x68, 0x00, 0x2d, 0x03, 0xd1,
+ 0x03, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0x84, 0xff,
+ 0x24, 0x48, 0x45, 0x61, 0x35, 0x62, 0x31, 0x8d,
+ 0xef, 0x68, 0x04, 0x39, 0x3c, 0x00, 0xa8, 0x93,
+ 0x00, 0x00, 0x0c, 0x04, 0x01, 0x21, 0x02, 0x91,
+ 0x24, 0x0c, 0x00, 0x21, 0x01, 0x91, 0x1d, 0x48,
+ 0x3c, 0x30, 0x80, 0x8a, 0xa0, 0x42, 0x03, 0xd3,
+ 0x2c, 0x81, 0xee, 0x60, 0x00, 0x24, 0x0b, 0xe0,
+ 0x00, 0x2f, 0x04, 0xd1, 0x03, 0x21, 0x85, 0x20,
+ 0xf7, 0xf7, 0x69, 0xff, 0x04, 0xe0, 0x3d, 0x1c,
+ 0x20, 0x1a, 0x04, 0x04, 0xff, 0x68, 0x24, 0x0c,
+ 0x02, 0x98, 0x00, 0x28, 0x04, 0xd0, 0x3c, 0x00,
+ 0xe4, 0x93, 0x00, 0x00, 0x12, 0x49, 0x01, 0x20,
+ 0x08, 0x61, 0x00, 0x20, 0x02, 0x90, 0x01, 0x98,
+ 0x01, 0x30, 0x01, 0x90, 0x00, 0x2c, 0xdd, 0xd1,
+ 0x0c, 0x48, 0x0c, 0x4c, 0x3c, 0x30, 0x07, 0x60,
+ 0x01, 0x98, 0x30, 0x65, 0xb5, 0x64, 0x30, 0x6a,
+ 0x00, 0x68, 0x60, 0x62, 0x60, 0x68, 0x01, 0x30,
+ 0x60, 0x60, 0xa1, 0x68, 0x01, 0x31, 0x88, 0x42,
+ 0x03, 0xd0, 0x0a, 0x21, 0x85, 0x20, 0xf7, 0xf7,
+ 0x3c, 0x00, 0x20, 0x94, 0x00, 0x00, 0x41, 0xff,
+ 0x04, 0x48, 0x00, 0x68, 0xa0, 0x62, 0xfe, 0xbd,
+ 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5,
+ 0x05, 0x1c, 0x01, 0x21, 0x0f, 0x20, 0x0a, 0xf0,
+ 0xf8, 0xf8, 0xf2, 0x21, 0x0f, 0x20, 0x0a, 0xf0,
+ 0xf4, 0xf8, 0x0c, 0x48, 0x0c, 0x4c, 0x00, 0x68,
+ 0x14, 0x3c, 0x00, 0x28, 0x0c, 0xd0, 0xe0, 0x78,
+ 0x01, 0x28, 0x3c, 0x00, 0x5c, 0x94, 0x00, 0x00,
+ 0x09, 0xd0, 0x01, 0x22, 0x29, 0x1c, 0x0f, 0x20,
+ 0x0a, 0xf0, 0xac, 0xf8, 0x60, 0x78, 0x02, 0x28,
+ 0x06, 0xd0, 0x01, 0x20, 0x03, 0xe0, 0x60, 0x78,
+ 0x02, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x60, 0x70,
+ 0xb0, 0xbd, 0x00, 0x00, 0x98, 0x66, 0x01, 0x00,
+ 0x02, 0x22, 0x00, 0x28, 0x80, 0xb5, 0x00, 0xd1,
+ 0x03, 0x22, 0x03, 0x49, 0x0e, 0x20, 0x0a, 0xf0,
+ 0x9b, 0xf8, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x94,
+ 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x50, 0xc3,
+ 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x23, 0x00, 0x22,
+ 0x00, 0x28, 0x2e, 0xd0, 0x06, 0x89, 0x04, 0x68,
+ 0x75, 0x1e, 0x2d, 0x04, 0xb6, 0x1a, 0xf6, 0x07,
+ 0x2d, 0x0c, 0xf6, 0x0f, 0xb4, 0x46, 0x0e, 0xe0,
+ 0xa7, 0x5c, 0xa6, 0x18, 0x02, 0x33, 0x00, 0x97,
+ 0x77, 0x78, 0xa7, 0x54, 0x02, 0x32, 0x12, 0x04,
+ 0x00, 0x9f, 0x12, 0x0c, 0x00, 0x29, 0x3c, 0x00,
+ 0xd4, 0x94, 0x00, 0x00, 0x77, 0x70, 0x01, 0xdd,
+ 0x8b, 0x42, 0x15, 0xda, 0xaa, 0x42, 0xee, 0xd3,
+ 0xc0, 0x68, 0x00, 0x28, 0x10, 0xd0, 0x02, 0x89,
+ 0x00, 0x2a, 0xf9, 0xd0, 0x62, 0x46, 0x00, 0x2a,
+ 0x0b, 0xd0, 0x02, 0x68, 0x66, 0x5d, 0x17, 0x78,
+ 0x02, 0x33, 0x67, 0x55, 0x16, 0x70, 0x01, 0x22,
+ 0x00, 0x29, 0xd2, 0xdd, 0x8b, 0x42, 0xd0, 0xdb,
+ 0xf8, 0xbd, 0x00, 0x22, 0xcd, 0xe7, 0x00, 0x00,
+ 0x3c, 0x00, 0x10, 0x95, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x1c, 0x01, 0x20, 0xf8, 0xf7,
+ 0x5e, 0xfb, 0x0d, 0x49, 0x00, 0x28, 0xc8, 0x61,
+ 0x14, 0xd0, 0x62, 0x68, 0x42, 0x60, 0xa2, 0x7c,
+ 0x02, 0x72, 0xa2, 0x68, 0xc2, 0x60, 0xe2, 0x68,
+ 0x02, 0x61, 0x22, 0x8a, 0x02, 0x75, 0x0a, 0x1d,
+ 0x0a, 0x62, 0x12, 0x68, 0x00, 0x2a, 0xff, 0xd1,
+ 0x02, 0x60, 0x48, 0x60, 0x00, 0x20, 0xa8, 0x60,
+ 0x01, 0x20, 0x3c, 0x00, 0x4c, 0x95, 0x00, 0x00,
+ 0xb0, 0xbd, 0x01, 0x20, 0xfa, 0xe7, 0x00, 0x00,
+ 0xa4, 0x6e, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x40, 0x68, 0x0d, 0x1c, 0x43, 0x1c, 0x02, 0xd1,
+ 0x21, 0x1c, 0x09, 0x48, 0x08, 0xe0, 0x00, 0x20,
+ 0xf8, 0xf7, 0x34, 0xfb, 0x06, 0x49, 0x94, 0x39,
+ 0x08, 0x61, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c,
+ 0x00, 0xf0, 0x48, 0xfe, 0x00, 0xe0, 0x01, 0x20,
+ 0xa8, 0x60, 0x01, 0x20, 0x3c, 0x00, 0x88, 0x95,
+ 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0x38, 0x6f,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x97, 0x20,
+ 0xf7, 0xf7, 0x85, 0xfe, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x38, 0xb5, 0x0a, 0x1c, 0x14, 0x32,
+ 0x00, 0x92, 0x13, 0x1f, 0x05, 0x1c, 0x08, 0x3a,
+ 0x0c, 0x1c, 0x16, 0x31, 0x40, 0x68, 0xfe, 0xf7,
+ 0x6c, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20,
+ 0x00, 0xe0, 0x01, 0x20, 0x69, 0x68, 0x3c, 0x00,
+ 0xc4, 0x95, 0x00, 0x00, 0xa0, 0x60, 0x61, 0x60,
+ 0x01, 0x20, 0x38, 0xbd, 0x10, 0xb5, 0x0c, 0x1c,
+ 0x01, 0x7a, 0x00, 0x29, 0x0f, 0xd0, 0x01, 0x29,
+ 0x09, 0xd0, 0x02, 0x29, 0x03, 0xd1, 0x00, 0x21,
+ 0x00, 0x20, 0x0a, 0xf0, 0x73, 0xfc, 0x00, 0x20,
+ 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, 0x41, 0x68,
+ 0x01, 0x20, 0x0a, 0xf0, 0x6b, 0xfc, 0x00, 0xf0,
+ 0x0d, 0xf9, 0xf4, 0xe7, 0x80, 0xb5, 0x04, 0x49,
+ 0x3c, 0x00, 0x00, 0x96, 0x00, 0x00, 0x48, 0x68,
+ 0x01, 0x38, 0x48, 0x60, 0x01, 0xd1, 0x07, 0xf0,
+ 0x6e, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0xac, 0x79,
+ 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c,
+ 0x00, 0xf0, 0x4f, 0xfe, 0xa0, 0x60, 0x68, 0x68,
+ 0x60, 0x60, 0x01, 0x20, 0xb0, 0xbd, 0xb0, 0xb5,
+ 0x05, 0x1c, 0x0c, 0x1c, 0x00, 0xf0, 0x6f, 0xfe,
+ 0xa0, 0x60, 0x68, 0x68, 0x60, 0x60, 0x01, 0x20,
+ 0xb0, 0xbd, 0x3c, 0x00, 0x3c, 0x96, 0x00, 0x00,
+ 0x08, 0x1c, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x08, 0xc0, 0x01, 0x20, 0x70, 0x47,
+ 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x20, 0x79,
+ 0x20, 0x28, 0x01, 0xd2, 0x20, 0x20, 0x20, 0x71,
+ 0x66, 0x79, 0x00, 0x2e, 0x02, 0xd1, 0x25, 0x79,
+ 0x00, 0x22, 0x0d, 0xe0, 0x25, 0x79, 0x29, 0x1c,
+ 0x30, 0x1c, 0xf7, 0xf7, 0x4f, 0xf8, 0x00, 0x29,
+ 0x01, 0xd1, 0x32, 0x1c, 0x3c, 0x00, 0x78, 0x96,
+ 0x00, 0x00, 0x04, 0xe0, 0x70, 0x43, 0x80, 0x19,
+ 0x05, 0x06, 0x2d, 0x0e, 0x32, 0x1c, 0xe0, 0x79,
+ 0x29, 0x1c, 0x00, 0xf0, 0xf2, 0xf9, 0x20, 0x7a,
+ 0x2f, 0x49, 0xc0, 0x07, 0xc0, 0x0f, 0x08, 0x60,
+ 0x2e, 0x48, 0x00, 0x78, 0xc0, 0x07, 0x43, 0xd5,
+ 0xa1, 0x79, 0x2c, 0x4a, 0xc8, 0x07, 0x48, 0xd4,
+ 0x2c, 0x4e, 0x16, 0x60, 0x8b, 0x07, 0x2b, 0x48,
+ 0x08, 0xd5, 0xcc, 0x08, 0x01, 0x23, 0x3c, 0x00,
+ 0xb4, 0x96, 0x00, 0x00, 0xa3, 0x40, 0x03, 0x60,
+ 0x49, 0x07, 0x04, 0xd5, 0x28, 0x49, 0x11, 0x60,
+ 0x01, 0xe0, 0x40, 0x21, 0x01, 0x60, 0x13, 0x68,
+ 0x26, 0x4a, 0xb3, 0x42, 0x10, 0xd1, 0x54, 0x68,
+ 0x01, 0x68, 0x0c, 0x43, 0x54, 0x60, 0x14, 0x68,
+ 0x0c, 0x40, 0x01, 0xd0, 0x51, 0x61, 0x00, 0xe0,
+ 0x91, 0x61, 0x54, 0x68, 0x0c, 0x43, 0x54, 0x60,
+ 0x94, 0x68, 0x21, 0x43, 0x91, 0x60, 0x13, 0xe0,
+ 0x3c, 0x00, 0xf0, 0x96, 0x00, 0x00, 0x54, 0x7c,
+ 0x01, 0x68, 0x0c, 0x43, 0x54, 0x74, 0x14, 0x7c,
+ 0x0c, 0x40, 0x03, 0xd0, 0x14, 0x7c, 0x0c, 0x43,
+ 0x14, 0x74, 0x02, 0xe0, 0x14, 0x7c, 0x8c, 0x43,
+ 0x14, 0x74, 0x54, 0x7c, 0x0c, 0x43, 0x54, 0x74,
+ 0x94, 0x7c, 0x21, 0x43, 0x91, 0x74, 0xb3, 0x42,
+ 0x05, 0xd1, 0x00, 0x22, 0x01, 0x68, 0x03, 0x20,
+ 0xff, 0xf7, 0x8d, 0xf8, 0x09, 0xe0, 0x00, 0x68,
+ 0x00, 0x21, 0x3c, 0x00, 0x2c, 0x97, 0x00, 0x00,
+ 0x02, 0x06, 0x12, 0x0e, 0x03, 0x20, 0xff, 0xf7,
+ 0x85, 0xf8, 0x01, 0xe0, 0x0b, 0x48, 0x10, 0x60,
+ 0x00, 0x20, 0x38, 0x71, 0x7d, 0x71, 0xf7, 0xf7,
+ 0xe9, 0xfd, 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x00,
+ 0xcc, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00,
+ 0x5c, 0x5b, 0x01, 0x00, 0xb9, 0x9b, 0x00, 0x00,
+ 0x58, 0x5b, 0x01, 0x00, 0x95, 0x9b, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x97,
+ 0x00, 0x00, 0x55, 0x9b, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0d, 0x1c, 0x04, 0x30, 0x00, 0x24, 0xfe, 0xf7,
+ 0xd6, 0xfa, 0x01, 0x20, 0x6c, 0x60, 0xb0, 0xbd,
+ 0x00, 0x00, 0xf0, 0xb5, 0x07, 0x7a, 0x43, 0x68,
+ 0x04, 0x1c, 0x0e, 0x48, 0x0e, 0x1c, 0x00, 0x68,
+ 0x01, 0x25, 0x01, 0x1c, 0x9b, 0xb0, 0x06, 0xe0,
+ 0x4a, 0x68, 0x9a, 0x42, 0x02, 0xd1, 0x8f, 0x76,
+ 0x00, 0x25, 0x02, 0xe0, 0x09, 0x68, 0x3c, 0x00,
+ 0xa4, 0x97, 0x00, 0x00, 0x00, 0x29, 0xf6, 0xd1,
+ 0x00, 0x2d, 0x05, 0xd1, 0x21, 0x7a, 0x01, 0x29,
+ 0x02, 0xd1, 0x01, 0xa9, 0xf8, 0xf7, 0xa8, 0xf8,
+ 0x60, 0x68, 0x04, 0x36, 0x21, 0xc6, 0x1b, 0xb0,
+ 0x01, 0x20, 0xf0, 0xbd, 0xa4, 0x6e, 0x01, 0x00,
+ 0x10, 0xb5, 0x0c, 0x1c, 0x08, 0xf0, 0xae, 0xfc,
+ 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0x10, 0xb5, 0x0c, 0x1c, 0x07, 0xf0, 0x84, 0xfa,
+ 0x3c, 0x00, 0xe0, 0x97, 0x00, 0x00, 0x04, 0xf0,
+ 0x54, 0xff, 0x00, 0x20, 0x60, 0x60, 0x01, 0x20,
+ 0x10, 0xbd, 0x00, 0x20, 0xc0, 0x43, 0x48, 0x60,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5,
+ 0x0c, 0x1c, 0x00, 0x79, 0xfa, 0xf7, 0x07, 0xf8,
+ 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x00, 0xe0,
+ 0x02, 0x20, 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0x1c, 0xb5, 0x06, 0x4c, 0x20, 0x68,
+ 0x00, 0x28, 0x3c, 0x00, 0x1c, 0x98, 0x00, 0x00,
+ 0x07, 0xd0, 0x09, 0xf0, 0xc5, 0xfa, 0x01, 0x90,
+ 0x20, 0x68, 0x41, 0x68, 0x68, 0x46, 0xf6, 0xf7,
+ 0xd6, 0xfd, 0x1c, 0xbd, 0xac, 0x79, 0x01, 0x00,
+ 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0xac, 0x79, 0x01, 0x00, 0x0e, 0xb5, 0x06, 0x4b,
+ 0x1b, 0x68, 0x00, 0x2b, 0x06, 0xd0, 0x02, 0x90,
+ 0x00, 0x91, 0x01, 0x92, 0x68, 0x46, 0xd9, 0x68,
+ 0xf6, 0xf7, 0xc1, 0xfd, 0x3c, 0x00, 0x58, 0x98,
+ 0x00, 0x00, 0x0e, 0xbd, 0x00, 0x00, 0xac, 0x79,
+ 0x01, 0x00, 0x1c, 0xb5, 0x04, 0x1c, 0x07, 0xf0,
+ 0x4c, 0xfa, 0x06, 0x48, 0x41, 0x68, 0x01, 0x31,
+ 0x41, 0x60, 0x00, 0x94, 0x00, 0x21, 0x01, 0x91,
+ 0x00, 0x68, 0x01, 0x68, 0x68, 0x46, 0xf6, 0xf7,
+ 0xad, 0xfd, 0x1c, 0xbd, 0x00, 0x00, 0xac, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, 0xa3, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x1c, 0x3c, 0x00,
+ 0x94, 0x98, 0x00, 0x00, 0x80, 0x21, 0x03, 0x20,
+ 0x00, 0xf0, 0x5c, 0xf8, 0x01, 0x1c, 0x03, 0x48,
+ 0x00, 0x22, 0x43, 0x69, 0xf6, 0xf7, 0x9b, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0c, 0x1c, 0x13, 0x49, 0x05, 0x1c,
+ 0x08, 0x68, 0x16, 0x1c, 0x01, 0x30, 0x08, 0x60,
+ 0x00, 0x20, 0x20, 0x61, 0x22, 0x1c, 0x10, 0x32,
+ 0x28, 0x1d, 0x00, 0x21, 0x07, 0x1c, 0x00, 0x92,
+ 0x3c, 0x00, 0xd0, 0x98, 0x00, 0x00, 0x03, 0xf0,
+ 0xde, 0xfe, 0x20, 0x71, 0x20, 0x69, 0x00, 0x28,
+ 0x10, 0xd0, 0x01, 0x04, 0x09, 0x0c, 0x00, 0x20,
+ 0xf7, 0xf7, 0x79, 0xfe, 0x30, 0x60, 0x29, 0x1d,
+ 0x03, 0xc9, 0xa0, 0x60, 0xe1, 0x60, 0x30, 0x68,
+ 0x01, 0x68, 0x00, 0x9a, 0x38, 0x1c, 0x03, 0xf0,
+ 0xca, 0xfe, 0x20, 0x71, 0x01, 0x20, 0xf8, 0xbd,
+ 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x1c, 0x3c, 0x00, 0x0c, 0x99, 0x00, 0x00,
+ 0x08, 0x21, 0x04, 0x20, 0x09, 0xf0, 0x4e, 0xff,
+ 0x03, 0x20, 0x80, 0xbd, 0x10, 0xb5, 0x07, 0x4a,
+ 0x0c, 0x1c, 0x51, 0x68, 0x01, 0x31, 0x51, 0x60,
+ 0x01, 0x1c, 0x10, 0x31, 0xc2, 0x68, 0x04, 0x30,
+ 0x03, 0xf0, 0xf0, 0xfe, 0x20, 0x71, 0x00, 0x20,
+ 0x10, 0xbd, 0x00, 0x00, 0x10, 0x75, 0x01, 0x00,
+ 0x04, 0x49, 0x80, 0xb5, 0x81, 0x61, 0x08, 0x21,
+ 0x02, 0x1c, 0x03, 0x20, 0x3c, 0x00, 0x48, 0x99,
+ 0x00, 0x00, 0x09, 0xf0, 0x32, 0xff, 0x03, 0x20,
+ 0x80, 0xbd, 0x95, 0xd8, 0x00, 0x00, 0xf7, 0xb5,
+ 0x07, 0x1c, 0x16, 0x1c, 0x06, 0x21, 0x00, 0x20,
+ 0x82, 0xb0, 0xf7, 0xf7, 0x3a, 0xfe, 0x05, 0x1c,
+ 0x20, 0x48, 0x00, 0x78, 0x06, 0x28, 0x00, 0xd9,
+ 0x28, 0x81, 0x2c, 0x68, 0x00, 0x20, 0xa7, 0x70,
+ 0x03, 0x99, 0xe1, 0x70, 0x31, 0x1c, 0x03, 0xe0,
+ 0x0a, 0x89, 0x10, 0x18, 0x0f, 0x1c, 0x3c, 0x00,
+ 0x84, 0x99, 0x00, 0x00, 0xc9, 0x68, 0x00, 0x29,
+ 0xf9, 0xd1, 0x6b, 0x46, 0x01, 0xaa, 0x21, 0x1d,
+ 0x00, 0xf0, 0x34, 0xf8, 0x00, 0xab, 0x18, 0x78,
+ 0x60, 0x71, 0x18, 0x78, 0x00, 0x28, 0x17, 0xd0,
+ 0x11, 0x48, 0x40, 0x68, 0x00, 0x28, 0x08, 0xd0,
+ 0x19, 0x78, 0x00, 0x20, 0xf7, 0xf7, 0x14, 0xfe,
+ 0x01, 0x1c, 0x38, 0x1c, 0xf7, 0xf7, 0x30, 0xfd,
+ 0x0a, 0xe0, 0x38, 0x68, 0x00, 0x28, 0x02, 0xd1,
+ 0x3c, 0x00, 0xc0, 0x99, 0x00, 0x00, 0x3f, 0x60,
+ 0x01, 0x20, 0xb8, 0x61, 0x00, 0xab, 0x19, 0x78,
+ 0x38, 0x89, 0x40, 0x18, 0x38, 0x81, 0x00, 0xab,
+ 0x98, 0x88, 0x31, 0x1c, 0x02, 0x38, 0x20, 0x80,
+ 0x28, 0x1c, 0xf7, 0xf7, 0x1c, 0xfd, 0x28, 0x1c,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc8, 0x5c,
+ 0x01, 0x00, 0x01, 0x79, 0x42, 0x79, 0x00, 0x88,
+ 0x89, 0x18, 0x02, 0x39, 0x40, 0x1a, 0x70, 0x47,
+ 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x99, 0x00, 0x00,
+ 0x70, 0xb5, 0x08, 0x4d, 0x2c, 0x78, 0xad, 0x78,
+ 0x20, 0x18, 0x06, 0x1c, 0x00, 0x2d, 0x03, 0xd0,
+ 0x70, 0x19, 0x01, 0x38, 0x01, 0x3d, 0xa8, 0x43,
+ 0x10, 0x80, 0x80, 0x1b, 0x18, 0x70, 0x0c, 0x70,
+ 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x5c, 0x01, 0x00,
+ 0xb0, 0xb5, 0x04, 0x68, 0x0c, 0x4a, 0x21, 0x88,
+ 0x52, 0x78, 0x02, 0x31, 0x91, 0x42, 0x11, 0xd2,
+ 0x55, 0x1a, 0xf7, 0xf7, 0x3c, 0x00, 0x38, 0x9a,
+ 0x00, 0x00, 0xc9, 0xfd, 0x01, 0x68, 0x00, 0x29,
+ 0x02, 0xd1, 0x00, 0x60, 0x01, 0x21, 0x81, 0x61,
+ 0x01, 0x89, 0x49, 0x19, 0x01, 0x81, 0x20, 0x88,
+ 0x40, 0x19, 0x20, 0x80, 0x60, 0x79, 0x40, 0x19,
+ 0x60, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0xc8, 0x5c,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x06, 0x21,
+ 0xf1, 0x20, 0x09, 0xf0, 0xa2, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x1c, 0x02, 0x48, 0x3c, 0x00,
+ 0x74, 0x9a, 0x00, 0x00, 0x03, 0x70, 0x41, 0x70,
+ 0x82, 0x70, 0x70, 0x47, 0xc8, 0x5c, 0x01, 0x00,
+ 0xb0, 0xb5, 0x08, 0x1c, 0x09, 0x68, 0x15, 0x1c,
+ 0x8c, 0x78, 0xf7, 0xf7, 0x85, 0xfd, 0x04, 0x49,
+ 0xa0, 0x00, 0x09, 0x58, 0x00, 0x29, 0x02, 0xd0,
+ 0x28, 0x1c, 0xf6, 0xf7, 0x9e, 0xfc, 0xb0, 0xbd,
+ 0x84, 0x6d, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0xc0, 0x7a, 0xa1, 0x7a, 0xc6, 0x07, 0xf6, 0x0f,
+ 0x3c, 0x00, 0xb0, 0x9a, 0x00, 0x00, 0x32, 0x1c,
+ 0x20, 0x1d, 0x01, 0xf0, 0x3c, 0xf8, 0x60, 0x69,
+ 0x25, 0x4f, 0xc1, 0x07, 0x37, 0xd5, 0xb8, 0x69,
+ 0x00, 0x28, 0x01, 0xd0, 0xf6, 0xf7, 0x87, 0xfc,
+ 0x20, 0x68, 0x05, 0x68, 0x28, 0x88, 0x80, 0x07,
+ 0x34, 0xd1, 0x01, 0xaa, 0x02, 0xa9, 0x28, 0x1c,
+ 0x01, 0xf0, 0x0b, 0xfc, 0x28, 0x1c, 0x01, 0xf0,
+ 0x12, 0xfc, 0x00, 0x78, 0xc0, 0x07, 0x0a, 0xd4,
+ 0x60, 0x69, 0x3c, 0x00, 0xec, 0x9a, 0x00, 0x00,
+ 0x80, 0x07, 0x26, 0xd4, 0x33, 0x1c, 0x29, 0x1c,
+ 0xa2, 0x7a, 0x20, 0x69, 0x7d, 0x69, 0xf6, 0xf7,
+ 0x72, 0xfc, 0x1e, 0xe0, 0x00, 0xab, 0x18, 0x7a,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x28, 0x06, 0xd0,
+ 0x02, 0x28, 0x16, 0xd1, 0x28, 0x1c, 0x79, 0x6a,
+ 0xf6, 0xf7, 0x61, 0xfc, 0x11, 0xe0, 0x00, 0xab,
+ 0x18, 0x79, 0x0e, 0x28, 0x01, 0xd0, 0x0f, 0x28,
+ 0x0b, 0xd1, 0x28, 0x1c, 0x3c, 0x00, 0x28, 0x9b,
+ 0x00, 0x00, 0x39, 0x6a, 0xf6, 0xf7, 0x56, 0xfc,
+ 0x06, 0xe0, 0x00, 0x07, 0x80, 0x0f, 0x03, 0xd1,
+ 0x20, 0x69, 0xf9, 0x69, 0xf6, 0xf7, 0x4e, 0xfc,
+ 0x78, 0x6b, 0x21, 0x21, 0x01, 0x30, 0x78, 0x63,
+ 0x22, 0x1c, 0x80, 0x20, 0x09, 0xf0, 0x31, 0xfe,
+ 0xfe, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x0b, 0x49,
+ 0x18, 0xb5, 0x08, 0x78, 0xc0, 0x07, 0x11, 0xd5,
+ 0x0a, 0x4a, 0x10, 0x1c, 0x20, 0x30, 0x3c, 0x00,
+ 0x64, 0x9b, 0x00, 0x00, 0x84, 0x79, 0x00, 0xab,
+ 0x1c, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x08, 0x78,
+ 0x40, 0x23, 0x18, 0x43, 0x08, 0x70, 0x05, 0x48,
+ 0x00, 0x78, 0x08, 0x70, 0x00, 0xab, 0x18, 0x88,
+ 0xd0, 0x84, 0x18, 0xbd, 0x04, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0xe0, 0x60, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x05, 0x49, 0x10, 0xb5,
+ 0x88, 0x79, 0x05, 0x4b, 0x1a, 0x7c, 0x05, 0x4c,
+ 0x3c, 0x00, 0xa0, 0x9b, 0x00, 0x00, 0x24, 0x68,
+ 0x62, 0x40, 0x1a, 0x74, 0x88, 0x71, 0x10, 0xbd,
+ 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x58, 0x5b, 0x01, 0x00, 0x04, 0x49,
+ 0x0a, 0x68, 0x04, 0x48, 0x00, 0x68, 0x02, 0x40,
+ 0x01, 0xd0, 0x88, 0x61, 0x70, 0x47, 0x48, 0x61,
+ 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, 0x58, 0x5b,
+ 0x01, 0x00, 0x02, 0x1c, 0x01, 0x20, 0x00, 0x06,
+ 0x08, 0x43, 0x3c, 0x00, 0xdc, 0x9b, 0x00, 0x00,
+ 0x80, 0xb5, 0x2a, 0x21, 0x09, 0xf0, 0xe6, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x00, 0x29, 0x03, 0xd0, 0x81, 0x29, 0x07, 0xd1,
+ 0x81, 0x20, 0x00, 0xe0, 0x80, 0x20, 0x22, 0x1c,
+ 0x2c, 0x21, 0x09, 0xf0, 0xd7, 0xfd, 0x10, 0xbd,
+ 0x02, 0x21, 0x2c, 0x20, 0xf7, 0xf7, 0x4c, 0xfb,
+ 0x20, 0x1c, 0xf7, 0xf7, 0xc3, 0xfc, 0x10, 0xbd,
+ 0x80, 0xb5, 0xb4, 0xb0, 0x3c, 0x00, 0x18, 0x9c,
+ 0x00, 0x00, 0x01, 0x28, 0x06, 0xd0, 0x82, 0x28,
+ 0x1c, 0xd1, 0x1a, 0xa8, 0x07, 0xf0, 0x35, 0xfc,
+ 0x34, 0xb0, 0x80, 0xbd, 0x81, 0x29, 0x13, 0xd1,
+ 0x0d, 0x48, 0x0c, 0x4a, 0x81, 0x69, 0x00, 0x68,
+ 0x50, 0x32, 0x81, 0x42, 0x02, 0xd0, 0xd1, 0x6a,
+ 0x01, 0x29, 0x02, 0xd0, 0x11, 0x78, 0x02, 0x29,
+ 0x02, 0xd1, 0x07, 0xf0, 0x0a, 0xf9, 0xeb, 0xe7,
+ 0x69, 0x46, 0xf7, 0xf7, 0x5a, 0xfe, 0x3c, 0x00,
+ 0x54, 0x9c, 0x00, 0x00, 0xe7, 0xe7, 0x01, 0x21,
+ 0x00, 0xe0, 0x02, 0x21, 0x18, 0x20, 0xf7, 0xf7,
+ 0x21, 0xfb, 0xe0, 0xe7, 0xa4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x68, 0x17, 0x4d,
+ 0x9a, 0xb0, 0x68, 0x63, 0x08, 0xf0, 0x3e, 0xfa,
+ 0x20, 0x79, 0x14, 0x49, 0x13, 0x4a, 0x50, 0x39,
+ 0x2c, 0x3a, 0x02, 0x28, 0x0a, 0xd1, 0x90, 0x68,
+ 0x80, 0x02, 0xa8, 0x61, 0xc8, 0x68, 0xe8, 0x61,
+ 0x3c, 0x00, 0x90, 0x9c, 0x00, 0x00, 0x02, 0x20,
+ 0x28, 0x72, 0x07, 0xf0, 0xe4, 0xf8, 0x1a, 0xb0,
+ 0xb0, 0xbd, 0x03, 0x1c, 0x00, 0x20, 0x00, 0x2b,
+ 0x0b, 0xd1, 0x52, 0x68, 0x92, 0x02, 0xaa, 0x61,
+ 0x0a, 0x1c, 0x89, 0x68, 0xe9, 0x61, 0x28, 0x72,
+ 0x10, 0x68, 0x69, 0x46, 0xf7, 0xf7, 0x27, 0xfe,
+ 0xed, 0xe7, 0xa8, 0x61, 0x01, 0x20, 0x28, 0x72,
+ 0x28, 0x70, 0x00, 0x20, 0x06, 0xf0, 0x7d, 0xfa,
+ 0xe5, 0xe7, 0x3c, 0x00, 0xcc, 0x9c, 0x00, 0x00,
+ 0xf4, 0x6e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x07, 0x20, 0xf7, 0xf7, 0xe1, 0xfa, 0x80, 0xbd,
+ 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x24,
+ 0x19, 0x4a, 0x00, 0x26, 0xd5, 0x68, 0x11, 0x68,
+ 0x04, 0x35, 0x08, 0x1c, 0x91, 0x60, 0x02, 0xe0,
+ 0x01, 0x1c, 0x40, 0x19, 0x08, 0x60, 0x53, 0x68,
+ 0x83, 0x42, 0xf9, 0xd8, 0x3c, 0x00, 0x08, 0x9d,
+ 0x00, 0x00, 0x01, 0x34, 0x10, 0x32, 0x03, 0x2c,
+ 0x0e, 0x60, 0xee, 0xd3, 0xf6, 0xf7, 0xf1, 0xff,
+ 0x10, 0x48, 0x10, 0x49, 0x12, 0x4c, 0x08, 0x60,
+ 0x10, 0x49, 0x00, 0x20, 0x01, 0x22, 0x19, 0x23,
+ 0x5b, 0x01, 0x0c, 0x25, 0x43, 0x43, 0x1b, 0x19,
+ 0x45, 0x43, 0x4a, 0x51, 0x1f, 0x1c, 0x6d, 0x18,
+ 0xab, 0x60, 0x6b, 0x60, 0x00, 0x25, 0x1e, 0x1c,
+ 0x14, 0x36, 0x9e, 0x60, 0x33, 0x1c, 0x3c, 0x00,
+ 0x44, 0x9d, 0x00, 0x00, 0x01, 0x35, 0x27, 0x2d,
+ 0xf8, 0xdb, 0x01, 0x30, 0x03, 0x28, 0x9f, 0x60,
+ 0xe8, 0xdb, 0xf8, 0xbd, 0x20, 0x57, 0x01, 0x00,
+ 0x14, 0xc8, 0x01, 0x00, 0xb4, 0xcf, 0x01, 0x00,
+ 0x18, 0xd9, 0x01, 0x00, 0xb8, 0xcf, 0x01, 0x00,
+ 0xb0, 0xb5, 0x07, 0x4c, 0x25, 0x1c, 0xc0, 0x35,
+ 0x28, 0x6b, 0x1e, 0x21, 0x00, 0xf0, 0xf2, 0xf9,
+ 0xa2, 0x6b, 0x20, 0x1c, 0xdc, 0x30, 0x29, 0x6b,
+ 0x3c, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0xf0,
+ 0xb6, 0xf9, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x00, 0x20, 0x10, 0x22, 0x10, 0xb5,
+ 0x0a, 0x49, 0x05, 0xe0, 0x0c, 0x23, 0x43, 0x43,
+ 0x5c, 0x18, 0x0c, 0x34, 0xcc, 0x50, 0x01, 0x30,
+ 0x0f, 0x28, 0xf7, 0xd3, 0x0c, 0x23, 0x58, 0x43,
+ 0x09, 0x50, 0x04, 0x48, 0x41, 0x60, 0x01, 0x60,
+ 0x02, 0x82, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60,
+ 0x10, 0xbd, 0x3c, 0x00, 0xbc, 0x9d, 0x00, 0x00,
+ 0x84, 0xe2, 0x01, 0x00, 0x44, 0xe3, 0x01, 0x00,
+ 0x10, 0xb5, 0x08, 0x4c, 0xa0, 0x6a, 0x00, 0x28,
+ 0x03, 0xd1, 0x07, 0x48, 0xf9, 0xf7, 0xe8, 0xfe,
+ 0xa0, 0x62, 0x04, 0x48, 0x44, 0x30, 0x00, 0x68,
+ 0x01, 0x21, 0xf9, 0xf7, 0x95, 0xfc, 0x60, 0x62,
+ 0x10, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00,
+ 0xcd, 0x26, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x1e, 0x1c, 0x3c, 0x00, 0xf8, 0x9d,
+ 0x00, 0x00, 0x81, 0xb0, 0x0a, 0x9f, 0x1c, 0x21,
+ 0xf6, 0xf7, 0x4d, 0xfb, 0x03, 0x98, 0xa0, 0x61,
+ 0x25, 0x60, 0x25, 0x61, 0x26, 0x81, 0xa6, 0x82,
+ 0xe7, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0x70, 0xb5,
+ 0x0d, 0x1c, 0xa4, 0x21, 0x04, 0x1c, 0x08, 0x30,
+ 0xf6, 0xf7, 0x3d, 0xfb, 0x20, 0x1c, 0x44, 0x30,
+ 0x06, 0x22, 0x29, 0x1c, 0xf6, 0xf7, 0x65, 0xfb,
+ 0x18, 0x48, 0x3c, 0x23, 0x41, 0x1c, 0x3c, 0x00,
+ 0x34, 0x9e, 0x00, 0x00, 0x61, 0x62, 0x41, 0x78,
+ 0x59, 0x43, 0x09, 0x18, 0x89, 0x7a, 0x06, 0x29,
+ 0x01, 0xd1, 0xa0, 0x62, 0x02, 0xe0, 0x21, 0x1c,
+ 0x4d, 0x31, 0xa1, 0x62, 0x41, 0x78, 0x3c, 0x23,
+ 0x59, 0x43, 0x08, 0x18, 0x04, 0x30, 0x0f, 0x49,
+ 0x20, 0x62, 0x0b, 0x88, 0x00, 0x2b, 0x15, 0xd0,
+ 0xac, 0x20, 0x00, 0x5d, 0x0b, 0x4a, 0x18, 0x32,
+ 0x00, 0x02, 0x80, 0x18, 0xb0, 0x30, 0xe0, 0x60,
+ 0x3c, 0x00, 0x70, 0x9e, 0x00, 0x00, 0x8d, 0x68,
+ 0x00, 0x20, 0x08, 0xe0, 0xe2, 0x68, 0xc1, 0x00,
+ 0x54, 0x50, 0xe6, 0x68, 0x82, 0x00, 0x52, 0x19,
+ 0x71, 0x18, 0x4a, 0x60, 0x01, 0x30, 0x98, 0x42,
+ 0xf4, 0xdb, 0x70, 0xbd, 0x00, 0x00, 0x68, 0x61,
+ 0x01, 0x00, 0x58, 0x75, 0x01, 0x00, 0x1f, 0xb5,
+ 0x04, 0x1c, 0x60, 0x34, 0x61, 0x7a, 0x03, 0x1c,
+ 0x80, 0x6a, 0x08, 0x4a, 0x02, 0x91, 0x01, 0x90,
+ 0x03, 0x92, 0x3c, 0x00, 0xac, 0x9e, 0x00, 0x00,
+ 0xe2, 0x79, 0x18, 0x1c, 0x20, 0x30, 0x00, 0x92,
+ 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a,
+ 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0,
+ 0x7f, 0xfe, 0x1f, 0xbd, 0x39, 0x4e, 0x00, 0x00,
+ 0xb0, 0xb5, 0x0b, 0x1c, 0x01, 0x88, 0x69, 0x20,
+ 0xc0, 0x5c, 0x86, 0xb0, 0x0e, 0x4a, 0x04, 0x91,
+ 0x03, 0x90, 0x05, 0x92, 0x0d, 0x4d, 0x59, 0x6a,
+ 0x9a, 0x6a, 0x2d, 0x68, 0x3c, 0x00, 0xe8, 0x9e,
+ 0x00, 0x00, 0x01, 0x24, 0x00, 0x2d, 0x00, 0xd0,
+ 0x04, 0x1c, 0x0a, 0x48, 0x00, 0x5d, 0x01, 0x91,
+ 0x02, 0x92, 0x00, 0x90, 0x18, 0x1c, 0x20, 0x30,
+ 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a,
+ 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0,
+ 0xa4, 0xfe, 0x06, 0xb0, 0xb0, 0xbd, 0x51, 0x4f,
+ 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x0a, 0x61,
+ 0x01, 0x00, 0x01, 0x89, 0x8a, 0x1c, 0x3c, 0x00,
+ 0x24, 0x9f, 0x00, 0x00, 0x02, 0x81, 0x02, 0x68,
+ 0x02, 0x3a, 0x02, 0x60, 0x08, 0x0a, 0x09, 0x02,
+ 0x08, 0x43, 0x10, 0x80, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x08, 0x78, 0x0e, 0x1c,
+ 0xff, 0x28, 0x14, 0xd0, 0x71, 0x78, 0x02, 0x31,
+ 0x00, 0x20, 0xf7, 0xf7, 0x45, 0xfb, 0x04, 0x1c,
+ 0x02, 0x89, 0x00, 0x68, 0x31, 0x1c, 0xf6, 0xf7,
+ 0xcf, 0xfa, 0x00, 0x2d, 0x06, 0xd0, 0x28, 0x1c,
+ 0x3c, 0x00, 0x60, 0x9f, 0x00, 0x00, 0xf7, 0xf7,
+ 0x34, 0xfb, 0x21, 0x1c, 0xf7, 0xf7, 0x57, 0xfa,
+ 0x00, 0xe0, 0x25, 0x1c, 0x28, 0x1c, 0x70, 0xbd,
+ 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, 0x1e, 0x1c,
+ 0x04, 0x1c, 0x98, 0x1c, 0x01, 0x04, 0x09, 0x0c,
+ 0x00, 0x20, 0x81, 0xb0, 0xf7, 0xf7, 0x27, 0xfb,
+ 0x05, 0x1c, 0x00, 0x68, 0x00, 0x2c, 0x38, 0x60,
+ 0x03, 0x99, 0x01, 0x70, 0x38, 0x68, 0x46, 0x70,
+ 0x06, 0xd0, 0x3c, 0x00, 0x9c, 0x9f, 0x00, 0x00,
+ 0x20, 0x1c, 0xf7, 0xf7, 0x15, 0xfb, 0x29, 0x1c,
+ 0xf7, 0xf7, 0x38, 0xfa, 0x00, 0xe0, 0x2c, 0x1c,
+ 0x20, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0x70, 0xb5, 0x10, 0x48, 0x04, 0x68, 0x04, 0x60,
+ 0x0f, 0x49, 0x20, 0x20, 0x08, 0x60, 0xa0, 0x05,
+ 0x0e, 0x4e, 0x02, 0xd5, 0x70, 0x6a, 0xf6, 0xf7,
+ 0x05, 0xfa, 0xe0, 0x01, 0x02, 0xd5, 0x30, 0x6e,
+ 0xf6, 0xf7, 0x00, 0xfa, 0x3c, 0x00, 0xd8, 0x9f,
+ 0x00, 0x00, 0x0a, 0x48, 0x04, 0x40, 0x00, 0x25,
+ 0x07, 0xe0, 0xe0, 0x07, 0x03, 0xd5, 0xa8, 0x00,
+ 0x30, 0x58, 0xf6, 0xf7, 0xf6, 0xf9, 0x01, 0x35,
+ 0x64, 0x08, 0x00, 0x2c, 0xf5, 0xd1, 0x70, 0xbd,
+ 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xff, 0xfd,
+ 0xff, 0xfe, 0x80, 0xb5, 0x07, 0x21, 0x80, 0x20,
+ 0xf7, 0xf7, 0x49, 0xf9, 0x80, 0xbd, 0x3c, 0x00,
+ 0x14, 0xa0, 0x00, 0x00, 0xf8, 0xb5, 0x14, 0x4b,
+ 0x82, 0x00, 0x9c, 0x58, 0xca, 0x06, 0x01, 0x27,
+ 0x39, 0x1c, 0xd2, 0x0e, 0x91, 0x40, 0x11, 0x4a,
+ 0x11, 0x60, 0x11, 0x4e, 0x40, 0x00, 0x85, 0x19,
+ 0x15, 0xe0, 0x60, 0x60, 0x20, 0x7b, 0xc1, 0x00,
+ 0x89, 0x19, 0x10, 0x31, 0x0a, 0x78, 0x0d, 0x23,
+ 0x9a, 0x43, 0x0a, 0x70, 0x39, 0x1c, 0x81, 0x40,
+ 0x31, 0x73, 0x07, 0x49, 0x00, 0x01, 0x08, 0x31,
+ 0x3c, 0x00, 0x50, 0xa0, 0x00, 0x00, 0x40, 0x18,
+ 0x08, 0x4a, 0x41, 0x68, 0x42, 0x60, 0x80, 0x68,
+ 0xf6, 0xf7, 0xbe, 0xf9, 0x28, 0x7b, 0x00, 0x28,
+ 0xe6, 0xd1, 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x73,
+ 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0x09, 0x7a, 0x00, 0x29, 0x00, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x04, 0x7a,
+ 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xa0, 0x00, 0x00,
+ 0x03, 0x49, 0x01, 0x20, 0x89, 0x7a, 0x00, 0x29,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x00, 0x24,
+ 0xfa, 0xf7, 0x76, 0xfc, 0x00, 0x28, 0x14, 0xd0,
+ 0x01, 0x24, 0x08, 0xf0, 0x7d, 0xfe, 0x0a, 0x4d,
+ 0x0a, 0x4b, 0x00, 0x21, 0x5a, 0x18, 0xa0, 0x32,
+ 0x12, 0x78, 0x10, 0x2a, 0x06, 0xd3, 0x8a, 0x00,
+ 0xd2, 0x18, 0x92, 0x6f, 0x3c, 0x00, 0xc8, 0xa0,
+ 0x00, 0x00, 0x82, 0x1a, 0xaa, 0x42, 0x00, 0xd2,
+ 0x00, 0x24, 0x01, 0x31, 0x03, 0x29, 0xf0, 0xd3,
+ 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x8b, 0x08,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x01, 0x48,
+ 0xc0, 0x68, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x16, 0x1c, 0xfd, 0xf7, 0x2e, 0xfe, 0x00, 0x20,
+ 0xe0, 0x60, 0x26, 0x61, 0xa5, 0x60, 0x3c, 0x00,
+ 0x04, 0xa1, 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00,
+ 0xf8, 0xb5, 0x17, 0x1c, 0x0e, 0x1c, 0x04, 0x1c,
+ 0x00, 0x28, 0x01, 0xd0, 0x00, 0x2e, 0x01, 0xd1,
+ 0xf7, 0xf7, 0xf2, 0xf8, 0xa0, 0x68, 0x07, 0xf0,
+ 0x49, 0xf9, 0x05, 0x1c, 0x01, 0xd1, 0xf7, 0xf7,
+ 0xeb, 0xf8, 0x29, 0x1c, 0x6e, 0x60, 0xaf, 0x60,
+ 0x20, 0x1c, 0xfd, 0xf7, 0xfd, 0xfd, 0xe0, 0x68,
+ 0x41, 0x1c, 0xe1, 0x60, 0x00, 0x28, 0x03, 0xd1,
+ 0x3c, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x05, 0x48,
+ 0x21, 0x69, 0x05, 0xf0, 0x2c, 0xf9, 0x20, 0x68,
+ 0xa8, 0x42, 0x02, 0xd1, 0x38, 0x1c, 0xf6, 0xf7,
+ 0x48, 0xf9, 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x60,
+ 0x01, 0x00, 0x00, 0x22, 0x01, 0x39, 0x10, 0xb5,
+ 0x05, 0xe0, 0x0c, 0x23, 0x53, 0x43, 0x1c, 0x18,
+ 0x0c, 0x34, 0xc4, 0x50, 0x01, 0x32, 0x8a, 0x42,
+ 0xf7, 0xd3, 0x00, 0x21, 0x0c, 0x23, 0x5a, 0x43,
+ 0x81, 0x50, 0x3c, 0x00, 0x7c, 0xa1, 0x00, 0x00,
+ 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x01, 0xd1, 0xf7, 0xf7, 0xbb, 0xf8, 0x20, 0x1c,
+ 0xfd, 0xf7, 0xda, 0xfd, 0x01, 0x1c, 0x85, 0x68,
+ 0xa0, 0x68, 0x07, 0xf0, 0x09, 0xf9, 0xe0, 0x68,
+ 0x01, 0x38, 0xe0, 0x60, 0x03, 0xd1, 0x06, 0x48,
+ 0x21, 0x69, 0x05, 0xf0, 0xe7, 0xf8, 0x21, 0x68,
+ 0x00, 0x29, 0x03, 0xd0, 0x88, 0x68, 0x49, 0x68,
+ 0xf6, 0xf7, 0x11, 0xf9, 0x3c, 0x00, 0xb8, 0xa1,
+ 0x00, 0x00, 0x28, 0x1c, 0xb0, 0xbd, 0xc4, 0x60,
+ 0x01, 0x00, 0x01, 0x21, 0x00, 0x28, 0x8c, 0xb5,
+ 0x00, 0xd1, 0x00, 0x21, 0x0e, 0x20, 0x09, 0xf0,
+ 0x32, 0xfa, 0x83, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0x00, 0x20, 0x04, 0xf0, 0x0c, 0xf8, 0x01, 0x90,
+ 0x68, 0x46, 0x03, 0xf0, 0x7a, 0xf9, 0x8c, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x08, 0xf0, 0xdf, 0xfd,
+ 0x06, 0x49, 0x0a, 0x89, 0x06, 0x49, 0x3c, 0x00,
+ 0xf4, 0xa1, 0x00, 0x00, 0x09, 0x6e, 0x41, 0x1a,
+ 0x0b, 0x0c, 0x59, 0x18, 0x89, 0x1a, 0x09, 0x04,
+ 0x09, 0x0c, 0x40, 0x1a, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x90, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x70, 0xb5, 0x04, 0x1c, 0x88, 0x7e, 0x0d, 0x1c,
+ 0x20, 0x28, 0x03, 0xd9, 0x03, 0x21, 0x18, 0x20,
+ 0xf7, 0xf7, 0x40, 0xf8, 0x00, 0x26, 0x26, 0x76,
+ 0xa8, 0x7e, 0x29, 0x1c, 0x1b, 0x31, 0x60, 0x76,
+ 0x3c, 0x00, 0x30, 0xa2, 0x00, 0x00, 0x20, 0x1c,
+ 0x1d, 0x30, 0xaa, 0x7e, 0xf6, 0xf7, 0x5f, 0xf9,
+ 0x68, 0x68, 0x29, 0x1c, 0x60, 0x60, 0xa8, 0x68,
+ 0x13, 0x31, 0xa0, 0x60, 0xa8, 0x7b, 0x06, 0x22,
+ 0x20, 0x73, 0xe8, 0x7b, 0x60, 0x73, 0x28, 0x7c,
+ 0xa0, 0x73, 0x68, 0x7c, 0xe0, 0x73, 0xa8, 0x89,
+ 0x20, 0x82, 0xa8, 0x7c, 0xe0, 0x76, 0x26, 0x77,
+ 0x20, 0x1c, 0x12, 0x30, 0xa6, 0x76, 0xf6, 0xf7,
+ 0x46, 0xf9, 0x3c, 0x00, 0x6c, 0xa2, 0x00, 0x00,
+ 0x60, 0x68, 0x43, 0x1c, 0x1d, 0xd0, 0x11, 0x4d,
+ 0x6d, 0x61, 0x28, 0x68, 0x00, 0x28, 0x1a, 0xd0,
+ 0x22, 0x7b, 0x01, 0x1c, 0x0b, 0x7b, 0x9a, 0x42,
+ 0x01, 0xd3, 0x20, 0x60, 0x14, 0xe0, 0x0b, 0x1c,
+ 0x09, 0x68, 0x00, 0x29, 0x0b, 0xd0, 0x0e, 0x7b,
+ 0xb2, 0x42, 0x08, 0xd2, 0x0b, 0x68, 0x00, 0x2b,
+ 0xf0, 0xd0, 0x1e, 0x7b, 0xb2, 0x42, 0xed, 0xd3,
+ 0x23, 0x60, 0x0c, 0x60, 0x3c, 0x00, 0xa8, 0xa2,
+ 0x00, 0x00, 0x01, 0xe0, 0x21, 0x60, 0x1c, 0x60,
+ 0x00, 0x20, 0x70, 0xbd, 0x26, 0x60, 0x2c, 0x60,
+ 0xfa, 0xe7, 0xa4, 0x6e, 0x01, 0x00, 0x13, 0x4a,
+ 0xb0, 0xb5, 0x51, 0x68, 0x01, 0x24, 0x00, 0x29,
+ 0x1e, 0xd0, 0x13, 0x1d, 0xd1, 0x61, 0x13, 0x62,
+ 0x43, 0x68, 0x04, 0xe0, 0x10, 0x62, 0x00, 0x68,
+ 0xd0, 0x61, 0x00, 0x28, 0x14, 0xd0, 0xd0, 0x69,
+ 0x45, 0x68, 0x9d, 0x42, 0xf6, 0xd1, 0x3c, 0x00,
+ 0xe4, 0xa2, 0x00, 0x00, 0x10, 0x6a, 0x81, 0x42,
+ 0x04, 0xd1, 0x51, 0x60, 0xd0, 0x69, 0x00, 0x68,
+ 0x08, 0x60, 0x02, 0xe0, 0xd1, 0x69, 0x09, 0x68,
+ 0x01, 0x60, 0xd0, 0x69, 0xfc, 0xf7, 0xce, 0xff,
+ 0x00, 0x28, 0x00, 0xd0, 0x00, 0x24, 0x20, 0x1c,
+ 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x17, 0x4d, 0x01, 0x24, 0x29, 0x68,
+ 0x00, 0x29, 0x27, 0xd0, 0x6d, 0x61, 0x29, 0x61,
+ 0x3c, 0x00, 0x20, 0xa3, 0x00, 0x00, 0x43, 0x68,
+ 0x04, 0xe0, 0x68, 0x61, 0x00, 0x68, 0x28, 0x61,
+ 0x00, 0x28, 0x1d, 0xd0, 0x28, 0x69, 0x42, 0x68,
+ 0x9a, 0x42, 0xf6, 0xd1, 0xaa, 0x69, 0x2b, 0x69,
+ 0x9a, 0x42, 0x00, 0xd1, 0xa9, 0x61, 0x6a, 0x69,
+ 0x91, 0x42, 0x03, 0xd1, 0x29, 0x60, 0x00, 0x68,
+ 0x08, 0x60, 0x06, 0xe0, 0x00, 0x68, 0x10, 0x60,
+ 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x07, 0xf0,
+ 0xcc, 0xfe, 0x3c, 0x00, 0x5c, 0xa3, 0x00, 0x00,
+ 0x28, 0x69, 0xfc, 0xf7, 0x9d, 0xff, 0x00, 0x28,
+ 0x02, 0xd0, 0x00, 0x24, 0x00, 0xe0, 0x01, 0x24,
+ 0x20, 0x1c, 0xb0, 0xbd, 0xa4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x44, 0x68,
+ 0x07, 0xe0, 0x21, 0x1c, 0x44, 0x31, 0x28, 0x1c,
+ 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0x28, 0x02, 0xd1,
+ 0x64, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x20, 0x1c,
+ 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa3,
+ 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x70, 0xb5,
+ 0x0d, 0x1c, 0x14, 0x1c, 0x00, 0x28, 0x0b, 0x4e,
+ 0x08, 0xd0, 0x70, 0x6e, 0x06, 0x23, 0x58, 0x43,
+ 0x02, 0x04, 0x12, 0x0c, 0x31, 0x1c, 0x28, 0x1c,
+ 0x22, 0x80, 0x07, 0xe0, 0x21, 0x88, 0x06, 0x20,
+ 0xf6, 0xf7, 0xa7, 0xf9, 0x70, 0x66, 0x22, 0x88,
+ 0x29, 0x1c, 0x30, 0x1c, 0xf6, 0xf7, 0x95, 0xf8,
+ 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0xd4, 0xa3, 0x00, 0x00, 0x10, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x03, 0x28, 0x03, 0xd8, 0x04, 0x4a,
+ 0xc0, 0x00, 0x11, 0x50, 0x80, 0xbd, 0x01, 0x21,
+ 0x26, 0x20, 0xf6, 0xf7, 0x5b, 0xff, 0x80, 0xbd,
+ 0x7c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c,
+ 0xc0, 0x68, 0x01, 0x89, 0x39, 0x29, 0x39, 0xd3,
+ 0x04, 0x68, 0xa0, 0x79, 0x88, 0x28, 0x35, 0xd1,
+ 0xe0, 0x79, 0x8e, 0x28, 0x32, 0xd1, 0x20, 0x7a,
+ 0x3c, 0x00, 0x10, 0xa4, 0x00, 0x00, 0x01, 0x28,
+ 0x2f, 0xd1, 0x60, 0x7a, 0x03, 0x28, 0x2c, 0xd1,
+ 0x20, 0x7b, 0x02, 0x28, 0x01, 0xd0, 0xfe, 0x28,
+ 0x27, 0xd1, 0x60, 0x7b, 0x1d, 0x21, 0x08, 0x40,
+ 0x01, 0x28, 0x22, 0xd1, 0xa0, 0x7b, 0xc8, 0x21,
+ 0x08, 0x40, 0x08, 0x28, 0x1d, 0xd1, 0xa8, 0x1d,
+ 0xfb, 0xf7, 0xe1, 0xf9, 0x00, 0x28, 0x18, 0xd0,
+ 0x19, 0x20, 0x21, 0x5c, 0x00, 0x29, 0x14, 0xd1,
+ 0x01, 0x30, 0x3c, 0x00, 0x4c, 0xa4, 0x00, 0x00,
+ 0x39, 0x28, 0xf9, 0xdb, 0x68, 0x8b, 0x04, 0x21,
+ 0x08, 0x43, 0x68, 0x83, 0x03, 0xf0, 0xd6, 0xfe,
+ 0x00, 0x28, 0x09, 0xd1, 0x00, 0x23, 0x00, 0x22,
+ 0x26, 0x20, 0x04, 0x49, 0x09, 0xf0, 0x92, 0xf9,
+ 0x03, 0x48, 0x00, 0x68, 0x01, 0xf0, 0x84, 0xf9,
+ 0xb0, 0xbd, 0x00, 0x00, 0x50, 0xc3, 0x00, 0x00,
+ 0x0c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c,
+ 0xa3, 0x68, 0x01, 0x33, 0x3c, 0x00, 0x88, 0xa4,
+ 0x00, 0x00, 0xa3, 0x60, 0x0c, 0x1c, 0x09, 0xd0,
+ 0x25, 0x68, 0x00, 0x2d, 0x03, 0xd0, 0x23, 0x7a,
+ 0x61, 0x68, 0xf5, 0xf7, 0xa3, 0xff, 0x20, 0x1c,
+ 0xf7, 0xf7, 0xa9, 0xf9, 0xb0, 0xbd, 0x94, 0x79,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68,
+ 0x01, 0x89, 0x05, 0x68, 0x08, 0x29, 0x53, 0xd3,
+ 0x06, 0x22, 0x28, 0x1c, 0x55, 0x49, 0xf5, 0xf7,
+ 0x9e, 0xff, 0x00, 0x28, 0x37, 0xd1, 0x3c, 0x00,
+ 0xc4, 0xa4, 0x00, 0x00, 0xe9, 0x88, 0x52, 0x4e,
+ 0x04, 0x3e, 0x81, 0x29, 0x24, 0xd1, 0xe5, 0x68,
+ 0x29, 0x68, 0x08, 0x7a, 0x4a, 0x7a, 0x00, 0x02,
+ 0x80, 0x18, 0x00, 0x04, 0x00, 0x0c, 0x42, 0x0b,
+ 0x00, 0x05, 0x00, 0x0d, 0xe2, 0x75, 0x20, 0x83,
+ 0x4b, 0x89, 0x00, 0x20, 0x42, 0x00, 0xb2, 0x5a,
+ 0x9a, 0x42, 0x06, 0xd1, 0x28, 0x89, 0x0c, 0x38,
+ 0x02, 0x0a, 0x00, 0x02, 0x10, 0x43, 0x48, 0x81,
+ 0x3c, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x02, 0xe0,
+ 0x01, 0x30, 0x02, 0x28, 0xf1, 0xd3, 0xe0, 0x68,
+ 0x01, 0x89, 0x0a, 0x39, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x0a, 0x31, 0x1c, 0xe0, 0x00, 0x22,
+ 0x00, 0x20, 0x43, 0x00, 0xf3, 0x5a, 0x8b, 0x42,
+ 0x01, 0xd1, 0x01, 0x22, 0x02, 0xe0, 0x01, 0x30,
+ 0x02, 0x28, 0xf6, 0xd3, 0x00, 0x2a, 0x11, 0xd1,
+ 0x07, 0xe0, 0x36, 0x49, 0x06, 0x22, 0x06, 0x31,
+ 0x28, 0x1c, 0x3c, 0x00, 0x3c, 0xa5, 0x00, 0x00,
+ 0xf5, 0xf7, 0x5e, 0xff, 0x00, 0x28, 0x08, 0xd1,
+ 0xe0, 0x68, 0x01, 0x89, 0x06, 0x39, 0x01, 0x81,
+ 0xe0, 0x68, 0x01, 0x68, 0x06, 0x31, 0x01, 0x60,
+ 0x10, 0xe0, 0xe0, 0x68, 0xff, 0xf7, 0xe2, 0xfc,
+ 0x0c, 0xe0, 0x02, 0x31, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x02, 0x39, 0x01, 0x60, 0xe0, 0x68,
+ 0x00, 0x89, 0x02, 0x38, 0x02, 0x0a, 0x00, 0x02,
+ 0x10, 0x43, 0x08, 0x80, 0x3c, 0x00, 0x78, 0xa5,
+ 0x00, 0x00, 0xe0, 0x68, 0x03, 0x25, 0x02, 0x89,
+ 0x01, 0x68, 0x24, 0x4e, 0x02, 0x2a, 0x10, 0xd9,
+ 0x09, 0x88, 0x08, 0x29, 0x05, 0xd0, 0xc1, 0x23,
+ 0xdb, 0x00, 0x99, 0x42, 0x03, 0xd1, 0x01, 0x25,
+ 0x02, 0xe0, 0x00, 0x25, 0x00, 0xe0, 0x02, 0x25,
+ 0xe9, 0x00, 0x71, 0x58, 0x00, 0x29, 0x00, 0xd1,
+ 0x02, 0x25, 0xf7, 0xf7, 0x04, 0xf8, 0xe9, 0x00,
+ 0x89, 0x19, 0x89, 0x88, 0x88, 0x42, 0x3c, 0x00,
+ 0xb4, 0xa5, 0x00, 0x00, 0x00, 0xd9, 0x03, 0x25,
+ 0xa1, 0x1d, 0x20, 0x1c, 0xfd, 0xf7, 0x34, 0xfc,
+ 0x00, 0x28, 0x00, 0xd1, 0x03, 0x25, 0x02, 0x2d,
+ 0x05, 0xd0, 0x03, 0x2d, 0x07, 0xd1, 0xe0, 0x68,
+ 0xf6, 0xf7, 0xe2, 0xff, 0x70, 0xbd, 0x20, 0x1c,
+ 0xfd, 0xf7, 0x1c, 0xfd, 0x70, 0xbd, 0xe0, 0x68,
+ 0x01, 0x89, 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x02, 0x31, 0x01, 0x60, 0xe8, 0x00,
+ 0x3c, 0x00, 0xf0, 0xa5, 0x00, 0x00, 0x31, 0x58,
+ 0x20, 0x1c, 0xf5, 0xf7, 0xf1, 0xfe, 0x00, 0x28,
+ 0xef, 0xd1, 0xe0, 0x68, 0x01, 0x89, 0x02, 0x31,
+ 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, 0x02, 0x39,
+ 0x01, 0x60, 0xe3, 0xe7, 0x00, 0x00, 0x6a, 0x46,
+ 0x01, 0x00, 0x7c, 0x79, 0x01, 0x00, 0x70, 0xb5,
+ 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0xf7, 0xf7,
+ 0x8c, 0xfb, 0x00, 0x28, 0x2a, 0xd0, 0x1b, 0x49,
+ 0x08, 0x68, 0x3c, 0x00, 0x2c, 0xa6, 0x00, 0x00,
+ 0x01, 0x30, 0x08, 0x60, 0x00, 0x2e, 0x0a, 0xd0,
+ 0x01, 0x2e, 0x0b, 0xd0, 0x02, 0x2e, 0x0f, 0xd1,
+ 0x20, 0x1c, 0x04, 0xf0, 0xcd, 0xf8, 0x20, 0x1c,
+ 0xff, 0xf7, 0xd6, 0xfe, 0x0c, 0xe0, 0x08, 0x21,
+ 0xe0, 0x68, 0x02, 0xe0, 0xc1, 0x21, 0xe0, 0x68,
+ 0xc9, 0x00, 0x04, 0xf0, 0x35, 0xf9, 0x03, 0xe0,
+ 0x02, 0x21, 0x26, 0x20, 0xf6, 0xf7, 0x20, 0xfe,
+ 0xe2, 0x7d, 0xe1, 0x6a, 0x3c, 0x00, 0x68, 0xa6,
+ 0x00, 0x00, 0x28, 0x1c, 0xfc, 0xf7, 0x95, 0xfb,
+ 0x20, 0x63, 0x00, 0x20, 0x20, 0x62, 0xa0, 0x62,
+ 0x20, 0x1c, 0x00, 0xf0, 0x6c, 0xfe, 0x70, 0xbd,
+ 0xe0, 0x68, 0xf6, 0xf7, 0x8a, 0xff, 0x00, 0x2d,
+ 0xf9, 0xd0, 0xe3, 0x7d, 0x00, 0x22, 0x01, 0x20,
+ 0xe1, 0x6a, 0xf5, 0xf7, 0xa7, 0xfe, 0x70, 0xbd,
+ 0x00, 0x00, 0x94, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x28, 0x04, 0xd1, 0x05, 0x48, 0x3c, 0x00,
+ 0xa4, 0xa6, 0x00, 0x00, 0x00, 0x68, 0x01, 0xf0,
+ 0x09, 0xf9, 0x80, 0xbd, 0x03, 0x21, 0x26, 0x20,
+ 0xf6, 0xf7, 0xf8, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x0c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x80, 0x79, 0x00, 0x24, 0xc0, 0x07, 0x2d, 0xd5,
+ 0xf0, 0x68, 0x00, 0x68, 0x41, 0x7a, 0x11, 0x29,
+ 0x28, 0xd1, 0xc1, 0x88, 0x0a, 0x0a, 0x09, 0x02,
+ 0x11, 0x43, 0xc9, 0x04, 0x22, 0xd1, 0x01, 0x78,
+ 0x3c, 0x00, 0xe0, 0xa6, 0x00, 0x00, 0x11, 0x4f,
+ 0x09, 0x07, 0x89, 0x0e, 0x08, 0x18, 0x41, 0x88,
+ 0x0a, 0x0a, 0x09, 0x02, 0x11, 0x43, 0x0d, 0x04,
+ 0x2d, 0x0c, 0x43, 0x2d, 0x39, 0x68, 0x01, 0xd1,
+ 0xca, 0x07, 0x0e, 0xd4, 0x44, 0x2d, 0x06, 0xd1,
+ 0xc9, 0x07, 0x04, 0xd5, 0x24, 0x30, 0x00, 0xf0,
+ 0x22, 0xfb, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48,
+ 0x85, 0x42, 0x06, 0xd1, 0x38, 0x68, 0x80, 0x07,
+ 0x03, 0xd5, 0x3c, 0x00, 0x1c, 0xa7, 0x00, 0x00,
+ 0x01, 0x24, 0xf0, 0x68, 0xf6, 0xf7, 0x3a, 0xff,
+ 0x20, 0x1c, 0xf8, 0xbd, 0x7c, 0x5a, 0x01, 0x00,
+ 0x6c, 0x07, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x28,
+ 0x07, 0xd0, 0x00, 0x21, 0x26, 0x20, 0x08, 0xf0,
+ 0x7b, 0xff, 0x02, 0x48, 0x00, 0x68, 0x01, 0xf0,
+ 0xbb, 0xf8, 0x80, 0xbd, 0x0c, 0x79, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x09, 0x4a, 0x08, 0x1c,
+ 0x51, 0x68, 0x01, 0x31, 0x3c, 0x00, 0x58, 0xa7,
+ 0x00, 0x00, 0x51, 0x60, 0x00, 0x21, 0x21, 0x62,
+ 0xa1, 0x62, 0xe2, 0x7d, 0xe1, 0x6a, 0xfc, 0xf7,
+ 0x18, 0xfb, 0x20, 0x63, 0x20, 0x1c, 0xf7, 0xf7,
+ 0xe6, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0xef, 0xfd,
+ 0x10, 0xbd, 0x94, 0x79, 0x01, 0x00, 0x0c, 0xb5,
+ 0x02, 0x1c, 0x08, 0x1c, 0x00, 0x21, 0x01, 0x91,
+ 0x00, 0x92, 0x6a, 0x46, 0x01, 0xa9, 0x00, 0xf0,
+ 0x02, 0xf8, 0x0c, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x94, 0xa7, 0x00, 0x00, 0x70, 0xb5, 0x13, 0x68,
+ 0x00, 0x2b, 0x1e, 0xd0, 0x00, 0x26, 0x0b, 0x68,
+ 0x00, 0x2b, 0x02, 0xd1, 0x13, 0x68, 0x1b, 0x68,
+ 0x0b, 0x60, 0x13, 0x68, 0x1c, 0x68, 0x1b, 0x89,
+ 0xe5, 0x18, 0x08, 0xe0, 0x5c, 0x78, 0x1c, 0x19,
+ 0x02, 0x34, 0x0c, 0x60, 0x1c, 0x78, 0x84, 0x42,
+ 0x01, 0xd1, 0x18, 0x1c, 0x70, 0xbd, 0x0b, 0x68,
+ 0xab, 0x42, 0xf3, 0xd3, 0x13, 0x68, 0xdb, 0x68,
+ 0x3c, 0x00, 0xd0, 0xa7, 0x00, 0x00, 0x13, 0x60,
+ 0x0e, 0x60, 0x13, 0x68, 0x00, 0x2b, 0xe1, 0xd1,
+ 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x70, 0xb5,
+ 0x03, 0x1c, 0x20, 0xd0, 0x18, 0x68, 0x1e, 0x89,
+ 0x05, 0x1c, 0x16, 0xe0, 0x04, 0x78, 0xdd, 0x2c,
+ 0x10, 0xd1, 0x84, 0x78, 0x00, 0x2c, 0x0d, 0xd1,
+ 0xc4, 0x78, 0x50, 0x2c, 0x0a, 0xd1, 0x04, 0x79,
+ 0xf2, 0x2c, 0x07, 0xd1, 0x44, 0x79, 0x8c, 0x42,
+ 0x04, 0xd1, 0x3c, 0x00, 0x0c, 0xa8, 0x00, 0x00,
+ 0x02, 0x29, 0x0c, 0xd1, 0x84, 0x79, 0x94, 0x42,
+ 0x09, 0xd0, 0x44, 0x78, 0x20, 0x18, 0x02, 0x30,
+ 0x44, 0x1b, 0xb4, 0x42, 0xe5, 0xdb, 0xdb, 0x68,
+ 0x00, 0x2b, 0xde, 0xd1, 0x00, 0x20, 0x70, 0xbd,
+ 0x04, 0x49, 0x80, 0xb5, 0x0a, 0x78, 0x0a, 0x20,
+ 0x00, 0x2a, 0x00, 0xd0, 0x48, 0x6a, 0x00, 0xf0,
+ 0xd1, 0xf8, 0x80, 0xbd, 0x1c, 0x75, 0x01, 0x00,
+ 0xb0, 0xb5, 0x17, 0x4c, 0x3c, 0x00, 0x48, 0xa8,
+ 0x00, 0x00, 0x20, 0x68, 0x00, 0x28, 0x29, 0xd0,
+ 0x16, 0x4d, 0xe8, 0x69, 0x00, 0x28, 0x25, 0xd1,
+ 0x01, 0xf0, 0x3f, 0xfa, 0x00, 0x28, 0x21, 0xd1,
+ 0xff, 0xf7, 0x41, 0xfc, 0x00, 0x28, 0x1d, 0xd1,
+ 0x20, 0x68, 0xa9, 0x69, 0x40, 0x18, 0x08, 0xf0,
+ 0xd6, 0xf9, 0x00, 0x28, 0x16, 0xd0, 0x02, 0xf0,
+ 0x06, 0xfd, 0x21, 0x68, 0x40, 0x18, 0x08, 0xf0,
+ 0xce, 0xf9, 0x00, 0x28, 0x0e, 0xd0, 0x3c, 0x00,
+ 0x84, 0xa8, 0x00, 0x00, 0x01, 0x20, 0xe8, 0x61,
+ 0x00, 0x22, 0x25, 0x21, 0x80, 0x20, 0x08, 0xf0,
+ 0x8f, 0xff, 0x06, 0x48, 0x29, 0x6a, 0x04, 0xf0,
+ 0x83, 0xfd, 0x01, 0x21, 0x28, 0x6a, 0x00, 0xf0,
+ 0x89, 0xff, 0xb0, 0xbd, 0xe8, 0x59, 0x01, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, 0xfa, 0xf7,
+ 0x0b, 0xff, 0x18, 0x4e, 0x71, 0x6a, 0x40, 0x18,
+ 0x3c, 0x00, 0xc0, 0xa8, 0x00, 0x00, 0x00, 0xf0,
+ 0x8e, 0xf8, 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0,
+ 0xfe, 0xfb, 0x00, 0x21, 0x25, 0x20, 0x08, 0xf0,
+ 0xb0, 0xfe, 0x03, 0x22, 0x29, 0x1c, 0x28, 0x1c,
+ 0x00, 0xf0, 0xaf, 0xf8, 0x18, 0xe0, 0x70, 0x6a,
+ 0x44, 0x1e, 0x00, 0xf0, 0x7c, 0xf8, 0x00, 0x28,
+ 0x12, 0xd1, 0x0c, 0x48, 0x31, 0x6a, 0x04, 0xf0,
+ 0x56, 0xfd, 0x01, 0x21, 0x30, 0x6a, 0x00, 0xf0,
+ 0x5c, 0xff, 0x3c, 0x00, 0xfc, 0xa8, 0x00, 0x00,
+ 0x00, 0x20, 0xfa, 0xf7, 0x0d, 0xfe, 0x06, 0xf0,
+ 0x03, 0xf8, 0x00, 0x23, 0x00, 0x22, 0x25, 0x20,
+ 0x05, 0x49, 0x08, 0xf0, 0x3f, 0xff, 0x20, 0x1c,
+ 0x07, 0xf0, 0xfc, 0xfa, 0x70, 0xbd, 0x00, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x10, 0x27, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x28,
+ 0x07, 0xd0, 0x80, 0x28, 0x0d, 0xd1, 0x00, 0x22,
+ 0x00, 0x21, 0x08, 0x48, 0x3c, 0x00, 0x38, 0xa9,
+ 0x00, 0x00, 0xf8, 0xf7, 0x9a, 0xfe, 0x80, 0xbd,
+ 0x01, 0x29, 0x02, 0xd1, 0x06, 0x49, 0x00, 0x20,
+ 0xc8, 0x61, 0x04, 0xf0, 0xbe, 0xfb, 0x80, 0xbd,
+ 0x05, 0x21, 0x25, 0x20, 0xf6, 0xf7, 0xa7, 0xfc,
+ 0x80, 0xbd, 0x61, 0xa9, 0x00, 0x00, 0x1c, 0x75,
+ 0x01, 0x00, 0x00, 0x21, 0x00, 0x28, 0x80, 0xb5,
+ 0x01, 0xd1, 0x03, 0x48, 0x41, 0x68, 0x01, 0x22,
+ 0x25, 0x20, 0x08, 0xf0, 0x2c, 0xfe, 0x3c, 0x00,
+ 0x74, 0xa9, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0xe8, 0x59, 0x01, 0x00, 0x02, 0x49, 0xc8, 0x68,
+ 0x01, 0x38, 0x48, 0x62, 0x70, 0x47, 0x00, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c,
+ 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, 0x06, 0xd0,
+ 0x01, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x19, 0x1c,
+ 0xf5, 0xf7, 0xaa, 0xfd, 0x17, 0xe0, 0x0d, 0x4d,
+ 0x01, 0x1c, 0x2c, 0x78, 0x12, 0x88, 0x18, 0x1c,
+ 0x3c, 0x00, 0xb0, 0xa9, 0x00, 0x00, 0xf5, 0xf7,
+ 0xa2, 0xfd, 0x28, 0x78, 0x84, 0x42, 0x0d, 0xd0,
+ 0x00, 0x23, 0x6b, 0x61, 0x00, 0x28, 0x03, 0xd0,
+ 0x00, 0x20, 0x07, 0xf0, 0xa4, 0xfa, 0x05, 0xe0,
+ 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0x92,
+ 0xf8, 0xf7, 0x23, 0xfc, 0x01, 0x20, 0x38, 0xbd,
+ 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x01, 0x26, 0x08, 0xf0, 0xe1, 0xf9,
+ 0x05, 0x1c, 0x3c, 0x00, 0xec, 0xa9, 0x00, 0x00,
+ 0x00, 0x20, 0xfa, 0xf7, 0x8b, 0xfd, 0x44, 0x43,
+ 0x02, 0xf0, 0x40, 0xfc, 0x02, 0xf0, 0x3e, 0xfc,
+ 0x01, 0x1c, 0x23, 0x1c, 0x00, 0x22, 0x28, 0x1c,
+ 0x08, 0xf0, 0x7c, 0xfa, 0x00, 0x28, 0x13, 0xd1,
+ 0x0a, 0x48, 0x23, 0x1c, 0x00, 0x22, 0x81, 0x69,
+ 0x28, 0x1c, 0x08, 0xf0, 0x73, 0xfa, 0x00, 0x28,
+ 0x0a, 0xd1, 0xf8, 0xf7, 0x19, 0xfc, 0x01, 0x1c,
+ 0x23, 0x1c, 0x00, 0x22, 0x3c, 0x00, 0x28, 0xaa,
+ 0x00, 0x00, 0x28, 0x1c, 0x08, 0xf0, 0x69, 0xfa,
+ 0x00, 0x28, 0x00, 0xd1, 0x00, 0x26, 0x30, 0x1c,
+ 0x70, 0xbd, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5,
+ 0x0d, 0x1c, 0x04, 0x1c, 0x16, 0x1c, 0x07, 0xf0,
+ 0x76, 0xf9, 0x00, 0x28, 0x0d, 0xd0, 0xfa, 0xf7,
+ 0x52, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30,
+ 0x01, 0x30, 0x43, 0x68, 0x00, 0x2b, 0x04, 0xd0,
+ 0x22, 0x1c, 0x29, 0x1c, 0x30, 0x1c, 0x3c, 0x00,
+ 0x64, 0xaa, 0x00, 0x00, 0xf5, 0xf7, 0xbb, 0xfc,
+ 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x1d, 0x20, 0x08, 0xf0, 0xdf, 0xfd, 0x07, 0x4a,
+ 0x07, 0x48, 0x11, 0x69, 0x01, 0x60, 0x51, 0x69,
+ 0x41, 0x60, 0x06, 0x49, 0x49, 0x68, 0x81, 0x60,
+ 0x00, 0x21, 0xc1, 0x60, 0x03, 0xf0, 0x74, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x28, 0x61, 0x01, 0x00,
+ 0x48, 0x75, 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00,
+ 0x3c, 0x00, 0xa0, 0xaa, 0x00, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x40, 0x6b, 0x00, 0x28, 0x35, 0xd0,
+ 0x1d, 0x4d, 0x00, 0x26, 0x28, 0x78, 0x00, 0x28,
+ 0x24, 0xd0, 0x41, 0x20, 0x00, 0x5d, 0x00, 0x28,
+ 0x03, 0xd1, 0x08, 0xf0, 0x76, 0xf9, 0xa8, 0x61,
+ 0x1b, 0xe0, 0x69, 0x69, 0x01, 0x31, 0x69, 0x61,
+ 0xa8, 0x68, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x42,
+ 0x06, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31,
+ 0x04, 0x30, 0x3c, 0x00, 0xdc, 0xaa, 0x00, 0x00,
+ 0x82, 0x22, 0xff, 0xf7, 0xad, 0xff, 0x68, 0x68,
+ 0x00, 0x28, 0x0a, 0xd0, 0x69, 0x69, 0x81, 0x42,
+ 0x07, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31,
+ 0x04, 0x30, 0x02, 0x22, 0xff, 0xf7, 0xa0, 0xff,
+ 0x6e, 0x61, 0x68, 0x78, 0x05, 0x21, 0x08, 0x40,
+ 0x08, 0xd0, 0x07, 0x48, 0x00, 0x78, 0x0e, 0x28,
+ 0x03, 0xd3, 0x60, 0x34, 0xe0, 0x79, 0xfb, 0xf7,
+ 0xcf, 0xff, 0x70, 0xbd, 0x3c, 0x00, 0x18, 0xab,
+ 0x00, 0x00, 0x03, 0x48, 0x06, 0x60, 0x70, 0xbd,
+ 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0xd4, 0x7e, 0x01, 0x00, 0x80, 0x02,
+ 0x70, 0x47, 0x14, 0x23, 0x30, 0xb5, 0x09, 0x4d,
+ 0x4b, 0x43, 0x5b, 0x19, 0x5b, 0x68, 0x08, 0x24,
+ 0x00, 0x2b, 0x00, 0xd1, 0x02, 0x24, 0x38, 0x23,
+ 0x5a, 0x43, 0x05, 0x4b, 0x89, 0x00, 0xd2, 0x18,
+ 0x51, 0x5a, 0x02, 0x68, 0x09, 0x19, 0x3c, 0x00,
+ 0x54, 0xab, 0x00, 0x00, 0x51, 0x1a, 0x01, 0x60,
+ 0x30, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00,
+ 0x8c, 0x41, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c,
+ 0x2c, 0x48, 0x14, 0x1c, 0x2c, 0x4a, 0x48, 0x43,
+ 0x86, 0x46, 0x80, 0x18, 0x80, 0x0d, 0x84, 0x46,
+ 0x2b, 0x48, 0x2a, 0x4a, 0x06, 0x26, 0x1d, 0x1c,
+ 0x48, 0x43, 0x4a, 0x43, 0x0e, 0x2f, 0x40, 0xd2,
+ 0x01, 0xa3, 0xdb, 0x5d, 0x5b, 0x00, 0x9f, 0x44,
+ 0x3c, 0x00, 0x90, 0xab, 0x00, 0x00, 0x06, 0x08,
+ 0x0a, 0x0f, 0x14, 0x18, 0x1d, 0x20, 0x27, 0x24,
+ 0x27, 0x2b, 0x2f, 0x31, 0xc8, 0x00, 0x1f, 0xe0,
+ 0x88, 0x00, 0x1d, 0xe0, 0x21, 0x49, 0x70, 0x46,
+ 0x40, 0x18, 0x00, 0x0d, 0x18, 0xe0, 0x1f, 0x4a,
+ 0x80, 0x18, 0x80, 0x0d, 0x40, 0x18, 0x21, 0xe0,
+ 0x1e, 0x48, 0x10, 0x18, 0x00, 0x0d, 0x1d, 0xe0,
+ 0x1d, 0x49, 0x70, 0x46, 0x40, 0x18, 0x40, 0x0d,
+ 0x0a, 0xe0, 0x3c, 0x00, 0xcc, 0xab, 0x00, 0x00,
+ 0x1b, 0x49, 0x40, 0x18, 0x01, 0xe0, 0x1b, 0x48,
+ 0x10, 0x18, 0x40, 0x0d, 0x11, 0xe0, 0x1a, 0x49,
+ 0x40, 0x18, 0x05, 0xe0, 0x60, 0x46, 0x20, 0x80,
+ 0x00, 0x20, 0x16, 0xe0, 0x17, 0x48, 0x10, 0x18,
+ 0x80, 0x0d, 0x06, 0xe0, 0x16, 0x49, 0x02, 0xe0,
+ 0x16, 0x48, 0x48, 0x43, 0x16, 0x49, 0x40, 0x18,
+ 0xc0, 0x0d, 0x03, 0x30, 0x80, 0x08, 0x80, 0x00,
+ 0x20, 0x80, 0x2e, 0x80, 0x3c, 0x00, 0x08, 0xac,
+ 0x00, 0x00, 0xf8, 0xbd, 0xff, 0x21, 0xff, 0x20,
+ 0xf6, 0xf7, 0x49, 0xfb, 0x00, 0x20, 0x20, 0x80,
+ 0x28, 0x80, 0xf6, 0xe7, 0x00, 0x00, 0xd1, 0x45,
+ 0x17, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xe3, 0x38,
+ 0x0e, 0x00, 0x55, 0x55, 0x15, 0x00, 0xff, 0xff,
+ 0x0f, 0x00, 0xa9, 0xaa, 0x2a, 0x01, 0x70, 0x1c,
+ 0x37, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xcb, 0xcc,
+ 0x4c, 0x00, 0x70, 0x1c, 0x47, 0x00, 0x3c, 0x00,
+ 0x44, 0xac, 0x00, 0x00, 0xa9, 0xaa, 0x7a, 0x00,
+ 0x70, 0x1c, 0x67, 0x00, 0xa9, 0xaa, 0xba, 0x00,
+ 0x84, 0xf6, 0x12, 0x00, 0xec, 0x25, 0xb4, 0x00,
+ 0x04, 0x49, 0x00, 0x28, 0x01, 0xd0, 0x09, 0x22,
+ 0x00, 0xe0, 0x14, 0x22, 0x4a, 0x80, 0x48, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0xa4, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0x06, 0x22, 0xf5, 0xf7, 0x40, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0xbc, 0xb5, 0x15, 0x1c,
+ 0x3c, 0x00, 0x80, 0xac, 0x00, 0x00, 0x04, 0x1c,
+ 0x04, 0x31, 0x09, 0x04, 0x09, 0x0c, 0x01, 0xaa,
+ 0x6b, 0x46, 0xff, 0xf7, 0x6a, 0xff, 0x38, 0x20,
+ 0x06, 0x49, 0x68, 0x43, 0x40, 0x18, 0xa1, 0x00,
+ 0x40, 0x5a, 0x00, 0xab, 0x99, 0x88, 0x40, 0x18,
+ 0x19, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0xbc, 0xbd, 0x8c, 0x41, 0x01, 0x00, 0xbc, 0xb5,
+ 0x04, 0x1c, 0x15, 0x1c, 0x01, 0xaa, 0x6b, 0x46,
+ 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0xac, 0x00, 0x00,
+ 0x53, 0xff, 0x38, 0x20, 0x05, 0x49, 0x68, 0x43,
+ 0x40, 0x18, 0xa1, 0x00, 0x40, 0x5a, 0x00, 0xab,
+ 0x99, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0xbc, 0xbd, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x28, 0x0f, 0xd0, 0x00, 0x29,
+ 0x0d, 0xd0, 0x02, 0x78, 0x0b, 0x78, 0x9a, 0x42,
+ 0x09, 0xd1, 0xff, 0x2a, 0x05, 0xd0, 0x42, 0x78,
+ 0x02, 0x32, 0xf5, 0xf7, 0x3c, 0x00, 0xf8, 0xac,
+ 0x00, 0x00, 0x81, 0xfb, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49,
+ 0xf5, 0xf7, 0x75, 0xfb, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x5e, 0x40, 0x01, 0x00, 0x01, 0x1c,
+ 0x49, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0xad, 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22,
+ 0xf5, 0xf7, 0x60, 0xfb, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x80, 0xb5, 0xff, 0xf7, 0xc7, 0xff, 0x80, 0xbd,
+ 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, 0xf5, 0xf7,
+ 0x51, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20,
+ 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00,
+ 0x12, 0x61, 0x01, 0x00, 0x01, 0x1c, 0x80, 0x20,
+ 0x3c, 0x00, 0x70, 0xad, 0x00, 0x00, 0x81, 0x43,
+ 0x8a, 0x08, 0x0e, 0x20, 0x1c, 0x2a, 0x10, 0xb5,
+ 0x06, 0xd2, 0x03, 0x4c, 0x52, 0x00, 0xa3, 0x5c,
+ 0x8b, 0x42, 0x01, 0xd1, 0x10, 0x19, 0x40, 0x78,
+ 0x10, 0xbd, 0xfc, 0x41, 0x01, 0x00, 0x14, 0x23,
+ 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, 0x40, 0x68,
+ 0x70, 0x47, 0x74, 0x40, 0x01, 0x00, 0x20, 0x22,
+ 0x01, 0x1c, 0x80, 0xb5, 0x02, 0x48, 0xf5, 0xf7,
+ 0x52, 0xfd, 0x3c, 0x00, 0xac, 0xad, 0x00, 0x00,
+ 0x80, 0xbd, 0x00, 0x00, 0x48, 0x61, 0x01, 0x00,
+ 0x08, 0x06, 0x00, 0x0e, 0x02, 0x28, 0x01, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47,
+ 0x00, 0x29, 0x0c, 0xd0, 0x07, 0x49, 0x09, 0x68,
+ 0x00, 0x29, 0x08, 0xd0, 0x14, 0x23, 0x06, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0xc0, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xad,
+ 0x00, 0x00, 0xac, 0x69, 0x01, 0x00, 0x74, 0x40,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x22,
+ 0x01, 0x1c, 0x04, 0x48, 0xf5, 0xf7, 0x7d, 0xfb,
+ 0x06, 0x22, 0x21, 0x1c, 0x03, 0x48, 0xf5, 0xf7,
+ 0x78, 0xfb, 0x10, 0xbd, 0x00, 0x00, 0x12, 0x61,
+ 0x01, 0x00, 0x40, 0x80, 0x07, 0x00, 0x00, 0x29,
+ 0x01, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x38, 0x23,
+ 0x5a, 0x43, 0x07, 0x4b, 0xd2, 0x18, 0x3c, 0x00,
+ 0x24, 0xae, 0x00, 0x00, 0x83, 0x00, 0xd2, 0x5a,
+ 0x14, 0x23, 0x58, 0x43, 0x05, 0x4b, 0xc0, 0x18,
+ 0x40, 0x88, 0x10, 0x18, 0x08, 0x1a, 0x0a, 0x38,
+ 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00,
+ 0x8c, 0x41, 0x01, 0x00, 0x74, 0x40, 0x01, 0x00,
+ 0xf8, 0xb5, 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c,
+ 0x1c, 0x1c, 0x19, 0x1c, 0x00, 0xf0, 0x5a, 0xf8,
+ 0x05, 0x1c, 0x14, 0x35, 0x22, 0x1c, 0x31, 0x1c,
+ 0x3c, 0x00, 0x60, 0xae, 0x00, 0x00, 0x38, 0x1c,
+ 0xff, 0xf7, 0x0b, 0xff, 0x28, 0x18, 0x00, 0x04,
+ 0x00, 0x0c, 0xf8, 0xbd, 0x00, 0x00, 0x00, 0xb5,
+ 0x00, 0xf0, 0x4b, 0xf8, 0x0a, 0x30, 0x00, 0x04,
+ 0x00, 0x0c, 0x00, 0xbd, 0x00, 0x00, 0xf8, 0xb5,
+ 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, 0x1c, 0x1c,
+ 0x19, 0x1c, 0x00, 0xf0, 0x3e, 0xf8, 0x45, 0x00,
+ 0x1e, 0x35, 0x22, 0x1c, 0x31, 0x1c, 0x38, 0x1c,
+ 0xff, 0xf7, 0x3c, 0x00, 0x9c, 0xae, 0x00, 0x00,
+ 0xef, 0xfe, 0x28, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c,
+ 0x81, 0xb0, 0x0a, 0xa9, 0x14, 0x1c, 0x1e, 0x1c,
+ 0x03, 0xc9, 0x00, 0xf0, 0x29, 0xf8, 0x05, 0x1c,
+ 0x1e, 0x35, 0x21, 0x1c, 0x30, 0x1c, 0x00, 0xf0,
+ 0x23, 0xf8, 0x2d, 0x18, 0x22, 0x1c, 0x39, 0x1c,
+ 0x01, 0x98, 0xff, 0xf7, 0xd5, 0xfe, 0x28, 0x18,
+ 0x00, 0x04, 0x00, 0x0c, 0x3c, 0x00, 0xd8, 0xae,
+ 0x00, 0x00, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0x49,
+ 0x80, 0xb5, 0x09, 0x88, 0x09, 0x29, 0x04, 0xd0,
+ 0x14, 0x29, 0x07, 0xd1, 0x01, 0x01, 0x80, 0x00,
+ 0x00, 0xe0, 0xc1, 0x00, 0x08, 0x18, 0x00, 0x04,
+ 0x00, 0x0c, 0x80, 0xbd, 0xff, 0x21, 0xff, 0x20,
+ 0xf6, 0xf7, 0xd1, 0xf9, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x38, 0x23,
+ 0x59, 0x43, 0x06, 0x4a, 0x14, 0x23, 0x3c, 0x00,
+ 0x14, 0xaf, 0x00, 0x00, 0x89, 0x18, 0x82, 0x00,
+ 0x89, 0x5a, 0x05, 0x4a, 0x58, 0x43, 0x80, 0x18,
+ 0x40, 0x88, 0x08, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0x70, 0x47, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00,
+ 0x74, 0x40, 0x01, 0x00, 0x02, 0x48, 0x03, 0x49,
+ 0x00, 0x68, 0x40, 0x00, 0x08, 0x5a, 0x70, 0x47,
+ 0xa8, 0x69, 0x01, 0x00, 0x54, 0x40, 0x01, 0x00,
+ 0x0a, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x1c,
+ 0x3c, 0x00, 0x50, 0xaf, 0x00, 0x00, 0xfd, 0xf7,
+ 0x62, 0xff, 0x20, 0x1c, 0x10, 0xbd, 0xb0, 0xb5,
+ 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d,
+ 0xff, 0xf7, 0xf5, 0xfe, 0x00, 0x28, 0x18, 0xd0,
+ 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x08, 0xf0,
+ 0xe2, 0xfd, 0x00, 0x28, 0x11, 0xd0, 0x29, 0x88,
+ 0x09, 0x48, 0x20, 0x22, 0x81, 0x82, 0x69, 0x88,
+ 0x01, 0x83, 0xa9, 0x88, 0x06, 0x35, 0x41, 0x83,
+ 0xc5, 0x61, 0x3c, 0x00, 0x8c, 0xaf, 0x00, 0x00,
+ 0x30, 0x21, 0x09, 0x5d, 0x11, 0x54, 0x61, 0x6b,
+ 0x41, 0x62, 0x01, 0x20, 0xf7, 0xf7, 0x28, 0xf8,
+ 0x20, 0x1c, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x21, 0x1c,
+ 0x14, 0x31, 0x05, 0x68, 0x20, 0x1c, 0x08, 0xf0,
+ 0xc1, 0xfd, 0x00, 0x28, 0x08, 0xd0, 0x05, 0x4e,
+ 0xf0, 0x68, 0x02, 0xf0, 0xcf, 0xfd, 0x28, 0x88,
+ 0xf0, 0x82, 0x03, 0x20, 0x3c, 0x00, 0xc8, 0xaf,
+ 0x00, 0x00, 0xf7, 0xf7, 0x10, 0xf8, 0x20, 0x1c,
+ 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x3e, 0xb5,
+ 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d,
+ 0xff, 0xf7, 0xb7, 0xfe, 0x00, 0x28, 0x21, 0xd0,
+ 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x02, 0xaa,
+ 0x08, 0xf0, 0x77, 0xfd, 0x00, 0x28, 0x19, 0xd0,
+ 0x02, 0x98, 0x4b, 0x21, 0x09, 0x5c, 0x00, 0x29,
+ 0x10, 0xd0, 0x01, 0x29, 0x14, 0xd0, 0x3c, 0x00,
+ 0x04, 0xb0, 0x00, 0x00, 0x02, 0x29, 0x0c, 0xd1,
+ 0x29, 0x88, 0x0d, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0x20, 0x1c, 0x03, 0xf0, 0x51, 0xf8, 0x01, 0x90,
+ 0x68, 0x46, 0x02, 0xf0, 0x5d, 0xfa, 0xf6, 0xf7,
+ 0xb5, 0xf8, 0x00, 0x21, 0x02, 0x98, 0x06, 0xf0,
+ 0x9f, 0xfe, 0x20, 0x1c, 0x3e, 0xbd, 0x07, 0xf0,
+ 0x29, 0xf8, 0x02, 0x98, 0x00, 0x21, 0x80, 0x69,
+ 0xc2, 0x07, 0xd2, 0x0f, 0x04, 0x20, 0xf6, 0xf7,
+ 0x3c, 0x00, 0x40, 0xb0, 0x00, 0x00, 0x7f, 0xff,
+ 0xee, 0xe7, 0x10, 0xb5, 0x04, 0x1c, 0xfd, 0xf7,
+ 0xe6, 0xfe, 0x20, 0x1c, 0x10, 0xbd, 0x3e, 0xb5,
+ 0x05, 0x1c, 0x00, 0xf0, 0x40, 0xfe, 0x00, 0x28,
+ 0x15, 0xd1, 0x28, 0x1c, 0x14, 0x30, 0xfa, 0xf7,
+ 0xce, 0xfb, 0x00, 0x28, 0x0f, 0xd0, 0x05, 0x21,
+ 0x28, 0x69, 0xff, 0xf7, 0x86, 0xfb, 0x04, 0x1c,
+ 0x09, 0xd0, 0x05, 0x22, 0x21, 0x1c, 0x68, 0x46,
+ 0xf5, 0xf7, 0x3c, 0x00, 0x7c, 0xb0, 0x00, 0x00,
+ 0x3d, 0xfa, 0x05, 0x34, 0x02, 0x94, 0x68, 0x46,
+ 0x03, 0xf0, 0x1a, 0xfb, 0x2a, 0x1c, 0x0d, 0x21,
+ 0x8f, 0x20, 0x08, 0xf0, 0x8f, 0xfb, 0x00, 0x20,
+ 0x3e, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0xfa, 0xf7, 0x98, 0xf8, 0x20, 0x1c, 0x05, 0xf0,
+ 0xe5, 0xf8, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x69, 0x00, 0x21,
+ 0x94, 0xb0, 0xff, 0xf7, 0x3c, 0x00, 0xb8, 0xb0,
+ 0x00, 0x00, 0x61, 0xfb, 0x69, 0x46, 0xfb, 0xf7,
+ 0x26, 0xf8, 0x00, 0x28, 0x1e, 0xd0, 0x00, 0x98,
+ 0xfa, 0xf7, 0x29, 0xfa, 0x01, 0x1c, 0x01, 0xa8,
+ 0x02, 0xf0, 0xd7, 0xf9, 0x00, 0x98, 0xfa, 0xf7,
+ 0xd2, 0xf9, 0x04, 0x90, 0x05, 0x20, 0x09, 0xad,
+ 0x68, 0x72, 0x02, 0xa8, 0x21, 0x1c, 0x06, 0x22,
+ 0x02, 0x30, 0xf5, 0xf7, 0x06, 0xfa, 0x01, 0x20,
+ 0x08, 0x90, 0x21, 0x6a, 0x0a, 0x90, 0x3c, 0x00,
+ 0xf4, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x09, 0x91,
+ 0x00, 0x5d, 0x28, 0x72, 0x01, 0xa8, 0x00, 0xf0,
+ 0x69, 0xf8, 0x20, 0x1c, 0x14, 0xb0, 0xb0, 0xbd,
+ 0xff, 0xb5, 0x16, 0x1c, 0x1f, 0x1c, 0x81, 0xb0,
+ 0x0a, 0x9d, 0x4c, 0x20, 0xf6, 0xf7, 0x90, 0xfb,
+ 0x04, 0x1c, 0x14, 0x30, 0x06, 0x22, 0x02, 0x99,
+ 0xf5, 0xf7, 0xea, 0xf9, 0x20, 0x1c, 0x06, 0x22,
+ 0x01, 0x99, 0xf5, 0xf7, 0xe5, 0xf9, 0x28, 0x20,
+ 0x3c, 0x00, 0x30, 0xb1, 0x00, 0x00, 0x00, 0x21,
+ 0x06, 0x55, 0xe1, 0x60, 0x27, 0x62, 0x00, 0x2d,
+ 0x01, 0xd0, 0x8e, 0x20, 0x00, 0xe0, 0x8d, 0x20,
+ 0x22, 0x1c, 0x0d, 0x21, 0x08, 0xf0, 0x33, 0xfb,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x05, 0x1c, 0x4c, 0x20, 0xf6, 0xf7, 0x6f, 0xfb,
+ 0x04, 0x1c, 0x4c, 0x22, 0x29, 0x1c, 0xf5, 0xf7,
+ 0x26, 0xfa, 0x29, 0x20, 0x40, 0x5d, 0x0d, 0x28,
+ 0x2c, 0xd2, 0x3c, 0x00, 0x6c, 0xb1, 0x00, 0x00,
+ 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44,
+ 0x28, 0x1a, 0x28, 0x1e, 0x06, 0x0a, 0x28, 0x28,
+ 0x0e, 0x28, 0x22, 0x12, 0x16, 0x00, 0x22, 0x1c,
+ 0x0d, 0x21, 0x8c, 0x20, 0x1a, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x83, 0x20, 0x16, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x84, 0x20, 0x12, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x85, 0x20, 0x0e, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x86, 0x20, 0x3c, 0x00, 0xa8, 0xb1,
+ 0x00, 0x00, 0x0a, 0xe0, 0x22, 0x1c, 0x0d, 0x21,
+ 0x87, 0x20, 0x06, 0xe0, 0x22, 0x1c, 0x0d, 0x21,
+ 0x89, 0x20, 0x02, 0xe0, 0x22, 0x1c, 0x0d, 0x21,
+ 0x8b, 0x20, 0x08, 0xf0, 0xf6, 0xfa, 0xb0, 0xbd,
+ 0xe8, 0x68, 0xf6, 0xf7, 0xe6, 0xf9, 0x20, 0x1c,
+ 0xf6, 0xf7, 0x11, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5,
+ 0x05, 0x1c, 0x90, 0x20, 0xf6, 0xf7, 0x2d, 0xfb,
+ 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x3c, 0x00,
+ 0xe4, 0xb1, 0x00, 0x00, 0x5b, 0xf9, 0x37, 0x4e,
+ 0x01, 0x27, 0xf0, 0x69, 0x04, 0x28, 0x03, 0xd9,
+ 0x70, 0x6b, 0x01, 0x30, 0x70, 0x63, 0x4d, 0xe0,
+ 0x33, 0x48, 0xb1, 0x6b, 0x04, 0xf0, 0xd0, 0xf8,
+ 0x01, 0x20, 0x20, 0x62, 0xa8, 0x7e, 0x21, 0x1c,
+ 0x80, 0x31, 0x02, 0x91, 0x08, 0x70, 0x22, 0x1c,
+ 0x60, 0x32, 0x01, 0x92, 0x00, 0x20, 0x2f, 0x1c,
+ 0x20, 0x37, 0x90, 0x72, 0x78, 0x7a, 0x2b, 0x1c,
+ 0x3c, 0x00, 0x20, 0xb2, 0x00, 0x00, 0x14, 0x33,
+ 0xd0, 0x72, 0xe8, 0x68, 0xaa, 0x1d, 0xa0, 0x60,
+ 0xe8, 0x6b, 0x48, 0x60, 0x44, 0x20, 0x40, 0x5d,
+ 0x08, 0x72, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0,
+ 0xaa, 0xfc, 0x68, 0x6a, 0x00, 0x28, 0x0a, 0xd1,
+ 0x01, 0x9a, 0x20, 0x1c, 0x93, 0x7a, 0x02, 0x99,
+ 0x22, 0x1c, 0x70, 0x32, 0x58, 0x30, 0x09, 0x78,
+ 0xfa, 0xf7, 0xdb, 0xf9, 0x06, 0xe0, 0x3a, 0x7a,
+ 0x23, 0x1c, 0x3c, 0x00, 0x5c, 0xb2, 0x00, 0x00,
+ 0xe8, 0x69, 0x29, 0x6a, 0x70, 0x33, 0xfd, 0xf7,
+ 0x8d, 0xf9, 0x30, 0x20, 0x40, 0x5d, 0x18, 0x49,
+ 0x07, 0x28, 0x0b, 0xd1, 0x58, 0x20, 0x00, 0x5d,
+ 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0xe0, 0x61,
+ 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x3f, 0xff, 0x18, 0xe0, 0x01, 0x22, 0x20, 0x1c,
+ 0x05, 0xf0, 0xac, 0xff, 0x07, 0x1c, 0x12, 0xd0,
+ 0x03, 0xf0, 0x06, 0xff, 0x3c, 0x00, 0x98, 0xb2,
+ 0x00, 0x00, 0xf3, 0x6d, 0x00, 0x2b, 0x06, 0xd0,
+ 0x60, 0x68, 0x20, 0x30, 0x82, 0x7b, 0x61, 0x6b,
+ 0x38, 0x1c, 0xf5, 0xf7, 0x99, 0xf8, 0xe8, 0x68,
+ 0xf6, 0xf7, 0x73, 0xf9, 0x20, 0x1c, 0xf6, 0xf7,
+ 0x9e, 0xfa, 0xfe, 0xbd, 0xf0, 0x69, 0x01, 0x30,
+ 0xf0, 0x61, 0xfa, 0xe7, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x05, 0x31,
+ 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00,
+ 0xd4, 0xb2, 0x00, 0x00, 0x0d, 0x1c, 0x09, 0x04,
+ 0x09, 0x0c, 0x00, 0x20, 0xf6, 0xf7, 0x7c, 0xf9,
+ 0x04, 0x1c, 0x2a, 0x1c, 0x31, 0x1c, 0x00, 0x68,
+ 0xf5, 0xf7, 0x06, 0xf9, 0x20, 0x1c, 0x70, 0xbd,
+ 0x40, 0x88, 0x70, 0x47, 0x03, 0x78, 0x1b, 0x07,
+ 0x9b, 0x0f, 0x0b, 0x70, 0x00, 0x78, 0x00, 0x09,
+ 0x10, 0x70, 0x70, 0x47, 0x04, 0x30, 0x70, 0x47,
+ 0x04, 0x30, 0x70, 0x47, 0xd4, 0x21, 0x01, 0x70,
+ 0x3c, 0x00, 0x10, 0xb3, 0x00, 0x00, 0x00, 0x21,
+ 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x21,
+ 0x01, 0x70, 0x00, 0x21, 0x41, 0x70, 0x70, 0x47,
+ 0x00, 0x00, 0xb4, 0x21, 0x01, 0x70, 0x00, 0x21,
+ 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49,
+ 0x48, 0x65, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x01, 0x49, 0x08, 0x65, 0x70, 0x47,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49,
+ 0x88, 0x65, 0x3c, 0x00, 0x4c, 0xb3, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00,
+ 0xf8, 0xb5, 0x5f, 0x4f, 0x05, 0x1c, 0xb8, 0x68,
+ 0x01, 0x30, 0xb8, 0x60, 0x07, 0xf0, 0x24, 0xfd,
+ 0x38, 0x61, 0x90, 0x20, 0xf6, 0xf7, 0x66, 0xfa,
+ 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x94, 0xf8,
+ 0x28, 0x6b, 0x27, 0x1c, 0x60, 0x63, 0x68, 0x8b,
+ 0x80, 0x37, 0x26, 0x1c, 0xc0, 0x07, 0xc0, 0x0f,
+ 0x20, 0x62, 0x68, 0x8b, 0x3c, 0x00, 0x88, 0xb3,
+ 0x00, 0x00, 0x60, 0x36, 0x02, 0x21, 0x40, 0x07,
+ 0xc0, 0x0f, 0x20, 0x63, 0x68, 0x8b, 0x80, 0x07,
+ 0xc0, 0x0f, 0xf8, 0x60, 0x28, 0x7f, 0x38, 0x70,
+ 0xb1, 0x72, 0x00, 0x28, 0x08, 0xd1, 0xf9, 0xf7,
+ 0xc8, 0xff, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x20,
+ 0x60, 0x62, 0x01, 0xe0, 0x01, 0x20, 0xa0, 0x62,
+ 0xf8, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x21,
+ 0x02, 0x20, 0x06, 0xf0, 0xcc, 0xff, 0x3c, 0x00,
+ 0xc4, 0xb3, 0x00, 0x00, 0x2b, 0x1c, 0x10, 0x33,
+ 0xaa, 0x1d, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0,
+ 0xdf, 0xfb, 0xa8, 0x6a, 0x00, 0x28, 0x0c, 0xd1,
+ 0x39, 0x78, 0x02, 0x29, 0x07, 0xd0, 0x22, 0x1c,
+ 0x70, 0x32, 0x20, 0x1c, 0x58, 0x30, 0xb3, 0x7a,
+ 0xfa, 0xf7, 0x10, 0xf9, 0x08, 0xe0, 0x01, 0x26,
+ 0x5e, 0xe0, 0xaa, 0x7d, 0x23, 0x1c, 0x28, 0x6a,
+ 0x69, 0x6a, 0x70, 0x33, 0xfd, 0xf7, 0xc0, 0xf8,
+ 0x3c, 0x00, 0x00, 0xb4, 0x00, 0x00, 0xe9, 0x68,
+ 0x00, 0x20, 0x09, 0x89, 0x00, 0x29, 0x00, 0xd1,
+ 0x04, 0x20, 0xf0, 0x72, 0x38, 0x78, 0x01, 0x28,
+ 0x14, 0xd1, 0x00, 0x27, 0x00, 0x90, 0x00, 0x20,
+ 0x06, 0xe0, 0x29, 0x69, 0x01, 0x29, 0x03, 0xd1,
+ 0xa9, 0x69, 0x01, 0x27, 0x89, 0x07, 0x1a, 0xd5,
+ 0x06, 0xf0, 0x79, 0xfc, 0x00, 0x28, 0xf4, 0xd1,
+ 0x01, 0x2f, 0x14, 0xd1, 0x00, 0x98, 0x01, 0x28,
+ 0x11, 0xd1, 0x3c, 0x00, 0x3c, 0xb4, 0x00, 0x00,
+ 0x08, 0xe0, 0x20, 0x1c, 0x58, 0x30, 0x06, 0xf0,
+ 0xe1, 0xfc, 0x00, 0x28, 0x0a, 0xd0, 0x80, 0x69,
+ 0x80, 0x07, 0x07, 0xd5, 0xf0, 0x7a, 0x08, 0x21,
+ 0x08, 0x43, 0xf0, 0x72, 0x01, 0x20, 0xe0, 0x62,
+ 0xe8, 0x7d, 0x30, 0x73, 0xe8, 0x68, 0xa0, 0x60,
+ 0xe0, 0x6a, 0x00, 0x28, 0x12, 0xd0, 0x1a, 0x4f,
+ 0xf8, 0x6b, 0x00, 0x28, 0x0e, 0xd0, 0x30, 0x7b,
+ 0xf5, 0xf7, 0xde, 0xfe, 0x3c, 0x00, 0x78, 0xb4,
+ 0x00, 0x00, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c,
+ 0x38, 0x1c, 0x40, 0x30, 0xfc, 0xf7, 0x55, 0xfc,
+ 0x14, 0x48, 0xb9, 0x6b, 0x03, 0xf0, 0x89, 0xff,
+ 0xf8, 0xbd, 0x10, 0x4f, 0x12, 0x48, 0xb9, 0x6b,
+ 0x03, 0xf0, 0x83, 0xff, 0x00, 0x22, 0x20, 0x1c,
+ 0x10, 0x49, 0x05, 0xf0, 0xa2, 0xfe, 0x06, 0x1c,
+ 0x03, 0xd1, 0x38, 0x6a, 0x01, 0x30, 0x38, 0x62,
+ 0xee, 0xe7, 0x20, 0x1c, 0xf6, 0xf7, 0x3c, 0x00,
+ 0xb4, 0xb4, 0x00, 0x00, 0x9f, 0xf9, 0xe8, 0x68,
+ 0xf6, 0xf7, 0x6e, 0xf8, 0x03, 0xf0, 0xf2, 0xfd,
+ 0x04, 0x48, 0x83, 0x6d, 0x00, 0x2b, 0xe2, 0xd0,
+ 0x00, 0x22, 0x30, 0x1c, 0x29, 0x6b, 0xf4, 0xf7,
+ 0x86, 0xff, 0xdc, 0xe7, 0xc4, 0x69, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x11, 0x30, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x20,
+ 0x07, 0xf0, 0xfe, 0xfc, 0x07, 0xf0, 0x5e, 0xfc,
+ 0x3c, 0x00, 0xf0, 0xb4, 0x00, 0x00, 0x0b, 0x49,
+ 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, 0x07, 0xf0,
+ 0x90, 0xfb, 0x00, 0x28, 0x07, 0xd0, 0xf7, 0xf7,
+ 0x34, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x12, 0x21,
+ 0x86, 0x20, 0xf5, 0xf7, 0xca, 0xfe, 0xf7, 0xf7,
+ 0x2c, 0xf9, 0x00, 0x28, 0xee, 0xd1, 0x01, 0xf0,
+ 0x80, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x40, 0x9c,
+ 0x00, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x01, 0x1c,
+ 0x17, 0x4a, 0x3c, 0x00, 0x2c, 0xb5, 0x00, 0x00,
+ 0x01, 0x29, 0x50, 0x69, 0x04, 0xd0, 0x80, 0x29,
+ 0x1d, 0xd0, 0x81, 0x29, 0x21, 0xd1, 0x1c, 0xe0,
+ 0x91, 0x78, 0x01, 0x29, 0x15, 0xd1, 0x02, 0x21,
+ 0x91, 0x70, 0x14, 0x1c, 0x01, 0x1c, 0x10, 0x48,
+ 0x03, 0xf0, 0x28, 0xff, 0x01, 0x21, 0x60, 0x69,
+ 0x00, 0xf0, 0x2e, 0xf9, 0x60, 0x69, 0x01, 0xf0,
+ 0x5f, 0xfc, 0x20, 0x70, 0xa0, 0x88, 0xa1, 0x69,
+ 0x00, 0x23, 0x0a, 0x4a, 0x3c, 0x00, 0x68, 0xb5,
+ 0x00, 0x00, 0x07, 0xf0, 0x7e, 0xfc, 0x10, 0xbd,
+ 0x22, 0x21, 0x06, 0xe0, 0x01, 0xf0, 0x1d, 0xfc,
+ 0x20, 0x1c, 0x00, 0xf0, 0x4a, 0xf8, 0x10, 0xbd,
+ 0x1c, 0x21, 0x20, 0x20, 0xf5, 0xf7, 0x8f, 0xfe,
+ 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0x3d, 0x2e, 0x00, 0x00, 0x70, 0xb5,
+ 0x1c, 0x4c, 0xa0, 0x78, 0x00, 0x28, 0x32, 0xd0,
+ 0x05, 0x28, 0x30, 0xd0, 0x60, 0x69, 0x3c, 0x00,
+ 0xa4, 0xb5, 0x00, 0x00, 0x00, 0xf0, 0xea, 0xf8,
+ 0x18, 0x4e, 0xb5, 0x79, 0xa0, 0x78, 0x01, 0x28,
+ 0x0b, 0xd0, 0x02, 0x28, 0x0e, 0xd0, 0x03, 0x28,
+ 0x10, 0xd0, 0x04, 0x28, 0x17, 0xd1, 0x42, 0x1f,
+ 0x80, 0x21, 0x20, 0x20, 0x08, 0xf0, 0x08, 0xf8,
+ 0x0e, 0xe0, 0x00, 0x21, 0x20, 0x20, 0x08, 0xf0,
+ 0x31, 0xf8, 0x0c, 0xe0, 0xa0, 0x88, 0x07, 0xf0,
+ 0x1d, 0xfc, 0x05, 0xe0, 0x20, 0x78, 0x00, 0xf0,
+ 0x3c, 0x00, 0xe0, 0xb5, 0x00, 0x00, 0x39, 0xfa,
+ 0x00, 0x20, 0x00, 0xf0, 0xc4, 0xfd, 0x60, 0x69,
+ 0x01, 0xf0, 0xe1, 0xfb, 0x05, 0x20, 0xa0, 0x70,
+ 0xb5, 0x71, 0x60, 0x69, 0x00, 0xf0, 0x61, 0xf9,
+ 0x00, 0x22, 0x20, 0x21, 0x81, 0x20, 0x08, 0xf0,
+ 0xd6, 0xf8, 0x70, 0xbd, 0x00, 0x00, 0xb4, 0x79,
+ 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xb0, 0xb5,
+ 0x0d, 0x4d, 0x04, 0x1c, 0xa8, 0x78, 0x00, 0x28,
+ 0x14, 0xd0, 0x3c, 0x00, 0x1c, 0xb6, 0x00, 0x00,
+ 0x68, 0x69, 0x00, 0xf0, 0x0b, 0xf9, 0x0a, 0x48,
+ 0x69, 0x69, 0x03, 0xf0, 0xa7, 0xfe, 0xa8, 0x88,
+ 0x07, 0xf0, 0x9e, 0xfb, 0x00, 0x2c, 0x02, 0xd0,
+ 0x68, 0x78, 0x00, 0xf0, 0x79, 0xff, 0x00, 0x20,
+ 0xa8, 0x70, 0xa9, 0x68, 0x20, 0x1c, 0xf4, 0xf7,
+ 0xca, 0xfe, 0xb0, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x06, 0x4b, 0x80, 0xb5,
+ 0x99, 0x78, 0x03, 0x29, 0x3c, 0x00, 0x58, 0xb6,
+ 0x00, 0x00, 0x06, 0xd1, 0x04, 0x21, 0x99, 0x70,
+ 0x20, 0x21, 0x02, 0x1c, 0x80, 0x20, 0x08, 0xf0,
+ 0xa4, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xb4, 0x79,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0xa1, 0x78,
+ 0x03, 0x29, 0x0f, 0xd1, 0x10, 0x30, 0xfa, 0xf7,
+ 0xde, 0xf8, 0x00, 0x28, 0x09, 0xd0, 0x20, 0x78,
+ 0x00, 0xf0, 0xe5, 0xf9, 0x00, 0x20, 0x00, 0xf0,
+ 0x70, 0xfd, 0x00, 0x21, 0x05, 0x48, 0x3c, 0x00,
+ 0x94, 0xb6, 0x00, 0x00, 0xfc, 0xf7, 0x9c, 0xfa,
+ 0x10, 0xbd, 0x1b, 0x21, 0x20, 0x20, 0xf5, 0xf7,
+ 0x01, 0xfe, 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0x51, 0xb6, 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5,
+ 0x89, 0x78, 0x03, 0x29, 0x09, 0xd1, 0x00, 0xf0,
+ 0xcd, 0xf9, 0x00, 0x20, 0x00, 0xf0, 0x58, 0xfd,
+ 0x01, 0x21, 0x05, 0x48, 0xfc, 0xf7, 0x84, 0xfa,
+ 0x80, 0xbd, 0x17, 0x21, 0x20, 0x20, 0xf5, 0xf7,
+ 0x3c, 0x00, 0xd0, 0xb6, 0x00, 0x00, 0xe9, 0xfd,
+ 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x51, 0xb6,
+ 0x00, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x1d, 0x1c,
+ 0xa3, 0x78, 0x06, 0x1c, 0x04, 0x98, 0x00, 0x2b,
+ 0x18, 0xd1, 0x01, 0x23, 0xa3, 0x70, 0x22, 0x61,
+ 0xe6, 0x60, 0x61, 0x70, 0xa0, 0x60, 0xa5, 0x61,
+ 0x00, 0x20, 0x07, 0xf0, 0xac, 0xfa, 0xa0, 0x80,
+ 0x30, 0x1c, 0xf7, 0xf7, 0x3c, 0xfb, 0xe0, 0x80,
+ 0x07, 0xf0, 0x3c, 0x00, 0x0c, 0xb7, 0x00, 0x00,
+ 0x4f, 0xfb, 0xc7, 0x21, 0xc9, 0x00, 0x28, 0x1a,
+ 0x41, 0x1a, 0x00, 0x22, 0x20, 0x20, 0x07, 0xf0,
+ 0x57, 0xff, 0x70, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, 0x00, 0xf0,
+ 0x09, 0xf8, 0x20, 0x1c, 0x00, 0xf0, 0x24, 0xf8,
+ 0x00, 0x2d, 0x01, 0xd0, 0xff, 0xf7, 0xd4, 0xfe,
+ 0xb0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x4c,
+ 0x05, 0x1c, 0xa0, 0x68, 0x3c, 0x00, 0x48, 0xb7,
+ 0x00, 0x00, 0x00, 0x28, 0x0f, 0xd1, 0x0a, 0x48,
+ 0x01, 0x7e, 0x02, 0x22, 0x11, 0x40, 0x61, 0x60,
+ 0x01, 0x7e, 0x11, 0x43, 0x01, 0x76, 0x07, 0x20,
+ 0x03, 0xf0, 0x49, 0xfc, 0x20, 0x60, 0x03, 0xf0,
+ 0x98, 0xff, 0x03, 0xf0, 0xee, 0xff, 0xa0, 0x68,
+ 0x28, 0x43, 0xa0, 0x60, 0xb0, 0xbd, 0x40, 0x7c,
+ 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x0a, 0x49,
+ 0x38, 0xb5, 0x0a, 0x1c, 0x20, 0x32, 0x3c, 0x00,
+ 0x84, 0xb7, 0x00, 0x00, 0x94, 0x79, 0x00, 0xab,
+ 0x1c, 0x70, 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70,
+ 0xe2, 0x68, 0x00, 0x2a, 0x02, 0xd1, 0x06, 0x4d,
+ 0x01, 0x23, 0x6b, 0x70, 0x10, 0x43, 0xe0, 0x60,
+ 0x00, 0xab, 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0x40, 0x7c, 0x01, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c,
+ 0x00, 0x29, 0x01, 0xd0, 0x00, 0xf0, 0x28, 0xf8,
+ 0x3c, 0x00, 0xc0, 0xb7, 0x00, 0x00, 0x06, 0x4c,
+ 0x60, 0x78, 0x21, 0x69, 0x08, 0x43, 0x03, 0xd1,
+ 0x01, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0xc5, 0xfd,
+ 0x20, 0x69, 0x28, 0x43, 0x20, 0x61, 0xb0, 0xbd,
+ 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0a, 0x4c, 0x05, 0x1c, 0x22, 0x69, 0x00, 0x20,
+ 0x00, 0x2a, 0x0c, 0xd1, 0x00, 0x29, 0x00, 0xd0,
+ 0x04, 0xe0, 0x60, 0x78, 0x00, 0x28, 0x02, 0xd1,
+ 0x04, 0xf0, 0x3c, 0x00, 0xfc, 0xb7, 0x00, 0x00,
+ 0x69, 0xfb, 0x60, 0x70, 0x28, 0x1c, 0x06, 0xf0,
+ 0xef, 0xfc, 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c,
+ 0x60, 0x78, 0x00, 0x28, 0x0a, 0xd0, 0x06, 0xf0,
+ 0xe3, 0xfc, 0x00, 0x20, 0x60, 0x70, 0x20, 0x69,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x21, 0x0e, 0x20,
+ 0x06, 0xf0, 0x96, 0xfd, 0x10, 0xbd, 0x00, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xb8,
+ 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x0b, 0x69,
+ 0x83, 0x42, 0x04, 0xd1, 0x4a, 0x78, 0x00, 0x2a,
+ 0x01, 0xd1, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22,
+ 0x83, 0x43, 0x0b, 0x61, 0x00, 0x2a, 0x03, 0xd0,
+ 0x00, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0x7f, 0xfd,
+ 0x80, 0xbd, 0x18, 0x63, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x20, 0xf6, 0xf7, 0x56, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00,
+ 0x74, 0xb8, 0x00, 0x00, 0x00, 0xf0, 0x04, 0xf8,
+ 0x20, 0x1c, 0x00, 0xf0, 0x1f, 0xf8, 0x10, 0xbd,
+ 0xb0, 0xb5, 0x0c, 0x4d, 0x04, 0x1c, 0xa8, 0x68,
+ 0xa0, 0x42, 0x0f, 0xd1, 0x07, 0x20, 0x29, 0x68,
+ 0x08, 0xf0, 0x8c, 0xfb, 0x68, 0x68, 0x02, 0x22,
+ 0x07, 0x49, 0x00, 0x28, 0x08, 0x7e, 0x01, 0xd0,
+ 0x10, 0x43, 0x00, 0xe0, 0x90, 0x43, 0x08, 0x76,
+ 0x04, 0xf0, 0xc4, 0xf8, 0xa8, 0x68, 0xa0, 0x43,
+ 0x3c, 0x00, 0xb0, 0xb8, 0x00, 0x00, 0xa8, 0x60,
+ 0xb0, 0xbd, 0x40, 0x7c, 0x01, 0x00, 0x0c, 0x80,
+ 0x07, 0x00, 0x0a, 0x49, 0x38, 0xb5, 0x0a, 0x1c,
+ 0x20, 0x32, 0x94, 0x79, 0x00, 0xab, 0x1c, 0x70,
+ 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, 0xe2, 0x68,
+ 0x82, 0x42, 0x02, 0xd1, 0x06, 0x4d, 0x00, 0x23,
+ 0x6b, 0x70, 0x82, 0x43, 0xe2, 0x60, 0x00, 0xab,
+ 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, 0x00, 0x10,
+ 0x07, 0x00, 0x3c, 0x00, 0xec, 0xb8, 0x00, 0x00,
+ 0x40, 0x7c, 0x01, 0x00, 0x00, 0x50, 0x07, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x0a, 0x4c, 0x00, 0x21,
+ 0x60, 0x69, 0xff, 0xf7, 0x11, 0xff, 0x04, 0x20,
+ 0x01, 0xf0, 0x46, 0xf9, 0x01, 0xf0, 0x88, 0xfb,
+ 0x00, 0x22, 0x04, 0x21, 0x04, 0x20, 0x01, 0xf0,
+ 0x8b, 0xf8, 0x28, 0x1c, 0x01, 0xf0, 0x4a, 0xfa,
+ 0x60, 0x69, 0xff, 0xf7, 0xa7, 0xff, 0xb0, 0xbd,
+ 0x40, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x28, 0xb9,
+ 0x00, 0x00, 0x80, 0xb5, 0x01, 0xf0, 0x77, 0xfa,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x4d, 0x01, 0x21,
+ 0x28, 0x69, 0xff, 0xf7, 0xf4, 0xfe, 0xff, 0xf7,
+ 0x2a, 0xfe, 0x00, 0xf0, 0x2c, 0xfb, 0x00, 0xf0,
+ 0x84, 0xfa, 0x00, 0x24, 0x00, 0x22, 0x04, 0x21,
+ 0x20, 0x1c, 0x01, 0xf0, 0x6c, 0xf8, 0x01, 0x34,
+ 0x24, 0x06, 0x24, 0x0e, 0x04, 0x2c, 0xf5, 0xd3,
+ 0x28, 0x69, 0xff, 0xf7, 0x86, 0xff, 0x3c, 0x00,
+ 0x64, 0xb9, 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00,
+ 0x40, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x0e, 0x1c, 0x07, 0x4c, 0x17, 0x1c, 0x01, 0x21,
+ 0x20, 0x69, 0xff, 0xf7, 0xd3, 0xfe, 0x3a, 0x1c,
+ 0x31, 0x1c, 0x28, 0x1c, 0x01, 0xf0, 0x52, 0xf8,
+ 0x20, 0x69, 0xff, 0xf7, 0x71, 0xff, 0xf8, 0xbd,
+ 0x40, 0x7c, 0x01, 0x00, 0xff, 0xb5, 0x89, 0xb0,
+ 0x06, 0x1c, 0x16, 0x98, 0x1d, 0x1c, 0x00, 0x28,
+ 0x3c, 0x00, 0xa0, 0xb9, 0x00, 0x00, 0x01, 0xd0,
+ 0x29, 0x48, 0x14, 0x90, 0x28, 0x68, 0x00, 0x88,
+ 0x00, 0x06, 0x80, 0x0e, 0x20, 0x28, 0x01, 0xd0,
+ 0x14, 0x28, 0x17, 0xd1, 0x0a, 0xaa, 0x18, 0x24,
+ 0x18, 0x21, 0x05, 0xca, 0xff, 0xf7, 0x77, 0xf9,
+ 0x07, 0x1c, 0x28, 0x1c, 0x01, 0x89, 0xa1, 0x42,
+ 0x02, 0xdd, 0x00, 0x68, 0x01, 0x19, 0x0b, 0xe0,
+ 0xc0, 0x68, 0x64, 0x1a, 0x00, 0x28, 0xf5, 0xd1,
+ 0x0f, 0x21, 0x3c, 0x00, 0xdc, 0xb9, 0x00, 0x00,
+ 0x86, 0x20, 0xf5, 0xf7, 0x61, 0xfc, 0x00, 0x21,
+ 0x01, 0xe0, 0x00, 0x21, 0x00, 0x27, 0x18, 0x48,
+ 0x08, 0x90, 0x80, 0x79, 0x07, 0x90, 0x0c, 0x20,
+ 0x16, 0x4a, 0x70, 0x43, 0x80, 0x18, 0x04, 0x79,
+ 0x04, 0x91, 0x12, 0x99, 0x15, 0x98, 0x14, 0x9a,
+ 0x01, 0x91, 0x03, 0x90, 0x05, 0x97, 0x00, 0x95,
+ 0x0a, 0xab, 0x02, 0x92, 0x21, 0x1c, 0x30, 0x1c,
+ 0x0c, 0xcb, 0xf7, 0xf7, 0x3c, 0x00, 0x18, 0xba,
+ 0x00, 0x00, 0x03, 0xf9, 0x01, 0x25, 0xb5, 0x40,
+ 0x0c, 0x4e, 0x08, 0x3e, 0x30, 0x78, 0x28, 0x40,
+ 0x06, 0xd0, 0x20, 0x1c, 0x00, 0xf0, 0xc9, 0xfd,
+ 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x03, 0xe0,
+ 0x20, 0x1c, 0x13, 0x99, 0x00, 0xf0, 0x43, 0xff,
+ 0x07, 0xa9, 0x03, 0xc9, 0x88, 0x71, 0x0d, 0xb0,
+ 0xf0, 0xbd, 0x95, 0x24, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00,
+ 0x54, 0xba, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0c, 0x23, 0x09, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x00, 0x79, 0x05, 0x1c, 0x00, 0xf0, 0x92, 0xfe,
+ 0x28, 0x1c, 0xf7, 0xf7, 0xc7, 0xf8, 0x01, 0x20,
+ 0x03, 0x4a, 0xa0, 0x40, 0x08, 0x3a, 0x11, 0x78,
+ 0x81, 0x43, 0x11, 0x70, 0xb0, 0xbd, 0x00, 0x00,
+ 0x74, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c,
+ 0x20, 0x78, 0x00, 0x28, 0x03, 0xd1, 0x1a, 0x21,
+ 0x3c, 0x00, 0x90, 0xba, 0x00, 0x00, 0x86, 0x20,
+ 0xf5, 0xf7, 0x07, 0xfc, 0x20, 0x78, 0x10, 0xbd,
+ 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, 0x2c, 0x63,
+ 0x01, 0x00, 0x80, 0xb5, 0xf6, 0xf7, 0xd1, 0xfe,
+ 0x00, 0xf0, 0x1b, 0xf9, 0x80, 0xbd, 0xfe, 0xb5,
+ 0x01, 0x68, 0x05, 0x1c, 0x0c, 0x68, 0x0e, 0x1c,
+ 0x21, 0x78, 0x88, 0x07, 0x71, 0xd1, 0x68, 0x69,
+ 0xc2, 0x07, 0x3c, 0x00, 0xcc, 0xba, 0x00, 0x00,
+ 0x6e, 0xd5, 0x80, 0x07, 0x6d, 0xd5, 0xe8, 0x7a,
+ 0xc2, 0x07, 0x08, 0x07, 0x09, 0x09, 0x02, 0x91,
+ 0x45, 0x49, 0x80, 0x0f, 0xd2, 0x0f, 0x00, 0x28,
+ 0x4f, 0x68, 0x05, 0xd0, 0x01, 0x28, 0x09, 0xd0,
+ 0x02, 0x28, 0x21, 0xd0, 0x03, 0x28, 0x5b, 0xd1,
+ 0xff, 0x23, 0x20, 0x1c, 0xa9, 0x7a, 0xf4, 0xf7,
+ 0x74, 0xfc, 0x55, 0xe0, 0x02, 0x98, 0x0b, 0x28,
+ 0x0a, 0xd0, 0x0c, 0x28, 0x3c, 0x00, 0x08, 0xbb,
+ 0x00, 0x00, 0x0f, 0xd0, 0x0d, 0x28, 0x4e, 0xd1,
+ 0x39, 0x4f, 0xf8, 0x68, 0xf4, 0xf7, 0x61, 0xfc,
+ 0x00, 0x20, 0xc0, 0x43, 0x5a, 0xe0, 0x35, 0x4f,
+ 0xa9, 0x7a, 0xbb, 0x68, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x5b, 0xfc, 0x40, 0xe0, 0x32, 0x4f, 0x38, 0x69,
+ 0xf4, 0xf7, 0x53, 0xfc, 0x3b, 0xe0, 0x00, 0x21,
+ 0x01, 0x91, 0x02, 0x99, 0x00, 0x20, 0xff, 0x23,
+ 0x09, 0x07, 0x01, 0xd4, 0x01, 0x20, 0x3c, 0x00,
+ 0x44, 0xbb, 0x00, 0x00, 0x13, 0xe0, 0x31, 0x89,
+ 0x19, 0x29, 0x01, 0xd3, 0x26, 0x7e, 0x07, 0xe0,
+ 0x15, 0x29, 0x04, 0xd3, 0x18, 0x26, 0x71, 0x1a,
+ 0x49, 0x19, 0x0e, 0x7b, 0x00, 0xe0, 0x00, 0x26,
+ 0xb1, 0x06, 0x02, 0xd4, 0x01, 0x20, 0x73, 0x07,
+ 0x5b, 0x0f, 0x01, 0x21, 0x01, 0x91, 0x00, 0x28,
+ 0x03, 0xd0, 0xa9, 0x7a, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x36, 0xfc, 0x01, 0x99, 0x01, 0x29, 0x15, 0xd1,
+ 0x3c, 0x00, 0x80, 0xbb, 0x00, 0x00, 0xf0, 0x06,
+ 0xc6, 0x0f, 0x20, 0x88, 0x1b, 0x4f, 0xe4, 0x8a,
+ 0xf9, 0x6b, 0x00, 0x05, 0xc0, 0x0f, 0x00, 0x29,
+ 0x1a, 0xd0, 0x4b, 0x1c, 0x18, 0xd0, 0x00, 0x2e,
+ 0x0a, 0xd0, 0x00, 0x28, 0x08, 0xd0, 0x38, 0x88,
+ 0x84, 0x42, 0x13, 0xd0, 0x02, 0x98, 0x0c, 0x28,
+ 0x01, 0xe0, 0x1d, 0xe0, 0x12, 0xe0, 0x0d, 0xd0,
+ 0x08, 0x1c, 0x01, 0xf0, 0x76, 0xf9, 0x00, 0x28,
+ 0x03, 0xd1, 0x3c, 0x00, 0xbc, 0xbb, 0x00, 0x00,
+ 0x00, 0xf0, 0xa6, 0xfa, 0xf4, 0xf7, 0x0a, 0xfc,
+ 0x00, 0x20, 0xc0, 0x43, 0xf8, 0x63, 0x00, 0x2e,
+ 0x0d, 0xd0, 0x3c, 0x80, 0x00, 0x20, 0xf8, 0x63,
+ 0x09, 0xe0, 0x20, 0x88, 0x00, 0x06, 0x80, 0x0e,
+ 0x20, 0x28, 0x04, 0xd1, 0x04, 0x4f, 0x20, 0x1c,
+ 0xb9, 0x6a, 0xf4, 0xf7, 0xf8, 0xfb, 0x29, 0x1c,
+ 0x02, 0x48, 0xfb, 0xf7, 0xef, 0xff, 0xfe, 0xbd,
+ 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0xf8, 0xbb,
+ 0x00, 0x00, 0xa5, 0x9a, 0x00, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x00, 0x78, 0x00, 0x21, 0x00, 0xf0,
+ 0xfc, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x18, 0x63,
+ 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28,
+ 0x1a, 0x68, 0x00, 0xd0, 0x01, 0x1c, 0x10, 0x1c,
+ 0x19, 0x60, 0x70, 0x47, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x05, 0x48,
+ 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, 0x3c, 0x00,
+ 0x34, 0xbc, 0x00, 0x00, 0x04, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0xc0, 0x69, 0xf4, 0xf7, 0xcc, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00,
+ 0x94, 0x46, 0x01, 0x00, 0x02, 0x1c, 0x06, 0x48,
+ 0x80, 0xb5, 0x81, 0x62, 0x82, 0x60, 0x00, 0x7f,
+ 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x80, 0x69, 0xf4, 0xf7, 0xb9, 0xfb, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, 0x01, 0x00,
+ 0x3c, 0x00, 0x70, 0xbc, 0x00, 0x00, 0x80, 0xb5,
+ 0x00, 0x20, 0x00, 0xf0, 0x3c, 0xfb, 0x00, 0x20,
+ 0x00, 0xf0, 0x6d, 0xfa, 0x00, 0xf0, 0x65, 0xfa,
+ 0x04, 0x49, 0xc8, 0x6a, 0x01, 0x30, 0xc8, 0x62,
+ 0x08, 0x1f, 0x00, 0x88, 0x07, 0xf0, 0xc1, 0xf8,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48,
+ 0x80, 0xb5, 0x00, 0x21, 0x01, 0x77, 0xc1, 0x6a,
+ 0x01, 0x31, 0xc1, 0x62, 0x04, 0x38, 0x00, 0x88,
+ 0x07, 0xf0, 0x3c, 0x00, 0xac, 0xbc, 0x00, 0x00,
+ 0xb3, 0xf8, 0x03, 0xf0, 0xd1, 0xf9, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x05, 0xf0,
+ 0xe9, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x28,
+ 0x03, 0xd1, 0x01, 0x20, 0x04, 0xf0, 0x22, 0xfa,
+ 0x80, 0xbd, 0x01, 0x20, 0x03, 0xf0, 0xe6, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x03, 0x49, 0x01, 0x20,
+ 0x49, 0x78, 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbc,
+ 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x70, 0xb5,
+ 0x13, 0x4d, 0x28, 0x78, 0x00, 0x28, 0x20, 0xd1,
+ 0x01, 0x21, 0x2e, 0x1c, 0x70, 0x68, 0xff, 0xf7,
+ 0x12, 0xfd, 0x00, 0x21, 0x07, 0x20, 0x06, 0xf0,
+ 0x2a, 0xfb, 0x0d, 0x48, 0x00, 0x24, 0x04, 0x71,
+ 0x04, 0xf0, 0xed, 0xf8, 0x06, 0xf0, 0xd5, 0xf9,
+ 0x01, 0x20, 0x28, 0x70, 0x0a, 0x48, 0x04, 0x60,
+ 0x44, 0x60, 0xf6, 0xf7, 0x4c, 0xfd, 0x3c, 0x00,
+ 0x24, 0xbd, 0x00, 0x00, 0xf7, 0xf7, 0x5e, 0xf8,
+ 0xff, 0xf7, 0xa2, 0xff, 0x00, 0xf0, 0xa8, 0xfd,
+ 0x05, 0x48, 0x71, 0x68, 0x03, 0xf0, 0x20, 0xfb,
+ 0x01, 0x20, 0x70, 0xbd, 0x2c, 0x63, 0x01, 0x00,
+ 0x50, 0x00, 0x07, 0x00, 0x80, 0x00, 0x07, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0xb0, 0xb5, 0x1e, 0x4c,
+ 0x20, 0x78, 0x01, 0x28, 0x35, 0xd1, 0x25, 0x1c,
+ 0x69, 0x68, 0x1c, 0x48, 0x03, 0xf0, 0x20, 0xfb,
+ 0x3c, 0x00, 0x60, 0xbd, 0x00, 0x00, 0x04, 0xf0,
+ 0xf0, 0xf8, 0x1a, 0x48, 0x01, 0x68, 0x49, 0x08,
+ 0x49, 0x00, 0x01, 0x60, 0x01, 0x68, 0x01, 0x22,
+ 0x11, 0x43, 0x01, 0x60, 0x00, 0xf0, 0x2b, 0xfe,
+ 0x00, 0xf0, 0x1b, 0xfc, 0x06, 0xf0, 0x99, 0xf8,
+ 0xf6, 0xf7, 0x29, 0xfe, 0xf6, 0xf7, 0x2d, 0xfc,
+ 0x00, 0x20, 0x20, 0x70, 0xff, 0xf7, 0x83, 0xff,
+ 0x00, 0xf0, 0x8b, 0xfd, 0x0f, 0x48, 0x81, 0x78,
+ 0x08, 0x22, 0x3c, 0x00, 0x9c, 0xbd, 0x00, 0x00,
+ 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43,
+ 0x81, 0x70, 0x0c, 0x49, 0x10, 0x20, 0x08, 0x71,
+ 0x68, 0x68, 0xff, 0xf7, 0x5f, 0xfd, 0xf7, 0xf7,
+ 0x39, 0xf8, 0xf6, 0xf7, 0x4d, 0xfd, 0x01, 0x21,
+ 0x07, 0x20, 0x06, 0xf0, 0xcd, 0xfa, 0x01, 0x20,
+ 0xb0, 0xbd, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0xf0, 0x00, 0x07, 0x00,
+ 0x00, 0x00, 0x07, 0x00, 0x3c, 0x00, 0xd8, 0xbd,
+ 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0x89, 0x7a, 0x01, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0xb0, 0xb5, 0x15, 0x4d, 0x04, 0x1c,
+ 0x28, 0x7a, 0x00, 0x28, 0x20, 0xd1, 0xf9, 0xf7,
+ 0x00, 0xfc, 0x02, 0x28, 0x1c, 0xd1, 0x01, 0x20,
+ 0x28, 0x72, 0xe8, 0x68, 0x00, 0x28, 0x10, 0xd0,
+ 0x20, 0x68, 0x29, 0x68, 0x08, 0x60, 0x3c, 0x00,
+ 0x14, 0xbe, 0x00, 0x00, 0x69, 0x68, 0x0d, 0x48,
+ 0x03, 0xf0, 0xc2, 0xfa, 0x01, 0x21, 0x68, 0x68,
+ 0xff, 0xf7, 0xc8, 0xfc, 0x00, 0x22, 0x24, 0x20,
+ 0x61, 0x68, 0x07, 0xf0, 0xcf, 0xfb, 0xb0, 0xbd,
+ 0x00, 0x20, 0x28, 0x72, 0x21, 0x68, 0x01, 0x20,
+ 0xf4, 0xf7, 0xcf, 0xfa, 0xb0, 0xbd, 0x00, 0x20,
+ 0x21, 0x68, 0xf4, 0xf7, 0xca, 0xfa, 0xb0, 0xbd,
+ 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x3c, 0x00, 0x50, 0xbe, 0x00, 0x00, 0x04, 0x48,
+ 0x80, 0xb5, 0x00, 0x7a, 0x01, 0x28, 0x02, 0xd1,
+ 0x00, 0x20, 0x02, 0xf0, 0xf0, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x28, 0x07, 0xd0, 0x80, 0x28, 0x09, 0xd1,
+ 0x07, 0x48, 0x00, 0x7a, 0x00, 0x28, 0x04, 0xd0,
+ 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x02, 0xf0,
+ 0xde, 0xfe, 0x80, 0xbd, 0x0e, 0x21, 0x24, 0x20,
+ 0xf5, 0xf7, 0x3c, 0x00, 0x8c, 0xbe, 0x00, 0x00,
+ 0x0b, 0xfa, 0x80, 0xbd, 0x04, 0x7a, 0x01, 0x00,
+ 0xf8, 0xb5, 0x3a, 0x4e, 0x05, 0x1c, 0xb0, 0x7a,
+ 0x00, 0x28, 0x69, 0xd1, 0xf9, 0xf7, 0xae, 0xfb,
+ 0x02, 0x28, 0x65, 0xd1, 0x36, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x61, 0xd0, 0x35, 0x48, 0x71, 0x68,
+ 0x03, 0xf0, 0x74, 0xfa, 0x01, 0x21, 0x70, 0x68,
+ 0xff, 0xf7, 0x7a, 0xfc, 0x6c, 0x20, 0xf5, 0xf7,
+ 0xb9, 0xfc, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0xbe,
+ 0x00, 0x00, 0x6c, 0x21, 0xf4, 0xf7, 0xe7, 0xfa,
+ 0x30, 0x68, 0x2c, 0x22, 0x04, 0x60, 0x29, 0x68,
+ 0x81, 0x60, 0x69, 0x68, 0xc1, 0x60, 0x00, 0x21,
+ 0x11, 0x54, 0x81, 0x62, 0xa9, 0x68, 0x00, 0x29,
+ 0x02, 0xd0, 0xe9, 0x68, 0x01, 0x61, 0x05, 0xe0,
+ 0x06, 0xf0, 0x5d, 0xff, 0x69, 0x68, 0x40, 0x18,
+ 0x31, 0x68, 0x08, 0x61, 0x70, 0x68, 0xff, 0xf7,
+ 0x14, 0xfd, 0x69, 0x21, 0x08, 0x55, 0x3c, 0x00,
+ 0x04, 0xbf, 0x00, 0x00, 0x00, 0x20, 0xf9, 0xf7,
+ 0x09, 0xfb, 0x01, 0x27, 0x3b, 0x1c, 0x06, 0x1c,
+ 0x22, 0x1c, 0x24, 0x32, 0x00, 0x21, 0xf9, 0xf7,
+ 0x79, 0xfb, 0x1c, 0x48, 0x03, 0x21, 0x00, 0x88,
+ 0x89, 0x03, 0x08, 0x43, 0x21, 0x1c, 0x40, 0x31,
+ 0x00, 0x91, 0x48, 0x83, 0x18, 0x48, 0x10, 0x21,
+ 0x60, 0x60, 0x18, 0x48, 0xa0, 0x60, 0xa7, 0x63,
+ 0x67, 0x63, 0x00, 0x20, 0xf5, 0xf7, 0x4c, 0xfb,
+ 0x3c, 0x00, 0x40, 0xbf, 0x00, 0x00, 0xe0, 0x60,
+ 0x02, 0x89, 0x00, 0x99, 0xca, 0x83, 0x07, 0x68,
+ 0x31, 0x1c, 0x38, 0x1d, 0x27, 0x61, 0xfe, 0xf7,
+ 0x8e, 0xfe, 0x38, 0x1c, 0x0a, 0x30, 0x0f, 0x49,
+ 0xfe, 0xf7, 0x89, 0xfe, 0xa4, 0x20, 0x38, 0x80,
+ 0x00, 0x20, 0x04, 0xf0, 0xde, 0xfb, 0x00, 0x22,
+ 0x1f, 0x20, 0x69, 0x68, 0x07, 0xf0, 0x2d, 0xfb,
+ 0xf8, 0xbd, 0xff, 0xe7, 0x00, 0x20, 0x29, 0x68,
+ 0xf4, 0xf7, 0x3c, 0x00, 0x7c, 0xbf, 0x00, 0x00,
+ 0x2e, 0xfa, 0xf8, 0xe7, 0x14, 0x7a, 0x01, 0x00,
+ 0x80, 0x5a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xfa, 0x60, 0x01, 0x00, 0x99, 0xec, 0x00, 0x00,
+ 0x15, 0xed, 0x00, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0x06, 0x48, 0x80, 0xb5, 0x81, 0x7a, 0x00, 0x29,
+ 0x07, 0xd0, 0x00, 0x68, 0x04, 0x22, 0x20, 0x30,
+ 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0,
+ 0x6b, 0xfd, 0x80, 0xbd, 0x3c, 0x00, 0xb8, 0xbf,
+ 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x4c, 0xa0, 0x7a, 0x01, 0x28, 0x03, 0xd1,
+ 0x06, 0xf0, 0xf1, 0xfe, 0x21, 0x68, 0x88, 0x61,
+ 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0x03, 0x1c,
+ 0x08, 0x1c, 0x1f, 0x49, 0x70, 0xb5, 0x0a, 0x68,
+ 0x01, 0x2b, 0x1c, 0xd0, 0x80, 0x2b, 0x05, 0xd0,
+ 0x83, 0x2b, 0x30, 0xd1, 0x88, 0x7a, 0x00, 0x28,
+ 0x14, 0xd0, 0x29, 0xe0, 0x53, 0x69, 0x3c, 0x00,
+ 0xf4, 0xbf, 0x00, 0x00, 0x00, 0x2b, 0x0e, 0xd0,
+ 0x94, 0x69, 0xd5, 0x69, 0x2e, 0x1b, 0x0c, 0x69,
+ 0x5d, 0x1b, 0x36, 0x1b, 0xb6, 0x10, 0xa4, 0x19,
+ 0x0c, 0x61, 0xcc, 0x68, 0x2d, 0x1b, 0xad, 0x10,
+ 0x64, 0x19, 0xcc, 0x60, 0x93, 0x61, 0x02, 0xf0,
+ 0x81, 0xfd, 0x70, 0xbd, 0x02, 0x28, 0x12, 0xd1,
+ 0x90, 0x6a, 0x0c, 0x1c, 0x00, 0x28, 0xf8, 0xd0,
+ 0x07, 0xf0, 0x0e, 0xfa, 0xa0, 0x7a, 0x01, 0x28,
+ 0x3c, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xf3, 0xd1,
+ 0x20, 0x68, 0x81, 0x6a, 0x00, 0x29, 0xef, 0xd1,
+ 0x20, 0x30, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x70, 0xbd, 0x02, 0xf0, 0x21, 0xfd,
+ 0x70, 0xbd, 0x0e, 0x21, 0x1f, 0x20, 0xf5, 0xf7,
+ 0x28, 0xf9, 0x70, 0xbd, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0x02, 0x49, 0x0c, 0x31, 0x03, 0xc9,
+ 0x40, 0x18, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0x3c, 0x00, 0x6c, 0xc0, 0x00, 0x00,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x04, 0x22,
+ 0x20, 0x30, 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73,
+ 0x07, 0xf0, 0xe4, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x4c,
+ 0x0e, 0x1c, 0xa1, 0x7a, 0x00, 0x29, 0x1c, 0xd0,
+ 0x21, 0x68, 0x08, 0x61, 0x07, 0xf0, 0x32, 0xfa,
+ 0x00, 0x28, 0x17, 0xd0, 0x20, 0x68, 0x00, 0x25,
+ 0x05, 0x62, 0x00, 0x22, 0x3c, 0x00, 0xa8, 0xc0,
+ 0x00, 0x00, 0x83, 0x21, 0x1f, 0x20, 0x07, 0xf0,
+ 0x94, 0xfa, 0x60, 0x68, 0xff, 0xf7, 0x03, 0xfc,
+ 0x21, 0x68, 0x04, 0x22, 0x20, 0x31, 0x08, 0x7b,
+ 0x2b, 0x1c, 0x90, 0x43, 0x08, 0x73, 0x31, 0x1c,
+ 0x00, 0x22, 0x1f, 0x20, 0x07, 0xf0, 0x61, 0xfb,
+ 0x70, 0xbd, 0x20, 0x68, 0x08, 0x22, 0x20, 0x30,
+ 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0,
+ 0xd6, 0xfc, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0xc0, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0x77, 0xfc, 0x00, 0xf0,
+ 0x6f, 0xfc, 0x00, 0xf0, 0x29, 0xff, 0x00, 0xf0,
+ 0x5d, 0xfa, 0x00, 0xf0, 0xc5, 0xf8, 0x00, 0xf0,
+ 0x85, 0xff, 0x80, 0xbd, 0x80, 0xb5, 0xfa, 0xf7,
+ 0x85, 0xfa, 0x80, 0xbd, 0x01, 0x48, 0xc0, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00,
+ 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c,
+ 0x3c, 0x00, 0x20, 0xc1, 0x00, 0x00, 0x02, 0x48,
+ 0xc1, 0x60, 0x70, 0x47, 0x00, 0x00, 0x81, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x48,
+ 0x02, 0x49, 0xc8, 0x60, 0x70, 0x47, 0x81, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x49,
+ 0x88, 0x61, 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x88, 0x61,
+ 0x70, 0x47, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x3c, 0x00, 0x5c, 0xc1, 0x00, 0x00,
+ 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0xc1, 0x61,
+ 0x70, 0x47, 0x00, 0x00, 0x89, 0x75, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28,
+ 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x81, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0x8d, 0x75, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28,
+ 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x01, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc1,
+ 0x00, 0x00, 0x91, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0,
+ 0x01, 0x1c, 0x02, 0x48, 0x01, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x01, 0x48, 0x02, 0x49, 0x08, 0x61,
+ 0x70, 0x47, 0x81, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0x80, 0x2a,
+ 0x80, 0xb5, 0x02, 0xd1, 0x00, 0xf0, 0x3c, 0x00,
+ 0xd4, 0xc1, 0x00, 0x00, 0x07, 0xf8, 0x80, 0xbd,
+ 0x1e, 0x21, 0x21, 0x20, 0xf5, 0xf7, 0x62, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x10, 0x4d,
+ 0x04, 0x1c, 0xa8, 0x6b, 0x01, 0x30, 0xa8, 0x63,
+ 0x69, 0x6b, 0x09, 0x1a, 0x28, 0x1c, 0x00, 0x6b,
+ 0x0c, 0x29, 0x03, 0xd9, 0x00, 0x21, 0xff, 0xf7,
+ 0x91, 0xfa, 0x03, 0xe0, 0x08, 0x29, 0x01, 0xd1,
+ 0xff, 0xf7, 0x32, 0xfb, 0x20, 0x1c, 0x00, 0xf0,
+ 0x3c, 0x00, 0x10, 0xc2, 0x00, 0x00, 0x4d, 0xf9,
+ 0x60, 0x69, 0x40, 0x07, 0x01, 0xd5, 0x03, 0xf0,
+ 0x0c, 0xfc, 0x20, 0x1c, 0xe9, 0x6a, 0xf4, 0xf7,
+ 0xdb, 0xf8, 0xb0, 0xbd, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0,
+ 0x01, 0x1c, 0x02, 0x48, 0x41, 0x62, 0x70, 0x47,
+ 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x6c,
+ 0x00, 0x29, 0x3c, 0x00, 0x4c, 0xc2, 0x00, 0x00,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0xe1, 0x6b, 0x00, 0x29, 0x01, 0xd1, 0xe0, 0x63,
+ 0x04, 0xe0, 0x81, 0x42, 0x02, 0xd0, 0x00, 0x20,
+ 0xc0, 0x43, 0xf8, 0xe7, 0x06, 0xf0, 0x9c, 0xfd,
+ 0x20, 0x64, 0x10, 0xbd, 0x28, 0x7a, 0x01, 0x00,
+ 0x01, 0x48, 0x00, 0x6c, 0x70, 0x47, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x88, 0xc2,
+ 0x00, 0x00, 0x05, 0x49, 0x80, 0xb5, 0x00, 0x20,
+ 0x48, 0x63, 0x88, 0x63, 0xff, 0x21, 0x09, 0x31,
+ 0x15, 0x22, 0x10, 0x20, 0xf6, 0xf7, 0xfb, 0xf9,
+ 0x80, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48,
+ 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, 0xc1, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00,
+ 0xc4, 0xc2, 0x00, 0x00, 0x02, 0x48, 0xc1, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49,
+ 0x00, 0x28, 0x5a, 0x68, 0x00, 0xd0, 0x01, 0x1c,
+ 0x10, 0x1c, 0x59, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0xc9, 0x75, 0x00, 0x00,
+ 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c,
+ 0x02, 0x48, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00,
+ 0x3c, 0x00, 0x00, 0xc3, 0x00, 0x00, 0xcd, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x0f, 0x4b,
+ 0x10, 0xb5, 0xd9, 0x68, 0x00, 0x29, 0x19, 0xd0,
+ 0x0e, 0x4c, 0x00, 0x21, 0xca, 0x00, 0x12, 0x19,
+ 0x40, 0x3a, 0xd2, 0x6b, 0x82, 0x42, 0x02, 0xda,
+ 0x01, 0x31, 0x03, 0x29, 0xf6, 0xd3, 0x48, 0x1c,
+ 0x1a, 0x78, 0x00, 0x06, 0x00, 0x0e, 0x90, 0x42,
+ 0x08, 0xd0, 0x18, 0x70, 0x08, 0x06, 0x00, 0x0e,
+ 0x04, 0x1c, 0x3c, 0x00, 0x3c, 0xc3, 0x00, 0x00,
+ 0xf6, 0xf7, 0xba, 0xfa, 0x20, 0x1c, 0x03, 0xf0,
+ 0x1b, 0xfd, 0x10, 0xbd, 0x18, 0x63, 0x01, 0x00,
+ 0x3c, 0x42, 0x01, 0x00, 0x10, 0xb5, 0x14, 0x4c,
+ 0xe1, 0x68, 0x00, 0x29, 0x22, 0xd0, 0x21, 0x78,
+ 0x12, 0x4b, 0xca, 0x00, 0xd2, 0x18, 0x40, 0x3a,
+ 0xd3, 0x6b, 0x83, 0x42, 0x02, 0xda, 0x48, 0x1c,
+ 0x20, 0x70, 0x0b, 0xe0, 0x92, 0x6b, 0x82, 0x42,
+ 0x14, 0xdd, 0xff, 0x31, 0x3c, 0x00, 0x78, 0xc3,
+ 0x00, 0x00, 0x08, 0x06, 0x00, 0x0e, 0x20, 0x70,
+ 0x03, 0xd1, 0x19, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x8e, 0xff, 0x20, 0x78, 0xff, 0x30, 0x00, 0x06,
+ 0x00, 0x0e, 0xf6, 0xf7, 0x90, 0xfa, 0x20, 0x78,
+ 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0,
+ 0xee, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63,
+ 0x01, 0x00, 0x3c, 0x42, 0x01, 0x00, 0x09, 0x48,
+ 0x00, 0x21, 0x01, 0x81, 0x41, 0x81, 0x3c, 0x00,
+ 0xb4, 0xc3, 0x00, 0x00, 0x81, 0x81, 0xc1, 0x81,
+ 0x07, 0x4a, 0x02, 0x80, 0x01, 0x23, 0xdb, 0x02,
+ 0x43, 0x80, 0x82, 0x80, 0xc2, 0x80, 0x41, 0x76,
+ 0x31, 0x21, 0x81, 0x76, 0x01, 0x21, 0x01, 0x76,
+ 0x70, 0x47, 0x00, 0x00, 0x30, 0x80, 0x07, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20,
+ 0xf6, 0xf7, 0xf8, 0xf8, 0x01, 0x20, 0xf6, 0xf7,
+ 0xdb, 0xfc, 0x01, 0x20, 0xf6, 0xf7, 0x5a, 0xfa,
+ 0x3c, 0x00, 0xf0, 0xc3, 0x00, 0x00, 0x01, 0x20,
+ 0x00, 0xf0, 0xf1, 0xfd, 0x01, 0x20, 0xf7, 0xf7,
+ 0xc6, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5,
+ 0x11, 0x4c, 0x00, 0x29, 0x07, 0xd1, 0x00, 0x28,
+ 0x02, 0xd1, 0x01, 0x20, 0xe0, 0x60, 0x06, 0xe0,
+ 0x00, 0x21, 0xe1, 0x60, 0x03, 0xe0, 0x01, 0x29,
+ 0x07, 0xd1, 0x00, 0x28, 0x01, 0xd0, 0x20, 0x70,
+ 0x03, 0xe0, 0x18, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x3c, 0xff, 0x3c, 0x00, 0x2c, 0xc4, 0x00, 0x00,
+ 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e,
+ 0xf6, 0xf7, 0x3e, 0xfa, 0x20, 0x78, 0xff, 0x30,
+ 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x9c, 0xfc,
+ 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, 0x01, 0x00,
+ 0x05, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x88, 0x42,
+ 0x05, 0xd0, 0xfe, 0xf7, 0xff, 0xfb, 0x00, 0xf0,
+ 0x87, 0xfa, 0xff, 0xf7, 0x2b, 0xfc, 0x80, 0xbd,
+ 0xa8, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x68, 0xc4,
+ 0x00, 0x00, 0x01, 0x49, 0x48, 0x70, 0x70, 0x47,
+ 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x01, 0x49,
+ 0xc8, 0x60, 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b,
+ 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x78,
+ 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47,
+ 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x04, 0x4a,
+ 0x00, 0x28, 0x02, 0xd0, 0x90, 0x69, 0x01, 0x30,
+ 0x90, 0x61, 0xd0, 0x69, 0x40, 0x18, 0x3c, 0x00,
+ 0xa4, 0xc4, 0x00, 0x00, 0xd0, 0x61, 0x70, 0x47,
+ 0x90, 0x5c, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0x00, 0x68, 0x05, 0x68, 0x28, 0x1c, 0xfe, 0xf7,
+ 0x27, 0xff, 0x07, 0x1c, 0x60, 0x69, 0x15, 0x4e,
+ 0xc0, 0x07, 0xc0, 0x0f, 0x21, 0xd0, 0x01, 0xaa,
+ 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x12, 0xff,
+ 0x38, 0x78, 0xc0, 0x07, 0x0c, 0xd4, 0x60, 0x69,
+ 0x80, 0x07, 0x08, 0xd5, 0x00, 0xab, 0x18, 0x7a,
+ 0x3c, 0x00, 0xe0, 0xc4, 0x00, 0x00, 0x00, 0x28,
+ 0x01, 0xd0, 0x02, 0x28, 0x02, 0xd1, 0x70, 0x6a,
+ 0x01, 0x30, 0x70, 0x62, 0xfe, 0xbd, 0x00, 0xab,
+ 0x18, 0x7a, 0x00, 0x28, 0x01, 0xd0, 0x02, 0x28,
+ 0xf8, 0xd1, 0x70, 0x6a, 0x01, 0x30, 0x70, 0x62,
+ 0xb0, 0x6a, 0x01, 0x30, 0xb0, 0x62, 0xf1, 0xe7,
+ 0xf0, 0x6a, 0x01, 0x30, 0xf0, 0x62, 0xed, 0xe7,
+ 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x02, 0x49,
+ 0x48, 0x69, 0x3c, 0x00, 0x1c, 0xc5, 0x00, 0x00,
+ 0x01, 0x30, 0x48, 0x61, 0x70, 0x47, 0x00, 0x00,
+ 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x01, 0x1c, 0x40, 0x31,
+ 0x10, 0xb5, 0x0a, 0x8b, 0x12, 0x07, 0x92, 0x0f,
+ 0x01, 0x2a, 0x33, 0xd0, 0x4a, 0x78, 0x1a, 0x49,
+ 0x04, 0x1c, 0x60, 0x34, 0x00, 0x2a, 0x0b, 0x6a,
+ 0x22, 0xd1, 0xe2, 0x79, 0x01, 0x2a, 0x02, 0xd9,
+ 0xcc, 0x68, 0x01, 0x34, 0x3c, 0x00, 0x58, 0xc5,
+ 0x00, 0x00, 0xcc, 0x60, 0x02, 0x2a, 0x02, 0xd9,
+ 0x0c, 0x69, 0x01, 0x34, 0x0c, 0x61, 0x0c, 0x68,
+ 0x01, 0x34, 0x0c, 0x60, 0x44, 0x6b, 0x00, 0x2c,
+ 0x03, 0xd0, 0x04, 0x69, 0x24, 0x7c, 0xe4, 0x07,
+ 0x02, 0xd5, 0x4c, 0x68, 0x01, 0x34, 0x4c, 0x60,
+ 0x80, 0x6b, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x6b,
+ 0x01, 0x30, 0x08, 0x63, 0x00, 0x2a, 0x0c, 0xd0,
+ 0x98, 0x18, 0x01, 0x38, 0x08, 0xe0, 0x3c, 0x00,
+ 0x94, 0xc5, 0x00, 0x00, 0x01, 0x2a, 0x01, 0xd0,
+ 0x02, 0x2a, 0x02, 0xd1, 0x88, 0x68, 0x01, 0x30,
+ 0x88, 0x60, 0xe0, 0x79, 0x18, 0x18, 0x08, 0x62,
+ 0x10, 0xbd, 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, 0x0a, 0x20,
+ 0x08, 0x81, 0x70, 0x47, 0xc4, 0x7a, 0x01, 0x00,
+ 0xf0, 0xb5, 0x32, 0x4f, 0x04, 0x1c, 0x78, 0x78,
+ 0x85, 0xb0, 0xc0, 0x07, 0xc0, 0x0f, 0x03, 0x90,
+ 0x3c, 0x00, 0xd0, 0xc5, 0x00, 0x00, 0xb8, 0x78,
+ 0x02, 0x90, 0x01, 0x20, 0xa0, 0x40, 0x04, 0x90,
+ 0x39, 0x1c, 0x88, 0x70, 0x2c, 0x48, 0x00, 0x88,
+ 0x06, 0xf0, 0x0b, 0xfc, 0x01, 0x90, 0xfe, 0xf7,
+ 0xae, 0xfc, 0x04, 0x30, 0x29, 0x4e, 0xa5, 0x00,
+ 0x71, 0x59, 0x09, 0x79, 0x88, 0x42, 0x06, 0xd0,
+ 0xfe, 0xf7, 0xa5, 0xfc, 0x71, 0x59, 0x04, 0x30,
+ 0x08, 0x71, 0x01, 0x20, 0x78, 0x70, 0x00, 0x20,
+ 0x78, 0x70, 0x3c, 0x00, 0x0c, 0xc6, 0x00, 0x00,
+ 0x21, 0x48, 0x01, 0x21, 0x20, 0x4e, 0x30, 0x38,
+ 0x01, 0x55, 0x71, 0x59, 0x03, 0x20, 0x08, 0x70,
+ 0x06, 0xf0, 0xc6, 0xfb, 0x06, 0x1c, 0xfe, 0xf7,
+ 0x91, 0xfc, 0x36, 0x18, 0x0e, 0x36, 0x09, 0xe0,
+ 0x30, 0x1c, 0x06, 0xf0, 0xf5, 0xfa, 0x00, 0x28,
+ 0x04, 0xd0, 0x23, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x33, 0xfe, 0x03, 0xe0, 0xf6, 0xf7, 0x34, 0xfb,
+ 0x00, 0x28, 0xf1, 0xd0, 0x3c, 0x00, 0x48, 0xc6,
+ 0x00, 0x00, 0x12, 0x48, 0x13, 0x49, 0x3c, 0x38,
+ 0x00, 0x78, 0x08, 0x72, 0x20, 0x1c, 0xf4, 0xf7,
+ 0xa2, 0xfa, 0x0e, 0x4e, 0x71, 0x59, 0x08, 0x71,
+ 0x03, 0x98, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x21,
+ 0x79, 0x70, 0x09, 0x48, 0x00, 0x88, 0x01, 0x99,
+ 0x06, 0xf0, 0xbd, 0xfb, 0x02, 0x98, 0xb8, 0x70,
+ 0x09, 0x49, 0x49, 0x79, 0x04, 0x98, 0x88, 0x42,
+ 0x03, 0xd0, 0x24, 0x21, 0x86, 0x20, 0x3c, 0x00,
+ 0x84, 0xc6, 0x00, 0x00, 0xf4, 0xf7, 0x0e, 0xfe,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x50, 0x07, 0x00,
+ 0xd0, 0x79, 0x01, 0x00, 0x10, 0x7b, 0x01, 0x00,
+ 0x80, 0x80, 0x07, 0x00, 0x50, 0x80, 0x07, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x05, 0x28,
+ 0x01, 0xd3, 0xf4, 0xf7, 0x29, 0xfe, 0x05, 0x2d,
+ 0x01, 0xd3, 0xf4, 0xf7, 0x25, 0xfe, 0x0b, 0x4a,
+ 0xa8, 0x00, 0x11, 0x58, 0xa0, 0x00, 0x10, 0x58,
+ 0x3c, 0x00, 0xc0, 0xc6, 0x00, 0x00, 0x0e, 0xc9,
+ 0x0e, 0xc0, 0x06, 0x21, 0x06, 0x22, 0x06, 0x48,
+ 0x69, 0x43, 0x2a, 0x38, 0x09, 0x18, 0x62, 0x43,
+ 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, 0x0f, 0xff,
+ 0x02, 0x48, 0x30, 0x38, 0x41, 0x5d, 0x01, 0x55,
+ 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0e, 0x48, 0x0d, 0x1c, 0x80, 0x78,
+ 0x01, 0x21, 0xa1, 0x40, 0x08, 0x40, 0x03, 0xd0,
+ 0x01, 0x21, 0x3c, 0x00, 0xfc, 0xc6, 0x00, 0x00,
+ 0x86, 0x20, 0xf4, 0xf7, 0xd1, 0xfd, 0x06, 0x21,
+ 0x06, 0x22, 0x09, 0x48, 0x69, 0x43, 0x09, 0x18,
+ 0x62, 0x43, 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7,
+ 0xf1, 0xfe, 0x20, 0x1c, 0xf4, 0xf7, 0x40, 0xfa,
+ 0x03, 0x4a, 0xa1, 0x00, 0x2a, 0x32, 0x51, 0x58,
+ 0x08, 0x71, 0xb0, 0xbd, 0x00, 0x50, 0x07, 0x00,
+ 0xe6, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0x48, 0x60, 0x3c, 0x00, 0x38, 0xc7,
+ 0x00, 0x00, 0x07, 0xf0, 0x32, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7,
+ 0xd8, 0xfd, 0x07, 0x49, 0x08, 0x7a, 0x07, 0x4a,
+ 0x10, 0x70, 0x01, 0x20, 0x08, 0x72, 0xfe, 0xf7,
+ 0xf4, 0xfb, 0x04, 0x4a, 0x04, 0x30, 0xa1, 0x00,
+ 0x3c, 0x32, 0x51, 0x58, 0x08, 0x71, 0x10, 0xbd,
+ 0x00, 0x00, 0x80, 0x80, 0x07, 0x00, 0x3c, 0x00,
+ 0x74, 0xc7, 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00,
+ 0x03, 0x49, 0x80, 0xb5, 0x01, 0x20, 0x48, 0x60,
+ 0x07, 0xf0, 0x0e, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0xb4, 0xfd,
+ 0x20, 0x1c, 0xf5, 0xf7, 0x8f, 0xfe, 0x00, 0x21,
+ 0x20, 0x1c, 0xfb, 0xf7, 0x31, 0xfd, 0x01, 0x21,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x09, 0x04,
+ 0x3c, 0x00, 0xb0, 0xc7, 0x00, 0x00, 0x09, 0x0c,
+ 0x20, 0x1c, 0x04, 0xf0, 0x22, 0xfa, 0x10, 0xbd,
+ 0x00, 0x00, 0x06, 0x49, 0x01, 0x20, 0x05, 0x4b,
+ 0x88, 0x60, 0x00, 0x20, 0x3c, 0x33, 0x00, 0x21,
+ 0x82, 0x00, 0x9a, 0x58, 0x11, 0x70, 0x01, 0x30,
+ 0x05, 0x28, 0xf9, 0xdb, 0x70, 0x47, 0xd4, 0x7a,
+ 0x01, 0x00, 0x0f, 0x49, 0x38, 0xb5, 0x00, 0x20,
+ 0x88, 0x60, 0x0e, 0x48, 0x01, 0x1c, 0x20, 0x31,
+ 0x8a, 0x79, 0x3c, 0x00, 0xec, 0xc7, 0x00, 0x00,
+ 0x00, 0xab, 0x1a, 0x70, 0xc9, 0x79, 0x0a, 0x4c,
+ 0x09, 0x4d, 0x59, 0x70, 0x0c, 0x34, 0x3c, 0x35,
+ 0x00, 0x21, 0x03, 0x22, 0x63, 0x5c, 0x00, 0x2b,
+ 0x02, 0xd0, 0x8b, 0x00, 0xeb, 0x58, 0x1a, 0x70,
+ 0x01, 0x31, 0x05, 0x29, 0xf6, 0xdb, 0x00, 0xab,
+ 0x19, 0x88, 0xc1, 0x84, 0x38, 0xbd, 0x00, 0x00,
+ 0xd4, 0x7a, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0xff, 0xb5, 0x14, 0x4f, 0x3c, 0x00, 0x28, 0xc8,
+ 0x00, 0x00, 0x04, 0x1c, 0xbe, 0x79, 0x0d, 0x1c,
+ 0x81, 0xb0, 0x0f, 0x20, 0x00, 0xf0, 0xb9, 0xf8,
+ 0x2a, 0x1c, 0x10, 0x4d, 0x00, 0x90, 0x21, 0x1c,
+ 0x28, 0x1c, 0xf4, 0xf7, 0xde, 0xfc, 0x21, 0x1c,
+ 0xa8, 0x1d, 0x03, 0x9a, 0xf4, 0xf7, 0xd9, 0xfc,
+ 0x21, 0x1c, 0x28, 0x1c, 0x0c, 0x30, 0x04, 0x9a,
+ 0xf4, 0xf7, 0xd3, 0xfc, 0x21, 0x1c, 0x28, 0x1c,
+ 0x12, 0x30, 0x0a, 0x9a, 0xf4, 0xf7, 0x3c, 0x00,
+ 0x64, 0xc8, 0x00, 0x00, 0xcd, 0xfc, 0x07, 0xf0,
+ 0x9b, 0xf8, 0x00, 0x98, 0x00, 0xf0, 0x76, 0xf8,
+ 0xbe, 0x71, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0x20, 0x10, 0x07, 0x00, 0xe6, 0x7a, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x20, 0xf6, 0xf7, 0x26, 0xf8,
+ 0x07, 0x49, 0x88, 0x78, 0x00, 0x09, 0x00, 0x01,
+ 0x88, 0x70, 0x00, 0x24, 0x20, 0x1c, 0xf5, 0xf7,
+ 0x11, 0xfe, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e,
+ 0x3c, 0x00, 0xa0, 0xc8, 0x00, 0x00, 0x04, 0x2c,
+ 0xf7, 0xd3, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x50,
+ 0x07, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0xe3, 0xfb,
+ 0x03, 0x48, 0x81, 0x78, 0x0f, 0x22, 0x11, 0x43,
+ 0x81, 0x70, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x50,
+ 0x07, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0x17, 0xfd,
+ 0xa6, 0x00, 0x00, 0x2d, 0x11, 0x4f, 0x07, 0xd1,
+ 0xb8, 0x59, 0x3c, 0x00, 0xdc, 0xc8, 0x00, 0x00,
+ 0x81, 0x68, 0x00, 0x29, 0x0e, 0xd1, 0x40, 0x78,
+ 0x00, 0x28, 0x0b, 0xd0, 0x02, 0xe0, 0xff, 0x35,
+ 0x2d, 0x06, 0x2d, 0x0e, 0x29, 0x1c, 0x20, 0x1c,
+ 0xfb, 0xf7, 0x88, 0xfc, 0x01, 0x1c, 0x20, 0x1c,
+ 0x04, 0xf0, 0x7e, 0xf9, 0x06, 0x49, 0x01, 0x20,
+ 0x30, 0x39, 0x08, 0x55, 0x04, 0x48, 0x3c, 0x38,
+ 0x80, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xb9, 0x59,
+ 0x03, 0x20, 0x08, 0x70, 0x3c, 0x00, 0x18, 0xc9,
+ 0x00, 0x00, 0xf8, 0xbd, 0x00, 0x00, 0x10, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, 0xcd, 0xf9,
+ 0x80, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x05, 0x28,
+ 0x01, 0xd3, 0xf4, 0xf7, 0xe6, 0xfc, 0x20, 0x1c,
+ 0xf5, 0xf7, 0xc1, 0xfd, 0x00, 0x20, 0x05, 0x4a,
+ 0xa1, 0x00, 0x51, 0x58, 0x88, 0x60, 0x04, 0x49,
+ 0x88, 0x78, 0x01, 0x22, 0xa2, 0x40, 0x10, 0x43,
+ 0x88, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x54, 0xc9, 0x00, 0x00, 0x10, 0x7b, 0x01, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0x02, 0x4a, 0x91, 0x78,
+ 0x08, 0x43, 0x90, 0x70, 0x70, 0x47, 0x00, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0xf8, 0xb5, 0x0c, 0x4f,
+ 0xbe, 0x79, 0x0f, 0x20, 0x00, 0xf0, 0x18, 0xf8,
+ 0x05, 0x1c, 0x00, 0x24, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x0d, 0xf9, 0x08, 0x4a, 0xa1, 0x00, 0x51, 0x58,
+ 0x08, 0x71, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e,
+ 0x3c, 0x00, 0x90, 0xc9, 0x00, 0x00, 0x04, 0x2c,
+ 0xf3, 0xd3, 0x28, 0x1c, 0xff, 0xf7, 0xe1, 0xff,
+ 0xbe, 0x71, 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5,
+ 0x08, 0x49, 0x8d, 0x78, 0x8a, 0x78, 0x05, 0x40,
+ 0x82, 0x43, 0x8a, 0x70, 0x06, 0xf0, 0xf9, 0xf9,
+ 0x04, 0x1c, 0x0a, 0x34, 0x20, 0x1c, 0x06, 0xf0,
+ 0x34, 0xf9, 0x00, 0x28, 0xfa, 0xd0, 0x28, 0x1c,
+ 0xb0, 0xbd, 0x3c, 0x00, 0xcc, 0xc9, 0x00, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0x01, 0x49, 0x0a, 0x20,
+ 0x08, 0x81, 0x70, 0x47, 0x38, 0x7b, 0x01, 0x00,
+ 0xf8, 0xb5, 0x10, 0x48, 0x04, 0x26, 0x04, 0x1c,
+ 0xe0, 0x34, 0x05, 0x1c, 0x38, 0x3d, 0x00, 0x27,
+ 0x20, 0x1c, 0x1c, 0x30, 0xe4, 0x60, 0xa0, 0x61,
+ 0x27, 0x61, 0x0b, 0x48, 0xa6, 0x82, 0xe0, 0x61,
+ 0x27, 0x62, 0xa7, 0x62, 0x06, 0x20, 0xa0, 0x84,
+ 0x20, 0x1c, 0xfe, 0xf7, 0x3c, 0x00, 0x08, 0xca,
+ 0x00, 0x00, 0x87, 0xfc, 0x20, 0x1c, 0x0c, 0x30,
+ 0xf6, 0xf7, 0xb7, 0xf9, 0x05, 0x49, 0x38, 0x3c,
+ 0xac, 0x42, 0x08, 0x80, 0xe7, 0xd1, 0xf8, 0xbd,
+ 0x00, 0x00, 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61,
+ 0x01, 0x00, 0x48, 0x7b, 0x01, 0x00, 0xf7, 0xb5,
+ 0x05, 0x1c, 0x0c, 0x23, 0x0f, 0x1c, 0x12, 0x49,
+ 0x58, 0x43, 0x44, 0x18, 0x20, 0x88, 0x06, 0xf0,
+ 0xea, 0xf9, 0xa0, 0x78, 0x01, 0x28, 0x3c, 0x00,
+ 0x44, 0xca, 0x00, 0x00, 0x1a, 0xd1, 0x66, 0x68,
+ 0x02, 0x2f, 0x05, 0xd1, 0x5c, 0x20, 0x80, 0x5b,
+ 0x02, 0x99, 0x00, 0x09, 0x88, 0x42, 0x11, 0xd1,
+ 0x28, 0x1c, 0xfe, 0xf7, 0xfb, 0xff, 0x30, 0x1c,
+ 0xf9, 0xf7, 0xfa, 0xfd, 0x04, 0x20, 0xa0, 0x70,
+ 0x39, 0x1c, 0x28, 0x1c, 0xfb, 0xf7, 0xf4, 0xf8,
+ 0x03, 0x4a, 0xe8, 0x00, 0x3c, 0x32, 0x11, 0x58,
+ 0x01, 0x31, 0x11, 0x50, 0xfe, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x80, 0xca, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x01, 0x20, 0x06, 0x4a, 0x00, 0x21,
+ 0x0c, 0x23, 0x4b, 0x43, 0x9b, 0x18, 0x9b, 0x78,
+ 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x20, 0x01, 0x31,
+ 0x04, 0x29, 0xf5, 0xdb, 0x70, 0x47, 0x60, 0x7b,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xff, 0xf7,
+ 0xea, 0xfc, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x21,
+ 0x0c, 0x20, 0xf4, 0xf7, 0xf6, 0xfb, 0x26, 0x1c,
+ 0x60, 0x36, 0x3c, 0x00, 0xbc, 0xca, 0x00, 0x00,
+ 0x00, 0x21, 0xf1, 0x71, 0xe1, 0x64, 0x60, 0x6b,
+ 0x25, 0x1c, 0x40, 0x35, 0x00, 0x28, 0x31, 0xd0,
+ 0xff, 0xf7, 0x04, 0xf9, 0x01, 0x22, 0x12, 0x03,
+ 0x00, 0x28, 0x20, 0x69, 0x01, 0x88, 0x01, 0xd0,
+ 0x91, 0x43, 0x00, 0xe0, 0x11, 0x43, 0x01, 0x80,
+ 0x20, 0x69, 0x01, 0x22, 0x00, 0x88, 0xd2, 0x02,
+ 0x28, 0x83, 0x20, 0x1c, 0x58, 0x30, 0x01, 0x88,
+ 0x91, 0x43, 0x01, 0x80, 0x3c, 0x00, 0xf8, 0xca,
+ 0x00, 0x00, 0xa3, 0x6b, 0x52, 0x08, 0x00, 0x2b,
+ 0x10, 0xd0, 0x91, 0x43, 0x01, 0x80, 0x28, 0x8b,
+ 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x15, 0xd0,
+ 0x2e, 0x20, 0x01, 0x5d, 0x20, 0x69, 0x04, 0x30,
+ 0xf8, 0xf7, 0x41, 0xfd, 0x61, 0x6a, 0xfe, 0xf7,
+ 0xa8, 0xf9, 0x04, 0xe0, 0x11, 0x43, 0x01, 0x80,
+ 0x20, 0x1c, 0xfb, 0xf7, 0xcc, 0xfb, 0x68, 0x83,
+ 0x04, 0xe0, 0x20, 0x69, 0x41, 0x80, 0x3c, 0x00,
+ 0x34, 0xcb, 0x00, 0x00, 0xa8, 0x8b, 0x21, 0x69,
+ 0xc8, 0x82, 0xe0, 0x68, 0xf6, 0xf7, 0x20, 0xf9,
+ 0x30, 0x80, 0x60, 0x6d, 0x00, 0x28, 0x04, 0xd0,
+ 0x00, 0x22, 0x03, 0x21, 0x70, 0x7a, 0xfe, 0xf7,
+ 0x0d, 0xff, 0x20, 0x1c, 0x00, 0xf0, 0xb6, 0xf9,
+ 0x70, 0x7a, 0x06, 0xf0, 0x45, 0xf8, 0x70, 0xbd,
+ 0xb0, 0xb5, 0x00, 0x24, 0x06, 0xf0, 0x22, 0xf9,
+ 0x09, 0x4a, 0x00, 0x21, 0x0c, 0x23, 0x4b, 0x43,
+ 0x3c, 0x00, 0x70, 0xcb, 0x00, 0x00, 0x9d, 0x18,
+ 0x6b, 0x68, 0x5b, 0x6c, 0xad, 0x78, 0xc3, 0x1a,
+ 0x01, 0x2d, 0x02, 0xd1, 0xa3, 0x42, 0x00, 0xdd,
+ 0x1c, 0x1c, 0x01, 0x31, 0x05, 0x29, 0xf0, 0xd3,
+ 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x06, 0xf0,
+ 0xa8, 0xfe, 0x0c, 0x20, 0x08, 0x49, 0x60, 0x43,
+ 0x45, 0x18, 0x28, 0x88, 0x06, 0xf0, 0x35, 0xf9,
+ 0x68, 0x68, 0x3c, 0x00, 0xac, 0xcb, 0x00, 0x00,
+ 0x00, 0x28, 0x06, 0xd0, 0x20, 0x30, 0x00, 0x7b,
+ 0x01, 0x28, 0x02, 0xd1, 0x20, 0x1c, 0xff, 0xf7,
+ 0xa3, 0xfa, 0xb0, 0xbd, 0x60, 0x7b, 0x01, 0x00,
+ 0xff, 0xb5, 0x85, 0xb0, 0x0f, 0xae, 0x60, 0xce,
+ 0x38, 0x20, 0x1e, 0x49, 0x70, 0x43, 0x17, 0x1c,
+ 0x44, 0x18, 0xff, 0xf7, 0x7f, 0xf8, 0x01, 0x22,
+ 0x12, 0x03, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x88,
+ 0x90, 0x43, 0x20, 0x80, 0x3c, 0x00, 0xe8, 0xcb,
+ 0x00, 0x00, 0x02, 0xe0, 0x21, 0x88, 0x11, 0x43,
+ 0x21, 0x80, 0x11, 0x98, 0x39, 0x1c, 0xe0, 0x62,
+ 0x05, 0x98, 0xf8, 0xf7, 0xd0, 0xfc, 0x01, 0x1c,
+ 0x2b, 0x1c, 0x38, 0x1c, 0x06, 0x9a, 0xfe, 0xf7,
+ 0x20, 0xf9, 0x60, 0x80, 0x06, 0x22, 0x20, 0x1d,
+ 0x0f, 0x49, 0xf3, 0xf7, 0x72, 0xfc, 0x23, 0x1c,
+ 0x08, 0x98, 0x30, 0x33, 0x18, 0x70, 0x0e, 0x98,
+ 0x0c, 0x49, 0x58, 0x70, 0x65, 0x63, 0x3c, 0x00,
+ 0x24, 0xcc, 0x00, 0x00, 0x00, 0x20, 0x02, 0x90,
+ 0x01, 0x22, 0x04, 0x92, 0x09, 0x48, 0x03, 0x91,
+ 0x5a, 0x78, 0x01, 0x88, 0x01, 0x92, 0x00, 0x91,
+ 0x19, 0x78, 0x24, 0x3b, 0x30, 0x1c, 0x62, 0x6b,
+ 0xfe, 0xf7, 0xa8, 0xfe, 0x09, 0xb0, 0xf0, 0xbd,
+ 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00,
+ 0xff, 0xb5, 0x87, 0xb0, 0x10, 0x98, 0x12, 0xaf,
+ 0x3c, 0x00, 0x60, 0xcc, 0x00, 0x00, 0x8c, 0x46,
+ 0xa2, 0xcf, 0x4c, 0x23, 0x30, 0x4c, 0x6b, 0x43,
+ 0x1c, 0x19, 0x16, 0x1c, 0x15, 0x9a, 0x27, 0x85,
+ 0x27, 0x1c, 0x30, 0x37, 0x06, 0x97, 0x05, 0x97,
+ 0x00, 0x23, 0x3b, 0x73, 0x05, 0x9f, 0x78, 0x73,
+ 0x11, 0x98, 0x27, 0x1c, 0x60, 0x64, 0x61, 0x60,
+ 0x22, 0x60, 0x40, 0x37, 0x3e, 0x70, 0x61, 0x46,
+ 0x61, 0x87, 0x07, 0x98, 0x31, 0x1c, 0xf8, 0xf7,
+ 0x80, 0xfc, 0x3c, 0x00, 0x9c, 0xcc, 0x00, 0x00,
+ 0x05, 0x99, 0xc8, 0x73, 0x0a, 0x98, 0x78, 0x70,
+ 0x30, 0x1c, 0xfe, 0xf7, 0x73, 0xf8, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0x41, 0x00, 0x02, 0x20, 0x01, 0x40, 0x11, 0x9a,
+ 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x08, 0x43, 0x38, 0x72, 0x20, 0x1c, 0x2e, 0x30,
+ 0x07, 0x99, 0xfd, 0xf7, 0xcf, 0xff, 0x28, 0x1c,
+ 0x04, 0xf0, 0xae, 0xf8, 0x3c, 0x00, 0xd8, 0xcc,
+ 0x00, 0x00, 0xfe, 0xf7, 0xfe, 0xff, 0x4c, 0x22,
+ 0x12, 0x4b, 0x6a, 0x43, 0xd2, 0x18, 0x01, 0x21,
+ 0x09, 0x03, 0x2a, 0x32, 0x00, 0x28, 0x04, 0xd0,
+ 0x10, 0x1c, 0x12, 0x88, 0x8a, 0x43, 0x02, 0x80,
+ 0x02, 0xe0, 0x10, 0x88, 0x08, 0x43, 0x10, 0x80,
+ 0x0b, 0x49, 0x00, 0x20, 0x03, 0x91, 0x06, 0x99,
+ 0x02, 0x90, 0x00, 0x22, 0x04, 0x92, 0x08, 0x48,
+ 0x0a, 0x7b, 0x41, 0x88, 0x23, 0x1c, 0x3c, 0x00,
+ 0x14, 0xcd, 0x00, 0x00, 0x01, 0x92, 0x00, 0x91,
+ 0x79, 0x78, 0x08, 0x33, 0x28, 0x1c, 0x62, 0x68,
+ 0xfe, 0xf7, 0x38, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd,
+ 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00,
+ 0x3c, 0x7c, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c,
+ 0x01, 0x28, 0x27, 0xd0, 0x80, 0x28, 0x30, 0xd1,
+ 0xe0, 0x6c, 0x00, 0x28, 0x08, 0xd0, 0x69, 0x20,
+ 0x00, 0x5d, 0x18, 0x49, 0xc0, 0x00, 0x40, 0x18,
+ 0x3c, 0x00, 0x50, 0xcd, 0x00, 0x00, 0x04, 0x30,
+ 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x20, 0x1c,
+ 0xff, 0xf7, 0xe9, 0xfb, 0x13, 0x4d, 0x50, 0x3d,
+ 0xe8, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x2e, 0x20,
+ 0x00, 0x5d, 0xfe, 0xf7, 0x10, 0xf8, 0x02, 0xf0,
+ 0x42, 0xfe, 0x20, 0x1c, 0x61, 0x68, 0xf3, 0xf7,
+ 0x2f, 0xfb, 0x40, 0x34, 0x60, 0x78, 0x00, 0x28,
+ 0x02, 0xd1, 0x06, 0xf0, 0x12, 0xf8, 0xa8, 0x60,
+ 0xb0, 0xbd, 0x3c, 0x00, 0x8c, 0xcd, 0x00, 0x00,
+ 0x20, 0x06, 0x00, 0x0e, 0x81, 0x28, 0xfa, 0xd1,
+ 0x22, 0x0c, 0x20, 0x04, 0x00, 0x0e, 0x02, 0x21,
+ 0xfe, 0xf7, 0xe6, 0xfd, 0xb0, 0xbd, 0x0a, 0x21,
+ 0x0c, 0x20, 0xf4, 0xf7, 0x7d, 0xfa, 0xb0, 0xbd,
+ 0x9c, 0x7b, 0x01, 0x00, 0xf8, 0xb5, 0x18, 0x4e,
+ 0x18, 0x4f, 0x05, 0x1c, 0x34, 0x79, 0xb8, 0x79,
+ 0x00, 0x90, 0x20, 0x1c, 0xf5, 0xf7, 0x7c, 0xff,
+ 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0xc8, 0xcd,
+ 0x00, 0x00, 0x12, 0x48, 0x38, 0x38, 0x40, 0x68,
+ 0x85, 0x42, 0x01, 0xd1, 0x00, 0x2d, 0x03, 0xd1,
+ 0x10, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x63, 0xfa,
+ 0x0d, 0x49, 0x00, 0x20, 0x38, 0x39, 0x48, 0x60,
+ 0x04, 0x21, 0x20, 0x1c, 0xff, 0xf7, 0x59, 0xfc,
+ 0x04, 0x21, 0x20, 0x1c, 0xf5, 0xf7, 0xeb, 0xfe,
+ 0x0c, 0x21, 0x06, 0x4a, 0x61, 0x43, 0x30, 0x3a,
+ 0x89, 0x18, 0x0c, 0x71, 0x04, 0x20, 0x3c, 0x00,
+ 0x04, 0xce, 0x00, 0x00, 0x30, 0x71, 0x00, 0x98,
+ 0xb8, 0x71, 0x0f, 0x20, 0xff, 0xf7, 0xa6, 0xfd,
+ 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x7a, 0x01, 0x00,
+ 0x20, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x0f, 0x20, 0xff, 0xf7, 0xc1, 0xfd, 0xf5, 0xf7,
+ 0x3b, 0xff, 0x01, 0x25, 0x00, 0x28, 0x00, 0xd0,
+ 0x00, 0x25, 0x16, 0x4e, 0xb0, 0x79, 0x16, 0x4f,
+ 0x00, 0x90, 0x38, 0x79, 0x04, 0x28, 0x01, 0xd1,
+ 0x3c, 0x00, 0x40, 0xce, 0x00, 0x00, 0x00, 0x2c,
+ 0x03, 0xd1, 0x11, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x2c, 0xfa, 0x10, 0x48, 0x29, 0x06, 0x38, 0x38,
+ 0x44, 0x60, 0x09, 0x0e, 0x0c, 0x1c, 0x04, 0x20,
+ 0xff, 0xf7, 0x21, 0xfc, 0x03, 0x21, 0x20, 0x1c,
+ 0xff, 0xf7, 0x41, 0xfc, 0x21, 0x1c, 0x04, 0x20,
+ 0xf5, 0xf7, 0xaf, 0xfe, 0x0c, 0x21, 0x07, 0x4a,
+ 0x69, 0x43, 0x04, 0x20, 0x30, 0x3a, 0x89, 0x18,
+ 0x08, 0x71, 0x3c, 0x00, 0x7c, 0xce, 0x00, 0x00,
+ 0x3c, 0x71, 0x00, 0x98, 0xb0, 0x71, 0x20, 0x1c,
+ 0xff, 0xf7, 0x50, 0xfd, 0x04, 0x20, 0xf8, 0xbd,
+ 0x20, 0x10, 0x07, 0x00, 0xa4, 0x7a, 0x01, 0x00,
+ 0x0c, 0x23, 0x02, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x80, 0x68, 0x70, 0x47, 0x74, 0x7a, 0x01, 0x00,
+ 0x60, 0x30, 0xc1, 0x79, 0x80, 0x79, 0x81, 0x42,
+ 0x01, 0xd9, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xce,
+ 0x00, 0x00, 0x01, 0x48, 0x80, 0x68, 0x70, 0x47,
+ 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, 0x38, 0xb5,
+ 0x69, 0x21, 0x09, 0x5c, 0x18, 0x23, 0x10, 0x4a,
+ 0x59, 0x43, 0x89, 0x18, 0x8a, 0x68, 0x01, 0x32,
+ 0x8a, 0x60, 0x4b, 0x69, 0xd2, 0x1a, 0xcb, 0x68,
+ 0x93, 0x42, 0x00, 0xd2, 0xca, 0x60, 0x00, 0x22,
+ 0x0b, 0x4c, 0x02, 0x60, 0x22, 0x1c, 0x20, 0x32,
+ 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0x3c, 0x00,
+ 0xf4, 0xce, 0x00, 0x00, 0xd2, 0x79, 0x5a, 0x70,
+ 0x0a, 0x68, 0x00, 0x2a, 0x01, 0xd1, 0x48, 0x60,
+ 0x00, 0xe0, 0x10, 0x60, 0x00, 0xab, 0x08, 0x60,
+ 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00,
+ 0xc4, 0x7b, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x18, 0x23, 0x0a, 0x49, 0x58, 0x43, 0x41, 0x18,
+ 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x48, 0x68,
+ 0x00, 0x28, 0x09, 0xd0, 0x48, 0x69, 0x01, 0x30,
+ 0x3c, 0x00, 0x30, 0xcf, 0x00, 0x00, 0x48, 0x61,
+ 0x48, 0x68, 0x02, 0x68, 0x4a, 0x60, 0x00, 0x2a,
+ 0x00, 0xd1, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0xc4, 0x7b, 0x01, 0x00, 0xf8, 0xb5,
+ 0x12, 0x4e, 0x10, 0x4d, 0x0f, 0x4c, 0x0a, 0x27,
+ 0x21, 0x1c, 0x00, 0x20, 0xe0, 0x60, 0x2a, 0x31,
+ 0x22, 0x1c, 0x18, 0x32, 0xa1, 0x60, 0x62, 0x61,
+ 0x27, 0x82, 0x0c, 0x4a, 0xe0, 0x61, 0xa2, 0x61,
+ 0x60, 0x62, 0x3c, 0x00, 0x6c, 0xcf, 0x00, 0x00,
+ 0x06, 0x20, 0x20, 0x84, 0x08, 0x1c, 0xfe, 0xf7,
+ 0xd7, 0xf9, 0x20, 0x1c, 0x08, 0x30, 0xf5, 0xf7,
+ 0x01, 0xff, 0x4c, 0x3c, 0xac, 0x42, 0x70, 0x80,
+ 0xe5, 0xd1, 0xff, 0x20, 0x30, 0x70, 0xf8, 0xbd,
+ 0x88, 0xe4, 0x01, 0x00, 0x0c, 0xe3, 0x01, 0x00,
+ 0x3c, 0x7c, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0xf8, 0xb5, 0x04, 0x1c, 0x0b, 0x48, 0x0e, 0x1c,
+ 0x17, 0x1c, 0x44, 0x70, 0x3c, 0x00, 0xa8, 0xcf,
+ 0x00, 0x00, 0x05, 0xf0, 0x00, 0xff, 0x05, 0x1c,
+ 0x39, 0x1c, 0x30, 0x1c, 0xfd, 0xf7, 0xab, 0xff,
+ 0x0c, 0x21, 0x05, 0x4a, 0x28, 0x18, 0x0a, 0x30,
+ 0x61, 0x43, 0x08, 0x32, 0x50, 0x50, 0x03, 0x48,
+ 0x89, 0x18, 0x00, 0x68, 0x88, 0x60, 0xf8, 0xbd,
+ 0x00, 0x00, 0x6c, 0x7a, 0x01, 0x00, 0x78, 0x6e,
+ 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4e, 0x05, 0x1c,
+ 0x70, 0x78, 0xff, 0x28, 0x0f, 0xd0, 0x3c, 0x00,
+ 0xe4, 0xcf, 0x00, 0x00, 0x0c, 0x23, 0x08, 0x4c,
+ 0x58, 0x43, 0x08, 0x34, 0x20, 0x58, 0x05, 0xf0,
+ 0x1d, 0xfe, 0x00, 0x28, 0x06, 0xd1, 0x70, 0x78,
+ 0x0c, 0x23, 0x58, 0x43, 0x00, 0x19, 0x81, 0x68,
+ 0x29, 0x43, 0x81, 0x60, 0x70, 0xbd, 0x00, 0x00,
+ 0x6c, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x30, 0x21,
+ 0x01, 0x48, 0xf3, 0xf7, 0x43, 0xfa, 0x80, 0xbd,
+ 0xec, 0xe5, 0x01, 0x00, 0x10, 0xb5, 0x05, 0xf0,
+ 0x3c, 0x00, 0x20, 0xd0, 0x00, 0x00, 0xc5, 0xfe,
+ 0x0a, 0x49, 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c,
+ 0x05, 0xf0, 0xf7, 0xfd, 0x00, 0x28, 0x07, 0xd0,
+ 0xf5, 0xf7, 0x51, 0xfe, 0x00, 0x28, 0x03, 0xd0,
+ 0x13, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x31, 0xf9,
+ 0xf5, 0xf7, 0x49, 0xfe, 0x00, 0x28, 0xee, 0xd1,
+ 0x10, 0xbd, 0xb0, 0x36, 0x00, 0x00, 0xff, 0xb5,
+ 0x8b, 0xb0, 0x19, 0x9b, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x1a, 0x20, 0x3c, 0x00, 0x5c, 0xd0, 0x00, 0x00,
+ 0x00, 0x2b, 0x16, 0x99, 0x00, 0xd1, 0x18, 0x20,
+ 0x01, 0x90, 0x14, 0x98, 0x00, 0x28, 0x27, 0xd0,
+ 0xff, 0x20, 0x19, 0x9b, 0x01, 0x30, 0x00, 0x2b,
+ 0x01, 0xd1, 0x18, 0x23, 0x00, 0xe0, 0x1a, 0x23,
+ 0x04, 0x33, 0x82, 0x42, 0x04, 0xd3, 0xd0, 0x1a,
+ 0x40, 0x08, 0x40, 0x00, 0x00, 0x04, 0x00, 0x0c,
+ 0x0d, 0x90, 0x6a, 0x48, 0x00, 0x88, 0xc2, 0x1a,
+ 0x12, 0x04, 0x12, 0x0c, 0x3c, 0x00, 0x98, 0xd0,
+ 0x00, 0x00, 0x04, 0x92, 0x00, 0x29, 0x08, 0xd0,
+ 0x89, 0x79, 0x66, 0x4a, 0x49, 0x00, 0x51, 0x5a,
+ 0x04, 0x9a, 0x51, 0x1a, 0x0a, 0x04, 0x12, 0x0c,
+ 0x04, 0x92, 0x04, 0x9a, 0x82, 0x42, 0x05, 0xd9,
+ 0x00, 0x20, 0x04, 0x90, 0x02, 0xe0, 0x60, 0x48,
+ 0x04, 0x90, 0x0d, 0x90, 0x01, 0x98, 0x01, 0x04,
+ 0x09, 0x0c, 0x0a, 0x91, 0x00, 0x20, 0xf4, 0xf7,
+ 0x84, 0xfa, 0x00, 0x90, 0x00, 0x68, 0x3c, 0x00,
+ 0xd4, 0xd0, 0x00, 0x00, 0x00, 0x26, 0x06, 0x90,
+ 0x20, 0x60, 0x00, 0x20, 0x05, 0x90, 0x0e, 0x98,
+ 0x00, 0x24, 0x00, 0x05, 0x00, 0x0c, 0x09, 0x90,
+ 0x1a, 0x98, 0x0d, 0x9f, 0x40, 0x07, 0x40, 0x0f,
+ 0x08, 0x90, 0x07, 0x94, 0x03, 0x95, 0x00, 0x2d,
+ 0x0d, 0xd0, 0x28, 0x89, 0xb8, 0x42, 0x04, 0xd8,
+ 0x36, 0x18, 0x3f, 0x1a, 0x07, 0xd0, 0xed, 0x68,
+ 0xf5, 0xe7, 0x39, 0x04, 0x09, 0x0c, 0x28, 0x1c,
+ 0x3c, 0x00, 0x10, 0xd1, 0x00, 0x00, 0xf4, 0xf7,
+ 0x38, 0xfb, 0xef, 0xe7, 0x00, 0x2e, 0x02, 0xd1,
+ 0x07, 0x99, 0x00, 0x29, 0x71, 0xd1, 0x27, 0x1c,
+ 0x6c, 0x20, 0xf4, 0xf7, 0x88, 0xfb, 0x07, 0x99,
+ 0x04, 0x1c, 0x00, 0x29, 0x20, 0xd1, 0x07, 0x94,
+ 0x00, 0x20, 0xa0, 0x61, 0x18, 0x98, 0x27, 0x1c,
+ 0x60, 0x60, 0x17, 0x98, 0x24, 0x37, 0xa0, 0x60,
+ 0x06, 0x98, 0x20, 0x61, 0x15, 0x98, 0x0f, 0xc8,
+ 0x0f, 0xc7, 0x3c, 0x00, 0x4c, 0xd1, 0x00, 0x00,
+ 0x14, 0x98, 0x5c, 0x21, 0x60, 0x63, 0x09, 0x98,
+ 0x08, 0x53, 0x19, 0x98, 0x69, 0x21, 0xe0, 0x63,
+ 0x1b, 0x98, 0x08, 0x55, 0x1c, 0x98, 0x60, 0x65,
+ 0x19, 0x98, 0x00, 0x28, 0x23, 0xd0, 0x08, 0x98,
+ 0x06, 0x99, 0x08, 0x83, 0x1f, 0xe0, 0x6c, 0x22,
+ 0x20, 0x1c, 0x07, 0x99, 0xf3, 0xf7, 0x1a, 0xfa,
+ 0x3c, 0x60, 0x01, 0x98, 0x62, 0x21, 0x30, 0x18,
+ 0xc8, 0x53, 0x15, 0x98, 0x3c, 0x00, 0x88, 0xd1,
+ 0x00, 0x00, 0x40, 0x21, 0x80, 0x7a, 0xc8, 0x55,
+ 0x00, 0x20, 0xb8, 0x63, 0x06, 0x98, 0x0a, 0x99,
+ 0xf4, 0xf7, 0x1f, 0xfa, 0xf8, 0x60, 0x02, 0x99,
+ 0xf4, 0xf7, 0x3b, 0xf9, 0x20, 0x1c, 0x40, 0x30,
+ 0x81, 0x8b, 0x05, 0x9a, 0x12, 0x07, 0x12, 0x0f,
+ 0x11, 0x43, 0x81, 0x83, 0x03, 0x98, 0x5e, 0x21,
+ 0x02, 0x90, 0x01, 0x98, 0x22, 0x4a, 0x30, 0x18,
+ 0x08, 0x53, 0x12, 0x68, 0x01, 0x21, 0x3c, 0x00,
+ 0xc4, 0xd1, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x2a,
+ 0x00, 0xd0, 0x1b, 0x98, 0x00, 0x06, 0x04, 0x9a,
+ 0x00, 0x0e, 0x96, 0x42, 0x03, 0xd9, 0x2c, 0x22,
+ 0x11, 0x55, 0x1b, 0x49, 0x04, 0xe0, 0x15, 0x99,
+ 0x2c, 0x22, 0x09, 0x7a, 0x11, 0x55, 0x19, 0x49,
+ 0x08, 0x5c, 0x66, 0x21, 0x08, 0x55, 0x1c, 0x98,
+ 0x00, 0x28, 0x01, 0xd0, 0x1f, 0x20, 0x08, 0x55,
+ 0x00, 0x2d, 0x03, 0xd0, 0xe8, 0x68, 0x03, 0x90,
+ 0x3c, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0xe0, 0x09, 0xe0, 0xe8, 0x60, 0x05, 0x98,
+ 0x00, 0x26, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c,
+ 0x0d, 0x9f, 0x05, 0x90, 0x03, 0x9d, 0x6d, 0xe7,
+ 0x00, 0x98, 0xe0, 0x60, 0x02, 0x99, 0xf4, 0xf7,
+ 0xfa, 0xf8, 0x00, 0x20, 0x20, 0x60, 0x01, 0x21,
+ 0xa1, 0x63, 0x60, 0x34, 0x60, 0x80, 0x07, 0x98,
+ 0x0f, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x06, 0x61,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0xd2, 0x00, 0x00,
+ 0x5c, 0x43, 0x01, 0x00, 0x38, 0x09, 0x00, 0x00,
+ 0x18, 0x67, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00,
+ 0x0a, 0x61, 0x01, 0x00, 0x01, 0x48, 0x00, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0xc4, 0x6a, 0x01, 0x00,
+ 0x02, 0x49, 0x09, 0x1d, 0x03, 0xc9, 0x40, 0x18,
+ 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00,
+ 0x01, 0x48, 0x00, 0x69, 0x70, 0x47, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x78, 0xd2,
+ 0x00, 0x00, 0x01, 0x48, 0x40, 0x69, 0x70, 0x47,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x48,
+ 0x80, 0x69, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x4e, 0x00, 0x20,
+ 0x35, 0x1c, 0x40, 0x35, 0xf0, 0x63, 0x0d, 0xe0,
+ 0xa0, 0x68, 0xf4, 0xf7, 0x7a, 0xf9, 0xb3, 0x6d,
+ 0x00, 0x2b, 0x04, 0xd0, 0x00, 0x22, 0x01, 0x20,
+ 0x61, 0x6b, 0xf3, 0xf7, 0x95, 0xf8, 0x3c, 0x00,
+ 0xb4, 0xd2, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x9d, 0xfa, 0x28, 0x1c, 0xfa, 0xf7, 0x42, 0xfd,
+ 0x04, 0x1c, 0xec, 0xd1, 0x70, 0xbd, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4f,
+ 0x00, 0x26, 0xf8, 0x6b, 0x00, 0x28, 0x2c, 0xd0,
+ 0x38, 0x1c, 0x40, 0x30, 0x00, 0x90, 0x1d, 0xe0,
+ 0x16, 0x48, 0xb9, 0x6b, 0x02, 0xf0, 0x5c, 0xf8,
+ 0x00, 0x22, 0x20, 0x1c, 0x14, 0x49, 0x03, 0xf0,
+ 0x3c, 0x00, 0xf0, 0xd2, 0x00, 0x00, 0x7b, 0xff,
+ 0x05, 0x1c, 0x04, 0xd1, 0x38, 0x6a, 0x01, 0x30,
+ 0x38, 0x62, 0x01, 0x36, 0x0d, 0xe0, 0xa0, 0x68,
+ 0xf4, 0xf7, 0x49, 0xf9, 0xbb, 0x6d, 0x00, 0x2b,
+ 0x04, 0xd0, 0x00, 0x22, 0x28, 0x1c, 0x61, 0x6b,
+ 0xf3, 0xf7, 0x64, 0xf8, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x6c, 0xfa, 0x00, 0x98, 0xfa, 0xf7, 0x11, 0xfd,
+ 0x04, 0x1c, 0xdc, 0xd1, 0x07, 0x48, 0xb9, 0x6b,
+ 0x02, 0xf0, 0x3c, 0x00, 0x2c, 0xd3, 0x00, 0x00,
+ 0x25, 0xf8, 0x00, 0x20, 0xf8, 0x63, 0x30, 0x1c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x11, 0x30, 0x00, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0xc8, 0x63, 0x70, 0x47, 0xc4, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0x05, 0x4a, 0x00, 0x21,
+ 0x1c, 0x23, 0x43, 0x43, 0x9b, 0x18, 0x01, 0x30,
+ 0x04, 0x28, 0xd9, 0x66, 0x3c, 0x00, 0x68, 0xd3,
+ 0x00, 0x00, 0xf8, 0xdb, 0xfc, 0xf7, 0xfd, 0xfc,
+ 0x80, 0xbd, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49,
+ 0xc8, 0x64, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x01, 0x49, 0x88, 0x64, 0x70, 0x47,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x1c, 0x21, 0x1c, 0x02, 0x8e,
+ 0x80, 0x6a, 0x40, 0x31, 0xf3, 0xf7, 0x2f, 0xf8,
+ 0x00, 0x28, 0x16, 0xd1, 0x02, 0x21, 0x3c, 0x00,
+ 0xa4, 0xd3, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x6f, 0xfa, 0xe2, 0x69, 0xc0, 0x00, 0x10, 0x18,
+ 0x82, 0x8b, 0xab, 0x88, 0x9a, 0x42, 0x04, 0xd1,
+ 0x82, 0x69, 0x2b, 0x68, 0x9a, 0x42, 0x08, 0xd2,
+ 0x01, 0xe0, 0x9a, 0x42, 0x05, 0xd2, 0x00, 0x21,
+ 0x18, 0x30, 0x0c, 0xcd, 0x0c, 0xc0, 0x00, 0xe0,
+ 0x01, 0x21, 0x08, 0x1c, 0xb0, 0xbd, 0x00, 0x00,
+ 0xf8, 0xb5, 0x06, 0x1c, 0x00, 0x27, 0x44, 0x68,
+ 0x3c, 0x00, 0xe0, 0xd3, 0x00, 0x00, 0x0f, 0xe0,
+ 0x09, 0x49, 0x48, 0x6a, 0x01, 0x30, 0x48, 0x62,
+ 0xa0, 0x69, 0x00, 0x28, 0x02, 0xd0, 0xf4, 0xf7,
+ 0x00, 0xfa, 0xa7, 0x61, 0x26, 0x62, 0x25, 0x68,
+ 0x20, 0x1c, 0xff, 0xf7, 0x52, 0xfb, 0x2c, 0x1c,
+ 0x00, 0x2c, 0xed, 0xd1, 0xf8, 0xbd, 0xc4, 0x69,
+ 0x01, 0x00, 0x03, 0x30, 0x07, 0x4a, 0x81, 0x08,
+ 0x13, 0x68, 0x50, 0x68, 0x1b, 0x68, 0x89, 0x00,
+ 0x09, 0x18, 0x3c, 0x00, 0x1c, 0xd4, 0x00, 0x00,
+ 0x8b, 0x42, 0x01, 0xd3, 0x51, 0x60, 0x00, 0xe0,
+ 0x00, 0x20, 0x90, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0x8c, 0x6e, 0x01, 0x00, 0x70, 0xb5, 0x12, 0x4e,
+ 0x80, 0x38, 0xc5, 0x00, 0x70, 0x59, 0x0c, 0x1c,
+ 0x00, 0x28, 0x04, 0xd1, 0x01, 0x21, 0x0d, 0x20,
+ 0xf3, 0xf7, 0x2e, 0xff, 0x0d, 0xe0, 0x20, 0x69,
+ 0x00, 0x28, 0x05, 0xd1, 0xa8, 0x19, 0x81, 0x88,
+ 0xe0, 0x68, 0x01, 0xf0, 0x3c, 0x00, 0x58, 0xd4,
+ 0x00, 0x00, 0x47, 0xfa, 0x20, 0x61, 0x71, 0x59,
+ 0x20, 0x1c, 0xf2, 0xf7, 0xbb, 0xff, 0x04, 0x1c,
+ 0x00, 0x2c, 0x07, 0xd0, 0xe0, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0xf4, 0xf7, 0x92, 0xf8, 0x20, 0x1c,
+ 0xf4, 0xf7, 0xbd, 0xf9, 0x70, 0xbd, 0x54, 0x42,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x0d, 0x1c,
+ 0x0e, 0x49, 0x06, 0x22, 0xf3, 0xf7, 0x35, 0xf8,
+ 0x00, 0x26, 0xe6, 0x61, 0x66, 0x62, 0x3c, 0x00,
+ 0x94, 0xd4, 0x00, 0x00, 0x07, 0x20, 0x30, 0x21,
+ 0x08, 0x55, 0xe6, 0x63, 0x28, 0x1c, 0xf8, 0xf7,
+ 0x6b, 0xf8, 0xa0, 0x76, 0x20, 0x1c, 0x14, 0x30,
+ 0x06, 0x22, 0x29, 0x1c, 0xf3, 0xf7, 0x24, 0xf8,
+ 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, 0xf3, 0xf7,
+ 0x1f, 0xf8, 0x26, 0x61, 0x70, 0xbd, 0x00, 0x00,
+ 0x12, 0x61, 0x01, 0x00, 0x80, 0xb5, 0xfd, 0xf7,
+ 0x85, 0xfe, 0x80, 0xbd, 0x01, 0x49, 0x48, 0x60,
+ 0x3c, 0x00, 0xd0, 0xd4, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x49,
+ 0x80, 0xb5, 0x49, 0x68, 0xf2, 0xf7, 0x7c, 0xff,
+ 0x80, 0xbd, 0xe4, 0x65, 0x01, 0x00, 0x80, 0xb5,
+ 0xf4, 0xf7, 0xe5, 0xf9, 0x07, 0x49, 0x07, 0x48,
+ 0x0e, 0xc9, 0x0e, 0xc0, 0x18, 0x38, 0x00, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x02, 0xf0, 0xb7, 0xfa,
+ 0x80, 0xbd, 0x02, 0xf0, 0x9e, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd5, 0x00, 0x00,
+ 0xb0, 0x58, 0x01, 0x00, 0x90, 0x73, 0x01, 0x00,
+ 0x05, 0x49, 0x80, 0xb5, 0x89, 0x68, 0x00, 0x20,
+ 0x00, 0x29, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x06,
+ 0x00, 0x0e, 0xfa, 0xf7, 0xe3, 0xfb, 0x80, 0xbd,
+ 0x60, 0x6c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48,
+ 0x06, 0x22, 0x03, 0x49, 0xf2, 0xf7, 0xde, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x40, 0x80, 0x07, 0x00,
+ 0x12, 0x61, 0x01, 0x00, 0x3c, 0x00, 0x48, 0xd5,
+ 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0c, 0x4d,
+ 0x0b, 0x1c, 0x21, 0x1c, 0x00, 0x20, 0x0c, 0x3d,
+ 0x00, 0x29, 0x09, 0x4c, 0x05, 0xd0, 0x28, 0x78,
+ 0x21, 0x1c, 0x10, 0x80, 0x02, 0x1c, 0x18, 0x1c,
+ 0x07, 0xe0, 0x11, 0x88, 0x0e, 0x29, 0x07, 0xd8,
+ 0x0a, 0x06, 0x12, 0x0e, 0x19, 0x1c, 0x20, 0x1c,
+ 0x2a, 0x70, 0xf2, 0xf7, 0xbe, 0xff, 0x01, 0x20,
+ 0xb0, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x3c, 0x00,
+ 0x84, 0xd5, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x20,
+ 0x0a, 0x4a, 0x01, 0x21, 0x11, 0x60, 0x0a, 0x4c,
+ 0x0a, 0xe0, 0x02, 0x1c, 0x01, 0x6a, 0x50, 0x32,
+ 0x91, 0x42, 0x05, 0xd0, 0x61, 0x78, 0x3c, 0x23,
+ 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, 0x01, 0x62,
+ 0x04, 0xf0, 0xba, 0xfb, 0x00, 0x28, 0xf0, 0xd1,
+ 0x10, 0xbd, 0x00, 0x00, 0xdc, 0x62, 0x01, 0x00,
+ 0x68, 0x61, 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0xc0, 0xd5, 0x00, 0x00, 0x00, 0x68,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, 0x10, 0x20,
+ 0x04, 0xf0, 0xc7, 0xfe, 0x80, 0xbd, 0x28, 0x61,
+ 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, 0x80, 0xb5,
+ 0x00, 0x20, 0xfb, 0xf7, 0x76, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x0b, 0xf0, 0xb9, 0xfa,
+ 0x80, 0xbd, 0xff, 0xb5, 0x83, 0xb0, 0x16, 0x1c,
+ 0x00, 0x21, 0x01, 0x91, 0x1f, 0x1c, 0x08, 0x21,
+ 0x02, 0xaa, 0x3c, 0x00, 0xfc, 0xd5, 0x00, 0x00,
+ 0xfa, 0xf7, 0x0e, 0xff, 0x04, 0x1c, 0x2a, 0xd1,
+ 0x02, 0x98, 0x41, 0x68, 0x49, 0x00, 0x01, 0xd4,
+ 0x09, 0x24, 0x24, 0xe0, 0xfa, 0xf7, 0x52, 0xff,
+ 0x38, 0x60, 0x02, 0x98, 0x41, 0x68, 0x49, 0x02,
+ 0xcd, 0x0f, 0x29, 0x1c, 0xfa, 0xf7, 0x44, 0xff,
+ 0x01, 0x1c, 0x30, 0x60, 0x38, 0x68, 0x00, 0x06,
+ 0x00, 0x0e, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0x28,
+ 0x01, 0xd1, 0x0a, 0x24, 0x3c, 0x00, 0x38, 0xd6,
+ 0x00, 0x00, 0x0f, 0xe0, 0x31, 0x68, 0x02, 0x98,
+ 0x2b, 0x1c, 0x01, 0xaa, 0xfa, 0xf7, 0xd7, 0xff,
+ 0x00, 0x28, 0x06, 0xd0, 0x01, 0x98, 0x00, 0x28,
+ 0x04, 0xd0, 0x04, 0x99, 0x09, 0x68, 0x81, 0x42,
+ 0x00, 0xd2, 0x03, 0x24, 0x01, 0x98, 0x04, 0x99,
+ 0x08, 0x60, 0x07, 0xb0, 0x20, 0x1c, 0xf0, 0xbd,
+ 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c,
+ 0x01, 0x24, 0x00, 0xf0, 0x84, 0xff, 0x3c, 0x00,
+ 0x74, 0xd6, 0x00, 0x00, 0x00, 0x28, 0x08, 0xd0,
+ 0x03, 0x2d, 0x01, 0xd0, 0x04, 0x2d, 0x04, 0xd1,
+ 0x03, 0x20, 0xc0, 0x03, 0x86, 0x42, 0x00, 0xd3,
+ 0x00, 0x24, 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00,
+ 0x7c, 0xb5, 0x15, 0x1c, 0x06, 0x1c, 0x0c, 0x1c,
+ 0x29, 0x1c, 0x6a, 0x46, 0x01, 0xab, 0xff, 0xf7,
+ 0xa5, 0xff, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x2c,
+ 0x01, 0xd1, 0x03, 0x20, 0x7c, 0xbd, 0x17, 0x48,
+ 0x3c, 0x00, 0xb0, 0xd6, 0x00, 0x00, 0x00, 0xab,
+ 0x06, 0x60, 0x18, 0x79, 0x07, 0x28, 0x21, 0xd2,
+ 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44,
+ 0x00, 0x00, 0x1d, 0x04, 0x04, 0x06, 0x10, 0x17,
+ 0x13, 0x00, 0x04, 0x20, 0xed, 0xe7, 0x2a, 0x1c,
+ 0x21, 0x1c, 0x01, 0x20, 0x00, 0x9b, 0xf2, 0xf7,
+ 0x81, 0xfe, 0x00, 0x28, 0x12, 0xd1, 0x06, 0x20,
+ 0xe3, 0xe7, 0x2a, 0x68, 0x00, 0x99, 0x05, 0xe0,
+ 0x00, 0x98, 0x3c, 0x00, 0xec, 0xd6, 0x00, 0x00,
+ 0x42, 0x78, 0x81, 0x1c, 0x01, 0xe0, 0x2a, 0x68,
+ 0x69, 0x46, 0x20, 0x1c, 0xf2, 0xf7, 0xfe, 0xfe,
+ 0x03, 0xe0, 0x04, 0x21, 0x87, 0x20, 0xf3, 0xf7,
+ 0xcf, 0xfd, 0x00, 0x20, 0xd0, 0xe7, 0x00, 0x00,
+ 0xf8, 0x6b, 0x01, 0x00, 0xf7, 0xb5, 0x86, 0xb0,
+ 0x0e, 0x1c, 0x08, 0x21, 0x05, 0xaa, 0x06, 0x98,
+ 0xfa, 0xf7, 0x7e, 0xfe, 0x04, 0x1c, 0x45, 0xd1,
+ 0x05, 0x98, 0x41, 0x68, 0x3c, 0x00, 0x28, 0xd7,
+ 0x00, 0x00, 0x02, 0x90, 0x49, 0x02, 0xc9, 0x0f,
+ 0x00, 0x25, 0x04, 0x95, 0x03, 0x91, 0x08, 0x9f,
+ 0xfa, 0xf7, 0xd5, 0xfe, 0x01, 0x90, 0x02, 0xa9,
+ 0x03, 0xc9, 0xfa, 0xf7, 0xc6, 0xfe, 0x01, 0x99,
+ 0x05, 0x29, 0x14, 0xd2, 0x02, 0xa3, 0x5b, 0x5c,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x0e, 0x03,
+ 0x06, 0x0c, 0x03, 0x00, 0x87, 0x42, 0x0e, 0xd8,
+ 0x07, 0xe0, 0x87, 0x42, 0x0b, 0xd8, 0x3c, 0x00,
+ 0x64, 0xd7, 0x00, 0x00, 0x01, 0x25, 0xc0, 0x1b,
+ 0x04, 0x90, 0x07, 0xe0, 0x87, 0x42, 0x05, 0xd1,
+ 0x01, 0x25, 0x03, 0xe0, 0x05, 0x21, 0x87, 0x20,
+ 0xf3, 0xf7, 0x94, 0xfd, 0x00, 0x2d, 0x01, 0xd1,
+ 0x03, 0x24, 0x15, 0xe0, 0x05, 0x98, 0x41, 0x68,
+ 0x00, 0x29, 0x69, 0xda, 0x3a, 0x4a, 0x06, 0x99,
+ 0x11, 0x60, 0xfa, 0xf7, 0x91, 0xfe, 0x07, 0x1c,
+ 0x05, 0x98, 0x03, 0x99, 0xfa, 0xf7, 0x86, 0xfe,
+ 0x3c, 0x00, 0xa0, 0xd7, 0x00, 0x00, 0x05, 0x1c,
+ 0x01, 0x1c, 0x38, 0x1c, 0xff, 0xf7, 0x5f, 0xff,
+ 0x00, 0x28, 0x01, 0xd1, 0x0a, 0x24, 0x5e, 0xe0,
+ 0x07, 0x2f, 0x57, 0xd2, 0x02, 0xa3, 0xdb, 0x5d,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x53, 0x04,
+ 0x04, 0x06, 0x2e, 0x50, 0x48, 0x00, 0x04, 0x24,
+ 0x51, 0xe0, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1,
+ 0x00, 0x27, 0x14, 0xe0, 0x08, 0x99, 0x08, 0x18,
+ 0x00, 0x04, 0x3c, 0x00, 0xdc, 0xd7, 0x00, 0x00,
+ 0x00, 0x0c, 0xf4, 0xf7, 0x2b, 0xf8, 0x07, 0x1c,
+ 0x31, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, 0x86, 0xfe,
+ 0x08, 0x98, 0x04, 0x99, 0x38, 0x18, 0xf2, 0xf7,
+ 0x2f, 0xfe, 0x08, 0x98, 0x04, 0x99, 0x3e, 0x1c,
+ 0x40, 0x18, 0x08, 0x90, 0x31, 0x1c, 0x00, 0x20,
+ 0x08, 0xaa, 0xf2, 0xf7, 0xec, 0xfd, 0x00, 0x28,
+ 0x00, 0xd1, 0x05, 0x24, 0x00, 0x2f, 0x2d, 0xd0,
+ 0x38, 0x1c, 0xf3, 0xf7, 0x3c, 0x00, 0x18, 0xd8,
+ 0x00, 0x00, 0xed, 0xff, 0x29, 0xe0, 0x03, 0x99,
+ 0x00, 0x29, 0x04, 0xd0, 0x05, 0x98, 0x40, 0x68,
+ 0x87, 0x02, 0xbf, 0x0a, 0x00, 0xe0, 0x00, 0x27,
+ 0x31, 0x1c, 0x28, 0x1c, 0x08, 0x9a, 0xf2, 0xf7,
+ 0x60, 0xfe, 0x04, 0x99, 0x00, 0x29, 0x03, 0xd0,
+ 0x08, 0x98, 0x28, 0x18, 0xf2, 0xf7, 0x07, 0xfe,
+ 0x00, 0x2f, 0x12, 0xd0, 0xf2, 0xf7, 0xcc, 0xfd,
+ 0x0f, 0xe0, 0x31, 0x1c, 0xa8, 0x1c, 0x3c, 0x00,
+ 0x54, 0xd8, 0x00, 0x00, 0x08, 0x9a, 0xf2, 0xf7,
+ 0x4f, 0xfe, 0x08, 0x98, 0x68, 0x70, 0x07, 0xe0,
+ 0xff, 0xe7, 0x07, 0x24, 0x04, 0xe0, 0x08, 0x24,
+ 0x03, 0x21, 0x87, 0x20, 0xf3, 0xf7, 0x1a, 0xfd,
+ 0x20, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xf8, 0x6b, 0x01, 0x00, 0x9e, 0xb5, 0x1c, 0x1c,
+ 0x00, 0xab, 0x19, 0x72, 0x00, 0x92, 0x00, 0x22,
+ 0x01, 0x94, 0x69, 0x46, 0xfb, 0xf7, 0x08, 0xfa,
+ 0x3c, 0x00, 0x90, 0xd8, 0x00, 0x00, 0x9e, 0xbd,
+ 0x00, 0x00, 0x8f, 0xb5, 0x02, 0x92, 0x00, 0x22,
+ 0x00, 0x90, 0x01, 0x90, 0x03, 0x91, 0x69, 0x46,
+ 0x04, 0x20, 0xfb, 0xf7, 0xfc, 0xf9, 0x8f, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28,
+ 0x0a, 0xd0, 0x03, 0x28, 0x19, 0xd0, 0x04, 0x28,
+ 0x2c, 0xd1, 0x60, 0x68, 0x01, 0xf0, 0x35, 0xfc,
+ 0x01, 0x1c, 0x83, 0x20, 0x0c, 0xcc, 0x22, 0xe0,
+ 0x1c, 0x20, 0x3c, 0x00, 0xcc, 0xd8, 0x00, 0x00,
+ 0x14, 0x49, 0x60, 0x43, 0x40, 0x18, 0x14, 0x49,
+ 0x45, 0x18, 0x28, 0x1c, 0xf8, 0xf7, 0x46, 0xfc,
+ 0xa9, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x22, 0x1c,
+ 0x08, 0x20, 0x05, 0xf0, 0x71, 0xfe, 0xb0, 0xbd,
+ 0x20, 0x8c, 0xc8, 0x28, 0x01, 0xd3, 0x04, 0x20,
+ 0x04, 0xe0, 0x65, 0x28, 0x01, 0xd3, 0x02, 0x20,
+ 0x00, 0xe0, 0x01, 0x20, 0x20, 0x84, 0x20, 0x1c,
+ 0x03, 0xf0, 0xdc, 0xfa, 0x3c, 0x00, 0x08, 0xd9,
+ 0x00, 0x00, 0x22, 0x68, 0xe3, 0x68, 0x01, 0x1c,
+ 0x82, 0x20, 0xff, 0xf7, 0xb4, 0xff, 0xb0, 0xbd,
+ 0xa0, 0x21, 0x08, 0x20, 0xf3, 0xf7, 0xc3, 0xfc,
+ 0xb0, 0xbd, 0xdc, 0x71, 0x01, 0x00, 0x64, 0xee,
+ 0xff, 0xff, 0x03, 0x48, 0x04, 0x4a, 0x81, 0x68,
+ 0x51, 0x61, 0xc0, 0x68, 0x90, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71,
+ 0x01, 0x00, 0x03, 0x49, 0x04, 0x4a, 0x3c, 0x00,
+ 0x44, 0xd9, 0x00, 0x00, 0x08, 0x6b, 0x90, 0x60,
+ 0x88, 0x68, 0xd0, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0x90, 0x5c, 0x01, 0x00, 0xc0, 0x71, 0x01, 0x00,
+ 0x00, 0xb5, 0xff, 0xf7, 0xf1, 0xff, 0xff, 0xf7,
+ 0xe3, 0xff, 0x00, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x00, 0x28, 0x14, 0xd0, 0x0b, 0x49, 0x0c, 0x4c,
+ 0x88, 0x68, 0x62, 0x69, 0xc9, 0x68, 0x80, 0x1a,
+ 0xa2, 0x69, 0x89, 0x1a, 0x40, 0x18, 0x04, 0xd0,
+ 0x3c, 0x00, 0x80, 0xd9, 0x00, 0x00, 0x64, 0x23,
+ 0x59, 0x43, 0xf2, 0xf7, 0xc4, 0xfe, 0x20, 0x61,
+ 0xff, 0xf7, 0xcd, 0xff, 0x20, 0x69, 0x28, 0x60,
+ 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28,
+ 0x17, 0xd0, 0x0c, 0x49, 0x0d, 0x4c, 0x08, 0x6b,
+ 0xa2, 0x68, 0x89, 0x68, 0x80, 0x1a, 0xe2, 0x68,
+ 0x89, 0x1a, 0x3c, 0x00, 0xbc, 0xd9, 0x00, 0x00,
+ 0x40, 0x18, 0x07, 0xd0, 0x22, 0x88, 0x90, 0x42,
+ 0x04, 0xd9, 0x64, 0x23, 0x59, 0x43, 0xf2, 0xf7,
+ 0xa1, 0xfe, 0x60, 0x60, 0xff, 0xf7, 0xb6, 0xff,
+ 0x60, 0x68, 0x28, 0x60, 0x01, 0x20, 0xb0, 0xbd,
+ 0x00, 0x20, 0xb0, 0xbd, 0x90, 0x5c, 0x01, 0x00,
+ 0xc0, 0x71, 0x01, 0x00, 0x7c, 0xb5, 0x10, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, 0x24, 0xf8,
+ 0x7c, 0xbd, 0x0f, 0x48, 0x3c, 0x00, 0xf8, 0xd9,
+ 0x00, 0x00, 0xc0, 0x69, 0x84, 0x68, 0xe0, 0x68,
+ 0x25, 0x6a, 0xa6, 0x69, 0xf3, 0xf7, 0xe3, 0xfd,
+ 0xe1, 0x69, 0xf3, 0xf7, 0x06, 0xfd, 0x20, 0x1c,
+ 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89,
+ 0x89, 0x18, 0xc1, 0x83, 0x07, 0x49, 0x01, 0x94,
+ 0x00, 0x91, 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88,
+ 0x01, 0x68, 0xe0, 0x68, 0xc0, 0x68, 0xf8, 0xf7,
+ 0x1e, 0xfc, 0xe0, 0xe7, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0xda, 0x00, 0x00, 0x84, 0x6a, 0x01, 0x00,
+ 0x91, 0x5e, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0x69,
+ 0x06, 0x6a, 0x04, 0x1c, 0xc0, 0x68, 0x85, 0xb0,
+ 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xf3, 0xf7,
+ 0x57, 0xfc, 0x0a, 0x49, 0x02, 0x95, 0x04, 0x94,
+ 0x03, 0x91, 0x30, 0x69, 0x82, 0x88, 0x01, 0x68,
+ 0x26, 0x20, 0x01, 0x92, 0x00, 0x91, 0x43, 0x5d,
+ 0xe0, 0x68, 0xe1, 0x69, 0x2a, 0x1c, 0x0e, 0x32,
+ 0x3c, 0x00, 0x70, 0xda, 0x00, 0x00, 0xc0, 0x68,
+ 0xf8, 0xf7, 0x37, 0xfd, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xe9, 0xd9, 0x00, 0x00, 0x10, 0xb5,
+ 0x14, 0x1c, 0x05, 0x48, 0xfc, 0xf7, 0x7b, 0xfb,
+ 0xa0, 0x68, 0xf3, 0xf7, 0x9e, 0xfd, 0xe1, 0x68,
+ 0xc1, 0x60, 0x20, 0x1c, 0xf5, 0xf7, 0xbb, 0xfa,
+ 0x10, 0xbd, 0xa0, 0x6a, 0x01, 0x00, 0x7c, 0xb5,
+ 0x04, 0x1c, 0x60, 0x30, 0x02, 0x7b, 0xa1, 0x69,
+ 0x00, 0x91, 0x3c, 0x00, 0xac, 0xda, 0x00, 0x00,
+ 0x01, 0x92, 0x22, 0x1c, 0x21, 0x1c, 0x38, 0x31,
+ 0xa0, 0x68, 0x48, 0x32, 0x0d, 0x1c, 0x63, 0x69,
+ 0x03, 0xf0, 0x7a, 0xfb, 0x08, 0x21, 0x00, 0x20,
+ 0xf3, 0xf7, 0x88, 0xfd, 0xe0, 0x60, 0x26, 0x69,
+ 0xb1, 0x6b, 0x00, 0x29, 0x01, 0xd0, 0x10, 0x23,
+ 0x00, 0xe0, 0x18, 0x23, 0x05, 0x49, 0x01, 0x94,
+ 0x00, 0x91, 0x31, 0x68, 0xca, 0x18, 0x08, 0x23,
+ 0x01, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0xe8, 0xda,
+ 0x00, 0x00, 0xf8, 0xf7, 0x20, 0xfd, 0x7c, 0xbd,
+ 0x00, 0x00, 0x81, 0xda, 0x00, 0x00, 0xf0, 0xb5,
+ 0x46, 0x68, 0x17, 0x1c, 0x04, 0x1c, 0x01, 0x21,
+ 0x30, 0x1c, 0x9b, 0xb0, 0xfa, 0xf7, 0x0d, 0xfc,
+ 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, 0x13, 0x49,
+ 0x0a, 0x7a, 0x01, 0x2a, 0x01, 0xd1, 0x01, 0x25,
+ 0x1c, 0xe0, 0x88, 0x62, 0x4e, 0x61, 0x20, 0x89,
+ 0xc8, 0x61, 0x60, 0x89, 0x00, 0x28, 0x3c, 0x00,
+ 0x24, 0xdb, 0x00, 0x00, 0x03, 0xd0, 0x00, 0x20,
+ 0x08, 0x84, 0x48, 0x84, 0x04, 0xe0, 0xe0, 0x68,
+ 0x08, 0x84, 0x20, 0x8a, 0x48, 0x84, 0x60, 0x8a,
+ 0x88, 0x84, 0x08, 0x6b, 0x00, 0x28, 0x03, 0xd1,
+ 0x01, 0xa8, 0x03, 0xf0, 0x77, 0xfc, 0x04, 0xe0,
+ 0x01, 0x20, 0x08, 0x61, 0x00, 0x20, 0x02, 0xf0,
+ 0x39, 0xfb, 0x3d, 0x71, 0x1b, 0xb0, 0x01, 0x20,
+ 0xf0, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00,
+ 0x3c, 0x00, 0x60, 0xdb, 0x00, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0xf7, 0xf7, 0xe8, 0xfb, 0x00, 0x28,
+ 0x11, 0xd1, 0x4b, 0x20, 0x00, 0x5d, 0x01, 0x28,
+ 0x0d, 0xd1, 0x20, 0x1c, 0x04, 0xf0, 0x85, 0xfa,
+ 0x00, 0x21, 0x20, 0x1c, 0x04, 0xf0, 0xf3, 0xf8,
+ 0xa0, 0x69, 0x00, 0x21, 0xc2, 0x07, 0xd2, 0x0f,
+ 0x04, 0x20, 0xf4, 0xf7, 0xd8, 0xf9, 0x10, 0xbd,
+ 0x00, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x04, 0xf0,
+ 0x36, 0xf9, 0x3c, 0x00, 0x9c, 0xdb, 0x00, 0x00,
+ 0x00, 0x28, 0x03, 0xd0, 0x40, 0x30, 0x80, 0x7a,
+ 0x00, 0x28, 0x25, 0xd1, 0x0c, 0x20, 0x29, 0x21,
+ 0x08, 0x55, 0x21, 0x1c, 0x06, 0x22, 0xa0, 0x18,
+ 0xf2, 0xf7, 0xa0, 0xfc, 0x20, 0x1c, 0x06, 0x22,
+ 0x0e, 0x49, 0xf2, 0xf7, 0x9b, 0xfc, 0x01, 0x20,
+ 0xe0, 0x61, 0x60, 0x62, 0x07, 0x20, 0x30, 0x21,
+ 0x08, 0x55, 0x00, 0x25, 0xe5, 0x63, 0x06, 0x20,
+ 0x00, 0xab, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0xdb,
+ 0x00, 0x00, 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0xf3, 0xf7, 0xdb, 0xfc, 0x02, 0x21, 0x68, 0x46,
+ 0xfd, 0xf7, 0x73, 0xfb, 0xe0, 0x60, 0x20, 0x1c,
+ 0xff, 0xf7, 0x69, 0xfc, 0xe5, 0x60, 0x20, 0x1c,
+ 0x38, 0xbd, 0x12, 0x61, 0x01, 0x00, 0xfe, 0xb5,
+ 0x05, 0x1c, 0x0e, 0x1c, 0x15, 0x20, 0x00, 0xab,
+ 0x98, 0x80, 0x14, 0x21, 0x17, 0x1c, 0x00, 0x20,
+ 0xf3, 0xf7, 0xe3, 0xfc, 0x02, 0x90, 0x3c, 0x00,
+ 0x14, 0xdc, 0x00, 0x00, 0x04, 0x68, 0x06, 0x22,
+ 0x31, 0x1c, 0x60, 0x1d, 0x25, 0x71, 0xf2, 0xf7,
+ 0x6b, 0xfc, 0x06, 0x22, 0x39, 0x1c, 0x20, 0x1c,
+ 0x0b, 0x30, 0xf2, 0xf7, 0x65, 0xfc, 0x01, 0xa8,
+ 0xff, 0xf7, 0x52, 0xfc, 0xfe, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x23, 0xfb, 0xf7, 0x5c, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c,
+ 0x08, 0x35, 0x0f, 0x4e, 0x29, 0x1c, 0x04, 0x1c,
+ 0x3c, 0x00, 0x50, 0xdc, 0x00, 0x00, 0x06, 0x22,
+ 0x30, 0x1c, 0xf2, 0xf7, 0x50, 0xfc, 0xa0, 0x88,
+ 0xb0, 0x82, 0x28, 0x1c, 0x05, 0xf0, 0xa1, 0xff,
+ 0x00, 0x28, 0x0b, 0xd0, 0xe0, 0x88, 0x30, 0x61,
+ 0x28, 0x1c, 0x04, 0xf0, 0xcc, 0xf8, 0xa1, 0x88,
+ 0x40, 0x30, 0x41, 0x80, 0x00, 0x20, 0xf4, 0xf7,
+ 0xb8, 0xf9, 0x02, 0xe0, 0x04, 0x20, 0xf4, 0xf7,
+ 0xa0, 0xf9, 0x00, 0x20, 0x70, 0xbd, 0x70, 0x7c,
+ 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xdc, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0xfb, 0xf7, 0xf8, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x04, 0x1c,
+ 0x04, 0x30, 0x05, 0x1c, 0xfd, 0xf7, 0x32, 0xf8,
+ 0x00, 0x28, 0x09, 0xd0, 0x00, 0x20, 0xf7, 0xf7,
+ 0x37, 0xfc, 0x00, 0x28, 0x04, 0xd0, 0x06, 0x22,
+ 0x01, 0x1c, 0x28, 0x1c, 0xf2, 0xf7, 0x1e, 0xfc,
+ 0x0a, 0x4e, 0x06, 0x22, 0x29, 0x1c, 0x30, 0x1c,
+ 0xf2, 0xf7, 0x18, 0xfc, 0x3c, 0x00, 0xc8, 0xdc,
+ 0x00, 0x00, 0x60, 0x89, 0xf0, 0x82, 0x28, 0x1c,
+ 0x05, 0xf0, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0,
+ 0x02, 0x20, 0xf4, 0xf7, 0x88, 0xf9, 0x02, 0xe0,
+ 0x05, 0x20, 0xf9, 0xf7, 0xf4, 0xfa, 0x00, 0x20,
+ 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x00, 0x79, 0x04, 0x28, 0x1c, 0xd2,
+ 0x60, 0x79, 0x01, 0x28, 0x01, 0xd0, 0x03, 0x28,
+ 0x04, 0xd1, 0x00, 0x22, 0x01, 0x21, 0x3c, 0x00,
+ 0x04, 0xdd, 0x00, 0x00, 0xa0, 0x1d, 0xf9, 0xf7,
+ 0x69, 0xfc, 0x60, 0x79, 0x00, 0x28, 0x04, 0xd1,
+ 0x22, 0x79, 0x00, 0x21, 0xf9, 0xf7, 0x62, 0xfc,
+ 0x0a, 0xe0, 0x03, 0x28, 0x08, 0xd1, 0x00, 0x24,
+ 0x22, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7,
+ 0x59, 0xfc, 0x01, 0x34, 0x04, 0x2c, 0xf7, 0xdb,
+ 0x01, 0x20, 0x10, 0xbd, 0xf0, 0xb5, 0x97, 0xb0,
+ 0x17, 0x1c, 0x05, 0x1c, 0x04, 0x30, 0x04, 0x1c,
+ 0x3c, 0x00, 0x40, 0xdd, 0x00, 0x00, 0x15, 0xaa,
+ 0x16, 0xa9, 0x05, 0xf0, 0xe2, 0xfe, 0x00, 0x28,
+ 0x2e, 0xd0, 0x15, 0x98, 0x4b, 0x21, 0x09, 0x5c,
+ 0x00, 0x29, 0x23, 0xd0, 0x01, 0x29, 0x02, 0xd0,
+ 0x02, 0x29, 0x1f, 0xd1, 0x01, 0xe0, 0x04, 0xf0,
+ 0x90, 0xf9, 0xad, 0x7a, 0x13, 0x48, 0x16, 0x9e,
+ 0x05, 0x80, 0x06, 0x22, 0x21, 0x1c, 0x08, 0x30,
+ 0xf2, 0xf7, 0xc1, 0xfb, 0x22, 0x1c, 0x31, 0x1c,
+ 0x02, 0xa8, 0x3c, 0x00, 0x7c, 0xdd, 0x00, 0x00,
+ 0x00, 0xf0, 0x74, 0xfb, 0x0a, 0x20, 0x0a, 0xa9,
+ 0x48, 0x72, 0x00, 0xab, 0x9d, 0x80, 0x02, 0x21,
+ 0x01, 0xa8, 0xfd, 0xf7, 0x9f, 0xfa, 0x05, 0x90,
+ 0x02, 0xa8, 0xff, 0xf7, 0x95, 0xfb, 0xf3, 0xf7,
+ 0xf7, 0xf9, 0x00, 0x21, 0x15, 0x98, 0x03, 0xf0,
+ 0xe1, 0xff, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20,
+ 0x38, 0x71, 0x17, 0xb0, 0x01, 0x20, 0xf0, 0xbd,
+ 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0xb8, 0xdd,
+ 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xfb, 0xf7,
+ 0x62, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x80, 0x7d, 0x15, 0x1c, 0x0a, 0x1c,
+ 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0x21, 0x1c,
+ 0xf9, 0xf7, 0xfb, 0xfc, 0x00, 0x28, 0x03, 0xd1,
+ 0x04, 0x20, 0x28, 0x71, 0x01, 0x20, 0xb0, 0xbd,
+ 0x20, 0x6a, 0xf7, 0xf7, 0x76, 0xfe, 0x60, 0x6a,
+ 0xf7, 0xf7, 0x7b, 0xfe, 0x20, 0x6a, 0x3c, 0x00,
+ 0xf4, 0xdd, 0x00, 0x00, 0xfe, 0xf7, 0x88, 0xfa,
+ 0x00, 0x20, 0xb0, 0xbd, 0x10, 0xb5, 0x14, 0x1c,
+ 0xc2, 0x79, 0x81, 0x79, 0x80, 0x88, 0xf7, 0xf7,
+ 0xa1, 0xfa, 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd,
+ 0x80, 0xb5, 0x01, 0x23, 0xfa, 0xf7, 0x70, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0xf0, 0xb5, 0x04, 0x1c,
+ 0x08, 0x1c, 0x00, 0x21, 0x0f, 0x28, 0x91, 0xb0,
+ 0x00, 0xd3, 0x02, 0x21, 0x00, 0x29, 0x41, 0xd1,
+ 0x3c, 0x00, 0x30, 0xde, 0x00, 0x00, 0xc0, 0x00,
+ 0x24, 0x4f, 0x10, 0x90, 0xc6, 0x19, 0xb2, 0x88,
+ 0x21, 0x68, 0x02, 0xa8, 0xf2, 0xf7, 0x5b, 0xfb,
+ 0x21, 0x89, 0xb0, 0x88, 0x09, 0x1a, 0x00, 0x29,
+ 0x07, 0xdd, 0x09, 0x04, 0x22, 0x68, 0x09, 0x0c,
+ 0x10, 0x18, 0xf3, 0xf7, 0xc0, 0xfb, 0x05, 0x1c,
+ 0x00, 0xe0, 0x00, 0x25, 0xb0, 0x79, 0x80, 0x21,
+ 0x88, 0x43, 0x17, 0x49, 0x78, 0x31, 0x09, 0x5c,
+ 0x00, 0x20, 0x3c, 0x00, 0x6c, 0xde, 0x00, 0x00,
+ 0xf3, 0xf7, 0xb4, 0xfb, 0x07, 0x1c, 0x00, 0x68,
+ 0x13, 0x49, 0x01, 0x90, 0x10, 0x98, 0x0b, 0x58,
+ 0x01, 0x9a, 0x29, 0x1c, 0x02, 0xa8, 0xf2, 0xf7,
+ 0xac, 0xfa, 0x00, 0x90, 0x28, 0x1c, 0xf3, 0xf7,
+ 0x73, 0xfb, 0x20, 0x1c, 0xf3, 0xf7, 0x82, 0xfb,
+ 0x00, 0x98, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x98,
+ 0x01, 0x99, 0x08, 0x60, 0xb0, 0x79, 0x39, 0x1c,
+ 0xfa, 0xf7, 0x20, 0xff, 0x3c, 0x00, 0xa8, 0xde,
+ 0x00, 0x00, 0x11, 0xb0, 0xf0, 0xbd, 0x38, 0x1c,
+ 0xf3, 0xf7, 0x61, 0xfb, 0xf9, 0xe7, 0x2d, 0x20,
+ 0xf3, 0xf7, 0xf5, 0xf9, 0x20, 0x1c, 0xf3, 0xf7,
+ 0x6c, 0xfb, 0xf2, 0xe7, 0x00, 0x00, 0x24, 0x44,
+ 0x01, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x20, 0x35,
+ 0x06, 0x1c, 0xa8, 0x79, 0x04, 0x28, 0x48, 0xd2,
+ 0xe9, 0x79, 0x01, 0x29, 0x13, 0xd1, 0x30, 0x1c,
+ 0x28, 0x30, 0x03, 0xf0, 0x92, 0xff, 0x3c, 0x00,
+ 0xe4, 0xde, 0x00, 0x00, 0x00, 0x28, 0x3f, 0xd0,
+ 0x01, 0x1c, 0x8c, 0x31, 0x01, 0x65, 0xa9, 0x79,
+ 0x4c, 0x22, 0x04, 0x1c, 0x11, 0x54, 0x81, 0x18,
+ 0x41, 0x62, 0x50, 0x34, 0x04, 0x62, 0xe1, 0x1e,
+ 0x81, 0x62, 0x0b, 0xe0, 0x00, 0x29, 0x2f, 0xd1,
+ 0x3c, 0x22, 0x18, 0x49, 0x42, 0x43, 0x54, 0x18,
+ 0x17, 0x4a, 0x04, 0x34, 0x12, 0x68, 0x00, 0x2a,
+ 0x00, 0xd1, 0x48, 0x70, 0x00, 0x2c, 0x23, 0xd0,
+ 0x3c, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x35, 0x1c,
+ 0x30, 0x35, 0xe8, 0x79, 0x01, 0x28, 0x01, 0xd0,
+ 0x05, 0x28, 0x01, 0xd1, 0x06, 0x20, 0xe8, 0x71,
+ 0x20, 0x22, 0x31, 0x1d, 0x20, 0x68, 0xf2, 0xf7,
+ 0xde, 0xfa, 0xb0, 0x8c, 0xa0, 0x80, 0xe8, 0x79,
+ 0xa0, 0x71, 0xa8, 0x79, 0x00, 0x25, 0xa0, 0x63,
+ 0x01, 0x20, 0x60, 0x81, 0x00, 0x20, 0xe0, 0x60,
+ 0x2e, 0x36, 0xe8, 0x00, 0x00, 0x19, 0x18, 0x30,
+ 0x08, 0x22, 0x3c, 0x00, 0x5c, 0xdf, 0x00, 0x00,
+ 0x31, 0x1c, 0xf2, 0xf7, 0xcb, 0xfa, 0x01, 0x35,
+ 0x04, 0x2d, 0xf5, 0xd3, 0x01, 0x20, 0x70, 0xbd,
+ 0x68, 0x61, 0x01, 0x00, 0xdc, 0x62, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x7a, 0x01, 0x28,
+ 0x01, 0xd0, 0x03, 0x28, 0x07, 0xd1, 0x20, 0x1d,
+ 0x03, 0xf0, 0x40, 0xff, 0x00, 0x28, 0x02, 0xd0,
+ 0xa1, 0x7a, 0x40, 0x30, 0x41, 0x73, 0xe0, 0x7a,
+ 0x00, 0x28, 0x01, 0xd0, 0x3c, 0x00, 0x98, 0xdf,
+ 0x00, 0x00, 0x03, 0x28, 0x02, 0xd1, 0xa0, 0x7a,
+ 0x02, 0x49, 0x08, 0x70, 0x01, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5,
+ 0x0e, 0x1c, 0x03, 0x21, 0x04, 0x1c, 0x30, 0x1c,
+ 0xfc, 0xf7, 0xe1, 0xfb, 0x00, 0x28, 0x01, 0xd0,
+ 0x85, 0x78, 0x00, 0xe0, 0x00, 0x25, 0x0b, 0x48,
+ 0x32, 0x1c, 0x00, 0x68, 0x03, 0x68, 0x20, 0x7c,
+ 0x80, 0x07, 0xc0, 0x0f, 0x21, 0x1c, 0x3c, 0x00,
+ 0xd4, 0xdf, 0x00, 0x00, 0xf7, 0xf7, 0x62, 0xfe,
+ 0x00, 0x28, 0x05, 0xd0, 0x01, 0x21, 0x28, 0x1c,
+ 0xfd, 0xf7, 0xfe, 0xfb, 0x00, 0x20, 0x00, 0xe0,
+ 0x08, 0x20, 0x03, 0xf0, 0xc5, 0xff, 0x00, 0x20,
+ 0x70, 0xbd, 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00,
+ 0x80, 0xb5, 0x42, 0x68, 0x00, 0x88, 0x01, 0x21,
+ 0x49, 0x06, 0x08, 0x43, 0x2d, 0x21, 0x05, 0xf0,
+ 0xd3, 0xfb, 0x80, 0xbd, 0x03, 0x49, 0x01, 0x20,
+ 0x3c, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x49, 0x78,
+ 0x02, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47,
+ 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x8c, 0xb5,
+ 0x01, 0x28, 0x1f, 0xd1, 0x00, 0x29, 0x0d, 0xd0,
+ 0x01, 0x29, 0x0b, 0xd0, 0x02, 0x29, 0x01, 0xd0,
+ 0x03, 0x29, 0x16, 0xd1, 0x00, 0x20, 0xf9, 0xf7,
+ 0x14, 0xfc, 0x93, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0x00, 0x20, 0x08, 0xe0, 0x01, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x3c, 0x00, 0x4c, 0xe0, 0x00, 0x00,
+ 0xf9, 0xf7, 0x0a, 0xfc, 0x83, 0x20, 0x00, 0xab,
+ 0x18, 0x80, 0x02, 0x20, 0x00, 0xf0, 0xcc, 0xf8,
+ 0x01, 0x90, 0x68, 0x46, 0xff, 0xf7, 0x3a, 0xfa,
+ 0x8c, 0xbd, 0x01, 0x21, 0x0e, 0x20, 0xf3, 0xf7,
+ 0x1b, 0xf9, 0xf9, 0xe7, 0xff, 0xb5, 0x17, 0x1c,
+ 0x1e, 0x1c, 0x14, 0x21, 0x00, 0x20, 0x83, 0xb0,
+ 0xf3, 0xf7, 0xac, 0xfa, 0x05, 0x1c, 0x04, 0x68,
+ 0x12, 0x20, 0x00, 0xab, 0x3c, 0x00, 0x88, 0xe0,
+ 0x00, 0x00, 0x98, 0x80, 0x06, 0x22, 0x60, 0x1d,
+ 0x03, 0x99, 0xf2, 0xf7, 0x32, 0xfa, 0x00, 0x20,
+ 0x20, 0x71, 0x27, 0x73, 0x04, 0x99, 0x20, 0x1c,
+ 0xe1, 0x72, 0x31, 0x1c, 0x06, 0x22, 0x0d, 0x30,
+ 0xf2, 0xf7, 0x27, 0xfa, 0x02, 0x95, 0x01, 0xa8,
+ 0xff, 0xf7, 0x13, 0xfa, 0x07, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0f, 0x1c,
+ 0x0c, 0x21, 0x00, 0x20, 0xf3, 0xf7, 0x3c, 0x00,
+ 0xc4, 0xe0, 0x00, 0x00, 0x89, 0xfa, 0x05, 0x68,
+ 0x04, 0x1c, 0x28, 0x1d, 0x06, 0x22, 0x31, 0x1c,
+ 0xf2, 0xf7, 0x12, 0xfa, 0x6f, 0x81, 0x20, 0x1c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0d, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf3, 0xf7,
+ 0x77, 0xfa, 0x01, 0x68, 0x8c, 0x71, 0x8d, 0x80,
+ 0xb0, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x0e, 0x1c,
+ 0x10, 0x21, 0x17, 0x1c, 0x00, 0x20, 0xf3, 0xf7,
+ 0x3c, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x6b, 0xfa,
+ 0x04, 0x68, 0x05, 0x1c, 0x20, 0x1d, 0x06, 0x22,
+ 0x00, 0x99, 0xf2, 0xf7, 0xf4, 0xf9, 0x66, 0x81,
+ 0xa7, 0x81, 0x28, 0x1c, 0xfe, 0xbd, 0xf3, 0xb5,
+ 0x0c, 0x1c, 0x08, 0x21, 0x00, 0x20, 0x85, 0xb0,
+ 0xf3, 0xf7, 0x59, 0xfa, 0x06, 0x1c, 0x07, 0x68,
+ 0xe0, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x05, 0x99,
+ 0x01, 0x29, 0x04, 0xd1, 0x05, 0x98, 0x38, 0x71,
+ 0x00, 0x20, 0x3c, 0x00, 0x3c, 0xe1, 0x00, 0x00,
+ 0x78, 0x71, 0x56, 0xe0, 0x03, 0x68, 0x01, 0x21,
+ 0x03, 0x93, 0x20, 0x69, 0x02, 0x90, 0xfc, 0xf7,
+ 0x17, 0xfb, 0x05, 0x1c, 0x02, 0x98, 0x32, 0x21,
+ 0xfc, 0xf7, 0x12, 0xfb, 0x00, 0x22, 0xd2, 0x43,
+ 0x01, 0x1c, 0x28, 0x1c, 0x04, 0xab, 0xf7, 0xf7,
+ 0xb9, 0xf8, 0x00, 0x28, 0x04, 0xd1, 0x30, 0x1c,
+ 0xf3, 0xf7, 0x02, 0xfa, 0x00, 0x26, 0x3c, 0xe0,
+ 0x00, 0x2d, 0x05, 0xd0, 0x3c, 0x00, 0x78, 0xe1,
+ 0x00, 0x00, 0x68, 0x78, 0x09, 0x38, 0x07, 0x28,
+ 0x01, 0xd8, 0x32, 0x20, 0x28, 0x70, 0x1c, 0x21,
+ 0x00, 0x20, 0xf3, 0xf7, 0x26, 0xfa, 0x01, 0x90,
+ 0x05, 0x68, 0x01, 0x1c, 0x30, 0x1c, 0xf3, 0xf7,
+ 0x40, 0xf9, 0xe0, 0x68, 0xf3, 0xf7, 0x0b, 0xfa,
+ 0xa8, 0x61, 0xe1, 0x68, 0x01, 0x98, 0xf3, 0xf7,
+ 0x38, 0xf9, 0x00, 0x20, 0xe0, 0x60, 0x05, 0x98,
+ 0x80, 0x21, 0x08, 0x43, 0x38, 0x71, 0x3c, 0x00,
+ 0xb4, 0xe1, 0x00, 0x00, 0x01, 0x20, 0x21, 0x1c,
+ 0x14, 0x31, 0x78, 0x71, 0x28, 0x1c, 0x06, 0x22,
+ 0xf2, 0xf7, 0x9a, 0xf9, 0x02, 0x9a, 0x29, 0x20,
+ 0x00, 0x92, 0x00, 0x5d, 0x01, 0x21, 0xe2, 0x6a,
+ 0x08, 0x28, 0x00, 0xd0, 0x00, 0x21, 0x28, 0x1c,
+ 0x03, 0x9b, 0x02, 0xf0, 0x9d, 0xff, 0xa0, 0x6b,
+ 0x28, 0x61, 0x20, 0x6c, 0x68, 0x61, 0x7f, 0x30,
+ 0x01, 0xd1, 0x0f, 0x20, 0x68, 0x61, 0x30, 0x1c,
+ 0x3c, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x08, 0x21,
+ 0x00, 0x20, 0xf3, 0xf7, 0xec, 0xf9, 0x01, 0x68,
+ 0x0c, 0x71, 0x10, 0xbd, 0x00, 0x00, 0x01, 0x48,
+ 0x00, 0x68, 0x70, 0x47, 0x00, 0x00, 0x28, 0x61,
+ 0x01, 0x00, 0x01, 0x49, 0x08, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x1c,
+ 0x01, 0x20, 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5,
+ 0x2d, 0x21, 0x3c, 0x00, 0x2c, 0xe2, 0x00, 0x00,
+ 0x05, 0xf0, 0xc0, 0xfa, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x01, 0x28, 0x07, 0xd0, 0xf1, 0x28,
+ 0x25, 0xd0, 0xf3, 0x28, 0x27, 0xd1, 0x02, 0x20,
+ 0x02, 0xf0, 0xbc, 0xf9, 0x80, 0xbd, 0x00, 0x29,
+ 0x1a, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0xf2, 0x29,
+ 0xf8, 0xd1, 0x88, 0x21, 0x1c, 0xe0, 0x10, 0x48,
+ 0x01, 0x78, 0x00, 0x29, 0x05, 0xd1, 0x40, 0x78,
+ 0x01, 0x28, 0xef, 0xd1, 0x3c, 0x00, 0x68, 0xe2,
+ 0x00, 0x00, 0x00, 0xf0, 0x16, 0xfa, 0x80, 0xbd,
+ 0x0b, 0x48, 0x14, 0x30, 0x00, 0x89, 0xfc, 0xf7,
+ 0x5a, 0xfc, 0x01, 0x1c, 0x01, 0x22, 0x0f, 0x20,
+ 0x05, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x04, 0xf0,
+ 0x52, 0xfa, 0x80, 0xbd, 0x00, 0x20, 0xfa, 0xf7,
+ 0x32, 0xfe, 0x80, 0xbd, 0x02, 0x21, 0x0f, 0x20,
+ 0xf3, 0xf7, 0x05, 0xf8, 0x80, 0xbd, 0x84, 0x66,
+ 0x01, 0x00, 0x01, 0x48, 0x00, 0x78, 0x3c, 0x00,
+ 0xa4, 0xe2, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x74, 0x66, 0x01, 0x00, 0x01, 0x49, 0x00, 0x20,
+ 0x48, 0x60, 0x70, 0x47, 0xec, 0x65, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0e, 0x1c, 0x13, 0x4d, 0x01, 0x1c,
+ 0x14, 0x1c, 0x68, 0x22, 0x28, 0x1c, 0x1f, 0x1c,
+ 0x0c, 0x30, 0xf2, 0xf7, 0x71, 0xf9, 0x0f, 0x49,
+ 0x00, 0x20, 0xac, 0x39, 0x48, 0x60, 0x01, 0x21,
+ 0x29, 0x60, 0x19, 0x21, 0x19, 0x2c, 0x6e, 0x67,
+ 0x3c, 0x00, 0xe0, 0xe2, 0x00, 0x00, 0x00, 0xd3,
+ 0x21, 0x1c, 0x29, 0x81, 0x09, 0x49, 0x14, 0x39,
+ 0x88, 0x73, 0x8f, 0x74, 0xc8, 0x78, 0x01, 0x28,
+ 0x08, 0xd0, 0x01, 0x21, 0x0f, 0x20, 0x05, 0xf0,
+ 0x9c, 0xf9, 0x19, 0x20, 0xfc, 0xf7, 0x15, 0xfc,
+ 0xfb, 0xf7, 0x99, 0xf8, 0x01, 0x20, 0xf8, 0xbd,
+ 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x28, 0x02, 0xd1, 0x00, 0xf0, 0x2f, 0xf8,
+ 0x80, 0xbd, 0x3c, 0x00, 0x1c, 0xe3, 0x00, 0x00,
+ 0x01, 0x21, 0x1d, 0x20, 0xf2, 0xf7, 0xc0, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x01, 0x20, 0x07, 0x49, 0x00, 0x05, 0x80, 0xb5,
+ 0x88, 0x60, 0x00, 0x22, 0x80, 0x21, 0x16, 0x20,
+ 0x05, 0xf0, 0x4c, 0xf9, 0x04, 0xf0, 0x34, 0xfd,
+ 0x02, 0x49, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x24, 0x6d, 0x01, 0x00,
+ 0x06, 0x4a, 0x80, 0xb5, 0x3c, 0x00, 0x58, 0xe3,
+ 0x00, 0x00, 0xd1, 0x6a, 0x81, 0x42, 0x07, 0xd1,
+ 0x10, 0x7f, 0x24, 0x23, 0x04, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0xc0, 0x68, 0xf2, 0xf7, 0x35, 0xf8,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46,
+ 0x01, 0x00, 0x1d, 0x48, 0x1c, 0xb5, 0x00, 0x78,
+ 0x00, 0x28, 0x2d, 0xd0, 0x1c, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x29, 0xd0, 0x1a, 0x4a, 0x1a, 0x4b,
+ 0x04, 0x32, 0x11, 0x68, 0x1c, 0x69, 0x3c, 0x00,
+ 0x94, 0xe3, 0x00, 0x00, 0xa1, 0x42, 0x22, 0xd1,
+ 0x51, 0x68, 0x5b, 0x69, 0x99, 0x42, 0x1f, 0xd1,
+ 0x16, 0x49, 0x49, 0x68, 0x93, 0x68, 0xc9, 0x1a,
+ 0x81, 0x42, 0x19, 0xd2, 0xd0, 0x68, 0x14, 0x49,
+ 0x01, 0x30, 0xd0, 0x60, 0x09, 0x68, 0x88, 0x42,
+ 0x0c, 0xd9, 0x06, 0x22, 0xff, 0x21, 0x68, 0x46,
+ 0xf2, 0xf7, 0x2e, 0xf9, 0xf3, 0xf7, 0xac, 0xfc,
+ 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, 0x68, 0x46,
+ 0x3c, 0x00, 0xd0, 0xe3, 0x00, 0x00, 0x02, 0xf0,
+ 0xce, 0xf9, 0x01, 0x22, 0x1d, 0x20, 0x0a, 0x49,
+ 0x05, 0xf0, 0xf7, 0xf8, 0x1c, 0xbd, 0xf7, 0xf7,
+ 0x88, 0xf9, 0x04, 0x22, 0x81, 0x18, 0x08, 0x1c,
+ 0xfc, 0xf7, 0x27, 0xfb, 0xf6, 0xe7, 0x1c, 0x75,
+ 0x01, 0x00, 0x44, 0x75, 0x01, 0x00, 0x28, 0x61,
+ 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0xf0, 0x59,
+ 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x68, 0x3c, 0x00, 0x0c, 0xe4, 0x00, 0x00,
+ 0x00, 0x29, 0x15, 0xd1, 0x00, 0x79, 0x02, 0x28,
+ 0x12, 0xd1, 0x08, 0x1c, 0xf7, 0xf7, 0x80, 0xf8,
+ 0x00, 0x28, 0x0d, 0xd0, 0x03, 0xf0, 0xf2, 0xfc,
+ 0x08, 0x30, 0x41, 0x8f, 0x00, 0x29, 0x07, 0xd1,
+ 0x80, 0x69, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x79,
+ 0x06, 0x28, 0x01, 0xd1, 0xfc, 0xf7, 0x18, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, 0x00, 0x20,
+ 0x88, 0x62, 0x70, 0x47, 0x3c, 0x00, 0x48, 0xe4,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x05, 0x4d, 0x04, 0x1c, 0xa9, 0x1d, 0xff, 0xf7,
+ 0x14, 0xf8, 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18,
+ 0xf2, 0xf7, 0x4b, 0xf8, 0xb0, 0xbd, 0x70, 0x7c,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x15, 0x1c,
+ 0xff, 0xf7, 0x07, 0xf8, 0x06, 0x22, 0x29, 0x1c,
+ 0xa0, 0x18, 0xf2, 0xf7, 0x3e, 0xf8, 0xb0, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x0a, 0x30, 0x3c, 0x00,
+ 0x84, 0xe4, 0x00, 0x00, 0xf7, 0xf7, 0xbc, 0xf9,
+ 0x01, 0x23, 0x00, 0x28, 0x03, 0xd0, 0x05, 0x48,
+ 0x00, 0x78, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x22,
+ 0x00, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xc6, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x03, 0xf0, 0xbb, 0xfd, 0x80, 0xbd,
+ 0xb0, 0xb5, 0x05, 0x4d, 0xac, 0x79, 0x0a, 0x1c,
+ 0x3c, 0x00, 0xc0, 0xe4, 0x00, 0x00, 0x01, 0x1c,
+ 0x01, 0x23, 0x01, 0x20, 0x03, 0xf0, 0xb1, 0xfd,
+ 0xac, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x1c,
+ 0x88, 0x07, 0x02, 0xd5, 0xf6, 0xf7, 0x47, 0xfa,
+ 0x10, 0xe0, 0x60, 0x07, 0x0e, 0xd5, 0x17, 0x4f,
+ 0xa3, 0x20, 0xc0, 0x5d, 0x15, 0x4d, 0x10, 0x28,
+ 0x00, 0xd3, 0x15, 0x4d, 0x04, 0xf0, 0x59, 0xfc,
+ 0xb9, 0x6f, 0x3c, 0x00, 0xfc, 0xe4, 0x00, 0x00,
+ 0x40, 0x1a, 0x29, 0x1a, 0x01, 0x20, 0xf6, 0xf7,
+ 0xc1, 0xfa, 0xe0, 0x07, 0x11, 0x49, 0xc0, 0x0f,
+ 0x48, 0x60, 0x0c, 0xd0, 0x0d, 0x4c, 0x44, 0x3c,
+ 0x20, 0x78, 0x03, 0x28, 0x0f, 0xd1, 0x00, 0x2e,
+ 0x06, 0xd0, 0xf6, 0xf7, 0xf9, 0xf9, 0x01, 0x1c,
+ 0x01, 0x20, 0xf6, 0xf7, 0xaf, 0xfa, 0xf8, 0xbd,
+ 0x09, 0x49, 0x01, 0x20, 0xf6, 0xf7, 0xaa, 0xfa,
+ 0x01, 0x20, 0x20, 0x70, 0x3c, 0x00, 0x38, 0xe5,
+ 0x00, 0x00, 0xf7, 0xe7, 0x01, 0x21, 0x30, 0x1c,
+ 0xf6, 0xf7, 0x89, 0xfa, 0xf2, 0xe7, 0xa6, 0x0e,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0xc4, 0x09,
+ 0x00, 0x00, 0xb0, 0x57, 0x01, 0x00, 0x40, 0x42,
+ 0x0f, 0x00, 0x80, 0xb5, 0x06, 0x28, 0x04, 0xdb,
+ 0x05, 0x21, 0xff, 0x20, 0xf2, 0xf7, 0x9f, 0xfe,
+ 0x80, 0xbd, 0x03, 0x4a, 0xc0, 0x00, 0x11, 0x50,
+ 0x01, 0x21, 0x80, 0x18, 0x01, 0x71, 0x3c, 0x00,
+ 0x74, 0xe5, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0x9c, 0x5a, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00,
+ 0xb0, 0xb5, 0x08, 0x4c, 0x25, 0x1d, 0x28, 0x1c,
+ 0x21, 0x68, 0x00, 0xf0, 0xf1, 0xfe, 0x00, 0x28,
+ 0x03, 0xd1, 0x01, 0x21, 0x04, 0x48, 0xf2, 0xf7,
+ 0xcf, 0xfa, 0x28, 0x1c, 0x21, 0x68, 0x00, 0xf0,
+ 0xfb, 0xfe, 0xb0, 0xbd, 0xc0, 0x60, 0x01, 0x00,
+ 0x3c, 0x00, 0xb0, 0xe5, 0x00, 0x00, 0x2c, 0x10,
+ 0x07, 0x00, 0xb0, 0xb5, 0x10, 0x4d, 0x0c, 0x1c,
+ 0xa8, 0x68, 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0,
+ 0xf4, 0xfb, 0x28, 0x60, 0x20, 0x1c, 0x04, 0xf0,
+ 0x38, 0xfb, 0x01, 0x21, 0x03, 0x20, 0x03, 0xf0,
+ 0xc4, 0xfe, 0x04, 0xf0, 0xf0, 0xfb, 0xa8, 0x68,
+ 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, 0xe5, 0xfb,
+ 0x29, 0x68, 0x00, 0x1b, 0x40, 0x1a, 0x69, 0x68,
+ 0x40, 0x18, 0x3c, 0x00, 0xec, 0xe5, 0x00, 0x00,
+ 0x41, 0x08, 0x40, 0x18, 0x28, 0x60, 0x01, 0x20,
+ 0xa8, 0x60, 0xb0, 0xbd, 0xd0, 0x60, 0x01, 0x00,
+ 0xf8, 0xb5, 0x1f, 0x4e, 0x00, 0x24, 0xb0, 0x68,
+ 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, 0xd0, 0xfb,
+ 0x70, 0x60, 0x05, 0xf0, 0x61, 0xf8, 0x04, 0xf0,
+ 0x8f, 0xfb, 0x05, 0x1c, 0xf9, 0xf7, 0x66, 0xfe,
+ 0x31, 0x68, 0x18, 0x4a, 0x41, 0x18, 0x12, 0x68,
+ 0xe8, 0x0b, 0x00, 0x2a, 0x3c, 0x00, 0x28, 0xe6,
+ 0x00, 0x00, 0x00, 0xd1, 0xa8, 0x0a, 0x40, 0x18,
+ 0x85, 0x42, 0x1f, 0xd9, 0x14, 0x4f, 0x2d, 0x1a,
+ 0x38, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab,
+ 0x19, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x05, 0xf0,
+ 0x6e, 0xf8, 0x00, 0x28, 0x03, 0xd1, 0x02, 0x21,
+ 0x8f, 0x20, 0xf2, 0xf7, 0x28, 0xfe, 0x29, 0x1c,
+ 0x0c, 0x48, 0xf2, 0x68, 0xf8, 0xf7, 0x09, 0xfc,
+ 0x00, 0x28, 0x04, 0xd0, 0x01, 0x1c, 0x3c, 0x00,
+ 0x64, 0xe6, 0x00, 0x00, 0x28, 0x1c, 0xff, 0xf7,
+ 0xa5, 0xff, 0x01, 0x24, 0x00, 0xab, 0x18, 0x88,
+ 0xf8, 0x84, 0x05, 0xf0, 0x47, 0xf8, 0x20, 0x1c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00,
+ 0xf4, 0x74, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x89, 0x13, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0xc8, 0x60, 0x70, 0x47, 0xd0, 0x60, 0x01, 0x00,
+ 0x06, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0x28,
+ 0x3c, 0x00, 0xa0, 0xe6, 0x00, 0x00, 0x07, 0xd1,
+ 0x04, 0x48, 0xac, 0x38, 0x01, 0x69, 0x03, 0x48,
+ 0x00, 0xf0, 0x79, 0xfe, 0xf3, 0xf7, 0x2b, 0xfa,
+ 0x80, 0xbd, 0x98, 0x66, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0x80, 0xb5, 0x42, 0x78, 0x81, 0x68,
+ 0x00, 0x79, 0x03, 0xf0, 0xde, 0xff, 0x00, 0x28,
+ 0x01, 0xd1, 0xf5, 0xf7, 0xb6, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x1f, 0xb5, 0x04, 0xf0, 0x69, 0xfb,
+ 0xf6, 0xf7, 0x3c, 0x00, 0xdc, 0xe6, 0x00, 0x00,
+ 0x91, 0xff, 0x16, 0x4c, 0x02, 0x28, 0x03, 0xd1,
+ 0xff, 0xf7, 0xdc, 0xfd, 0x04, 0x28, 0x02, 0xd3,
+ 0x00, 0x20, 0x20, 0x70, 0x1f, 0xbd, 0xfb, 0xf7,
+ 0xf7, 0xfc, 0x00, 0x28, 0xfa, 0xd1, 0x60, 0x6a,
+ 0x00, 0x28, 0xf7, 0xd0, 0x20, 0x78, 0x80, 0x07,
+ 0xf4, 0xd4, 0x09, 0x21, 0x16, 0x20, 0x04, 0xf0,
+ 0x93, 0xff, 0x01, 0x20, 0x20, 0x70, 0x0b, 0x4c,
+ 0x09, 0x49, 0x02, 0x90, 0x3c, 0x00, 0x18, 0xe7,
+ 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, 0x04, 0xf0,
+ 0x46, 0xfb, 0x00, 0x19, 0x03, 0x90, 0x68, 0x46,
+ 0xfd, 0xf7, 0xb5, 0xfb, 0x00, 0x22, 0x16, 0x21,
+ 0x84, 0x20, 0x05, 0xf0, 0x3e, 0xf8, 0xdc, 0xe7,
+ 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0x61, 0xed,
+ 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x23, 0x48,
+ 0x70, 0xb5, 0x80, 0x78, 0x9c, 0xb0, 0x01, 0x28,
+ 0x3e, 0xd1, 0x20, 0x4c, 0x09, 0xa8, 0x3c, 0x00,
+ 0x54, 0xe7, 0x00, 0x00, 0x80, 0x3c, 0x61, 0x1c,
+ 0xfe, 0xf7, 0x92, 0xfe, 0x04, 0x20, 0x11, 0xad,
+ 0x68, 0x72, 0xa0, 0x6f, 0x19, 0xa9, 0x18, 0x90,
+ 0x7c, 0x20, 0x00, 0x5d, 0x01, 0x26, 0x08, 0x71,
+ 0x1d, 0x20, 0x00, 0x5d, 0x00, 0x28, 0x06, 0xd0,
+ 0x10, 0x96, 0x12, 0x96, 0xfc, 0xf7, 0xf6, 0xfa,
+ 0x28, 0x72, 0x20, 0x7a, 0x11, 0x90, 0xf3, 0xf7,
+ 0xcd, 0xff, 0x6a, 0x21, 0x08, 0x53, 0x40, 0x34,
+ 0x3c, 0x00, 0x90, 0xe7, 0x00, 0x00, 0x00, 0x22,
+ 0x01, 0xa9, 0x06, 0xa8, 0xf6, 0xf7, 0xcd, 0xff,
+ 0x21, 0x1c, 0x00, 0x20, 0xfb, 0xf7, 0xcb, 0xfb,
+ 0x06, 0xa9, 0xfb, 0xf7, 0xc8, 0xfb, 0x01, 0xa9,
+ 0xfb, 0xf7, 0xc5, 0xfb, 0x0a, 0x49, 0x09, 0x68,
+ 0x00, 0x29, 0x07, 0xd0, 0x33, 0x1c, 0x0a, 0x22,
+ 0x69, 0x46, 0xfb, 0xf7, 0xda, 0xfb, 0x00, 0x9a,
+ 0x07, 0x21, 0x91, 0x70, 0x0c, 0x90, 0x09, 0xa8,
+ 0xfe, 0xf7, 0x3c, 0x00, 0xcc, 0xe7, 0x00, 0x00,
+ 0x7b, 0xfe, 0x1c, 0xb0, 0x70, 0xbd, 0x00, 0x00,
+ 0x84, 0x66, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00,
+ 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xff, 0x22,
+ 0x01, 0x68, 0x12, 0x02, 0x0e, 0x1c, 0x08, 0x7b,
+ 0x49, 0x7b, 0x09, 0x02, 0x11, 0x40, 0x08, 0x43,
+ 0x05, 0x1c, 0x31, 0x1c, 0x06, 0x22, 0xa0, 0x18,
+ 0xf1, 0xf7, 0x7c, 0xfe, 0x06, 0x22, 0xb1, 0x18,
+ 0x20, 0x1c, 0xf1, 0xf7, 0x3c, 0x00, 0x08, 0xe8,
+ 0x00, 0x00, 0x77, 0xfe, 0x28, 0x0a, 0x29, 0x02,
+ 0x08, 0x43, 0x00, 0x04, 0x03, 0x21, 0x49, 0x02,
+ 0x00, 0x0c, 0x88, 0x42, 0x08, 0xd2, 0xe0, 0x68,
+ 0x01, 0x89, 0x0e, 0x39, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x0e, 0x31, 0x01, 0x60, 0xf8, 0xbd,
+ 0x00, 0x26, 0x20, 0x1c, 0x10, 0x30, 0x03, 0xf0,
+ 0xe8, 0xfa, 0x21, 0x8b, 0x00, 0x29, 0x05, 0xd1,
+ 0xe1, 0x7d, 0x00, 0x29, 0x0b, 0xd0, 0x3c, 0x00,
+ 0x44, 0xe8, 0x00, 0x00, 0x80, 0x69, 0x80, 0x07,
+ 0x08, 0xd4, 0xe0, 0x68, 0x01, 0x26, 0x01, 0x89,
+ 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68,
+ 0x02, 0x31, 0x06, 0xe0, 0xe0, 0x68, 0x01, 0x89,
+ 0x06, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68,
+ 0x06, 0x31, 0x01, 0x60, 0x14, 0x49, 0x00, 0x20,
+ 0x0b, 0x1f, 0x42, 0x00, 0x9a, 0x5a, 0xaa, 0x42,
+ 0x02, 0xd1, 0x11, 0x49, 0x06, 0x31, 0x02, 0xe0,
+ 0x3c, 0x00, 0x80, 0xe8, 0x00, 0x00, 0x01, 0x30,
+ 0x02, 0x28, 0xf5, 0xd3, 0xe0, 0x68, 0x06, 0x22,
+ 0x00, 0x68, 0xf1, 0xf7, 0x34, 0xfe, 0x01, 0x2e,
+ 0xcb, 0xd1, 0x81, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0xe1, 0x7d, 0x20, 0x8b, 0x49, 0x03, 0x08, 0x43,
+ 0x31, 0x03, 0x08, 0x43, 0x00, 0x04, 0x00, 0x0c,
+ 0x01, 0x0a, 0x00, 0x02, 0x08, 0x43, 0x58, 0x80,
+ 0xe0, 0x68, 0x19, 0x88, 0x00, 0x68, 0xc1, 0x80,
+ 0x59, 0x88, 0x3c, 0x00, 0xbc, 0xe8, 0x00, 0x00,
+ 0x01, 0x81, 0xb5, 0xe7, 0x6a, 0x46, 0x01, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x89, 0x06, 0x22,
+ 0x08, 0x31, 0x01, 0x81, 0x04, 0x68, 0x04, 0x49,
+ 0x08, 0x3c, 0x04, 0x60, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x0d, 0xfe, 0xe5, 0x80, 0xb0, 0xbd, 0x00, 0x00,
+ 0x6a, 0x46, 0x01, 0x00, 0xf8, 0xb5, 0x00, 0x29,
+ 0x01, 0xd0, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x20,
+ 0xf8, 0xbd, 0x09, 0x04, 0x3c, 0x00, 0xf8, 0xe8,
+ 0x00, 0x00, 0x09, 0x0c, 0xf2, 0xf7, 0x43, 0xff,
+ 0x06, 0x1c, 0x05, 0x1c, 0x00, 0x27, 0x20, 0xe0,
+ 0x2c, 0x89, 0x29, 0x68, 0x02, 0x2c, 0x01, 0xd2,
+ 0x02, 0x20, 0x01, 0xe0, 0x48, 0x78, 0x02, 0x30,
+ 0x84, 0x42, 0x02, 0xdd, 0x24, 0x1a, 0x09, 0x18,
+ 0xf4, 0xe7, 0x84, 0x42, 0x10, 0xd0, 0x01, 0x1b,
+ 0x0a, 0x04, 0x01, 0x04, 0x09, 0x0c, 0x12, 0x0c,
+ 0x28, 0x1c, 0xf2, 0xf7, 0x9e, 0xfe, 0x3c, 0x00,
+ 0x34, 0xe9, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1,
+ 0xe8, 0x68, 0xf2, 0xf7, 0x2d, 0xfe, 0xef, 0x60,
+ 0x28, 0x89, 0x00, 0x1b, 0x28, 0x81, 0xed, 0x68,
+ 0x00, 0x2d, 0xdc, 0xd1, 0x30, 0x1c, 0xd1, 0xe7,
+ 0xf8, 0xb5, 0x85, 0x68, 0x04, 0x1c, 0x80, 0x69,
+ 0x2e, 0x1c, 0x00, 0x28, 0x0d, 0xd0, 0x71, 0x68,
+ 0xf2, 0xf7, 0xf6, 0xfd, 0xa0, 0x69, 0xf2, 0xf7,
+ 0x17, 0xfe, 0x06, 0xe0, 0x00, 0x21, 0xc1, 0x60,
+ 0x3c, 0x00, 0x70, 0xe9, 0x00, 0x00, 0xf1, 0x60,
+ 0xa0, 0x8d, 0x36, 0x68, 0x01, 0x38, 0xa0, 0x85,
+ 0xf0, 0x68, 0x00, 0x28, 0xf5, 0xd1, 0x30, 0x68,
+ 0xa0, 0x60, 0xa0, 0x8d, 0x01, 0x38, 0x00, 0x04,
+ 0x00, 0x0c, 0xa0, 0x85, 0x02, 0xd0, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x39, 0xf8, 0x2a, 0x4f, 0x2a, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x06, 0x21,
+ 0x68, 0x68, 0xfa, 0xf7, 0x7c, 0xfd, 0x68, 0x68,
+ 0x00, 0x68, 0x3c, 0x00, 0xac, 0xe9, 0x00, 0x00,
+ 0x81, 0x78, 0x00, 0x29, 0x2b, 0xd1, 0xc1, 0x78,
+ 0x00, 0x29, 0x30, 0xd1, 0x21, 0x8e, 0x01, 0x39,
+ 0x21, 0x86, 0xfb, 0xf7, 0x15, 0xf8, 0xa1, 0x6a,
+ 0x08, 0x1a, 0xa0, 0x62, 0xe1, 0x69, 0x88, 0x42,
+ 0x03, 0xd9, 0x04, 0x21, 0x02, 0x20, 0xf2, 0xf7,
+ 0x67, 0xfc, 0xb8, 0x68, 0x00, 0x28, 0x1e, 0xd0,
+ 0x1a, 0x49, 0x20, 0x8e, 0x49, 0x68, 0x0c, 0x22,
+ 0x52, 0x1a, 0x90, 0x42, 0x3c, 0x00, 0xe8, 0xe9,
+ 0x00, 0x00, 0x08, 0xd3, 0x19, 0x23, 0x9b, 0x01,
+ 0xaf, 0x22, 0x92, 0x01, 0x59, 0x43, 0xa0, 0x6a,
+ 0x51, 0x1a, 0x88, 0x42, 0x0e, 0xd2, 0x00, 0x21,
+ 0x0c, 0x20, 0x03, 0xf0, 0xac, 0xfc, 0x00, 0x20,
+ 0xb8, 0x60, 0x07, 0xe0, 0x01, 0x29, 0x05, 0xd1,
+ 0xc0, 0x78, 0x17, 0x28, 0x02, 0xd1, 0xa0, 0x8e,
+ 0x01, 0x38, 0xa0, 0x86, 0x2a, 0x1d, 0x06, 0xca,
+ 0xe0, 0x68, 0x63, 0x69, 0xf1, 0xf7, 0x3c, 0x00,
+ 0x24, 0xea, 0x00, 0x00, 0xdc, 0xfc, 0xb5, 0x42,
+ 0x01, 0xd0, 0x2d, 0x68, 0xb4, 0xe7, 0xa0, 0x8d,
+ 0x00, 0x28, 0x03, 0xd1, 0x05, 0x48, 0xb9, 0x69,
+ 0x00, 0xf0, 0x9e, 0xfc, 0xf8, 0xbd, 0x00, 0x00,
+ 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, 0x01, 0x00,
+ 0x18, 0x57, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00,
+ 0x89, 0x07, 0x07, 0x4b, 0xca, 0x0f, 0x80, 0xb5,
+ 0x19, 0x7c, 0x00, 0x29, 0x06, 0xd0, 0x81, 0x43,
+ 0x3c, 0x00, 0x60, 0xea, 0x00, 0x00, 0x19, 0x74,
+ 0x03, 0xd1, 0x07, 0x21, 0x15, 0x20, 0x04, 0xf0,
+ 0xa2, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20,
+ 0xff, 0xf7, 0xe9, 0xff, 0x80, 0xbd, 0x80, 0xb5,
+ 0x01, 0x1c, 0x02, 0x20, 0xff, 0xf7, 0xe3, 0xff,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x1b, 0x4c, 0x60, 0x68,
+ 0xfc, 0xf7, 0x2f, 0xff, 0x20, 0x68, 0x00, 0x25,
+ 0x40, 0x68, 0x3c, 0x00, 0x9c, 0xea, 0x00, 0x00,
+ 0x00, 0x28, 0x03, 0xd0, 0xfd, 0xf7, 0x18, 0xfc,
+ 0x20, 0x68, 0x45, 0x60, 0x60, 0x68, 0xfc, 0xf7,
+ 0xc5, 0xfe, 0x14, 0x48, 0x61, 0x68, 0x00, 0xf0,
+ 0x61, 0xfc, 0xa0, 0x7a, 0x01, 0x28, 0x05, 0xd0,
+ 0x02, 0x28, 0x03, 0xd0, 0x20, 0x68, 0x00, 0x68,
+ 0x00, 0xf0, 0xde, 0xf8, 0x01, 0x21, 0x1f, 0x20,
+ 0x04, 0xf0, 0xb2, 0xfd, 0x00, 0x21, 0x1f, 0x20,
+ 0x04, 0xf0, 0xae, 0xfd, 0x3c, 0x00, 0xd8, 0xea,
+ 0x00, 0x00, 0x02, 0x21, 0x1f, 0x20, 0x04, 0xf0,
+ 0xaa, 0xfd, 0xa5, 0x72, 0x21, 0x68, 0x2c, 0x20,
+ 0x40, 0x5c, 0x89, 0x68, 0xf1, 0xf7, 0x76, 0xfc,
+ 0x60, 0x68, 0xfc, 0xf7, 0xe4, 0xfe, 0x20, 0x68,
+ 0x05, 0x62, 0xb0, 0xbd, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x04, 0x49,
+ 0x0a, 0x68, 0xc8, 0x68, 0x92, 0x6a, 0x00, 0x2a,
+ 0x01, 0xd0, 0x09, 0x69, 0x08, 0x18, 0x3c, 0x00,
+ 0x14, 0xeb, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x13, 0x4c,
+ 0x05, 0x1c, 0xa0, 0x7a, 0x01, 0x38, 0x02, 0x28,
+ 0x19, 0xd8, 0x01, 0x21, 0x1f, 0x20, 0x04, 0xf0,
+ 0x81, 0xfd, 0x20, 0x68, 0xfc, 0x23, 0x01, 0x1c,
+ 0x20, 0x30, 0x02, 0x7b, 0x1a, 0x40, 0x02, 0x73,
+ 0x00, 0x2d, 0x0f, 0xd0, 0x01, 0x23, 0x1a, 0x43,
+ 0x02, 0x73, 0xa0, 0x7a, 0x03, 0x28, 0x07, 0xd1,
+ 0x3c, 0x00, 0x50, 0xeb, 0x00, 0x00, 0x01, 0x20,
+ 0x01, 0xf0, 0xe7, 0xfd, 0x00, 0x28, 0x01, 0xd1,
+ 0xff, 0xf7, 0x97, 0xff, 0xb0, 0xbd, 0x4b, 0x62,
+ 0xb0, 0xbd, 0x02, 0x21, 0x11, 0x43, 0x01, 0x73,
+ 0xf6, 0xe7, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x0a, 0x30, 0xf6, 0xf7, 0x43, 0xfe,
+ 0x00, 0x28, 0x0c, 0xd0, 0x22, 0x88, 0x0a, 0x49,
+ 0x0b, 0x7a, 0x90, 0x04, 0xc0, 0x0f, 0x00, 0x2b,
+ 0x06, 0xd1, 0x3c, 0x00, 0x8c, 0xeb, 0x00, 0x00,
+ 0x12, 0x06, 0x92, 0x0e, 0x20, 0x2a, 0x00, 0xd1,
+ 0x01, 0x20, 0xc8, 0x60, 0x10, 0xbd, 0x00, 0x28,
+ 0xfc, 0xd1, 0x00, 0x22, 0x24, 0x21, 0x80, 0x20,
+ 0x04, 0xf0, 0x04, 0xfe, 0x10, 0xbd, 0x00, 0x00,
+ 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x1c,
+ 0x1f, 0x21, 0x80, 0x20, 0x04, 0xf0, 0xfa, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x1d, 0x4e,
+ 0x04, 0x1c, 0x30, 0x68, 0x3c, 0x00, 0xc8, 0xeb,
+ 0x00, 0x00, 0x1d, 0x1c, 0x47, 0x68, 0x20, 0x1c,
+ 0xf1, 0xf7, 0x0a, 0xfc, 0xfb, 0xf7, 0x87, 0xfa,
+ 0x00, 0x28, 0x04, 0xd0, 0x28, 0x1c, 0xf2, 0xf7,
+ 0x2a, 0xfb, 0x00, 0x28, 0x28, 0xd1, 0x20, 0x88,
+ 0x40, 0x05, 0x25, 0xd4, 0x30, 0x68, 0x00, 0x68,
+ 0xfe, 0xf7, 0x59, 0xf9, 0x00, 0x28, 0x03, 0xd1,
+ 0xfd, 0xf7, 0x89, 0xfa, 0xf1, 0xf7, 0xed, 0xfb,
+ 0x30, 0x68, 0x00, 0x25, 0x40, 0x68, 0x3c, 0x00,
+ 0x04, 0xec, 0x00, 0x00, 0x00, 0x28, 0x03, 0xd0,
+ 0xfd, 0xf7, 0x64, 0xfb, 0x30, 0x68, 0x45, 0x60,
+ 0x20, 0x88, 0x00, 0x09, 0x00, 0x07, 0x03, 0xd1,
+ 0x04, 0xf0, 0xc8, 0xf8, 0x61, 0x88, 0x45, 0x18,
+ 0x30, 0x68, 0x45, 0x61, 0x81, 0x6a, 0x01, 0x31,
+ 0x81, 0x62, 0x20, 0x88, 0x80, 0x04, 0xc1, 0x0f,
+ 0x02, 0x48, 0xf8, 0xf7, 0xcd, 0xff, 0xf8, 0xbd,
+ 0x14, 0x7a, 0x01, 0x00, 0xb1, 0xeb, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0xec, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0e, 0x4c, 0x05, 0x1c, 0x60, 0x68, 0xfc, 0xf7,
+ 0xf6, 0xfd, 0x0c, 0x48, 0x61, 0x68, 0x00, 0xf0,
+ 0x92, 0xfb, 0x00, 0x21, 0x24, 0x20, 0x04, 0xf0,
+ 0xec, 0xfc, 0x00, 0x22, 0xd2, 0x43, 0x80, 0x21,
+ 0x24, 0x20, 0x04, 0xf0, 0xb8, 0xfc, 0x00, 0x20,
+ 0xe0, 0x60, 0x20, 0x72, 0x20, 0x68, 0x01, 0x68,
+ 0x28, 0x06, 0x00, 0x0e, 0xf1, 0xf7, 0xb0, 0xfb,
+ 0xb0, 0xbd, 0x3c, 0x00, 0x7c, 0xec, 0x00, 0x00,
+ 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7,
+ 0x85, 0xfc, 0x20, 0x1c, 0xf2, 0xf7, 0xb0, 0xfd,
+ 0x10, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x1c, 0x4e,
+ 0x05, 0x1c, 0xb0, 0x7a, 0x2c, 0x1c, 0x40, 0x34,
+ 0x02, 0x28, 0x26, 0xd1, 0xa0, 0x8b, 0x31, 0x89,
+ 0x88, 0x42, 0x22, 0xd1, 0x30, 0x68, 0x41, 0x6a,
+ 0x00, 0x29, 0x08, 0xd0, 0x3c, 0x00, 0xb8, 0xec,
+ 0x00, 0x00, 0x20, 0x30, 0x00, 0x7b, 0xc0, 0x07,
+ 0x04, 0xd5, 0x01, 0x20, 0x01, 0xf0, 0x2f, 0xfd,
+ 0x00, 0x28, 0x18, 0xd1, 0x60, 0x78, 0x00, 0x28,
+ 0x09, 0xd1, 0x30, 0x68, 0x02, 0x23, 0x20, 0x30,
+ 0x02, 0x7b, 0x0d, 0x49, 0x52, 0x08, 0x52, 0x00,
+ 0x1a, 0x43, 0x02, 0x73, 0x01, 0xe0, 0xff, 0x21,
+ 0xf5, 0x31, 0x01, 0x22, 0x1f, 0x20, 0x04, 0xf0,
+ 0x6e, 0xfc, 0x03, 0x20, 0xb0, 0x72, 0x3c, 0x00,
+ 0xf4, 0xec, 0x00, 0x00, 0x02, 0xe0, 0x28, 0x1c,
+ 0xff, 0xf7, 0xc4, 0xff, 0x60, 0x78, 0x00, 0x28,
+ 0x03, 0xd1, 0x29, 0x1c, 0x01, 0x20, 0x03, 0xf0,
+ 0x29, 0xfb, 0x70, 0xbd, 0x14, 0x7a, 0x01, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x60, 0x34, 0xe0, 0x79, 0x0e, 0x4d, 0x00, 0x28,
+ 0x0a, 0xd1, 0x02, 0x20, 0xa8, 0x72, 0x28, 0x68,
+ 0x40, 0x68, 0x00, 0x28, 0x04, 0xd1, 0x0b, 0x48,
+ 0x3c, 0x00, 0x30, 0xed, 0x00, 0x00, 0xfd, 0xf7,
+ 0xd0, 0xfa, 0x29, 0x68, 0x48, 0x60, 0x04, 0xf0,
+ 0x38, 0xf8, 0x29, 0x68, 0xc8, 0x61, 0xff, 0xf7,
+ 0xe0, 0xfe, 0x29, 0x68, 0x09, 0x69, 0x08, 0x1a,
+ 0x03, 0xf0, 0x6f, 0xff, 0x00, 0x28, 0x01, 0xd0,
+ 0xe0, 0x79, 0xa0, 0x71, 0xb0, 0xbd, 0x14, 0x7a,
+ 0x01, 0x00, 0xc1, 0xeb, 0x00, 0x00, 0xf8, 0xb5,
+ 0x04, 0x1c, 0x00, 0x26, 0x04, 0xf0, 0x21, 0xf8,
+ 0x05, 0x1c, 0x3c, 0x00, 0x6c, 0xed, 0x00, 0x00,
+ 0x22, 0x48, 0x00, 0x27, 0x07, 0x70, 0xa1, 0x07,
+ 0x04, 0xd0, 0xe1, 0x07, 0xc9, 0x0f, 0x01, 0x62,
+ 0xc5, 0x61, 0x01, 0x26, 0x41, 0x6b, 0x00, 0x29,
+ 0x34, 0xd1, 0x00, 0x2e, 0x32, 0xd0, 0x06, 0x1c,
+ 0xf9, 0xf7, 0x44, 0xff, 0x31, 0x6b, 0x1a, 0x4b,
+ 0x41, 0x1a, 0xa2, 0x07, 0x12, 0xd5, 0xda, 0x68,
+ 0x00, 0x2a, 0x08, 0xdd, 0x91, 0x42, 0x1a, 0x68,
+ 0x02, 0xda, 0x14, 0x09, 0x3c, 0x00, 0xa8, 0xed,
+ 0x00, 0x00, 0xa2, 0x18, 0x06, 0xe0, 0x14, 0x09,
+ 0x12, 0x1b, 0x03, 0xe0, 0x0a, 0x43, 0x02, 0xd1,
+ 0x1a, 0x68, 0x52, 0x00, 0x1a, 0x60, 0xb7, 0x63,
+ 0x0a, 0xe0, 0xb2, 0x6b, 0x01, 0x32, 0xb2, 0x63,
+ 0x02, 0x2a, 0x1a, 0x68, 0x01, 0xdd, 0x94, 0x08,
+ 0x00, 0xe0, 0x14, 0x09, 0x12, 0x1b, 0x1a, 0x60,
+ 0xd9, 0x60, 0x30, 0x63, 0xf5, 0x62, 0x18, 0x68,
+ 0x08, 0x49, 0x88, 0x42, 0x01, 0xd9, 0x3c, 0x00,
+ 0xe4, 0xed, 0x00, 0x00, 0x19, 0x60, 0x03, 0xe0,
+ 0x64, 0x28, 0x01, 0xd2, 0x64, 0x20, 0x18, 0x60,
+ 0xf5, 0xf7, 0xfc, 0xfd, 0xf8, 0xbd, 0x00, 0x00,
+ 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, 0x01, 0x00,
+ 0x20, 0xa1, 0x07, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0x00, 0x20, 0x50, 0x4d, 0x00, 0x21, 0x68, 0x61,
+ 0x20, 0x69, 0xfb, 0xf7, 0xb3, 0xfc, 0x07, 0x1c,
+ 0x20, 0x69, 0x03, 0x21, 0xfb, 0xf7, 0xae, 0xfc,
+ 0x3c, 0x00, 0x20, 0xee, 0x00, 0x00, 0x00, 0x28,
+ 0x03, 0xd0, 0x80, 0x78, 0x29, 0x78, 0x88, 0x42,
+ 0x63, 0xd1, 0x47, 0x4d, 0x20, 0x1c, 0x14, 0x30,
+ 0x39, 0x1c, 0x06, 0x1c, 0x2a, 0x78, 0x02, 0xf0,
+ 0x5a, 0xfa, 0x00, 0x28, 0x59, 0xd1, 0xe0, 0x68,
+ 0x05, 0x68, 0x41, 0x48, 0x01, 0x95, 0x58, 0x30,
+ 0x02, 0x90, 0xfb, 0xf7, 0x6a, 0xff, 0x3e, 0x4d,
+ 0x19, 0x35, 0x00, 0x28, 0x0b, 0xd0, 0x28, 0x1c,
+ 0xfb, 0xf7, 0x3c, 0x00, 0x5c, 0xee, 0x00, 0x00,
+ 0x55, 0xff, 0x00, 0x28, 0x1e, 0xd1, 0x31, 0x1c,
+ 0x28, 0x1c, 0xfb, 0xf7, 0x65, 0xff, 0x00, 0x28,
+ 0x42, 0xd0, 0x17, 0xe0, 0x28, 0x1c, 0xfb, 0xf7,
+ 0x49, 0xff, 0x00, 0x28, 0x06, 0xd0, 0x39, 0x1c,
+ 0x02, 0x98, 0xfb, 0xf7, 0x63, 0xff, 0x00, 0x28,
+ 0x36, 0xd0, 0x0b, 0xe0, 0x39, 0x1c, 0x02, 0x98,
+ 0xfb, 0xf7, 0x5c, 0xff, 0x00, 0x28, 0x2f, 0xd0,
+ 0x31, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x98, 0xee,
+ 0x00, 0x00, 0xfb, 0xf7, 0x4c, 0xff, 0x00, 0x28,
+ 0x29, 0xd0, 0x30, 0x1c, 0xf6, 0xf7, 0xad, 0xfc,
+ 0x29, 0x4a, 0x18, 0x32, 0x11, 0x7c, 0x00, 0x29,
+ 0x04, 0xd0, 0x51, 0x6a, 0x00, 0x29, 0x01, 0xd0,
+ 0x00, 0x28, 0x1c, 0xd1, 0x90, 0x6a, 0x00, 0x28,
+ 0x3b, 0xd0, 0x13, 0x78, 0x01, 0x9d, 0x01, 0x21,
+ 0x6d, 0x89, 0x01, 0x20, 0x2b, 0x40, 0x9b, 0x07,
+ 0x11, 0xd0, 0xa3, 0x6b, 0x1e, 0x4e, 0x3c, 0x00,
+ 0xd4, 0xee, 0x00, 0x00, 0x1d, 0x1c, 0x7f, 0x35,
+ 0x98, 0x36, 0x00, 0x2d, 0x14, 0xd0, 0x55, 0x8a,
+ 0x00, 0x2d, 0x08, 0xd1, 0x55, 0x69, 0xab, 0x42,
+ 0x0f, 0xda, 0x00, 0x20, 0x17, 0x4d, 0x01, 0x23,
+ 0x6b, 0x61, 0x0a, 0xe0, 0x29, 0xe0, 0xf5, 0x78,
+ 0x02, 0x2d, 0x06, 0xd1, 0x14, 0x4f, 0x55, 0x69,
+ 0x3f, 0x68, 0xed, 0x19, 0xab, 0x42, 0x00, 0xda,
+ 0x00, 0x20, 0x23, 0x6c, 0x1d, 0x1c, 0x7f, 0x35,
+ 0x3c, 0x00, 0x10, 0xef, 0x00, 0x00, 0x10, 0xd0,
+ 0x55, 0x8a, 0x00, 0x2d, 0x03, 0xd1, 0x95, 0x69,
+ 0xab, 0x42, 0x0a, 0xd2, 0x08, 0xe0, 0xf5, 0x78,
+ 0x02, 0x2d, 0x06, 0xd1, 0x0b, 0x4e, 0x95, 0x69,
+ 0x36, 0x68, 0xad, 0x19, 0xab, 0x42, 0x00, 0xd2,
+ 0x00, 0x21, 0x08, 0x43, 0x08, 0xd0, 0x10, 0x6a,
+ 0x00, 0x28, 0x01, 0xd0, 0xf1, 0xf7, 0x4b, 0xfa,
+ 0x00, 0x21, 0x20, 0x1c, 0x01, 0xf0, 0xb9, 0xf9,
+ 0xfe, 0xbd, 0x3c, 0x00, 0x4c, 0xef, 0x00, 0x00,
+ 0xec, 0x65, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00,
+ 0xcc, 0x67, 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x6a,
+ 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, 0x34, 0xfb,
+ 0xe1, 0x69, 0xf2, 0xf7, 0x57, 0xfa, 0x20, 0x1c,
+ 0x40, 0x30, 0xc1, 0x8b, 0x04, 0x31, 0xc1, 0x83,
+ 0x2b, 0x69, 0x10, 0x49, 0x98, 0x79, 0x06, 0x28,
+ 0x0a, 0xd1, 0x98, 0x88, 0x01, 0x91, 0x02, 0x94,
+ 0x00, 0x90, 0x60, 0x69, 0x3c, 0x00, 0x88, 0xef,
+ 0x00, 0x00, 0x1b, 0x68, 0x01, 0x68, 0xe0, 0x68,
+ 0x03, 0x22, 0xc0, 0x68, 0x0a, 0xe0, 0x02, 0x28,
+ 0x0b, 0xd1, 0x10, 0x20, 0x00, 0x90, 0x01, 0x91,
+ 0x02, 0x94, 0xe0, 0x68, 0xa3, 0x69, 0xc0, 0x68,
+ 0x00, 0x22, 0x00, 0x21, 0xf7, 0xf7, 0x0f, 0xfb,
+ 0x3e, 0xbd, 0xf2, 0xf7, 0xa6, 0xf9, 0xfb, 0xe7,
+ 0x00, 0x00, 0xbd, 0xef, 0x00, 0x00, 0x80, 0xb5,
+ 0xd1, 0x68, 0x50, 0x69, 0xc9, 0x68, 0x3c, 0x00,
+ 0xc4, 0xef, 0x00, 0x00, 0xc1, 0x60, 0xd1, 0x68,
+ 0xc8, 0x60, 0x11, 0x1c, 0x40, 0x31, 0xcb, 0x8b,
+ 0x00, 0x89, 0x18, 0x18, 0xc8, 0x83, 0x10, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, 0xbc, 0xff,
+ 0x80, 0xbd, 0x03, 0x48, 0xfb, 0xf7, 0xcc, 0xf8,
+ 0x00, 0x6a, 0xfe, 0xf7, 0xf5, 0xf9, 0x80, 0xbd,
+ 0xa0, 0x6a, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x0a, 0x24, 0x30, 0x07, 0x01, 0x09, 0xa0, 0x07,
+ 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x43,
+ 0x0f, 0x1c, 0x0a, 0x4d, 0x2f, 0x60, 0x04, 0xf0,
+ 0xfa, 0xfe, 0xad, 0x68, 0x28, 0x01, 0x00, 0x0f,
+ 0xb0, 0x42, 0x05, 0xd0, 0x01, 0x3c, 0xf4, 0xd2,
+ 0x01, 0x21, 0x9b, 0x20, 0xf2, 0xf7, 0x41, 0xf9,
+ 0x28, 0x02, 0x00, 0x0a, 0x08, 0x2e, 0x01, 0xd1,
+ 0x31, 0x05, 0x08, 0x43, 0xf8, 0xbd, 0x60, 0x00,
+ 0x07, 0x00, 0x01, 0x22, 0xd2, 0x05, 0x80, 0xb5,
+ 0x00, 0x21, 0x3c, 0x00, 0x3c, 0xf0, 0x00, 0x00,
+ 0x04, 0x20, 0x04, 0xf0, 0xdd, 0xfc, 0x0f, 0x20,
+ 0xff, 0xf7, 0xd6, 0xff, 0x0f, 0x21, 0x09, 0x04,
+ 0x08, 0x40, 0x00, 0x0c, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x05, 0x48, 0xfd, 0xf7, 0x4a, 0xf9,
+ 0x04, 0x48, 0xfd, 0xf7, 0x7b, 0xf8, 0x04, 0x48,
+ 0xfd, 0xf7, 0x6c, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0x89, 0x34, 0x01, 0x00, 0xed, 0x24, 0x00, 0x00,
+ 0x11, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf0,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0x48, 0xf3, 0xf7,
+ 0x2a, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xd1, 0x24,
+ 0x00, 0x00, 0x80, 0xb5, 0xf2, 0xf7, 0x53, 0xf9,
+ 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20,
+ 0x01, 0xf0, 0x51, 0xfe, 0x03, 0x20, 0x02, 0xf0,
+ 0x46, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48,
+ 0x80, 0xb5, 0xc1, 0x69, 0x00, 0x29, 0x06, 0xd1,
+ 0x01, 0x6a, 0x00, 0x29, 0x03, 0xd1, 0x3c, 0x00,
+ 0xb4, 0xf0, 0x00, 0x00, 0x81, 0x6b, 0x03, 0x48,
+ 0x00, 0xf0, 0x5e, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x4c, 0x20, 0x6a, 0xfc, 0xf7,
+ 0xb3, 0xfb, 0x03, 0x48, 0x21, 0x6a, 0x00, 0xf0,
+ 0x4f, 0xf9, 0x10, 0xbd, 0x1c, 0x75, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x4c,
+ 0x20, 0x7c, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x21,
+ 0x3c, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xfd, 0xf7,
+ 0x86, 0xf9, 0x00, 0x25, 0x25, 0x70, 0xa0, 0x68,
+ 0x01, 0x28, 0x03, 0xd1, 0x00, 0x20, 0xa5, 0x60,
+ 0x01, 0xf0, 0x8f, 0xf8, 0xa0, 0x78, 0x01, 0x28,
+ 0x05, 0xd1, 0x03, 0x48, 0x98, 0x38, 0x00, 0x69,
+ 0xfc, 0xf7, 0xef, 0xfb, 0xa5, 0x70, 0xb0, 0xbd,
+ 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x21, 0x01, 0x20, 0x01, 0xf0, 0x09, 0xfe,
+ 0x80, 0xbd, 0x3c, 0x00, 0x2c, 0xf1, 0x00, 0x00,
+ 0x38, 0xb5, 0x69, 0x46, 0x00, 0x25, 0xf8, 0xf7,
+ 0xb7, 0xfe, 0x04, 0x1c, 0x01, 0xd1, 0x01, 0x20,
+ 0x38, 0xbd, 0xa0, 0x68, 0x00, 0x28, 0x04, 0xd0,
+ 0x00, 0x99, 0xa1, 0x31, 0x08, 0x20, 0x04, 0xf0,
+ 0x73, 0xfa, 0x1c, 0x21, 0x20, 0x1c, 0xf1, 0xf7,
+ 0xa3, 0xf9, 0x28, 0x1c, 0xf0, 0xe7, 0x00, 0x00,
+ 0xfe, 0xb5, 0x07, 0x1c, 0x4c, 0x23, 0x39, 0x49,
+ 0x58, 0x43, 0x44, 0x18, 0x3c, 0x00, 0x68, 0xf1,
+ 0x00, 0x00, 0x25, 0x1c, 0x40, 0x35, 0x28, 0x7a,
+ 0x37, 0x49, 0x48, 0x76, 0x21, 0x1c, 0x30, 0x31,
+ 0x02, 0x91, 0x0c, 0x23, 0xc8, 0x56, 0x42, 0x1c,
+ 0x0a, 0x73, 0x49, 0x7b, 0x88, 0x42, 0x46, 0xda,
+ 0x32, 0x48, 0x00, 0x78, 0x80, 0x07, 0x3e, 0xd5,
+ 0x00, 0x20, 0x01, 0x90, 0xf6, 0xf7, 0xaf, 0xfa,
+ 0x00, 0x28, 0x2e, 0xd0, 0xac, 0x21, 0x09, 0x58,
+ 0x00, 0x29, 0x01, 0xd0, 0xe4, 0x30, 0x3c, 0x00,
+ 0xa4, 0xf1, 0x00, 0x00, 0x00, 0xe0, 0xcc, 0x30,
+ 0x06, 0x1c, 0x40, 0x68, 0x00, 0x28, 0x25, 0xd0,
+ 0x02, 0x99, 0x08, 0x7b, 0x01, 0x28, 0x11, 0xd1,
+ 0x20, 0x1c, 0x2e, 0x30, 0x29, 0x78, 0xf6, 0xf7,
+ 0xed, 0xf9, 0x71, 0x68, 0x03, 0xe0, 0x72, 0x18,
+ 0x12, 0x7a, 0x82, 0x42, 0x03, 0xd9, 0xff, 0x31,
+ 0x09, 0x06, 0x09, 0x0e, 0xf7, 0xd1, 0xa9, 0x70,
+ 0x01, 0x20, 0x01, 0x90, 0x23, 0x1c, 0x3e, 0x33,
+ 0x3c, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x1a, 0x1d,
+ 0x30, 0x1c, 0x00, 0x97, 0x01, 0x99, 0xf8, 0xf7,
+ 0x58, 0xfa, 0x00, 0x28, 0x11, 0xd0, 0xa8, 0x78,
+ 0x80, 0x19, 0x00, 0x7a, 0x00, 0xe0, 0x00, 0x20,
+ 0x68, 0x70, 0x68, 0x78, 0x01, 0x21, 0xfb, 0xf7,
+ 0xe0, 0xfd, 0x60, 0x60, 0x38, 0x1c, 0x01, 0xf0,
+ 0x14, 0xfe, 0x38, 0x1c, 0x01, 0xf0, 0xa5, 0xfb,
+ 0xfe, 0xbd, 0x02, 0x99, 0x08, 0x7b, 0xff, 0x30,
+ 0x48, 0x73, 0x3c, 0x00, 0x1c, 0xf2, 0x00, 0x00,
+ 0x38, 0x1c, 0xfc, 0xf7, 0x19, 0xfc, 0x03, 0xf0,
+ 0xc3, 0xfd, 0x06, 0x1c, 0xfb, 0xf7, 0x8e, 0xfe,
+ 0x41, 0x00, 0x76, 0x18, 0x68, 0x78, 0x61, 0x68,
+ 0xfb, 0xf7, 0x6a, 0xfe, 0x31, 0x18, 0x20, 0x8d,
+ 0x3b, 0x1c, 0x05, 0x4a, 0x03, 0xf0, 0x12, 0xfe,
+ 0xe5, 0xe7, 0x00, 0x00, 0x58, 0xe3, 0x01, 0x00,
+ 0x30, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00,
+ 0xd5, 0x4e, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf2,
+ 0x00, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x80, 0xb5,
+ 0x02, 0x79, 0x20, 0x30, 0x03, 0x49, 0x00, 0xf0,
+ 0x30, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x03, 0x1c,
+ 0x04, 0x48, 0x80, 0xb5, 0xc2, 0x78, 0x38, 0x30,
+ 0x03, 0x49, 0x00, 0xf0, 0x22, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, 0xc8, 0x67,
+ 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x3c, 0x00,
+ 0x94, 0xf2, 0x00, 0x00, 0x80, 0xb5, 0x82, 0x79,
+ 0x50, 0x30, 0x03, 0x49, 0x00, 0xf0, 0x14, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00,
+ 0xcc, 0x67, 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48,
+ 0x80, 0xb5, 0x42, 0x79, 0x68, 0x30, 0x03, 0x49,
+ 0x00, 0xf0, 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0xac, 0x7c, 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x24, 0x84, 0x80, 0x0b, 0x60,
+ 0x3c, 0x00, 0xd0, 0xf2, 0x00, 0x00, 0x19, 0x1c,
+ 0x51, 0x43, 0x01, 0x60, 0x19, 0x06, 0x09, 0x16,
+ 0x10, 0x22, 0x06, 0x30, 0xf1, 0xf7, 0x9f, 0xf9,
+ 0x10, 0xbd, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24,
+ 0xac, 0x60, 0xec, 0x60, 0xec, 0x61, 0x2c, 0x62,
+ 0x02, 0xf0, 0xf1, 0xfc, 0x00, 0xf0, 0x0d, 0xf8,
+ 0xec, 0x62, 0x2c, 0x70, 0xb0, 0xbd, 0x44, 0x7d,
+ 0x01, 0x00, 0x80, 0xb5, 0x80, 0x21, 0x01, 0x48,
+ 0xf1, 0xf7, 0x3c, 0x00, 0x0c, 0xf3, 0x00, 0x00,
+ 0xc7, 0xf8, 0x80, 0xbd, 0x04, 0x66, 0x01, 0x00,
+ 0xf8, 0xb5, 0x07, 0x4f, 0x00, 0x24, 0x00, 0x26,
+ 0x18, 0x20, 0x60, 0x43, 0xc5, 0x19, 0xee, 0x60,
+ 0x03, 0xf0, 0x42, 0xfd, 0x10, 0x35, 0x01, 0x34,
+ 0x02, 0x2c, 0x41, 0xc5, 0xf4, 0xdb, 0xf8, 0xbd,
+ 0xb8, 0x7d, 0x01, 0x00, 0x00, 0x23, 0x03, 0x60,
+ 0x04, 0x4b, 0x00, 0x29, 0x00, 0xd1, 0x19, 0x1c,
+ 0x41, 0x60, 0x00, 0x2a, 0x3c, 0x00, 0x48, 0xf3,
+ 0x00, 0x00, 0x00, 0xd1, 0x1a, 0x1c, 0x82, 0x60,
+ 0x70, 0x47, 0xbd, 0x75, 0x00, 0x00, 0x10, 0xb5,
+ 0x07, 0x4c, 0x20, 0x68, 0x01, 0x30, 0x20, 0x60,
+ 0x20, 0x28, 0x03, 0xd9, 0x58, 0x21, 0x58, 0x20,
+ 0xf1, 0xf7, 0x9d, 0xff, 0x21, 0x68, 0x01, 0x20,
+ 0x01, 0x39, 0x88, 0x40, 0x10, 0xbd, 0x60, 0x5b,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x21, 0x68, 0x00, 0x20, 0x00, 0x29, 0x3c, 0x00,
+ 0x84, 0xf3, 0x00, 0x00, 0x0a, 0xd0, 0xa9, 0x43,
+ 0x21, 0x60, 0x07, 0xd1, 0xa0, 0x68, 0xf1, 0xf7,
+ 0x23, 0xf8, 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68,
+ 0x29, 0x43, 0x21, 0x60, 0xb0, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x21, 0x68,
+ 0x00, 0x20, 0x29, 0x43, 0x21, 0x60, 0xa9, 0x42,
+ 0x07, 0xd1, 0x60, 0x68, 0xf1, 0xf7, 0x10, 0xf8,
+ 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, 0xa9, 0x43,
+ 0x3c, 0x00, 0xc0, 0xf3, 0x00, 0x00, 0x21, 0x60,
+ 0xb0, 0xbd, 0x1a, 0x4b, 0xb0, 0xb5, 0x9a, 0x6a,
+ 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x2a, 0x07, 0xdb,
+ 0xb8, 0x24, 0x24, 0x58, 0x01, 0x3c, 0xa4, 0x1a,
+ 0x00, 0x19, 0xb0, 0x30, 0x00, 0x7b, 0x02, 0xe0,
+ 0x0e, 0x20, 0x00, 0xe0, 0x0d, 0x20, 0x5d, 0x6a,
+ 0x12, 0x4c, 0x00, 0x2d, 0x01, 0xd0, 0x20, 0x78,
+ 0x00, 0xe0, 0x20, 0x5c, 0xff, 0x24, 0xa8, 0x34,
+ 0xc4, 0x40, 0x3c, 0x00, 0xfc, 0xf3, 0x00, 0x00,
+ 0x9c, 0x60, 0xf5, 0x24, 0xc4, 0x40, 0x9c, 0x61,
+ 0xfd, 0x24, 0xc4, 0x40, 0xdc, 0x61, 0xff, 0x24,
+ 0x29, 0x34, 0xc4, 0x40, 0x5c, 0x61, 0xff, 0x24,
+ 0x53, 0x34, 0xc4, 0x40, 0x00, 0x20, 0x0c, 0x33,
+ 0x11, 0xc3, 0x00, 0x29, 0x05, 0xd0, 0x00, 0x2a,
+ 0x03, 0xdc, 0x02, 0x21, 0x50, 0x42, 0x00, 0xf0,
+ 0x65, 0xfb, 0xb0, 0xbd, 0xac, 0x7e, 0x01, 0x00,
+ 0xb8, 0x52, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xf4,
+ 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, 0x13, 0x48,
+ 0x21, 0x1c, 0xff, 0x31, 0x69, 0x31, 0x0e, 0xc9,
+ 0x0e, 0xc0, 0x21, 0x1c, 0xff, 0x31, 0x24, 0x22,
+ 0x75, 0x31, 0x0f, 0x48, 0xf1, 0xf7, 0x51, 0xf8,
+ 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x22, 0x99, 0x31,
+ 0x0d, 0x48, 0xf1, 0xf7, 0xa6, 0xf8, 0xfc, 0xf7,
+ 0xa2, 0xff, 0x21, 0x1c, 0xff, 0x31, 0x10, 0x22,
+ 0xd5, 0x31, 0x09, 0x48, 0xf1, 0xf7, 0x3c, 0x00,
+ 0x74, 0xf4, 0x00, 0x00, 0x41, 0xf8, 0x21, 0x1c,
+ 0xff, 0x31, 0x28, 0x22, 0xe5, 0x31, 0x07, 0x48,
+ 0xf1, 0xf7, 0x96, 0xf8, 0x10, 0xbd, 0x00, 0x00,
+ 0x40, 0x63, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x0c, 0x80, 0x07, 0x00, 0x30, 0x80, 0x07, 0x00,
+ 0x80, 0x80, 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00,
+ 0xf8, 0xb5, 0x00, 0x28, 0x59, 0xd0, 0x04, 0xf0,
+ 0x4b, 0xf9, 0xf8, 0xf7, 0xb3, 0xfb, 0x00, 0x22,
+ 0x3c, 0x00, 0xb0, 0xf4, 0x00, 0x00, 0x01, 0x21,
+ 0x13, 0x20, 0x04, 0xf0, 0x7c, 0xf9, 0x2a, 0x49,
+ 0x29, 0x48, 0x49, 0x6c, 0x01, 0x60, 0x00, 0x21,
+ 0x29, 0x48, 0xc9, 0x43, 0x41, 0x60, 0x26, 0x4c,
+ 0x14, 0x34, 0x61, 0x6c, 0x81, 0x60, 0xa1, 0x6c,
+ 0xc1, 0x60, 0x00, 0x20, 0x25, 0x4d, 0x02, 0x26,
+ 0x01, 0x01, 0x6e, 0x50, 0x0a, 0x19, 0x4f, 0x19,
+ 0x50, 0x32, 0x04, 0x37, 0x0e, 0xca, 0x01, 0x30,
+ 0x08, 0x28, 0x3c, 0x00, 0xec, 0xf4, 0x00, 0x00,
+ 0x0e, 0xc7, 0xf4, 0xdb, 0x14, 0x22, 0x21, 0x1c,
+ 0xcc, 0x31, 0x1e, 0x48, 0xf1, 0xf7, 0x5a, 0xf8,
+ 0x1d, 0x48, 0x81, 0x78, 0x09, 0x09, 0x09, 0x01,
+ 0x81, 0x70, 0x00, 0x21, 0xc1, 0x70, 0x41, 0x70,
+ 0x21, 0x1c, 0xe0, 0x31, 0x0a, 0x78, 0x02, 0x70,
+ 0x49, 0x78, 0x41, 0x70, 0x21, 0x1c, 0xe8, 0x31,
+ 0x30, 0x22, 0x08, 0x30, 0xf1, 0xf7, 0x46, 0xf8,
+ 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x00, 0x28, 0xf5,
+ 0x00, 0x00, 0x50, 0x22, 0x19, 0x31, 0x12, 0x48,
+ 0xf1, 0xf7, 0x3f, 0xf8, 0x83, 0x20, 0x80, 0x00,
+ 0x14, 0x22, 0x21, 0x18, 0x10, 0x48, 0xf1, 0xf7,
+ 0x38, 0xf8, 0x11, 0x20, 0x40, 0x01, 0x84, 0x22,
+ 0x21, 0x18, 0x0d, 0x48, 0xf1, 0xf7, 0x31, 0xf8,
+ 0xff, 0xf7, 0x73, 0xff, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x28, 0xfd, 0xf8, 0xbd, 0xff, 0xf7, 0x6d, 0xff,
+ 0xfb, 0xe7, 0x08, 0x20, 0x07, 0x00, 0x3c, 0x00,
+ 0x64, 0xf5, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00,
+ 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00,
+ 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x00, 0x90, 0x07, 0x00, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x18, 0x48, 0xc0, 0x68, 0x00, 0x28, 0x25, 0xd0,
+ 0x16, 0x4e, 0x01, 0x36, 0x74, 0x78, 0x30, 0x78,
+ 0x27, 0x1a, 0x79, 0x19, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x3c, 0x00, 0xa0, 0xf5, 0x00, 0x00, 0x4b, 0xf8,
+ 0x00, 0x90, 0x29, 0x1c, 0x20, 0x1c, 0xf1, 0xf7,
+ 0xb2, 0xf8, 0xc1, 0x19, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x42, 0xf8, 0x60, 0x1a, 0x30, 0x70, 0x70, 0x1e,
+ 0x80, 0x68, 0x00, 0x28, 0x0d, 0xd0, 0x53, 0x36,
+ 0xf4, 0x78, 0x00, 0x99, 0x20, 0x1c, 0xf1, 0xf7,
+ 0xa2, 0xf8, 0xb1, 0x78, 0x61, 0x1a, 0x41, 0x18,
+ 0x20, 0x1c, 0xf1, 0xf7, 0x9c, 0xf8, 0x60, 0x1a,
+ 0xb0, 0x70, 0x3c, 0x00, 0xdc, 0xf5, 0x00, 0x00,
+ 0x03, 0x48, 0x5c, 0x30, 0x01, 0x69, 0xc2, 0x68,
+ 0x69, 0x43, 0x51, 0x18, 0xc1, 0x60, 0xf8, 0xbd,
+ 0x44, 0x7d, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x4d,
+ 0xe8, 0x68, 0x29, 0x69, 0x40, 0x18, 0x7d, 0x21,
+ 0x09, 0x01, 0x44, 0x18, 0x20, 0x1c, 0x03, 0xf0,
+ 0x0b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, 0x03, 0xf0,
+ 0xcf, 0xfb, 0x01, 0x1b, 0x28, 0x69, 0xf1, 0xf7,
+ 0x7d, 0xf8, 0x01, 0x30, 0x3c, 0x00, 0x18, 0xf6,
+ 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7,
+ 0xb2, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xa0, 0x7d,
+ 0x01, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x60, 0x68,
+ 0x80, 0x25, 0xa8, 0x43, 0x60, 0x60, 0x20, 0x68,
+ 0x28, 0x43, 0x20, 0x60, 0x0d, 0x4e, 0x30, 0x1c,
+ 0x10, 0x30, 0xf3, 0xf7, 0xc8, 0xfc, 0x00, 0x28,
+ 0x03, 0xd1, 0x07, 0x21, 0x85, 0x20, 0xf1, 0xf7,
+ 0x2a, 0xfe, 0x08, 0x48, 0x00, 0x21, 0x3c, 0x00,
+ 0x54, 0xf6, 0x00, 0x00, 0x80, 0x68, 0x41, 0x63,
+ 0xc0, 0x6c, 0x10, 0x30, 0x70, 0x61, 0x01, 0x20,
+ 0x30, 0x61, 0x20, 0x68, 0xa8, 0x43, 0x20, 0x60,
+ 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x00, 0x07, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x24, 0x7e, 0x01, 0x00,
+ 0x01, 0x1c, 0x00, 0x20, 0x05, 0x29, 0x80, 0xb5,
+ 0x09, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
+ 0x3c, 0x00, 0x90, 0xf6, 0x00, 0x00, 0x03, 0x00,
+ 0xff, 0xf7, 0xcf, 0xfc, 0x80, 0xbd, 0x01, 0x22,
+ 0x92, 0x02, 0x80, 0xb5, 0x00, 0x21, 0x07, 0x20,
+ 0x04, 0xf0, 0xab, 0xf9, 0x80, 0xbd, 0x80, 0xb5,
+ 0x40, 0x22, 0x00, 0x21, 0x00, 0x20, 0x04, 0xf0,
+ 0xa4, 0xf9, 0x03, 0x22, 0x00, 0x21, 0x00, 0x20,
+ 0x04, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x70, 0xb5,
+ 0x0e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x08, 0x28,
+ 0x0e, 0xd1, 0x3c, 0x00, 0xcc, 0xf6, 0x00, 0x00,
+ 0x00, 0xf0, 0x00, 0xfc, 0x0e, 0x28, 0x01, 0xd1,
+ 0x14, 0x20, 0x00, 0xe0, 0x10, 0x20, 0xe1, 0x03,
+ 0x00, 0xd5, 0x01, 0x38, 0xc0, 0x06, 0x0a, 0x49,
+ 0xc0, 0x0e, 0x88, 0x71, 0x08, 0xe0, 0x09, 0x2d,
+ 0x06, 0xd1, 0xa0, 0x04, 0x01, 0xd5, 0x00, 0x20,
+ 0x00, 0xe0, 0x01, 0x20, 0xf3, 0xf7, 0xb0, 0xf9,
+ 0x34, 0x40, 0x21, 0x1c, 0x32, 0x1c, 0x28, 0x1c,
+ 0x04, 0xf0, 0x7a, 0xf9, 0x3c, 0x00, 0x08, 0xf7,
+ 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x80,
+ 0x07, 0x00, 0x70, 0xb5, 0x00, 0x24, 0x13, 0x29,
+ 0x11, 0xd8, 0x00, 0x28, 0x01, 0xd1, 0x08, 0x4e,
+ 0x08, 0x25, 0x01, 0x28, 0x01, 0xd1, 0x07, 0x4e,
+ 0x09, 0x25, 0x00, 0xf0, 0x78, 0xfa, 0x00, 0x28,
+ 0x05, 0xd0, 0x02, 0x1c, 0x31, 0x1c, 0x28, 0x1c,
+ 0xff, 0xf7, 0xc3, 0xff, 0x01, 0x24, 0x20, 0x1c,
+ 0x70, 0xbd, 0xf8, 0xff, 0x07, 0x00, 0x3c, 0x00,
+ 0x44, 0xf7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
+ 0x01, 0x22, 0xd2, 0x02, 0x80, 0xb5, 0x00, 0x21,
+ 0x07, 0x20, 0x04, 0xf0, 0x53, 0xf9, 0x80, 0xbd,
+ 0x0f, 0x22, 0x12, 0x04, 0x07, 0x21, 0x49, 0x04,
+ 0x80, 0xb5, 0x09, 0x20, 0x04, 0xf0, 0x4a, 0xf9,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21,
+ 0x04, 0x20, 0x04, 0xf0, 0x1b, 0xfc, 0x40, 0x21,
+ 0x00, 0x20, 0x04, 0xf0, 0x17, 0xfc, 0x04, 0x49,
+ 0x3c, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x20,
+ 0x88, 0x60, 0x02, 0x48, 0x09, 0x69, 0x20, 0x30,
+ 0xff, 0xf7, 0x09, 0xfe, 0x80, 0xbd, 0x64, 0x73,
+ 0x01, 0x00, 0xb0, 0xb5, 0x60, 0x21, 0x00, 0x20,
+ 0x04, 0xf0, 0x07, 0xfc, 0x11, 0x4d, 0x00, 0x24,
+ 0x00, 0x22, 0x04, 0x20, 0x29, 0x5d, 0x04, 0xf0,
+ 0x28, 0xf9, 0x0c, 0x20, 0x03, 0xf0, 0x9b, 0xfb,
+ 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x05, 0x2c,
+ 0xf2, 0xd3, 0x3c, 0x00, 0xbc, 0xf7, 0x00, 0x00,
+ 0x0f, 0x22, 0x00, 0x21, 0x0a, 0x20, 0x04, 0xf0,
+ 0x1b, 0xf9, 0x61, 0x21, 0x00, 0x20, 0x04, 0xf0,
+ 0xef, 0xfb, 0x06, 0x49, 0x01, 0x20, 0x88, 0x60,
+ 0x04, 0x48, 0x09, 0x69, 0x20, 0x30, 0xff, 0xf7,
+ 0xcd, 0xfd, 0xff, 0x20, 0x2d, 0x30, 0xb0, 0xbd,
+ 0xa8, 0x58, 0x01, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0xf8, 0xb5, 0x06, 0x1c, 0x12, 0x48, 0xc6, 0x70,
+ 0x01, 0x20, 0xff, 0xf7, 0x3c, 0x00, 0xf8, 0xf7,
+ 0x00, 0x00, 0xfd, 0xfb, 0x01, 0x27, 0xbf, 0x02,
+ 0x04, 0x1c, 0xb8, 0x43, 0x01, 0x1c, 0x01, 0x20,
+ 0x04, 0xf0, 0xd1, 0xfb, 0x03, 0x20, 0xff, 0xf7,
+ 0xf2, 0xfb, 0x05, 0x1c, 0xb8, 0x43, 0x01, 0x1c,
+ 0x03, 0x20, 0x04, 0xf0, 0xc8, 0xfb, 0x30, 0x1c,
+ 0x00, 0xf0, 0x9f, 0xf9, 0x00, 0xf0, 0x57, 0xf8,
+ 0x21, 0x1c, 0x01, 0x20, 0x04, 0xf0, 0xbf, 0xfb,
+ 0x29, 0x1c, 0x03, 0x20, 0x04, 0xf0, 0x3c, 0x00,
+ 0x34, 0xf8, 0x00, 0x00, 0xbb, 0xfb, 0x00, 0x20,
+ 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x22, 0x40, 0x21, 0x00, 0x20,
+ 0x04, 0xf0, 0xd8, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x01, 0x24, 0x09, 0x20,
+ 0xff, 0xf7, 0xcc, 0xfb, 0x0f, 0x21, 0x09, 0x04,
+ 0x88, 0x43, 0x03, 0x21, 0x89, 0x04, 0xe2, 0x04,
+ 0x05, 0x2d, 0x12, 0x4e, 0x20, 0xd2, 0x02, 0xa3,
+ 0x3c, 0x00, 0x70, 0xf8, 0x00, 0x00, 0x5b, 0x5d,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x09,
+ 0x0c, 0x10, 0x03, 0x00, 0x03, 0x21, 0x09, 0x04,
+ 0x0c, 0xe0, 0x01, 0x21, 0x09, 0x04, 0x09, 0xe0,
+ 0x01, 0x21, 0x49, 0x04, 0x06, 0xe0, 0xf3, 0x68,
+ 0x04, 0x2b, 0x05, 0xd9, 0x02, 0xe0, 0xf3, 0x68,
+ 0x04, 0x2b, 0x01, 0xd8, 0x01, 0x43, 0x01, 0xe0,
+ 0x10, 0x43, 0x01, 0x1c, 0x09, 0x20, 0x04, 0xf0,
+ 0x80, 0xfb, 0x3c, 0x00, 0xac, 0xf8, 0x00, 0x00,
+ 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x24, 0xfb, 0xe7,
+ 0x64, 0x73, 0x01, 0x00, 0x01, 0x21, 0xc9, 0x05,
+ 0x00, 0x28, 0x80, 0xb5, 0x02, 0xd0, 0x0a, 0x1c,
+ 0x00, 0x21, 0x00, 0xe0, 0x00, 0x22, 0x04, 0x20,
+ 0x04, 0xf0, 0x96, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0xf0, 0xb5, 0x91, 0xb0, 0x00, 0x26, 0x40, 0x21,
+ 0x01, 0xa8, 0xf0, 0xf7, 0xdd, 0xfd, 0x2a, 0x4f,
+ 0xb8, 0x79, 0x01, 0x22, 0x3c, 0x00, 0xe8, 0xf8,
+ 0x00, 0x00, 0x52, 0x03, 0x00, 0x90, 0x00, 0x21,
+ 0x06, 0x20, 0x04, 0xf0, 0x84, 0xf8, 0x60, 0x21,
+ 0x00, 0x20, 0x04, 0xf0, 0x58, 0xfb, 0x61, 0x21,
+ 0x00, 0x20, 0x04, 0xf0, 0x54, 0xfb, 0x08, 0x20,
+ 0x03, 0xf0, 0xef, 0xfa, 0x00, 0x24, 0x0f, 0x20,
+ 0xff, 0xf7, 0x71, 0xfb, 0x40, 0x05, 0x05, 0x0f,
+ 0xa8, 0x00, 0x01, 0xa9, 0x09, 0x58, 0x01, 0xaa,
+ 0x01, 0x31, 0x01, 0x34, 0x0c, 0x2c, 0x3c, 0x00,
+ 0x24, 0xf9, 0x00, 0x00, 0x11, 0x50, 0xf1, 0xd3,
+ 0x00, 0x20, 0x81, 0x00, 0x01, 0xaa, 0x51, 0x58,
+ 0xb1, 0x42, 0x01, 0xd9, 0x0e, 0x1c, 0x05, 0x1c,
+ 0x01, 0x30, 0x10, 0x28, 0xf5, 0xd3, 0x06, 0x20,
+ 0xff, 0xf7, 0x58, 0xfb, 0x0f, 0x21, 0x49, 0x02,
+ 0x88, 0x43, 0x69, 0x02, 0x08, 0x43, 0x01, 0x21,
+ 0x49, 0x03, 0x01, 0x43, 0x06, 0x20, 0x04, 0xf0,
+ 0x29, 0xfb, 0x0d, 0x48, 0x84, 0x68, 0x64, 0x34,
+ 0x3c, 0x00, 0x60, 0xf9, 0x00, 0x00, 0x08, 0xe0,
+ 0x20, 0x1c, 0x03, 0xf0, 0x5a, 0xf9, 0x00, 0x28,
+ 0x03, 0xd0, 0x01, 0x21, 0x95, 0x20, 0xf1, 0xf7,
+ 0x98, 0xfc, 0x0f, 0x20, 0xff, 0xf7, 0x3d, 0xfb,
+ 0x00, 0x04, 0xf1, 0xd5, 0x87, 0x20, 0x03, 0xf0,
+ 0xb2, 0xfa, 0x00, 0x98, 0xb8, 0x71, 0x11, 0xb0,
+ 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0x00, 0x01,
+ 0x07, 0x00, 0x10, 0xb5, 0x17, 0x4c, 0x61, 0x69,
+ 0x00, 0x29, 0x3c, 0x00, 0x9c, 0xf9, 0x00, 0x00,
+ 0x04, 0xd0, 0x0a, 0x21, 0x13, 0x20, 0x03, 0xf0,
+ 0x47, 0xfe, 0x10, 0xbd, 0x01, 0x1c, 0x12, 0x48,
+ 0x01, 0x29, 0x00, 0x78, 0x0c, 0xd0, 0x11, 0x29,
+ 0xf7, 0xd1, 0x05, 0x28, 0x03, 0xd1, 0x01, 0x21,
+ 0x13, 0x20, 0xf1, 0xf7, 0x71, 0xfc, 0x20, 0x78,
+ 0x07, 0x28, 0xee, 0xd1, 0x02, 0x21, 0x0a, 0xe0,
+ 0x05, 0x28, 0x07, 0xd0, 0x06, 0x28, 0x0a, 0xd0,
+ 0x07, 0x28, 0xf7, 0xd0, 0x3c, 0x00, 0xd8, 0xf9,
+ 0x00, 0x00, 0x08, 0x28, 0xe4, 0xd1, 0x00, 0x20,
+ 0x05, 0xe0, 0x01, 0x21, 0x13, 0x20, 0xf1, 0xf7,
+ 0x5e, 0xfc, 0x10, 0xbd, 0x01, 0x20, 0x02, 0xf0,
+ 0x6c, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78,
+ 0x01, 0x00, 0x0d, 0x49, 0x80, 0xb5, 0x09, 0x78,
+ 0x03, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x0b, 0xd0,
+ 0x07, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x07, 0xd0,
+ 0x02, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x3c, 0x00,
+ 0x14, 0xfa, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x29,
+ 0x09, 0xd1, 0x00, 0x28, 0x07, 0xd0, 0x00, 0x20,
+ 0xfc, 0xf7, 0x28, 0xfd, 0x00, 0x22, 0x13, 0x21,
+ 0x11, 0x20, 0x03, 0xf0, 0xc1, 0xfe, 0x80, 0xbd,
+ 0x7c, 0x78, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22,
+ 0x08, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xde, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5,
+ 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, 0xf1, 0xf7,
+ 0x3c, 0x00, 0x50, 0xfa, 0x00, 0x00, 0x33, 0xff,
+ 0x05, 0x49, 0x05, 0x4a, 0x08, 0x68, 0x50, 0x61,
+ 0x48, 0x68, 0x90, 0x61, 0x01, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xb0, 0x58,
+ 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x48,
+ 0x80, 0xb5, 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1,
+ 0xf1, 0xf7, 0x1d, 0xff, 0x05, 0x49, 0x05, 0x4a,
+ 0x08, 0x68, 0x90, 0x61, 0x48, 0x68, 0x50, 0x61,
+ 0x01, 0x20, 0x3c, 0x00, 0x8c, 0xfa, 0x00, 0x00,
+ 0x80, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x11, 0xb5, 0x00, 0xab, 0x59, 0x78, 0x14, 0x48,
+ 0x01, 0x23, 0xc0, 0x56, 0x00, 0x22, 0x09, 0x18,
+ 0x0b, 0x06, 0x1b, 0x16, 0x13, 0x21, 0x13, 0x2b,
+ 0x02, 0xdd, 0x00, 0xab, 0x59, 0x70, 0x07, 0xe0,
+ 0x00, 0x2b, 0x02, 0xda, 0x00, 0xab, 0x5a, 0x70,
+ 0x02, 0xe0, 0x1c, 0x1c, 0x3c, 0x00, 0xc8, 0xfa,
+ 0x00, 0x00, 0x00, 0xab, 0x5c, 0x70, 0x00, 0xab,
+ 0x1b, 0x78, 0x18, 0x18, 0x00, 0x06, 0x00, 0x16,
+ 0x13, 0x28, 0x02, 0xdd, 0x00, 0xab, 0x19, 0x70,
+ 0x06, 0xe0, 0x00, 0x28, 0x02, 0xda, 0x00, 0xab,
+ 0x1a, 0x70, 0x01, 0xe0, 0x00, 0xab, 0x18, 0x70,
+ 0x00, 0x98, 0x18, 0xbd, 0x00, 0x00, 0x64, 0x73,
+ 0x01, 0x00, 0x38, 0xb5, 0x0c, 0x1c, 0x15, 0x49,
+ 0x00, 0xab, 0x49, 0x68, 0x13, 0x25, 0x3c, 0x00,
+ 0x04, 0xfb, 0x00, 0x00, 0x00, 0x91, 0x59, 0x78,
+ 0x09, 0x18, 0x59, 0x70, 0x19, 0x78, 0x08, 0x18,
+ 0x18, 0x70, 0x19, 0x88, 0x10, 0x48, 0x02, 0x2c,
+ 0xc1, 0x80, 0x01, 0xd0, 0x00, 0x2c, 0x0b, 0xd1,
+ 0x00, 0xab, 0x18, 0x78, 0x13, 0x28, 0x00, 0xd9,
+ 0x1d, 0x70, 0x00, 0xab, 0x19, 0x78, 0x00, 0x20,
+ 0xff, 0xf7, 0xee, 0xfd, 0x02, 0x2c, 0x01, 0xd0,
+ 0x01, 0x2c, 0x09, 0xd1, 0x00, 0xab, 0x58, 0x78,
+ 0x3c, 0x00, 0x40, 0xfb, 0x00, 0x00, 0x13, 0x28,
+ 0x00, 0xd9, 0x5d, 0x70, 0x00, 0xab, 0x59, 0x78,
+ 0x01, 0x20, 0xff, 0xf7, 0xe0, 0xfd, 0x38, 0xbd,
+ 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xa0, 0x58,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0e, 0x28, 0x13, 0x4d, 0x04, 0xd0,
+ 0x12, 0x49, 0xa0, 0x00, 0x00, 0x19, 0x4d, 0x39,
+ 0x45, 0x18, 0x06, 0x20, 0xff, 0xf7, 0x3d, 0xfa,
+ 0x0f, 0x49, 0x3c, 0x00, 0x7c, 0xfb, 0x00, 0x00,
+ 0xe0, 0x22, 0x09, 0x19, 0x10, 0x39, 0xc9, 0x7b,
+ 0x90, 0x43, 0x49, 0x01, 0x11, 0x40, 0x01, 0x43,
+ 0x06, 0x20, 0x04, 0xf0, 0x0d, 0xfa, 0x29, 0x1c,
+ 0x05, 0x20, 0x09, 0x4a, 0x03, 0xf0, 0x30, 0xff,
+ 0x08, 0x48, 0x1f, 0x22, 0x00, 0x19, 0x10, 0x38,
+ 0xc0, 0x7b, 0xc1, 0x04, 0xd2, 0x04, 0x08, 0x20,
+ 0x03, 0xf0, 0x26, 0xff, 0xb0, 0xbd, 0x00, 0x00,
+ 0xb4, 0x09, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfb,
+ 0x00, 0x00, 0x14, 0x45, 0x01, 0x00, 0xff, 0x0f,
+ 0x00, 0x00, 0xc0, 0x58, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x06, 0x49, 0x00, 0x28,
+ 0x01, 0xd1, 0x08, 0x68, 0x80, 0xbd, 0x01, 0x28,
+ 0x01, 0xd1, 0x48, 0x68, 0x80, 0xbd, 0xf1, 0xf7,
+ 0x90, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x7c, 0x73,
+ 0x01, 0x00, 0x01, 0x48, 0x40, 0x68, 0x70, 0x47,
+ 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x3c, 0x00,
+ 0xf4, 0xfb, 0x00, 0x00, 0x04, 0x48, 0x01, 0x23,
+ 0x04, 0x49, 0xc0, 0x56, 0xc9, 0x56, 0x40, 0x18,
+ 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00,
+ 0xa0, 0x58, 0x01, 0x00, 0xa2, 0x58, 0x01, 0x00,
+ 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, 0x00, 0x00,
+ 0x64, 0x73, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x0e, 0x1c, 0x00, 0xf0, 0x55, 0xf9, 0x04, 0x1c,
+ 0x00, 0xf0, 0x58, 0xf9, 0x00, 0x28, 0x2c, 0xd0,
+ 0x3c, 0x00, 0x30, 0xfc, 0x00, 0x00, 0xb3, 0x00,
+ 0x60, 0x1e, 0x00, 0x2d, 0x1c, 0x4e, 0x19, 0x49,
+ 0x1a, 0x4a, 0x06, 0xd1, 0x0b, 0x25, 0x0e, 0x2c,
+ 0x00, 0xd1, 0x19, 0x4a, 0xd2, 0x58, 0x08, 0x56,
+ 0x08, 0xe0, 0x01, 0x2d, 0x1c, 0xd1, 0x9a, 0x18,
+ 0x04, 0x36, 0x08, 0x18, 0x08, 0x25, 0x0e, 0x23,
+ 0x12, 0x6d, 0xc0, 0x56, 0x07, 0x1c, 0x47, 0x43,
+ 0xfb, 0x00, 0xdf, 0x19, 0x12, 0x4b, 0x3f, 0x21,
+ 0x58, 0x43, 0x3c, 0x00, 0x6c, 0xfc, 0x00, 0x00,
+ 0x11, 0x4b, 0xa9, 0x40, 0x0c, 0x1c, 0x38, 0x18,
+ 0xc0, 0x18, 0x14, 0x40, 0xec, 0x40, 0xc0, 0x11,
+ 0x60, 0x43, 0x1b, 0x0a, 0xc0, 0x18, 0x80, 0x12,
+ 0x03, 0xd1, 0x01, 0x20, 0x04, 0xe0, 0x00, 0x20,
+ 0xf8, 0xbd, 0x3f, 0x28, 0x00, 0xdd, 0x3f, 0x20,
+ 0x30, 0x60, 0xa8, 0x40, 0x08, 0x40, 0x8a, 0x43,
+ 0x10, 0x43, 0xf5, 0xe7, 0xcc, 0x59, 0x01, 0x00,
+ 0xdc, 0x58, 0x01, 0x00, 0x3c, 0x00, 0xa8, 0xfc,
+ 0x00, 0x00, 0x7c, 0x73, 0x01, 0x00, 0x7c, 0x59,
+ 0x01, 0x00, 0x06, 0x06, 0x00, 0x00, 0x26, 0x00,
+ 0x02, 0x00, 0x03, 0x48, 0x08, 0xb5, 0xc0, 0x88,
+ 0x00, 0xab, 0x18, 0x80, 0x00, 0x98, 0x08, 0xbd,
+ 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0b, 0x4d, 0x09, 0x4c, 0x0e, 0x20, 0x6c, 0x60,
+ 0xff, 0xf7, 0x8d, 0xf9, 0x09, 0x49, 0x02, 0x1c,
+ 0xc8, 0x60, 0x01, 0x06, 0x09, 0x0e, 0x3c, 0x00,
+ 0xe4, 0xfc, 0x00, 0x00, 0x13, 0x3a, 0x02, 0x2a,
+ 0x02, 0xd9, 0x17, 0x38, 0x04, 0x28, 0x00, 0xd8,
+ 0x00, 0x21, 0x08, 0x1c, 0x6c, 0x60, 0xb0, 0xbd,
+ 0x04, 0x18, 0x02, 0x00, 0x60, 0x00, 0x07, 0x00,
+ 0x64, 0x73, 0x01, 0x00, 0x0a, 0x48, 0x98, 0xb5,
+ 0x02, 0x78, 0x13, 0x21, 0x14, 0x2a, 0x00, 0xd3,
+ 0x01, 0x70, 0x42, 0x78, 0x14, 0x2a, 0x00, 0xd3,
+ 0x41, 0x70, 0x06, 0x4c, 0x60, 0x68, 0xff, 0xf7,
+ 0x3c, 0x00, 0x20, 0xfd, 0x00, 0x00, 0xbd, 0xfe,
+ 0x00, 0x90, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80,
+ 0x00, 0xf0, 0x75, 0xff, 0x98, 0xbd, 0xa4, 0x58,
+ 0x01, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x41, 0x78, 0x01, 0x20, 0xff, 0xf7,
+ 0xe6, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xa6, 0x58,
+ 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x01, 0x78,
+ 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfd, 0x00, 0x00,
+ 0xa6, 0x58, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x4d,
+ 0x00, 0x24, 0x20, 0x1c, 0xff, 0xf7, 0x44, 0xf9,
+ 0x01, 0x34, 0x10, 0x2c, 0x01, 0xc5, 0xf8, 0xd3,
+ 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x44, 0x01, 0x00,
+ 0x04, 0x49, 0x80, 0xb5, 0x88, 0x70, 0x04, 0x49,
+ 0x80, 0x00, 0x09, 0x58, 0x07, 0x20, 0x04, 0xf0,
+ 0x0f, 0xf9, 0x80, 0xbd, 0x64, 0x73, 0x01, 0x00,
+ 0xd0, 0x58, 0x01, 0x00, 0x3c, 0x00, 0x98, 0xfd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x3f, 0x24, 0x02, 0x1c,
+ 0x00, 0x2a, 0x01, 0xd1, 0x08, 0x20, 0x0b, 0x23,
+ 0x01, 0x2a, 0x01, 0xd1, 0x09, 0x20, 0x08, 0x23,
+ 0x25, 0x1c, 0x9d, 0x40, 0x00, 0x29, 0x00, 0xd1,
+ 0x01, 0x21, 0x3f, 0x29, 0x00, 0xd9, 0x21, 0x1c,
+ 0x99, 0x40, 0x0a, 0x1c, 0x29, 0x1c, 0xff, 0xf7,
+ 0x7c, 0xfc, 0xb0, 0xbd, 0x00, 0x00, 0x91, 0xb5,
+ 0x12, 0x49, 0x00, 0xab, 0x1a, 0x78, 0x3c, 0x00,
+ 0xd4, 0xfd, 0x00, 0x00, 0x08, 0x78, 0x11, 0x4c,
+ 0x80, 0x18, 0x00, 0x06, 0x00, 0x0e, 0x20, 0x70,
+ 0x49, 0x78, 0x5a, 0x78, 0x89, 0x18, 0x09, 0x06,
+ 0x09, 0x0e, 0x13, 0x22, 0x13, 0x28, 0x61, 0x70,
+ 0x00, 0xd9, 0x22, 0x70, 0x13, 0x29, 0x00, 0xd9,
+ 0x62, 0x70, 0x08, 0x49, 0x08, 0x48, 0x06, 0x39,
+ 0xc9, 0x88, 0x81, 0x80, 0x21, 0x78, 0x00, 0x20,
+ 0xff, 0xf7, 0x82, 0xfc, 0x61, 0x78, 0x01, 0x20,
+ 0x3c, 0x00, 0x10, 0xfe, 0x00, 0x00, 0xff, 0xf7,
+ 0x7e, 0xfc, 0x98, 0xbd, 0x00, 0x00, 0xa4, 0x58,
+ 0x01, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x64, 0x73,
+ 0x01, 0x00, 0x70, 0xb5, 0x1d, 0x4d, 0x04, 0x1c,
+ 0x28, 0x78, 0x0e, 0x1c, 0x03, 0x28, 0x03, 0xd1,
+ 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, 0x35, 0xfa,
+ 0x20, 0x1c, 0x00, 0xf0, 0x4e, 0xf8, 0x00, 0x28,
+ 0x25, 0xd0, 0x28, 0x78, 0x01, 0x28, 0x0a, 0xd1,
+ 0x68, 0x68, 0x3c, 0x00, 0x4c, 0xfe, 0x00, 0x00,
+ 0x00, 0x28, 0x07, 0xd0, 0x01, 0x21, 0x11, 0x20,
+ 0x03, 0xf0, 0xee, 0xfb, 0x01, 0x20, 0x69, 0x68,
+ 0xf0, 0xf7, 0xbd, 0xfa, 0x6c, 0x70, 0x6e, 0x60,
+ 0x20, 0x1c, 0xff, 0xf7, 0xc1, 0xfc, 0x04, 0x1c,
+ 0x00, 0xf0, 0xd4, 0xfe, 0x00, 0x2c, 0x02, 0xd0,
+ 0x68, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xf6, 0xf7,
+ 0xd9, 0xf8, 0x70, 0xbd, 0x01, 0x20, 0x28, 0x70,
+ 0x01, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x88, 0xfe,
+ 0x00, 0x00, 0x11, 0x20, 0x03, 0xf0, 0x9f, 0xfb,
+ 0x70, 0xbd, 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7,
+ 0x06, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x9c, 0x73,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x05, 0xd1,
+ 0x00, 0x29, 0x04, 0xd0, 0x01, 0x29, 0x01, 0xd1,
+ 0xf6, 0xf7, 0xbf, 0xf8, 0x80, 0xbd, 0x05, 0x49,
+ 0x08, 0x78, 0x03, 0x28, 0x02, 0xd0, 0x00, 0x20,
+ 0x08, 0x70, 0x80, 0xbd, 0x03, 0x21, 0x3c, 0x00,
+ 0xc4, 0xfe, 0x00, 0x00, 0x11, 0x20, 0xf1, 0xf7,
+ 0xed, 0xf9, 0x80, 0xbd, 0x9c, 0x73, 0x01, 0x00,
+ 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, 0x00, 0x00,
+ 0x9c, 0x73, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x39,
+ 0x01, 0x20, 0x0e, 0x29, 0x00, 0xd3, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c,
+ 0x20, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x60, 0x68,
+ 0x00, 0x28, 0x0d, 0xd0, 0x01, 0x21, 0x11, 0x20,
+ 0x3c, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0xf0,
+ 0x98, 0xfb, 0x01, 0x20, 0x61, 0x68, 0xf0, 0xf7,
+ 0x67, 0xfa, 0x00, 0x20, 0x60, 0x60, 0x20, 0x70,
+ 0x01, 0xe0, 0x03, 0x28, 0x0e, 0xd0, 0x00, 0x21,
+ 0x11, 0x20, 0x03, 0xf0, 0x8a, 0xfb, 0xff, 0xf7,
+ 0x24, 0xfc, 0xff, 0xf7, 0xc0, 0xfb, 0x05, 0x49,
+ 0x08, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x08, 0x73,
+ 0x03, 0x20, 0x20, 0x70, 0x01, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x00, 0x00,
+ 0x9c, 0x73, 0x01, 0x00, 0x88, 0x00, 0x07, 0x00,
+ 0x10, 0xb5, 0x0d, 0x4c, 0x20, 0x78, 0x03, 0x28,
+ 0x13, 0xd1, 0x00, 0x20, 0x20, 0x70, 0x0b, 0x48,
+ 0x01, 0x7b, 0x01, 0x22, 0x11, 0x43, 0x01, 0x73,
+ 0xff, 0xf7, 0x70, 0xfc, 0xff, 0xf7, 0x18, 0xfc,
+ 0x00, 0x28, 0x06, 0xd0, 0x02, 0x21, 0x21, 0x70,
+ 0x01, 0x1c, 0x00, 0x22, 0x11, 0x20, 0x03, 0xf0,
+ 0x2b, 0xfb, 0x01, 0x20, 0x3c, 0x00, 0x78, 0xff,
+ 0x00, 0x00, 0x10, 0xbd, 0x00, 0x00, 0x9c, 0x73,
+ 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x80, 0xb5,
+ 0x05, 0x49, 0x00, 0x28, 0x04, 0xd0, 0x00, 0x20,
+ 0x08, 0x60, 0x03, 0xf0, 0x5a, 0xfa, 0x80, 0xbd,
+ 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, 0x80, 0x5a,
+ 0x01, 0x00, 0xfe, 0xb5, 0x05, 0x1c, 0x80, 0x35,
+ 0x04, 0x1c, 0xa8, 0x68, 0x29, 0x79, 0x06, 0x68,
+ 0x20, 0x1c, 0xa0, 0x30, 0x02, 0x29, 0x3c, 0x00,
+ 0xb4, 0xff, 0x00, 0x00, 0x1c, 0xd1, 0x69, 0x79,
+ 0x08, 0x29, 0x01, 0xd0, 0x0c, 0x29, 0x17, 0xd1,
+ 0x01, 0x21, 0x61, 0x62, 0xa9, 0x68, 0x09, 0x68,
+ 0x09, 0x8b, 0x01, 0x82, 0xa9, 0x69, 0x01, 0x91,
+ 0x00, 0x8a, 0xc0, 0x06, 0x05, 0xd5, 0x60, 0x68,
+ 0x00, 0x88, 0x40, 0x05, 0x01, 0xd4, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x02, 0x90, 0x05, 0x20,
+ 0x01, 0xa9, 0x02, 0xf0, 0xb7, 0xf9, 0x02, 0xe0,
+ 0x3c, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x21,
+ 0x61, 0x62, 0x01, 0x82, 0xa9, 0x68, 0x1a, 0x23,
+ 0x0a, 0x89, 0x67, 0x6a, 0x18, 0x1c, 0x00, 0x2f,
+ 0x00, 0xd1, 0x18, 0x20, 0x10, 0x1a, 0x08, 0x81,
+ 0xa8, 0x68, 0x01, 0x68, 0x62, 0x6a, 0x00, 0x2a,
+ 0x00, 0xd1, 0x18, 0x23, 0xc9, 0x18, 0x01, 0x60,
+ 0xa8, 0x68, 0x41, 0xc4, 0x30, 0x88, 0x08, 0x3c,
+ 0x40, 0x04, 0x03, 0xd5, 0x20, 0x1c, 0xf7, 0xf7,
+ 0xbc, 0xf9, 0x3c, 0x00, 0x2c, 0x00, 0x01, 0x00,
+ 0xfe, 0xbd, 0x00, 0x21, 0xe1, 0x61, 0x30, 0x79,
+ 0xc0, 0x07, 0x03, 0xd4, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x91, 0xfe, 0xf5, 0xe7, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x43, 0xff, 0xf1, 0xe7, 0xf7, 0xb5, 0x05, 0x1c,
+ 0x0a, 0x30, 0x06, 0x1c, 0xf5, 0xf7, 0xa4, 0xfa,
+ 0x14, 0x4f, 0x04, 0x1c, 0x39, 0x88, 0xf2, 0xf7,
+ 0x83, 0xfe, 0x32, 0x88, 0x78, 0x68, 0x02, 0x80,
+ 0x72, 0x88, 0x02, 0x30, 0x3c, 0x00, 0x68, 0x00,
+ 0x01, 0x00, 0x02, 0x80, 0xb1, 0x88, 0x41, 0x80,
+ 0x69, 0x88, 0x02, 0x9a, 0x20, 0x1c, 0xfa, 0xf7,
+ 0xce, 0xfe, 0x0b, 0x4d, 0x08, 0x35, 0x68, 0x80,
+ 0xfb, 0xf7, 0x2b, 0xfe, 0x01, 0x21, 0x09, 0x03,
+ 0x00, 0x28, 0x28, 0x88, 0x01, 0xd0, 0x88, 0x43,
+ 0x00, 0xe0, 0x08, 0x43, 0x28, 0x80, 0x04, 0x48,
+ 0x00, 0x22, 0x00, 0x21, 0x14, 0x30, 0xf2, 0xf7,
+ 0x32, 0xfe, 0x20, 0x1c, 0xfc, 0xf7, 0x3c, 0x00,
+ 0xa4, 0x00, 0x01, 0x00, 0x85, 0xfa, 0xfe, 0xbd,
+ 0x24, 0x7b, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c,
+ 0x11, 0x49, 0x20, 0x1c, 0xff, 0x30, 0x69, 0x30,
+ 0x0e, 0xc9, 0x0e, 0xc0, 0x20, 0x1c, 0xff, 0x30,
+ 0x24, 0x22, 0x75, 0x30, 0x0e, 0x49, 0xf0, 0xf7,
+ 0x17, 0xfa, 0x20, 0x1c, 0xff, 0x30, 0x3c, 0x22,
+ 0x99, 0x30, 0x0c, 0x49, 0xf0, 0xf7, 0x6c, 0xfa,
+ 0x20, 0x1c, 0xff, 0x30, 0x10, 0x22, 0xd5, 0x30,
+ 0x3c, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x09, 0x49,
+ 0xf0, 0xf7, 0x09, 0xfa, 0x20, 0x1c, 0xff, 0x30,
+ 0x28, 0x22, 0xe5, 0x30, 0x07, 0x49, 0xf0, 0xf7,
+ 0x5e, 0xfa, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x80,
+ 0x07, 0x00, 0x40, 0x63, 0x01, 0x00, 0x0c, 0x80,
+ 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, 0x80, 0x80,
+ 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xb0, 0xb5,
+ 0x00, 0x28, 0x3f, 0xd0, 0x21, 0x48, 0x41, 0x68,
+ 0x21, 0x4c, 0x3c, 0x00, 0x1c, 0x01, 0x01, 0x00,
+ 0x61, 0x60, 0xc1, 0x68, 0xe1, 0x60, 0x01, 0x69,
+ 0x21, 0x61, 0x80, 0x6a, 0xa0, 0x62, 0x1e, 0x49,
+ 0x1c, 0x48, 0x09, 0x68, 0x14, 0x38, 0x41, 0x64,
+ 0x1c, 0x48, 0x25, 0x1c, 0x3c, 0x35, 0x0f, 0xc8,
+ 0x0f, 0xc5, 0x20, 0x1c, 0x80, 0x22, 0x4c, 0x30,
+ 0x19, 0x49, 0xf0, 0xf7, 0x33, 0xfa, 0x14, 0x22,
+ 0x20, 0x1c, 0xcc, 0x30, 0x17, 0x49, 0xf0, 0xf7,
+ 0x2d, 0xfa, 0x38, 0x22, 0x3c, 0x00, 0x58, 0x01,
+ 0x01, 0x00, 0x20, 0x1c, 0xe0, 0x30, 0x15, 0x49,
+ 0xf0, 0xf7, 0x27, 0xfa, 0x20, 0x1c, 0xff, 0x30,
+ 0x50, 0x22, 0x19, 0x30, 0x13, 0x49, 0xf0, 0xf7,
+ 0x20, 0xfa, 0x83, 0x20, 0x80, 0x00, 0x14, 0x22,
+ 0x20, 0x18, 0x10, 0x49, 0xf0, 0xf7, 0x19, 0xfa,
+ 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, 0x20, 0x18,
+ 0x0e, 0x49, 0xf0, 0xf7, 0x12, 0xfa, 0xff, 0xf7,
+ 0x8e, 0xff, 0xf8, 0xf7, 0x94, 0xfb, 0x3c, 0x00,
+ 0x94, 0x01, 0x01, 0x00, 0xb0, 0xbd, 0xff, 0xf7,
+ 0x89, 0xff, 0xb0, 0xbd, 0x00, 0x10, 0x07, 0x00,
+ 0x40, 0x63, 0x01, 0x00, 0x08, 0x20, 0x07, 0x00,
+ 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00,
+ 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x00, 0x90, 0x07, 0x00, 0x0c, 0x49, 0x80, 0xb5,
+ 0x01, 0x20, 0x48, 0x60, 0x0a, 0x48, 0x14, 0x38,
+ 0x3c, 0x00, 0xd0, 0x01, 0x01, 0x00, 0x00, 0x78,
+ 0x01, 0x28, 0x04, 0xd0, 0x08, 0x48, 0x94, 0x38,
+ 0x40, 0x6f, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x20,
+ 0x00, 0xf0, 0x1f, 0xf8, 0x80, 0xbd, 0x08, 0x68,
+ 0x00, 0x28, 0xfb, 0xd0, 0x03, 0x48, 0xf2, 0xf7,
+ 0x7a, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x98, 0x66,
+ 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5,
+ 0x00, 0x28, 0x09, 0xd1, 0xf2, 0x21, 0x0f, 0x20,
+ 0x03, 0xf0, 0x3c, 0x00, 0x0c, 0x02, 0x01, 0x00,
+ 0x13, 0xfa, 0x00, 0x22, 0x0f, 0x21, 0xf1, 0x20,
+ 0x03, 0xf0, 0xcc, 0xfa, 0x80, 0xbd, 0x01, 0x20,
+ 0xf8, 0xf7, 0x6a, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x20, 0x00, 0xf0,
+ 0xc9, 0xf9, 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0,
+ 0xff, 0xf9, 0xff, 0xf7, 0x65, 0xf8, 0x0b, 0x49,
+ 0x00, 0x20, 0x48, 0x74, 0xfb, 0xf7, 0xe6, 0xfa,
+ 0x09, 0x48, 0x00, 0x68, 0x3c, 0x00, 0x48, 0x02,
+ 0x01, 0x00, 0x00, 0x28, 0x03, 0xdc, 0x02, 0x21,
+ 0x40, 0x42, 0xff, 0xf7, 0x52, 0xfc, 0x04, 0x48,
+ 0x14, 0x30, 0x00, 0x68, 0x00, 0x28, 0x02, 0xd0,
+ 0x20, 0x1c, 0xf2, 0xf7, 0x42, 0xfe, 0x10, 0xbd,
+ 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0xd4, 0x7e,
+ 0x01, 0x00, 0x06, 0x49, 0x80, 0xb5, 0x09, 0x78,
+ 0x04, 0x29, 0x05, 0xd0, 0x05, 0x29, 0x03, 0xd0,
+ 0x06, 0x29, 0x01, 0xd0, 0x07, 0x29, 0x3c, 0x00,
+ 0x84, 0x02, 0x01, 0x00, 0x01, 0xd1, 0xfe, 0xf7,
+ 0xbd, 0xfd, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00,
+ 0x10, 0xb5, 0x09, 0x4c, 0xe0, 0x68, 0x00, 0x28,
+ 0x0b, 0xd1, 0x07, 0x48, 0x2c, 0x38, 0x00, 0x8a,
+ 0xc0, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x01, 0x20,
+ 0x62, 0x68, 0xf9, 0xf7, 0xc9, 0xfa, 0x01, 0x20,
+ 0xe0, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0xf4, 0x6e, 0x01, 0x00, 0x8c, 0xb5, 0x02, 0x1c,
+ 0x3c, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x08, 0x1c,
+ 0x11, 0x1c, 0xfd, 0xf7, 0x28, 0xff, 0x01, 0x90,
+ 0x00, 0x28, 0x05, 0xd0, 0x17, 0x20, 0x00, 0xab,
+ 0x18, 0x80, 0x68, 0x46, 0xfd, 0xf7, 0xff, 0xf8,
+ 0x8c, 0xbd, 0xf1, 0xb5, 0x2e, 0x4c, 0xae, 0xb0,
+ 0x00, 0x25, 0x25, 0x63, 0x20, 0x69, 0x01, 0x28,
+ 0x03, 0xd1, 0x01, 0xa8, 0x01, 0xf0, 0xa1, 0xf8,
+ 0x4e, 0xe0, 0x01, 0x26, 0x28, 0x4f, 0x26, 0x70,
+ 0x50, 0x3f, 0x3c, 0x00, 0xfc, 0x02, 0x01, 0x00,
+ 0xb8, 0x69, 0xf8, 0xf7, 0x4f, 0xf8, 0x25, 0x49,
+ 0x2c, 0x39, 0x00, 0x28, 0x1d, 0xd0, 0xe0, 0x6a,
+ 0x01, 0x28, 0x1a, 0xd1, 0x08, 0x8a, 0x0f, 0x1c,
+ 0x80, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x02, 0x20,
+ 0x62, 0x68, 0xf9, 0xf7, 0x8f, 0xfa, 0x38, 0x8a,
+ 0x00, 0x07, 0x07, 0xd5, 0xe0, 0x68, 0x01, 0x28,
+ 0x04, 0xd1, 0x00, 0x21, 0x08, 0x20, 0x62, 0x68,
+ 0xf9, 0xf7, 0x84, 0xfa, 0x3c, 0x00, 0x38, 0x03,
+ 0x01, 0x00, 0x00, 0x22, 0x18, 0x21, 0x82, 0x20,
+ 0x26, 0x63, 0x03, 0xf0, 0x36, 0xfa, 0x25, 0xe0,
+ 0x08, 0x8a, 0x0e, 0x1c, 0x80, 0x07, 0x04, 0xd5,
+ 0x00, 0x21, 0x02, 0x20, 0x62, 0x68, 0xf9, 0xf7,
+ 0x74, 0xfa, 0x30, 0x8a, 0x00, 0x07, 0x07, 0xd5,
+ 0xe0, 0x68, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x21,
+ 0x08, 0x20, 0x62, 0x68, 0xf9, 0xf7, 0x69, 0xfa,
+ 0x30, 0x8a, 0x40, 0x07, 0x04, 0xd5, 0x3c, 0x00,
+ 0x74, 0x03, 0x01, 0x00, 0x00, 0x22, 0x00, 0x21,
+ 0x04, 0x20, 0xf9, 0xf7, 0x61, 0xfa, 0x2e, 0x98,
+ 0x01, 0x28, 0x04, 0xd0, 0x1e, 0x95, 0x09, 0x21,
+ 0x1b, 0xa8, 0xff, 0xf7, 0x97, 0xff, 0xe5, 0x62,
+ 0xbd, 0x61, 0xe5, 0x60, 0x2f, 0xb0, 0xf0, 0xbd,
+ 0xf4, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x07, 0x20,
+ 0xfe, 0xf7, 0xa0, 0xfe, 0x00, 0x21, 0x0f, 0x20,
+ 0x03, 0xf0, 0x44, 0xf9, 0x0c, 0x48, 0x01, 0x78,
+ 0x3c, 0x00, 0xb0, 0x03, 0x01, 0x00, 0x00, 0x29,
+ 0x0f, 0xd0, 0x02, 0x21, 0x01, 0x70, 0x88, 0x38,
+ 0x00, 0x78, 0x00, 0x28, 0x04, 0xd0, 0x07, 0x49,
+ 0x10, 0x31, 0x48, 0x7c, 0x01, 0x30, 0x48, 0x74,
+ 0xf2, 0x22, 0x0f, 0x20, 0x05, 0x49, 0x03, 0xf0,
+ 0xfc, 0xf8, 0x00, 0x22, 0x0f, 0x21, 0xf3, 0x20,
+ 0x03, 0xf0, 0xe9, 0xf9, 0x80, 0xbd, 0x74, 0x66,
+ 0x01, 0x00, 0x80, 0x84, 0x1e, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x3c, 0x00, 0xec, 0x03, 0x01, 0x00,
+ 0xf2, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0x20, 0xf9,
+ 0x01, 0x2c, 0x0a, 0xd1, 0x08, 0x48, 0x08, 0x49,
+ 0x00, 0x68, 0x14, 0x39, 0x00, 0x28, 0x05, 0xd0,
+ 0xc8, 0x78, 0x02, 0x28, 0x02, 0xd1, 0xf7, 0xf7,
+ 0xaf, 0xfa, 0x10, 0xbd, 0x00, 0x20, 0x48, 0x70,
+ 0x05, 0x20, 0xfe, 0xf7, 0x65, 0xfe, 0x10, 0xbd,
+ 0x98, 0x66, 0x01, 0x00, 0xf8, 0xb5, 0x28, 0x4e,
+ 0x30, 0x21, 0x35, 0x1c, 0x3c, 0x00, 0x28, 0x04,
+ 0x01, 0x00, 0x60, 0x35, 0x28, 0x89, 0x89, 0x5d,
+ 0x88, 0x42, 0x03, 0xd1, 0x00, 0x20, 0xff, 0xf7,
+ 0xf6, 0xfe, 0xf8, 0xbd, 0x34, 0x1c, 0x70, 0x34,
+ 0x01, 0x21, 0x21, 0x70, 0x41, 0x18, 0x80, 0x19,
+ 0x30, 0x30, 0x29, 0x81, 0x40, 0x78, 0x1d, 0x4f,
+ 0x18, 0x3f, 0x38, 0x70, 0x00, 0x28, 0x08, 0xd0,
+ 0x00, 0x21, 0xfb, 0xf7, 0xc2, 0xf9, 0x00, 0x28,
+ 0x07, 0xd1, 0x20, 0x78, 0xff, 0xf7, 0x3c, 0x00,
+ 0x64, 0x04, 0x01, 0x00, 0x9b, 0xff, 0xe7, 0xe7,
+ 0x01, 0x21, 0x0f, 0x20, 0xf0, 0xf7, 0x1a, 0xff,
+ 0x14, 0x48, 0x01, 0x21, 0x80, 0x30, 0x81, 0x70,
+ 0x38, 0x69, 0xfb, 0xf7, 0x55, 0xfa, 0x20, 0x73,
+ 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0xd6, 0xf8,
+ 0x70, 0x7a, 0x01, 0x28, 0x0e, 0xd1, 0x0e, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x04, 0xd0, 0x38, 0x78,
+ 0x02, 0xf0, 0xda, 0xfa, 0x00, 0x28, 0x05, 0xd0,
+ 0x3c, 0x00, 0xa0, 0x04, 0x01, 0x00, 0x30, 0x7f,
+ 0x60, 0x73, 0x03, 0x20, 0x20, 0x70, 0x71, 0x89,
+ 0x05, 0xe0, 0x05, 0x20, 0x20, 0x70, 0xa8, 0x88,
+ 0xfa, 0xf7, 0x3b, 0xfb, 0x01, 0x1c, 0x00, 0x22,
+ 0x0f, 0x20, 0x03, 0xf0, 0x86, 0xf8, 0xba, 0xe7,
+ 0x00, 0x00, 0x04, 0x66, 0x01, 0x00, 0xe4, 0x62,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x02, 0xf0,
+ 0x6c, 0xfc, 0x36, 0x4b, 0x19, 0x1c, 0xa0, 0x31,
+ 0x0a, 0x78, 0x3c, 0x00, 0xdc, 0x04, 0x01, 0x00,
+ 0x10, 0x2a, 0x02, 0xd2, 0x0a, 0x79, 0x10, 0x2a,
+ 0x01, 0xd3, 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25,
+ 0x30, 0x4e, 0xca, 0x79, 0x80, 0x36, 0x01, 0x2c,
+ 0x12, 0xd0, 0x00, 0x25, 0x02, 0x2c, 0x2e, 0xd0,
+ 0x04, 0x2c, 0x3c, 0xd1, 0x5c, 0x6b, 0x00, 0x2c,
+ 0x39, 0xd1, 0x9c, 0x6f, 0x00, 0x1b, 0x2a, 0x4c,
+ 0xa0, 0x42, 0x34, 0xd9, 0xb2, 0x68, 0x98, 0x6a,
+ 0x82, 0x42, 0x31, 0xd0, 0x3c, 0x00, 0x18, 0x05,
+ 0x01, 0x00, 0x4d, 0x72, 0x34, 0xe0, 0xb0, 0x68,
+ 0x9c, 0x6a, 0x02, 0x22, 0xa0, 0x42, 0x21, 0xd1,
+ 0x58, 0x6b, 0x00, 0x28, 0x1e, 0xd1, 0x00, 0x2d,
+ 0x1c, 0xd1, 0x48, 0x7a, 0x19, 0x28, 0x20, 0xd0,
+ 0x34, 0x68, 0x98, 0x6f, 0x64, 0x00, 0x00, 0x1b,
+ 0x74, 0x68, 0x00, 0x19, 0xff, 0x30, 0x1c, 0x4c,
+ 0x39, 0x30, 0xa0, 0x42, 0x16, 0xd2, 0x48, 0x79,
+ 0x8c, 0x79, 0x00, 0x19, 0x30, 0x28, 0x3c, 0x00,
+ 0x54, 0x05, 0x01, 0x00, 0x11, 0xd3, 0x10, 0x22,
+ 0x0f, 0xe0, 0x5c, 0x6b, 0x01, 0x2c, 0x06, 0xd1,
+ 0xb0, 0x68, 0x9a, 0x6a, 0x90, 0x42, 0x00, 0xd1,
+ 0x4d, 0x72, 0x00, 0x22, 0x05, 0xe0, 0x9c, 0x6f,
+ 0x00, 0x1b, 0x12, 0x4c, 0xa0, 0x42, 0x00, 0xd3,
+ 0x20, 0x22, 0x06, 0xe0, 0x4a, 0x7a, 0x19, 0x2a,
+ 0x01, 0xd2, 0x01, 0x32, 0x4a, 0x72, 0x20, 0x22,
+ 0xb0, 0x60, 0x30, 0x68, 0x9b, 0x6f, 0x98, 0x42,
+ 0x3c, 0x00, 0x90, 0x05, 0x01, 0x00, 0x04, 0xd1,
+ 0x00, 0x2a, 0x00, 0xd1, 0x48, 0x79, 0x4a, 0x71,
+ 0x06, 0xe0, 0x10, 0x2a, 0x04, 0xd3, 0x70, 0x60,
+ 0x33, 0x60, 0x48, 0x79, 0x88, 0x71, 0xf6, 0xe7,
+ 0xca, 0x71, 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x71, 0x02,
+ 0x00, 0x00, 0x35, 0x0c, 0x00, 0x00, 0x05, 0x48,
+ 0x80, 0xb5, 0x81, 0x7b, 0x00, 0x29, 0x05, 0xd0,
+ 0x00, 0x21, 0x3c, 0x00, 0xcc, 0x05, 0x01, 0x00,
+ 0x81, 0x73, 0x03, 0x49, 0x0f, 0x20, 0x01, 0xf0,
+ 0x0f, 0xff, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00,
+ 0xe9, 0x03, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x02, 0xf0, 0xe2, 0xfb, 0x05, 0x1c, 0x38, 0x4e,
+ 0x20, 0x1c, 0x37, 0x49, 0x34, 0x1c, 0xa0, 0x34,
+ 0x10, 0x22, 0x44, 0x39, 0x01, 0x28, 0x2c, 0xd0,
+ 0x04, 0x28, 0x4e, 0xd1, 0x37, 0x1c, 0x74, 0x36,
+ 0x09, 0xce, 0x26, 0x78, 0x3c, 0x00, 0x08, 0x06,
+ 0x01, 0x00, 0xc0, 0x1a, 0x20, 0x2e, 0x04, 0xd1,
+ 0x30, 0x4e, 0xb0, 0x42, 0x01, 0xd9, 0x00, 0x26,
+ 0x4e, 0x61, 0x3e, 0x1c, 0x3f, 0x6c, 0x00, 0x2f,
+ 0x48, 0xd1, 0x77, 0x6c, 0x00, 0x2f, 0x45, 0xd1,
+ 0xb7, 0x6a, 0x00, 0x2f, 0x3d, 0xd0, 0x77, 0x6b,
+ 0x00, 0x2f, 0x3a, 0xd0, 0x27, 0x4f, 0xb8, 0x42,
+ 0x37, 0xd2, 0x60, 0x78, 0x10, 0x28, 0x06, 0xd3,
+ 0xf0, 0x6f, 0x18, 0x1a, 0x24, 0x4b, 0x3c, 0x00,
+ 0x44, 0x06, 0x01, 0x00, 0x98, 0x42, 0x01, 0xd2,
+ 0xe2, 0x70, 0xf5, 0x66, 0x48, 0x69, 0x06, 0x28,
+ 0x2f, 0xd2, 0x01, 0x30, 0x2c, 0xe0, 0x20, 0x78,
+ 0x20, 0x28, 0x01, 0xd1, 0x06, 0x23, 0x4b, 0x61,
+ 0x02, 0x23, 0x23, 0x71, 0xb3, 0x6a, 0x00, 0x2b,
+ 0x19, 0xd0, 0x49, 0x69, 0x03, 0x29, 0x16, 0xd9,
+ 0x71, 0x6b, 0x73, 0x6d, 0x59, 0x40, 0x12, 0xd0,
+ 0xe1, 0x78, 0x10, 0x29, 0x10, 0xd3, 0x61, 0x78,
+ 0x3c, 0x00, 0x80, 0x06, 0x01, 0x00, 0x33, 0x1c,
+ 0x10, 0x29, 0x0c, 0xd3, 0xd9, 0x6f, 0x69, 0x1a,
+ 0x13, 0x4d, 0xa9, 0x42, 0x07, 0xd2, 0x58, 0x6c,
+ 0x00, 0x28, 0x02, 0xd0, 0x98, 0x6c, 0x00, 0x28,
+ 0x00, 0xd1, 0x22, 0x71, 0xf8, 0xbd, 0x02, 0x28,
+ 0xfc, 0xd1, 0x22, 0x70, 0xfa, 0xe7, 0x48, 0x69,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x38, 0x48, 0x61,
+ 0x0a, 0x49, 0xf0, 0x6e, 0x40, 0x18, 0x02, 0xf0,
+ 0xb0, 0xfa, 0x3c, 0x00, 0xbc, 0x06, 0x01, 0x00,
+ 0x00, 0x28, 0xee, 0xd0, 0x01, 0x20, 0xe0, 0x70,
+ 0x06, 0x48, 0x28, 0x18, 0xf0, 0x66, 0xe8, 0xe7,
+ 0xa4, 0x6c, 0x01, 0x00, 0xe2, 0x04, 0x00, 0x00,
+ 0x1a, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00,
+ 0x00, 0x2d, 0x31, 0x01, 0x00, 0x5a, 0x62, 0x02,
+ 0x80, 0xb5, 0x41, 0x68, 0x09, 0x79, 0xc9, 0x07,
+ 0x13, 0xd5, 0xc1, 0x69, 0x00, 0x29, 0x0d, 0xd0,
+ 0x89, 0x79, 0x02, 0x29, 0x3c, 0x00, 0xf8, 0x06,
+ 0x01, 0x00, 0x0a, 0xd1, 0x08, 0x21, 0x01, 0x86,
+ 0x01, 0x1c, 0x38, 0x31, 0x81, 0x62, 0x02, 0x1c,
+ 0x06, 0x48, 0x04, 0x49, 0xf9, 0xf7, 0xfd, 0xfc,
+ 0x80, 0xbd, 0xf7, 0xf7, 0xdc, 0xfb, 0x80, 0xbd,
+ 0xf7, 0xf7, 0x23, 0xfb, 0x80, 0xbd, 0xb9, 0x71,
+ 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x10, 0xb5,
+ 0x00, 0x24, 0x00, 0x28, 0x03, 0xd0, 0x02, 0xf0,
+ 0xe8, 0xfe, 0x00, 0x28, 0x17, 0xd0, 0x3c, 0x00,
+ 0x34, 0x07, 0x01, 0x00, 0x0c, 0x4c, 0x01, 0x20,
+ 0xa0, 0x72, 0x20, 0x68, 0x00, 0x21, 0x41, 0x62,
+ 0x0a, 0x49, 0x02, 0x68, 0xc9, 0x78, 0x60, 0x32,
+ 0x91, 0x71, 0x21, 0x89, 0x01, 0x31, 0x21, 0x81,
+ 0x00, 0x68, 0x40, 0x30, 0x81, 0x83, 0xfb, 0xf7,
+ 0x31, 0xfc, 0x20, 0x68, 0x00, 0x68, 0xfc, 0xf7,
+ 0xa1, 0xf9, 0x01, 0x24, 0x20, 0x1c, 0x10, 0xbd,
+ 0x14, 0x7a, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00,
+ 0x3c, 0x00, 0x70, 0x07, 0x01, 0x00, 0x7f, 0xb5,
+ 0x06, 0x1c, 0x1e, 0x48, 0x1d, 0x1c, 0x43, 0x88,
+ 0x02, 0x88, 0x1c, 0x21, 0x00, 0x20, 0x90, 0xb0,
+ 0xf0, 0xf7, 0x45, 0xff, 0x03, 0x90, 0x04, 0x68,
+ 0xff, 0x21, 0x01, 0x31, 0x21, 0x80, 0x08, 0x20,
+ 0x60, 0x80, 0x06, 0x20, 0x20, 0x71, 0x04, 0x20,
+ 0x60, 0x71, 0xc0, 0x01, 0x00, 0x2d, 0x00, 0xd1,
+ 0x08, 0x1c, 0xe0, 0x80, 0x01, 0xa8, 0x02, 0x30,
+ 0x31, 0x1c, 0x3c, 0x00, 0xac, 0x07, 0x01, 0x00,
+ 0x05, 0x1c, 0xfa, 0xf7, 0x5f, 0xfa, 0x10, 0x49,
+ 0x68, 0x46, 0xfa, 0xf7, 0x5b, 0xfa, 0x20, 0x1c,
+ 0x08, 0x30, 0x69, 0x46, 0xfa, 0xf7, 0x56, 0xfa,
+ 0x29, 0x1c, 0x20, 0x1c, 0x12, 0x30, 0xfa, 0xf7,
+ 0x51, 0xfa, 0x10, 0xab, 0x98, 0x88, 0x00, 0x22,
+ 0x01, 0x21, 0x20, 0x83, 0xd8, 0x88, 0x60, 0x83,
+ 0x18, 0x89, 0xe0, 0x81, 0x58, 0x89, 0x20, 0x82,
+ 0x68, 0x46, 0xf9, 0xf7, 0x3c, 0x00, 0xe8, 0x07,
+ 0x01, 0x00, 0x17, 0xff, 0x14, 0xb0, 0x70, 0xbd,
+ 0x00, 0x00, 0x14, 0x6e, 0x01, 0x00, 0x12, 0x61,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x18, 0x48,
+ 0x25, 0x1c, 0x00, 0x78, 0x60, 0x35, 0x80, 0x07,
+ 0x00, 0x28, 0x08, 0xda, 0xe8, 0x79, 0x00, 0x28,
+ 0x05, 0xd0, 0xf4, 0xf7, 0x70, 0xff, 0x01, 0x1c,
+ 0x20, 0x1c, 0x00, 0xf0, 0x78, 0xf9, 0x29, 0x88,
+ 0x2e, 0x20, 0x00, 0x5d, 0xf2, 0xf7, 0x3c, 0x00,
+ 0x24, 0x08, 0x01, 0x00, 0x9f, 0xfa, 0xe8, 0x79,
+ 0x00, 0x28, 0x0b, 0xd1, 0x20, 0x1c, 0x40, 0x30,
+ 0x01, 0x8b, 0x22, 0x69, 0x11, 0x80, 0x41, 0x8b,
+ 0x22, 0x69, 0x51, 0x80, 0x80, 0x8b, 0x21, 0x69,
+ 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1,
+ 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02,
+ 0x11, 0x43, 0x01, 0x80, 0x6a, 0x7a, 0xe0, 0x68,
+ 0x02, 0x49, 0xf2, 0xf7, 0x53, 0xfa, 0xb0, 0xbd,
+ 0x3c, 0x00, 0x60, 0x08, 0x01, 0x00, 0x1d, 0x75,
+ 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, 0x90, 0xb5,
+ 0x04, 0x1c, 0x38, 0x23, 0x0c, 0x49, 0x58, 0x43,
+ 0x43, 0x18, 0x85, 0xb0, 0x00, 0x20, 0x0a, 0x49,
+ 0x02, 0x90, 0x18, 0x1c, 0x01, 0x22, 0x03, 0x91,
+ 0x09, 0x49, 0x04, 0x92, 0x30, 0x30, 0x42, 0x78,
+ 0x09, 0x88, 0x01, 0x92, 0x00, 0x91, 0x01, 0x78,
+ 0x5a, 0x6b, 0x0c, 0x33, 0x20, 0x1c, 0xfb, 0xf7,
+ 0x7c, 0xf8, 0x3c, 0x00, 0x9c, 0x08, 0x01, 0x00,
+ 0x05, 0xb0, 0x90, 0xbd, 0xd4, 0xe4, 0x01, 0x00,
+ 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00,
+ 0x90, 0xb5, 0x85, 0xb0, 0x03, 0x1c, 0x00, 0x20,
+ 0x02, 0x90, 0x0a, 0x49, 0x18, 0x1c, 0x00, 0x22,
+ 0x04, 0x92, 0x60, 0x30, 0x03, 0x91, 0xc2, 0x79,
+ 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, 0x5a, 0x6a,
+ 0xdc, 0x68, 0x20, 0x33, 0x99, 0x7b, 0x40, 0x7a,
+ 0x23, 0x1c, 0xfb, 0xf7, 0x3c, 0x00, 0xd8, 0x08,
+ 0x01, 0x00, 0x5d, 0xf8, 0x05, 0xb0, 0x90, 0xbd,
+ 0x00, 0x00, 0x0d, 0x4f, 0x00, 0x00, 0x07, 0x49,
+ 0x80, 0xb5, 0x88, 0x6a, 0x00, 0x28, 0x08, 0xd1,
+ 0x01, 0x20, 0x88, 0x62, 0xf0, 0xf7, 0xaf, 0xfc,
+ 0x01, 0x1c, 0x03, 0x48, 0x00, 0x22, 0xf2, 0xf7,
+ 0xb8, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x41, 0xe4, 0x00, 0x00, 0xf0, 0xb5,
+ 0x9b, 0xb0, 0x00, 0x28, 0x20, 0xd0, 0x3c, 0x00,
+ 0x14, 0x09, 0x01, 0x00, 0x01, 0x1c, 0x08, 0xa8,
+ 0xfc, 0xf7, 0xb2, 0xfd, 0x01, 0x20, 0x11, 0x90,
+ 0x03, 0x20, 0x10, 0xad, 0x28, 0x72, 0x04, 0x20,
+ 0x68, 0x72, 0x05, 0xa8, 0x00, 0x22, 0x69, 0x46,
+ 0xf4, 0xf7, 0x00, 0xff, 0x00, 0x24, 0x00, 0x26,
+ 0x05, 0xa9, 0x00, 0x20, 0xf9, 0xf7, 0xfc, 0xfa,
+ 0x69, 0x46, 0xf9, 0xf7, 0xf9, 0xfa, 0x0b, 0x90,
+ 0x08, 0xa8, 0xfc, 0xf7, 0xbb, 0xfd, 0x01, 0x34,
+ 0x3c, 0x00, 0x50, 0x09, 0x01, 0x00, 0x02, 0x2c,
+ 0x2e, 0x72, 0xf0, 0xdb, 0x1b, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0x90, 0xb5, 0x04, 0x1c, 0x4c, 0x23,
+ 0x0c, 0x49, 0x58, 0x43, 0x43, 0x18, 0x85, 0xb0,
+ 0x00, 0x20, 0x0a, 0x49, 0x02, 0x90, 0x00, 0x22,
+ 0x04, 0x92, 0x3c, 0x20, 0x03, 0x91, 0xc2, 0x5c,
+ 0x08, 0x48, 0x41, 0x88, 0x01, 0x92, 0x41, 0x20,
+ 0x00, 0x91, 0xc1, 0x5c, 0x5a, 0x68, 0x08, 0x33,
+ 0x20, 0x1c, 0x3c, 0x00, 0x8c, 0x09, 0x01, 0x00,
+ 0xfb, 0xf7, 0x02, 0xf8, 0x05, 0xb0, 0x90, 0xbd,
+ 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00,
+ 0x3c, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c,
+ 0x22, 0x4c, 0x38, 0x21, 0x17, 0x1c, 0x05, 0x1c,
+ 0x20, 0x1c, 0xef, 0xf7, 0x75, 0xfd, 0x23, 0x1c,
+ 0x25, 0x33, 0x21, 0x1c, 0x24, 0x31, 0x10, 0x20,
+ 0x6a, 0x46, 0xf9, 0xf7, 0x1d, 0xf8, 0x00, 0xab,
+ 0x18, 0x88, 0x07, 0x21, 0x3c, 0x00, 0xc8, 0x09,
+ 0x01, 0x00, 0x1a, 0x4a, 0x02, 0x38, 0x20, 0x84,
+ 0x20, 0x1c, 0x20, 0x30, 0x81, 0x70, 0xc5, 0x70,
+ 0x11, 0x1c, 0x06, 0x73, 0x47, 0x73, 0x34, 0x31,
+ 0x21, 0x63, 0x30, 0x32, 0x62, 0x63, 0x01, 0x79,
+ 0x25, 0x1c, 0x10, 0x35, 0x21, 0x81, 0x20, 0x60,
+ 0xe5, 0x60, 0x18, 0x88, 0x40, 0x1a, 0x20, 0x83,
+ 0x20, 0x1c, 0x28, 0x30, 0x20, 0x61, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x11, 0xf8, 0x0d, 0x48, 0x3c, 0x00,
+ 0x04, 0x0a, 0x01, 0x00, 0x00, 0x68, 0x00, 0x28,
+ 0x07, 0xd0, 0x06, 0x21, 0x20, 0x1c, 0xf8, 0xf7,
+ 0x47, 0xfd, 0x10, 0x21, 0x28, 0x1c, 0xf8, 0xf7,
+ 0x43, 0xfd, 0x08, 0x48, 0x02, 0x21, 0x01, 0x62,
+ 0x44, 0x62, 0x01, 0x21, 0x01, 0x62, 0x06, 0x48,
+ 0x00, 0x68, 0xef, 0xf7, 0xd5, 0xfc, 0xf8, 0xbd,
+ 0x8c, 0x8e, 0x01, 0x00, 0xe4, 0xfe, 0x01, 0x00,
+ 0xcc, 0x5c, 0x01, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x3c, 0x00, 0x40, 0x0a, 0x01, 0x00, 0x5c, 0x5b,
+ 0x01, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x40, 0x36,
+ 0x31, 0x8b, 0x04, 0x1c, 0x25, 0x1c, 0x08, 0x07,
+ 0x80, 0x0f, 0x60, 0x35, 0x01, 0x28, 0x85, 0xb0,
+ 0x3b, 0xd0, 0xe8, 0x79, 0x00, 0x28, 0x05, 0xd1,
+ 0x20, 0x69, 0x01, 0x80, 0xb0, 0x8b, 0x21, 0x69,
+ 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1,
+ 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02,
+ 0x11, 0x43, 0x3c, 0x00, 0x7c, 0x0a, 0x01, 0x00,
+ 0x01, 0x80, 0x20, 0x48, 0x00, 0x78, 0x80, 0x07,
+ 0x26, 0xd5, 0xe8, 0x79, 0x00, 0x28, 0x23, 0xd0,
+ 0xa0, 0x6b, 0x00, 0x28, 0x1c, 0xd0, 0xf4, 0xf7,
+ 0x2f, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xb8, 0x21,
+ 0x09, 0x58, 0x00, 0x29, 0x05, 0xd0, 0x30, 0x21,
+ 0x09, 0x5d, 0xb4, 0x30, 0x08, 0x18, 0x07, 0x7a,
+ 0x00, 0xe0, 0x00, 0x27, 0x01, 0x21, 0x38, 0x1c,
+ 0xfa, 0xf7, 0x86, 0xf9, 0x3c, 0x00, 0xb8, 0x0a,
+ 0x01, 0x00, 0x04, 0x90, 0x20, 0x69, 0x04, 0x30,
+ 0x39, 0x1c, 0xf4, 0xf7, 0x6c, 0xfd, 0x04, 0x99,
+ 0xfa, 0xf7, 0xd3, 0xf9, 0x02, 0xe0, 0x20, 0x1c,
+ 0xf7, 0xf7, 0xf9, 0xfb, 0x70, 0x83, 0x70, 0x8b,
+ 0x21, 0x69, 0x00, 0x22, 0x48, 0x80, 0x09, 0x49,
+ 0x0a, 0x48, 0x04, 0x92, 0x03, 0x91, 0x02, 0x90,
+ 0xea, 0x79, 0x29, 0x88, 0x01, 0x92, 0x00, 0x91,
+ 0x62, 0x6a, 0xe3, 0x68, 0x20, 0x34, 0x3c, 0x00,
+ 0xf4, 0x0a, 0x01, 0x00, 0xa1, 0x7b, 0x68, 0x7a,
+ 0xfa, 0xf7, 0x4c, 0xff, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x1d, 0x75, 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00,
+ 0xdd, 0x2f, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0x26, 0x1c, 0x01, 0x20, 0x20, 0x36, 0x00, 0x29,
+ 0x02, 0x90, 0x2e, 0xd0, 0x58, 0x20, 0x00, 0x5b,
+ 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x01, 0xd1,
+ 0xcc, 0x31, 0x00, 0xe0, 0xb4, 0x31, 0x48, 0x68,
+ 0x3c, 0x00, 0x30, 0x0b, 0x01, 0x00, 0x0d, 0x1c,
+ 0x00, 0x28, 0x24, 0xd0, 0x20, 0x1c, 0x60, 0x30,
+ 0xc2, 0x79, 0x01, 0x21, 0x01, 0x2a, 0x00, 0xd0,
+ 0x00, 0x21, 0x27, 0x1c, 0x62, 0x6d, 0x30, 0x37,
+ 0x00, 0x2a, 0x04, 0xd0, 0x3a, 0x1c, 0x28, 0x1c,
+ 0xf6, 0xf7, 0xe7, 0xfd, 0x07, 0xe0, 0x42, 0x7a,
+ 0x23, 0x1c, 0x68, 0x33, 0x00, 0x92, 0x3a, 0x1c,
+ 0x28, 0x1c, 0xf6, 0xf7, 0x9a, 0xfd, 0x02, 0x90,
+ 0x38, 0x78, 0x3c, 0x00, 0x6c, 0x0b, 0x01, 0x00,
+ 0x40, 0x19, 0x00, 0x7a, 0x01, 0x21, 0xb0, 0x73,
+ 0xfa, 0xf7, 0x26, 0xf9, 0x01, 0xe0, 0x00, 0x20,
+ 0xb0, 0x73, 0x60, 0x62, 0xb0, 0x7b, 0x0d, 0x28,
+ 0x01, 0xd9, 0xf0, 0xf7, 0xbb, 0xfb, 0x02, 0x98,
+ 0xfe, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c,
+ 0x80, 0x30, 0x25, 0x1c, 0x5e, 0x35, 0x00, 0x78,
+ 0xae, 0x1d, 0xaf, 0x1f, 0x00, 0x28, 0x83, 0xb0,
+ 0x12, 0xd1, 0xf4, 0xf7, 0x3c, 0x00, 0xa8, 0x0b,
+ 0x01, 0x00, 0xc7, 0xfb, 0x00, 0x28, 0x07, 0xd0,
+ 0x06, 0x98, 0x05, 0x99, 0x02, 0x90, 0x04, 0x98,
+ 0x01, 0x90, 0xa6, 0x61, 0x67, 0x61, 0x0d, 0xe0,
+ 0x04, 0x98, 0x06, 0x99, 0x02, 0x90, 0x05, 0x98,
+ 0x01, 0x90, 0x66, 0x61, 0x05, 0xe0, 0x04, 0xa9,
+ 0x03, 0xc9, 0x02, 0x90, 0x06, 0x98, 0x01, 0x90,
+ 0x67, 0x61, 0xa5, 0x61, 0x06, 0x22, 0x38, 0x1c,
+ 0xef, 0xf7, 0x8b, 0xfc, 0x06, 0x22, 0x3c, 0x00,
+ 0xe4, 0x0b, 0x01, 0x00, 0x28, 0x1c, 0x02, 0x99,
+ 0xef, 0xf7, 0x86, 0xfc, 0x06, 0x22, 0x30, 0x1c,
+ 0x01, 0x99, 0xef, 0xf7, 0x81, 0xfc, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf0, 0xf7,
+ 0x7b, 0xfb, 0x02, 0x49, 0xa0, 0x00, 0x08, 0x58,
+ 0x85, 0x60, 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00,
+ 0xf8, 0xb5, 0xff, 0xf7, 0x59, 0xf9, 0x05, 0x1c,
+ 0x3c, 0x00, 0x20, 0x0c, 0x01, 0x00, 0xfe, 0xf7,
+ 0xe8, 0xff, 0x04, 0x1c, 0x28, 0x1c, 0xff, 0xf7,
+ 0x58, 0xf9, 0x00, 0x28, 0x42, 0xd0, 0x69, 0x1e,
+ 0x21, 0x4d, 0x4a, 0x00, 0x20, 0x4b, 0x1c, 0x3d,
+ 0xae, 0x5c, 0x98, 0x5c, 0x30, 0x40, 0xd6, 0x18,
+ 0x01, 0x23, 0xf6, 0x56, 0x52, 0x19, 0xd2, 0x56,
+ 0x96, 0x42, 0x01, 0xdd, 0x15, 0x1c, 0x00, 0xe0,
+ 0x35, 0x1c, 0x18, 0x4b, 0x2a, 0x3b, 0x59, 0x56,
+ 0x51, 0x18, 0x3c, 0x00, 0x5c, 0x0c, 0x01, 0x00,
+ 0xb1, 0x42, 0x00, 0xdb, 0x31, 0x1c, 0x0e, 0x1c,
+ 0x00, 0x28, 0x26, 0xd0, 0xfe, 0xf7, 0xbe, 0xff,
+ 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, 0x12, 0x49,
+ 0x00, 0x23, 0xc9, 0x56, 0x00, 0xab, 0x15, 0x22,
+ 0x10, 0x1a, 0x5b, 0x78, 0x00, 0x1b, 0x40, 0x18,
+ 0xd2, 0x1a, 0x12, 0x1b, 0x51, 0x18, 0x00, 0x22,
+ 0x85, 0x42, 0x02, 0xdb, 0x00, 0xab, 0x1a, 0x70,
+ 0x02, 0xe0, 0x40, 0x1b, 0x3c, 0x00, 0x98, 0x0c,
+ 0x01, 0x00, 0x00, 0xab, 0x18, 0x70, 0x8e, 0x42,
+ 0x02, 0xdb, 0x00, 0xab, 0x5a, 0x70, 0x02, 0xe0,
+ 0x88, 0x1b, 0x00, 0xab, 0x58, 0x70, 0x00, 0x98,
+ 0xff, 0xf7, 0x8d, 0xf8, 0x01, 0xf0, 0xff, 0xf8,
+ 0xf8, 0xbd, 0xe6, 0x78, 0x01, 0x00, 0x65, 0x73,
+ 0x01, 0x00, 0x70, 0xb5, 0x08, 0x4e, 0x06, 0x4d,
+ 0x00, 0x24, 0x06, 0x20, 0x60, 0x43, 0x80, 0x19,
+ 0x06, 0x22, 0x29, 0x1c, 0xef, 0xf7, 0x3c, 0x00,
+ 0xd4, 0x0c, 0x01, 0x00, 0x11, 0xfc, 0x01, 0x34,
+ 0x05, 0x2c, 0xf5, 0xdb, 0x70, 0xbd, 0x00, 0x00,
+ 0x4e, 0x47, 0x01, 0x00, 0xe6, 0x7a, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48,
+ 0xfe, 0xf7, 0x42, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0xa8, 0x79, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48,
+ 0xfe, 0xf7, 0x4a, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x10, 0x0d, 0x01, 0x00, 0xa8, 0x79,
+ 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x10, 0xb5,
+ 0x00, 0x28, 0x0a, 0xd0, 0x06, 0x4c, 0xa1, 0x69,
+ 0x00, 0x29, 0x01, 0xd1, 0x00, 0x20, 0x00, 0xe0,
+ 0x09, 0x68, 0xf7, 0xf7, 0x38, 0xfb, 0xa0, 0x61,
+ 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, 0xa4, 0x6e,
+ 0x01, 0x00, 0xf3, 0xb5, 0x37, 0x48, 0x83, 0xb0,
+ 0x02, 0x90, 0x80, 0x79, 0x0e, 0x1c, 0x00, 0x27,
+ 0x01, 0x90, 0x3c, 0x00, 0x4c, 0x0d, 0x01, 0x00,
+ 0x34, 0x48, 0x35, 0x4a, 0x01, 0x6a, 0x03, 0x9c,
+ 0x03, 0x1c, 0x1b, 0x69, 0xa1, 0x42, 0x01, 0xd0,
+ 0x93, 0x61, 0x00, 0xe0, 0x53, 0x61, 0x31, 0x49,
+ 0x8a, 0x68, 0x96, 0x42, 0x3f, 0xd0, 0x2d, 0x48,
+ 0x8e, 0x60, 0xc1, 0x68, 0x00, 0x24, 0x25, 0x1c,
+ 0x00, 0x29, 0x2d, 0x48, 0x09, 0xd0, 0x00, 0x2e,
+ 0x0b, 0xd0, 0x28, 0x48, 0x01, 0x24, 0xc0, 0x6a,
+ 0x24, 0x03, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x0d,
+ 0x01, 0x00, 0x06, 0xd0, 0x01, 0x27, 0x04, 0xe0,
+ 0x00, 0x2e, 0x01, 0xd0, 0x05, 0x1c, 0xf9, 0xe7,
+ 0x04, 0x1c, 0x00, 0x2f, 0x06, 0xd0, 0xfb, 0xf7,
+ 0x1e, 0xfb, 0x1f, 0x48, 0x01, 0x68, 0x22, 0x48,
+ 0xfe, 0xf7, 0xfb, 0xfa, 0x20, 0x1c, 0x28, 0x43,
+ 0x0e, 0xd0, 0x2a, 0x1c, 0x21, 0x1c, 0x01, 0x20,
+ 0x02, 0xf0, 0x21, 0xfe, 0x2a, 0x1c, 0x21, 0x1c,
+ 0x02, 0x20, 0x02, 0xf0, 0x1c, 0xfe, 0x3c, 0x00,
+ 0xc4, 0x0d, 0x01, 0x00, 0x2a, 0x1c, 0x21, 0x1c,
+ 0x03, 0x20, 0x02, 0xf0, 0x17, 0xfe, 0x00, 0x2f,
+ 0x06, 0xd1, 0x13, 0x48, 0x01, 0x68, 0x16, 0x48,
+ 0xfe, 0xf7, 0xce, 0xfa, 0xfa, 0xf7, 0x42, 0xfd,
+ 0x03, 0x9c, 0x00, 0x2c, 0x01, 0xd1, 0x01, 0xf0,
+ 0xe1, 0xff, 0x01, 0xa9, 0x03, 0xc9, 0x88, 0x71,
+ 0x01, 0xf0, 0xdc, 0xff, 0x0a, 0x4c, 0x0a, 0x4b,
+ 0x44, 0x3c, 0xa1, 0x69, 0x22, 0x69, 0x08, 0x3b,
+ 0x3c, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x41, 0x1a,
+ 0x00, 0x2a, 0x03, 0xd0, 0x1a, 0x68, 0x51, 0x18,
+ 0x19, 0x60, 0x02, 0xe0, 0x5a, 0x68, 0x51, 0x18,
+ 0x59, 0x60, 0xa0, 0x61, 0x26, 0x61, 0x05, 0xb0,
+ 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0xb0, 0x57,
+ 0x01, 0x00, 0x00, 0x10, 0x60, 0x00, 0x84, 0x73,
+ 0x01, 0x00, 0x1c, 0xb5, 0x4c, 0x23, 0x08, 0x49,
+ 0x58, 0x43, 0x3c, 0x00, 0x3c, 0x0e, 0x01, 0x00,
+ 0x44, 0x18, 0x20, 0x1c, 0x40, 0x30, 0x41, 0x78,
+ 0x62, 0x68, 0x00, 0x91, 0x01, 0x92, 0x3f, 0x21,
+ 0x0b, 0x5d, 0x61, 0x8f, 0x00, 0x78, 0x62, 0x6c,
+ 0xfa, 0xf7, 0x28, 0xf8, 0xa0, 0x85, 0x1c, 0xbd,
+ 0x58, 0xe3, 0x01, 0x00, 0xb0, 0xb5, 0x16, 0x4d,
+ 0xa9, 0x69, 0x00, 0x29, 0x25, 0xd0, 0x2c, 0x1c,
+ 0x30, 0x34, 0x20, 0x7a, 0x00, 0x28, 0x20, 0xd0,
+ 0x00, 0x23, 0x81, 0x22, 0x3c, 0x00, 0x78, 0x0e,
+ 0x01, 0x00, 0x18, 0x20, 0x02, 0xf0, 0x89, 0xfc,
+ 0x20, 0x7a, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e,
+ 0x20, 0x72, 0x12, 0xd1, 0x0c, 0x48, 0x28, 0x21,
+ 0x2c, 0x38, 0x09, 0x5c, 0x21, 0x72, 0x29, 0x7a,
+ 0x00, 0x29, 0x01, 0xd1, 0x00, 0x6a, 0x00, 0xe0,
+ 0x40, 0x6a, 0xa9, 0x69, 0x80, 0x02, 0x81, 0x42,
+ 0x03, 0xd2, 0x49, 0x00, 0x81, 0x42, 0x01, 0xd2,
+ 0xa9, 0x61, 0xb0, 0xbd, 0xa8, 0x61, 0x3c, 0x00,
+ 0xb4, 0x0e, 0x01, 0x00, 0xb0, 0xbd, 0x01, 0xf0,
+ 0x1d, 0xf9, 0xb0, 0xbd, 0xf4, 0x6e, 0x01, 0x00,
+ 0x7f, 0xb5, 0x05, 0x1c, 0x04, 0x20, 0x6b, 0x46,
+ 0x1b, 0x18, 0x02, 0x90, 0x00, 0x26, 0x28, 0x18,
+ 0x6a, 0x46, 0x02, 0xa9, 0xfc, 0xf7, 0x8a, 0xfb,
+ 0x00, 0x28, 0x06, 0xd1, 0x00, 0xab, 0x18, 0x79,
+ 0x04, 0x28, 0x08, 0xd0, 0x18, 0x79, 0x03, 0x28,
+ 0x05, 0xd0, 0x00, 0xab, 0x18, 0x79, 0x10, 0x21,
+ 0x3c, 0x00, 0xf0, 0x0e, 0x01, 0x00, 0x08, 0x43,
+ 0x04, 0xb0, 0x70, 0xbd, 0x03, 0xa9, 0xe8, 0x68,
+ 0xf6, 0xf7, 0xd3, 0xff, 0x00, 0x28, 0x05, 0xd0,
+ 0x03, 0x98, 0x20, 0x21, 0x08, 0x43, 0x00, 0x06,
+ 0x00, 0x0e, 0xf1, 0xe7, 0x03, 0xa9, 0x00, 0x20,
+ 0xf6, 0xf7, 0xc7, 0xff, 0x04, 0x1c, 0x01, 0xd1,
+ 0x02, 0x20, 0xe9, 0xe7, 0xe8, 0x68, 0x00, 0xab,
+ 0x20, 0x60, 0x00, 0x98, 0x60, 0x60, 0x18, 0x79,
+ 0xa0, 0x76, 0x3c, 0x00, 0x2c, 0x0f, 0x01, 0x00,
+ 0xa8, 0x8c, 0x60, 0x76, 0xe8, 0x69, 0x20, 0x61,
+ 0x68, 0x8c, 0xa0, 0x82, 0x28, 0x8c, 0x20, 0x76,
+ 0x69, 0x69, 0x09, 0x48, 0x81, 0x42, 0x00, 0xd9,
+ 0x08, 0x1c, 0xa0, 0x60, 0x20, 0x1c, 0x02, 0xf0,
+ 0xa1, 0xfd, 0xa1, 0x68, 0x00, 0x29, 0x04, 0xd0,
+ 0x03, 0x9a, 0xa1, 0x32, 0x08, 0x20, 0x02, 0xf0,
+ 0x37, 0xfb, 0x30, 0x1c, 0xc7, 0xe7, 0x00, 0x00,
+ 0xa0, 0x86, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x0f,
+ 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, 0x40, 0x78,
+ 0x01, 0x24, 0x06, 0x28, 0x50, 0xd3, 0xc1, 0x1e,
+ 0x03, 0x20, 0xef, 0xf7, 0x5e, 0xfb, 0x00, 0x90,
+ 0x0e, 0x28, 0x49, 0xd8, 0x00, 0x20, 0x0a, 0xe0,
+ 0x41, 0x00, 0x09, 0x18, 0x89, 0x19, 0x4a, 0x79,
+ 0x89, 0x79, 0x51, 0x18, 0x01, 0x39, 0x0e, 0x29,
+ 0x00, 0xd9, 0x00, 0x24, 0x01, 0x30, 0x00, 0x99,
+ 0x88, 0x42, 0xf1, 0xdb, 0x00, 0x2c, 0x3c, 0x00,
+ 0xa4, 0x0f, 0x01, 0x00, 0x37, 0xd0, 0x03, 0x22,
+ 0xb1, 0x1c, 0x1b, 0x48, 0xef, 0xf7, 0xa4, 0xfa,
+ 0x1a, 0x4c, 0x1c, 0x21, 0x20, 0x1c, 0xef, 0xf7,
+ 0x4d, 0xfa, 0x00, 0x25, 0x28, 0xe0, 0x69, 0x00,
+ 0x49, 0x19, 0x02, 0x91, 0x8a, 0x19, 0x53, 0x79,
+ 0x15, 0x48, 0x43, 0x54, 0x93, 0x79, 0x0f, 0x18,
+ 0x7b, 0x70, 0xd3, 0x79, 0xbb, 0x70, 0x07, 0x23,
+ 0xd2, 0x56, 0x01, 0x92, 0x44, 0x5c, 0x0f, 0xe0,
+ 0x3c, 0x00, 0xe0, 0x0f, 0x01, 0x00, 0x20, 0x1c,
+ 0xfe, 0xf7, 0x7b, 0xff, 0x00, 0x28, 0x07, 0xd0,
+ 0x0c, 0x4a, 0x60, 0x00, 0x80, 0x18, 0x01, 0x21,
+ 0x10, 0x38, 0x81, 0x73, 0x01, 0x99, 0xc1, 0x73,
+ 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x07, 0x48,
+ 0x02, 0x99, 0x40, 0x5c, 0x79, 0x78, 0x40, 0x18,
+ 0xa0, 0x42, 0xe8, 0xd8, 0x01, 0x35, 0x00, 0x98,
+ 0x85, 0x42, 0xd3, 0xdb, 0xfe, 0xbd, 0xe8, 0x62,
+ 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x10, 0x01, 0x00,
+ 0xe6, 0x78, 0x01, 0x00, 0xeb, 0x62, 0x01, 0x00,
+ 0x01, 0x68, 0x0f, 0x29, 0x01, 0xdd, 0x0f, 0x21,
+ 0x01, 0x60, 0x01, 0x68, 0x00, 0x29, 0x01, 0xda,
+ 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0xf8, 0xb5, 0x04, 0x1c, 0x1e, 0x48, 0x22, 0x1d,
+ 0x05, 0x68, 0x00, 0x92, 0x16, 0x1c, 0x23, 0x1c,
+ 0x0f, 0x1c, 0xcc, 0x33, 0x2a, 0x1c, 0x20, 0x1c,
+ 0x70, 0x30, 0xa1, 0x6d, 0x3c, 0x00, 0x58, 0x10,
+ 0x01, 0x00, 0x00, 0xf0, 0x3e, 0xf9, 0x00, 0x96,
+ 0xa1, 0x6d, 0x27, 0x20, 0x01, 0x40, 0x23, 0x1c,
+ 0xe4, 0x33, 0x20, 0x1c, 0x2a, 0x1c, 0x5c, 0x30,
+ 0x00, 0xf0, 0x33, 0xf9, 0x13, 0x48, 0x00, 0x78,
+ 0x0e, 0x28, 0x01, 0xd2, 0x01, 0x25, 0x85, 0x40,
+ 0x11, 0x48, 0xa1, 0x69, 0x00, 0x78, 0x29, 0x40,
+ 0x00, 0x07, 0x0b, 0xd4, 0x48, 0x07, 0x03, 0xd5,
+ 0x08, 0x07, 0x01, 0xd5, 0x04, 0x20, 0x3c, 0x00,
+ 0x94, 0x10, 0x01, 0x00, 0x81, 0x43, 0x88, 0x06,
+ 0x03, 0xd5, 0x48, 0x06, 0x01, 0xd5, 0x20, 0x20,
+ 0x81, 0x43, 0x23, 0x1c, 0xb4, 0x33, 0x2a, 0x1c,
+ 0x20, 0x1c, 0x30, 0x30, 0x00, 0x96, 0x00, 0xf0,
+ 0x13, 0xf9, 0x39, 0x1c, 0x20, 0x1c, 0xf0, 0xf7,
+ 0x47, 0xfc, 0xf8, 0xbd, 0x2c, 0x7d, 0x01, 0x00,
+ 0x10, 0x67, 0x01, 0x00, 0x1d, 0x75, 0x01, 0x00,
+ 0xb0, 0xb5, 0xf2, 0xf7, 0x27, 0xfc, 0xfe, 0xf7,
+ 0x3c, 0x00, 0xd0, 0x10, 0x01, 0x00, 0x09, 0xf9,
+ 0x0f, 0x48, 0x00, 0x25, 0x45, 0x70, 0x0e, 0x48,
+ 0x0d, 0x4c, 0x00, 0x88, 0x5b, 0x34, 0xa0, 0x82,
+ 0xf9, 0xf7, 0x23, 0xfd, 0x20, 0x61, 0xa0, 0x8a,
+ 0x00, 0x28, 0x04, 0xd0, 0x01, 0x21, 0x89, 0x05,
+ 0xef, 0xf7, 0x0d, 0xfb, 0xe1, 0x82, 0x05, 0x48,
+ 0x01, 0x38, 0x45, 0x60, 0x01, 0xf0, 0x55, 0xfe,
+ 0x02, 0x1c, 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20,
+ 0xf4, 0xf7, 0x3c, 0x00, 0x0c, 0x11, 0x01, 0x00,
+ 0x49, 0xfd, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c,
+ 0x5a, 0x89, 0x04, 0x1c, 0x04, 0x98, 0x92, 0x07,
+ 0x92, 0x0f, 0x00, 0x25, 0x00, 0x29, 0xa2, 0x71,
+ 0x09, 0xd0, 0x05, 0x21, 0xf9, 0xf7, 0x24, 0xfb,
+ 0x00, 0x28, 0x01, 0xd0, 0xc0, 0x78, 0x00, 0xe0,
+ 0x01, 0x20, 0xe0, 0x71, 0x00, 0xe0, 0xe5, 0x71,
+ 0xe5, 0x60, 0xa6, 0x60, 0x3c, 0x00, 0x48, 0x11,
+ 0x01, 0x00, 0x70, 0xbd, 0x00, 0x00, 0xfe, 0xb5,
+ 0x05, 0x1c, 0x0e, 0x22, 0x9c, 0x30, 0x16, 0x49,
+ 0xef, 0xf7, 0xcf, 0xf9, 0x29, 0x1c, 0x28, 0x1c,
+ 0x80, 0x30, 0x88, 0x31, 0x00, 0x24, 0x2f, 0x1c,
+ 0x60, 0x37, 0x02, 0x91, 0x01, 0x90, 0x20, 0x06,
+ 0x00, 0x0e, 0x06, 0x1c, 0xf9, 0xf7, 0x0d, 0xfe,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x98, 0x42, 0x68,
+ 0x02, 0x99, 0x01, 0xe0, 0xea, 0x6d, 0x3c, 0x00,
+ 0x84, 0x11, 0x01, 0x00, 0x39, 0x1c, 0x00, 0x2a,
+ 0x0d, 0xd0, 0x00, 0x20, 0x03, 0xe0, 0x0b, 0x5c,
+ 0xb3, 0x42, 0x02, 0xd8, 0x01, 0x30, 0x90, 0x42,
+ 0xf9, 0xdb, 0x08, 0x18, 0x10, 0x38, 0xc0, 0x7b,
+ 0x29, 0x19, 0x90, 0x31, 0x08, 0x73, 0x01, 0x34,
+ 0x0e, 0x2c, 0xdf, 0xd3, 0xfe, 0xbd, 0x00, 0x00,
+ 0xcc, 0x47, 0x01, 0x00, 0xff, 0xb5, 0x81, 0xb0,
+ 0x14, 0x1c, 0x10, 0x1c, 0x06, 0x22, 0x0d, 0x1c,
+ 0x3c, 0x00, 0xc0, 0x11, 0x01, 0x00, 0x19, 0x1c,
+ 0x0b, 0x9e, 0x0a, 0x9f, 0xef, 0xf7, 0x97, 0xf9,
+ 0x06, 0x22, 0x39, 0x1c, 0xa0, 0x18, 0xef, 0xf7,
+ 0x92, 0xf9, 0xe6, 0x60, 0x2c, 0x60, 0x10, 0x20,
+ 0x28, 0x81, 0x6e, 0x60, 0x01, 0x98, 0xe8, 0x60,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x00, 0x20, 0x20, 0x61, 0x58, 0x20,
+ 0x00, 0x5d, 0x0e, 0x1c, 0x15, 0x1c, 0xc0, 0x07,
+ 0xc0, 0x17, 0x3c, 0x00, 0xfc, 0x11, 0x01, 0x00,
+ 0x01, 0x30, 0xe0, 0x61, 0x21, 0x6b, 0x00, 0x29,
+ 0x36, 0xd1, 0x1e, 0x49, 0x09, 0x68, 0x29, 0x43,
+ 0x32, 0xd0, 0xa1, 0x68, 0x89, 0x8a, 0x00, 0x29,
+ 0x2e, 0xd0, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x1c,
+ 0x58, 0x30, 0x00, 0xf0, 0xf3, 0xfd, 0x00, 0x28,
+ 0x1b, 0xd0, 0x81, 0x6a, 0x02, 0x6a, 0x40, 0x6a,
+ 0x09, 0x78, 0x00, 0x78, 0x06, 0xe0, 0x14, 0x4a,
+ 0x3c, 0x23, 0x11, 0x78, 0x3c, 0x00, 0x38, 0x12,
+ 0x01, 0x00, 0x50, 0x78, 0x43, 0x43, 0x9a, 0x18,
+ 0x04, 0x32, 0x00, 0x2d, 0x03, 0xd1, 0x02, 0x29,
+ 0x01, 0xd0, 0x03, 0x29, 0x02, 0xd1, 0x6d, 0x21,
+ 0x22, 0x61, 0x08, 0x55, 0x20, 0x69, 0x00, 0x28,
+ 0x0d, 0xd0, 0x81, 0x88, 0x00, 0x29, 0x01, 0xd1,
+ 0x01, 0x20, 0x70, 0xbd, 0x80, 0x79, 0x02, 0x28,
+ 0x05, 0xd1, 0x22, 0x1c, 0x07, 0x49, 0x07, 0x48,
+ 0xf8, 0xf7, 0x4b, 0xff, 0x02, 0xe0, 0x3c, 0x00,
+ 0x74, 0x12, 0x01, 0x00, 0x20, 0x1c, 0xef, 0xf7,
+ 0xb5, 0xf8, 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00,
+ 0x28, 0x61, 0x01, 0x00, 0x68, 0x61, 0x01, 0x00,
+ 0xa1, 0xda, 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7,
+ 0x39, 0xfe, 0xc4, 0x00, 0xf9, 0xf7, 0x54, 0xfe,
+ 0x24, 0x18, 0xf9, 0xf7, 0x47, 0xfe, 0x08, 0x49,
+ 0x20, 0x18, 0x09, 0x88, 0x08, 0x4c, 0x40, 0x18,
+ 0x3c, 0x00, 0xb0, 0x12, 0x01, 0x00, 0x06, 0x49,
+ 0x09, 0x88, 0x40, 0x18, 0x60, 0x61, 0xf9, 0xf7,
+ 0x46, 0xfe, 0x05, 0x49, 0x09, 0x88, 0x40, 0x18,
+ 0x40, 0x00, 0xa0, 0x61, 0x10, 0xbd, 0x02, 0x61,
+ 0x01, 0x00, 0x04, 0x61, 0x01, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x11, 0x40,
+ 0x08, 0x1c, 0x10, 0xb5, 0x1c, 0x1c, 0x19, 0x1c,
+ 0x08, 0x31, 0x18, 0x60, 0xf1, 0xf7, 0x31, 0xfe,
+ 0x60, 0x60, 0x3c, 0x00, 0xec, 0x12, 0x01, 0x00,
+ 0x10, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x22, 0x48, 0x0f, 0x1c, 0x41, 0x68, 0x91, 0x42,
+ 0x03, 0xd0, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60,
+ 0x42, 0x60, 0xc4, 0x68, 0x15, 0xe0, 0x28, 0x20,
+ 0x1d, 0x49, 0x60, 0x43, 0x40, 0x18, 0x05, 0x1c,
+ 0x06, 0x22, 0x31, 0x1c, 0xef, 0xf7, 0x70, 0xf8,
+ 0x00, 0x28, 0x07, 0xd1, 0xa8, 0x1d, 0x39, 0x1c,
+ 0xf9, 0xf7, 0x10, 0xfd, 0x3c, 0x00, 0x28, 0x13,
+ 0x01, 0x00, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20,
+ 0xf8, 0xbd, 0x01, 0x34, 0x24, 0x07, 0x24, 0x0f,
+ 0x12, 0x48, 0x80, 0x68, 0x84, 0x42, 0xe5, 0xd1,
+ 0x10, 0x4c, 0x28, 0x23, 0xa0, 0x68, 0x0f, 0x4d,
+ 0x58, 0x43, 0x40, 0x19, 0x06, 0x22, 0x31, 0x1c,
+ 0xef, 0xf7, 0xd3, 0xf8, 0xa0, 0x68, 0x28, 0x23,
+ 0x58, 0x43, 0x40, 0x19, 0x06, 0x30, 0x22, 0x22,
+ 0x39, 0x1c, 0xef, 0xf7, 0xca, 0xf8, 0x3c, 0x00,
+ 0x64, 0x13, 0x01, 0x00, 0xa0, 0x68, 0x01, 0x30,
+ 0x00, 0x07, 0x00, 0x0f, 0xa0, 0x60, 0xe1, 0x68,
+ 0x81, 0x42, 0x03, 0xd1, 0x01, 0x31, 0x08, 0x07,
+ 0x00, 0x0f, 0xe0, 0x60, 0x00, 0x20, 0xd6, 0xe7,
+ 0xec, 0x65, 0x01, 0x00, 0xa0, 0xf4, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0,
+ 0xe5, 0xff, 0x05, 0x4c, 0xa0, 0x68, 0x00, 0x28,
+ 0x04, 0xd1, 0x01, 0xf0, 0x07, 0xfd, 0x61, 0x68,
+ 0x3c, 0x00, 0xa0, 0x13, 0x01, 0x00, 0x40, 0x1a,
+ 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, 0xd0, 0x60,
+ 0x01, 0x00, 0x02, 0x68, 0x0a, 0x60, 0x01, 0x60,
+ 0x70, 0x47, 0x01, 0x1c, 0x00, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0x02, 0x68, 0x0a, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0xfe, 0xb5, 0x14, 0x1c, 0x1d, 0x1c,
+ 0x00, 0x22, 0xd2, 0x43, 0x01, 0xab, 0xf3, 0xf7,
+ 0x82, 0xff, 0x01, 0x98, 0x00, 0x26, 0x28, 0x40,
+ 0x01, 0x90, 0x3c, 0x00, 0xdc, 0x13, 0x01, 0x00,
+ 0x00, 0x25, 0x00, 0x27, 0x20, 0x60, 0x1e, 0xe0,
+ 0x01, 0x21, 0xb9, 0x40, 0x0a, 0x1c, 0x02, 0x40,
+ 0x18, 0xd0, 0x88, 0x43, 0x01, 0x90, 0x39, 0x06,
+ 0x09, 0x0e, 0x70, 0x19, 0x00, 0x19, 0x02, 0x91,
+ 0x01, 0x77, 0x08, 0x1c, 0xf9, 0xf7, 0xc6, 0xfc,
+ 0x00, 0x28, 0x06, 0xd0, 0x30, 0x1c, 0x00, 0x19,
+ 0x01, 0x36, 0x02, 0x99, 0x30, 0x30, 0x01, 0x70,
+ 0x04, 0xe0, 0x28, 0x1c, 0x3c, 0x00, 0x18, 0x14,
+ 0x01, 0x00, 0x01, 0x35, 0x02, 0x99, 0x00, 0x19,
+ 0x01, 0x72, 0x01, 0x37, 0x01, 0x98, 0x00, 0x28,
+ 0xdd, 0xd1, 0x70, 0x19, 0xa0, 0x61, 0x65, 0x60,
+ 0xe6, 0x62, 0xfe, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x14, 0x4d, 0x04, 0x1c, 0x28, 0x7a, 0x01, 0x28,
+ 0x02, 0xd1, 0x04, 0x20, 0xf6, 0xf7, 0xad, 0xf9,
+ 0x21, 0x1c, 0xa8, 0x6a, 0xf5, 0xf7, 0x21, 0xfc,
+ 0x00, 0x28, 0x03, 0xd1, 0x04, 0x20, 0x3c, 0x00,
+ 0x54, 0x14, 0x01, 0x00, 0xf6, 0xf7, 0xa4, 0xf9,
+ 0xb0, 0xbd, 0x02, 0x20, 0x28, 0x70, 0x28, 0x8c,
+ 0x00, 0x28, 0x00, 0xd0, 0x60, 0x81, 0x68, 0x8c,
+ 0x00, 0x28, 0x00, 0xd0, 0xa0, 0x81, 0xa8, 0x8c,
+ 0x00, 0x28, 0x00, 0xd0, 0xe0, 0x81, 0xe8, 0x69,
+ 0x01, 0x23, 0x02, 0x04, 0x12, 0x0c, 0x20, 0x1c,
+ 0x02, 0x49, 0xfc, 0xf7, 0x19, 0xff, 0xb0, 0xbd,
+ 0xf4, 0x6e, 0x01, 0x00, 0xa1, 0x77, 0x00, 0x00,
+ 0x3c, 0x00, 0x90, 0x14, 0x01, 0x00, 0xf8, 0xb5,
+ 0x19, 0x4e, 0x05, 0x1c, 0xb0, 0x69, 0x00, 0x28,
+ 0x00, 0xd1, 0x30, 0x68, 0xff, 0xf7, 0x3b, 0xfc,
+ 0x15, 0x4f, 0x04, 0x1c, 0x50, 0x37, 0x00, 0x28,
+ 0x0b, 0xd0, 0x60, 0x68, 0x29, 0x1c, 0x78, 0x60,
+ 0x01, 0x20, 0x38, 0x63, 0x20, 0x1c, 0xf5, 0xf7,
+ 0xea, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x00, 0x20,
+ 0xf8, 0xbd, 0x00, 0x23, 0xfb, 0x62, 0xfa, 0xe7,
+ 0x00, 0x23, 0x3c, 0x00, 0xcc, 0x14, 0x01, 0x00,
+ 0x23, 0x77, 0xf8, 0x6a, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0xf8, 0x62, 0x38, 0x7a, 0x01, 0x28,
+ 0x07, 0xd0, 0xf8, 0x69, 0x06, 0x49, 0x02, 0x04,
+ 0x12, 0x0c, 0x28, 0x1c, 0xfc, 0xf7, 0xe6, 0xfe,
+ 0x01, 0xe0, 0xfb, 0x62, 0xb3, 0x61, 0x01, 0x20,
+ 0xe5, 0xe7, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00,
+ 0xdd, 0x02, 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x16, 0x1c, 0x3c, 0x00, 0x08, 0x15,
+ 0x01, 0x00, 0x04, 0x2c, 0x1b, 0xd2, 0x10, 0x48,
+ 0x83, 0x42, 0x07, 0xd2, 0x58, 0x00, 0x0f, 0x49,
+ 0xef, 0xf7, 0xfb, 0xf8, 0xff, 0x30, 0x00, 0x0a,
+ 0x01, 0x38, 0x00, 0xe0, 0x00, 0x20, 0x1f, 0x35,
+ 0xea, 0x06, 0x61, 0x07, 0x09, 0x0e, 0xd2, 0x0e,
+ 0x11, 0x43, 0x72, 0x07, 0x52, 0x0d, 0x11, 0x43,
+ 0x00, 0x06, 0x00, 0x0a, 0x08, 0x43, 0x06, 0x4a,
+ 0xa1, 0x00, 0x50, 0x50, 0x70, 0xbd, 0x3c, 0x00,
+ 0x44, 0x15, 0x01, 0x00, 0x01, 0x21, 0x8d, 0x20,
+ 0xef, 0xf7, 0xac, 0xfe, 0x70, 0xbd, 0x00, 0x00,
+ 0x40, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x38, 0x01,
+ 0xe8, 0x60, 0x01, 0x00, 0x09, 0x4a, 0x80, 0x00,
+ 0x10, 0x58, 0x40, 0x09, 0x40, 0x01, 0x07, 0x22,
+ 0x02, 0x43, 0x07, 0x48, 0x03, 0x68, 0x00, 0x2b,
+ 0xfc, 0xdb, 0x42, 0x60, 0x09, 0x06, 0x01, 0x60,
+ 0x01, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x08, 0x20,
+ 0x3c, 0x00, 0x80, 0x15, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20,
+ 0x07, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c,
+ 0x07, 0x49, 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28,
+ 0x03, 0xd1, 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7,
+ 0x80, 0xfe, 0x29, 0x1c, 0x20, 0x1c, 0xf6, 0xf7,
+ 0xa8, 0xfa, 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c,
+ 0x07, 0x49, 0x3c, 0x00, 0xbc, 0x15, 0x01, 0x00,
+ 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, 0x03, 0xd1,
+ 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, 0x6c, 0xfe,
+ 0x29, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0xc4, 0xff,
+ 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, 0xf7, 0xf7,
+ 0x17, 0xf9, 0x04, 0x1c, 0x28, 0x68, 0x40, 0x4f,
+ 0x81, 0x78, 0x00, 0x29, 0x3b, 0xd1, 0xc1, 0x78,
+ 0x00, 0x29, 0x58, 0xd1, 0x3c, 0x00, 0xf8, 0x15,
+ 0x01, 0x00, 0xf8, 0xf7, 0xf8, 0xf9, 0x22, 0x8e,
+ 0x61, 0x8e, 0x8a, 0x42, 0x04, 0xd0, 0xa1, 0x6a,
+ 0x09, 0x18, 0xe0, 0x69, 0x81, 0x42, 0x10, 0xd9,
+ 0x38, 0x49, 0x32, 0x1c, 0x48, 0x6b, 0x01, 0x30,
+ 0x48, 0x63, 0x20, 0x6a, 0x01, 0x30, 0x20, 0x62,
+ 0x38, 0x68, 0x01, 0x30, 0x38, 0x60, 0xe0, 0x68,
+ 0x63, 0x69, 0x29, 0x1c, 0xee, 0xf7, 0xd8, 0xfe,
+ 0xf8, 0xbd, 0x01, 0x32, 0x12, 0x04, 0x3c, 0x00,
+ 0x34, 0x16, 0x01, 0x00, 0x12, 0x0c, 0x22, 0x86,
+ 0xa1, 0x62, 0xb8, 0x68, 0x00, 0x28, 0x34, 0xd1,
+ 0x2c, 0x48, 0x0c, 0x23, 0x00, 0x68, 0x1b, 0x1a,
+ 0x9a, 0x42, 0x07, 0xd2, 0x19, 0x23, 0x9b, 0x01,
+ 0xaf, 0x22, 0x92, 0x01, 0x58, 0x43, 0x10, 0x1a,
+ 0x81, 0x42, 0x26, 0xd3, 0x01, 0x20, 0xb8, 0x60,
+ 0x01, 0x21, 0x0c, 0x20, 0x00, 0xf0, 0x7a, 0xfe,
+ 0x1f, 0xe0, 0x01, 0x29, 0x1d, 0xd1, 0xc0, 0x78,
+ 0x3c, 0x00, 0x70, 0x16, 0x01, 0x00, 0x17, 0x28,
+ 0x1a, 0xd1, 0xa0, 0x8e, 0xe1, 0x8e, 0x88, 0x42,
+ 0x14, 0xd3, 0xe9, 0x68, 0x09, 0x68, 0x09, 0x79,
+ 0x09, 0x06, 0x0f, 0xd5, 0x60, 0x6a, 0x32, 0x1c,
+ 0x01, 0x30, 0x60, 0x62, 0xe0, 0x68, 0x63, 0x69,
+ 0x29, 0x1c, 0xee, 0xf7, 0xa3, 0xfe, 0xe8, 0x68,
+ 0x01, 0x68, 0x08, 0x31, 0x0b, 0x20, 0x00, 0xf0,
+ 0x5c, 0xfe, 0xc3, 0xe7, 0x01, 0x30, 0xa0, 0x86,
+ 0xa0, 0x8d, 0x3c, 0x00, 0xac, 0x16, 0x01, 0x00,
+ 0xe1, 0x8d, 0x88, 0x42, 0x04, 0xd1, 0x03, 0x21,
+ 0x02, 0x20, 0xef, 0xf7, 0xf5, 0xfd, 0xb8, 0xe7,
+ 0x60, 0x68, 0x45, 0x60, 0x86, 0x60, 0x00, 0x68,
+ 0x60, 0x60, 0xf8, 0x68, 0x01, 0x30, 0xf8, 0x60,
+ 0xa0, 0x8d, 0x41, 0x1c, 0xa1, 0x85, 0x00, 0x28,
+ 0xab, 0xd1, 0x08, 0x48, 0xb9, 0x69, 0xfd, 0xf7,
+ 0x61, 0xfe, 0x22, 0x1c, 0x02, 0x21, 0xf1, 0x20,
+ 0x02, 0xf0, 0x64, 0xf8, 0x3c, 0x00, 0xe8, 0x16,
+ 0x01, 0x00, 0xa1, 0xe7, 0x00, 0x00, 0xfc, 0x5a,
+ 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x18, 0x57,
+ 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x1c, 0x02, 0x21, 0xf0, 0x20, 0x02, 0xf0,
+ 0x54, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28,
+ 0x03, 0xd1, 0x02, 0x48, 0x41, 0x78, 0xc9, 0x07,
+ 0xfc, 0xd5, 0x70, 0x47, 0x00, 0x00, 0x04, 0x00,
+ 0x07, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x3c, 0x00,
+ 0x24, 0x17, 0x01, 0x00, 0x01, 0xd1, 0xf1, 0xf7,
+ 0x71, 0xfe, 0x80, 0xbd, 0x80, 0xb5, 0xf4, 0xf7,
+ 0xe5, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0xf6, 0xf7,
+ 0xeb, 0xf8, 0x80, 0xbd, 0x01, 0x49, 0x00, 0x20,
+ 0x08, 0x74, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0xc0, 0x07, 0x03, 0xd5, 0x02, 0x49,
+ 0x01, 0x20, 0x00, 0xf0, 0x1d, 0xfc, 0x80, 0xbd,
+ 0x50, 0xc3, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e,
+ 0x3c, 0x00, 0x60, 0x17, 0x01, 0x00, 0x01, 0x28,
+ 0x80, 0xb5, 0x02, 0xd1, 0xf6, 0xf7, 0xe1, 0xf9,
+ 0x80, 0xbd, 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7,
+ 0x4c, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0xf6, 0xf7, 0xd7, 0xf9, 0x80, 0xbd, 0x03, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x08, 0x74, 0xf6, 0xf7,
+ 0xfe, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x00, 0x0e,
+ 0xf1, 0xf7, 0x3c, 0x00, 0x9c, 0x17, 0x01, 0x00,
+ 0x71, 0xfe, 0x80, 0xbd, 0x10, 0xb5, 0x01, 0x28,
+ 0x08, 0xd0, 0x02, 0x28, 0x03, 0xd0, 0x03, 0x28,
+ 0x01, 0xd0, 0xef, 0xf7, 0xa7, 0xfd, 0xf6, 0xf7,
+ 0xe9, 0xf9, 0x10, 0xbd, 0x01, 0xf0, 0xf8, 0xfa,
+ 0x04, 0x1c, 0xfa, 0xf7, 0x5d, 0xfd, 0x24, 0x1a,
+ 0xfa, 0xf7, 0x3e, 0xfd, 0x08, 0x49, 0x00, 0x28,
+ 0x0b, 0xd0, 0x48, 0x6a, 0x00, 0x28, 0x08, 0xd0,
+ 0x06, 0x48, 0x84, 0x42, 0x3c, 0x00, 0xd8, 0x17,
+ 0x01, 0x00, 0x05, 0xd2, 0x01, 0x1b, 0x01, 0x22,
+ 0x07, 0x20, 0x01, 0xf0, 0xf4, 0xfe, 0xe5, 0xe7,
+ 0x00, 0x20, 0x48, 0x61, 0xe2, 0xe7, 0x78, 0x69,
+ 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x09, 0x49,
+ 0x80, 0xb5, 0x48, 0x69, 0x00, 0x28, 0x0c, 0xd0,
+ 0x08, 0x6a, 0xca, 0x69, 0x80, 0x1a, 0x00, 0x28,
+ 0x07, 0xdd, 0x00, 0x20, 0x48, 0x61, 0x01, 0x21,
+ 0x07, 0x20, 0x01, 0xf0, 0x10, 0xff, 0x3c, 0x00,
+ 0x14, 0x18, 0x01, 0x00, 0xf6, 0xf7, 0xb8, 0xf9,
+ 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x80, 0xbd,
+ 0x80, 0xb5, 0x00, 0xf0, 0x3f, 0xfc, 0x00, 0x20,
+ 0xf7, 0xf7, 0xd4, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0x37, 0xfc, 0xfd, 0xf7,
+ 0x6f, 0xfc, 0xf5, 0xf7, 0x73, 0xfd, 0x30, 0xf0,
+ 0x47, 0xfb, 0x80, 0xbd, 0x04, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0x50, 0x18, 0x01, 0x00, 0xc1, 0x6a,
+ 0x00, 0x6b, 0xf2, 0xf7, 0xde, 0xff, 0x01, 0x20,
+ 0xf7, 0xf7, 0x89, 0xf8, 0x80, 0xbd, 0xa4, 0x6c,
+ 0x01, 0x00, 0x10, 0xb5, 0xf3, 0xf7, 0x41, 0xf8,
+ 0x0d, 0x4c, 0x00, 0x28, 0x04, 0xd0, 0x01, 0x20,
+ 0xe0, 0x64, 0xf7, 0xf7, 0xb2, 0xfc, 0x10, 0xbd,
+ 0x01, 0x21, 0x01, 0x20, 0xf3, 0xf7, 0xe9, 0xf8,
+ 0xfd, 0xf7, 0x4d, 0xfc, 0x60, 0x6d, 0x00, 0x28,
+ 0x03, 0xd0, 0x3c, 0x00, 0x8c, 0x18, 0x01, 0x00,
+ 0xf3, 0xf7, 0x82, 0xf8, 0x00, 0x28, 0x01, 0xd0,
+ 0xf5, 0xf7, 0x4a, 0xfd, 0x01, 0x20, 0xf2, 0xf7,
+ 0xc1, 0xfc, 0x10, 0xbd, 0xa4, 0x6c, 0x01, 0x00,
+ 0x04, 0x48, 0x80, 0xb5, 0xc1, 0x6a, 0x00, 0x6b,
+ 0xf2, 0xf7, 0xb2, 0xff, 0x01, 0x20, 0xf7, 0xf7,
+ 0x5d, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0xf5, 0xfb, 0xf5, 0xf7,
+ 0x33, 0xfd, 0xfc, 0xf7, 0x3c, 0x00, 0xc8, 0x18,
+ 0x01, 0x00, 0x31, 0xfd, 0xf9, 0xf7, 0xcb, 0xff,
+ 0x04, 0x20, 0xf2, 0xf7, 0xa6, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x6a,
+ 0x00, 0x6b, 0xf2, 0xf7, 0x98, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0xf0, 0xdd, 0xfb, 0x00, 0x20, 0xf7, 0xf7,
+ 0x3c, 0xf8, 0x30, 0xf0, 0xee, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x3c, 0x00,
+ 0x04, 0x19, 0x01, 0x00, 0x01, 0x20, 0xff, 0xf7,
+ 0x19, 0xfa, 0x01, 0x20, 0xf2, 0xf7, 0x88, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0xc9, 0xfb, 0xfc, 0xf7, 0x07, 0xfd, 0x01, 0x21,
+ 0x01, 0x20, 0xff, 0xf7, 0x0b, 0xfa, 0x04, 0x20,
+ 0xf2, 0xf7, 0x7a, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20,
+ 0x00, 0xf0, 0x8a, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x19, 0x01, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20,
+ 0x00, 0xf0, 0x81, 0xfb, 0x80, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x03, 0x20, 0x00, 0xf0, 0x78, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a,
+ 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x6f, 0xfb,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x22, 0x3c, 0x00, 0x7c, 0x19, 0x01, 0x00,
+ 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, 0x66, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, 0x80, 0xb5,
+ 0x81, 0x68, 0x42, 0x69, 0x00, 0x69, 0x51, 0x18,
+ 0x81, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x01, 0x20,
+ 0x00, 0xf0, 0x58, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5,
+ 0x82, 0x88, 0x81, 0x68, 0x00, 0x69, 0x51, 0x18,
+ 0x81, 0x42, 0x03, 0xd9, 0x3c, 0x00, 0xb8, 0x19,
+ 0x01, 0x00, 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0,
+ 0x48, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x20, 0x7b,
+ 0x21, 0x6a, 0xf9, 0xf7, 0x9c, 0xfa, 0xa1, 0x69,
+ 0x42, 0x18, 0xa0, 0x68, 0x21, 0x69, 0x80, 0x18,
+ 0x88, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x02, 0x20,
+ 0x00, 0xf0, 0x33, 0xfb, 0x10, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x3c, 0x00,
+ 0xf4, 0x19, 0x01, 0x00, 0x00, 0x21, 0x00, 0x20,
+ 0x00, 0xf0, 0x2a, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x0e, 0x01, 0x28, 0x80, 0xb5,
+ 0x02, 0xd1, 0xf6, 0xf7, 0x8f, 0xf8, 0x80, 0xbd,
+ 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, 0xfa, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0xf6, 0xf7,
+ 0x85, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x06,
+ 0x00, 0x0e, 0xf1, 0xf7, 0x29, 0xfd, 0x80, 0xbd,
+ 0x3c, 0x00, 0x30, 0x1a, 0x01, 0x00, 0xb0, 0xb5,
+ 0x02, 0x25, 0x02, 0x28, 0x10, 0x4c, 0x0b, 0xd1,
+ 0xfb, 0xf7, 0x47, 0xfc, 0x00, 0x28, 0x01, 0xd1,
+ 0xfe, 0xf7, 0x4f, 0xff, 0x25, 0x70, 0xa1, 0x68,
+ 0x0c, 0x48, 0xfd, 0xf7, 0xa8, 0xfc, 0xb0, 0xbd,
+ 0x03, 0x28, 0x0d, 0xd1, 0x08, 0x48, 0x7d, 0x23,
+ 0x1c, 0x38, 0x00, 0x69, 0xdb, 0x00, 0x58, 0x43,
+ 0x19, 0x1c, 0x40, 0x18, 0x41, 0x08, 0x02, 0x20,
+ 0x00, 0xf0, 0x3c, 0x00, 0x6c, 0x1a, 0x01, 0x00,
+ 0x91, 0xfa, 0x25, 0x70, 0xb0, 0xbd, 0xf8, 0xf7,
+ 0x31, 0xf9, 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c,
+ 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xef, 0xf7,
+ 0x39, 0xfc, 0x02, 0x20, 0x20, 0x70, 0x00, 0xf0,
+ 0xaf, 0xfa, 0x10, 0xbd, 0x78, 0x69, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21,
+ 0x04, 0x20, 0x00, 0xf0, 0x3c, 0x00, 0xa8, 0x1a,
+ 0x01, 0x00, 0xd3, 0xfa, 0x80, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x03, 0x20, 0x00, 0xf0, 0xca, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x00, 0xf0, 0xc2, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69,
+ 0x01, 0x21, 0x01, 0x20, 0x00, 0xf0, 0xb9, 0xfa,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00,
+ 0xe4, 0x1a, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5,
+ 0x82, 0x88, 0x00, 0x2a, 0x02, 0xd0, 0x01, 0x21,
+ 0x02, 0x20, 0x02, 0xe0, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x00, 0xf0, 0xa9, 0xfa, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c,
+ 0x20, 0x7b, 0x21, 0x6a, 0xf9, 0xf7, 0xfe, 0xf9,
+ 0xa1, 0x69, 0x42, 0x18, 0x01, 0x21, 0x02, 0x20,
+ 0x00, 0xf0, 0x9a, 0xfa, 0x10, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x20, 0x1b, 0x01, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x00, 0xf0, 0x90, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x38, 0xb5, 0xfa, 0xf7, 0x41, 0xfe,
+ 0x00, 0x20, 0xf0, 0xf7, 0x80, 0xf8, 0x00, 0x90,
+ 0x00, 0xab, 0x1c, 0x88, 0x5d, 0x88, 0xf8, 0xf7,
+ 0x3c, 0xf9, 0x00, 0x2c, 0x02, 0xd0, 0xfd, 0xf7,
+ 0x9e, 0xfa, 0x02, 0xe0, 0x01, 0x20, 0xf6, 0xf7,
+ 0x0a, 0xff, 0x3c, 0x00, 0x5c, 0x1b, 0x01, 0x00,
+ 0x29, 0x1c, 0x20, 0x1c, 0xfc, 0xf7, 0xb8, 0xfc,
+ 0x00, 0x2c, 0x02, 0xd0, 0xf5, 0xf7, 0xe0, 0xfb,
+ 0x02, 0xe0, 0x00, 0x20, 0x00, 0xf0, 0xdc, 0xf9,
+ 0x03, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x02, 0x20,
+ 0x00, 0x06, 0x00, 0x0e, 0xf2, 0xf7, 0x4e, 0xfb,
+ 0x38, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5,
+ 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0,
+ 0x5d, 0xfa, 0x80, 0xbd, 0x3c, 0x00, 0x98, 0x1b,
+ 0x01, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x30, 0xf0, 0x9b, 0xf9, 0x80, 0xbd, 0x80, 0xb5,
+ 0x00, 0x22, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0,
+ 0x50, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, 0x01, 0x20,
+ 0x00, 0xf0, 0x47, 0xfa, 0x80, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x82, 0x88,
+ 0x00, 0x2a, 0x03, 0xd0, 0x01, 0x21, 0x3c, 0x00,
+ 0xd4, 0x1b, 0x01, 0x00, 0x02, 0x20, 0x00, 0xf0,
+ 0x3b, 0xfa, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00,
+ 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x7b, 0x21, 0x6a,
+ 0xf9, 0xf7, 0x90, 0xf9, 0xa1, 0x69, 0x42, 0x18,
+ 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, 0x2c, 0xfa,
+ 0x10, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0xfc, 0xf7, 0x93, 0xfb, 0x01, 0x21,
+ 0x01, 0x20, 0xff, 0xf7, 0x97, 0xf8, 0x04, 0x20,
+ 0x3c, 0x00, 0x10, 0x1c, 0x01, 0x00, 0xf2, 0xf7,
+ 0x06, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x2f, 0xf0, 0x6b, 0xfb, 0x00, 0x28, 0x0a, 0xd0,
+ 0x01, 0x20, 0xf2, 0xf7, 0xfc, 0xfa, 0xfa, 0xf7,
+ 0x2a, 0xfc, 0x00, 0x28, 0x02, 0xd1, 0x04, 0x20,
+ 0xf6, 0xf7, 0x5d, 0xf8, 0x80, 0xbd, 0x03, 0x21,
+ 0x16, 0x20, 0xef, 0xf7, 0x32, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x02, 0x48, 0x80, 0xb5, 0x00, 0x68,
+ 0xee, 0xf7, 0x3c, 0x00, 0x4c, 0x1c, 0x01, 0x00,
+ 0xc5, 0xfb, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21,
+ 0x01, 0x20, 0x00, 0xf0, 0xf7, 0xf9, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x30, 0xf0,
+ 0x35, 0xf9, 0x80, 0xbd, 0xb0, 0xb5, 0x18, 0x4c,
+ 0xaa, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x19, 0xd1,
+ 0x01, 0x25, 0xe5, 0x62, 0x25, 0x63, 0x01, 0xf0,
+ 0x93, 0xf8, 0xa0, 0x66, 0x3c, 0x00, 0x88, 0x1c,
+ 0x01, 0x00, 0x01, 0xf0, 0xfc, 0xfd, 0xf2, 0xf7,
+ 0x2e, 0xfe, 0x00, 0x28, 0x0e, 0xd0, 0x02, 0x20,
+ 0xf2, 0xf7, 0xc3, 0xfa, 0xa5, 0x60, 0x01, 0xf0,
+ 0x86, 0xf8, 0x64, 0x30, 0x60, 0x60, 0xfa, 0xf7,
+ 0x8a, 0xfd, 0x01, 0x21, 0x01, 0x20, 0xff, 0xf7,
+ 0x46, 0xf8, 0xb0, 0xbd, 0x01, 0x20, 0xf2, 0xf7,
+ 0xb4, 0xfa, 0x00, 0x20, 0xa0, 0x60, 0x00, 0x21,
+ 0x01, 0x20, 0xff, 0xf7, 0x3c, 0xf8, 0x3c, 0x00,
+ 0xc4, 0x1c, 0x01, 0x00, 0xf2, 0xf7, 0x66, 0xfe,
+ 0x00, 0x28, 0xf1, 0xd0, 0xfa, 0xf7, 0x76, 0xfd,
+ 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0xef, 0xf7, 0xd6, 0xfe,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20,
+ 0xef, 0xf7, 0xd0, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0xac, 0x21, 0x09, 0x5c, 0x02, 0x4a, 0x09, 0x02,
+ 0x89, 0x18, 0xc0, 0x31, 0x81, 0x60, 0x70, 0x47,
+ 0x3c, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x70, 0x75,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x04, 0xd1,
+ 0x03, 0xc9, 0x09, 0x68, 0xee, 0xf7, 0x64, 0xfb,
+ 0x80, 0xbd, 0x01, 0x21, 0x14, 0x20, 0xef, 0xf7,
+ 0xc4, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28,
+ 0x02, 0xd1, 0x02, 0x48, 0x40, 0x68, 0x70, 0x47,
+ 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x58, 0x75,
+ 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, 0xf8, 0xf7,
+ 0x1c, 0xfb, 0x3c, 0x00, 0x3c, 0x1d, 0x01, 0x00,
+ 0x00, 0x28, 0x04, 0xd0, 0x40, 0x30, 0x80, 0x7a,
+ 0x05, 0x28, 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c,
+ 0x10, 0xbd, 0x00, 0x00, 0x04, 0x48, 0x00, 0x21,
+ 0x40, 0x68, 0x01, 0xe0, 0x01, 0x63, 0x40, 0x68,
+ 0x00, 0x28, 0xfb, 0xd1, 0x70, 0x47, 0x00, 0x00,
+ 0x58, 0x75, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0d, 0x1c, 0xf7, 0xf7, 0xa5, 0xf8, 0x40, 0x34,
+ 0xe5, 0x72, 0xb0, 0xbd, 0x3c, 0x00, 0x78, 0x1d,
+ 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, 0xf8, 0xf7,
+ 0xfa, 0xfa, 0x04, 0x1c, 0x04, 0xd0, 0x05, 0x21,
+ 0x14, 0x20, 0xef, 0xf7, 0x8c, 0xfa, 0x28, 0xe0,
+ 0x00, 0x25, 0x14, 0x49, 0x28, 0x02, 0x46, 0x18,
+ 0x30, 0x1c, 0x44, 0x30, 0x06, 0x22, 0x12, 0x49,
+ 0xee, 0xf7, 0x2d, 0xfb, 0x00, 0x28, 0x02, 0xd1,
+ 0xac, 0x20, 0x85, 0x55, 0x34, 0x1c, 0x01, 0x35,
+ 0x03, 0x2d, 0xee, 0xd3, 0x00, 0x2c, 0x3c, 0x00,
+ 0xb4, 0x1d, 0x01, 0x00, 0x14, 0xd0, 0x39, 0x1c,
+ 0x20, 0x1c, 0xf8, 0xf7, 0x2b, 0xf8, 0x09, 0x49,
+ 0x00, 0x20, 0x20, 0x60, 0x18, 0x39, 0x48, 0x68,
+ 0x60, 0x60, 0x00, 0x28, 0x00, 0xd0, 0x04, 0x60,
+ 0x4c, 0x60, 0xca, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0x01, 0x21, 0x20, 0x1c, 0xee, 0xf7, 0xfe, 0xfa,
+ 0x20, 0x1c, 0xf8, 0xbd, 0x70, 0x75, 0x01, 0x00,
+ 0x58, 0x46, 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x1d, 0x01, 0x00, 0xc1, 0xfa,
+ 0x00, 0x28, 0x04, 0xd1, 0x06, 0x21, 0x14, 0x20,
+ 0xef, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0xf5, 0xf7,
+ 0x16, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0xf8, 0xf7, 0xb3, 0xfa, 0x80, 0xbd, 0x10, 0xb5,
+ 0x09, 0x4c, 0x21, 0x88, 0x02, 0x29, 0x03, 0xd1,
+ 0x14, 0x20, 0xef, 0xf7, 0x42, 0xfa, 0x04, 0xe0,
+ 0xa3, 0x68, 0x8a, 0x00, 0x98, 0x50, 0x48, 0x1c,
+ 0x20, 0x80, 0x3c, 0x00, 0x2c, 0x1e, 0x01, 0x00,
+ 0x20, 0x88, 0x01, 0x38, 0x00, 0x04, 0x00, 0x0c,
+ 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00,
+ 0x0b, 0x1c, 0x11, 0x1c, 0x08, 0x4a, 0x80, 0xb5,
+ 0x12, 0x88, 0x90, 0x42, 0x06, 0xd2, 0xda, 0x68,
+ 0xc0, 0x00, 0x12, 0x18, 0x14, 0x20, 0x01, 0xf0,
+ 0xbb, 0xfb, 0x80, 0xbd, 0x03, 0x21, 0x14, 0x20,
+ 0xef, 0xf7, 0x22, 0xfa, 0x80, 0xbd, 0x00, 0x00,
+ 0x58, 0x75, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x1e,
+ 0x01, 0x00, 0x08, 0x4a, 0x80, 0xb5, 0x12, 0x88,
+ 0x90, 0x42, 0x06, 0xd2, 0xc9, 0x68, 0xc0, 0x00,
+ 0x09, 0x18, 0x14, 0x20, 0x01, 0xf0, 0xdb, 0xfb,
+ 0x80, 0xbd, 0x04, 0x21, 0x14, 0x20, 0xef, 0xf7,
+ 0x0e, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x58, 0x75,
+ 0x01, 0x00, 0x01, 0x49, 0xc8, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x80, 0xb5,
+ 0x06, 0x22, 0x44, 0x30, 0xee, 0xf7, 0x3c, 0x00,
+ 0xa4, 0x1e, 0x01, 0x00, 0xab, 0xfa, 0x00, 0x28,
+ 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20,
+ 0x80, 0xbd, 0x00, 0x00, 0x1c, 0xb5, 0x14, 0x4c,
+ 0x20, 0x69, 0x00, 0x28, 0x23, 0xd0, 0x20, 0x78,
+ 0x0a, 0x28, 0x01, 0xd0, 0x00, 0xf0, 0xfc, 0xf8,
+ 0x00, 0x20, 0x60, 0x61, 0x0f, 0x48, 0x40, 0x79,
+ 0xa0, 0x70, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28,
+ 0x15, 0xd1, 0xfd, 0xf7, 0xed, 0xfe, 0x01, 0x90,
+ 0x3c, 0x00, 0xe0, 0x1e, 0x01, 0x00, 0xfd, 0xf7,
+ 0x82, 0xfe, 0x00, 0x90, 0x00, 0xab, 0x18, 0x79,
+ 0x19, 0x78, 0x40, 0x1a, 0x18, 0x71, 0x58, 0x79,
+ 0x59, 0x78, 0x40, 0x1a, 0x58, 0x71, 0x01, 0x98,
+ 0xf2, 0xf7, 0x89, 0xfe, 0x05, 0x20, 0x20, 0x70,
+ 0x00, 0xf0, 0xbf, 0xf9, 0x1c, 0xbd, 0x7c, 0x78,
+ 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x08, 0xb5,
+ 0x04, 0x4a, 0x00, 0x90, 0x14, 0x32, 0x00, 0x20,
+ 0x02, 0x4b, 0x3c, 0x00, 0x1c, 0x1f, 0x01, 0x00,
+ 0x02, 0x49, 0xf1, 0xf7, 0x7d, 0xf9, 0x08, 0xbd,
+ 0x2c, 0x75, 0x01, 0x00, 0xb1, 0xa8, 0x00, 0x00,
+ 0xb0, 0xb5, 0x00, 0x28, 0x06, 0xd0, 0x01, 0x28,
+ 0x06, 0xd0, 0x02, 0x28, 0x07, 0xd1, 0x0c, 0x4c,
+ 0x01, 0x25, 0x07, 0xe0, 0x0b, 0x4c, 0x04, 0xe0,
+ 0x0a, 0x4c, 0x2a, 0x3c, 0x01, 0xe0, 0x08, 0x4c,
+ 0xb6, 0x34, 0x00, 0x25, 0x00, 0xf0, 0x2c, 0xff,
+ 0x07, 0x49, 0x89, 0x6e, 0x3c, 0x00, 0x58, 0x1f,
+ 0x01, 0x00, 0x09, 0x19, 0x09, 0x1a, 0xa1, 0x42,
+ 0x00, 0xd9, 0x00, 0x21, 0x2a, 0x1c, 0x16, 0x20,
+ 0x01, 0xf0, 0x31, 0xfb, 0xb0, 0xbd, 0x71, 0x02,
+ 0x00, 0x00, 0x0c, 0x05, 0x00, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0x8c, 0xb5, 0x00, 0xab, 0x8e, 0x21,
+ 0x19, 0x80, 0xfc, 0xf7, 0x38, 0xf9, 0x01, 0x90,
+ 0x68, 0x46, 0xfb, 0xf7, 0xa6, 0xfa, 0x8c, 0xbd,
+ 0x00, 0x00, 0xbf, 0xb5, 0x13, 0x4a, 0x3c, 0x00,
+ 0x94, 0x1f, 0x01, 0x00, 0x01, 0x91, 0x0d, 0x1c,
+ 0x11, 0x7c, 0x88, 0x43, 0x04, 0x1c, 0x21, 0x43,
+ 0x08, 0x1c, 0x10, 0x74, 0xa0, 0x07, 0x0b, 0xd5,
+ 0x0e, 0x48, 0x00, 0x90, 0x01, 0x20, 0x02, 0x90,
+ 0x00, 0xf0, 0xfc, 0xfe, 0x0c, 0x49, 0x40, 0x18,
+ 0x03, 0x90, 0x68, 0x46, 0xf9, 0xf7, 0x6a, 0xff,
+ 0xe0, 0x07, 0x0c, 0xd5, 0xf1, 0xf7, 0x2c, 0xfd,
+ 0x00, 0x28, 0x03, 0xd0, 0x07, 0x48, 0x85, 0x42,
+ 0x3c, 0x00, 0xd0, 0x1f, 0x01, 0x00, 0x00, 0xd2,
+ 0x01, 0x90, 0x06, 0x48, 0x00, 0x90, 0x68, 0x46,
+ 0xf9, 0xf7, 0x09, 0xff, 0xbf, 0xbd, 0x78, 0x69,
+ 0x01, 0x00, 0x81, 0xea, 0x00, 0x00, 0x10, 0x27,
+ 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x75, 0xea,
+ 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x60, 0x69,
+ 0x00, 0x28, 0x0e, 0xd1, 0x01, 0x20, 0x60, 0x61,
+ 0xa1, 0x68, 0x07, 0x48, 0xfd, 0xf7, 0xcb, 0xf9,
+ 0x00, 0x21, 0x3c, 0x00, 0x0c, 0x20, 0x01, 0x00,
+ 0xa0, 0x68, 0xf9, 0xf7, 0xd1, 0xfb, 0x01, 0x22,
+ 0x07, 0x20, 0x04, 0x49, 0x01, 0xf0, 0xd8, 0xfa,
+ 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x98, 0x3a, 0x00, 0x00,
+ 0x10, 0xb5, 0x0c, 0x1c, 0x11, 0x1c, 0x06, 0x4a,
+ 0x00, 0x2b, 0x10, 0x70, 0x03, 0xd0, 0x00, 0x28,
+ 0x02, 0xd1, 0xf9, 0xf7, 0xf5, 0xfd, 0x10, 0xbd,
+ 0x20, 0x1c, 0xf9, 0xf7, 0x3c, 0x00, 0x48, 0x20,
+ 0x01, 0x00, 0x01, 0xfe, 0x10, 0xbd, 0xa0, 0x79,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4c, 0x05, 0x1c,
+ 0xe3, 0x6a, 0x20, 0x1f, 0x01, 0x33, 0xe3, 0x62,
+ 0x00, 0x88, 0x00, 0x29, 0x06, 0xd0, 0xa1, 0x68,
+ 0x89, 0x18, 0x21, 0x61, 0x05, 0x4a, 0x00, 0xf0,
+ 0xfc, 0xfe, 0x01, 0xe0, 0x00, 0xf0, 0xcf, 0xfe,
+ 0x25, 0x77, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x55, 0xe3, 0x00, 0x00, 0x3c, 0x00,
+ 0x84, 0x20, 0x01, 0x00, 0x01, 0x1c, 0x03, 0x48,
+ 0x80, 0xb5, 0x40, 0x88, 0xff, 0xf7, 0xec, 0xfe,
+ 0x80, 0xbd, 0x00, 0x00, 0x98, 0x7c, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x68, 0x18, 0x38,
+ 0x80, 0x88, 0xff, 0xf7, 0xe1, 0xfe, 0x80, 0xbd,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21,
+ 0x16, 0x20, 0x01, 0xf0, 0xbf, 0xfa, 0x01, 0x21,
+ 0x16, 0x20, 0x01, 0xf0, 0xbb, 0xfa, 0x80, 0xbd,
+ 0x3c, 0x00, 0xc0, 0x20, 0x01, 0x00, 0x10, 0xb5,
+ 0x0b, 0x4c, 0x20, 0x78, 0x0a, 0x28, 0x10, 0xd0,
+ 0x01, 0x20, 0x60, 0x61, 0x0a, 0x21, 0x13, 0x20,
+ 0x01, 0xf0, 0xaf, 0xfa, 0x0a, 0x20, 0x60, 0x70,
+ 0x20, 0x70, 0xfd, 0xf7, 0x3c, 0xfb, 0x01, 0x20,
+ 0xfd, 0xf7, 0xe9, 0xfb, 0x00, 0x20, 0xfa, 0xf7,
+ 0xc4, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0x00, 0x20,
+ 0x0b, 0x49, 0x3c, 0x00, 0xfc, 0x20, 0x01, 0x00,
+ 0x20, 0x63, 0xe0, 0x62, 0x50, 0x39, 0x88, 0x61,
+ 0x20, 0x70, 0x08, 0x48, 0x38, 0x21, 0x0c, 0x38,
+ 0x00, 0x7a, 0x08, 0x55, 0x81, 0x21, 0x18, 0x20,
+ 0x01, 0xf0, 0x8e, 0xfa, 0x20, 0x69, 0x01, 0x28,
+ 0x02, 0xd1, 0x00, 0x20, 0xf5, 0xf7, 0x3e, 0xfb,
+ 0x10, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x1c, 0x4c, 0x00, 0x25, 0x2c, 0x22,
+ 0x01, 0x1d, 0x20, 0x1c, 0x3c, 0x00, 0x38, 0x21,
+ 0x01, 0x00, 0x9a, 0xb0, 0xee, 0xf7, 0x39, 0xfa,
+ 0x18, 0x49, 0x2c, 0x31, 0x08, 0x1c, 0x00, 0x7a,
+ 0x8a, 0x69, 0x00, 0x2a, 0x13, 0xd1, 0x02, 0x28,
+ 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x20, 0xd0,
+ 0x04, 0xe0, 0x00, 0x28, 0x1d, 0xd1, 0x60, 0x68,
+ 0x00, 0x28, 0x1a, 0xd0, 0x80, 0x02, 0x88, 0x61,
+ 0x0e, 0x48, 0x69, 0x46, 0x24, 0x38, 0x00, 0x68,
+ 0xef, 0xf7, 0xcb, 0xfb, 0x11, 0xe0, 0x3c, 0x00,
+ 0x74, 0x21, 0x01, 0x00, 0x00, 0x22, 0x02, 0x28,
+ 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x09, 0xd1,
+ 0x04, 0xe0, 0x00, 0x28, 0x08, 0xd1, 0x60, 0x68,
+ 0x00, 0x28, 0x03, 0xd1, 0x8a, 0x61, 0xff, 0xf7,
+ 0xb1, 0xff, 0x01, 0xe0, 0x80, 0x02, 0x88, 0x61,
+ 0x28, 0x1c, 0x1a, 0xb0, 0xb0, 0xbd, 0x00, 0x00,
+ 0xc8, 0x6e, 0x01, 0x00, 0xf8, 0xb5, 0x0c, 0x49,
+ 0x02, 0x20, 0x48, 0x60, 0x0b, 0x49, 0x00, 0x05,
+ 0x3c, 0x00, 0xb0, 0x21, 0x01, 0x00, 0x08, 0x60,
+ 0x0b, 0x4f, 0xb8, 0x68, 0xf9, 0x68, 0x7c, 0x68,
+ 0x45, 0x1a, 0x2e, 0x1c, 0x04, 0xe0, 0xa0, 0x68,
+ 0x61, 0x68, 0xee, 0xf7, 0x09, 0xf9, 0x24, 0x68,
+ 0x01, 0x3d, 0xf8, 0xd2, 0x7c, 0x60, 0xf8, 0x68,
+ 0x80, 0x19, 0xf8, 0x60, 0xf8, 0xbd, 0x40, 0x20,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x44, 0xe3,
+ 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x04, 0x1c,
+ 0x30, 0x69, 0x3c, 0x00, 0xec, 0x21, 0x01, 0x00,
+ 0x01, 0x21, 0xf9, 0xf7, 0x99, 0xfa, 0x1d, 0x49,
+ 0x60, 0x00, 0x40, 0x18, 0x10, 0x38, 0x81, 0x7b,
+ 0x1b, 0x4a, 0x51, 0x72, 0xc0, 0x7b, 0x10, 0x74,
+ 0x1a, 0x4f, 0x1b, 0x4d, 0x0e, 0x2c, 0x0a, 0xd1,
+ 0x01, 0x22, 0x02, 0x21, 0x08, 0x20, 0x01, 0xf0,
+ 0xf3, 0xfb, 0x03, 0x20, 0xff, 0x21, 0x41, 0x31,
+ 0x39, 0x86, 0x14, 0x21, 0x08, 0xe0, 0x02, 0x22,
+ 0x01, 0x21, 0x08, 0x20, 0x3c, 0x00, 0x28, 0x22,
+ 0x01, 0x00, 0x01, 0xf0, 0xe8, 0xfb, 0x12, 0x49,
+ 0x02, 0x20, 0x39, 0x86, 0x10, 0x21, 0xa9, 0x71,
+ 0xe8, 0x71, 0x10, 0x48, 0x11, 0x4a, 0x00, 0x19,
+ 0x10, 0x38, 0xc0, 0x7b, 0x00, 0x28, 0x03, 0xd0,
+ 0x01, 0x21, 0x51, 0x73, 0x10, 0x73, 0x01, 0xe0,
+ 0x00, 0x20, 0x50, 0x73, 0x00, 0x21, 0x20, 0x1c,
+ 0xfd, 0xf7, 0xe5, 0xfd, 0x30, 0x69, 0xf9, 0xf7,
+ 0x08, 0xfb, 0xf8, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x64, 0x22, 0x01, 0x00, 0x40, 0x7c, 0x01, 0x00,
+ 0x76, 0x46, 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00,
+ 0x30, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0xff, 0x01, 0x00, 0x00, 0x5c, 0x57, 0x01, 0x00,
+ 0xd0, 0x80, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4c,
+ 0x14, 0x4a, 0x21, 0x78, 0x00, 0x20, 0x18, 0x32,
+ 0x05, 0x29, 0x1d, 0xd0, 0x06, 0x29, 0x1b, 0xd0,
+ 0x07, 0x29, 0x01, 0xd0, 0x08, 0x29, 0x06, 0xd1,
+ 0x3c, 0x00, 0xa0, 0x22, 0x01, 0x00, 0x91, 0x68,
+ 0x05, 0x20, 0x10, 0x29, 0x00, 0xdb, 0x06, 0x20,
+ 0x20, 0x70, 0x01, 0x20, 0xa1, 0x78, 0x00, 0x28,
+ 0x61, 0x70, 0x0b, 0xd0, 0x00, 0x20, 0xfa, 0xf7,
+ 0xdc, 0xf8, 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7,
+ 0x3c, 0xfa, 0x0a, 0x22, 0x1e, 0x21, 0x13, 0x20,
+ 0x01, 0xf0, 0x7f, 0xf9, 0x10, 0xbd, 0xd1, 0x69,
+ 0x07, 0x20, 0x10, 0x29, 0xe8, 0xdb, 0x08, 0x20,
+ 0xe6, 0xe7, 0x3c, 0x00, 0xdc, 0x22, 0x01, 0x00,
+ 0x7c, 0x78, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x01, 0x1c, 0x04, 0x1c, 0x44, 0x31, 0x00, 0x20,
+ 0xf6, 0xf7, 0x40, 0xfa, 0x30, 0x34, 0x00, 0x2d,
+ 0x07, 0xd0, 0x0e, 0xc8, 0x0e, 0xc4, 0x08, 0xc8,
+ 0x10, 0x38, 0x08, 0xc4, 0xf4, 0xf7, 0xc4, 0xf9,
+ 0xb0, 0xbd, 0x1e, 0xcc, 0x1e, 0xc0, 0xb0, 0xbd,
+ 0xf8, 0xb5, 0x08, 0x1c, 0x11, 0x1c, 0xf4, 0xf7,
+ 0x87, 0xfa, 0x08, 0x4c, 0x3c, 0x00, 0x18, 0x23,
+ 0x01, 0x00, 0x00, 0x25, 0x08, 0x4e, 0x08, 0x4f,
+ 0x06, 0xe0, 0x30, 0x6b, 0x00, 0x28, 0x03, 0xd0,
+ 0x35, 0x63, 0x20, 0x68, 0xee, 0xf7, 0x55, 0xf8,
+ 0x38, 0x68, 0x00, 0x28, 0xf5, 0xd0, 0xf8, 0xbd,
+ 0x00, 0x00, 0x5c, 0x5b, 0x01, 0x00, 0xe4, 0xfe,
+ 0x01, 0x00, 0x84, 0x5a, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x06, 0x00, 0x0e, 0x00, 0xf0, 0x07, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x1c, 0x3c, 0x00,
+ 0x54, 0x23, 0x01, 0x00, 0x23, 0x21, 0x01, 0xf0,
+ 0x2b, 0xfa, 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21,
+ 0x23, 0x20, 0xee, 0xf7, 0x9b, 0xff, 0x06, 0x49,
+ 0xa0, 0x00, 0x08, 0x58, 0x04, 0xe0, 0x12, 0xc8,
+ 0x28, 0x1c, 0xee, 0xf7, 0x2e, 0xf8, 0x20, 0x1c,
+ 0x00, 0x28, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00,
+ 0x68, 0x5b, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c,
+ 0x3c, 0x00, 0x90, 0x23, 0x01, 0x00, 0x00, 0x25,
+ 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21,
+ 0x23, 0x20, 0xee, 0xf7, 0x82, 0xff, 0x13, 0x48,
+ 0xa7, 0x00, 0xc4, 0x59, 0x08, 0xe0, 0x20, 0x68,
+ 0xb0, 0x42, 0x03, 0xd1, 0x03, 0x21, 0x23, 0x20,
+ 0xee, 0xf7, 0x77, 0xff, 0x25, 0x1c, 0x64, 0x68,
+ 0x00, 0x2c, 0xf4, 0xd1, 0x0c, 0x4a, 0x04, 0x3a,
+ 0x10, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x41, 0x68,
+ 0x11, 0x60, 0x3c, 0x00, 0xcc, 0x23, 0x01, 0x00,
+ 0x00, 0x28, 0x04, 0xd1, 0x02, 0x21, 0x23, 0x20,
+ 0xee, 0xf7, 0x66, 0xff, 0xf8, 0xbd, 0x00, 0x21,
+ 0x41, 0x60, 0x06, 0x60, 0x00, 0x2d, 0x01, 0xd0,
+ 0x68, 0x60, 0xf7, 0xe7, 0x01, 0x49, 0xc8, 0x51,
+ 0xf4, 0xe7, 0x00, 0x00, 0x68, 0x5b, 0x01, 0x00,
+ 0x70, 0xb5, 0x0e, 0x1c, 0x05, 0x1c, 0x00, 0x24,
+ 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, 0x23, 0x20,
+ 0xee, 0xf7, 0x4e, 0xff, 0x3c, 0x00, 0x08, 0x24,
+ 0x01, 0x00, 0x0d, 0x4b, 0xaa, 0x00, 0x98, 0x58,
+ 0x04, 0xe0, 0x01, 0x68, 0xb1, 0x42, 0x04, 0xd0,
+ 0x04, 0x1c, 0x40, 0x68, 0x00, 0x28, 0xf8, 0xd1,
+ 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x00, 0x2c,
+ 0x41, 0x68, 0x01, 0xd1, 0x99, 0x50, 0x00, 0xe0,
+ 0x61, 0x60, 0x00, 0x21, 0x03, 0x4a, 0x01, 0x60,
+ 0x04, 0x3a, 0x11, 0x68, 0x41, 0x60, 0x10, 0x60,
+ 0x70, 0xbd, 0x68, 0x5b, 0x01, 0x00, 0x3c, 0x00,
+ 0x44, 0x24, 0x01, 0x00, 0xf3, 0xb5, 0x81, 0xb0,
+ 0x00, 0x28, 0x17, 0xd0, 0x01, 0x78, 0xff, 0x29,
+ 0x14, 0xd0, 0x45, 0x78, 0x44, 0x19, 0x02, 0x34,
+ 0x80, 0x27, 0x01, 0x3c, 0x26, 0x78, 0x01, 0x3d,
+ 0xbe, 0x43, 0x30, 0x1c, 0xf8, 0xf7, 0x82, 0xfc,
+ 0x01, 0x21, 0x81, 0x40, 0x02, 0x98, 0x01, 0x40,
+ 0x02, 0xd0, 0x3e, 0x43, 0x30, 0x1c, 0x20, 0x70,
+ 0x00, 0x2d, 0xee, 0xd1, 0xfe, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x80, 0x24, 0x01, 0x00, 0x10, 0x4b,
+ 0x10, 0xb5, 0x59, 0x68, 0x41, 0x1a, 0x0f, 0x29,
+ 0x0d, 0xdc, 0x0e, 0x22, 0xd2, 0x43, 0x91, 0x42,
+ 0x09, 0xdb, 0x1a, 0x1c, 0x92, 0x68, 0x00, 0x29,
+ 0x01, 0xdd, 0x00, 0x2a, 0x03, 0xda, 0x00, 0x29,
+ 0x0d, 0xda, 0x00, 0x2a, 0x0b, 0xdc, 0x04, 0x33,
+ 0x03, 0xc3, 0xfd, 0xf7, 0x10, 0xfd, 0x04, 0x1c,
+ 0xfd, 0xf7, 0x13, 0xfd, 0x00, 0x28, 0x02, 0xd0,
+ 0x20, 0x1c, 0x3c, 0x00, 0xbc, 0x24, 0x01, 0x00,
+ 0xff, 0xf7, 0x92, 0xfe, 0x10, 0xbd, 0x00, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0xf8, 0xb5, 0x64, 0x4c,
+ 0x07, 0x1c, 0x60, 0x78, 0xa1, 0x78, 0x88, 0x42,
+ 0x0f, 0xd1, 0x08, 0x1c, 0xfd, 0xf7, 0xce, 0xf8,
+ 0xe0, 0x60, 0x04, 0x20, 0x60, 0x70, 0x0a, 0x22,
+ 0x1e, 0x21, 0x13, 0x20, 0x01, 0xf0, 0x70, 0xf8,
+ 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, 0x24, 0xf9,
+ 0xf8, 0xbd, 0x04, 0x28, 0x3c, 0x00, 0xf8, 0x24,
+ 0x01, 0x00, 0x6e, 0xd1, 0x58, 0x4e, 0xfd, 0xf7,
+ 0xbc, 0xf8, 0x00, 0x90, 0x71, 0x78, 0x04, 0x1c,
+ 0x00, 0x20, 0x05, 0x29, 0x21, 0xd2, 0x01, 0xa3,
+ 0x5b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x0b, 0x0f,
+ 0x14, 0x1a, 0x02, 0x00, 0x51, 0x48, 0x51, 0x49,
+ 0x60, 0x43, 0x41, 0x18, 0x7d, 0x20, 0xc0, 0x00,
+ 0xee, 0xf7, 0x87, 0xf8, 0x11, 0xe0, 0x87, 0x20,
+ 0x60, 0x43, 0x4d, 0x49, 0x02, 0xe0, 0x3c, 0x00,
+ 0x34, 0x25, 0x01, 0x00, 0x45, 0x20, 0x4d, 0x49,
+ 0x60, 0x43, 0x40, 0x18, 0x08, 0xe0, 0x4c, 0x48,
+ 0xcd, 0x21, 0x09, 0x01, 0x60, 0x43, 0x40, 0x1a,
+ 0x02, 0xe0, 0x46, 0x20, 0x60, 0x43, 0x82, 0x38,
+ 0x06, 0x06, 0x48, 0x48, 0x07, 0x21, 0x00, 0x79,
+ 0x36, 0x16, 0x08, 0x1a, 0x00, 0x19, 0x00, 0x90,
+ 0x68, 0x46, 0xfe, 0xf7, 0x5f, 0xfd, 0x38, 0x1c,
+ 0xfd, 0xf7, 0x2e, 0xfb, 0x00, 0x99, 0x42, 0x4a,
+ 0x3c, 0x00, 0x70, 0x25, 0x01, 0x00, 0x49, 0x00,
+ 0x51, 0x5a, 0x48, 0x43, 0x39, 0x49, 0x04, 0x1c,
+ 0x88, 0x78, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28,
+ 0x1e, 0xd1, 0x35, 0x49, 0x00, 0x28, 0x03, 0xd1,
+ 0x3a, 0x48, 0x05, 0x78, 0x04, 0x20, 0x02, 0xe0,
+ 0x38, 0x48, 0x45, 0x78, 0x0c, 0x20, 0x30, 0x49,
+ 0xc9, 0x68, 0x49, 0x1b, 0x08, 0x18, 0x00, 0x90,
+ 0x68, 0x46, 0xfe, 0xf7, 0x3e, 0xfd, 0x00, 0x98,
+ 0x33, 0x49, 0x3c, 0x00, 0xac, 0x25, 0x01, 0x00,
+ 0x40, 0x00, 0x20, 0x31, 0x08, 0x5a, 0x2a, 0x49,
+ 0x44, 0x43, 0xc8, 0x68, 0xa8, 0x42, 0x01, 0xd9,
+ 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, 0x2e, 0x48,
+ 0x21, 0x18, 0x40, 0x00, 0xee, 0xf7, 0xa2, 0xf8,
+ 0x04, 0x1c, 0x00, 0x2d, 0x03, 0xd0, 0xfd, 0xf7,
+ 0xc3, 0xfa, 0x02, 0xe0, 0x3d, 0xe0, 0xfd, 0xf7,
+ 0xf3, 0xfa, 0x00, 0x2f, 0x02, 0xd1, 0x25, 0x48,
+ 0x0e, 0x38, 0x01, 0xe0, 0x3c, 0x00, 0xe8, 0x25,
+ 0x01, 0x00, 0x23, 0x48, 0x0a, 0x38, 0x01, 0x68,
+ 0x61, 0x1a, 0xcb, 0x1c, 0x01, 0xdb, 0x03, 0x29,
+ 0x00, 0xdd, 0x04, 0x60, 0x01, 0x68, 0xa1, 0x42,
+ 0x01, 0xd2, 0x01, 0x31, 0x04, 0xe0, 0xa1, 0x42,
+ 0x03, 0xd9, 0x00, 0x29, 0x01, 0xd0, 0x01, 0x39,
+ 0x01, 0x60, 0x01, 0x68, 0x38, 0x1c, 0xfd, 0xf7,
+ 0xc0, 0xfb, 0x10, 0x4c, 0x0a, 0x20, 0x60, 0x70,
+ 0x0a, 0x22, 0x13, 0x20, 0xa1, 0x68, 0x3c, 0x00,
+ 0x24, 0x26, 0x01, 0x00, 0x00, 0xf0, 0xd2, 0xff,
+ 0x60, 0x68, 0x00, 0xf0, 0xf7, 0xfa, 0x00, 0x28,
+ 0x00, 0xd1, 0x5f, 0xe7, 0x00, 0xf0, 0xba, 0xfb,
+ 0x11, 0x49, 0x00, 0x23, 0x40, 0x18, 0x0e, 0x49,
+ 0x60, 0x60, 0x1e, 0x39, 0xc8, 0x56, 0xb0, 0x42,
+ 0xf3, 0xd0, 0x0e, 0x70, 0x31, 0x1c, 0x00, 0x20,
+ 0xff, 0xf7, 0x84, 0xfe, 0x4e, 0xe7, 0xff, 0xf7,
+ 0x15, 0xfe, 0x4b, 0xe7, 0x7c, 0x78, 0x01, 0x00,
+ 0x3c, 0x00, 0x60, 0x26, 0x01, 0x00, 0x60, 0xd7,
+ 0xff, 0xff, 0x60, 0x8f, 0x01, 0x00, 0x54, 0x0b,
+ 0x00, 0x00, 0xc9, 0x09, 0x00, 0x00, 0x8e, 0xfe,
+ 0xff, 0xff, 0x0c, 0x5a, 0x01, 0x00, 0x12, 0x5a,
+ 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x40, 0x42,
+ 0x0f, 0x00, 0x30, 0xb5, 0x0c, 0x4b, 0xfe, 0x24,
+ 0x1b, 0x88, 0x04, 0x40, 0xc0, 0x07, 0x5d, 0x07,
+ 0x6d, 0x0f, 0xdb, 0x08, 0xc0, 0x0f, 0x9c, 0x42,
+ 0x0b, 0xd8, 0x3c, 0x00, 0x9c, 0x26, 0x01, 0x00,
+ 0xa2, 0x18, 0x04, 0x3a, 0x9a, 0x42, 0x07, 0xd3,
+ 0x1a, 0x1b, 0x89, 0x5c, 0x01, 0x22, 0xaa, 0x40,
+ 0x11, 0x40, 0x01, 0xd0, 0x02, 0x21, 0x08, 0x43,
+ 0x30, 0xbd, 0x00, 0x00, 0xfa, 0x60, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c,
+ 0x14, 0x20, 0xf5, 0xf7, 0xff, 0xfa, 0x80, 0xbd,
+ 0xb0, 0xb5, 0x04, 0x1c, 0xf7, 0xf7, 0x08, 0xfd,
+ 0x13, 0x4d, 0x00, 0x28, 0x3c, 0x00, 0xd8, 0x26,
+ 0x01, 0x00, 0x1d, 0xd1, 0xa0, 0x07, 0x16, 0xd5,
+ 0x02, 0x20, 0x84, 0x43, 0x11, 0x48, 0x01, 0x22,
+ 0x2a, 0x62, 0x40, 0x68, 0x00, 0x28, 0x13, 0xd0,
+ 0xf2, 0xf7, 0x51, 0xf9, 0x00, 0x28, 0x0f, 0xd1,
+ 0x0b, 0x48, 0xe4, 0x30, 0x80, 0x7a, 0x01, 0x28,
+ 0x00, 0xd0, 0x00, 0x22, 0x11, 0x1c, 0x01, 0x20,
+ 0xf2, 0xf7, 0xa5, 0xf9, 0x04, 0xe0, 0x00, 0xf0,
+ 0x4e, 0xfb, 0xe8, 0x61, 0xf2, 0xf7, 0x3c, 0x00,
+ 0x14, 0x27, 0x01, 0x00, 0x6b, 0xf9, 0xa9, 0x6a,
+ 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7,
+ 0x5c, 0xfe, 0xb0, 0xbd, 0x60, 0x6c, 0x01, 0x00,
+ 0xb0, 0x57, 0x01, 0x00, 0x20, 0x48, 0xb0, 0xb5,
+ 0x81, 0x68, 0x01, 0x29, 0x04, 0xd1, 0x00, 0x78,
+ 0x00, 0x28, 0x01, 0xd1, 0xfd, 0xf7, 0x72, 0xfd,
+ 0x1b, 0x4d, 0x80, 0x3d, 0x2c, 0x1c, 0x70, 0x34,
+ 0x20, 0x78, 0x03, 0x38, 0x05, 0x28, 0x18, 0xd2,
+ 0x3c, 0x00, 0x50, 0x27, 0x01, 0x00, 0x01, 0xa3,
+ 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x04, 0x15,
+ 0x27, 0x27, 0x27, 0x00, 0xfb, 0xf7, 0xf1, 0xff,
+ 0x60, 0x7b, 0x01, 0x1c, 0xff, 0x31, 0x61, 0x73,
+ 0x00, 0x28, 0xf7, 0xd1, 0x04, 0x20, 0x20, 0x70,
+ 0xa8, 0x89, 0xf8, 0xf7, 0xda, 0xf9, 0x01, 0x1c,
+ 0x00, 0x22, 0x0f, 0x20, 0x00, 0xf0, 0x25, 0xff,
+ 0xb0, 0xbd, 0xef, 0xf7, 0xce, 0xff, 0x6a, 0x21,
+ 0x49, 0x5b, 0x3c, 0x00, 0x8c, 0x27, 0x01, 0x00,
+ 0x88, 0x42, 0x0b, 0xd0, 0xe8, 0x89, 0xf8, 0xf7,
+ 0xcb, 0xf9, 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22,
+ 0x0f, 0x20, 0x00, 0xf0, 0xf7, 0xff, 0x07, 0x20,
+ 0x20, 0x70, 0xb0, 0xbd, 0xfd, 0xf7, 0x3a, 0xfe,
+ 0xb0, 0xbd, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00,
+ 0xf0, 0xb5, 0x85, 0xb0, 0x04, 0x1c, 0x03, 0x80,
+ 0x18, 0x0c, 0x60, 0x80, 0x0d, 0x1c, 0x51, 0x78,
+ 0x10, 0x78, 0x09, 0x02, 0x3c, 0x00, 0xc8, 0x27,
+ 0x01, 0x00, 0x48, 0x40, 0xa0, 0x80, 0xd1, 0x78,
+ 0x90, 0x78, 0x09, 0x02, 0x48, 0x40, 0xe0, 0x80,
+ 0x51, 0x79, 0x10, 0x79, 0x09, 0x02, 0x48, 0x40,
+ 0x20, 0x81, 0x68, 0x46, 0x1a, 0x49, 0x14, 0x22,
+ 0xed, 0xf7, 0xe3, 0xfe, 0x00, 0x23, 0x00, 0x20,
+ 0xd9, 0x07, 0xc9, 0x0f, 0x8c, 0x46, 0x42, 0x00,
+ 0x56, 0x07, 0x76, 0x0f, 0x61, 0x46, 0x89, 0x19,
+ 0x49, 0x00, 0x6e, 0x5c, 0x49, 0x19, 0x3c, 0x00,
+ 0x04, 0x28, 0x01, 0x00, 0x49, 0x78, 0x6f, 0x46,
+ 0x09, 0x02, 0x4e, 0x40, 0x81, 0x00, 0x79, 0x58,
+ 0x0f, 0x4f, 0x49, 0x00, 0x61, 0x5a, 0x01, 0x30,
+ 0x4e, 0x40, 0x31, 0x06, 0x36, 0x0a, 0x76, 0x00,
+ 0xc9, 0x0d, 0x79, 0x5a, 0xf6, 0x19, 0x01, 0x27,
+ 0x7f, 0x02, 0xf6, 0x19, 0x36, 0x88, 0x71, 0x40,
+ 0xa6, 0x5a, 0x89, 0x19, 0xa1, 0x52, 0x05, 0x28,
+ 0xdc, 0xdb, 0x20, 0x89, 0xc0, 0x18, 0x01, 0x33,
+ 0x3c, 0x00, 0x40, 0x28, 0x01, 0x00, 0x08, 0x2b,
+ 0x20, 0x81, 0xd2, 0xdb, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xd8, 0x56, 0x01, 0x00, 0xd8, 0x52,
+ 0x01, 0x00, 0xf0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c,
+ 0x1e, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0x41, 0x00,
+ 0x53, 0x5a, 0x01, 0x30, 0x06, 0xaf, 0x7b, 0x52,
+ 0x05, 0x28, 0xf8, 0xdb, 0x10, 0x89, 0x00, 0xab,
+ 0x3a, 0x49, 0x80, 0x19, 0x58, 0x84, 0x68, 0x46,
+ 0x18, 0x22, 0x3c, 0x00, 0x7c, 0x28, 0x01, 0x00,
+ 0xed, 0xf7, 0x98, 0xfe, 0x00, 0x20, 0x41, 0x00,
+ 0x0a, 0x19, 0x52, 0x78, 0x63, 0x5c, 0x6f, 0x46,
+ 0x12, 0x02, 0x53, 0x40, 0x82, 0x00, 0xba, 0x58,
+ 0x06, 0xaf, 0x52, 0x00, 0xba, 0x5a, 0x31, 0x4f,
+ 0x01, 0x30, 0x53, 0x40, 0x1a, 0x06, 0x1b, 0x0a,
+ 0x5b, 0x00, 0xd2, 0x0d, 0xba, 0x5a, 0xdb, 0x19,
+ 0x01, 0x27, 0x7f, 0x02, 0xdb, 0x19, 0x1b, 0x88,
+ 0x5a, 0x40, 0x06, 0xab, 0x3c, 0x00, 0xb8, 0x28,
+ 0x01, 0x00, 0x5b, 0x5a, 0xd2, 0x18, 0x06, 0xab,
+ 0x5a, 0x52, 0x06, 0x28, 0xde, 0xdb, 0x61, 0x7b,
+ 0x20, 0x7b, 0x00, 0xab, 0x09, 0x02, 0x48, 0x40,
+ 0x59, 0x8c, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03,
+ 0x48, 0x40, 0x19, 0x8b, 0x40, 0x18, 0x18, 0x83,
+ 0xe1, 0x7b, 0xa0, 0x7b, 0x09, 0x02, 0x48, 0x40,
+ 0x19, 0x8b, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03,
+ 0x48, 0x40, 0x59, 0x8b, 0x40, 0x18, 0x3c, 0x00,
+ 0xf4, 0x28, 0x01, 0x00, 0x58, 0x83, 0x02, 0x20,
+ 0x41, 0x00, 0x06, 0xaa, 0x8a, 0x18, 0x20, 0x3a,
+ 0xd2, 0x8b, 0x01, 0x30, 0x53, 0x08, 0xd2, 0x03,
+ 0x5a, 0x40, 0x06, 0xab, 0x5b, 0x5a, 0xd2, 0x18,
+ 0x06, 0xab, 0x5a, 0x52, 0x06, 0x28, 0xef, 0xdb,
+ 0x30, 0x0a, 0x28, 0x70, 0x70, 0x04, 0x40, 0x0e,
+ 0x20, 0x21, 0x08, 0x43, 0x68, 0x70, 0xae, 0x70,
+ 0x61, 0x78, 0x20, 0x78, 0x00, 0xab, 0x09, 0x02,
+ 0x3c, 0x00, 0x30, 0x29, 0x01, 0x00, 0x48, 0x40,
+ 0x59, 0x8c, 0x48, 0x40, 0xc0, 0x05, 0x00, 0x0e,
+ 0xe8, 0x70, 0x00, 0x20, 0x41, 0x00, 0x06, 0xaa,
+ 0x53, 0x5a, 0x4a, 0x19, 0x01, 0x30, 0x13, 0x71,
+ 0x06, 0xab, 0x59, 0x5a, 0x09, 0x0a, 0x51, 0x71,
+ 0x06, 0x28, 0xf3, 0xdb, 0x09, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xec, 0x56, 0x01, 0x00, 0xd8, 0x52,
+ 0x01, 0x00, 0xf0, 0xb5, 0x46, 0x68, 0x05, 0x1c,
+ 0x60, 0x30, 0x3c, 0x00, 0x6c, 0x29, 0x01, 0x00,
+ 0x85, 0xb0, 0x04, 0x90, 0x60, 0xe0, 0x68, 0x68,
+ 0x0c, 0x21, 0x07, 0x69, 0x00, 0x20, 0xee, 0xf7,
+ 0x2d, 0xfe, 0x70, 0x61, 0x01, 0x89, 0x04, 0x39,
+ 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x70, 0x69,
+ 0x00, 0x68, 0x40, 0x18, 0x04, 0x21, 0xee, 0xf7,
+ 0x21, 0xfe, 0xf0, 0x61, 0x70, 0x69, 0x20, 0x21,
+ 0x04, 0x68, 0x04, 0x98, 0x04, 0x22, 0x40, 0x7b,
+ 0x80, 0x01, 0x08, 0x43, 0x3c, 0x00, 0xa8, 0x29,
+ 0x01, 0x00, 0xe0, 0x70, 0x28, 0x69, 0x40, 0x89,
+ 0xa0, 0x70, 0x28, 0x69, 0x40, 0x89, 0x00, 0x0a,
+ 0x20, 0x70, 0x29, 0x69, 0x0c, 0x31, 0xa0, 0x18,
+ 0xed, 0xf7, 0x9b, 0xfd, 0x20, 0x78, 0x20, 0x21,
+ 0x40, 0x06, 0x40, 0x0e, 0x08, 0x43, 0x60, 0x70,
+ 0x28, 0x69, 0x0a, 0x30, 0x01, 0x88, 0x01, 0x31,
+ 0x09, 0x04, 0x09, 0x0c, 0x01, 0x80, 0x04, 0xd1,
+ 0x28, 0x69, 0x0c, 0x30, 0x01, 0x68, 0x3c, 0x00,
+ 0xe4, 0x29, 0x01, 0x00, 0x01, 0x31, 0x01, 0x60,
+ 0x35, 0x62, 0x61, 0x79, 0x20, 0x79, 0x09, 0x02,
+ 0x40, 0x18, 0xa1, 0x79, 0x09, 0x04, 0x40, 0x18,
+ 0xe1, 0x79, 0x09, 0x06, 0x43, 0x18, 0x00, 0x93,
+ 0xa0, 0x78, 0x21, 0x78, 0x09, 0x02, 0x40, 0x18,
+ 0x04, 0x04, 0x24, 0x0c, 0x10, 0x20, 0xee, 0xf7,
+ 0x13, 0xff, 0xb0, 0x61, 0x28, 0x69, 0x3a, 0x1c,
+ 0x01, 0x68, 0x00, 0x9b, 0x01, 0xa8, 0x0a, 0x32,
+ 0x3c, 0x00, 0x20, 0x2a, 0x01, 0x00, 0xff, 0xf7,
+ 0xc8, 0xfe, 0x28, 0x69, 0x23, 0x1c, 0x01, 0x68,
+ 0xb0, 0x69, 0x01, 0xaa, 0xff, 0xf7, 0x11, 0xff,
+ 0x36, 0x68, 0x00, 0x2e, 0x9c, 0xd1, 0x03, 0x49,
+ 0x04, 0x48, 0x6a, 0x68, 0xf7, 0xf7, 0x63, 0xfb,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xfd, 0x6b,
+ 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x01, 0x38,
+ 0x07, 0x49, 0x40, 0x00, 0x09, 0x5c, 0x00, 0x29,
+ 0x06, 0xd0, 0x3c, 0x00, 0x5c, 0x2a, 0x01, 0x00,
+ 0x04, 0x49, 0x1c, 0x39, 0x08, 0x5c, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0xe6, 0x78, 0x01, 0x00,
+ 0xfe, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x02, 0x90,
+ 0x13, 0x48, 0x17, 0x1c, 0x00, 0x68, 0x0c, 0x1c,
+ 0x86, 0x78, 0x30, 0x1c, 0xfd, 0xf7, 0x28, 0xfa,
+ 0x00, 0x28, 0x01, 0xd1, 0x02, 0x98, 0xfe, 0xbd,
+ 0x00, 0x2d, 0x08, 0xd1, 0x3c, 0x00, 0x98, 0x2a,
+ 0x01, 0x00, 0x20, 0x68, 0x00, 0xab, 0x18, 0x71,
+ 0x60, 0x68, 0x58, 0x71, 0xa0, 0x68, 0x98, 0x71,
+ 0x03, 0x20, 0x38, 0x80, 0x29, 0x1c, 0x30, 0x1c,
+ 0x01, 0xaa, 0x00, 0xf0, 0x0e, 0xf8, 0x00, 0x2d,
+ 0xec, 0xd0, 0x00, 0xab, 0x19, 0x79, 0x21, 0x60,
+ 0x59, 0x79, 0x61, 0x60, 0x99, 0x79, 0xa1, 0x60,
+ 0x0c, 0x21, 0x39, 0x80, 0xe2, 0xe7, 0xf8, 0x6b,
+ 0x01, 0x00, 0xf8, 0xb5, 0x15, 0x1c, 0x3c, 0x00,
+ 0xd4, 0x2a, 0x01, 0x00, 0x42, 0x1e, 0x01, 0x38,
+ 0x47, 0x00, 0x3f, 0x18, 0x1f, 0x48, 0x3e, 0x18,
+ 0x00, 0x29, 0x06, 0xd0, 0x01, 0x24, 0x03, 0x22,
+ 0x31, 0x1c, 0x28, 0x1c, 0xed, 0xf7, 0x04, 0xfd,
+ 0x32, 0xe0, 0x68, 0x78, 0x01, 0x24, 0x00, 0x28,
+ 0x05, 0xd0, 0x29, 0x78, 0x08, 0x18, 0x01, 0x38,
+ 0x0e, 0x28, 0x00, 0xd9, 0x00, 0x24, 0x00, 0x2c,
+ 0x26, 0xd0, 0x00, 0x2a, 0x07, 0xd1, 0x2a, 0x21,
+ 0x3c, 0x00, 0x10, 0x2b, 0x01, 0x00, 0x12, 0x48,
+ 0xed, 0xf7, 0x9f, 0xfc, 0x1c, 0x21, 0x11, 0x48,
+ 0xed, 0xf7, 0x9b, 0xfc, 0x0f, 0x48, 0x03, 0x22,
+ 0x29, 0x1c, 0x30, 0x1c, 0xed, 0xf7, 0xe7, 0xfc,
+ 0x0c, 0x48, 0x71, 0x78, 0xc0, 0x5d, 0xb2, 0x78,
+ 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x2a, 0x0c, 0xd0,
+ 0x01, 0x22, 0x43, 0x18, 0x08, 0x4d, 0x06, 0xe0,
+ 0x41, 0x00, 0x49, 0x19, 0x10, 0x39, 0x8a, 0x73,
+ 0xb7, 0x78, 0x3c, 0x00, 0x4c, 0x2b, 0x01, 0x00,
+ 0x01, 0x30, 0xcf, 0x73, 0x83, 0x42, 0xf6, 0xd8,
+ 0xfe, 0xf7, 0x60, 0xf8, 0x20, 0x1c, 0xf8, 0xbd,
+ 0xeb, 0x62, 0x01, 0x00, 0xca, 0x78, 0x01, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x1c, 0x48, 0x00, 0x23,
+ 0xc0, 0x56, 0x43, 0x1c, 0x32, 0xd1, 0xa8, 0x7a,
+ 0xf8, 0xf7, 0x0c, 0xf9, 0x00, 0x26, 0x00, 0x28,
+ 0x18, 0x4c, 0x08, 0xd0, 0xe8, 0x69, 0xe1, 0x6b,
+ 0x00, 0x29, 0x0b, 0xd1, 0x3c, 0x00, 0x88, 0x2b,
+ 0x01, 0x00, 0x66, 0x63, 0x01, 0x21, 0xe1, 0x63,
+ 0xa6, 0x63, 0x06, 0xe0, 0xa8, 0x69, 0xe1, 0x6b,
+ 0x00, 0x29, 0x02, 0xd0, 0x66, 0x63, 0xa6, 0x63,
+ 0xe6, 0x63, 0xa1, 0x6b, 0x01, 0x31, 0xa1, 0x63,
+ 0x82, 0x03, 0x01, 0xd5, 0x0e, 0x4a, 0x10, 0x43,
+ 0xe2, 0x6b, 0x00, 0x2a, 0x00, 0xd0, 0x40, 0x42,
+ 0x62, 0x6b, 0x10, 0x18, 0x60, 0x63, 0x08, 0x29,
+ 0x0b, 0xd1, 0x00, 0x28, 0x01, 0xdd, 0x3c, 0x00,
+ 0xc4, 0x2b, 0x01, 0x00, 0x01, 0x20, 0x03, 0xe0,
+ 0x00, 0x28, 0x03, 0xda, 0x00, 0x20, 0xc0, 0x43,
+ 0xef, 0xf7, 0x62, 0xfe, 0x66, 0x63, 0xa6, 0x63,
+ 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x6b, 0x01, 0x00,
+ 0x84, 0x6a, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff,
+ 0x0c, 0x21, 0x05, 0x4a, 0x41, 0x43, 0x89, 0x18,
+ 0x80, 0xb5, 0x89, 0x78, 0x00, 0x29, 0x01, 0xd1,
+ 0xf3, 0xf7, 0xf2, 0xfa, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x00, 0x20,
+ 0xf7, 0xf7, 0x03, 0xfa, 0x80, 0xbd, 0x80, 0xb5,
+ 0x01, 0x1c, 0x01, 0x20, 0xf7, 0xf7, 0xfd, 0xf9,
+ 0x80, 0xbd, 0x02, 0x49, 0x89, 0x68, 0x40, 0x1a,
+ 0xc0, 0x0f, 0x70, 0x47, 0x00, 0x00, 0x00, 0x01,
+ 0x07, 0x00, 0x02, 0x49, 0x89, 0x68, 0x08, 0x1a,
+ 0xc0, 0x17, 0x01, 0x30, 0x70, 0x47, 0x00, 0x01,
+ 0x07, 0x00, 0x3c, 0x00, 0x3c, 0x2c, 0x01, 0x00,
+ 0x05, 0x49, 0x4a, 0x68, 0x01, 0x23, 0x1a, 0x43,
+ 0x4a, 0x60, 0x8a, 0x68, 0x10, 0x18, 0x88, 0x60,
+ 0x48, 0x68, 0x98, 0x43, 0x48, 0x60, 0x70, 0x47,
+ 0x00, 0x01, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4b,
+ 0x00, 0x21, 0x0a, 0x01, 0x9a, 0x58, 0x00, 0x2a,
+ 0x17, 0xd1, 0x01, 0x24, 0x0a, 0x01, 0x9c, 0x50,
+ 0xd2, 0x18, 0x10, 0x73, 0x00, 0x23, 0x53, 0x73,
+ 0x02, 0x23, 0x01, 0x28, 0x3c, 0x00, 0x78, 0x2c,
+ 0x01, 0x00, 0x0e, 0x4a, 0x05, 0xd1, 0xc8, 0x00,
+ 0x80, 0x18, 0x10, 0x30, 0x02, 0x78, 0x9a, 0x43,
+ 0x04, 0xe0, 0xc8, 0x00, 0x80, 0x18, 0x10, 0x30,
+ 0x02, 0x78, 0x1a, 0x43, 0x02, 0x70, 0x02, 0xe0,
+ 0x01, 0x31, 0x08, 0x29, 0xe0, 0xdb, 0x08, 0x29,
+ 0x04, 0xd1, 0x01, 0x21, 0x99, 0x20, 0xee, 0xf7,
+ 0xfe, 0xfa, 0x03, 0x49, 0x08, 0x04, 0x00, 0x0c,
+ 0x10, 0xbd, 0xac, 0x73, 0x01, 0x00, 0x3c, 0x00,
+ 0xb4, 0x2c, 0x01, 0x00, 0x00, 0x60, 0x07, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0xf7, 0xb5, 0x19, 0x4f,
+ 0x19, 0x4e, 0x0c, 0x1c, 0xc1, 0x00, 0xc9, 0x19,
+ 0xb2, 0x68, 0x10, 0x31, 0x81, 0xb0, 0x01, 0x3a,
+ 0x4a, 0x60, 0x0b, 0x78, 0x1d, 0x1c, 0x0d, 0x22,
+ 0x93, 0x43, 0x0b, 0x70, 0x01, 0x22, 0x82, 0x40,
+ 0x3a, 0x73, 0x12, 0x4b, 0x00, 0x01, 0x03, 0x9a,
+ 0xc0, 0x18, 0x82, 0x60, 0x10, 0x4a, 0x10, 0x1c,
+ 0x3c, 0x00, 0xf0, 0x2c, 0x01, 0x00, 0x20, 0x30,
+ 0x87, 0x79, 0x00, 0xab, 0x1f, 0x70, 0xc0, 0x79,
+ 0x58, 0x70, 0xb0, 0x68, 0x03, 0x30, 0x00, 0x23,
+ 0x26, 0x1a, 0x01, 0xd5, 0x04, 0x1c, 0x01, 0x23,
+ 0x4c, 0x60, 0x0d, 0x70, 0x00, 0x2b, 0x04, 0xd0,
+ 0x20, 0x1c, 0xff, 0xf7, 0x8a, 0xff, 0x00, 0x28,
+ 0xfa, 0xd0, 0x00, 0xab, 0x18, 0x88, 0xd0, 0x84,
+ 0xff, 0xbd, 0x00, 0x60, 0x07, 0x00, 0x00, 0x01,
+ 0x07, 0x00, 0x3c, 0x00, 0x2c, 0x2d, 0x01, 0x00,
+ 0xac, 0x73, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x30, 0xb5, 0x00, 0x20, 0xc0, 0x43, 0x0b, 0x4c,
+ 0x09, 0x4b, 0x00, 0x22, 0xd1, 0x00, 0x09, 0x19,
+ 0x0d, 0x7c, 0xed, 0x07, 0x07, 0xd5, 0x49, 0x69,
+ 0x9d, 0x68, 0x49, 0x1b, 0x00, 0xd5, 0x00, 0x21,
+ 0x81, 0x42, 0x00, 0xd2, 0x08, 0x1c, 0x01, 0x32,
+ 0x08, 0x2a, 0xef, 0xdb, 0x30, 0xbd, 0x00, 0x00,
+ 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x2d,
+ 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0xb0, 0xb5,
+ 0x08, 0x28, 0x0b, 0xd2, 0x08, 0x4d, 0x04, 0x01,
+ 0x29, 0x59, 0x00, 0x29, 0x04, 0xd0, 0x00, 0xf0,
+ 0x4a, 0xf8, 0x00, 0x20, 0x28, 0x51, 0xb0, 0xbd,
+ 0x02, 0x21, 0x00, 0xe0, 0x03, 0x21, 0x99, 0x20,
+ 0xee, 0xf7, 0x89, 0xfa, 0xb0, 0xbd, 0xac, 0x73,
+ 0x01, 0x00, 0x03, 0x49, 0x00, 0x01, 0x40, 0x18,
+ 0x41, 0x7b, 0x08, 0x22, 0x11, 0x43, 0x3c, 0x00,
+ 0xa4, 0x2d, 0x01, 0x00, 0x41, 0x73, 0x70, 0x47,
+ 0xac, 0x73, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00,
+ 0x70, 0xb5, 0x0b, 0x4e, 0x09, 0x4d, 0x00, 0x22,
+ 0xd0, 0x00, 0x84, 0x19, 0x20, 0x7c, 0xc0, 0x07,
+ 0x07, 0xd5, 0x60, 0x69, 0xff, 0xf7, 0x26, 0xff,
+ 0x00, 0x28, 0x02, 0xd0, 0xa8, 0x68, 0x32, 0x30,
+ 0x60, 0x61, 0x01, 0x32, 0x08, 0x2a, 0xef, 0xdb,
+ 0x3c, 0x00, 0xe0, 0x2d, 0x01, 0x00, 0x70, 0xbd,
+ 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x02, 0x4a, 0xc0, 0x00, 0x80, 0x18,
+ 0x01, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x04, 0x49, 0xc0, 0x00, 0x41, 0x18,
+ 0x08, 0x7c, 0x08, 0x23, 0x02, 0x1c, 0x9a, 0x43,
+ 0x0a, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x70, 0xb5, 0x08, 0x28, 0x17, 0xd2,
+ 0x0e, 0x49, 0x3c, 0x00, 0x1c, 0x2e, 0x01, 0x00,
+ 0x8a, 0x68, 0x0e, 0x4d, 0x01, 0x3a, 0xc1, 0x00,
+ 0x49, 0x19, 0x4a, 0x61, 0x0c, 0x4b, 0x9a, 0x79,
+ 0x10, 0x31, 0x0c, 0x78, 0x0d, 0x26, 0xb4, 0x43,
+ 0x0c, 0x70, 0x01, 0x21, 0x81, 0x40, 0x29, 0x73,
+ 0x9a, 0x71, 0x09, 0x4a, 0x07, 0x49, 0x00, 0x01,
+ 0x80, 0x18, 0x41, 0x60, 0x70, 0xbd, 0x05, 0x21,
+ 0x99, 0x20, 0xee, 0xf7, 0x29, 0xfa, 0x70, 0xbd,
+ 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x58, 0x2e,
+ 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0xac, 0x73,
+ 0x01, 0x00, 0xf8, 0xb5, 0x9e, 0x46, 0x1a, 0x4b,
+ 0x94, 0x46, 0x9b, 0x68, 0x1a, 0x4c, 0xc2, 0x00,
+ 0x12, 0x19, 0x01, 0x3b, 0x53, 0x61, 0x15, 0x1c,
+ 0x18, 0x4c, 0xa6, 0x79, 0x2a, 0x1c, 0x10, 0x32,
+ 0x13, 0x78, 0x0d, 0x27, 0xbb, 0x43, 0x13, 0x70,
+ 0x01, 0x27, 0x12, 0x4b, 0x87, 0x40, 0x3c, 0x00,
+ 0x94, 0x2e, 0x01, 0x00, 0x1f, 0x73, 0xa6, 0x71,
+ 0x12, 0x4e, 0x00, 0x01, 0x80, 0x19, 0x63, 0x46,
+ 0x43, 0x60, 0x73, 0x46, 0x83, 0x60, 0x13, 0x78,
+ 0x40, 0x7b, 0xa6, 0x79, 0x01, 0x27, 0x18, 0x43,
+ 0x38, 0x43, 0x14, 0x35, 0x00, 0xab, 0x1e, 0x70,
+ 0xe4, 0x79, 0x5c, 0x70, 0x06, 0x4b, 0x9b, 0x68,
+ 0x03, 0x33, 0xcc, 0x1a, 0x00, 0xd5, 0x19, 0x1c,
+ 0x29, 0x60, 0x10, 0x70, 0x00, 0xab, 0x18, 0x88,
+ 0x3c, 0x00, 0xd0, 0x2e, 0x01, 0x00, 0x03, 0x4c,
+ 0x20, 0x3c, 0xe0, 0x84, 0xf8, 0xbd, 0x00, 0x01,
+ 0x07, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0xac, 0x73, 0x01, 0x00, 0x00, 0xb5,
+ 0x01, 0x1c, 0xff, 0xf7, 0x5e, 0xff, 0x42, 0x18,
+ 0x10, 0x1c, 0xff, 0xf7, 0x92, 0xfe, 0x00, 0x28,
+ 0xfa, 0xd0, 0x00, 0xbd, 0x00, 0x00, 0x89, 0x1a,
+ 0x40, 0x1a, 0x99, 0x18, 0x88, 0x42, 0x01, 0xd8,
+ 0x01, 0x20, 0x3c, 0x00, 0x0c, 0x2f, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x00, 0x28,
+ 0x01, 0xd1, 0xee, 0xf7, 0xef, 0xf9, 0x21, 0x1c,
+ 0x01, 0x20, 0xff, 0xf7, 0x19, 0xfa, 0x41, 0x20,
+ 0x00, 0x5d, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x25,
+ 0x04, 0xe0, 0x02, 0x28, 0x01, 0xd1, 0x05, 0x25,
+ 0x00, 0xe0, 0x01, 0x25, 0xe0, 0x68, 0xee, 0xf7,
+ 0x29, 0xfb, 0xa6, 0x6b, 0x3c, 0x00, 0x48, 0x2f,
+ 0x01, 0x00, 0x00, 0x2e, 0x10, 0xd0, 0x00, 0x2f,
+ 0x06, 0xd0, 0x2f, 0x20, 0x02, 0x5d, 0x20, 0x6a,
+ 0x41, 0x6b, 0x28, 0x1c, 0xed, 0xf7, 0x44, 0xfa,
+ 0xa0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xee, 0xf7,
+ 0x46, 0xfc, 0x20, 0x6a, 0xee, 0xf7, 0x43, 0xfc,
+ 0x20, 0x1c, 0xee, 0xf7, 0x40, 0xfc, 0x30, 0x1c,
+ 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0xc0, 0x6b,
+ 0x00, 0x28, 0x09, 0xd0, 0x20, 0x69, 0x3c, 0x00,
+ 0x84, 0x2f, 0x01, 0x00, 0x00, 0x8b, 0xee, 0xf7,
+ 0x55, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c,
+ 0x06, 0x20, 0xff, 0xf7, 0xe3, 0xf9, 0x08, 0x4d,
+ 0x20, 0x1c, 0xa9, 0x6d, 0xff, 0xf7, 0xba, 0xff,
+ 0x00, 0x28, 0x07, 0xd0, 0xe8, 0x68, 0x01, 0x30,
+ 0xe8, 0x60, 0x28, 0x6a, 0x01, 0x38, 0x28, 0x62,
+ 0xfc, 0xf7, 0x78, 0xf8, 0xb0, 0xbd, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c,
+ 0x3c, 0x00, 0xc0, 0x2f, 0x01, 0x00, 0xe1, 0x6d,
+ 0xff, 0xf7, 0xa7, 0xff, 0x00, 0x28, 0x04, 0xd0,
+ 0xe0, 0x69, 0x01, 0x38, 0xe0, 0x61, 0xfc, 0xf7,
+ 0x68, 0xf8, 0x10, 0xbd, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x0c, 0x23, 0x0c, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0x10, 0xb5, 0x44, 0x68, 0xa1, 0x68,
+ 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7,
+ 0xf3, 0xf9, 0xe0, 0x6b, 0x00, 0x28, 0x08, 0xd0,
+ 0x20, 0x69, 0x3c, 0x00, 0xfc, 0x2f, 0x01, 0x00,
+ 0x00, 0x8b, 0xee, 0xf7, 0x19, 0xf9, 0x00, 0x28,
+ 0x02, 0xd0, 0x20, 0x1c, 0xf9, 0xf7, 0x26, 0xf9,
+ 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00,
+ 0xf8, 0xb5, 0x22, 0x49, 0x48, 0x68, 0x80, 0x00,
+ 0x06, 0xd4, 0x01, 0x20, 0x40, 0x07, 0x08, 0x60,
+ 0x4a, 0x69, 0x92, 0x00, 0x00, 0xd4, 0x48, 0x60,
+ 0x1d, 0x4f, 0x78, 0x7e, 0xc3, 0x06, 0x01, 0x20,
+ 0x02, 0x1c, 0xdb, 0x0e, 0x3c, 0x00, 0x38, 0x30,
+ 0x01, 0x00, 0x9a, 0x40, 0x0a, 0x60, 0x79, 0x69,
+ 0x8c, 0x68, 0x8c, 0x60, 0x21, 0x07, 0x89, 0x0f,
+ 0x09, 0xd0, 0x21, 0x07, 0x04, 0xd5, 0x0b, 0x21,
+ 0x9e, 0x20, 0xee, 0xf7, 0x28, 0xf9, 0x00, 0xe0,
+ 0x78, 0x64, 0x0c, 0x20, 0x84, 0x43, 0x12, 0x48,
+ 0x3d, 0x68, 0x06, 0x5d, 0x6c, 0x68, 0x2c, 0x34,
+ 0x06, 0xe0, 0xa0, 0x68, 0x00, 0x68, 0xa0, 0x60,
+ 0xe9, 0x68, 0x28, 0x1c, 0xed, 0xf7, 0x3c, 0x00,
+ 0x74, 0x30, 0x01, 0x00, 0xb2, 0xf9, 0x01, 0x3e,
+ 0xf6, 0xd2, 0xa0, 0x68, 0x80, 0x68, 0x00, 0x28,
+ 0x0d, 0xd0, 0x40, 0x89, 0x00, 0x28, 0x0a, 0xd0,
+ 0x78, 0x6c, 0x00, 0x28, 0x07, 0xd1, 0x78, 0x69,
+ 0x80, 0x68, 0x80, 0x07, 0x03, 0xd1, 0x0c, 0x21,
+ 0x9e, 0x20, 0xee, 0xf7, 0x03, 0xf9, 0xf8, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0xcc, 0x6d, 0x01, 0x00,
+ 0xb4, 0x44, 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5,
+ 0x3c, 0x00, 0xb0, 0x30, 0x01, 0x00, 0x08, 0x7e,
+ 0xc2, 0x06, 0xd2, 0x0e, 0x01, 0x20, 0x90, 0x40,
+ 0x07, 0x4a, 0x10, 0x60, 0x00, 0x20, 0x0a, 0x69,
+ 0xc0, 0x43, 0x90, 0x60, 0x08, 0x68, 0x24, 0x31,
+ 0x06, 0xc9, 0x03, 0x69, 0xed, 0xf7, 0x86, 0xf9,
+ 0x80, 0xbd, 0xcc, 0x6d, 0x01, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0xf8, 0xb5, 0x44, 0x68, 0x06, 0x1c,
+ 0x2c, 0x34, 0x20, 0x68, 0x0d, 0x1c, 0x80, 0x68,
+ 0x00, 0x90, 0x3c, 0x00, 0xec, 0x30, 0x01, 0x00,
+ 0x00, 0x28, 0x00, 0xd0, 0xc5, 0x60, 0x20, 0x68,
+ 0x00, 0x68, 0x20, 0x60, 0x40, 0x68, 0x00, 0x28,
+ 0x03, 0xd0, 0x0a, 0x21, 0x9e, 0x20, 0xee, 0xf7,
+ 0xcf, 0xf8, 0x20, 0x68, 0x45, 0x60, 0x28, 0x1c,
+ 0x02, 0xe0, 0x00, 0x22, 0x42, 0x60, 0x08, 0x1c,
+ 0xc1, 0x68, 0x00, 0x29, 0xf9, 0xd1, 0x71, 0x68,
+ 0x60, 0x27, 0x0b, 0x1c, 0x40, 0x33, 0x9c, 0x46,
+ 0x9b, 0x78, 0xca, 0x7e, 0x3c, 0x00, 0x28, 0x31,
+ 0x01, 0x00, 0x5b, 0x01, 0x12, 0x07, 0x12, 0x0f,
+ 0x3b, 0x40, 0x1a, 0x43, 0x8b, 0x8f, 0xff, 0x27,
+ 0x3f, 0x04, 0x1b, 0x04, 0x3b, 0x40, 0x1a, 0x43,
+ 0x90, 0x23, 0x1a, 0x43, 0x42, 0x60, 0x63, 0x46,
+ 0x9a, 0x78, 0x01, 0x32, 0xd2, 0x07, 0xd2, 0x0f,
+ 0x9a, 0x70, 0x89, 0x6b, 0xc1, 0x60, 0x21, 0x68,
+ 0x88, 0x60, 0x00, 0x98, 0x00, 0x28, 0x01, 0xd0,
+ 0x00, 0x98, 0xc5, 0x60, 0x0a, 0x4f, 0x3c, 0x00,
+ 0x64, 0x31, 0x01, 0x00, 0xbd, 0x79, 0xa0, 0x69,
+ 0x00, 0x28, 0x0c, 0xd0, 0x00, 0x22, 0xa2, 0x61,
+ 0x74, 0x68, 0x60, 0x69, 0xef, 0xf7, 0x2e, 0xff,
+ 0xe0, 0x6a, 0x61, 0x69, 0x40, 0x68, 0x48, 0x60,
+ 0x61, 0x69, 0x01, 0x20, 0x08, 0x60, 0xbd, 0x71,
+ 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00,
+ 0xfe, 0xb5, 0x44, 0x68, 0x0f, 0x1c, 0x01, 0x94,
+ 0x2c, 0x34, 0x20, 0x1c, 0x12, 0x30, 0x02, 0x90,
+ 0x3c, 0x00, 0xa0, 0x31, 0x01, 0x00, 0x2c, 0xe0,
+ 0x0c, 0x20, 0xee, 0xf7, 0x00, 0xfb, 0x05, 0x1c,
+ 0x60, 0x68, 0x00, 0x28, 0x1d, 0xd1, 0x02, 0x98,
+ 0x00, 0x21, 0x00, 0x90, 0x00, 0x20, 0xee, 0xf7,
+ 0x0e, 0xfa, 0x06, 0x1c, 0x00, 0x98, 0x04, 0x21,
+ 0xee, 0xf7, 0x09, 0xfa, 0x01, 0x1c, 0x01, 0x98,
+ 0xc0, 0x7e, 0x00, 0x07, 0x00, 0x0f, 0xd0, 0x30,
+ 0x70, 0x60, 0x01, 0x98, 0xc0, 0x7e, 0x00, 0x07,
+ 0x00, 0x0f, 0x3c, 0x00, 0xdc, 0x31, 0x01, 0x00,
+ 0xf0, 0x30, 0x48, 0x60, 0x30, 0x1c, 0xee, 0xf7,
+ 0x19, 0xf9, 0x65, 0x60, 0xe6, 0x60, 0x01, 0xe0,
+ 0x20, 0x68, 0x05, 0x60, 0x60, 0x68, 0x28, 0x60,
+ 0x25, 0x60, 0x00, 0x20, 0x68, 0x60, 0xa8, 0x60,
+ 0x38, 0x1c, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e,
+ 0x39, 0x1c, 0x07, 0x1c, 0x00, 0x29, 0xca, 0xd1,
+ 0x60, 0x68, 0xa0, 0x60, 0xfe, 0xbd, 0x00, 0x00,
+ 0xff, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x18, 0x32,
+ 0x01, 0x00, 0x08, 0x1c, 0x00, 0x26, 0x81, 0xb0,
+ 0xf4, 0xf7, 0x2f, 0xfe, 0x04, 0x1c, 0x02, 0xd0,
+ 0x60, 0x68, 0xff, 0x28, 0x01, 0xd1, 0x06, 0x26,
+ 0x28, 0xe0, 0x21, 0x1c, 0x20, 0x31, 0x0a, 0x78,
+ 0x01, 0x2a, 0x01, 0xd1, 0x03, 0x26, 0x21, 0xe0,
+ 0x01, 0x27, 0x25, 0x60, 0x0f, 0x70, 0x11, 0xc5,
+ 0x1d, 0x48, 0x08, 0x3d, 0x68, 0x61, 0x03, 0x98,
+ 0x6a, 0x46, 0xe8, 0x60, 0x04, 0x98, 0x3c, 0x00,
+ 0x54, 0x32, 0x01, 0x00, 0x28, 0x61, 0x1a, 0x48,
+ 0xa8, 0x61, 0x1a, 0x48, 0xe8, 0x61, 0x1a, 0x48,
+ 0x28, 0x62, 0x1a, 0x48, 0x68, 0x62, 0x20, 0x7e,
+ 0xa1, 0x68, 0xed, 0xf7, 0xb3, 0xfe, 0x00, 0x28,
+ 0x06, 0xd1, 0x60, 0x7e, 0xe1, 0x68, 0x6a, 0x46,
+ 0xed, 0xf7, 0xac, 0xfe, 0x00, 0x28, 0x07, 0xd0,
+ 0x04, 0x26, 0x31, 0x1c, 0x9e, 0x20, 0xee, 0xf7,
+ 0x0d, 0xf8, 0x30, 0x1c, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x3c, 0x00, 0x90, 0x32, 0x01, 0x00, 0x6a, 0x46,
+ 0x0f, 0x49, 0x1d, 0x20, 0xed, 0xf7, 0x9d, 0xfe,
+ 0x01, 0x21, 0x0d, 0x48, 0x49, 0x07, 0x01, 0x60,
+ 0x22, 0x7e, 0x3b, 0x1c, 0xd2, 0x06, 0xd2, 0x0e,
+ 0x93, 0x40, 0x43, 0x60, 0x62, 0x7e, 0xd2, 0x06,
+ 0xd2, 0x0e, 0x97, 0x40, 0x47, 0x60, 0x41, 0x60,
+ 0xe6, 0xe7, 0x31, 0x33, 0x01, 0x00, 0xd9, 0x32,
+ 0x01, 0x00, 0x91, 0x31, 0x01, 0x00, 0xdd, 0x30,
+ 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x32, 0x01, 0x00,
+ 0xfd, 0x32, 0x01, 0x00, 0x71, 0x33, 0x01, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x42, 0x68, 0x2c, 0x32,
+ 0x50, 0x68, 0x43, 0x68, 0x0b, 0x60, 0x81, 0x68,
+ 0x4b, 0x89, 0x0b, 0x81, 0x83, 0x68, 0x00, 0x21,
+ 0xd9, 0x60, 0x41, 0x60, 0x81, 0x60, 0x00, 0x68,
+ 0x50, 0x60, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0xb5, 0x42, 0x68, 0xff, 0x26, 0x91, 0x87,
+ 0x10, 0x6b, 0x0c, 0x04, 0x3c, 0x00, 0x08, 0x33,
+ 0x01, 0x00, 0x05, 0x1c, 0x36, 0x04, 0x34, 0x40,
+ 0x43, 0x68, 0x59, 0x68, 0xb1, 0x43, 0x21, 0x43,
+ 0x59, 0x60, 0x00, 0x68, 0xa8, 0x42, 0xf7, 0xd1,
+ 0x10, 0x6b, 0x51, 0x69, 0x40, 0x68, 0x48, 0x60,
+ 0x51, 0x69, 0x01, 0x20, 0x08, 0x60, 0x70, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x43, 0x68, 0x08, 0x1c,
+ 0x59, 0x62, 0x9a, 0x62, 0x00, 0x25, 0x0a, 0xe0,
+ 0x45, 0x81, 0xc4, 0x68, 0x2a, 0x1c, 0x3c, 0x00,
+ 0x44, 0x33, 0x01, 0x00, 0x00, 0x2c, 0x03, 0xd1,
+ 0x9a, 0x7e, 0x12, 0x07, 0x12, 0x0f, 0x10, 0x32,
+ 0x42, 0x60, 0x20, 0x1c, 0x00, 0x28, 0xf2, 0xd1,
+ 0x18, 0x69, 0x41, 0x60, 0x19, 0x69, 0x01, 0x20,
+ 0x08, 0x60, 0x02, 0x48, 0x00, 0x68, 0xed, 0xf7,
+ 0x37, 0xf8, 0xb0, 0xbd, 0x5c, 0x5b, 0x01, 0x00,
+ 0x01, 0x20, 0x05, 0x49, 0x40, 0x07, 0x80, 0xb5,
+ 0x88, 0x60, 0x04, 0x48, 0x01, 0x68, 0x0d, 0x20,
+ 0x3c, 0x00, 0x80, 0x33, 0x01, 0x00, 0xfe, 0xf7,
+ 0xe6, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0xc4, 0x60, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0e, 0x4f, 0x0c, 0x4e, 0x00, 0x24, 0x48, 0x20,
+ 0x60, 0x43, 0xc5, 0x19, 0x48, 0x21, 0x28, 0x1c,
+ 0xed, 0xf7, 0x7b, 0xf8, 0x1c, 0x20, 0x60, 0x43,
+ 0x81, 0x19, 0x28, 0x1d, 0x1c, 0x22, 0xed, 0xf7,
+ 0xfe, 0xf8, 0x1c, 0x23, 0xe8, 0x56, 0x05, 0x49,
+ 0xfb, 0xf7, 0x3c, 0x00, 0xbc, 0x33, 0x01, 0x00,
+ 0xcd, 0xf8, 0x01, 0x34, 0x01, 0x2c, 0xe9, 0xd3,
+ 0xf8, 0xbd, 0x00, 0x00, 0xb8, 0x44, 0x01, 0x00,
+ 0xcc, 0x6d, 0x01, 0x00, 0x15, 0x32, 0x01, 0x00,
+ 0xff, 0xb5, 0x05, 0x1c, 0x0a, 0x30, 0x06, 0x1c,
+ 0x81, 0xb0, 0xf2, 0xf7, 0xdd, 0xf8, 0x18, 0x4f,
+ 0x04, 0x1c, 0x39, 0x88, 0xef, 0xf7, 0xbc, 0xfc,
+ 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, 0x72, 0x88,
+ 0x02, 0x30, 0x02, 0x80, 0x3c, 0x00, 0xf8, 0x33,
+ 0x01, 0x00, 0xb1, 0x88, 0x12, 0x4e, 0x41, 0x80,
+ 0x28, 0x88, 0x08, 0x36, 0x40, 0x05, 0x00, 0x28,
+ 0x05, 0xda, 0x69, 0x88, 0x03, 0x9a, 0x20, 0x1c,
+ 0xf7, 0xf7, 0x01, 0xfd, 0x00, 0xe0, 0x00, 0x20,
+ 0x70, 0x80, 0xf8, 0xf7, 0x5e, 0xfc, 0x01, 0x21,
+ 0x09, 0x03, 0x00, 0x28, 0x30, 0x88, 0x01, 0xd0,
+ 0x88, 0x43, 0x00, 0xe0, 0x08, 0x43, 0x30, 0x80,
+ 0x05, 0x48, 0x00, 0x22, 0x00, 0x21, 0x3c, 0x00,
+ 0x34, 0x34, 0x01, 0x00, 0x14, 0x30, 0xef, 0xf7,
+ 0x65, 0xfc, 0x20, 0x1c, 0xf9, 0xf7, 0x74, 0xf8,
+ 0x05, 0xb0, 0xf0, 0xbd, 0xb0, 0x7a, 0x01, 0x00,
+ 0x10, 0xb5, 0x0e, 0x4c, 0x60, 0x68, 0xf8, 0xf7,
+ 0x95, 0xf9, 0x20, 0x68, 0x00, 0x6a, 0x00, 0x28,
+ 0x13, 0xd1, 0xf8, 0xf7, 0xbf, 0xfc, 0x00, 0x28,
+ 0x08, 0xd0, 0x21, 0x68, 0x01, 0x20, 0x08, 0x62,
+ 0x1f, 0x21, 0x00, 0x22, 0x83, 0x20, 0x00, 0xf0,
+ 0x3c, 0x00, 0x70, 0x34, 0x01, 0x00, 0x9f, 0xf9,
+ 0x02, 0xe0, 0x60, 0x68, 0xf8, 0xf7, 0x21, 0xfa,
+ 0xff, 0xf7, 0x97, 0xfc, 0x21, 0x68, 0x08, 0x61,
+ 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0xfe, 0xb5,
+ 0x1b, 0x4e, 0x0f, 0x1c, 0x1d, 0x1c, 0x14, 0x1c,
+ 0xb0, 0x60, 0x08, 0x1c, 0xf7, 0xf7, 0x2b, 0xff,
+ 0xb0, 0x80, 0x34, 0x73, 0x35, 0x62, 0x38, 0x1c,
+ 0x01, 0xaa, 0x02, 0xa9, 0xf7, 0xf7, 0x25, 0xff,
+ 0x00, 0xab, 0x3c, 0x00, 0xac, 0x34, 0x01, 0x00,
+ 0x18, 0x7a, 0x01, 0x28, 0x18, 0xd1, 0x18, 0x79,
+ 0x0b, 0x28, 0x08, 0xd1, 0x30, 0x7f, 0x24, 0x23,
+ 0x0f, 0x49, 0x58, 0x43, 0x40, 0x18, 0x80, 0x68,
+ 0xec, 0xf7, 0x88, 0xff, 0xfe, 0xbd, 0x00, 0xab,
+ 0x18, 0x79, 0x0a, 0x28, 0x08, 0xd1, 0xf7, 0xf7,
+ 0x39, 0xfd, 0x07, 0x1c, 0x29, 0x1c, 0x20, 0x1c,
+ 0xf7, 0xf7, 0x16, 0xfd, 0x38, 0x18, 0xb0, 0x80,
+ 0x30, 0x7f, 0x24, 0x23, 0x3c, 0x00, 0xe8, 0x34,
+ 0x01, 0x00, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x40, 0x68, 0xec, 0xf7, 0x72, 0xff, 0xe8, 0xe7,
+ 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46,
+ 0x01, 0x00, 0xb0, 0xb5, 0xff, 0xf7, 0x53, 0xfc,
+ 0x04, 0x1c, 0xfb, 0xf7, 0xfc, 0xfa, 0x0c, 0x4d,
+ 0x29, 0x68, 0x09, 0x69, 0x09, 0x1b, 0x0c, 0x1a,
+ 0x02, 0x21, 0x1f, 0x20, 0x00, 0xf0, 0x8b, 0xf8,
+ 0x14, 0x2c, 0x06, 0xdd, 0x02, 0x22, 0x3c, 0x00,
+ 0x24, 0x35, 0x01, 0x00, 0x21, 0x1c, 0x1f, 0x20,
+ 0x00, 0xf0, 0x50, 0xf8, 0x01, 0x20, 0xb0, 0xbd,
+ 0x29, 0x68, 0x01, 0x20, 0x89, 0x6a, 0x00, 0x29,
+ 0xf9, 0xd0, 0x00, 0x20, 0xb0, 0xbd, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d,
+ 0x07, 0x1c, 0xae, 0x79, 0x01, 0x21, 0x19, 0x4c,
+ 0x00, 0x20, 0x22, 0x68, 0x00, 0x2a, 0x14, 0xd1,
+ 0xae, 0x71, 0xa2, 0x68, 0xd0, 0x68, 0x06, 0xca,
+ 0x3c, 0x00, 0x60, 0x35, 0x01, 0x00, 0xec, 0xf7,
+ 0x3c, 0xff, 0xae, 0x79, 0x00, 0x21, 0x13, 0x4a,
+ 0x50, 0x69, 0x01, 0x30, 0x50, 0x61, 0xa0, 0x68,
+ 0x80, 0x68, 0xa0, 0x60, 0x62, 0x68, 0x90, 0x42,
+ 0x06, 0xd1, 0x01, 0x20, 0x20, 0x60, 0x03, 0xe0,
+ 0x01, 0x30, 0x0c, 0x34, 0x03, 0x28, 0xe3, 0xdb,
+ 0x00, 0x2f, 0x08, 0xd1, 0x00, 0x29, 0x0a, 0xd0,
+ 0x0a, 0x48, 0x40, 0x68, 0x00, 0x28, 0x06, 0xd0,
+ 0xfa, 0xf7, 0x3c, 0x00, 0x9c, 0x35, 0x01, 0x00,
+ 0xf5, 0xff, 0x03, 0xe0, 0x01, 0x2f, 0x03, 0xd0,
+ 0x00, 0x29, 0x01, 0xd1, 0xae, 0x71, 0xce, 0xe7,
+ 0xae, 0x71, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00,
+ 0x18, 0xd9, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00,
+ 0x70, 0x5d, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x23,
+ 0xf5, 0xf7, 0x7c, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x23, 0xf5, 0xf7, 0x76, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x35,
+ 0x01, 0x00, 0xf8, 0xb5, 0x13, 0x4b, 0x00, 0x24,
+ 0x1b, 0x88, 0x98, 0x42, 0x1b, 0xd2, 0x11, 0x4b,
+ 0xc0, 0x00, 0xc0, 0x18, 0x45, 0x68, 0x06, 0x68,
+ 0x28, 0x68, 0x00, 0x28, 0x17, 0xd1, 0x0e, 0x4f,
+ 0xa8, 0x68, 0x43, 0x68, 0xb3, 0x42, 0x09, 0xd1,
+ 0xc3, 0x68, 0x8b, 0x42, 0x06, 0xd1, 0x03, 0x68,
+ 0x93, 0x42, 0x01, 0xd0, 0x53, 0x1c, 0x01, 0xd1,
+ 0x01, 0x24, 0x47, 0x60, 0x80, 0x68, 0x3c, 0x00,
+ 0x14, 0x36, 0x01, 0x00, 0x6b, 0x68, 0x83, 0x42,
+ 0xee, 0xd1, 0x03, 0xe0, 0x01, 0x21, 0x80, 0x20,
+ 0xed, 0xf7, 0x40, 0xfe, 0x20, 0x1c, 0xf8, 0xbd,
+ 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00,
+ 0x29, 0xe3, 0x00, 0x00, 0xf8, 0xb5, 0x17, 0x4f,
+ 0x0a, 0x1c, 0xbe, 0x79, 0x16, 0x4d, 0x00, 0x23,
+ 0x6c, 0x68, 0x07, 0xe0, 0x21, 0x68, 0x91, 0x42,
+ 0x02, 0xd1, 0x21, 0x79, 0x81, 0x42, 0x04, 0xd0,
+ 0x3c, 0x00, 0x50, 0x36, 0x01, 0x00, 0x23, 0x1c,
+ 0xe4, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x17, 0xe0,
+ 0x00, 0x2c, 0x15, 0xd0, 0x00, 0x2b, 0x0d, 0xd1,
+ 0xe3, 0x68, 0x0d, 0x48, 0x6b, 0x60, 0x00, 0x88,
+ 0x00, 0x2b, 0x02, 0xd1, 0xff, 0xf7, 0xd1, 0xfb,
+ 0x06, 0xe0, 0x0a, 0x4a, 0x99, 0x68, 0xff, 0xf7,
+ 0xf6, 0xfb, 0x01, 0xe0, 0xe0, 0x68, 0xd8, 0x60,
+ 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0x02, 0xe0,
+ 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x36, 0x01, 0x00,
+ 0xff, 0xf7, 0xa4, 0xff, 0xbe, 0x71, 0xf8, 0xbd,
+ 0x20, 0x10, 0x07, 0x00, 0x7c, 0x5d, 0x01, 0x00,
+ 0x2c, 0x74, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00,
+ 0x70, 0xb5, 0x09, 0x4e, 0xb5, 0x79, 0xf9, 0xf7,
+ 0xaf, 0xfe, 0x04, 0x1c, 0x09, 0xd0, 0x20, 0x1c,
+ 0xed, 0xf7, 0x0c, 0xfb, 0x05, 0x49, 0x8a, 0x68,
+ 0x80, 0x18, 0x88, 0x60, 0x08, 0x68, 0x01, 0x30,
+ 0x08, 0x60, 0xb5, 0x71, 0x3c, 0x00, 0xc8, 0x36,
+ 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, 0x20, 0x10,
+ 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, 0x09, 0x48,
+ 0x80, 0xb5, 0x40, 0x68, 0x02, 0x1c, 0x0b, 0xe0,
+ 0x01, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x82, 0x42,
+ 0x04, 0xd0, 0x81, 0x68, 0x05, 0x48, 0x00, 0x88,
+ 0xff, 0xf7, 0xe5, 0xfa, 0x80, 0xbd, 0xc0, 0x68,
+ 0x00, 0x28, 0xf1, 0xd1, 0x80, 0xbd, 0x7c, 0x5d,
+ 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, 0x3c, 0x00,
+ 0x04, 0x37, 0x01, 0x00, 0x05, 0x48, 0x80, 0xb5,
+ 0x42, 0x68, 0x00, 0x2a, 0x04, 0xd0, 0x04, 0x48,
+ 0x00, 0x88, 0x91, 0x68, 0xff, 0xf7, 0xd2, 0xfa,
+ 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x5d, 0x01, 0x00,
+ 0x2c, 0x74, 0x01, 0x00, 0x05, 0x48, 0x01, 0x68,
+ 0x00, 0x29, 0x04, 0xd0, 0xc0, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x18, 0xd9, 0x01, 0x00,
+ 0x3c, 0x00, 0x40, 0x37, 0x01, 0x00, 0x80, 0xb5,
+ 0xf6, 0xf7, 0xd1, 0xfa, 0x80, 0xbd, 0x13, 0x1c,
+ 0x0d, 0x4a, 0xb0, 0xb5, 0x12, 0x88, 0x90, 0x42,
+ 0x0f, 0xd2, 0x03, 0x29, 0x0d, 0xd2, 0x0a, 0x4a,
+ 0xc0, 0x00, 0x14, 0x58, 0x0a, 0x4d, 0xac, 0x42,
+ 0x07, 0xd1, 0x13, 0x50, 0x0c, 0x23, 0x59, 0x43,
+ 0x08, 0x4b, 0xc9, 0x18, 0x80, 0x18, 0x41, 0x60,
+ 0xb0, 0xbd, 0x02, 0x21, 0x80, 0x20, 0xed, 0xf7,
+ 0x94, 0xfd, 0x3c, 0x00, 0x7c, 0x37, 0x01, 0x00,
+ 0xb0, 0xbd, 0x00, 0x00, 0x56, 0x57, 0x01, 0x00,
+ 0x84, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00,
+ 0x18, 0xd9, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c,
+ 0x1e, 0x1c, 0x15, 0x1c, 0x04, 0x1c, 0x11, 0x1c,
+ 0xff, 0xf7, 0x4a, 0xff, 0x33, 0x1c, 0x2a, 0x1c,
+ 0x39, 0x1c, 0x20, 0x1c, 0xf4, 0xf7, 0x8a, 0xff,
+ 0xf8, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x94, 0x46,
+ 0xff, 0x29, 0x21, 0xd0, 0x3c, 0x00, 0xb8, 0x37,
+ 0x01, 0x00, 0x15, 0x48, 0x00, 0x88, 0x81, 0x42,
+ 0x21, 0xd2, 0x14, 0x4a, 0x15, 0x4e, 0xc8, 0x00,
+ 0x85, 0x18, 0xb4, 0x79, 0x68, 0x68, 0x02, 0x68,
+ 0x00, 0x2a, 0x03, 0xd1, 0x03, 0x1d, 0x0c, 0xcb,
+ 0x9a, 0x42, 0x11, 0xd0, 0x43, 0x68, 0x9a, 0x68,
+ 0x42, 0x60, 0x0e, 0x4a, 0x17, 0x69, 0x01, 0x37,
+ 0x17, 0x61, 0xb4, 0x71, 0x00, 0x22, 0x02, 0x60,
+ 0x00, 0x98, 0xd8, 0x60, 0x60, 0x46, 0x3c, 0x00,
+ 0xf4, 0x37, 0x01, 0x00, 0x18, 0x60, 0x19, 0x74,
+ 0x28, 0x68, 0x58, 0x60, 0xfe, 0xbd, 0xb4, 0x71,
+ 0x06, 0x21, 0x00, 0xe0, 0x07, 0x21, 0x80, 0x20,
+ 0xed, 0xf7, 0x4c, 0xfd, 0xf6, 0xe7, 0x00, 0x00,
+ 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00,
+ 0x20, 0x10, 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00,
+ 0xb0, 0xb5, 0x14, 0x4d, 0x6c, 0x68, 0x00, 0x2c,
+ 0x01, 0xd0, 0x84, 0x42, 0x04, 0xd0, 0x0c, 0x21,
+ 0x3c, 0x00, 0x30, 0x38, 0x01, 0x00, 0x80, 0x20,
+ 0xed, 0xf7, 0x37, 0xfd, 0xb0, 0xbd, 0xff, 0xf7,
+ 0xb8, 0xfa, 0xa1, 0x68, 0x40, 0x1a, 0x0d, 0x49,
+ 0x88, 0x42, 0x03, 0xda, 0x10, 0x21, 0x80, 0x20,
+ 0xed, 0xf7, 0x2b, 0xfd, 0x21, 0x79, 0x22, 0x68,
+ 0x01, 0x20, 0xff, 0xf7, 0xac, 0xff, 0xe3, 0x68,
+ 0x6b, 0x60, 0x00, 0x2b, 0x05, 0xd0, 0x07, 0x48,
+ 0x06, 0x4a, 0x00, 0x88, 0x99, 0x68, 0xff, 0xf7,
+ 0xfe, 0xfa, 0x3c, 0x00, 0x6c, 0x38, 0x01, 0x00,
+ 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0xb0, 0xbd,
+ 0x7c, 0x5d, 0x01, 0x00, 0x18, 0xfc, 0xff, 0xff,
+ 0x21, 0x38, 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00,
+ 0xb0, 0xb5, 0x15, 0x4c, 0x08, 0x20, 0x21, 0x1c,
+ 0x80, 0x31, 0x08, 0x70, 0x13, 0x4a, 0x41, 0x04,
+ 0x11, 0x60, 0x13, 0x48, 0x00, 0x68, 0x13, 0x4d,
+ 0x6b, 0x69, 0x18, 0x40, 0x01, 0xd1, 0x10, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0xa8, 0x38,
+ 0x01, 0x00, 0xa8, 0x23, 0x5b, 0x5d, 0x18, 0x43,
+ 0x23, 0x1c, 0x40, 0x33, 0x18, 0x73, 0x51, 0x60,
+ 0x20, 0x78, 0x80, 0x08, 0x80, 0x00, 0x20, 0x70,
+ 0x00, 0x20, 0xff, 0xf7, 0x12, 0xfb, 0xff, 0xf7,
+ 0x72, 0xfa, 0x64, 0x30, 0x28, 0x66, 0x01, 0x38,
+ 0xa0, 0x61, 0x20, 0x78, 0x03, 0x21, 0x08, 0x43,
+ 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, 0x00, 0x90,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00,
+ 0xe4, 0x38, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0xa4, 0x6c, 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c,
+ 0x21, 0x1c, 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab,
+ 0x1a, 0x70, 0xc9, 0x79, 0x07, 0x4d, 0x59, 0x70,
+ 0x69, 0x78, 0x88, 0x42, 0x03, 0xd1, 0xf8, 0xf7,
+ 0x13, 0xfc, 0xff, 0x20, 0x68, 0x70, 0x00, 0xab,
+ 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x4c, 0x7b, 0x01, 0x00,
+ 0x3c, 0x00, 0x20, 0x39, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0b, 0x1c, 0x06, 0x1c, 0x04, 0x1d, 0x7f, 0x33,
+ 0x14, 0xd0, 0x33, 0x68, 0x5d, 0x18, 0x35, 0x60,
+ 0x23, 0x88, 0x1f, 0x18, 0x06, 0x23, 0xff, 0x56,
+ 0xeb, 0x1b, 0x33, 0x60, 0x23, 0x88, 0x18, 0x18,
+ 0x81, 0x71, 0x20, 0x88, 0x01, 0x30, 0x00, 0x04,
+ 0x00, 0x0c, 0x20, 0x80, 0x90, 0x42, 0x01, 0xd3,
+ 0x00, 0x20, 0x20, 0x80, 0x10, 0x1c, 0x31, 0x68,
+ 0xec, 0xf7, 0x3c, 0x00, 0x5c, 0x39, 0x01, 0x00,
+ 0x6d, 0xfe, 0xf8, 0xbd, 0x0e, 0x49, 0x0a, 0x7c,
+ 0x83, 0x78, 0x1a, 0x43, 0x0a, 0x74, 0x42, 0x78,
+ 0x83, 0x78, 0x9a, 0x43, 0x0b, 0x7c, 0x93, 0x43,
+ 0x0b, 0x74, 0x8a, 0x7c, 0x43, 0x78, 0x1a, 0x43,
+ 0x8a, 0x74, 0x8a, 0x7c, 0x03, 0x78, 0x9a, 0x43,
+ 0x8a, 0x74, 0x02, 0x78, 0x43, 0x78, 0x1a, 0x43,
+ 0x4b, 0x7c, 0x1a, 0x43, 0x4a, 0x74, 0x4a, 0x7c,
+ 0xc0, 0x78, 0x82, 0x43, 0x3c, 0x00, 0x98, 0x39,
+ 0x01, 0x00, 0x4a, 0x74, 0x70, 0x47, 0x10, 0x00,
+ 0x07, 0x00, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24,
+ 0x20, 0x06, 0x00, 0x0e, 0xed, 0xf7, 0xf7, 0xf8,
+ 0xa1, 0x00, 0x69, 0x58, 0x08, 0x71, 0x01, 0x34,
+ 0x04, 0x2c, 0xf5, 0xdb, 0xb0, 0xbd, 0x10, 0x7b,
+ 0x01, 0x00, 0x0b, 0x48, 0x0c, 0x49, 0x7d, 0x23,
+ 0x42, 0x69, 0xdb, 0x00, 0x00, 0x2a, 0xc8, 0x6b,
+ 0x07, 0xd0, 0xc0, 0x18, 0x1a, 0x01, 0x3c, 0x00,
+ 0xd4, 0x39, 0x01, 0x00, 0x90, 0x42, 0xc8, 0x63,
+ 0x01, 0xd9, 0x07, 0x48, 0xc8, 0x63, 0x70, 0x47,
+ 0xff, 0x38, 0xf5, 0x38, 0xc8, 0x63, 0x98, 0x42,
+ 0xf9, 0xd2, 0xcb, 0x63, 0x70, 0x47, 0x00, 0x00,
+ 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0x70, 0x17, 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x16, 0x1c, 0xfb, 0xf7, 0xf6, 0xfa,
+ 0xb0, 0x43, 0x28, 0x43, 0x01, 0x1c, 0x20, 0x1c,
+ 0x3c, 0x00, 0x10, 0x3a, 0x01, 0x00, 0x00, 0xf0,
+ 0xcc, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, 0x02, 0x29,
+ 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, 0xd2, 0x78,
+ 0x38, 0x30, 0xff, 0xf7, 0x78, 0xff, 0x06, 0x49,
+ 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, 0x12, 0x79,
+ 0x20, 0x30, 0xff, 0xf7, 0x70, 0xff, 0x03, 0x49,
+ 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x3a, 0x01, 0x00,
+ 0xc8, 0x67, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00,
+ 0x80, 0xb5, 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0,
+ 0x02, 0x29, 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48,
+ 0x52, 0x79, 0x68, 0x30, 0xff, 0xf7, 0x5a, 0xff,
+ 0x06, 0x49, 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48,
+ 0x92, 0x79, 0x50, 0x30, 0xff, 0xf7, 0x52, 0xff,
+ 0x03, 0x49, 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00,
+ 0xac, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3a,
+ 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, 0xcc, 0x67,
+ 0x01, 0x00, 0x08, 0xb5, 0x04, 0x21, 0x00, 0x91,
+ 0x81, 0x7e, 0x43, 0x68, 0x03, 0x29, 0x06, 0xd1,
+ 0x01, 0x1c, 0x0c, 0x31, 0x01, 0x20, 0x6a, 0x46,
+ 0xec, 0xf7, 0x9a, 0xfc, 0x08, 0xbd, 0x19, 0x68,
+ 0xc1, 0x60, 0xfb, 0xe7, 0x00, 0x00, 0x10, 0xb5,
+ 0x03, 0x1c, 0x00, 0x20, 0x08, 0x4c, 0x00, 0x21,
+ 0xca, 0x00, 0x12, 0x19, 0x92, 0x78, 0x3c, 0x00,
+ 0xc4, 0x3a, 0x01, 0x00, 0x9a, 0x42, 0x03, 0xd1,
+ 0xc8, 0x00, 0x00, 0x19, 0x40, 0x68, 0x10, 0xbd,
+ 0x01, 0x31, 0x09, 0x06, 0x09, 0x16, 0x06, 0x29,
+ 0xf1, 0xdb, 0x10, 0xbd, 0xcc, 0x5a, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0f, 0x1c, 0x16, 0x1c, 0x00, 0x25,
+ 0xfe, 0xf7, 0x8e, 0xf9, 0x04, 0x1c, 0x0a, 0xd0,
+ 0x4a, 0x20, 0x00, 0x5d, 0x05, 0x28, 0x06, 0xd1,
+ 0x38, 0x1c, 0xf1, 0xf7, 0x81, 0xfe, 0x00, 0x28,
+ 0x3c, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x01, 0xd0,
+ 0x01, 0x25, 0x34, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x16, 0x1c,
+ 0x00, 0x24, 0xfe, 0xf7, 0x78, 0xf9, 0x00, 0x28,
+ 0x0b, 0xd0, 0x4a, 0x21, 0x09, 0x5c, 0x05, 0x29,
+ 0x07, 0xd1, 0x01, 0x69, 0x00, 0x29, 0x04, 0xd1,
+ 0x30, 0x60, 0xf1, 0xf7, 0x04, 0xfd, 0x01, 0x24,
+ 0x28, 0x60, 0x20, 0x1c, 0x70, 0xbd, 0xf8, 0xb5,
+ 0x06, 0x1c, 0x3c, 0x00, 0x3c, 0x3b, 0x01, 0x00,
+ 0x00, 0x25, 0x0c, 0x1c, 0x08, 0x1c, 0xf1, 0xf7,
+ 0x5d, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x21,
+ 0x05, 0xe0, 0x20, 0x1c, 0xf1, 0xf7, 0x74, 0xfe,
+ 0x00, 0x28, 0x14, 0xd0, 0x01, 0x21, 0x30, 0x1c,
+ 0xf4, 0xf7, 0x80, 0xfb, 0x00, 0x90, 0x00, 0x28,
+ 0x0d, 0xd0, 0x08, 0x4f, 0x01, 0x25, 0x06, 0x22,
+ 0x31, 0x1c, 0x38, 0x1c, 0xec, 0xf7, 0xc2, 0xfc,
+ 0x06, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x78, 0x3b,
+ 0x01, 0x00, 0xb8, 0x18, 0xec, 0xf7, 0xbd, 0xfc,
+ 0x00, 0x98, 0xf8, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x00, 0x21,
+ 0x00, 0x28, 0x06, 0xd0, 0x42, 0x78, 0x07, 0x2a,
+ 0x03, 0xd1, 0xc0, 0x79, 0x01, 0x28, 0x00, 0xd1,
+ 0x01, 0x21, 0x08, 0x1c, 0x70, 0x47, 0xf8, 0xb5,
+ 0x05, 0x1c, 0x00, 0x27, 0x16, 0x4e, 0xf1, 0xf7,
+ 0x28, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00,
+ 0xb4, 0x3b, 0x01, 0x00, 0xf1, 0xf7, 0xc0, 0xfb,
+ 0x00, 0x28, 0x10, 0xd1, 0x00, 0x24, 0xf1, 0xf7,
+ 0xbb, 0xfc, 0x06, 0xe0, 0xf1, 0xf7, 0x02, 0xfe,
+ 0x00, 0x28, 0x08, 0xd0, 0x01, 0x24, 0xf1, 0xf7,
+ 0x99, 0xfd, 0x01, 0x1c, 0x06, 0x22, 0x30, 0x1c,
+ 0xec, 0xf7, 0x8e, 0xfc, 0x01, 0x27, 0x00, 0x2f,
+ 0x0d, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0xf4, 0xf7,
+ 0x3b, 0xfb, 0x01, 0x1c, 0x05, 0x48, 0x06, 0x22,
+ 0x3c, 0x00, 0xf0, 0x3b, 0x01, 0x00, 0x06, 0x38,
+ 0xc1, 0x60, 0x29, 0x1c, 0xec, 0xf7, 0x7f, 0xfc,
+ 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7,
+ 0x00, 0x00, 0x76, 0x7c, 0x01, 0x00, 0xf0, 0xb5,
+ 0x07, 0x1c, 0x00, 0x68, 0x02, 0x21, 0x04, 0x68,
+ 0x78, 0x69, 0x87, 0xb0, 0x01, 0x40, 0x00, 0x25,
+ 0x00, 0x29, 0x05, 0x91, 0x74, 0x4e, 0x12, 0xd0,
+ 0x22, 0x88, 0x01, 0x21, 0x13, 0x05, 0x02, 0xd4,
+ 0xc0, 0x07, 0x3c, 0x00, 0x2c, 0x3c, 0x01, 0x00,
+ 0xc1, 0x17, 0x01, 0x31, 0x6f, 0x48, 0x00, 0x29,
+ 0x00, 0x68, 0x01, 0xd0, 0x01, 0x30, 0x04, 0xe0,
+ 0x11, 0x06, 0x89, 0x0e, 0x2d, 0x29, 0x01, 0xd1,
+ 0x03, 0x30, 0x30, 0x60, 0x20, 0x88, 0x80, 0x07,
+ 0x67, 0xd1, 0x78, 0x69, 0xc0, 0x07, 0x64, 0xd5,
+ 0x03, 0xaa, 0x04, 0xa9, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x4b, 0xfb, 0x00, 0xab, 0x18, 0x7c, 0x00, 0x28,
+ 0x07, 0xd0, 0x18, 0x7c, 0x3c, 0x00, 0x68, 0x3c,
+ 0x01, 0x00, 0x02, 0x28, 0x58, 0xd1, 0x18, 0x7b,
+ 0x40, 0x07, 0x40, 0x0f, 0x04, 0x28, 0x53, 0xd8,
+ 0x20, 0x79, 0x05, 0x99, 0xc0, 0x07, 0xc0, 0x17,
+ 0x01, 0x30, 0x02, 0x90, 0x00, 0x29, 0x02, 0xd1,
+ 0x02, 0x98, 0x00, 0x28, 0x48, 0xd1, 0x05, 0x99,
+ 0x00, 0x29, 0x04, 0xd0, 0x20, 0x88, 0x00, 0x05,
+ 0x01, 0xd4, 0x00, 0x20, 0x30, 0x60, 0xc0, 0x20,
+ 0xed, 0xf7, 0xcb, 0xfd, 0x05, 0x1c, 0x3c, 0x00,
+ 0xa4, 0x3c, 0x01, 0x00, 0x20, 0x1c, 0x0a, 0x30,
+ 0x06, 0x90, 0xfe, 0xf7, 0xad, 0xf8, 0x06, 0x1c,
+ 0x28, 0x1c, 0x08, 0x30, 0x23, 0x88, 0x02, 0x1d,
+ 0x11, 0x1d, 0xdb, 0x05, 0x06, 0xd5, 0x06, 0x9b,
+ 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, 0x10, 0x60,
+ 0x20, 0x1d, 0x0e, 0xe0, 0x23, 0x1d, 0x13, 0x60,
+ 0x22, 0x88, 0x92, 0x05, 0x05, 0xd5, 0x22, 0x1c,
+ 0x10, 0x32, 0x02, 0x60, 0x06, 0x9b, 0x0b, 0x60,
+ 0x3c, 0x00, 0xe0, 0x3c, 0x01, 0x00, 0x04, 0xe0,
+ 0x06, 0x9b, 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30,
+ 0x08, 0x60, 0x28, 0x69, 0xf1, 0xf7, 0x43, 0xfc,
+ 0x00, 0x28, 0x08, 0xd0, 0x01, 0x28, 0x12, 0xd0,
+ 0x02, 0x28, 0x58, 0xd1, 0x00, 0xab, 0x18, 0x7c,
+ 0x00, 0x28, 0x54, 0xd1, 0x12, 0xe0, 0x00, 0xab,
+ 0x18, 0x7c, 0x02, 0x28, 0x0b, 0xd1, 0x00, 0x2e,
+ 0x4d, 0xd0, 0x4b, 0x20, 0x80, 0x5d, 0x02, 0x28,
+ 0x49, 0xd1, 0x3c, 0x00, 0x1c, 0x3d, 0x01, 0x00,
+ 0x07, 0xe0, 0x63, 0xe0, 0x00, 0xab, 0x18, 0x7c,
+ 0x00, 0x28, 0x02, 0xd1, 0x38, 0x1c, 0xfe, 0xf7,
+ 0x1b, 0xff, 0x20, 0x88, 0x41, 0x04, 0x30, 0x48,
+ 0x11, 0xd5, 0x00, 0x2e, 0x52, 0xd0, 0x00, 0xab,
+ 0x19, 0x7c, 0x00, 0x29, 0x26, 0xd0, 0x02, 0x99,
+ 0x00, 0x29, 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78,
+ 0x00, 0xe0, 0x00, 0x78, 0x01, 0x28, 0x1d, 0xd0,
+ 0x03, 0x28, 0x43, 0xd1, 0x3c, 0x00, 0x58, 0x3d,
+ 0x01, 0x00, 0x1a, 0xe0, 0x00, 0xab, 0x19, 0x7c,
+ 0x02, 0x29, 0x16, 0xd1, 0x19, 0x7b, 0x04, 0x29,
+ 0x13, 0xd0, 0x19, 0x7b, 0x0c, 0x29, 0x10, 0xd0,
+ 0x22, 0x49, 0x09, 0x68, 0x00, 0x29, 0x0c, 0xd0,
+ 0x00, 0x2e, 0x0a, 0xd0, 0x02, 0x99, 0x00, 0x29,
+ 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, 0x00, 0xe0,
+ 0x00, 0x78, 0x01, 0x28, 0x29, 0xd0, 0x03, 0x28,
+ 0x27, 0xd0, 0x28, 0x22, 0x39, 0x1c, 0x3c, 0x00,
+ 0x94, 0x3d, 0x01, 0x00, 0x28, 0x1c, 0x88, 0x30,
+ 0xec, 0xf7, 0x0a, 0xfc, 0x00, 0xab, 0x19, 0x7c,
+ 0x28, 0x1c, 0x80, 0x30, 0x01, 0x71, 0x19, 0x7b,
+ 0x41, 0x71, 0x6c, 0x60, 0x6e, 0x61, 0x1b, 0xe0,
+ 0x05, 0x99, 0x00, 0x29, 0x14, 0xd0, 0x11, 0x48,
+ 0x84, 0x6c, 0x00, 0x2c, 0x10, 0xd0, 0x00, 0x22,
+ 0x00, 0x2e, 0x04, 0xd0, 0x40, 0x36, 0xb0, 0x7a,
+ 0x05, 0x28, 0x00, 0xd1, 0x01, 0x22, 0x00, 0x92,
+ 0x3c, 0x00, 0xd0, 0x3d, 0x01, 0x00, 0xf8, 0x7a,
+ 0xba, 0x7a, 0x29, 0x69, 0xc3, 0x07, 0xdb, 0x0f,
+ 0x06, 0x98, 0xec, 0xf7, 0x00, 0xfb, 0x28, 0x1c,
+ 0xed, 0xf7, 0x07, 0xfd, 0x00, 0x25, 0x28, 0x1c,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc4, 0x6a,
+ 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, 0x28, 0x61,
+ 0x01, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x20, 0xff, 0xf7, 0x70, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x3e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x1d, 0x4d, 0x01, 0x28, 0x17, 0xd0,
+ 0xa2, 0x28, 0x06, 0xd0, 0xa3, 0x28, 0x03, 0xd1,
+ 0x01, 0x21, 0x15, 0x20, 0xff, 0xf7, 0x08, 0xfc,
+ 0xb0, 0xbd, 0x00, 0x29, 0x01, 0xd1, 0x17, 0x48,
+ 0x02, 0xe0, 0x7d, 0x20, 0xc0, 0x00, 0x48, 0x43,
+ 0x00, 0x23, 0x01, 0x22, 0x01, 0x1c, 0x28, 0x60,
+ 0x15, 0x20, 0xff, 0xf7, 0xa7, 0xfc, 0xb0, 0xbd,
+ 0x01, 0x29, 0x04, 0xd0, 0x3c, 0x00, 0x48, 0x3e,
+ 0x01, 0x00, 0x02, 0x29, 0xfa, 0xd1, 0x00, 0xf0,
+ 0x2a, 0xf8, 0xb0, 0xbd, 0x6c, 0x68, 0xf5, 0xf7,
+ 0xde, 0xfc, 0xfe, 0xf7, 0xa8, 0xff, 0x68, 0x60,
+ 0x00, 0x2c, 0x09, 0xd0, 0x29, 0x68, 0x0a, 0x23,
+ 0x59, 0x43, 0x00, 0x1b, 0x88, 0x42, 0x03, 0xd9,
+ 0x01, 0x21, 0x15, 0x20, 0xed, 0xf7, 0x17, 0xfa,
+ 0x01, 0x22, 0x15, 0x20, 0x29, 0x68, 0xff, 0xf7,
+ 0xa6, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x84, 0x3e, 0x01, 0x00, 0x04, 0x79, 0x01, 0x00,
+ 0x00, 0x87, 0x93, 0x03, 0x01, 0x20, 0x04, 0x49,
+ 0x40, 0x03, 0x80, 0xb5, 0x08, 0x60, 0x03, 0x21,
+ 0x15, 0x20, 0xed, 0xf7, 0x03, 0xfa, 0x80, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0x07, 0x48, 0x80, 0xb5,
+ 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x10, 0x22,
+ 0x11, 0x43, 0x01, 0x72, 0x00, 0x23, 0x02, 0x22,
+ 0x15, 0x20, 0x03, 0x49, 0xff, 0xf7, 0x68, 0xfc,
+ 0x3c, 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x80, 0xbd,
+ 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x80, 0x9f,
+ 0xd5, 0x00, 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0,
+ 0x0a, 0x1c, 0x15, 0x21, 0xa2, 0x20, 0x02, 0xe0,
+ 0x00, 0x22, 0x15, 0x21, 0xa3, 0x20, 0xff, 0xf7,
+ 0x66, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5,
+ 0x00, 0xf0, 0x19, 0xf8, 0x0a, 0x48, 0xbe, 0x21,
+ 0x01, 0x73, 0x03, 0x7a, 0x10, 0x22, 0x93, 0x43,
+ 0x01, 0x24, 0x3c, 0x00, 0xfc, 0x3e, 0x01, 0x00,
+ 0x23, 0x43, 0x03, 0x72, 0x01, 0x73, 0x01, 0x7a,
+ 0x91, 0x43, 0x20, 0x22, 0x11, 0x43, 0x01, 0x72,
+ 0x02, 0x22, 0x15, 0x20, 0x02, 0x49, 0xff, 0xf7,
+ 0x5b, 0xfb, 0x10, 0xbd, 0x00, 0x03, 0x07, 0x00,
+ 0x80, 0x9f, 0xd5, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x15, 0x20, 0xff, 0xf7, 0x85, 0xfb, 0x04, 0x48,
+ 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x11, 0x22,
+ 0x91, 0x43, 0x01, 0x72, 0x3c, 0x00, 0x38, 0x3f,
+ 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x05, 0x1c,
+ 0x60, 0x36, 0x00, 0x27, 0x44, 0x68, 0x22, 0xe0,
+ 0x08, 0x21, 0x00, 0x20, 0xed, 0xf7, 0x41, 0xfb,
+ 0x60, 0x61, 0x01, 0x89, 0x04, 0x39, 0x09, 0x04,
+ 0x09, 0x0c, 0x01, 0x81, 0x60, 0x69, 0x00, 0x68,
+ 0x40, 0x18, 0x04, 0x21, 0xed, 0xf7, 0x35, 0xfb,
+ 0xe0, 0x61, 0x60, 0x69, 0x71, 0x7b, 0x3c, 0x00,
+ 0x74, 0x3f, 0x01, 0x00, 0x00, 0x68, 0x89, 0x01,
+ 0xc1, 0x70, 0x29, 0x69, 0x0c, 0x31, 0x03, 0x22,
+ 0xec, 0xf7, 0xba, 0xfa, 0x28, 0x69, 0x0c, 0x30,
+ 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x25, 0x62,
+ 0xa7, 0x61, 0x24, 0x68, 0x00, 0x2c, 0xda, 0xd1,
+ 0x02, 0x49, 0x03, 0x48, 0x6a, 0x68, 0xf6, 0xf7,
+ 0xb3, 0xf8, 0xf8, 0xbd, 0xfd, 0x6b, 0x00, 0x00,
+ 0xa0, 0x6a, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x07,
+ 0x3c, 0x00, 0xb0, 0x3f, 0x01, 0x00, 0x00, 0x09,
+ 0x09, 0x02, 0x09, 0x0a, 0x08, 0x43, 0x02, 0x49,
+ 0x08, 0x60, 0xff, 0xf7, 0x20, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x08, 0x00,
+ 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03,
+ 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0xc8, 0x00,
+ 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x1c, 0x00,
+ 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03,
+ 0x00, 0x00, 0x3c, 0x00, 0xec, 0x3f, 0x01, 0x00,
+ 0x24, 0x01, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00,
+ 0xe8, 0x03, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x41, 0x6e, 0x62, 0x69, 0x7e, 0x64, 0x61, 0x6f,
+ 0x6f, 0x00, 0x00, 0x00, 0x52, 0x65, 0x6c, 0x65,
+ 0x61, 0x73, 0x65, 0x20, 0x36, 0x5f, 0x37, 0x5f,
+ 0x31, 0x35, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64,
+ 0x20, 0x32, 0x3a, 0x35, 0x3c, 0x00, 0x28, 0x40,
+ 0x01, 0x00, 0x32, 0x39, 0x38, 0x20, 0x53, 0x65,
+ 0x70, 0x20, 0x30, 0x34, 0x20, 0x32, 0x30, 0x30,
+ 0x39, 0x20, 0x31, 0x37, 0x3a, 0x31, 0x33, 0x3a,
+ 0x32, 0x30, 0x20, 0x28, 0x48, 0x57, 0x3d, 0x34,
+ 0x3a, 0x33, 0x2c, 0x42, 0x54, 0x43, 0x4f, 0x45,
+ 0x58, 0x29, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00,
+ 0x1c, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c, 0x00,
+ 0x64, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x70, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0xd0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x7c, 0x15, 0x15, 0x00,
+ 0x3c, 0x00, 0xa0, 0x40, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x70, 0x17,
+ 0x1e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x00, 0x28, 0x23, 0x16, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x2a,
+ 0x0b, 0x00, 0x3c, 0x00, 0xdc, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0xe0, 0x2e, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x50, 0x46, 0x0e, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
+ 0xf0, 0x55, 0x08, 0x00, 0x3c, 0x00, 0x18, 0x41,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00,
+ 0x00, 0x00, 0xc0, 0x5d, 0x0e, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe8, 0x80,
+ 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00,
+ 0x00, 0x00, 0xa0, 0x8c, 0x0a, 0x00, 0x3c, 0x00,
+ 0x54, 0x41, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x00, 0x00, 0x80, 0xbb, 0x0a, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+ 0xf0, 0xd2, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x90, 0x00,
+ 0x3c, 0x00, 0x90, 0x41, 0x01, 0x00, 0xc0, 0x00,
+ 0x90, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0xc0, 0x00,
+ 0x90, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x60, 0x00,
+ 0x48, 0x00, 0x3c, 0x00, 0xcc, 0x41, 0x01, 0x00,
+ 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x60, 0x00, 0x48, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x02, 0x00, 0x04, 0x01, 0x0b, 0x02, 0x0c, 0x03,
+ 0x12, 0x04, 0x16, 0x05, 0x3c, 0x00, 0x08, 0x42,
+ 0x01, 0x00, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x0e,
+ 0x24, 0x07, 0x00, 0x0e, 0x2c, 0x08, 0x30, 0x09,
+ 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x42, 0x0a,
+ 0x00, 0x0e, 0x48, 0x0b, 0x00, 0x0e, 0x00, 0x0e,
+ 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x60, 0x0c,
+ 0x00, 0x0e, 0x00, 0x0e, 0x6c, 0x0d, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xc0, 0xff, 0xff, 0xff, 0x3c, 0x00,
+ 0x44, 0x42, 0x01, 0x00, 0xb6, 0xff, 0xff, 0xff,
+ 0xd3, 0xff, 0xff, 0xff, 0xc9, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 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, 0x51, 0xb0, 0x00, 0x00,
+ 0x0c, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00,
+ 0x0c, 0x00, 0x00, 0x00, 0x59, 0xaf, 0x00, 0x00,
+ 0x3c, 0x00, 0x80, 0x42, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa5, 0xaf, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x4d, 0xaf, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x45, 0xb0, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xd5, 0xaf, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xad, 0xb0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x42, 0x01, 0x00,
+ 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x99, 0xb0, 0x00, 0x00, 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, 0x3c, 0x00, 0xf8, 0x42,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x17,
+ 0x01, 0x00, 0x35, 0x17, 0x01, 0x00, 0x21, 0x17,
+ 0x01, 0x00, 0xd9, 0x9c, 0x00, 0x00, 0x49, 0x17,
+ 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0xd1, 0x9c,
+ 0x00, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x1d, 0x1a,
+ 0x01, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x01, 0x1a,
+ 0x01, 0x00, 0x31, 0x1a, 0x01, 0x00, 0x25, 0x1a,
+ 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0x3c, 0x00,
+ 0x34, 0x43, 0x01, 0x00, 0x81, 0x1a, 0x01, 0x00,
+ 0xd1, 0x9c, 0x00, 0x00, 0x79, 0x17, 0x01, 0x00,
+ 0xd9, 0x9c, 0x00, 0x00, 0x5d, 0x17, 0x01, 0x00,
+ 0xa1, 0x17, 0x01, 0x00, 0x95, 0x17, 0x01, 0x00,
+ 0x81, 0x17, 0x01, 0x00, 0x21, 0x18, 0x01, 0x00,
+ 0xf5, 0x17, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x70, 0x43, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x1c,
+ 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41,
+ 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x85, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x35, 0x1b,
+ 0x01, 0x00, 0x3c, 0x00, 0xac, 0x43, 0x01, 0x00,
+ 0x9d, 0x1b, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x00,
+ 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, 0x00, 0x00,
+ 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, 0x00, 0x00,
+ 0x65, 0x18, 0x01, 0x00, 0x29, 0x18, 0x01, 0x00,
+ 0x39, 0x18, 0x01, 0x00, 0xbd, 0x18, 0x01, 0x00,
+ 0x89, 0x41, 0x00, 0x00, 0x4d, 0x18, 0x01, 0x00,
+ 0xa5, 0x18, 0x01, 0x00, 0x85, 0x41, 0x00, 0x00,
+ 0x01, 0x19, 0x01, 0x00, 0x3c, 0x00, 0xe8, 0x43,
+ 0x01, 0x00, 0xd9, 0x18, 0x01, 0x00, 0xed, 0x18,
+ 0x01, 0x00, 0x15, 0x19, 0x01, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x69, 0x1c,
+ 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x71, 0x1c,
+ 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0xfd, 0xdb, 0x00, 0x00, 0x3c, 0x00,
+ 0x24, 0x44, 0x01, 0x00, 0x1d, 0x7c, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0xf5, 0xda, 0x00, 0x00,
+ 0x14, 0x00, 0x81, 0x00, 0xfd, 0xdd, 0x00, 0x00,
+ 0x08, 0x00, 0x82, 0x00, 0xc5, 0xdd, 0x00, 0x00,
+ 0x38, 0x00, 0x83, 0x00, 0x45, 0xdc, 0x00, 0x00,
+ 0x10, 0x00, 0x84, 0x00, 0x99, 0xdc, 0x00, 0x00,
+ 0x0c, 0x00, 0x86, 0x00, 0x39, 0xdc, 0x00, 0x00,
+ 0x10, 0x00, 0x88, 0x00, 0x11, 0xde, 0x00, 0x00,
+ 0x3c, 0x00, 0x60, 0x44, 0x01, 0x00, 0x10, 0x00,
+ 0x8a, 0x00, 0x35, 0xdd, 0x00, 0x00, 0x0c, 0x00,
+ 0x8c, 0x00, 0xad, 0xdf, 0x00, 0x00, 0x1c, 0x00,
+ 0x8e, 0x00, 0xc9, 0xde, 0x00, 0x00, 0x38, 0x00,
+ 0x8f, 0x00, 0xed, 0xdc, 0x00, 0x00, 0x38, 0x00,
+ 0x90, 0x00, 0x75, 0xdf, 0x00, 0x00, 0x0c, 0x00,
+ 0x91, 0x00, 0x8d, 0xdc, 0x00, 0x00, 0x0c, 0x00,
+ 0x93, 0x00, 0xb9, 0xdd, 0x00, 0x00, 0x0c, 0x00,
+ 0x94, 0x00, 0x3c, 0x00, 0x9c, 0x44, 0x01, 0x00,
+ 0x00, 0x08, 0x08, 0x08, 0x10, 0x0c, 0x0c, 0x0c,
+ 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x08,
+ 0x08, 0x08, 0x14, 0x08, 0x08, 0x14, 0x00, 0x30,
+ 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0xad, 0x30, 0x01, 0x00, 0x15, 0x30, 0x01, 0x00,
+ 0x20, 0x30, 0x07, 0x00, 0x30, 0x30, 0x07, 0x00,
+ 0x06, 0x07, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x44,
+ 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xc9, 0x02, 0x00, 0x94, 0x3f,
+ 0x03, 0x00, 0xe0, 0x8b, 0x5a, 0x00, 0x05, 0x3a,
+ 0x85, 0x00, 0xc8, 0xf2, 0x06, 0x00, 0xf8, 0x4c,
+ 0x56, 0x00, 0x20, 0xa7, 0x3d, 0x00, 0xb7, 0x4a,
+ 0x00, 0x00, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0x14, 0x45, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02,
+ 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+ 0x05, 0x06, 0x00, 0x00, 0x2d, 0x7c, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0x00, 0xfd, 0x95, 0x00, 0x00,
+ 0x08, 0x00, 0xff, 0x00, 0xed, 0x97, 0x00, 0x00,
+ 0x08, 0x00, 0x82, 0x00, 0xcd, 0x95, 0x00, 0x00,
+ 0x0c, 0x00, 0x83, 0x00, 0x4d, 0x96, 0x00, 0x00,
+ 0x0c, 0x00, 0x85, 0x00, 0x2d, 0x7c, 0x00, 0x00,
+ 0x3c, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x3d, 0x96, 0x00, 0x00, 0x0c, 0x00,
+ 0x89, 0x00, 0xd9, 0x97, 0x00, 0x00, 0x08, 0x00,
+ 0x8a, 0x00, 0x91, 0x95, 0x00, 0x00, 0x08, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x3c, 0x00, 0x8c, 0x45, 0x01, 0x00,
+ 0xf9, 0x97, 0x00, 0x00, 0x08, 0x00, 0x8d, 0x00,
+ 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
+ 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
+ 0xc9, 0x97, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00,
+ 0x11, 0x95, 0x00, 0x00, 0x18, 0x00, 0x91, 0x00,
+ 0x15, 0x96, 0x00, 0x00, 0x08, 0x00, 0x92, 0x00,
+ 0x59, 0x95, 0x00, 0x00, 0x3c, 0x00, 0x93, 0x00,
+ 0x29, 0x96, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x45,
+ 0x01, 0x00, 0x08, 0x00, 0x94, 0x00, 0xa1, 0x95,
+ 0x00, 0x00, 0x08, 0x00, 0x95, 0x00, 0x81, 0x97,
+ 0x00, 0x00, 0x0c, 0x00, 0x96, 0x00, 0x6d, 0x97,
+ 0x00, 0x00, 0x10, 0x00, 0x98, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10,
+ 0x08, 0x00, 0x00, 0x08, 0x00, 0x10, 0x3c, 0x00,
+ 0x04, 0x46, 0x01, 0x00, 0x08, 0x0c, 0x0c, 0x0c,
+ 0x0c, 0x1c, 0x0c, 0x0c, 0x08, 0x00, 0x00, 0x00,
+ 0x0d, 0x8b, 0x00, 0x00, 0xf5, 0x8a, 0x00, 0x00,
+ 0xe9, 0x8a, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00,
+ 0x14, 0x08, 0x0c, 0x0c, 0x10, 0x0c, 0x00, 0x00,
+ 0xb1, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x19, 0x99, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+ 0x3d, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x46, 0x01, 0x00, 0x3d, 0x99,
+ 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x09, 0x99,
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3d, 0x7c,
+ 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01,
+ 0x04, 0x04, 0x08, 0x08, 0x81, 0x37, 0x80, 0xf3,
+ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa,
+ 0x03, 0x00, 0x00, 0xf8, 0x6d, 0xa9, 0x6d, 0xa9,
+ 0x6e, 0xa9, 0x3c, 0x00, 0x7c, 0x46, 0x01, 0x00,
+ 0x6e, 0xa8, 0x6e, 0xa8, 0x6e, 0xa8, 0x6f, 0xa7,
+ 0x6f, 0xa7, 0x6f, 0xa7, 0x6f, 0xa6, 0x6f, 0xa6,
+ 0x70, 0xa6, 0x70, 0xa5, 0x70, 0xa4, 0x00, 0x00,
+ 0xb5, 0x1b, 0x01, 0x00, 0xc9, 0x1b, 0x01, 0x00,
+ 0xe1, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00,
+ 0xa5, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00,
+ 0x89, 0x1b, 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x46,
+ 0x01, 0x00, 0xd1, 0x1a, 0x01, 0x00, 0xe5, 0x1a,
+ 0x01, 0x00, 0x05, 0x1b, 0x01, 0x00, 0x25, 0x1b,
+ 0x01, 0x00, 0xb1, 0x1a, 0x01, 0x00, 0xe5, 0x9c,
+ 0x00, 0x00, 0x9d, 0x1a, 0x01, 0x00, 0xd5, 0x9c,
+ 0x00, 0x00, 0xc1, 0x1a, 0x01, 0x00, 0x89, 0x19,
+ 0x01, 0x00, 0xa9, 0x19, 0x01, 0x00, 0xc9, 0x19,
+ 0x01, 0x00, 0xf1, 0x19, 0x01, 0x00, 0x79, 0x19,
+ 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, 0x3c, 0x00,
+ 0xf4, 0x46, 0x01, 0x00, 0x65, 0x19, 0x01, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0x55, 0x1c, 0x01, 0x00,
+ 0x45, 0x1c, 0x01, 0x00, 0x45, 0x1c, 0x01, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0x3c, 0x00, 0x30, 0x47, 0x01, 0x00, 0xd5, 0x9c,
+ 0x00, 0x00, 0x55, 0x19, 0x01, 0x00, 0xe5, 0x9c,
+ 0x00, 0x00, 0x41, 0x19, 0x01, 0x00, 0x31, 0x19,
+ 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, 0x02, 0x05,
+ 0x0a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0a, 0x00,
+ 0x00, 0x00, 0xc5, 0x20, 0x00, 0x00, 0x21, 0x21,
+ 0x00, 0x00, 0x25, 0x21, 0x00, 0x00, 0x39, 0x21,
+ 0x00, 0x00, 0x49, 0x21, 0x00, 0x00, 0x55, 0x21,
+ 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x47, 0x01, 0x00,
+ 0x61, 0x21, 0x00, 0x00, 0xed, 0x21, 0x00, 0x00,
+ 0x0d, 0x22, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00,
+ 0x3d, 0x22, 0x00, 0x00, 0x49, 0x22, 0x00, 0x00,
+ 0xc5, 0x22, 0x00, 0x00, 0xe1, 0x22, 0x00, 0x00,
+ 0xf5, 0x22, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00,
+ 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00,
+ 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00,
+ 0x11, 0x23, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x47,
+ 0x01, 0x00, 0x1d, 0x23, 0x00, 0x00, 0x89, 0x23,
+ 0x00, 0x00, 0xa5, 0x23, 0x00, 0x00, 0xb9, 0x23,
+ 0x00, 0x00, 0x11, 0x20, 0x00, 0x00, 0x1d, 0x20,
+ 0x00, 0x00, 0x6d, 0x20, 0x00, 0x00, 0x8d, 0x20,
+ 0x00, 0x00, 0xb9, 0x20, 0x00, 0x00, 0x00, 0x01,
+ 0x02, 0x03, 0x03, 0x05, 0x06, 0x06, 0x08, 0x09,
+ 0x08, 0x09, 0x09, 0x09, 0xc4, 0x80, 0xca, 0x80,
+ 0x80, 0x80, 0x80, 0x80, 0xd0, 0x80, 0x3c, 0x00,
+ 0xe4, 0x47, 0x01, 0x00, 0xd6, 0xd9, 0xdc, 0xdf,
+ 0xe2, 0x80, 0x80, 0x80, 0xe5, 0xe8, 0x80, 0x80,
+ 0x80, 0x80, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa,
+ 0xfd, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
+ 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00,
+ 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00,
+ 0x13, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1b, 0x00,
+ 0x3c, 0x00, 0x20, 0x48, 0x01, 0x00, 0x1e, 0x00,
+ 0x22, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x30, 0x00,
+ 0x36, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x4c, 0x00,
+ 0x55, 0x00, 0x5f, 0x00, 0x6b, 0x00, 0x78, 0x00,
+ 0x86, 0x00, 0x97, 0x00, 0xa9, 0x00, 0xbe, 0x00,
+ 0xd5, 0x00, 0xef, 0x00, 0xff, 0x7f, 0x0c, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff,
+ 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff,
+ 0xf8, 0xff, 0x3c, 0x00, 0x5c, 0x48, 0x01, 0x00,
+ 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff,
+ 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff,
+ 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff,
+ 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff,
+ 0xe7, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff,
+ 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff,
+ 0xdf, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff,
+ 0xdc, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x48,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xb1, 0x7c, 0x41, 0x00, 0x11, 0x5a,
+ 0x40, 0xe2, 0xb2, 0x7c, 0x41, 0x00, 0x05, 0x5a,
+ 0x40, 0xe2, 0xaf, 0x7c, 0x41, 0x00, 0xf9, 0x59,
+ 0x40, 0xe2, 0xb0, 0x7c, 0x41, 0x00, 0xed, 0x59,
+ 0x40, 0xe2, 0x24, 0x67, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x5c, 0x67, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x0a, 0x61, 0x01, 0x00, 0x3c, 0x00,
+ 0xd4, 0x48, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x0e, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x32, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x6a, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x0b, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x0f, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x40, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x78, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x3c, 0x00, 0x10, 0x49, 0x01, 0x00, 0x0c, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x10, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x4e, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x86, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x0d, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x11, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0xc0, 0x48,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, 0xe0, 0x48,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x49, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x00, 0x49, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x20, 0x49, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x18, 0x67, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x28, 0x75, 0x01, 0x01,
+ 0x7d, 0xa9, 0x40, 0xe2, 0x2c, 0x75, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x20, 0x75, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x44, 0x75, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x88, 0x49,
+ 0x01, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x24, 0x75, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0xb8, 0x7c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x8d, 0xa9, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0xda, 0x1d, 0x75, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0xe2, 0xc4, 0x67, 0x01, 0x00, 0x3c, 0x00,
+ 0xc4, 0x49, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x59, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xd9,
+ 0xc8, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xcc, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xd0, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x65, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda,
+ 0xa5, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda,
+ 0x3c, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x01, 0x59,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x32, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x6a, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x11, 0x59,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x48,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xa0, 0x48,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x49,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x4a, 0x01, 0x00,
+ 0x05, 0x00, 0x00, 0x0a, 0x68, 0x49, 0x01, 0x00,
+ 0x09, 0x00, 0x00, 0x0a, 0x6c, 0x57, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x38, 0x61, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xac, 0x6e, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0xb0, 0x6e, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x70, 0x57, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x78, 0x4a,
+ 0x01, 0x00, 0xe8, 0x59, 0x01, 0x00, 0x08, 0x00,
+ 0x00, 0xe3, 0xdc, 0x58, 0x01, 0x14, 0x4d, 0xfd,
+ 0x40, 0xe3, 0x2c, 0x59, 0x01, 0x14, 0x39, 0xfd,
+ 0x40, 0xe3, 0xc0, 0x58, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x64, 0x73, 0x41, 0x00, 0x3d, 0x2e,
+ 0x44, 0xe2, 0x7c, 0x59, 0x01, 0x14, 0x3c, 0x00,
+ 0xb4, 0x4a, 0x01, 0x00, 0x9d, 0x2f, 0x44, 0xe3,
+ 0x5c, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe2,
+ 0x79, 0x2e, 0x04, 0x00, 0x01, 0x00, 0x00, 0xdb,
+ 0xa0, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3,
+ 0xa2, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3,
+ 0xa0, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0xd1, 0x88, 0x01, 0x00, 0x01, 0x00, 0x00, 0xda,
+ 0x1d, 0x89, 0x01, 0x00, 0x04, 0x00, 0x00, 0xda,
+ 0x3c, 0x00, 0xf0, 0x4a, 0x01, 0x00, 0x95, 0x88,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, 0x31, 0x2f,
+ 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0xc5, 0x2e,
+ 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0x68, 0x6c,
+ 0x01, 0x01, 0x15, 0xd5, 0x40, 0xe2, 0xc0, 0x57,
+ 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xc8, 0x57,
+ 0x01, 0x00, 0x34, 0x00, 0x00, 0xe3, 0x9c, 0x6c,
+ 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xb0, 0x58,
+ 0x01, 0x03, 0x3c, 0x00, 0x2c, 0x4b, 0x01, 0x00,
+ 0xe9, 0xd4, 0x40, 0xe2, 0xbc, 0x58, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x9d, 0xa3, 0x00, 0x00,
+ 0x60, 0x00, 0x00, 0xd9, 0x70, 0x79, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x78, 0x79, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x7c, 0x5a, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x5d, 0x1c, 0x00, 0x00,
+ 0x11, 0x00, 0x00, 0xd9, 0x24, 0x6e, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x68, 0x4b,
+ 0x01, 0x00, 0x18, 0x58, 0x01, 0x05, 0xd5, 0xd5,
+ 0x40, 0xe3, 0xfc, 0x57, 0x01, 0x00, 0x14, 0x00,
+ 0x00, 0xe3, 0x04, 0x8e, 0x01, 0x03, 0xe5, 0xd5,
+ 0x40, 0xe3, 0x00, 0x5b, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x18, 0x5b, 0x01, 0x00, 0x40, 0x00,
+ 0x00, 0xe2, 0xd4, 0x67, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x8d, 0x37, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0xdb, 0xbd, 0x36, 0x00, 0x00, 0x3c, 0x00,
+ 0xa4, 0x4b, 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb,
+ 0xfc, 0x60, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2,
+ 0x90, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x70, 0x69, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xb0, 0x49, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x0a,
+ 0x90, 0x4b, 0x01, 0x00, 0x06, 0x00, 0x00, 0x0a,
+ 0xa4, 0x58, 0x81, 0x00, 0x05, 0xfd, 0x40, 0xe3,
+ 0x3c, 0x00, 0xe0, 0x4b, 0x01, 0x00, 0x80, 0x4a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0a, 0x0c, 0x5a,
+ 0x81, 0x01, 0x25, 0x2d, 0x44, 0xe3, 0xe0, 0x4a,
+ 0x01, 0x00, 0x03, 0x00, 0x00, 0x0a, 0x18, 0x63,
+ 0x41, 0x00, 0xfd, 0xbb, 0x40, 0xe2, 0x08, 0x57,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x9c, 0x48,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x4a,
+ 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4c, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x0a, 0xcc, 0x74, 0x01, 0x00,
+ 0x03, 0x00, 0x00, 0xe3, 0x65, 0x73, 0x41, 0x00,
+ 0xa9, 0x2e, 0x44, 0xe2, 0xf6, 0x59, 0x01, 0x01,
+ 0xd1, 0x2c, 0x44, 0xe3, 0x08, 0x4b, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x6a, 0x28, 0x4b, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x0a, 0x88, 0x7d, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x58, 0x4c,
+ 0x01, 0x00, 0x00, 0x75, 0x01, 0x04, 0x65, 0x6f,
+ 0x40, 0xe3, 0xbc, 0x78, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x38, 0x4b, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x0a, 0x04, 0x57, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x62, 0x58, 0x4b, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x80, 0x4b, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x68, 0x4b, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x8c, 0x7d, 0x01, 0x00, 0x3c, 0x00,
+ 0x94, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x39, 0x2d, 0x04, 0x00, 0x04, 0x00, 0x00, 0xdb,
+ 0x94, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 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, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x64,
+ 0xa8, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a,
+ 0x3c, 0x00, 0xd0, 0x4c, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x4c,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xd0, 0x4c,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x7a,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0xe8, 0x7a,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x7a,
+ 0x01, 0x00, 0x3c, 0x00, 0x0c, 0x4d, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0xee, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf3, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0xf4, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf9, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0xfa, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x48, 0x4d,
+ 0x01, 0x00, 0xe8, 0x4c, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x00, 0x4d, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x18, 0x4d, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x30, 0x4d, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x90, 0x5c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x94, 0x5c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x98, 0x5c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x9c, 0x5c, 0x01, 0x00, 0x3c, 0x00,
+ 0x84, 0x4d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xa0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xa4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xa8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xac, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xb4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xb8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x3c, 0x00, 0xc0, 0x4d, 0x01, 0x00, 0xbc, 0x5c,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc0, 0x5c,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc4, 0x5c,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x90, 0x5c,
+ 0x01, 0x00, 0x38, 0x00, 0x00, 0xe3, 0x68, 0x4d,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0xd8, 0x4d,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x12, 0x61,
+ 0x81, 0x01, 0x31, 0xd5, 0x40, 0xe3, 0x06, 0x61,
+ 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x4d, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0xe2, 0x0b, 0x61, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe3, 0x0f, 0x61, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe3, 0x08, 0x61, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0xe2, 0x50, 0x7b, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0x01, 0x00,
+ 0x0e, 0x00, 0x00, 0x64, 0x9c, 0x57, 0x01, 0x01,
+ 0x91, 0x88, 0x41, 0xe3, 0x3c, 0x00, 0x38, 0x4e,
+ 0x01, 0x00, 0x6e, 0x41, 0x67, 0x6f, 0xe2, 0x65,
+ 0x60, 0x69, 0x6f, 0x20, 0x41, 0x42, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x4d, 0x01, 0x00, 0x09, 0x00,
+ 0x00, 0x0a, 0x48, 0x4e, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x0a, 0xe8, 0x4d, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x48, 0x4d, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x0a, 0x28, 0x61, 0x01, 0x01, 0x3c, 0x00,
+ 0x74, 0x4e, 0x01, 0x00, 0xbd, 0xd5, 0x40, 0xe2,
+ 0x69, 0x61, 0x41, 0x00, 0x85, 0xd5, 0x40, 0xe2,
+ 0x30, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x3c, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x44, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x3c, 0x00, 0xb0, 0x4e, 0x01, 0x00, 0x70, 0x4e,
+ 0x01, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x18, 0x61,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x1c, 0x61,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x20, 0x61,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x24, 0x61,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xb8, 0x4e,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xc8, 0x4e,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xd8, 0x4e,
+ 0x01, 0x00, 0x3c, 0x00, 0xec, 0x4e, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x0a, 0x96, 0x48, 0x01, 0x00,
+ 0x06, 0x00, 0x00, 0xe3, 0xe0, 0x62, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x9b, 0x7d, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x62, 0x9c, 0x7d, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x62, 0x60, 0x7c, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x28, 0x4f,
+ 0x01, 0x00, 0x2d, 0x63, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x49, 0xd5, 0x00, 0x00, 0x0e, 0x00,
+ 0x00, 0xd9, 0xf4, 0x67, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x62, 0x46, 0x7d, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x62, 0x9c, 0x7c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00,
+ 0x64, 0x4f, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62,
+ 0xa0, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62,
+ 0x58, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62,
+ 0x64, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62,
+ 0x5a, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62,
+ 0x6a, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62,
+ 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0xe4, 0x62, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x3c, 0x00, 0xa0, 0x4f, 0x01, 0x00, 0xe8, 0x62,
+ 0x01, 0x00, 0x03, 0x00, 0x00, 0xe2, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x01, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x4f, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x18, 0x50,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0xf0, 0x4e, 0x01, 0x00, 0x2a, 0x00,
+ 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x3c, 0x00,
+ 0x54, 0x50, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x3c, 0x00, 0x90, 0x50, 0x01, 0x00, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x06, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x07, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x08, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x09, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x50, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x0a, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x0b, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x0c, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x3c, 0x00, 0x08, 0x51,
+ 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0xdb, 0x48, 0x50, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x58, 0x50, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x68, 0x50, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x78, 0x50, 0x01, 0x00, 0x3c, 0x00,
+ 0x44, 0x51, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0x88, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0x98, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xa8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xb8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xc8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xd8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xe8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0x3c, 0x00, 0x80, 0x51, 0x01, 0x00, 0xf8, 0x50,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x08, 0x51,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x18, 0x51,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x50,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xe8, 0x4e,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x4e,
+ 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x51, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x28, 0x51, 0x01, 0x00,
+ 0x0e, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x51,
+ 0x01, 0x00, 0x98, 0x51, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0x0a, 0x50, 0x4e, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x0a, 0xe0, 0x4c, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x4b, 0x01, 0x00, 0x1d, 0x00,
+ 0x00, 0x0a, 0xf8, 0x51, 0x01, 0x00, 0x05, 0x00,
+ 0x00, 0x0a, 0x24, 0x80, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1d, 0x80, 0x07, 0x00, 0x3c, 0x00,
+ 0x34, 0x52, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0x07, 0x00, 0x5c, 0x00, 0x00, 0x00,
+ 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00,
+ 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
+ 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
+ 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
+ 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x01, 0x63,
+ 0x00, 0x00, 0xa1, 0x63, 0x00, 0x00, 0xc5, 0x63,
+ 0x00, 0x00, 0xb1, 0x62, 0x00, 0x00, 0xc5, 0x63,
+ 0x00, 0x00, 0x21, 0x63, 0x00, 0x00, 0x4d, 0x63,
+ 0x00, 0x00, 0x3c, 0x00, 0xac, 0x52, 0x01, 0x00,
+ 0xa1, 0x63, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00,
+ 0xa1, 0x63, 0x00, 0x00, 0x06, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09,
+ 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x10,
+ 0x11, 0x00, 0x00, 0x00, 0xa5, 0xc6, 0x84, 0xf8,
+ 0x99, 0xee, 0x8d, 0xf6, 0x0d, 0xff, 0xbd, 0xd6,
+ 0xb1, 0xde, 0x54, 0x91, 0x3c, 0x00, 0xe8, 0x52,
+ 0x01, 0x00, 0x50, 0x60, 0x03, 0x02, 0xa9, 0xce,
+ 0x7d, 0x56, 0x19, 0xe7, 0x62, 0xb5, 0xe6, 0x4d,
+ 0x9a, 0xec, 0x45, 0x8f, 0x9d, 0x1f, 0x40, 0x89,
+ 0x87, 0xfa, 0x15, 0xef, 0xeb, 0xb2, 0xc9, 0x8e,
+ 0x0b, 0xfb, 0xec, 0x41, 0x67, 0xb3, 0xfd, 0x5f,
+ 0xea, 0x45, 0xbf, 0x23, 0xf7, 0x53, 0x96, 0xe4,
+ 0x5b, 0x9b, 0xc2, 0x75, 0x1c, 0xe1, 0xae, 0x3d,
+ 0x6a, 0x4c, 0x5a, 0x6c, 0x41, 0x7e, 0x3c, 0x00,
+ 0x24, 0x53, 0x01, 0x00, 0x02, 0xf5, 0x4f, 0x83,
+ 0x5c, 0x68, 0xf4, 0x51, 0x34, 0xd1, 0x08, 0xf9,
+ 0x93, 0xe2, 0x73, 0xab, 0x53, 0x62, 0x3f, 0x2a,
+ 0x0c, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5e, 0x9d,
+ 0x28, 0x30, 0xa1, 0x37, 0x0f, 0x0a, 0xb5, 0x2f,
+ 0x09, 0x0e, 0x36, 0x24, 0x9b, 0x1b, 0x3d, 0xdf,
+ 0x26, 0xcd, 0x69, 0x4e, 0xcd, 0x7f, 0x9f, 0xea,
+ 0x1b, 0x12, 0x9e, 0x1d, 0x74, 0x58, 0x2e, 0x34,
+ 0x3c, 0x00, 0x60, 0x53, 0x01, 0x00, 0x2d, 0x36,
+ 0xb2, 0xdc, 0xee, 0xb4, 0xfb, 0x5b, 0xf6, 0xa4,
+ 0x4d, 0x76, 0x61, 0xb7, 0xce, 0x7d, 0x7b, 0x52,
+ 0x3e, 0xdd, 0x71, 0x5e, 0x97, 0x13, 0xf5, 0xa6,
+ 0x68, 0xb9, 0x00, 0x00, 0x2c, 0xc1, 0x60, 0x40,
+ 0x1f, 0xe3, 0xc8, 0x79, 0xed, 0xb6, 0xbe, 0xd4,
+ 0x46, 0x8d, 0xd9, 0x67, 0x4b, 0x72, 0xde, 0x94,
+ 0xd4, 0x98, 0xe8, 0xb0, 0x4a, 0x85, 0x6b, 0xbb,
+ 0x2a, 0xc5, 0x3c, 0x00, 0x9c, 0x53, 0x01, 0x00,
+ 0xe5, 0x4f, 0x16, 0xed, 0xc5, 0x86, 0xd7, 0x9a,
+ 0x55, 0x66, 0x94, 0x11, 0xcf, 0x8a, 0x10, 0xe9,
+ 0x06, 0x04, 0x81, 0xfe, 0xf0, 0xa0, 0x44, 0x78,
+ 0xba, 0x25, 0xe3, 0x4b, 0xf3, 0xa2, 0xfe, 0x5d,
+ 0xc0, 0x80, 0x8a, 0x05, 0xad, 0x3f, 0xbc, 0x21,
+ 0x48, 0x70, 0x04, 0xf1, 0xdf, 0x63, 0xc1, 0x77,
+ 0x75, 0xaf, 0x63, 0x42, 0x30, 0x20, 0x1a, 0xe5,
+ 0x0e, 0xfd, 0x6d, 0xbf, 0x3c, 0x00, 0xd8, 0x53,
+ 0x01, 0x00, 0x4c, 0x81, 0x14, 0x18, 0x35, 0x26,
+ 0x2f, 0xc3, 0xe1, 0xbe, 0xa2, 0x35, 0xcc, 0x88,
+ 0x39, 0x2e, 0x57, 0x93, 0xf2, 0x55, 0x82, 0xfc,
+ 0x47, 0x7a, 0xac, 0xc8, 0xe7, 0xba, 0x2b, 0x32,
+ 0x95, 0xe6, 0xa0, 0xc0, 0x98, 0x19, 0xd1, 0x9e,
+ 0x7f, 0xa3, 0x66, 0x44, 0x7e, 0x54, 0xab, 0x3b,
+ 0x83, 0x0b, 0xca, 0x8c, 0x29, 0xc7, 0xd3, 0x6b,
+ 0x3c, 0x28, 0x79, 0xa7, 0xe2, 0xbc, 0x3c, 0x00,
+ 0x14, 0x54, 0x01, 0x00, 0x1d, 0x16, 0x76, 0xad,
+ 0x3b, 0xdb, 0x56, 0x64, 0x4e, 0x74, 0x1e, 0x14,
+ 0xdb, 0x92, 0x0a, 0x0c, 0x6c, 0x48, 0xe4, 0xb8,
+ 0x5d, 0x9f, 0x6e, 0xbd, 0xef, 0x43, 0xa6, 0xc4,
+ 0xa8, 0x39, 0xa4, 0x31, 0x37, 0xd3, 0x8b, 0xf2,
+ 0x32, 0xd5, 0x43, 0x8b, 0x59, 0x6e, 0xb7, 0xda,
+ 0x8c, 0x01, 0x64, 0xb1, 0xd2, 0x9c, 0xe0, 0x49,
+ 0xb4, 0xd8, 0xfa, 0xac, 0x07, 0xf3, 0x25, 0xcf,
+ 0x3c, 0x00, 0x50, 0x54, 0x01, 0x00, 0xaf, 0xca,
+ 0x8e, 0xf4, 0xe9, 0x47, 0x18, 0x10, 0xd5, 0x6f,
+ 0x88, 0xf0, 0x6f, 0x4a, 0x72, 0x5c, 0x24, 0x38,
+ 0xf1, 0x57, 0xc7, 0x73, 0x51, 0x97, 0x23, 0xcb,
+ 0x7c, 0xa1, 0x9c, 0xe8, 0x21, 0x3e, 0xdd, 0x96,
+ 0xdc, 0x61, 0x86, 0x0d, 0x85, 0x0f, 0x90, 0xe0,
+ 0x42, 0x7c, 0xc4, 0x71, 0xaa, 0xcc, 0xd8, 0x90,
+ 0x05, 0x06, 0x01, 0xf7, 0x12, 0x1c, 0xa3, 0xc2,
+ 0x5f, 0x6a, 0x3c, 0x00, 0x8c, 0x54, 0x01, 0x00,
+ 0xf9, 0xae, 0xd0, 0x69, 0x91, 0x17, 0x58, 0x99,
+ 0x27, 0x3a, 0xb9, 0x27, 0x38, 0xd9, 0x13, 0xeb,
+ 0xb3, 0x2b, 0x33, 0x22, 0xbb, 0xd2, 0x70, 0xa9,
+ 0x89, 0x07, 0xa7, 0x33, 0xb6, 0x2d, 0x22, 0x3c,
+ 0x92, 0x15, 0x20, 0xc9, 0x49, 0x87, 0xff, 0xaa,
+ 0x78, 0x50, 0x7a, 0xa5, 0x8f, 0x03, 0xf8, 0x59,
+ 0x80, 0x09, 0x17, 0x1a, 0xda, 0x65, 0x31, 0xd7,
+ 0xc6, 0x84, 0xb8, 0xd0, 0x3c, 0x00, 0xc8, 0x54,
+ 0x01, 0x00, 0xc3, 0x82, 0xb0, 0x29, 0x77, 0x5a,
+ 0x11, 0x1e, 0xcb, 0x7b, 0xfc, 0xa8, 0xd6, 0x6d,
+ 0x3a, 0x2c, 0xc6, 0xa5, 0xf8, 0x84, 0xee, 0x99,
+ 0xf6, 0x8d, 0xff, 0x0d, 0xd6, 0xbd, 0xde, 0xb1,
+ 0x91, 0x54, 0x60, 0x50, 0x02, 0x03, 0xce, 0xa9,
+ 0x56, 0x7d, 0xe7, 0x19, 0xb5, 0x62, 0x4d, 0xe6,
+ 0xec, 0x9a, 0x8f, 0x45, 0x1f, 0x9d, 0x89, 0x40,
+ 0xfa, 0x87, 0xef, 0x15, 0xb2, 0xeb, 0x3c, 0x00,
+ 0x04, 0x55, 0x01, 0x00, 0x8e, 0xc9, 0xfb, 0x0b,
+ 0x41, 0xec, 0xb3, 0x67, 0x5f, 0xfd, 0x45, 0xea,
+ 0x23, 0xbf, 0x53, 0xf7, 0xe4, 0x96, 0x9b, 0x5b,
+ 0x75, 0xc2, 0xe1, 0x1c, 0x3d, 0xae, 0x4c, 0x6a,
+ 0x6c, 0x5a, 0x7e, 0x41, 0xf5, 0x02, 0x83, 0x4f,
+ 0x68, 0x5c, 0x51, 0xf4, 0xd1, 0x34, 0xf9, 0x08,
+ 0xe2, 0x93, 0xab, 0x73, 0x62, 0x53, 0x2a, 0x3f,
+ 0x08, 0x0c, 0x95, 0x52, 0x46, 0x65, 0x9d, 0x5e,
+ 0x3c, 0x00, 0x40, 0x55, 0x01, 0x00, 0x30, 0x28,
+ 0x37, 0xa1, 0x0a, 0x0f, 0x2f, 0xb5, 0x0e, 0x09,
+ 0x24, 0x36, 0x1b, 0x9b, 0xdf, 0x3d, 0xcd, 0x26,
+ 0x4e, 0x69, 0x7f, 0xcd, 0xea, 0x9f, 0x12, 0x1b,
+ 0x1d, 0x9e, 0x58, 0x74, 0x34, 0x2e, 0x36, 0x2d,
+ 0xdc, 0xb2, 0xb4, 0xee, 0x5b, 0xfb, 0xa4, 0xf6,
+ 0x76, 0x4d, 0xb7, 0x61, 0x7d, 0xce, 0x52, 0x7b,
+ 0xdd, 0x3e, 0x5e, 0x71, 0x13, 0x97, 0xa6, 0xf5,
+ 0xb9, 0x68, 0x3c, 0x00, 0x7c, 0x55, 0x01, 0x00,
+ 0x00, 0x00, 0xc1, 0x2c, 0x40, 0x60, 0xe3, 0x1f,
+ 0x79, 0xc8, 0xb6, 0xed, 0xd4, 0xbe, 0x8d, 0x46,
+ 0x67, 0xd9, 0x72, 0x4b, 0x94, 0xde, 0x98, 0xd4,
+ 0xb0, 0xe8, 0x85, 0x4a, 0xbb, 0x6b, 0xc5, 0x2a,
+ 0x4f, 0xe5, 0xed, 0x16, 0x86, 0xc5, 0x9a, 0xd7,
+ 0x66, 0x55, 0x11, 0x94, 0x8a, 0xcf, 0xe9, 0x10,
+ 0x04, 0x06, 0xfe, 0x81, 0xa0, 0xf0, 0x78, 0x44,
+ 0x25, 0xba, 0x4b, 0xe3, 0x3c, 0x00, 0xb8, 0x55,
+ 0x01, 0x00, 0xa2, 0xf3, 0x5d, 0xfe, 0x80, 0xc0,
+ 0x05, 0x8a, 0x3f, 0xad, 0x21, 0xbc, 0x70, 0x48,
+ 0xf1, 0x04, 0x63, 0xdf, 0x77, 0xc1, 0xaf, 0x75,
+ 0x42, 0x63, 0x20, 0x30, 0xe5, 0x1a, 0xfd, 0x0e,
+ 0xbf, 0x6d, 0x81, 0x4c, 0x18, 0x14, 0x26, 0x35,
+ 0xc3, 0x2f, 0xbe, 0xe1, 0x35, 0xa2, 0x88, 0xcc,
+ 0x2e, 0x39, 0x93, 0x57, 0x55, 0xf2, 0xfc, 0x82,
+ 0x7a, 0x47, 0xc8, 0xac, 0xba, 0xe7, 0x3c, 0x00,
+ 0xf4, 0x55, 0x01, 0x00, 0x32, 0x2b, 0xe6, 0x95,
+ 0xc0, 0xa0, 0x19, 0x98, 0x9e, 0xd1, 0xa3, 0x7f,
+ 0x44, 0x66, 0x54, 0x7e, 0x3b, 0xab, 0x0b, 0x83,
+ 0x8c, 0xca, 0xc7, 0x29, 0x6b, 0xd3, 0x28, 0x3c,
+ 0xa7, 0x79, 0xbc, 0xe2, 0x16, 0x1d, 0xad, 0x76,
+ 0xdb, 0x3b, 0x64, 0x56, 0x74, 0x4e, 0x14, 0x1e,
+ 0x92, 0xdb, 0x0c, 0x0a, 0x48, 0x6c, 0xb8, 0xe4,
+ 0x9f, 0x5d, 0xbd, 0x6e, 0x43, 0xef, 0xc4, 0xa6,
+ 0x3c, 0x00, 0x30, 0x56, 0x01, 0x00, 0x39, 0xa8,
+ 0x31, 0xa4, 0xd3, 0x37, 0xf2, 0x8b, 0xd5, 0x32,
+ 0x8b, 0x43, 0x6e, 0x59, 0xda, 0xb7, 0x01, 0x8c,
+ 0xb1, 0x64, 0x9c, 0xd2, 0x49, 0xe0, 0xd8, 0xb4,
+ 0xac, 0xfa, 0xf3, 0x07, 0xcf, 0x25, 0xca, 0xaf,
+ 0xf4, 0x8e, 0x47, 0xe9, 0x10, 0x18, 0x6f, 0xd5,
+ 0xf0, 0x88, 0x4a, 0x6f, 0x5c, 0x72, 0x38, 0x24,
+ 0x57, 0xf1, 0x73, 0xc7, 0x97, 0x51, 0xcb, 0x23,
+ 0xa1, 0x7c, 0x3c, 0x00, 0x6c, 0x56, 0x01, 0x00,
+ 0xe8, 0x9c, 0x3e, 0x21, 0x96, 0xdd, 0x61, 0xdc,
+ 0x0d, 0x86, 0x0f, 0x85, 0xe0, 0x90, 0x7c, 0x42,
+ 0x71, 0xc4, 0xcc, 0xaa, 0x90, 0xd8, 0x06, 0x05,
+ 0xf7, 0x01, 0x1c, 0x12, 0xc2, 0xa3, 0x6a, 0x5f,
+ 0xae, 0xf9, 0x69, 0xd0, 0x17, 0x91, 0x99, 0x58,
+ 0x3a, 0x27, 0x27, 0xb9, 0xd9, 0x38, 0xeb, 0x13,
+ 0x2b, 0xb3, 0x22, 0x33, 0xd2, 0xbb, 0xa9, 0x70,
+ 0x07, 0x89, 0x33, 0xa7, 0x3c, 0x00, 0xa8, 0x56,
+ 0x01, 0x00, 0x2d, 0xb6, 0x3c, 0x22, 0x15, 0x92,
+ 0xc9, 0x20, 0x87, 0x49, 0xaa, 0xff, 0x50, 0x78,
+ 0xa5, 0x7a, 0x03, 0x8f, 0x59, 0xf8, 0x09, 0x80,
+ 0x1a, 0x17, 0x65, 0xda, 0xd7, 0x31, 0x84, 0xc6,
+ 0xd0, 0xb8, 0x82, 0xc3, 0x29, 0xb0, 0x5a, 0x77,
+ 0x1e, 0x11, 0x7b, 0xcb, 0xa8, 0xfc, 0x6d, 0xd6,
+ 0x2c, 0x3a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0x56, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x72, 0x65, 0x71, 0x45, 0x72, 0x72, 0x52,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x20, 0x57, 0x01, 0x00, 0xc4, 0x8e,
+ 0x01, 0x00, 0x24, 0x9a, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x24, 0x9a,
+ 0x01, 0x00, 0xa4, 0xb2, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xa4, 0xb2,
+ 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x20,
+ 0x30, 0x40, 0x50, 0xbb, 0x30, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x57, 0x01, 0x00,
+ 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22,
+ 0x24, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x01, 0x00,
+ 0x70, 0x17, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x0d, 0x25, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00,
+ 0x65, 0x29, 0x01, 0x00, 0x0d, 0x25, 0x00, 0x00,
+ 0xf5, 0x5e, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00,
+ 0x41, 0x3f, 0x01, 0x00, 0x02, 0x04, 0x0b, 0x0c,
+ 0x12, 0x16, 0x18, 0x24, 0x3c, 0x00, 0x98, 0x57,
+ 0x01, 0x00, 0x30, 0x48, 0x60, 0x6c, 0x01, 0x00,
+ 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x10, 0x12, 0x11, 0x00,
+ 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0xd4, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x93, 0x04, 0x00,
+ 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0xdf, 0x40, 0xcf, 0xfd, 0x00, 0x40, 0x83, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
+ 0x3c, 0x00, 0x10, 0x58, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x00, 0x80, 0x81, 0x00, 0x00,
+ 0x80, 0x00, 0xbf, 0xff, 0x7f, 0x7e, 0x01, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x6f,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x6f,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6f,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x58, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xb8, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x71, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x90, 0x71, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x58,
+ 0x01, 0x00, 0xa8, 0x71, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x05, 0x0a, 0x01, 0x06, 0x0b,
+ 0x02, 0x07, 0x0c, 0x03, 0x08, 0x0d, 0x04, 0x09,
+ 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x00, 0x04,
+ 0x00, 0x04, 0x04, 0x06, 0x16, 0x1e, 0x1f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+ 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00,
+ 0xc4, 0x58, 0x01, 0x00, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00,
+ 0x61, 0x8b, 0x4a, 0x00, 0x61, 0x8f, 0x4a, 0x00,
+ 0x61, 0x8b, 0x4a, 0x00, 0x05, 0xe3, 0xc0, 0x00,
+ 0x05, 0xcb, 0xc0, 0x00, 0x05, 0xbb, 0xc0, 0x00,
+ 0x85, 0xba, 0xc0, 0x00, 0x85, 0xa2, 0xc0, 0x00,
+ 0x85, 0x92, 0xc0, 0x00, 0x85, 0x8a, 0xc0, 0x00,
+ 0x85, 0x7a, 0xc0, 0x00, 0x45, 0x89, 0xc0, 0x00,
+ 0x3c, 0x00, 0x00, 0x59, 0x01, 0x00, 0x45, 0x71,
+ 0xc0, 0x00, 0x45, 0x69, 0xc0, 0x00, 0x45, 0x61,
+ 0xc0, 0x00, 0x45, 0x59, 0xc0, 0x00, 0x45, 0x51,
+ 0xc0, 0x00, 0x45, 0x49, 0xc0, 0x00, 0x45, 0x41,
+ 0xc0, 0x00, 0x45, 0x39, 0xc0, 0x00, 0x45, 0x31,
+ 0xc0, 0x00, 0x45, 0x29, 0xc0, 0x00, 0x45, 0x21,
+ 0xc0, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d,
+ 0x06, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d,
+ 0x06, 0x00, 0x3c, 0x00, 0x3c, 0x59, 0x01, 0x00,
+ 0x60, 0x2d, 0x06, 0x00, 0x60, 0x28, 0x06, 0x00,
+ 0x50, 0x26, 0x06, 0x00, 0x50, 0x21, 0x06, 0x00,
+ 0x50, 0x1f, 0x06, 0x00, 0x50, 0x1c, 0x06, 0x00,
+ 0x50, 0x1a, 0x06, 0x00, 0x50, 0x18, 0x06, 0x00,
+ 0x50, 0x16, 0x06, 0x00, 0x50, 0x14, 0x06, 0x00,
+ 0x50, 0x12, 0x06, 0x00, 0x50, 0x10, 0x06, 0x00,
+ 0x50, 0x0e, 0x06, 0x00, 0x50, 0x0c, 0x06, 0x00,
+ 0x50, 0x0a, 0x06, 0x00, 0x3c, 0x00, 0x78, 0x59,
+ 0x01, 0x00, 0x2b, 0x0b, 0x06, 0x00, 0x1d, 0x75,
+ 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75,
+ 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75,
+ 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x6d,
+ 0xc0, 0x00, 0xdd, 0x5b, 0xc0, 0x00, 0xdd, 0x4b,
+ 0xc0, 0x00, 0xdd, 0x43, 0xc0, 0x00, 0xdd, 0x3b,
+ 0xc0, 0x00, 0xdd, 0x33, 0xc0, 0x00, 0xdd, 0x2b,
+ 0xc0, 0x00, 0xdd, 0x23, 0xc0, 0x00, 0x3c, 0x00,
+ 0xb4, 0x59, 0x01, 0x00, 0xdd, 0x1b, 0xc0, 0x00,
+ 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00,
+ 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00,
+ 0xdd, 0x13, 0xc0, 0x00, 0x05, 0x05, 0x05, 0x04,
+ 0x04, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03,
+ 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x00,
+ 0x3c, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x07, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x40, 0x02,
+ 0xe0, 0xfd, 0xf2, 0x00, 0xb8, 0xfc, 0xa4, 0x01,
+ 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00,
+ 0x00, 0x00, 0x03, 0x0b, 0x9f, 0x5f, 0x07, 0x01,
+ 0x2a, 0x04, 0x21, 0x04, 0x17, 0x04, 0x0e, 0x04,
+ 0x04, 0x04, 0xfb, 0x03, 0xf1, 0x03, 0xe8, 0x03,
+ 0xc9, 0x03, 0xaa, 0x03, 0x8a, 0x03, 0x6b, 0x03,
+ 0x4c, 0x03, 0x3c, 0x00, 0x2c, 0x5a, 0x01, 0x00,
+ 0x2d, 0x03, 0x0e, 0x03, 0xee, 0x02, 0xec, 0x02,
+ 0x01, 0x03, 0x16, 0x03, 0x2b, 0x03, 0x40, 0x03,
+ 0x55, 0x03, 0x6a, 0x03, 0x7f, 0x03, 0x94, 0x03,
+ 0xa9, 0x03, 0xbe, 0x03, 0xd3, 0x03, 0xe8, 0x03,
+ 0xbe, 0x03, 0x94, 0x03, 0x6a, 0x03, 0x00, 0x02,
+ 0x04, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x00, 0x03, 0x3c, 0x00, 0x68, 0x5a,
+ 0x01, 0x00, 0x05, 0x08, 0x0b, 0x0e, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0xa4, 0x5a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x5a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x5b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x5b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x5b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x5b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x5c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x5c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x5c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x5c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x5c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x5d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x5d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x5d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x5d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x5e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x5e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x5e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x5e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x5f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x5f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x5f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x5f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x60,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x60, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x60, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x60, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x60,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x61, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x61, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x61, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x61,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x62, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x62, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x62, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x62,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x63, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x63, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x63, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x63,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0x64, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0x64, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0x64, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0x64,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0x64, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0x65, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0x65, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0x65,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0x65, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0x66, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0x66, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0x66,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0x66, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0x67, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0x67, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0x67,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0x67, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0x68, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0x68, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0x68,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0x68, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0x68, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0x69, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0x69,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0x69, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x69, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x6a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x6a,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x6a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x6a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x6b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x6b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x6b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x6b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x6b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x6c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x6c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x6c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x6c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x6d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x6d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x6d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x6d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x6e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x6e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x6e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x6e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x6f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x6f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x6f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x6f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x6f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x70, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x70, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x70, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x70,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x71, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x71, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x71, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x71,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x72, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x72, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x72, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x72,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0x73, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0x73, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0x73, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0x73,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0x73, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0x74, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0x74, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0x74,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0x74, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0x75, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0x75, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0x75,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0x75, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0x76, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0x76, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0x76,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0x76, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0x77, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0x77, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0x77,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0x77, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0x77, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0x78, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0x78,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0x78, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x78, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x79, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x79,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x79, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x79, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x7a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x7a,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x7a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x7a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x7a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x7b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x7b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x7b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x7b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x7c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x7c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x7c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x7c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x7d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x7d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x7d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x7d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x7e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x7e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x7e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x7e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x7e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x7f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x7f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x7f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x7f,
+ 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, 0x70, 0xb5, 0x01, 0x25, 0x07, 0x4e,
+ 0xad, 0x03, 0x75, 0x61, 0x0a, 0x20, 0xfa, 0xf7,
+ 0x6c, 0xff, 0x30, 0x68, 0x80, 0x03, 0xc4, 0x0f,
+ 0xb5, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x65, 0xff,
+ 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x24, 0x80, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x70, 0xb5, 0x01, 0x25, 0x6d, 0x04, 0x00, 0x28,
+ 0x10, 0x4c, 0x01, 0xd0, 0x65, 0x61, 0x00, 0xe0,
+ 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60,
+ 0xa0, 0x68, 0x28, 0x43, 0xa0, 0x60, 0x0a, 0x20,
+ 0xfa, 0xf7, 0x4e, 0xff, 0x01, 0x26, 0xb6, 0x03,
+ 0x66, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x48, 0xff,
+ 0xa6, 0x61, 0x01, 0x20, 0xfa, 0xf7, 0x44, 0xff,
+ 0x3c, 0x00, 0x60, 0x80, 0x01, 0x00, 0xa0, 0x68,
+ 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43,
+ 0x60, 0x60, 0x0a, 0x20, 0xfa, 0xf7, 0x3b, 0xff,
+ 0x70, 0xbd, 0x10, 0x00, 0x07, 0x00, 0x70, 0xb5,
+ 0x01, 0x25, 0x10, 0x4c, 0x6d, 0x04, 0x65, 0x61,
+ 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, 0xa0, 0x68,
+ 0x28, 0x43, 0xa0, 0x60, 0xee, 0x08, 0xa6, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0x28, 0xff, 0x66, 0x61,
+ 0x0a, 0x20, 0x3c, 0x00, 0x9c, 0x80, 0x01, 0x00,
+ 0xfa, 0xf7, 0x24, 0xff, 0xa5, 0x61, 0x0a, 0x20,
+ 0xfa, 0xf7, 0x20, 0xff, 0xa6, 0x61, 0x0a, 0x20,
+ 0xfa, 0xf7, 0x1c, 0xff, 0xa0, 0x68, 0xa8, 0x43,
+ 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60,
+ 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x70, 0xb5, 0x01, 0x25, 0x0e, 0x4c, 0x6d, 0x04,
+ 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60,
+ 0xa0, 0x68, 0x28, 0x43, 0x3c, 0x00, 0xd8, 0x80,
+ 0x01, 0x00, 0xa0, 0x60, 0xee, 0x08, 0x66, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0x02, 0xff, 0x65, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0xfe, 0xfe, 0xa6, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0xfa, 0xfe, 0xa0, 0x68,
+ 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43,
+ 0x60, 0x60, 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24,
+ 0x80, 0x26, 0x28, 0x1c, 0x30, 0x40, 0x3c, 0x00,
+ 0x14, 0x81, 0x01, 0x00, 0xff, 0xf7, 0x88, 0xff,
+ 0x68, 0x06, 0x05, 0x0e, 0x01, 0x34, 0x08, 0x2c,
+ 0xf6, 0xdb, 0xff, 0xf7, 0x6d, 0xff, 0x70, 0xbd,
+ 0x80, 0xb5, 0x02, 0x1c, 0x0b, 0x21, 0x80, 0x20,
+ 0xfb, 0xf7, 0x3e, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0xf8, 0xb5, 0x12, 0x48, 0x00, 0x25, 0x07, 0x1c,
+ 0xff, 0x37, 0x06, 0x1d, 0x01, 0x37, 0x28, 0x1c,
+ 0xf9, 0xf7, 0xea, 0xfd, 0x04, 0x1c, 0x17, 0xd0,
+ 0x3c, 0x00, 0x50, 0x81, 0x01, 0x00, 0x20, 0x69,
+ 0x00, 0x28, 0x04, 0xd0, 0xe0, 0x6a, 0x00, 0x28,
+ 0x03, 0xd0, 0x00, 0x20, 0xe0, 0x62, 0x25, 0x1c,
+ 0xf0, 0xe7, 0x7b, 0x68, 0x00, 0x2b, 0x05, 0xd0,
+ 0x32, 0x1c, 0x21, 0x1c, 0x44, 0x31, 0x01, 0x20,
+ 0xe8, 0xf7, 0x34, 0xf9, 0x20, 0x1c, 0x44, 0x30,
+ 0xf9, 0xf7, 0x37, 0xfe, 0xe2, 0xe7, 0xf8, 0xbd,
+ 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x48,
+ 0x70, 0xb5, 0x3c, 0x00, 0x8c, 0x81, 0x01, 0x00,
+ 0x00, 0x68, 0xff, 0x28, 0x1d, 0xd1, 0xff, 0x20,
+ 0x32, 0x30, 0xfa, 0xf7, 0xa7, 0xfe, 0x0e, 0x4d,
+ 0x6c, 0x68, 0x0e, 0x48, 0xfa, 0xf7, 0xa2, 0xfe,
+ 0x68, 0x68, 0x24, 0x1a, 0x01, 0x20, 0x00, 0xf0,
+ 0x95, 0xfd, 0x6e, 0x68, 0x09, 0x48, 0xfa, 0xf7,
+ 0x99, 0xfe, 0x68, 0x68, 0x21, 0x1c, 0x0a, 0x39,
+ 0x30, 0x1a, 0x88, 0x42, 0x02, 0xd3, 0x0a, 0x34,
+ 0xa0, 0x42, 0x02, 0xd9, 0x3c, 0x00, 0xc8, 0x81,
+ 0x01, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x85, 0xfd,
+ 0x70, 0xbd, 0xf4, 0x74, 0x01, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0x93, 0x03, 0x00, 0x00, 0x70, 0xb5,
+ 0x00, 0xf0, 0x4d, 0xf8, 0x01, 0x20, 0xed, 0xf7,
+ 0x34, 0xf9, 0x11, 0x4d, 0x18, 0x21, 0x68, 0x60,
+ 0x00, 0x20, 0xe9, 0xf7, 0xf2, 0xf9, 0x28, 0x60,
+ 0x04, 0x68, 0x80, 0x20, 0x20, 0x80, 0x00, 0x26,
+ 0x06, 0x22, 0xff, 0x21, 0x20, 0x1d, 0x3c, 0x00,
+ 0x04, 0x82, 0x01, 0x00, 0x66, 0x80, 0xe8, 0xf7,
+ 0x0b, 0xfa, 0x20, 0x1c, 0x0a, 0x30, 0x09, 0x49,
+ 0xf2, 0xf7, 0x2e, 0xfd, 0x20, 0x1c, 0x10, 0x30,
+ 0x07, 0x49, 0xf2, 0xf7, 0x29, 0xfd, 0xe6, 0x82,
+ 0x03, 0xcd, 0xe9, 0xf7, 0xf9, 0xf8, 0x02, 0x49,
+ 0x01, 0x20, 0x14, 0x39, 0x88, 0x60, 0x70, 0xbd,
+ 0x90, 0xd9, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0x24, 0xf7, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x82, 0x01, 0x00, 0x10, 0xb5,
+ 0x06, 0x4c, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68,
+ 0xf0, 0xf7, 0x11, 0xfb, 0x60, 0x78, 0x02, 0x28,
+ 0x01, 0xd1, 0x00, 0xf0, 0x1a, 0xf9, 0x10, 0xbd,
+ 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x80, 0xb5,
+ 0xa1, 0x20, 0xff, 0xf7, 0x50, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x40, 0x00, 0x0e, 0x21, 0x08, 0x40,
+ 0x80, 0xb5, 0xa0, 0x30, 0xff, 0xf7, 0x47, 0xff,
+ 0x80, 0xbd, 0x3c, 0x00, 0x7c, 0x82, 0x01, 0x00,
+ 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x68, 0x00, 0x28,
+ 0x04, 0xd0, 0xe9, 0xf7, 0x87, 0xf9, 0x00, 0x20,
+ 0x20, 0x60, 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00,
+ 0x90, 0xd9, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0x01, 0x21, 0x07, 0x4a, 0x21, 0x61, 0x02, 0x20,
+ 0x10, 0x70, 0x61, 0x61, 0x00, 0xf0, 0xd6, 0xfc,
+ 0x00, 0xf0, 0xc8, 0xfb, 0x20, 0x1c, 0xed, 0xf7,
+ 0x9f, 0xfa, 0x10, 0xbd, 0x3c, 0x00, 0xb8, 0x82,
+ 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x7c, 0xd9,
+ 0x01, 0x00, 0x70, 0xb5, 0x02, 0x1c, 0x08, 0x1c,
+ 0x02, 0x25, 0x00, 0x2a, 0x13, 0x4e, 0x14, 0xd0,
+ 0x00, 0xf0, 0x11, 0xfc, 0x30, 0x78, 0x01, 0x21,
+ 0x08, 0x43, 0x30, 0x70, 0x30, 0x78, 0x28, 0x43,
+ 0x30, 0x70, 0x00, 0x20, 0x7d, 0x21, 0x49, 0x01,
+ 0xb2, 0x79, 0x92, 0x07, 0x00, 0xd5, 0x01, 0x34,
+ 0x01, 0x30, 0x88, 0x42, 0xf8, 0xdb, 0x3c, 0x00,
+ 0xf4, 0x82, 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd,
+ 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x30, 0x78,
+ 0x40, 0x08, 0x40, 0x00, 0x30, 0x70, 0x05, 0x49,
+ 0x48, 0x68, 0x01, 0x22, 0x12, 0x04, 0x90, 0x43,
+ 0x48, 0x60, 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00,
+ 0x88, 0x00, 0x07, 0x00, 0x6c, 0x00, 0x07, 0x00,
+ 0xff, 0xb5, 0x09, 0xae, 0x00, 0x20, 0x60, 0xce,
+ 0x28, 0x60, 0x00, 0x23, 0x9c, 0x46, 0x30, 0x60,
+ 0x3c, 0x00, 0x30, 0x83, 0x01, 0x00, 0x69, 0x46,
+ 0x01, 0xaa, 0x17, 0xe0, 0xdb, 0x07, 0x0e, 0xd5,
+ 0x12, 0x4b, 0x1c, 0x56, 0x63, 0x1c, 0x0a, 0xd0,
+ 0x01, 0x27, 0x2b, 0x68, 0xa7, 0x40, 0x3b, 0x43,
+ 0x2b, 0x60, 0x13, 0x68, 0xdb, 0x07, 0x02, 0xd5,
+ 0x33, 0x68, 0x3b, 0x43, 0x33, 0x60, 0x0b, 0x68,
+ 0x5b, 0x08, 0x0b, 0x60, 0x13, 0x68, 0x5b, 0x08,
+ 0x13, 0x60, 0x01, 0x30, 0x0b, 0x68, 0x00, 0x2b,
+ 0x01, 0xd0, 0x3c, 0x00, 0x6c, 0x83, 0x01, 0x00,
+ 0x22, 0x28, 0xe2, 0xd3, 0x63, 0x46, 0x01, 0x33,
+ 0x20, 0x20, 0x02, 0x2b, 0x9c, 0x46, 0x02, 0xa9,
+ 0x03, 0xaa, 0xf2, 0xdb, 0xff, 0xbd, 0x00, 0x00,
+ 0xb4, 0x8d, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0d, 0x1c, 0x1e, 0x21, 0x00, 0x22, 0x03, 0x20,
+ 0x05, 0x4b, 0xf9, 0xf7, 0xb3, 0xf8, 0x21, 0x1c,
+ 0x03, 0x20, 0xf9, 0xf7, 0xf5, 0xf8, 0x29, 0x1c,
+ 0x03, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0xa8, 0x83,
+ 0x01, 0x00, 0xf1, 0xf8, 0xb0, 0xbd, 0x80, 0x38,
+ 0x01, 0x00, 0xb0, 0xb5, 0x1c, 0x4c, 0x1c, 0x4d,
+ 0x21, 0x78, 0x02, 0x29, 0x09, 0xd0, 0x03, 0x29,
+ 0x19, 0xd0, 0x04, 0x29, 0x1f, 0xd0, 0x05, 0x29,
+ 0x23, 0xd1, 0x00, 0x20, 0x00, 0xf0, 0x17, 0xfb,
+ 0x23, 0xe0, 0x68, 0x61, 0x14, 0x48, 0x1c, 0x30,
+ 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60,
+ 0x00, 0xf0, 0x2f, 0xfb, 0xe0, 0x68, 0x3c, 0x00,
+ 0xe4, 0x83, 0x01, 0x00, 0x01, 0x38, 0xe0, 0x60,
+ 0x16, 0xd1, 0x32, 0x20, 0xe0, 0x60, 0xff, 0xf7,
+ 0xa3, 0xfe, 0x11, 0xe0, 0x00, 0x20, 0x00, 0xf0,
+ 0x01, 0xfb, 0x00, 0xf0, 0x2d, 0xfc, 0x01, 0x20,
+ 0x20, 0x70, 0x09, 0xe0, 0x00, 0x20, 0x00, 0xf0,
+ 0xf9, 0xfa, 0xff, 0xf7, 0x45, 0xff, 0x03, 0xe0,
+ 0x05, 0x21, 0x0b, 0x20, 0xe8, 0xf7, 0x46, 0xff,
+ 0x68, 0x69, 0x61, 0x68, 0xe7, 0xf7, 0xdd, 0xff,
+ 0x3c, 0x00, 0x20, 0x84, 0x01, 0x00, 0xb0, 0xbd,
+ 0x00, 0x00, 0x7c, 0xd9, 0x01, 0x00, 0x20, 0xf7,
+ 0x01, 0x00, 0xf7, 0xb5, 0x04, 0x1c, 0x17, 0x1c,
+ 0xff, 0xf7, 0x21, 0xfe, 0x20, 0x0a, 0xff, 0xf7,
+ 0x18, 0xff, 0x20, 0x06, 0x00, 0x0e, 0xff, 0xf7,
+ 0x62, 0xfe, 0xff, 0xf7, 0x18, 0xfe, 0xa1, 0x20,
+ 0xff, 0xf7, 0x5d, 0xfe, 0x00, 0x25, 0x16, 0xe0,
+ 0x00, 0x20, 0x00, 0x24, 0x40, 0x06, 0x06, 0x0e,
+ 0xff, 0xf7, 0x3c, 0x00, 0x5c, 0x84, 0x01, 0x00,
+ 0xd1, 0xfd, 0x00, 0x06, 0x00, 0x0e, 0x30, 0x43,
+ 0x01, 0x34, 0x08, 0x2c, 0xf5, 0xdb, 0x29, 0x1c,
+ 0x01, 0x9a, 0x01, 0x35, 0xbd, 0x42, 0x50, 0x54,
+ 0x01, 0xda, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20,
+ 0xff, 0xf7, 0xd4, 0xfd, 0xbd, 0x42, 0xe6, 0xdb,
+ 0xff, 0xf7, 0x1e, 0xfe, 0xfe, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0xff, 0xf7, 0x19, 0xfe, 0x09, 0x21,
+ 0x89, 0x03, 0x00, 0x22, 0x3c, 0x00, 0x98, 0x84,
+ 0x01, 0x00, 0x02, 0x20, 0xf0, 0xf7, 0xe9, 0xf9,
+ 0x80, 0xbd, 0x09, 0x21, 0x89, 0x03, 0x80, 0xb5,
+ 0x00, 0x22, 0x02, 0x20, 0xf0, 0xf7, 0xc9, 0xf9,
+ 0x01, 0x21, 0x09, 0x48, 0x89, 0x03, 0x81, 0x61,
+ 0x42, 0x68, 0x0a, 0x43, 0x42, 0x60, 0x82, 0x68,
+ 0x11, 0x43, 0x81, 0x60, 0x01, 0x21, 0x49, 0x04,
+ 0x81, 0x61, 0x82, 0x68, 0x8a, 0x43, 0x82, 0x60,
+ 0x42, 0x68, 0x11, 0x43, 0x41, 0x60, 0x3c, 0x00,
+ 0xd4, 0x84, 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0xf0, 0xb5, 0x04, 0x1c,
+ 0xc0, 0x68, 0x7b, 0x4e, 0x05, 0x68, 0x30, 0x78,
+ 0x85, 0xb0, 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28,
+ 0x72, 0xd1, 0x00, 0x21, 0x20, 0x69, 0xf2, 0xf7,
+ 0x41, 0xf9, 0x76, 0x49, 0xf2, 0xf7, 0x24, 0xfc,
+ 0x00, 0x28, 0x69, 0xd0, 0x20, 0x1c, 0x20, 0x30,
+ 0x41, 0x7a, 0x08, 0x29, 0x02, 0xd1, 0x72, 0x4a,
+ 0x3c, 0x00, 0x10, 0x85, 0x01, 0x00, 0x00, 0x21,
+ 0x51, 0x61, 0x00, 0x7a, 0x22, 0x6a, 0x18, 0x21,
+ 0xf2, 0xf7, 0xc9, 0xfb, 0xe1, 0x6a, 0x37, 0x1c,
+ 0x40, 0x18, 0x6c, 0x49, 0x02, 0x90, 0x30, 0x78,
+ 0x0e, 0x1c, 0xff, 0x36, 0x0a, 0x1d, 0x01, 0x36,
+ 0x01, 0x28, 0x04, 0x92, 0x07, 0xd0, 0x65, 0x4a,
+ 0x02, 0x99, 0x1c, 0x32, 0x28, 0x1c, 0xed, 0xf7,
+ 0xe2, 0xfb, 0x00, 0x28, 0x6b, 0xd0, 0x32, 0x21,
+ 0x20, 0x69, 0x3c, 0x00, 0x4c, 0x85, 0x01, 0x00,
+ 0xf2, 0xf7, 0x16, 0xf9, 0x01, 0x90, 0x20, 0x69,
+ 0x01, 0x21, 0xf2, 0xf7, 0x11, 0xf9, 0x01, 0x1c,
+ 0x5e, 0x48, 0x01, 0x23, 0x01, 0x9a, 0xed, 0xf7,
+ 0x07, 0xfc, 0x00, 0x28, 0x04, 0xd1, 0x5b, 0x48,
+ 0xed, 0xf7, 0x92, 0xfa, 0x00, 0x21, 0xb9, 0x60,
+ 0x56, 0x48, 0x1c, 0x30, 0x81, 0x68, 0xea, 0xf7,
+ 0x19, 0xfc, 0x20, 0x1c, 0x14, 0x30, 0x03, 0x90,
+ 0x04, 0x99, 0xf2, 0xf7, 0x3c, 0x00, 0x88, 0x85,
+ 0x01, 0x00, 0xd5, 0xfb, 0x00, 0x28, 0x05, 0xd1,
+ 0x00, 0x22, 0xba, 0x60, 0x04, 0x98, 0x03, 0x99,
+ 0xf2, 0xf7, 0x6b, 0xfb, 0x4f, 0x49, 0x28, 0x89,
+ 0x09, 0x88, 0x88, 0x42, 0x03, 0xd0, 0x00, 0x22,
+ 0x4c, 0x49, 0xba, 0x60, 0x08, 0x80, 0x03, 0x21,
+ 0x20, 0x69, 0xf2, 0xf7, 0xe4, 0xf8, 0x00, 0x28,
+ 0x10, 0xd0, 0x46, 0x49, 0x82, 0x78, 0x20, 0x31,
+ 0x0b, 0x79, 0x94, 0x46, 0x9a, 0x42, 0x3c, 0x00,
+ 0xc4, 0x85, 0x01, 0x00, 0x09, 0xd0, 0x00, 0x22,
+ 0xba, 0x60, 0x62, 0x46, 0x0a, 0x71, 0x80, 0x78,
+ 0x01, 0x21, 0xf3, 0xf7, 0x05, 0xf9, 0x00, 0xe0,
+ 0x77, 0xe0, 0x06, 0x21, 0x20, 0x69, 0xf2, 0xf7,
+ 0xcd, 0xf8, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x78,
+ 0x3a, 0x48, 0x40, 0x30, 0x82, 0x88, 0x91, 0x42,
+ 0x02, 0xd0, 0x00, 0x22, 0xba, 0x60, 0x81, 0x80,
+ 0x2a, 0x21, 0x20, 0x69, 0xf2, 0xf7, 0xbe, 0xf8,
+ 0x3c, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x28,
+ 0x0d, 0xd0, 0x80, 0x78, 0xf1, 0x69, 0x33, 0x4a,
+ 0x81, 0x42, 0x08, 0xd0, 0x00, 0x21, 0xb9, 0x60,
+ 0xf0, 0x61, 0x10, 0x1c, 0xed, 0xf7, 0x09, 0xfb,
+ 0x2f, 0x48, 0xed, 0xf7, 0xfa, 0xfa, 0x38, 0x78,
+ 0x3b, 0x1c, 0x01, 0x28, 0x17, 0xd1, 0x02, 0x20,
+ 0x18, 0x70, 0x2a, 0x4f, 0x01, 0x23, 0x3b, 0x61,
+ 0x27, 0x4b, 0x03, 0xcd, 0x1c, 0x33, 0x08, 0x3d,
+ 0x02, 0x9a, 0x3c, 0x00, 0x3c, 0x86, 0x01, 0x00,
+ 0xed, 0xf7, 0xb0, 0xfa, 0x38, 0x1c, 0xed, 0xf7,
+ 0xd7, 0xf8, 0x32, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0x00, 0x21, 0x01, 0x20, 0xe7, 0xf7, 0xc4, 0xfe,
+ 0x00, 0xf0, 0xf4, 0xf9, 0x20, 0x1c, 0xf9, 0xf7,
+ 0xd5, 0xfb, 0x07, 0x1c, 0x11, 0xd1, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x88, 0xfb, 0x07, 0x1c, 0x2e, 0xd0,
+ 0x01, 0x23, 0x3b, 0x61, 0x68, 0x89, 0x40, 0x21,
+ 0xc8, 0x53, 0x73, 0x68, 0x3c, 0x00, 0x78, 0x86,
+ 0x01, 0x00, 0x00, 0x2b, 0x04, 0xd0, 0x21, 0x1c,
+ 0x00, 0x20, 0x04, 0x9a, 0xe7, 0xf7, 0xac, 0xfe,
+ 0x01, 0x23, 0xfb, 0x62, 0x20, 0x69, 0x32, 0x21,
+ 0xf2, 0xf7, 0x75, 0xf8, 0x05, 0x1c, 0x20, 0x69,
+ 0x01, 0x21, 0xf2, 0xf7, 0x70, 0xf8, 0x0e, 0x4e,
+ 0x01, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7,
+ 0xc0, 0xfb, 0x00, 0x28, 0x0e, 0xd1, 0x32, 0x21,
+ 0x20, 0x69, 0xf2, 0xf7, 0x64, 0xf8, 0x3c, 0x00,
+ 0xb4, 0x86, 0x01, 0x00, 0x05, 0x1c, 0x20, 0x69,
+ 0x01, 0x21, 0xf2, 0xf7, 0x5f, 0xf8, 0x01, 0x1c,
+ 0x3b, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7,
+ 0xd7, 0xfa, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0x7c, 0xd9, 0x01, 0x00, 0x40, 0xf8, 0x01, 0x00,
+ 0x20, 0xf7, 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c,
+ 0x80, 0x2a, 0x80, 0xb5, 0x06, 0xd0, 0x81, 0x2a,
+ 0x03, 0xd0, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x86, 0x01, 0x00, 0xd9, 0xfd,
+ 0x80, 0xbd, 0xff, 0xf7, 0x5c, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, 0xff, 0x29,
+ 0x01, 0xd0, 0x00, 0x79, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x80, 0xf8, 0x01, 0x00, 0x30, 0xb5,
+ 0x89, 0xb0, 0x00, 0x93, 0x0e, 0x4d, 0x13, 0x1c,
+ 0x04, 0x1c, 0x2a, 0x1c, 0xec, 0xf7, 0x25, 0xfd,
+ 0x01, 0xa9, 0x06, 0xa8, 0xa2, 0x68, 0xec, 0xf7,
+ 0xce, 0xfe, 0x3c, 0x00, 0x2c, 0x87, 0x01, 0x00,
+ 0x01, 0xaa, 0x06, 0xa9, 0x28, 0x1c, 0x63, 0x6a,
+ 0xed, 0xf7, 0x44, 0xfa, 0x04, 0x1c, 0x01, 0x28,
+ 0x04, 0xd1, 0x28, 0x1c, 0xed, 0xf7, 0x2c, 0xf8,
+ 0x00, 0xf0, 0x4a, 0xf8, 0x20, 0x1c, 0x09, 0xb0,
+ 0x30, 0xbd, 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00,
+ 0x80, 0xb5, 0xed, 0xf7, 0x2b, 0xf8, 0x00, 0xf0,
+ 0x7d, 0xf8, 0x02, 0x48, 0xed, 0xf7, 0x02, 0xfa,
+ 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x87,
+ 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x28, 0x0b, 0xd1, 0x06, 0x48, 0xed, 0xf7,
+ 0xf8, 0xf9, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20,
+ 0xed, 0xf7, 0xeb, 0xfa, 0x03, 0x49, 0x03, 0x20,
+ 0xf9, 0xf7, 0x35, 0xfe, 0x80, 0xbd, 0x20, 0xf7,
+ 0x01, 0x00, 0x6d, 0x87, 0x01, 0x00, 0xb0, 0xb5,
+ 0x10, 0x4d, 0x04, 0x1c, 0x13, 0x1c, 0x2a, 0x1c,
+ 0x88, 0xb0, 0xec, 0xf7, 0x02, 0xfd, 0x3c, 0x00,
+ 0xa4, 0x87, 0x01, 0x00, 0x21, 0x1c, 0x0a, 0x31,
+ 0x06, 0x22, 0x28, 0x1d, 0xe7, 0xf7, 0xa4, 0xfe,
+ 0x69, 0x46, 0x05, 0xa8, 0x62, 0x69, 0xec, 0xf7,
+ 0x87, 0xfe, 0x28, 0x1c, 0xec, 0xf7, 0xee, 0xff,
+ 0x7f, 0x23, 0xdb, 0x43, 0x28, 0x1c, 0x6a, 0x46,
+ 0x05, 0xa9, 0xed, 0xf7, 0xf9, 0xf9, 0x00, 0xf0,
+ 0x1d, 0xf8, 0x08, 0xb0, 0xb0, 0xbd, 0x00, 0x00,
+ 0x20, 0xf7, 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0xe0, 0x87, 0x01, 0x00, 0x01, 0x78,
+ 0x00, 0x29, 0x06, 0xd0, 0x02, 0x29, 0x01, 0xd0,
+ 0x05, 0x29, 0x07, 0xd1, 0x03, 0x21, 0x01, 0x70,
+ 0x80, 0xbd, 0x01, 0x21, 0x01, 0x70, 0x00, 0xf0,
+ 0x2e, 0xfa, 0x80, 0xbd, 0x03, 0x21, 0x0b, 0x20,
+ 0xe8, 0xf7, 0x4f, 0xfd, 0x80, 0xbd, 0x7c, 0xd9,
+ 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x08, 0x78,
+ 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, 0x01, 0xd0,
+ 0x05, 0x28, 0x3c, 0x00, 0x1c, 0x88, 0x01, 0x00,
+ 0x05, 0xd1, 0x04, 0x20, 0x08, 0x70, 0x80, 0xbd,
+ 0xff, 0xf7, 0x38, 0xfd, 0x80, 0xbd, 0x02, 0x21,
+ 0x0b, 0x20, 0xe8, 0xf7, 0x39, 0xfd, 0x80, 0xbd,
+ 0x7c, 0xd9, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x0b, 0x20, 0x04, 0x4a, 0xfa, 0xf7, 0x82, 0xff,
+ 0xf6, 0xf7, 0x86, 0xfd, 0x02, 0x49, 0x08, 0x61,
+ 0x80, 0xbd, 0x00, 0x00, 0xdd, 0x86, 0x01, 0x00,
+ 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x88,
+ 0x01, 0x00, 0x0c, 0x48, 0x80, 0xb5, 0x01, 0x78,
+ 0x06, 0x29, 0x0e, 0xd2, 0x02, 0xa3, 0x5b, 0x5c,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x03,
+ 0x07, 0x07, 0x07, 0x06, 0x00, 0x20, 0x00, 0xf0,
+ 0xc2, 0xf8, 0x80, 0xbd, 0x05, 0x21, 0x01, 0x70,
+ 0x80, 0xbd, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7,
+ 0x0e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x7c, 0xd9,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0x94, 0x88, 0x01, 0x00, 0x10, 0xb5, 0x0d, 0x4b,
+ 0x04, 0x1c, 0x18, 0x1c, 0x10, 0x30, 0x00, 0x2c,
+ 0x08, 0xd0, 0xdb, 0x88, 0x5b, 0x04, 0x5b, 0x0c,
+ 0x0b, 0x80, 0x80, 0x7b, 0x48, 0x80, 0x04, 0x20,
+ 0x10, 0x80, 0x08, 0xe0, 0xda, 0x88, 0x01, 0x24,
+ 0xe4, 0x03, 0x22, 0x40, 0x0c, 0x88, 0x22, 0x43,
+ 0xda, 0x80, 0x49, 0x88, 0x81, 0x73, 0x01, 0x20,
+ 0x10, 0xbd, 0x00, 0x00, 0x30, 0x00, 0x07, 0x00,
+ 0x3c, 0x00, 0xd0, 0x88, 0x01, 0x00, 0x70, 0xb5,
+ 0x10, 0x4e, 0x02, 0x1c, 0x00, 0x23, 0xf0, 0x56,
+ 0x00, 0x2a, 0x02, 0xd0, 0x08, 0x70, 0x01, 0x24,
+ 0x15, 0xe0, 0x00, 0x23, 0xcd, 0x56, 0x85, 0x42,
+ 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0x28, 0x1c,
+ 0x00, 0xf0, 0x5f, 0xf9, 0x04, 0x1c, 0x0a, 0xd0,
+ 0x07, 0x48, 0x35, 0x70, 0x00, 0x68, 0x00, 0x28,
+ 0x03, 0xd0, 0x00, 0x21, 0x0a, 0x20, 0xf9, 0xf7,
+ 0x28, 0xfd, 0x3c, 0x00, 0x0c, 0x89, 0x01, 0x00,
+ 0x00, 0xf0, 0x16, 0xfa, 0x20, 0x1c, 0x70, 0xbd,
+ 0xf4, 0x6b, 0x01, 0x00, 0x3c, 0xd9, 0x01, 0x00,
+ 0x03, 0x1c, 0x08, 0x1c, 0x00, 0x2b, 0x80, 0xb5,
+ 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x04, 0x22,
+ 0x04, 0x49, 0xe7, 0xf7, 0xe3, 0xfd, 0x02, 0xe0,
+ 0x00, 0x68, 0x00, 0xf0, 0xcf, 0xf9, 0x01, 0x20,
+ 0x80, 0xbd, 0x00, 0x00, 0xf4, 0x74, 0x01, 0x00,
+ 0x10, 0xb5, 0xff, 0xf7, 0x3c, 0x00, 0x48, 0x89,
+ 0x01, 0x00, 0x97, 0xfb, 0xff, 0xf7, 0x89, 0xfc,
+ 0x04, 0x1c, 0xff, 0xf7, 0xb8, 0xfb, 0xff, 0xf7,
+ 0x84, 0xfc, 0x00, 0x2c, 0x02, 0xd1, 0x01, 0x28,
+ 0x00, 0xd1, 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0xf8, 0xb5, 0x20, 0x4f, 0x04, 0x1c,
+ 0x78, 0x78, 0x0e, 0x1c, 0x02, 0x28, 0x2e, 0xd0,
+ 0x1e, 0x4a, 0xf9, 0x68, 0x91, 0x61, 0x14, 0x23,
+ 0x1d, 0x49, 0x58, 0x43, 0x40, 0x18, 0x3c, 0x00,
+ 0x84, 0x89, 0x01, 0x00, 0x41, 0x7b, 0xb8, 0x78,
+ 0xf8, 0xf7, 0x14, 0xfe, 0x00, 0xf0, 0x8a, 0xf9,
+ 0x00, 0x25, 0x04, 0xe0, 0x00, 0x21, 0xb8, 0x78,
+ 0xf8, 0xf7, 0x0c, 0xfe, 0x01, 0x35, 0x78, 0x78,
+ 0x14, 0x23, 0x14, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x80, 0x7a, 0xa8, 0x42, 0xf2, 0xdc, 0x00, 0x25,
+ 0x08, 0xe0, 0x00, 0x21, 0xb8, 0x78, 0xf8, 0xf7,
+ 0xfd, 0xfd, 0x0f, 0x48, 0x00, 0x68, 0x20, 0x70,
+ 0x3c, 0x00, 0xc0, 0x89, 0x01, 0x00, 0x01, 0x34,
+ 0x01, 0x35, 0xb5, 0x42, 0xf4, 0xdb, 0x09, 0x4a,
+ 0xf8, 0x68, 0x50, 0x61, 0x78, 0x78, 0x02, 0x28,
+ 0x06, 0xd1, 0xb8, 0x68, 0x32, 0x1c, 0x21, 0x1c,
+ 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, 0x25, 0xfd,
+ 0xb8, 0x68, 0x80, 0x19, 0xb8, 0x60, 0xf8, 0xbd,
+ 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x64, 0x8d, 0x01, 0x00, 0x30, 0x20,
+ 0x07, 0x00, 0x3c, 0x00, 0xfc, 0x89, 0x01, 0x00,
+ 0x70, 0xb5, 0x06, 0x1c, 0x0c, 0x4d, 0x00, 0x24,
+ 0x2c, 0x70, 0xff, 0xf7, 0x39, 0xfc, 0x0a, 0x48,
+ 0x18, 0x21, 0x1c, 0x30, 0xac, 0x60, 0xe7, 0xf7,
+ 0x43, 0xfd, 0x08, 0x48, 0x44, 0x61, 0xf9, 0xf7,
+ 0x63, 0xf9, 0x00, 0x2e, 0x06, 0xd1, 0x06, 0x48,
+ 0x29, 0x69, 0xf6, 0xf7, 0xa7, 0xfc, 0x00, 0x20,
+ 0xec, 0xf7, 0xb0, 0xfe, 0x70, 0xbd, 0x00, 0x00,
+ 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x38, 0x8a,
+ 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0x30, 0xb5, 0x12, 0x4c, 0x85, 0xb0,
+ 0x20, 0x68, 0x00, 0x28, 0x1c, 0xd0, 0x0f, 0x48,
+ 0x14, 0x38, 0x80, 0x68, 0x00, 0x28, 0x01, 0xd1,
+ 0xff, 0xf7, 0xc1, 0xfb, 0x20, 0x68, 0x00, 0x23,
+ 0x00, 0x68, 0x01, 0xaa, 0x04, 0x30, 0x01, 0x21,
+ 0xec, 0xf7, 0xd1, 0xfd, 0x08, 0x49, 0x08, 0x4a,
+ 0x08, 0x31, 0x0c, 0x31, 0x00, 0x92, 0x3c, 0x00,
+ 0x74, 0x8a, 0x01, 0x00, 0x03, 0xc9, 0x00, 0xab,
+ 0x45, 0x18, 0x99, 0x7b, 0x01, 0x9a, 0x20, 0x68,
+ 0x2b, 0x1c, 0xf2, 0xf7, 0x2b, 0xfe, 0x05, 0xb0,
+ 0x30, 0xbd, 0x00, 0x00, 0x90, 0xd9, 0x01, 0x00,
+ 0x29, 0x81, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c,
+ 0x14, 0x23, 0x60, 0x70, 0x58, 0x43, 0x12, 0x4b,
+ 0xc1, 0x18, 0x8a, 0x88, 0xe2, 0x80, 0x18, 0x58,
+ 0xe0, 0x60, 0x08, 0x7a, 0xa0, 0x70, 0xff, 0x28,
+ 0x3c, 0x00, 0xb0, 0x8a, 0x01, 0x00, 0x12, 0xd0,
+ 0x00, 0x22, 0x08, 0x21, 0x0d, 0x4b, 0xf8, 0xf7,
+ 0x22, 0xfd, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68,
+ 0xef, 0xf7, 0xbd, 0xfe, 0x0a, 0x49, 0xe0, 0x68,
+ 0x48, 0x61, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60,
+ 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x60, 0x78,
+ 0x02, 0x28, 0x01, 0xd1, 0xff, 0xf7, 0xdf, 0xfc,
+ 0x10, 0xbd, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d,
+ 0x01, 0x00, 0x3c, 0x00, 0xec, 0x8a, 0x01, 0x00,
+ 0xb8, 0x0b, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0xfe, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x06, 0x21,
+ 0x15, 0x4b, 0x41, 0x43, 0x58, 0x5c, 0x82, 0x06,
+ 0x14, 0x48, 0x92, 0x0e, 0x42, 0x71, 0xc9, 0x18,
+ 0x4a, 0x78, 0xd2, 0x06, 0xd2, 0x0e, 0x02, 0x71,
+ 0x42, 0x78, 0x0c, 0x23, 0x1a, 0x43, 0x42, 0x70,
+ 0x42, 0x78, 0x8b, 0x78, 0x92, 0x08, 0x92, 0x00,
+ 0x9b, 0x07, 0x9b, 0x0f, 0x3c, 0x00, 0x28, 0x8b,
+ 0x01, 0x00, 0x1a, 0x43, 0x42, 0x70, 0x02, 0x78,
+ 0xc0, 0x23, 0x9a, 0x43, 0x40, 0x32, 0x02, 0x70,
+ 0x02, 0x78, 0x38, 0x23, 0x1a, 0x43, 0x02, 0x70,
+ 0x02, 0x78, 0xc9, 0x78, 0x04, 0x23, 0x9a, 0x43,
+ 0x89, 0x00, 0x19, 0x40, 0x11, 0x43, 0x01, 0x70,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0xd8, 0x8d,
+ 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x8f, 0xb5,
+ 0x00, 0x20, 0x02, 0x90, 0x03, 0x90, 0x3c, 0x00,
+ 0x64, 0x8b, 0x01, 0x00, 0x07, 0x48, 0x02, 0xaa,
+ 0x03, 0xa9, 0x00, 0x91, 0x01, 0x92, 0x43, 0x89,
+ 0x02, 0x89, 0x03, 0xc8, 0xff, 0xf7, 0xd4, 0xfb,
+ 0x03, 0x98, 0x02, 0x99, 0xff, 0xf7, 0x04, 0xfc,
+ 0x8f, 0xbd, 0x00, 0x00, 0x04, 0x8e, 0x01, 0x00,
+ 0x08, 0x49, 0x4a, 0x78, 0x00, 0x2a, 0x03, 0xd1,
+ 0x88, 0x80, 0x00, 0x20, 0x88, 0x60, 0x70, 0x47,
+ 0x14, 0x23, 0x5a, 0x43, 0x04, 0x4b, 0xd2, 0x18,
+ 0x3c, 0x00, 0xa0, 0x8b, 0x01, 0x00, 0xd2, 0x88,
+ 0x42, 0x43, 0xc8, 0x88, 0x42, 0x43, 0x8a, 0x60,
+ 0x70, 0x47, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d,
+ 0x01, 0x00, 0xf8, 0xb5, 0x25, 0x4e, 0x04, 0x1c,
+ 0x30, 0x7a, 0x40, 0x08, 0x40, 0x00, 0x30, 0x72,
+ 0xb0, 0x7a, 0x00, 0x20, 0xb0, 0x72, 0x01, 0x27,
+ 0x01, 0x2c, 0x20, 0x4d, 0x01, 0xd0, 0xfc, 0x42,
+ 0x13, 0xd1, 0x30, 0x7b, 0x38, 0x43, 0x30, 0x73,
+ 0x00, 0x22, 0x3c, 0x00, 0xdc, 0x8b, 0x01, 0x00,
+ 0x21, 0x1c, 0x00, 0x20, 0xff, 0xf7, 0x6e, 0xfb,
+ 0x63, 0x1c, 0x01, 0xd1, 0x3f, 0x21, 0xe9, 0x73,
+ 0xb1, 0x7a, 0xa0, 0x22, 0x11, 0x43, 0xb1, 0x72,
+ 0x31, 0x7a, 0x39, 0x43, 0x31, 0x72, 0xf8, 0xbd,
+ 0x30, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x30, 0x73,
+ 0x01, 0x22, 0x21, 0x1c, 0x01, 0x20, 0xff, 0xf7,
+ 0x59, 0xfb, 0x01, 0x20, 0x00, 0x21, 0xe9, 0x73,
+ 0xb1, 0x7a, 0x02, 0x22, 0x3c, 0x00, 0x18, 0x8c,
+ 0x01, 0x00, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a,
+ 0x04, 0x22, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a,
+ 0x30, 0x22, 0x11, 0x43, 0xb1, 0x72, 0x31, 0x7a,
+ 0x39, 0x43, 0x31, 0x72, 0x08, 0x49, 0x4a, 0x68,
+ 0x80, 0x23, 0x9a, 0x43, 0x4a, 0x60, 0x0a, 0x68,
+ 0x1a, 0x43, 0x0a, 0x60, 0x31, 0x7b, 0x39, 0x43,
+ 0x31, 0x73, 0xd7, 0xe7, 0x00, 0x00, 0x88, 0x00,
+ 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0x3c, 0x00,
+ 0x54, 0x8c, 0x01, 0x00, 0x6c, 0x00, 0x07, 0x00,
+ 0xb0, 0xb5, 0x0e, 0x4d, 0x0e, 0x48, 0x29, 0x69,
+ 0xf6, 0xf7, 0x9e, 0xfb, 0x0d, 0x48, 0xec, 0xf7,
+ 0x93, 0xfd, 0x0d, 0x48, 0x09, 0x4c, 0x00, 0x88,
+ 0x1c, 0x34, 0xa0, 0x82, 0xf1, 0xf7, 0x5a, 0xff,
+ 0x20, 0x61, 0xfa, 0xf7, 0x97, 0xf8, 0x02, 0x1c,
+ 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xec, 0xf7,
+ 0x8b, 0xff, 0x32, 0x20, 0xe8, 0x60, 0xff, 0xf7,
+ 0x3c, 0x00, 0x90, 0x8c, 0x01, 0x00, 0xa5, 0xfa,
+ 0xb0, 0xbd, 0x7c, 0xd9, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0xdd, 0x84, 0x01, 0x00, 0x20, 0xf7,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x68, 0x78,
+ 0x00, 0x28, 0x0e, 0xd0, 0x14, 0x23, 0x08, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x44, 0x7a, 0x06, 0xe0,
+ 0xa8, 0x68, 0xe0, 0x40, 0x01, 0x06, 0x09, 0x0e,
+ 0xa8, 0x78, 0xf8, 0xf7, 0x76, 0xfc, 0x08, 0x3c,
+ 0xf6, 0xd5, 0x3c, 0x00, 0xcc, 0x8c, 0x01, 0x00,
+ 0xb0, 0xbd, 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00,
+ 0x64, 0x8d, 0x01, 0x00, 0x01, 0x1c, 0x14, 0x48,
+ 0xb0, 0xb5, 0x01, 0x60, 0x13, 0x48, 0x02, 0x7f,
+ 0x02, 0x23, 0x9a, 0x43, 0x02, 0x77, 0x02, 0x7f,
+ 0x01, 0x24, 0x22, 0x43, 0x02, 0x77, 0x10, 0x4d,
+ 0x00, 0x29, 0x0c, 0xd0, 0x01, 0x22, 0x00, 0x21,
+ 0x03, 0x20, 0xef, 0xf7, 0x9f, 0xfd, 0x0d, 0x49,
+ 0x48, 0x7c, 0xa0, 0x43, 0x3c, 0x00, 0x08, 0x8d,
+ 0x01, 0x00, 0x48, 0x74, 0x68, 0x7a, 0x20, 0x43,
+ 0x68, 0x72, 0xb0, 0xbd, 0x01, 0x7f, 0x21, 0x43,
+ 0x01, 0x77, 0x68, 0x7a, 0x40, 0x08, 0x40, 0x00,
+ 0x68, 0x72, 0x01, 0x22, 0x00, 0x21, 0x03, 0x20,
+ 0xef, 0xf7, 0xb1, 0xfd, 0xb0, 0xbd, 0xf4, 0x74,
+ 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x88, 0x00,
+ 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0xb5,
+ 0x07, 0x4c, 0x21, 0x1c, 0x00, 0x20, 0x3c, 0x00,
+ 0x44, 0x8d, 0x01, 0x00, 0xf9, 0xf7, 0x56, 0xfb,
+ 0x05, 0x48, 0x00, 0x23, 0xc0, 0x56, 0x01, 0x28,
+ 0x03, 0xdd, 0x21, 0x1c, 0x00, 0x20, 0xf9, 0xf7,
+ 0x19, 0xfb, 0x10, 0xbd, 0x65, 0x1a, 0x00, 0x00,
+ 0xf4, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x08, 0x01, 0x01, 0x00, 0x02, 0x18, 0x04, 0xff,
+ 0x82, 0xe8, 0xd7, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+ 0x3c, 0x00, 0x80, 0x8d, 0x01, 0x00, 0x00, 0x18,
+ 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0x01, 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0x02, 0x10,
+ 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0c,
+ 0x0d, 0x0e, 0x3c, 0x00, 0xbc, 0x8d, 0x01, 0x00,
+ 0xff, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b,
+ 0x1c, 0x1d, 0xff, 0x1a, 0x11, 0x13, 0x12, 0x0f,
+ 0x10, 0xff, 0x02, 0x00, 0xff, 0x01, 0x03, 0x09,
+ 0x0a, 0x0b, 0x00, 0x00, 0x30, 0x0d, 0x02, 0x00,
+ 0x00, 0x00, 0x28, 0x0e, 0x03, 0x00, 0x00, 0x00,
+ 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0d,
+ 0x02, 0x01, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x01,
+ 0x00, 0x00, 0x23, 0x0d, 0x3c, 0x00, 0xf8, 0x8d,
+ 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x1d, 0x0d,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe,
+ 0xfb, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0x8e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x8e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x8e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x8e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x8f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x8f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x8f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x8f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x90, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x90, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x90, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x90,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0x91, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0x91, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0x91, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0x91,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0x91, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0x92, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0x92, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0x92,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0x92, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0x93, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0x93, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0x93,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0x93, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0x94, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0x94, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0x94,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0x94, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0x95, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0x95, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0x95,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0x95, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0x95, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0x96, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0x96,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0x96, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x96, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x97, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x97,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x97, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x97, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x98, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x98,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x98, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x98, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x98, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x99,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x99, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x99, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x99, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x9a,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x9a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x9a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x9a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x9b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x9b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x9b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x9b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x9c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x9c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x9c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x9c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x9c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x9d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x9d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x9d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x9d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x9e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x9e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x9e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x9e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x9f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x9f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x9f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x9f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xa0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xa0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xa0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xa0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xa0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xa1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xa1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xa1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xa1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xa2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xa2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xa2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xa2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xa3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xa3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xa3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xa3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xa4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xa4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xa4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xa4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xa4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xa5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xa5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xa5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xa5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xa6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xa6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xa6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xa6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xa7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xa7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xa7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xa7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xa7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xa8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xa8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xa8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xa8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xa9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xa9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xa9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xa9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xaa,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xaa, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xaa, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xaa, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xab,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xab, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xab, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xab, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xab,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xac, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xac, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xac, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xac,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xad, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xad, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xad, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xad,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xae, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xae, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xae, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xae,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xaf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xaf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xaf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xaf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xaf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xb0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xb0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xb0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xb0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xb1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xb1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xb1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xb1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xb2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xb2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xb2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xb2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xb3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xb3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xb3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xb3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xb3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xb4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xb4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xb4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xb4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xb5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xb5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xb5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xb5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xb6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xb6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xb6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xb6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xb6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xb7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xb7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xb7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xb7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xb8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xb8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xb8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xb8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xb9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xb9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xb9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xb9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xba,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xba, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xba, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xba, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xba,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xbb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xbb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xbb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xbb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xbc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xbc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xbc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xbc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xbd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xbd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xbd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xbd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xbe, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xbe, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xbe, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xbe,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xbe, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xbf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xbf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xbf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xbf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xc0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xc0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xc0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xc0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xc1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xc1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xc1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xc1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xc2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xc2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xc2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xc2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xc2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xc3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xc3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xc3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xc3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xc4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xc4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xc4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xc4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xc5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xc5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xc5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xc5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xc5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xc6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xc6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xc6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xc6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xc7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xc7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xc7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xc7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xc8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xc8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xc8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xc8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xc9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xc9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xc9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xc9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xc9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xca, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xca, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xca, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xca,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xcb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xcb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xcb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xcb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xcc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xcc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xcc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xcc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xcd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xcd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xcd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xcd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xcd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xce, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xce, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xce,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xce, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xcf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xcf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xcf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xcf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xd0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xd0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xd0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xd0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xd1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xd1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xd1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xd1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xd1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xd2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xd2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xd2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xd2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xd3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xd3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xd3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xd3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xd4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xd4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xd4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xd4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xd4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xd5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xd5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xd5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xd5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xd6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xd6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xd6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xd6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xd7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xd7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xd7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xd7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xd8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xd8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xd8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xd8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xd8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xd9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xd9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xd9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xd9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xda, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xda, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xda, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xda,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xdb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xdb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xdb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xdb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xdc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xdc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xdc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xdc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xdc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xdd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xdd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xdd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xdd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xde, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xde, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xde,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xde, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xdf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xdf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xdf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xdf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xe0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xe0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xe0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xe0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xe0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xe1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xe1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xe1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xe1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xe2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xe2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xe2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xe2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xe3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xe3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xe3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xe3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xe3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xe4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xe4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xe4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xe4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xe5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xe5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xe5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xe5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xe6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xe6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xe6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xe6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xe7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xe7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xe7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xe7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xe7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xe8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xe8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xe8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xe8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xe9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xe9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xe9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xe9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xea, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xea, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xea, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xea,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xeb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xeb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xeb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xeb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xeb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xec, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xec, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xec,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xec, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xed, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xed, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xed,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xed, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xee, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xee, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xee,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xee, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xef, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xef, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xef,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xef, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xef, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xf0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xf0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xf0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xf0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xf1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xf1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xf1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xf1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xf2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xf2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xf2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xf2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xf2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xf3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xf3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xf3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xf3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xf4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xf4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xf4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xf4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xf5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xf5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xf5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xf5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xf6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xf6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xf6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xf6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xf6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xf7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xf7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xf7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xf7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xf8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xf8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xf8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xf8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xf9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xf9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xf9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xf9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xfa, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xfa, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xfa, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xfa,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xfa, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xfb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xfb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xfb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xfb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xfc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xfc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xfc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xfc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xfd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xfd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xfd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xfd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xfe, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xfe, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xfe,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xfe, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xfe, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xff, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0x00, 0x10, 0x04, 0x00, 0x70, 0xb5, 0x2b, 0x48,
+ 0x06, 0x21, 0x81, 0x75, 0xc1, 0x75, 0x01, 0x7e,
+ 0x49, 0x08, 0x49, 0x00, 0x01, 0x76, 0x01, 0x7e,
+ 0x02, 0x22, 0x91, 0x43, 0x01, 0x76, 0x26, 0x49,
+ 0x0b, 0x78, 0x5b, 0x08, 0x5b, 0x00, 0x0b, 0x70,
+ 0x04, 0x23, 0x8b, 0x70, 0x0c, 0x23, 0x43, 0x76,
+ 0x20, 0x23, 0x03, 0x75, 0x1a, 0x24, 0x44, 0x75,
+ 0x24, 0x24, 0x84, 0x76, 0x10, 0x24, 0xc4, 0x76,
+ 0x3c, 0x00, 0x3c, 0x10, 0x04, 0x00, 0x2a, 0x25,
+ 0x4d, 0x70, 0x05, 0x7a, 0x30, 0x26, 0xb5, 0x43,
+ 0x20, 0x35, 0x05, 0x72, 0x85, 0x7a, 0x6d, 0x08,
+ 0x6d, 0x00, 0x85, 0x72, 0x85, 0x7a, 0x95, 0x43,
+ 0x85, 0x72, 0x85, 0x7a, 0x04, 0x26, 0x35, 0x43,
+ 0x85, 0x72, 0x85, 0x7a, 0x08, 0x26, 0x35, 0x43,
+ 0x85, 0x72, 0x85, 0x7a, 0xa5, 0x43, 0x85, 0x72,
+ 0x05, 0x7b, 0x2c, 0x43, 0x04, 0x73, 0x04, 0x7b,
+ 0x1c, 0x43, 0x3c, 0x00, 0x78, 0x10, 0x04, 0x00,
+ 0x04, 0x73, 0x04, 0x7b, 0x40, 0x25, 0x2c, 0x43,
+ 0x04, 0x73, 0x84, 0x7a, 0x23, 0x43, 0x83, 0x72,
+ 0x83, 0x7a, 0xab, 0x43, 0x83, 0x72, 0x03, 0x7b,
+ 0x80, 0x24, 0x23, 0x43, 0x03, 0x73, 0x08, 0x78,
+ 0x90, 0x43, 0x08, 0x70, 0x08, 0x78, 0x01, 0x22,
+ 0x10, 0x43, 0x08, 0x70, 0x08, 0x78, 0x04, 0x22,
+ 0x90, 0x43, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x00,
+ 0x0c, 0x80, 0x07, 0x00, 0x3c, 0x00, 0xb4, 0x10,
+ 0x04, 0x00, 0x80, 0x80, 0x07, 0x00, 0x01, 0x49,
+ 0x04, 0x20, 0x48, 0x73, 0x70, 0x47, 0x40, 0x80,
+ 0x07, 0x00, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20,
+ 0x08, 0x80, 0x00, 0xf0, 0x0a, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x67, 0xfb,
+ 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x49, 0x18, 0x20,
+ 0xc1, 0xf7, 0x3b, 0xfa, 0x09, 0x49, 0x3c, 0x00,
+ 0xf0, 0x10, 0x04, 0x00, 0x02, 0x20, 0xc1, 0xf7,
+ 0x37, 0xfa, 0x08, 0x49, 0x1f, 0x20, 0xc1, 0xf7,
+ 0x33, 0xfa, 0x07, 0x49, 0x1c, 0x20, 0xc1, 0xf7,
+ 0x2f, 0xfa, 0x06, 0x49, 0x03, 0x20, 0xc1, 0xf7,
+ 0x2b, 0xfa, 0x80, 0xbd, 0x99, 0x2a, 0x00, 0x00,
+ 0x41, 0x25, 0x00, 0x00, 0x55, 0x25, 0x00, 0x00,
+ 0x5d, 0x25, 0x00, 0x00, 0x39, 0x25, 0x00, 0x00,
+ 0x80, 0xb5, 0xbf, 0xf7, 0x91, 0xfd, 0x80, 0xbd,
+ 0x3c, 0x00, 0x2c, 0x11, 0x04, 0x00, 0x80, 0xb5,
+ 0x05, 0x4a, 0x05, 0x49, 0x0a, 0x20, 0xbf, 0xf7,
+ 0x4e, 0xff, 0x01, 0x20, 0x04, 0x49, 0x80, 0x02,
+ 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, 0xb4, 0x74,
+ 0x01, 0x00, 0xb1, 0x64, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x91, 0xfe,
+ 0x80, 0xbd, 0x80, 0xb5, 0x05, 0x4a, 0x05, 0x49,
+ 0x1b, 0x20, 0xbf, 0xf7, 0x38, 0xff, 0x01, 0x20,
+ 0x04, 0x49, 0x3c, 0x00, 0x68, 0x11, 0x04, 0x00,
+ 0xc0, 0x06, 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd,
+ 0xb8, 0x74, 0x01, 0x00, 0x2d, 0x6e, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x04, 0x48,
+ 0x00, 0xf0, 0x80, 0xfe, 0x03, 0x49, 0x00, 0x20,
+ 0x48, 0x60, 0x88, 0x60, 0x80, 0xbd, 0x00, 0x00,
+ 0x41, 0x4b, 0x00, 0x00, 0xbc, 0x74, 0x01, 0x00,
+ 0x80, 0xb5, 0xc5, 0xf7, 0xd5, 0xfe, 0xce, 0xf7,
+ 0xd9, 0xf8, 0x03, 0x49, 0x3c, 0x00, 0xa4, 0x11,
+ 0x04, 0x00, 0x08, 0x60, 0x03, 0x49, 0x0a, 0x20,
+ 0xd1, 0xf7, 0xef, 0xf8, 0x80, 0xbd, 0xbc, 0x74,
+ 0x01, 0x00, 0x49, 0x6e, 0x00, 0x00, 0x80, 0xb5,
+ 0x01, 0x22, 0x20, 0x21, 0x06, 0x20, 0xc8, 0xf7,
+ 0x56, 0xfc, 0xbf, 0xf7, 0x70, 0xfe, 0x03, 0x49,
+ 0x00, 0x20, 0x08, 0x60, 0x20, 0x21, 0x02, 0x48,
+ 0xbf, 0xf7, 0x63, 0xf9, 0x80, 0xbd, 0xcc, 0x5c,
+ 0x01, 0x00, 0x64, 0x6d, 0x01, 0x00, 0x3c, 0x00,
+ 0xe0, 0x11, 0x04, 0x00, 0x08, 0x48, 0x80, 0xb5,
+ 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48,
+ 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, 0xbf, 0xf7,
+ 0xf3, 0xf8, 0x04, 0x4a, 0x04, 0x49, 0x03, 0x20,
+ 0xbf, 0xf7, 0xac, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x50, 0x6d, 0x01, 0x00, 0x89, 0x98, 0x00, 0x00,
+ 0x91, 0x98, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x03, 0xf8, 0x00, 0xf0, 0x19, 0xf8, 0x80, 0xbd,
+ 0x3c, 0x00, 0x1c, 0x12, 0x04, 0x00, 0x10, 0xb5,
+ 0x09, 0x4c, 0x60, 0x21, 0x20, 0x1c, 0xbf, 0xf7,
+ 0x3a, 0xf9, 0x00, 0x20, 0xc0, 0x43, 0xa0, 0x60,
+ 0x20, 0x60, 0xff, 0x20, 0x02, 0x30, 0xe0, 0x84,
+ 0x20, 0x22, 0x20, 0x1c, 0x40, 0x30, 0x02, 0x49,
+ 0xbf, 0xf7, 0x5b, 0xf9, 0x10, 0xbd, 0x00, 0x10,
+ 0x07, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x20,
+ 0x0a, 0x49, 0xc0, 0x43, 0x88, 0x60, 0x09, 0x4b,
+ 0x0a, 0x49, 0x3c, 0x00, 0x58, 0x12, 0x04, 0x00,
+ 0x00, 0x20, 0x82, 0x00, 0x01, 0x30, 0x00, 0x06,
+ 0x00, 0x0e, 0x20, 0x28, 0x99, 0x50, 0xf8, 0xd3,
+ 0x06, 0x49, 0x04, 0x4a, 0x08, 0x1c, 0x10, 0x30,
+ 0x08, 0x3a, 0x03, 0xc2, 0x70, 0x47, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00,
+ 0x75, 0x75, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00,
+ 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x0c, 0x38, 0x3c, 0x00, 0x94, 0x12,
+ 0x04, 0x00, 0x01, 0x21, 0x41, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x03, 0x48, 0x00, 0x21, 0x00, 0x22,
+ 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, 0x70, 0x47,
+ 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x04, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x48, 0x61, 0x02, 0x48,
+ 0x40, 0x21, 0x1c, 0x30, 0xbf, 0xf7, 0xe9, 0xf8,
+ 0x80, 0xbd, 0xfc, 0x5a, 0x01, 0x00, 0x3c, 0x00,
+ 0xd0, 0x12, 0x04, 0x00, 0x80, 0xb5, 0xce, 0xf7,
+ 0x3f, 0xf8, 0x03, 0x49, 0x88, 0x61, 0x03, 0x49,
+ 0x03, 0x20, 0xd1, 0xf7, 0x55, 0xf8, 0x80, 0xbd,
+ 0xfc, 0x5a, 0x01, 0x00, 0x0d, 0x17, 0x01, 0x00,
+ 0x80, 0xb5, 0xc0, 0xf7, 0xa5, 0xf9, 0x80, 0xbd,
+ 0xfe, 0xb5, 0x6c, 0x49, 0x00, 0x20, 0x00, 0x90,
+ 0xc8, 0x78, 0x6b, 0x4c, 0x6b, 0x4f, 0x43, 0x07,
+ 0xc0, 0x06, 0xc0, 0x17, 0xdb, 0x0e, 0xe3, 0x58,
+ 0x3c, 0x00, 0x0c, 0x13, 0x04, 0x00, 0x01, 0x30,
+ 0x38, 0x62, 0x3b, 0x61, 0x08, 0x1c, 0x80, 0x78,
+ 0x66, 0x4e, 0x03, 0x22, 0x41, 0x07, 0xa0, 0x36,
+ 0x02, 0x96, 0x49, 0x0f, 0x31, 0x72, 0x89, 0x00,
+ 0x61, 0x58, 0x3c, 0x1c, 0x61, 0x61, 0x01, 0x91,
+ 0xc0, 0x06, 0xc0, 0x0f, 0x78, 0x62, 0x20, 0x1c,
+ 0x00, 0x27, 0x87, 0x61, 0x00, 0x20, 0x21, 0x1c,
+ 0xc8, 0x61, 0x59, 0x48, 0x59, 0x49, 0x00, 0x78,
+ 0x09, 0x79, 0x3c, 0x00, 0x48, 0x13, 0x04, 0x00,
+ 0x5a, 0x4c, 0x4e, 0x07, 0x76, 0x0f, 0x71, 0x1c,
+ 0x8c, 0x46, 0xb1, 0x00, 0x8e, 0x46, 0x56, 0x49,
+ 0x80, 0x31, 0x00, 0x28, 0x24, 0xd0, 0x52, 0x4f,
+ 0x01, 0x28, 0x7f, 0x78, 0x1a, 0xd0, 0x02, 0x28,
+ 0x71, 0xd1, 0x4f, 0x48, 0x00, 0x2f, 0x0c, 0xd0,
+ 0x01, 0x2f, 0x6c, 0xd1, 0x40, 0x79, 0x4d, 0x4d,
+ 0x40, 0x07, 0x40, 0x0f, 0x82, 0x00, 0xaa, 0x58,
+ 0x4b, 0x4d, 0x01, 0x30, 0x3c, 0x00, 0x84, 0x13,
+ 0x04, 0x00, 0xea, 0x61, 0xa0, 0x73, 0x04, 0x22,
+ 0x4b, 0x48, 0x48, 0x4d, 0xc8, 0x61, 0x4a, 0x48,
+ 0x00, 0x2f, 0x00, 0xd0, 0x4a, 0x48, 0x2f, 0x1c,
+ 0x11, 0xe0, 0x42, 0x48, 0x00, 0x2f, 0x55, 0xd1,
+ 0x07, 0x70, 0x02, 0x27, 0x47, 0x70, 0x3f, 0x48,
+ 0x40, 0x78, 0x00, 0x28, 0x10, 0xd0, 0x01, 0x28,
+ 0x01, 0xd0, 0x02, 0x28, 0x4a, 0xd1, 0x3f, 0x48,
+ 0x3d, 0x4f, 0xc8, 0x61, 0x3f, 0x48, 0x3c, 0x00,
+ 0xc0, 0x13, 0x04, 0x00, 0x88, 0x61, 0x3a, 0x49,
+ 0x70, 0x46, 0x08, 0x58, 0x35, 0x1c, 0xb8, 0x61,
+ 0x60, 0x46, 0x60, 0x73, 0x04, 0xe0, 0x3c, 0x48,
+ 0x02, 0x22, 0x88, 0x61, 0x3b, 0x48, 0xc8, 0x61,
+ 0x00, 0x20, 0x32, 0x49, 0x06, 0xe0, 0x0e, 0x18,
+ 0xb6, 0x78, 0x76, 0x07, 0x76, 0x0f, 0x04, 0x2e,
+ 0x2f, 0xd8, 0x01, 0x30, 0x90, 0x42, 0xf6, 0xd3,
+ 0xc8, 0x79, 0x2e, 0x4f, 0xc0, 0x07, 0xc0, 0x0f,
+ 0x3c, 0x00, 0xfc, 0x13, 0x04, 0x00, 0xf8, 0x60,
+ 0x33, 0x48, 0x41, 0x68, 0x19, 0x43, 0x41, 0x60,
+ 0x81, 0x68, 0x19, 0x43, 0x81, 0x60, 0x01, 0x9a,
+ 0xb9, 0x69, 0x8c, 0x46, 0x11, 0x43, 0xfa, 0x69,
+ 0x86, 0x68, 0x11, 0x43, 0x8e, 0x43, 0x86, 0x60,
+ 0x46, 0x68, 0x31, 0x43, 0x41, 0x60, 0x01, 0x99,
+ 0x0b, 0x43, 0x18, 0x1c, 0x61, 0x46, 0x08, 0x43,
+ 0x10, 0x43, 0x01, 0x1c, 0x00, 0x22, 0x02, 0x20,
+ 0xc7, 0xf7, 0x3c, 0x00, 0x38, 0x14, 0x04, 0x00,
+ 0x03, 0xfa, 0x1e, 0x4e, 0x40, 0x3e, 0x70, 0x78,
+ 0xc0, 0x08, 0xc0, 0x00, 0x28, 0x43, 0x70, 0x70,
+ 0x70, 0x1c, 0x01, 0x78, 0x00, 0xe0, 0x29, 0xe0,
+ 0x08, 0x25, 0xa9, 0x43, 0x01, 0x70, 0x01, 0x20,
+ 0xc0, 0x43, 0xb0, 0x80, 0x00, 0x21, 0x01, 0x20,
+ 0xcf, 0xf7, 0x6c, 0xfc, 0x30, 0x1c, 0x80, 0x30,
+ 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, 0x81, 0x70,
+ 0x0f, 0x21, 0x01, 0x70, 0x3c, 0x00, 0x74, 0x14,
+ 0x04, 0x00, 0x16, 0x4a, 0x69, 0x04, 0x11, 0x60,
+ 0x51, 0x60, 0x02, 0x9e, 0x10, 0x21, 0x32, 0x7a,
+ 0x7b, 0x6a, 0x00, 0x2b, 0x00, 0xd1, 0x00, 0x21,
+ 0x11, 0x43, 0x21, 0x73, 0x81, 0x78, 0x29, 0x43,
+ 0x81, 0x70, 0xe0, 0x78, 0x01, 0x21, 0x08, 0x43,
+ 0xe0, 0x70, 0xd2, 0xf7, 0xf2, 0xf9, 0x01, 0x20,
+ 0x00, 0x90, 0x00, 0x98, 0xfe, 0xbd, 0xc0, 0x57,
+ 0x01, 0x00, 0x6c, 0x43, 0x01, 0x00, 0x3c, 0x00,
+ 0xb0, 0x14, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x40, 0x90, 0x07, 0x00, 0xc9, 0x1d, 0x00, 0x00,
+ 0x81, 0x1d, 0x00, 0x00, 0xa5, 0x1d, 0x00, 0x00,
+ 0x99, 0x1d, 0x00, 0x00, 0xf1, 0x1d, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x03, 0x49, 0x00, 0x20, 0x88, 0x62, 0x08, 0x70,
+ 0x48, 0x70, 0x08, 0x71, 0x08, 0x62, 0x70, 0x47,
+ 0xac, 0x7e, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x3c, 0x00, 0xec, 0x14, 0x04, 0x00, 0x00, 0x20,
+ 0xcd, 0xf7, 0x69, 0xff, 0x80, 0xbd, 0xb0, 0xb5,
+ 0x0f, 0x48, 0xc0, 0xf7, 0x18, 0xfc, 0x0e, 0x4d,
+ 0x03, 0x20, 0x28, 0x70, 0x0d, 0x49, 0x0d, 0x48,
+ 0x0c, 0x39, 0x48, 0x60, 0x0d, 0x48, 0x0a, 0x4c,
+ 0x88, 0x60, 0x40, 0x21, 0x18, 0x34, 0x20, 0x1c,
+ 0xbe, 0xf7, 0xc1, 0xff, 0xff, 0x21, 0x68, 0x68,
+ 0x09, 0x06, 0x08, 0x43, 0x20, 0x60, 0xff, 0x21,
+ 0x06, 0x22, 0x3c, 0x00, 0x28, 0x15, 0x04, 0x00,
+ 0x20, 0x1d, 0xbf, 0xf7, 0x79, 0xf8, 0x01, 0x20,
+ 0xe0, 0x60, 0xb0, 0xbd, 0xc0, 0xa8, 0x13, 0x0a,
+ 0x20, 0x6e, 0x01, 0x00, 0xc0, 0xa8, 0x13, 0x01,
+ 0xff, 0xff, 0xff, 0x00, 0x80, 0xb5, 0x02, 0x49,
+ 0x01, 0x20, 0xc8, 0xf7, 0x45, 0xff, 0x80, 0xbd,
+ 0x9d, 0x1c, 0x00, 0x00, 0x98, 0xb5, 0x0c, 0x4c,
+ 0x00, 0x20, 0x60, 0x60, 0xe0, 0x60, 0x0b, 0x4b,
+ 0x0b, 0x49, 0x82, 0x00, 0x3c, 0x00, 0x64, 0x15,
+ 0x04, 0x00, 0x01, 0x30, 0x20, 0x28, 0x99, 0x50,
+ 0xfa, 0xdb, 0x6a, 0x46, 0x09, 0x49, 0x05, 0x20,
+ 0xbf, 0xf7, 0x2f, 0xfd, 0x00, 0x20, 0xc0, 0x43,
+ 0x20, 0x60, 0x06, 0x49, 0x20, 0x20, 0x08, 0x60,
+ 0x48, 0x60, 0x98, 0xbd, 0x00, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xa9, 0x75,
+ 0x00, 0x00, 0xb5, 0x9f, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x05, 0x49, 0x00, 0x20, 0x3c, 0x00,
+ 0xa0, 0x15, 0x04, 0x00, 0x08, 0x60, 0x05, 0x48,
+ 0x81, 0x78, 0x28, 0x22, 0x91, 0x43, 0x81, 0x70,
+ 0x81, 0x78, 0x11, 0x43, 0x81, 0x70, 0x70, 0x47,
+ 0x78, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x41, 0x48, 0x10, 0xb5,
+ 0x00, 0x68, 0x02, 0x21, 0x88, 0x43, 0x3f, 0x49,
+ 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x02, 0x21,
+ 0x08, 0x43, 0x3c, 0x49, 0x08, 0x60, 0x3c, 0x48,
+ 0x3c, 0x00, 0xdc, 0x15, 0x04, 0x00, 0x40, 0x68,
+ 0x80, 0x21, 0x88, 0x43, 0x3a, 0x49, 0x48, 0x60,
+ 0x08, 0x1c, 0x00, 0x68, 0x80, 0x21, 0x08, 0x43,
+ 0x37, 0x49, 0x08, 0x60, 0x37, 0x48, 0x01, 0x7a,
+ 0x01, 0x24, 0x21, 0x43, 0x01, 0x72, 0x01, 0x7a,
+ 0x02, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7a,
+ 0x04, 0x22, 0x91, 0x43, 0x01, 0x72, 0x01, 0x7a,
+ 0x08, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7b,
+ 0x21, 0x43, 0x3c, 0x00, 0x18, 0x16, 0x04, 0x00,
+ 0x01, 0x73, 0x01, 0x7b, 0x02, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x01, 0x7b, 0x04, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x2e, 0x21, 0x41, 0x73, 0x81, 0x7b,
+ 0x38, 0x22, 0x91, 0x43, 0x28, 0x31, 0x81, 0x73,
+ 0x20, 0x21, 0x41, 0x74, 0x81, 0x7b, 0xc9, 0x08,
+ 0xc9, 0x00, 0x03, 0x31, 0x81, 0x73, 0x22, 0x21,
+ 0xc1, 0x73, 0x20, 0x49, 0x3c, 0x00, 0x54, 0x16,
+ 0x04, 0x00, 0x09, 0x7a, 0x41, 0x72, 0x1e, 0x49,
+ 0x49, 0x7a, 0x01, 0x74, 0x3c, 0x22, 0x02, 0x77,
+ 0x01, 0x1c, 0x10, 0x31, 0x4a, 0x73, 0x50, 0x23,
+ 0x8b, 0x73, 0x5a, 0x23, 0xcb, 0x73, 0x0d, 0x23,
+ 0x01, 0x1c, 0x20, 0x31, 0x0b, 0x70, 0x17, 0x4b,
+ 0x43, 0x84, 0x0e, 0x23, 0x4b, 0x70, 0x00, 0x21,
+ 0x41, 0x82, 0x30, 0x21, 0x01, 0x70, 0x05, 0x21,
+ 0x41, 0x70, 0x04, 0x21, 0x41, 0x71, 0x3c, 0x00,
+ 0x90, 0x16, 0x04, 0x00, 0x84, 0x71, 0xc4, 0x71,
+ 0x0c, 0x21, 0x01, 0x71, 0xf8, 0x21, 0x41, 0x80,
+ 0x0f, 0x49, 0xca, 0x72, 0x8a, 0x72, 0x03, 0x22,
+ 0x0a, 0x72, 0x09, 0x22, 0x4a, 0x72, 0x08, 0x22,
+ 0x0a, 0x73, 0x02, 0x7a, 0x40, 0x23, 0x1a, 0x43,
+ 0x02, 0x72, 0x4c, 0x73, 0xff, 0xf7, 0xa2, 0xfc,
+ 0x08, 0x48, 0x01, 0x78, 0x21, 0x43, 0x01, 0x70,
+ 0x10, 0xbd, 0x00, 0x00, 0xf0, 0x00, 0x07, 0x00,
+ 0x3c, 0x00, 0xcc, 0x16, 0x04, 0x00, 0xf4, 0x00,
+ 0x07, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x76, 0x46,
+ 0x01, 0x00, 0x24, 0x09, 0x00, 0x00, 0x80, 0x80,
+ 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0x80, 0xb5,
+ 0x18, 0x21, 0x09, 0x48, 0xbe, 0xf7, 0xd7, 0xfe,
+ 0x08, 0x48, 0x00, 0x21, 0x3c, 0x38, 0x41, 0x60,
+ 0x81, 0x60, 0xc1, 0x60, 0x01, 0x61, 0x41, 0x61,
+ 0x81, 0x61, 0x01, 0x21, 0x01, 0x62, 0xff, 0xf7,
+ 0x5c, 0xff, 0x3c, 0x00, 0x08, 0x17, 0x04, 0x00,
+ 0xc0, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00,
+ 0x24, 0x7e, 0x01, 0x00, 0xb0, 0xb5, 0x21, 0x48,
+ 0x00, 0x68, 0x40, 0x08, 0x1f, 0x49, 0x40, 0x00,
+ 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x01, 0x21,
+ 0x08, 0x43, 0x1c, 0x49, 0x08, 0x60, 0x1c, 0x4a,
+ 0x10, 0x79, 0x01, 0x21, 0x08, 0x43, 0x10, 0x71,
+ 0x10, 0x79, 0x02, 0x21, 0x88, 0x43, 0x10, 0x71,
+ 0x00, 0xf0, 0x6c, 0xf8, 0x3c, 0x00, 0x44, 0x17,
+ 0x04, 0x00, 0x10, 0x7a, 0x01, 0x21, 0x08, 0x43,
+ 0x10, 0x72, 0x10, 0x7a, 0xfe, 0x21, 0x88, 0x43,
+ 0x0a, 0x30, 0x10, 0x72, 0x28, 0x20, 0x90, 0x72,
+ 0x5a, 0x20, 0xd0, 0x72, 0x11, 0x4d, 0x14, 0x20,
+ 0x28, 0x77, 0x2c, 0x1c, 0x10, 0x34, 0xa0, 0x73,
+ 0x16, 0x20, 0xa8, 0x75, 0x18, 0x20, 0xe8, 0x75,
+ 0xff, 0xf7, 0xa1, 0xfc, 0x0c, 0x48, 0x68, 0x86,
+ 0xe0, 0x7b, 0x40, 0x06, 0x40, 0x0e, 0x3c, 0x00,
+ 0x80, 0x17, 0x04, 0x00, 0x0e, 0x21, 0x08, 0x43,
+ 0xe0, 0x73, 0xe0, 0x7b, 0x80, 0x21, 0x08, 0x43,
+ 0xe0, 0x73, 0x07, 0x48, 0x41, 0x79, 0x04, 0x22,
+ 0x11, 0x43, 0x41, 0x71, 0xb0, 0xbd, 0x00, 0x00,
+ 0xf0, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x30, 0x80, 0x07, 0x00, 0xff, 0x01, 0x00, 0x00,
+ 0x50, 0x00, 0x07, 0x00, 0x80, 0xb5, 0xff, 0xf7,
+ 0xaf, 0xff, 0x00, 0x20, 0x14, 0x49, 0xc0, 0x43,
+ 0x3c, 0x00, 0xbc, 0x17, 0x04, 0x00, 0x88, 0x60,
+ 0xc1, 0xf7, 0x0b, 0xf9, 0x13, 0x49, 0x00, 0x20,
+ 0x48, 0x62, 0xc8, 0x60, 0x48, 0x61, 0x08, 0x61,
+ 0x88, 0x61, 0xc8, 0x61, 0x0f, 0x4b, 0x08, 0x62,
+ 0x0f, 0x4a, 0x08, 0x63, 0x38, 0x33, 0x1a, 0x80,
+ 0x01, 0x22, 0x5a, 0x71, 0x0b, 0x4a, 0x40, 0x32,
+ 0xd0, 0x60, 0x13, 0x60, 0x08, 0x23, 0x13, 0x81,
+ 0x50, 0x60, 0x09, 0x4a, 0x8a, 0x62, 0xff, 0x22,
+ 0x0a, 0x70, 0x3c, 0x00, 0xf8, 0x17, 0x04, 0x00,
+ 0x48, 0x70, 0x05, 0x48, 0x00, 0x21, 0x00, 0x22,
+ 0x50, 0x30, 0x00, 0x23, 0x0e, 0xc0, 0xc1, 0xf7,
+ 0xff, 0xf8, 0x80, 0xbd, 0x00, 0x30, 0x07, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0xbe, 0xba, 0x00, 0x00,
+ 0x85, 0x75, 0x00, 0x00, 0x03, 0x48, 0x10, 0x21,
+ 0x81, 0x71, 0x02, 0x21, 0xc1, 0x71, 0x30, 0x21,
+ 0x41, 0x72, 0x70, 0x47, 0x00, 0x80, 0x07, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x34, 0x18,
+ 0x04, 0x00, 0x00, 0xb5, 0xc1, 0xf7, 0xdb, 0xfb,
+ 0x00, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5,
+ 0xcd, 0xf7, 0x87, 0xfd, 0x01, 0x49, 0x88, 0x60,
+ 0x80, 0xbd, 0x50, 0xd9, 0x01, 0x00, 0x80, 0xb5,
+ 0x06, 0x21, 0x05, 0x48, 0xbe, 0xf7, 0xfd, 0xfd,
+ 0x04, 0x49, 0x00, 0x20, 0x04, 0x39, 0x08, 0x60,
+ 0x00, 0xf0, 0x67, 0xf8, 0x00, 0xf0, 0x03, 0xf8,
+ 0x80, 0xbd, 0xec, 0x67, 0x01, 0x00, 0x3c, 0x00,
+ 0x70, 0x18, 0x04, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0x2c, 0x21, 0x20, 0x1c, 0xbe, 0xf7, 0x10, 0xfe,
+ 0x01, 0x20, 0x20, 0x70, 0x03, 0x49, 0x00, 0x20,
+ 0x1c, 0x39, 0xc8, 0x60, 0x08, 0x61, 0x88, 0x61,
+ 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0xcd, 0xf7, 0x5d, 0xfd, 0x09, 0x49,
+ 0x88, 0x60, 0x09, 0x49, 0x08, 0x20, 0xd0, 0xf7,
+ 0x73, 0xfd, 0x08, 0x49, 0x09, 0x20, 0xd0, 0xf7,
+ 0x3c, 0x00, 0xac, 0x18, 0x04, 0x00, 0x6f, 0xfd,
+ 0x07, 0x49, 0x11, 0x20, 0xd0, 0xf7, 0x6b, 0xfd,
+ 0x06, 0x48, 0xc2, 0xf7, 0x74, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x21, 0x35,
+ 0x00, 0x00, 0xa1, 0x38, 0x00, 0x00, 0x45, 0x34,
+ 0x00, 0x00, 0xbd, 0x26, 0x01, 0x00, 0x80, 0xb5,
+ 0x86, 0xb0, 0x0f, 0x48, 0xc4, 0xf7, 0x45, 0xf9,
+ 0x00, 0xf0, 0x45, 0xf8, 0xff, 0xf7, 0xd7, 0xff,
+ 0xff, 0xf7, 0x3c, 0x00, 0xe8, 0x18, 0x04, 0x00,
+ 0xab, 0xff, 0x0c, 0x49, 0x03, 0x20, 0xd0, 0xf7,
+ 0x4d, 0xfd, 0x0b, 0x48, 0x69, 0x46, 0x00, 0x90,
+ 0x00, 0x20, 0x01, 0x90, 0x09, 0x48, 0x04, 0x90,
+ 0x09, 0x48, 0x02, 0x90, 0x09, 0x48, 0x03, 0x90,
+ 0x09, 0x48, 0x05, 0x90, 0x00, 0x20, 0xc4, 0xf7,
+ 0xcf, 0xf8, 0x06, 0xb0, 0x80, 0xbd, 0x00, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x45, 0x35, 0x00, 0x00,
+ 0x95, 0x32, 0x00, 0x00, 0x3c, 0x00, 0x24, 0x19,
+ 0x04, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0xfd, 0x32,
+ 0x00, 0x00, 0xcd, 0x31, 0x00, 0x00, 0x45, 0x7d,
+ 0x01, 0x00, 0x10, 0xb5, 0xcd, 0xf7, 0xd5, 0xfc,
+ 0x09, 0x48, 0x09, 0x4c, 0x30, 0x21, 0x60, 0x61,
+ 0x08, 0x48, 0x74, 0x30, 0xbe, 0xf7, 0xa9, 0xfd,
+ 0x00, 0x20, 0xa0, 0x62, 0x06, 0x49, 0x20, 0x61,
+ 0xe1, 0x63, 0x60, 0x64, 0xa0, 0x64, 0x14, 0x21,
+ 0x21, 0x65, 0x60, 0x62, 0x10, 0xbd, 0x3c, 0x00,
+ 0x60, 0x19, 0x04, 0x00, 0xb9, 0x75, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x70, 0x17, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x09, 0x20, 0x04, 0x4a,
+ 0xd1, 0xf7, 0xe8, 0xfe, 0xcd, 0xf7, 0xec, 0xfc,
+ 0x02, 0x49, 0x08, 0x63, 0x80, 0xbd, 0x00, 0x00,
+ 0x39, 0x39, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0x80, 0xb5, 0xac, 0x21, 0x03, 0x48, 0xbe, 0xf7,
+ 0x83, 0xfd, 0x00, 0xf0, 0x51, 0xf8, 0x00, 0xf0,
+ 0x3c, 0x00, 0x9c, 0x19, 0x04, 0x00, 0x49, 0xf8,
+ 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x08, 0xb5,
+ 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0xf0, 0x45, 0xf8,
+ 0x00, 0x21, 0x16, 0x20, 0x18, 0x4a, 0xd1, 0xf7,
+ 0xc8, 0xfe, 0x17, 0x4a, 0x04, 0x21, 0x10, 0x1c,
+ 0x40, 0x30, 0x01, 0x70, 0x00, 0x21, 0x81, 0x70,
+ 0x11, 0x21, 0xc1, 0x80, 0x14, 0x49, 0x01, 0x81,
+ 0x10, 0x1c, 0x80, 0x30, 0xc1, 0x78, 0x08, 0x22,
+ 0x91, 0x43, 0x3c, 0x00, 0xd8, 0x19, 0x04, 0x00,
+ 0xc1, 0x70, 0xc1, 0x78, 0x11, 0x43, 0xc1, 0x70,
+ 0x6a, 0x46, 0x0f, 0x49, 0x14, 0x20, 0xbf, 0xf7,
+ 0xf5, 0xfa, 0x0e, 0x49, 0x07, 0x20, 0xd0, 0xf7,
+ 0xcd, 0xfc, 0x0d, 0x49, 0x0f, 0x20, 0xd0, 0xf7,
+ 0xc9, 0xfc, 0xcd, 0xf7, 0xab, 0xfc, 0x0b, 0x49,
+ 0x08, 0x60, 0x0a, 0x48, 0x44, 0x38, 0x80, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x00, 0x20, 0xc6, 0xf7,
+ 0x6f, 0xf9, 0x08, 0xbd, 0x3c, 0x00, 0x14, 0x1a,
+ 0x04, 0x00, 0xb5, 0x3b, 0x00, 0x00, 0x00, 0x90,
+ 0x07, 0x00, 0xe7, 0xfd, 0x00, 0x00, 0x8d, 0x41,
+ 0x00, 0x00, 0xcd, 0x48, 0x00, 0x00, 0xd9, 0x49,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0xf0, 0x6f, 0xfc, 0x80, 0xbd, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x61, 0xfc,
+ 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5,
+ 0x30, 0x21, 0x0c, 0x48, 0xbe, 0xf7, 0x3c, 0x00,
+ 0x50, 0x1a, 0x04, 0x00, 0x25, 0xfd, 0x0b, 0x4c,
+ 0x00, 0x25, 0x0a, 0x48, 0x84, 0x3c, 0x38, 0x22,
+ 0x03, 0x21, 0x70, 0x38, 0x65, 0x60, 0xbe, 0xf7,
+ 0xdd, 0xfd, 0x06, 0x48, 0x38, 0x22, 0x01, 0x21,
+ 0x38, 0x38, 0xbe, 0xf7, 0xd7, 0xfd, 0x0e, 0x20,
+ 0xa5, 0x60, 0x60, 0x70, 0x20, 0x70, 0x00, 0xf0,
+ 0x1d, 0xf8, 0xb0, 0xbd, 0x94, 0x67, 0x01, 0x00,
+ 0x04, 0x49, 0x00, 0xb5, 0x01, 0x20, 0x48, 0x60,
+ 0x3c, 0x00, 0x8c, 0x1a, 0x04, 0x00, 0x88, 0x60,
+ 0xc8, 0x60, 0xc3, 0xf7, 0xf8, 0xff, 0x00, 0xbd,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x0a, 0x20, 0x02, 0x4a, 0xd1, 0xf7,
+ 0x50, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x1d, 0x5a,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x05, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0xfd, 0xfb,
+ 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x49, 0x04, 0x20,
+ 0xd0, 0xf7, 0x3c, 0x00, 0xc8, 0x1a, 0x04, 0x00,
+ 0x61, 0xfc, 0x80, 0xbd, 0x65, 0x1f, 0x00, 0x00,
+ 0x00, 0x21, 0x17, 0x48, 0xc9, 0x43, 0x80, 0xb5,
+ 0x16, 0x4b, 0x01, 0x70, 0x18, 0x1c, 0x10, 0x22,
+ 0x20, 0x30, 0x02, 0x71, 0x00, 0x22, 0x10, 0x33,
+ 0x9a, 0x73, 0x42, 0x79, 0x04, 0x23, 0x1a, 0x43,
+ 0x42, 0x71, 0x42, 0x79, 0x18, 0x23, 0x9a, 0x43,
+ 0x08, 0x32, 0x42, 0x71, 0x08, 0x1c, 0xd7, 0xf7,
+ 0x59, 0xf8, 0x00, 0x28, 0x3c, 0x00, 0x04, 0x1b,
+ 0x04, 0x00, 0x03, 0xd1, 0x01, 0x21, 0x9a, 0x20,
+ 0xbf, 0xf7, 0xcb, 0xfb, 0x50, 0x20, 0x09, 0x49,
+ 0x50, 0x22, 0x0a, 0x60, 0xc8, 0x60, 0x88, 0x60,
+ 0x48, 0x60, 0x08, 0x61, 0x01, 0x20, 0x48, 0x61,
+ 0x00, 0x20, 0xd7, 0xf7, 0xd8, 0xf8, 0x04, 0x49,
+ 0xff, 0x20, 0x08, 0x60, 0x80, 0xbd, 0xf4, 0x6b,
+ 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x04, 0x02,
+ 0x07, 0x00, 0xf4, 0x74, 0x01, 0x00, 0x3c, 0x00,
+ 0x40, 0x1b, 0x04, 0x00, 0x80, 0xb5, 0xd7, 0xf7,
+ 0xfb, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0xff, 0xf7,
+ 0xab, 0xfb, 0xbf, 0xf7, 0xdd, 0xfb, 0x81, 0x48,
+ 0xcd, 0xf7, 0x98, 0xfa, 0x00, 0x24, 0x23, 0x1c,
+ 0x04, 0x22, 0x04, 0x21, 0x00, 0x20, 0x01, 0xf0,
+ 0x39, 0xfa, 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7,
+ 0xc9, 0xfb, 0x23, 0x1c, 0x00, 0x22, 0xff, 0x21,
+ 0x00, 0x20, 0x01, 0xf0, 0x2f, 0xfa, 0x00, 0x28,
+ 0x3c, 0x00, 0x7c, 0x1b, 0x04, 0x00, 0x01, 0xd0,
+ 0xbf, 0xf7, 0xbf, 0xfb, 0x23, 0x1c, 0x00, 0x22,
+ 0xff, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x25, 0xfa,
+ 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, 0xb5, 0xfb,
+ 0xc4, 0xf7, 0x27, 0xff, 0x70, 0x48, 0x84, 0x70,
+ 0x6f, 0x49, 0x7f, 0x20, 0x88, 0x70, 0x6e, 0x49,
+ 0x0c, 0x60, 0x03, 0x20, 0x08, 0x60, 0x6b, 0x48,
+ 0x44, 0x70, 0x6c, 0x48, 0x04, 0x80, 0x69, 0x48,
+ 0xc0, 0x78, 0x3c, 0x00, 0xb8, 0x1b, 0x04, 0x00,
+ 0x08, 0x21, 0x08, 0x43, 0x67, 0x49, 0xc8, 0x70,
+ 0x08, 0x1c, 0xc0, 0x78, 0x04, 0x21, 0x08, 0x43,
+ 0x64, 0x49, 0xc8, 0x70, 0x01, 0xf0, 0x7e, 0xfa,
+ 0xff, 0xf7, 0x7e, 0xff, 0xff, 0xf7, 0x2c, 0xfe,
+ 0x01, 0xf0, 0x46, 0xfb, 0xff, 0xf7, 0x18, 0xfb,
+ 0x01, 0xf0, 0x52, 0xfa, 0xff, 0xf7, 0x82, 0xfb,
+ 0x5f, 0x48, 0xc1, 0x68, 0x10, 0x22, 0x91, 0x43,
+ 0xc1, 0x60, 0x01, 0x69, 0x3c, 0x00, 0xf4, 0x1b,
+ 0x04, 0x00, 0x5d, 0x4a, 0x11, 0x43, 0x01, 0x61,
+ 0x01, 0x69, 0xd2, 0x0a, 0x91, 0x43, 0x01, 0x61,
+ 0xc1, 0x68, 0x5a, 0x4a, 0x11, 0x43, 0xc1, 0x60,
+ 0x81, 0x6a, 0x59, 0x4a, 0x11, 0x43, 0x81, 0x62,
+ 0x00, 0xf0, 0x77, 0xf9, 0x01, 0xf0, 0x1f, 0xf8,
+ 0x00, 0xf0, 0x93, 0xfa, 0x01, 0xf0, 0x99, 0xfb,
+ 0x00, 0xf0, 0xf1, 0xff, 0x00, 0xf0, 0x99, 0xfc,
+ 0x00, 0xf0, 0xdd, 0xfc, 0x00, 0xf0, 0x3c, 0x00,
+ 0x30, 0x1c, 0x04, 0x00, 0x83, 0xfc, 0xff, 0xf7,
+ 0xb3, 0xfc, 0x01, 0xf0, 0x31, 0xfa, 0x01, 0xf0,
+ 0x71, 0xfa, 0xff, 0xf7, 0x87, 0xfa, 0xff, 0xf7,
+ 0x9b, 0xfa, 0x01, 0x21, 0x01, 0x20, 0x4b, 0x4a,
+ 0xd1, 0xf7, 0x7c, 0xfd, 0x01, 0x21, 0x02, 0x20,
+ 0x49, 0x4a, 0xd1, 0xf7, 0x77, 0xfd, 0x02, 0x21,
+ 0x03, 0x20, 0x48, 0x4a, 0xd1, 0xf7, 0x72, 0xfd,
+ 0x02, 0x21, 0x04, 0x20, 0x46, 0x4a, 0xd1, 0xf7,
+ 0x3c, 0x00, 0x6c, 0x1c, 0x04, 0x00, 0x6d, 0xfd,
+ 0x02, 0x21, 0x05, 0x20, 0x45, 0x4a, 0xd1, 0xf7,
+ 0x68, 0xfd, 0x02, 0x21, 0x06, 0x20, 0x43, 0x4a,
+ 0xd1, 0xf7, 0x63, 0xfd, 0x01, 0x21, 0x07, 0x20,
+ 0x42, 0x4a, 0xd1, 0xf7, 0x5e, 0xfd, 0x02, 0x21,
+ 0x17, 0x20, 0x40, 0x4a, 0xd1, 0xf7, 0x59, 0xfd,
+ 0x02, 0x21, 0x08, 0x20, 0x3f, 0x4a, 0xd1, 0xf7,
+ 0x54, 0xfd, 0xff, 0xf7, 0xc8, 0xfd, 0x3d, 0x48,
+ 0x04, 0x60, 0x3c, 0x00, 0xa8, 0x1c, 0x04, 0x00,
+ 0x44, 0x60, 0xff, 0xf7, 0x17, 0xfa, 0xff, 0xf7,
+ 0x09, 0xfa, 0xff, 0xf7, 0x4f, 0xfc, 0x00, 0xf0,
+ 0x43, 0xf9, 0xff, 0xf7, 0x33, 0xfa, 0xff, 0xf7,
+ 0xfb, 0xfa, 0x01, 0xf0, 0x85, 0xf8, 0x01, 0xf0,
+ 0xeb, 0xf9, 0x01, 0xf0, 0x23, 0xfa, 0x01, 0xf0,
+ 0x71, 0xf9, 0x00, 0xf0, 0xe3, 0xff, 0xff, 0xf7,
+ 0x6f, 0xfa, 0x00, 0xf0, 0xaf, 0xf9, 0x00, 0xf0,
+ 0xbd, 0xf9, 0x00, 0xf0, 0x3c, 0x00, 0xe4, 0x1c,
+ 0x04, 0x00, 0xad, 0xfc, 0x00, 0xf0, 0x9b, 0xfe,
+ 0xff, 0xf7, 0xcd, 0xfa, 0xff, 0xf7, 0xab, 0xfe,
+ 0x00, 0xf0, 0xc3, 0xf9, 0xff, 0xf7, 0xab, 0xfd,
+ 0x00, 0xf0, 0x8d, 0xff, 0x00, 0xf0, 0x21, 0xff,
+ 0x00, 0xf0, 0x65, 0xf9, 0x00, 0xf0, 0x97, 0xf9,
+ 0x00, 0xf0, 0xfd, 0xfe, 0x00, 0xf0, 0xe5, 0xfe,
+ 0x00, 0xf0, 0x3f, 0xf9, 0x00, 0xf0, 0x73, 0xf9,
+ 0xff, 0xf7, 0x37, 0xfe, 0x00, 0xf0, 0x3c, 0x00,
+ 0x20, 0x1d, 0x04, 0x00, 0x21, 0xf9, 0x00, 0xf0,
+ 0x73, 0xfb, 0xff, 0xf7, 0xe5, 0xfb, 0x00, 0xf0,
+ 0xd3, 0xfb, 0xff, 0xf7, 0xa9, 0xfe, 0x00, 0xf0,
+ 0xbb, 0xfb, 0x00, 0xf0, 0x09, 0xff, 0x00, 0xf0,
+ 0xdb, 0xf9, 0x18, 0x48, 0xc9, 0xf7, 0x56, 0xf8,
+ 0x17, 0x48, 0xc9, 0xf7, 0x2b, 0xf8, 0x00, 0x22,
+ 0x01, 0x21, 0xf0, 0x20, 0xd1, 0xf7, 0x2e, 0xfd,
+ 0x00, 0x20, 0x10, 0xbd, 0xa9, 0x69, 0x00, 0x00,
+ 0x3c, 0x00, 0x5c, 0x1d, 0x04, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0xf0, 0x00, 0x07, 0x00, 0x2c, 0x00,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00,
+ 0x08, 0x00, 0xc0, 0x3f, 0x74, 0x38, 0xfc, 0xdf,
+ 0x7f, 0x38, 0x55, 0x69, 0x00, 0x00, 0xe5, 0x13,
+ 0x00, 0x00, 0x61, 0x0c, 0x00, 0x00, 0x6d, 0x0c,
+ 0x00, 0x00, 0x3d, 0x0c, 0x00, 0x00, 0xf1, 0x0d,
+ 0x00, 0x00, 0xc5, 0x33, 0x00, 0x00, 0x3d, 0x0f,
+ 0x00, 0x00, 0x3c, 0x00, 0x98, 0x1d, 0x04, 0x00,
+ 0xad, 0xd8, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00,
+ 0x50, 0x57, 0x01, 0x00, 0x04, 0x40, 0x01, 0x00,
+ 0x80, 0xb5, 0x01, 0xf0, 0xa9, 0xf9, 0x00, 0xf0,
+ 0xc9, 0xf8, 0xff, 0xf7, 0xc5, 0xfe, 0x01, 0xf0,
+ 0x03, 0xfb, 0x01, 0xf0, 0x93, 0xfa, 0xff, 0xf7,
+ 0xcb, 0xf9, 0x2c, 0x48, 0xff, 0xf7, 0xe8, 0xf9,
+ 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, 0x58, 0xff,
+ 0xff, 0xf7, 0x34, 0xfd, 0x3c, 0x00, 0xd4, 0x1d,
+ 0x04, 0x00, 0xff, 0xf7, 0xf2, 0xfb, 0xff, 0xf7,
+ 0x7a, 0xfa, 0xff, 0xf7, 0x00, 0xfa, 0x00, 0xf0,
+ 0x34, 0xf9, 0x00, 0xf0, 0x3c, 0xf9, 0x01, 0xf0,
+ 0xe2, 0xf8, 0xff, 0xf7, 0x7a, 0xf9, 0xff, 0xf7,
+ 0x72, 0xf9, 0xff, 0xf7, 0x9a, 0xf9, 0x01, 0xf0,
+ 0x66, 0xf9, 0x01, 0xf0, 0x8e, 0xf9, 0x01, 0xf0,
+ 0xe0, 0xf8, 0x00, 0xf0, 0x06, 0xff, 0x00, 0xf0,
+ 0xf0, 0xfb, 0x00, 0xf0, 0x46, 0xfb, 0x3c, 0x00,
+ 0x10, 0x1e, 0x04, 0x00, 0x00, 0xf0, 0xbc, 0xff,
+ 0x00, 0xf0, 0xe4, 0xfc, 0x00, 0xf0, 0x20, 0xfe,
+ 0xff, 0xf7, 0x40, 0xfa, 0xff, 0xf7, 0x46, 0xfe,
+ 0xff, 0xf7, 0x56, 0xfd, 0x00, 0xf0, 0x2c, 0xf9,
+ 0x00, 0xf0, 0xfa, 0xfe, 0x00, 0xf0, 0x8a, 0xfe,
+ 0x00, 0xf0, 0xd4, 0xf8, 0x00, 0xf0, 0xb4, 0xf8,
+ 0x00, 0xf0, 0x78, 0xfe, 0x00, 0xf0, 0x4e, 0xfe,
+ 0x00, 0xf0, 0xde, 0xf8, 0xff, 0xf7, 0xac, 0xfd,
+ 0x3c, 0x00, 0x4c, 0x1e, 0x04, 0x00, 0x00, 0xf0,
+ 0x8c, 0xf8, 0x00, 0xf0, 0xf8, 0xfa, 0xff, 0xf7,
+ 0x76, 0xfb, 0xff, 0xf7, 0x20, 0xfe, 0x01, 0xf0,
+ 0xa6, 0xfa, 0x00, 0xf0, 0x48, 0xfb, 0x00, 0xf0,
+ 0x7c, 0xfe, 0x00, 0xf0, 0x5c, 0xf9, 0xbe, 0xf7,
+ 0x57, 0xfd, 0x00, 0x20, 0x80, 0xbd, 0x80, 0x38,
+ 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x08, 0x60,
+ 0x70, 0x47, 0xa8, 0x7e, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x3c, 0x00, 0x88, 0x1e, 0x04, 0x00,
+ 0x01, 0xd1, 0xbf, 0xf7, 0x39, 0xfa, 0x0f, 0x48,
+ 0x7d, 0x21, 0xc9, 0x00, 0x84, 0x60, 0x01, 0x80,
+ 0x0d, 0x49, 0x01, 0x61, 0x80, 0x21, 0x41, 0x80,
+ 0x00, 0x21, 0xc1, 0x60, 0x01, 0x62, 0x0b, 0x48,
+ 0x41, 0x80, 0x14, 0x21, 0x81, 0x80, 0x07, 0x21,
+ 0x41, 0x81, 0x06, 0x4a, 0x46, 0x23, 0x04, 0x32,
+ 0x05, 0x24, 0x13, 0x70, 0x54, 0x70, 0x0a, 0x21,
+ 0x91, 0x70, 0x81, 0x76, 0x3c, 0x00, 0xc4, 0x1e,
+ 0x04, 0x00, 0x03, 0x76, 0x04, 0x81, 0x10, 0xbd,
+ 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, 0x00, 0x87,
+ 0x93, 0x03, 0x30, 0x00, 0x07, 0x00, 0x09, 0x48,
+ 0x80, 0xb5, 0x01, 0x69, 0x42, 0x69, 0x11, 0x43,
+ 0x82, 0x69, 0xc0, 0x69, 0x11, 0x43, 0x01, 0x43,
+ 0x00, 0x22, 0x03, 0x20, 0xc6, 0xf7, 0xbf, 0xfc,
+ 0xcc, 0xf7, 0x1b, 0xfa, 0x00, 0x20, 0xc2, 0xf7,
+ 0x92, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x00, 0x1f, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x21, 0x81, 0x60,
+ 0x02, 0x21, 0xc1, 0x60, 0x03, 0x39, 0x41, 0x60,
+ 0xc7, 0xf7, 0x3a, 0xff, 0x80, 0xbd, 0x00, 0x00,
+ 0x40, 0x20, 0x07, 0x00, 0x08, 0xb5, 0x6a, 0x46,
+ 0x04, 0x49, 0x15, 0x20, 0xbf, 0xf7, 0x54, 0xf8,
+ 0x01, 0x20, 0x03, 0x49, 0x40, 0x05, 0x08, 0x60,
+ 0x48, 0x60, 0x08, 0xbd, 0xa5, 0x21, 0x01, 0x00,
+ 0x3c, 0x00, 0x3c, 0x1f, 0x04, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x48,
+ 0x80, 0xb5, 0x80, 0x68, 0xc0, 0x01, 0x80, 0x0f,
+ 0x05, 0xd1, 0x03, 0x22, 0xc1, 0x43, 0xc6, 0xf7,
+ 0xba, 0xfc, 0xd6, 0xf7, 0x00, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20,
+ 0x06, 0x4a, 0xd1, 0xf7, 0xea, 0xfb, 0x00, 0x22,
+ 0x07, 0x20, 0x3c, 0x00, 0x78, 0x1f, 0x04, 0x00,
+ 0x04, 0x49, 0xbe, 0xf7, 0xed, 0xfe, 0x04, 0x48,
+ 0xc7, 0xf7, 0x58, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x8d, 0x89, 0x00, 0x00, 0xd5, 0x9b, 0x00, 0x00,
+ 0x10, 0x46, 0x01, 0x00, 0x02, 0x48, 0x00, 0x21,
+ 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x70, 0x47,
+ 0x80, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x2c, 0x20, 0x06, 0x4a, 0xd1, 0xf7, 0xcc, 0xfb,
+ 0x00, 0x22, 0x00, 0x20, 0x3c, 0x00, 0xb4, 0x1f,
+ 0x04, 0x00, 0x04, 0x49, 0xbe, 0xf7, 0xcf, 0xfe,
+ 0x04, 0x49, 0x02, 0x20, 0xc8, 0xf7, 0x0b, 0xfa,
+ 0x80, 0xbd, 0x05, 0x8a, 0x00, 0x00, 0xe9, 0x9b,
+ 0x00, 0x00, 0xb1, 0x8b, 0x00, 0x00, 0x02, 0x48,
+ 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0,
+ 0x70, 0x47, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x2b, 0x20, 0x04, 0x4a, 0xd1, 0xf7,
+ 0xae, 0xfb, 0x00, 0x22, 0x02, 0x20, 0x3c, 0x00,
+ 0xf0, 0x1f, 0x04, 0x00, 0x02, 0x49, 0xbe, 0xf7,
+ 0xb1, 0xfe, 0x80, 0xbd, 0x2d, 0x8a, 0x00, 0x00,
+ 0x8d, 0x8c, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0x07, 0x4a,
+ 0xd1, 0xf7, 0x9c, 0xfb, 0x00, 0x22, 0x01, 0x20,
+ 0x05, 0x49, 0xbe, 0xf7, 0x9f, 0xfe, 0x05, 0x48,
+ 0xcb, 0xf7, 0x56, 0xfa, 0x04, 0x48, 0xcc, 0xf7,
+ 0xf7, 0xf8, 0x80, 0xbd, 0xad, 0x8a, 0x00, 0x00,
+ 0x3c, 0x00, 0x2c, 0x20, 0x04, 0x00, 0x21, 0xe2,
+ 0x00, 0x00, 0xf9, 0xdf, 0x00, 0x00, 0x20, 0x44,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x02, 0x49,
+ 0x00, 0x20, 0x08, 0x60, 0x01, 0x20, 0x48, 0x60,
+ 0x70, 0x47, 0xac, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x49, 0x0d, 0x20, 0xd0, 0xf7, 0x9b, 0xf9,
+ 0x80, 0xbd, 0x61, 0x98, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0xcd, 0xf7, 0x77, 0xf9,
+ 0x03, 0x49, 0x3c, 0x00, 0x68, 0x20, 0x04, 0x00,
+ 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, 0xcd, 0xf7,
+ 0x97, 0xf9, 0x80, 0xbd, 0xa8, 0x79, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x29, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x86, 0xb0,
+ 0x0c, 0x48, 0xc3, 0xf7, 0x6d, 0xfd, 0xd6, 0xf7,
+ 0xd3, 0xfb, 0x0b, 0x48, 0x0d, 0x49, 0x00, 0x90,
+ 0x0a, 0x48, 0x04, 0x91, 0x01, 0x90, 0x0a, 0x48,
+ 0x69, 0x46, 0x02, 0x90, 0x3c, 0x00, 0xa4, 0x20,
+ 0x04, 0x00, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90,
+ 0x01, 0x20, 0xc3, 0xf7, 0x00, 0xfd, 0x07, 0x49,
+ 0x03, 0x20, 0xd0, 0xf7, 0x6a, 0xf9, 0x06, 0xb0,
+ 0x80, 0xbd, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x87,
+ 0x01, 0x00, 0x95, 0x87, 0x01, 0x00, 0x55, 0x87,
+ 0x01, 0x00, 0x98, 0xd9, 0x01, 0x00, 0x6d, 0x87,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xd6, 0xf7,
+ 0x90, 0xfc, 0x03, 0x49, 0x00, 0x20, 0x3c, 0x00,
+ 0xe0, 0x20, 0x04, 0x00, 0x08, 0x60, 0x48, 0x60,
+ 0x02, 0x48, 0x14, 0x39, 0x48, 0x60, 0x80, 0xbd,
+ 0x90, 0xd9, 0x01, 0x00, 0x3d, 0x82, 0x01, 0x00,
+ 0x70, 0xb5, 0x00, 0x26, 0x09, 0x4c, 0x09, 0x4d,
+ 0x26, 0x60, 0x66, 0x60, 0x44, 0x21, 0x50, 0x35,
+ 0x28, 0x1c, 0xa6, 0x61, 0xbe, 0xf7, 0xc8, 0xf9,
+ 0x14, 0x20, 0xe0, 0x60, 0xe8, 0x63, 0x28, 0x20,
+ 0xe8, 0x61, 0xa0, 0x60, 0x28, 0x64, 0x2e, 0x70,
+ 0x3c, 0x00, 0x1c, 0x21, 0x04, 0x00, 0x70, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x18, 0x20, 0x04, 0x4a, 0xd1, 0xf7,
+ 0x0c, 0xfb, 0x03, 0x49, 0x08, 0x20, 0xd0, 0xf7,
+ 0x2a, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x15, 0x9c,
+ 0x00, 0x00, 0x69, 0x9c, 0x00, 0x00, 0xfe, 0xb5,
+ 0x26, 0x4d, 0x28, 0x78, 0xc0, 0x07, 0x0c, 0xd4,
+ 0x25, 0x49, 0x00, 0x20, 0x08, 0x70, 0x28, 0x70,
+ 0x24, 0x48, 0x3c, 0x00, 0x58, 0x21, 0x04, 0x00,
+ 0x81, 0x78, 0x49, 0x08, 0x49, 0x00, 0x81, 0x70,
+ 0x81, 0x78, 0x01, 0x22, 0x11, 0x43, 0x81, 0x70,
+ 0x00, 0x24, 0xff, 0x26, 0x1f, 0x4f, 0x01, 0x36,
+ 0x21, 0x1c, 0x01, 0xa8, 0xc6, 0xf7, 0x32, 0xf8,
+ 0x00, 0xab, 0x18, 0x79, 0x01, 0x28, 0x1f, 0xd0,
+ 0x02, 0x28, 0x19, 0xd0, 0x03, 0x28, 0x1e, 0xd1,
+ 0xb8, 0x68, 0x00, 0x21, 0xb0, 0x43, 0xb8, 0x60,
+ 0x78, 0x68, 0x30, 0x43, 0x3c, 0x00, 0x94, 0x21,
+ 0x04, 0x00, 0x78, 0x60, 0x3a, 0x68, 0x32, 0x40,
+ 0xa0, 0x20, 0x05, 0xe0, 0x3b, 0x68, 0x33, 0x40,
+ 0x93, 0x42, 0x01, 0xd0, 0x01, 0x21, 0x01, 0xe0,
+ 0x01, 0x38, 0xf7, 0xd2, 0x78, 0x68, 0xb0, 0x43,
+ 0x78, 0x60, 0x00, 0x29, 0x03, 0xd0, 0x01, 0xa8,
+ 0x00, 0xf0, 0x27, 0xff, 0x02, 0xe0, 0x01, 0xa8,
+ 0x00, 0xf0, 0x45, 0xff, 0x01, 0x34, 0x24, 0x06,
+ 0x24, 0x16, 0x06, 0x2c, 0xcf, 0xdb, 0x3c, 0x00,
+ 0xd0, 0x21, 0x04, 0x00, 0x04, 0x49, 0x02, 0x22,
+ 0x08, 0x78, 0x10, 0x43, 0x08, 0x70, 0x28, 0x70,
+ 0xfe, 0xbd, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00,
+ 0xe0, 0x60, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0xb0, 0xb5, 0x00, 0x20,
+ 0x15, 0x23, 0x14, 0x49, 0x01, 0x25, 0x42, 0x00,
+ 0x8d, 0x54, 0x52, 0x18, 0x01, 0x30, 0x0e, 0x28,
+ 0x53, 0x70, 0xf8, 0xd3, 0x0f, 0x48, 0x1c, 0x22,
+ 0x3c, 0x00, 0x0c, 0x22, 0x04, 0x00, 0x1c, 0x38,
+ 0xbe, 0xf7, 0x73, 0xf9, 0x0d, 0x48, 0x0e, 0x21,
+ 0x2a, 0x38, 0xbe, 0xf7, 0x1c, 0xf9, 0x0b, 0x49,
+ 0x00, 0x20, 0x08, 0x60, 0x0b, 0x4c, 0x2a, 0x21,
+ 0x20, 0x1c, 0xbe, 0xf7, 0x14, 0xf9, 0x25, 0x70,
+ 0x0e, 0x20, 0x60, 0x70, 0x17, 0x20, 0xa0, 0x70,
+ 0x07, 0x48, 0x53, 0x21, 0x01, 0x70, 0x45, 0x21,
+ 0x41, 0x70, 0x20, 0x21, 0x81, 0x70, 0xb0, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x48, 0x22, 0x04, 0x00,
+ 0xe6, 0x78, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00,
+ 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00,
+ 0x0c, 0x49, 0x0d, 0x48, 0x00, 0x22, 0x41, 0x60,
+ 0x0c, 0x49, 0x81, 0x60, 0x0c, 0x49, 0xc1, 0x60,
+ 0x0c, 0x49, 0x01, 0x61, 0x0c, 0x49, 0x41, 0x61,
+ 0x0c, 0x49, 0x82, 0x61, 0xc1, 0x61, 0x0c, 0x49,
+ 0x01, 0x62, 0x0c, 0x49, 0x41, 0x62, 0x0c, 0x49,
+ 0x81, 0x62, 0x0c, 0x49, 0x3c, 0x00, 0x84, 0x22,
+ 0x04, 0x00, 0xc1, 0x62, 0xc2, 0x63, 0x70, 0x47,
+ 0x00, 0x00, 0xc9, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0xc1, 0x75, 0x00, 0x00, 0x81, 0x75,
+ 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0xcd, 0x75,
+ 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, 0x91, 0x75,
+ 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x8d, 0x75,
+ 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0e, 0x48, 0x0e, 0x49, 0x08, 0x60, 0x3c, 0x00,
+ 0xc0, 0x22, 0x04, 0x00, 0x08, 0x31, 0xc0, 0xf7,
+ 0x43, 0xfe, 0x0c, 0x49, 0x00, 0x25, 0x48, 0x60,
+ 0x0b, 0x48, 0x0a, 0x4c, 0x05, 0x60, 0x0b, 0x48,
+ 0x80, 0x3c, 0x05, 0x60, 0x10, 0x20, 0x20, 0x71,
+ 0xe0, 0x70, 0xa0, 0x71, 0x60, 0x71, 0x27, 0x20,
+ 0xc0, 0x43, 0xc3, 0xf7, 0xf7, 0xfb, 0x28, 0x20,
+ 0xc3, 0xf7, 0xfc, 0xfb, 0x25, 0x72, 0xb0, 0xbd,
+ 0xff, 0x3f, 0x00, 0x00, 0x2c, 0x7d, 0x01, 0x00,
+ 0x3c, 0x00, 0xfc, 0x22, 0x04, 0x00, 0x1c, 0x67,
+ 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x80, 0xb5,
+ 0x2c, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xc7, 0xf8,
+ 0x80, 0xbd, 0x3c, 0x7e, 0x01, 0x00, 0x80, 0xb5,
+ 0x38, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xbf, 0xf8,
+ 0x80, 0xbd, 0x68, 0x7e, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x0e, 0x20, 0x02, 0x4a, 0xd1, 0xf7,
+ 0x0c, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x21, 0xe0,
+ 0x00, 0x00, 0x3c, 0x00, 0x38, 0x23, 0x04, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0xb0,
+ 0x00, 0x27, 0x00, 0xab, 0x2f, 0x4e, 0x1f, 0x81,
+ 0x00, 0x25, 0x00, 0x24, 0x28, 0x1c, 0xd6, 0xf7,
+ 0xa1, 0xfb, 0x02, 0x2d, 0x03, 0xd1, 0xd6, 0xf7,
+ 0xf5, 0xfa, 0x00, 0x28, 0x0c, 0xd0, 0x01, 0x24,
+ 0x01, 0x2d, 0x03, 0xd1, 0x07, 0x20, 0x00, 0xab,
+ 0x18, 0x71, 0x01, 0xe0, 0x00, 0xab, 0x1f, 0x71,
+ 0x00, 0xab, 0x18, 0x79, 0x3c, 0x00, 0x74, 0x23,
+ 0x04, 0x00, 0xd6, 0xf7, 0x08, 0xfc, 0x00, 0x2c,
+ 0x39, 0xd0, 0x08, 0x21, 0x03, 0xa8, 0xd6, 0xf7,
+ 0xf2, 0xfa, 0x00, 0xab, 0x18, 0x7b, 0xfe, 0x28,
+ 0x31, 0xd1, 0x58, 0x7b, 0x01, 0x28, 0x2a, 0xd1,
+ 0x02, 0x21, 0x02, 0xa8, 0xd6, 0xf7, 0xe7, 0xfa,
+ 0x00, 0xab, 0x18, 0x89, 0x00, 0x28, 0x26, 0xd0,
+ 0x18, 0x89, 0x18, 0x49, 0x88, 0x42, 0x22, 0xd0,
+ 0x19, 0x89, 0x00, 0x20, 0xbf, 0xf7, 0x3c, 0x00,
+ 0xb0, 0x23, 0x04, 0x00, 0x13, 0xf9, 0x04, 0x1c,
+ 0x00, 0x69, 0x00, 0xab, 0x19, 0x89, 0xd6, 0xf7,
+ 0xd5, 0xfa, 0x20, 0x68, 0x00, 0xab, 0x1a, 0x89,
+ 0x01, 0x1c, 0x08, 0x31, 0x08, 0x3a, 0xcb, 0xf7,
+ 0xa1, 0xf9, 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28,
+ 0x04, 0xd0, 0x02, 0x21, 0x94, 0x20, 0x37, 0x60,
+ 0xbe, 0xf7, 0x62, 0xff, 0x20, 0x1c, 0xbf, 0xf7,
+ 0xc7, 0xf8, 0xd4, 0xe7, 0x01, 0x21, 0x94, 0x20,
+ 0x3c, 0x00, 0xec, 0x23, 0x04, 0x00, 0xbe, 0xf7,
+ 0x5a, 0xff, 0xd5, 0xf7, 0x26, 0xff, 0x01, 0x35,
+ 0x2d, 0x06, 0x2d, 0x0e, 0x04, 0x2d, 0xa5, 0xd3,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x58, 0x57,
+ 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x48,
+ 0x00, 0x21, 0x02, 0x1c, 0x18, 0x32, 0x80, 0xb5,
+ 0x09, 0x4b, 0x02, 0xe0, 0x01, 0x60, 0x83, 0x80,
+ 0x08, 0x30, 0x82, 0x42, 0xfa, 0xd1, 0x04, 0x48,
+ 0x6c, 0x21, 0x3c, 0x00, 0x28, 0x24, 0x04, 0x00,
+ 0x6c, 0x38, 0xbe, 0xf7, 0x37, 0xf8, 0x04, 0x49,
+ 0x02, 0x20, 0xc7, 0xf7, 0xd1, 0xff, 0x80, 0xbd,
+ 0x7c, 0x79, 0x01, 0x00, 0xfc, 0x05, 0x00, 0x00,
+ 0x9d, 0x75, 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x26, 0x20, 0x0d, 0x4a, 0xd1, 0xf7, 0x7c, 0xf9,
+ 0x0c, 0x48, 0xc8, 0xf7, 0x73, 0xff, 0x0c, 0x48,
+ 0xc8, 0xf7, 0x76, 0xff, 0x0b, 0x49, 0x10, 0x20,
+ 0xcf, 0xf7, 0x94, 0xff, 0x3c, 0x00, 0x64, 0x24,
+ 0x04, 0x00, 0x0a, 0x49, 0x0c, 0x20, 0xcf, 0xf7,
+ 0x90, 0xff, 0x09, 0x49, 0x00, 0x20, 0xc7, 0xf7,
+ 0xb2, 0xff, 0xcc, 0xf7, 0x6e, 0xff, 0x07, 0x49,
+ 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0x9d, 0xa6,
+ 0x00, 0x00, 0xa9, 0xa4, 0x00, 0x00, 0x81, 0xa4,
+ 0x00, 0x00, 0x31, 0xa7, 0x00, 0x00, 0xb9, 0x6d,
+ 0x00, 0x00, 0xbd, 0xa6, 0x00, 0x00, 0x0c, 0x79,
+ 0x01, 0x00, 0x02, 0x49, 0x08, 0x78, 0x3c, 0x00,
+ 0xa0, 0x24, 0x04, 0x00, 0x40, 0x08, 0x40, 0x00,
+ 0x08, 0x70, 0x70, 0x47, 0x58, 0x00, 0x07, 0x00,
+ 0x00, 0x21, 0x08, 0x48, 0x80, 0xb5, 0x41, 0x61,
+ 0x81, 0x61, 0x01, 0x70, 0x41, 0x70, 0x41, 0x60,
+ 0x81, 0x60, 0x14, 0x22, 0xc2, 0x60, 0x01, 0x61,
+ 0x42, 0x62, 0xc1, 0x61, 0xff, 0xf7, 0x04, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x1d, 0x20, 0x04, 0x4a,
+ 0x3c, 0x00, 0xdc, 0x24, 0x04, 0x00, 0xd1, 0xf7,
+ 0x34, 0xf9, 0x03, 0x49, 0x08, 0x20, 0xcf, 0xf7,
+ 0x52, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x11, 0xe3,
+ 0x00, 0x00, 0x09, 0xe4, 0x00, 0x00, 0x80, 0xb5,
+ 0x01, 0x21, 0x25, 0x20, 0x0a, 0x4a, 0xd1, 0xf7,
+ 0x24, 0xf9, 0xcc, 0xf7, 0x28, 0xff, 0x08, 0x49,
+ 0x08, 0x62, 0x08, 0x49, 0x01, 0x20, 0xcf, 0xf7,
+ 0x3e, 0xff, 0x07, 0x49, 0x02, 0x20, 0xcf, 0xf7,
+ 0x3a, 0xff, 0x3c, 0x00, 0x18, 0x25, 0x04, 0x00,
+ 0xfe, 0xf7, 0xe6, 0xff, 0x05, 0x48, 0xc1, 0xf7,
+ 0xe1, 0xf9, 0x80, 0xbd, 0x29, 0xa9, 0x00, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0xa1, 0xaa, 0x00, 0x00,
+ 0x2d, 0x19, 0x00, 0x00, 0x45, 0xa8, 0x00, 0x00,
+ 0x10, 0xb5, 0x06, 0x4c, 0x0c, 0x22, 0x22, 0x70,
+ 0xa0, 0x18, 0x05, 0x49, 0xbd, 0xf7, 0xd8, 0xff,
+ 0x00, 0x20, 0xc8, 0xf7, 0x85, 0xfb, 0x01, 0x20,
+ 0xa0, 0x60, 0x10, 0xbd, 0x3c, 0x00, 0x54, 0x25,
+ 0x04, 0x00, 0xa4, 0x69, 0x01, 0x00, 0x90, 0x57,
+ 0x01, 0x00, 0xb0, 0xb5, 0x1f, 0x4c, 0x00, 0x25,
+ 0x65, 0x80, 0x01, 0x20, 0x20, 0x70, 0x0a, 0x20,
+ 0xa0, 0x80, 0x90, 0x20, 0xe0, 0x80, 0x30, 0x20,
+ 0x20, 0x81, 0x90, 0x20, 0x60, 0x81, 0x30, 0x20,
+ 0xa0, 0x81, 0x17, 0x48, 0x04, 0x22, 0x07, 0x21,
+ 0x12, 0x30, 0xbe, 0xf7, 0x4c, 0xf8, 0x14, 0x48,
+ 0x04, 0x22, 0x05, 0x21, 0x16, 0x30, 0x3c, 0x00,
+ 0x90, 0x25, 0x04, 0x00, 0xbe, 0xf7, 0x46, 0xf8,
+ 0x12, 0x48, 0x11, 0x4a, 0xe0, 0x81, 0x20, 0x82,
+ 0x70, 0x32, 0x15, 0x70, 0x55, 0x70, 0x00, 0x20,
+ 0x3c, 0x23, 0x41, 0x01, 0x43, 0x43, 0x89, 0x18,
+ 0xf4, 0x31, 0x9b, 0x18, 0x01, 0x30, 0x04, 0x28,
+ 0x59, 0x60, 0xf5, 0xdb, 0x08, 0x48, 0x06, 0x22,
+ 0x1a, 0x30, 0x09, 0x49, 0xbd, 0xf7, 0x9a, 0xff,
+ 0x07, 0x48, 0x05, 0x4c, 0x0c, 0x30, 0x0f, 0xc8,
+ 0x3c, 0x00, 0xcc, 0x25, 0x04, 0x00, 0x20, 0x34,
+ 0x0f, 0xc4, 0x20, 0x21, 0x20, 0x1c, 0xbd, 0xf7,
+ 0x62, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0x60,
+ 0x01, 0x00, 0x2c, 0x09, 0x00, 0x00, 0x58, 0x40,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x07, 0x48,
+ 0x10, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x08, 0xd0,
+ 0x06, 0x48, 0xbe, 0xf7, 0x9c, 0xfe, 0x04, 0x1c,
+ 0xff, 0xf7, 0x9d, 0xfe, 0x20, 0x1c, 0xbe, 0xf7,
+ 0x96, 0xfe, 0x3c, 0x00, 0x08, 0x26, 0x04, 0x00,
+ 0x10, 0xbd, 0x00, 0x00, 0x58, 0x57, 0x01, 0x00,
+ 0xb5, 0xad, 0x00, 0x00, 0x04, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0x88, 0x70, 0x02, 0x21, 0x20, 0x20,
+ 0x02, 0x4a, 0xd1, 0xf7, 0x91, 0xf8, 0x80, 0xbd,
+ 0xb4, 0x79, 0x01, 0x00, 0x25, 0xb5, 0x00, 0x00,
+ 0x80, 0xb5, 0xcc, 0xf7, 0x8f, 0xfe, 0x01, 0x49,
+ 0x48, 0x61, 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x18, 0x21, 0x3c, 0x00, 0x44, 0x26,
+ 0x04, 0x00, 0x14, 0x48, 0xbd, 0xf7, 0x29, 0xff,
+ 0x14, 0x48, 0x01, 0x21, 0x01, 0x70, 0x00, 0x21,
+ 0xc1, 0x60, 0x41, 0x70, 0x01, 0x61, 0x00, 0xf0,
+ 0x02, 0xf9, 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0,
+ 0x1e, 0xf8, 0x00, 0xf0, 0xba, 0xf9, 0x00, 0xf0,
+ 0xcc, 0xf9, 0x00, 0xf0, 0x20, 0xf9, 0x00, 0xf0,
+ 0x64, 0xf9, 0x00, 0xf0, 0xce, 0xf9, 0x00, 0xf0,
+ 0xfc, 0xf8, 0x00, 0xf0, 0x82, 0xf9, 0x3c, 0x00,
+ 0x80, 0x26, 0x04, 0x00, 0x00, 0xf0, 0x28, 0xf8,
+ 0x00, 0xf0, 0x6e, 0xf8, 0x00, 0xf0, 0x4a, 0xf8,
+ 0xff, 0xf7, 0xc2, 0xff, 0x00, 0xf0, 0x72, 0xf9,
+ 0x80, 0xbd, 0x00, 0x00, 0x40, 0x7c, 0x01, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c,
+ 0x00, 0x25, 0x08, 0x48, 0x25, 0x77, 0x20, 0x60,
+ 0xce, 0xf7, 0xf0, 0xfd, 0x00, 0x20, 0xe5, 0x62,
+ 0xd0, 0xf7, 0xd0, 0xfa, 0x21, 0x1f, 0x08, 0x80,
+ 0x3c, 0x00, 0xbc, 0x26, 0x04, 0x00, 0xd0, 0xf7,
+ 0x6c, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x80, 0xb5,
+ 0xcc, 0xf7, 0xc1, 0xfc, 0x80, 0xbd, 0x05, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x08, 0x70, 0x48, 0x70,
+ 0x03, 0x48, 0x04, 0x49, 0x03, 0x4a, 0x08, 0x30,
+ 0xcc, 0xf7, 0x27, 0xfe, 0x80, 0xbd, 0x2c, 0x63,
+ 0x01, 0x00, 0xed, 0xbc, 0x00, 0x00, 0x4d, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x26, 0x04, 0x00,
+ 0x80, 0xb5, 0xcc, 0xf7, 0x2b, 0xfe, 0x05, 0x49,
+ 0x48, 0x60, 0x01, 0x1c, 0x04, 0x48, 0xcc, 0xf7,
+ 0x4b, 0xfe, 0x04, 0x49, 0x03, 0x20, 0xcf, 0xf7,
+ 0x3d, 0xfe, 0x80, 0xbd, 0x2c, 0x63, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0xc1, 0xbc, 0x00, 0x00,
+ 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x08, 0xc0, 0x02, 0x49, 0x10, 0x38,
+ 0x01, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x34, 0x27,
+ 0x04, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x1c, 0xe6,
+ 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x09, 0xfe,
+ 0x05, 0x49, 0x05, 0x4a, 0x48, 0x60, 0x02, 0x21,
+ 0x24, 0x20, 0xd0, 0xf7, 0xfc, 0xff, 0x03, 0x48,
+ 0xc9, 0xf7, 0x6b, 0xfd, 0x80, 0xbd, 0x04, 0x7a,
+ 0x01, 0x00, 0x69, 0xbe, 0x00, 0x00, 0x71, 0xeb,
+ 0x00, 0x00, 0x10, 0xb5, 0x04, 0x4c, 0x14, 0x21,
+ 0x20, 0x1c, 0xbd, 0xf7, 0x96, 0xfe, 0x3c, 0x00,
+ 0x70, 0x27, 0x04, 0x00, 0x02, 0x48, 0x20, 0x60,
+ 0x10, 0xbd, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00,
+ 0xec, 0xe5, 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7,
+ 0xe7, 0xfd, 0x07, 0x49, 0x07, 0x4a, 0x48, 0x60,
+ 0x02, 0x21, 0x1f, 0x20, 0xd0, 0xf7, 0xda, 0xff,
+ 0x05, 0x49, 0x01, 0x20, 0x08, 0x60, 0x05, 0x49,
+ 0x0c, 0x20, 0xcf, 0xf7, 0xf5, 0xfd, 0x80, 0xbd,
+ 0x14, 0x7a, 0x01, 0x00, 0xd5, 0xbf, 0x00, 0x00,
+ 0x3c, 0x00, 0xac, 0x27, 0x04, 0x00, 0x80, 0x5a,
+ 0x01, 0x00, 0x85, 0xff, 0x00, 0x00, 0x80, 0xb5,
+ 0xff, 0xf7, 0x4f, 0xfd, 0x01, 0x21, 0x21, 0x20,
+ 0x02, 0x4a, 0xd0, 0xf7, 0xc2, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0xc9, 0xc1, 0x00, 0x00, 0x80, 0xb5,
+ 0xcc, 0xf7, 0xc1, 0xfd, 0x02, 0x49, 0x08, 0x63,
+ 0xc9, 0xf7, 0x57, 0xfd, 0x80, 0xbd, 0x28, 0x7a,
+ 0x01, 0x00, 0x10, 0xb5, 0xcc, 0xf7, 0xb7, 0xfd,
+ 0x16, 0x4c, 0x3c, 0x00, 0xe8, 0x27, 0x04, 0x00,
+ 0x20, 0x61, 0xcc, 0xf7, 0xb3, 0xfd, 0x60, 0x61,
+ 0x14, 0x48, 0x15, 0x49, 0x08, 0x60, 0x16, 0x49,
+ 0x14, 0x48, 0x08, 0x60, 0xcc, 0xf7, 0xaa, 0xfd,
+ 0x14, 0x49, 0x08, 0x60, 0x00, 0xf0, 0x34, 0xf8,
+ 0xff, 0xf7, 0xe0, 0xff, 0xff, 0xf7, 0x5e, 0xff,
+ 0x00, 0xf0, 0x04, 0xf9, 0x00, 0xf0, 0x8e, 0xf8,
+ 0xff, 0xf7, 0x6e, 0xff, 0xff, 0xf7, 0xb0, 0xff,
+ 0xff, 0xf7, 0x8c, 0xff, 0x3c, 0x00, 0x24, 0x28,
+ 0x04, 0x00, 0xff, 0xf7, 0x04, 0xff, 0x00, 0xf0,
+ 0xaa, 0xf8, 0x0a, 0x48, 0xbf, 0xf7, 0xbd, 0xff,
+ 0xc9, 0xf7, 0xbb, 0xfd, 0x09, 0x49, 0x00, 0x20,
+ 0xcf, 0xf7, 0xa7, 0xfd, 0x10, 0xbd, 0x40, 0x7c,
+ 0x01, 0x00, 0x7d, 0xb7, 0x00, 0x00, 0x18, 0x7e,
+ 0x01, 0x00, 0xbd, 0xb8, 0x00, 0x00, 0x1c, 0x7e,
+ 0x01, 0x00, 0x20, 0x7e, 0x01, 0x00, 0xb9, 0xba,
+ 0x00, 0x00, 0x81, 0x24, 0x01, 0x00, 0x3c, 0x00,
+ 0x60, 0x28, 0x04, 0x00, 0x80, 0xb5, 0x38, 0x21,
+ 0x01, 0x48, 0xbd, 0xf7, 0x19, 0xfe, 0x80, 0xbd,
+ 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, 0x00, 0x20,
+ 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, 0xe0, 0x60,
+ 0x0a, 0x20, 0x20, 0x81, 0x28, 0x1c, 0xc8, 0xf7,
+ 0x3f, 0xfd, 0x28, 0x1c, 0xc8, 0xf7, 0x3a, 0xfd,
+ 0x08, 0x3d, 0x68, 0x60, 0x04, 0x48, 0xc9, 0xf7,
+ 0x3c, 0x00, 0x9c, 0x28, 0x04, 0x00, 0x1b, 0xfd,
+ 0x20, 0x1c, 0xc0, 0xf7, 0x6e, 0xfa, 0x28, 0x80,
+ 0xb0, 0xbd, 0xb8, 0x7a, 0x01, 0x00, 0xd5, 0x33,
+ 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x1d, 0x4c,
+ 0x00, 0x20, 0x0c, 0x21, 0x41, 0x43, 0x82, 0x00,
+ 0x01, 0x30, 0x09, 0x19, 0x08, 0x31, 0x00, 0x06,
+ 0x00, 0x0e, 0x04, 0x28, 0xb1, 0x50, 0xf4, 0xd3,
+ 0x18, 0x48, 0x0c, 0x38, 0x30, 0x61, 0xce, 0xf7,
+ 0xf4, 0xf9, 0x3c, 0x00, 0xd8, 0x28, 0x04, 0x00,
+ 0x14, 0x4c, 0xa0, 0x78, 0x00, 0x09, 0x00, 0x01,
+ 0xa0, 0x70, 0x00, 0x27, 0xe7, 0x70, 0x67, 0x70,
+ 0x00, 0x24, 0xa5, 0x00, 0x70, 0x59, 0x07, 0x70,
+ 0x20, 0x1c, 0xbe, 0xf7, 0x53, 0xf9, 0x71, 0x59,
+ 0x08, 0x71, 0x00, 0x21, 0x20, 0x1c, 0xce, 0xf7,
+ 0x7d, 0xf9, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e,
+ 0x04, 0x2c, 0xee, 0xd3, 0x07, 0x4c, 0x20, 0x78,
+ 0x00, 0x09, 0x00, 0x01, 0x3c, 0x00, 0x14, 0x29,
+ 0x04, 0x00, 0x0a, 0x30, 0x20, 0x70, 0x20, 0x78,
+ 0xf0, 0x21, 0x88, 0x43, 0x30, 0x30, 0x20, 0x70,
+ 0xa0, 0x78, 0x0f, 0x21, 0x08, 0x43, 0xa0, 0x70,
+ 0xf8, 0xbd, 0x00, 0x50, 0x07, 0x00, 0x10, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x9f, 0xfb,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d,
+ 0x00, 0x20, 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60,
+ 0xe0, 0x60, 0x0a, 0x20, 0x20, 0x81, 0x3c, 0x00,
+ 0x50, 0x29, 0x04, 0x00, 0x28, 0x1c, 0xc8, 0xf7,
+ 0xe1, 0xfc, 0x28, 0x1c, 0xc8, 0xf7, 0xd4, 0xfc,
+ 0x08, 0x3d, 0x68, 0x60, 0x20, 0x1c, 0xc0, 0xf7,
+ 0x0d, 0xfa, 0x28, 0x80, 0x02, 0x48, 0xc9, 0xf7,
+ 0x9b, 0xfc, 0xb0, 0xbd, 0x2c, 0x7b, 0x01, 0x00,
+ 0x49, 0x00, 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7,
+ 0x2f, 0xf8, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00,
+ 0xb0, 0xb5, 0x12, 0x4d, 0x3c, 0x21, 0x28, 0x1c,
+ 0x3c, 0x00, 0x8c, 0x29, 0x04, 0x00, 0xbd, 0xf7,
+ 0x86, 0xfd, 0x0f, 0x48, 0x28, 0x21, 0x3c, 0x30,
+ 0xbd, 0xf7, 0x81, 0xfd, 0x0d, 0x48, 0x00, 0x21,
+ 0x14, 0x38, 0x01, 0x61, 0xc1, 0x60, 0xff, 0x21,
+ 0x01, 0x70, 0x41, 0x70, 0x0a, 0x49, 0x0a, 0x4a,
+ 0x41, 0x60, 0x01, 0x21, 0x0c, 0x20, 0xd0, 0xf7,
+ 0xc8, 0xfe, 0x2c, 0x1c, 0x30, 0x34, 0x0c, 0x3d,
+ 0x00, 0x20, 0xd0, 0xf7, 0x4a, 0xf9, 0x20, 0x80,
+ 0x0c, 0x3c, 0x3c, 0x00, 0xc8, 0x29, 0x04, 0x00,
+ 0xac, 0x42, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00,
+ 0x60, 0x7b, 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00,
+ 0x35, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x00, 0x20,
+ 0x0c, 0x22, 0x42, 0x43, 0x52, 0x18, 0x10, 0x71,
+ 0x01, 0x30, 0x05, 0x28, 0xf8, 0xdb, 0x04, 0x48,
+ 0x00, 0x21, 0x08, 0x38, 0x01, 0x70, 0x41, 0x60,
+ 0xff, 0x21, 0x41, 0x70, 0x70, 0x47, 0x00, 0x00,
+ 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x04, 0x2a,
+ 0x04, 0x00, 0x80, 0xb5, 0x78, 0x21, 0x01, 0x48,
+ 0xbd, 0xf7, 0x47, 0xfd, 0x80, 0xbd, 0xc4, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, 0x97, 0xfa,
+ 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5,
+ 0x0b, 0x4c, 0xff, 0x21, 0x05, 0x31, 0x20, 0x1c,
+ 0xbd, 0xf7, 0x37, 0xfd, 0x09, 0x48, 0xf0, 0x21,
+ 0x08, 0x51, 0x20, 0x1c, 0x40, 0x30, 0xc5, 0xf7,
+ 0x8e, 0xf9, 0x6c, 0x21, 0x06, 0x48, 0x3c, 0x00,
+ 0x40, 0x2a, 0x04, 0x00, 0xbd, 0xf7, 0x2c, 0xfd,
+ 0x04, 0x48, 0xc0, 0x21, 0x6c, 0x30, 0xbd, 0xf7,
+ 0x27, 0xfd, 0x10, 0xbd, 0xc4, 0x69, 0x01, 0x00,
+ 0xb0, 0xd9, 0x01, 0x00, 0xc8, 0x6a, 0x01, 0x00,
+ 0xb0, 0xb5, 0x0b, 0x4d, 0x00, 0x24, 0x1c, 0x20,
+ 0x60, 0x43, 0x40, 0x19, 0x6c, 0x30, 0xc3, 0xf7,
+ 0x0f, 0xfe, 0x01, 0x34, 0x04, 0x2c, 0xf6, 0xdb,
+ 0xcc, 0xf7, 0x6e, 0xfc, 0xa8, 0x63, 0xc7, 0xf7,
+ 0x3c, 0x00, 0x7c, 0x2a, 0x04, 0x00, 0x75, 0xf9,
+ 0x04, 0x48, 0xc9, 0xf7, 0x1c, 0xfc, 0x03, 0x48,
+ 0xcf, 0xf7, 0x03, 0xfa, 0xb0, 0xbd, 0xc4, 0x69,
+ 0x01, 0x00, 0xfd, 0x80, 0x00, 0x00, 0xe1, 0x22,
+ 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x20,
+ 0x20, 0x80, 0x03, 0x48, 0x06, 0x21, 0x08, 0x30,
+ 0xbd, 0xf7, 0xd5, 0xfc, 0x14, 0x20, 0x60, 0x60,
+ 0x10, 0xbd, 0x98, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x08, 0x4c, 0x3c, 0x00, 0xb8, 0x2a, 0x04, 0x00,
+ 0x00, 0x20, 0x20, 0x80, 0x60, 0x80, 0x06, 0x48,
+ 0x06, 0x21, 0x0c, 0x30, 0xbd, 0xf7, 0xc6, 0xfc,
+ 0x03, 0x48, 0x06, 0x21, 0x12, 0x30, 0xbd, 0xf7,
+ 0xc1, 0xfc, 0x14, 0x20, 0xa0, 0x60, 0x10, 0xbd,
+ 0x58, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x0d, 0x20, 0x05, 0x4a,
+ 0xd0, 0xf7, 0x2e, 0xfe, 0x04, 0x48, 0xc8, 0xf7,
+ 0x1f, 0xfc, 0x04, 0x48, 0x3c, 0x00, 0xf4, 0x2a,
+ 0x04, 0x00, 0xca, 0xf7, 0x44, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x51, 0xb1,
+ 0x00, 0x00, 0x09, 0xb1, 0x00, 0x00, 0x08, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x08, 0x60, 0xff, 0xf7,
+ 0xd0, 0xff, 0xff, 0xf7, 0xc0, 0xff, 0xff, 0xf7,
+ 0x04, 0xfc, 0x00, 0xf0, 0x4a, 0xf8, 0xff, 0xf7,
+ 0x0a, 0xfc, 0x00, 0xf0, 0x3c, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x3c, 0x00,
+ 0x30, 0x2b, 0x04, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x29, 0xf8, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0xf0,
+ 0x51, 0xf8, 0x00, 0xf0, 0x31, 0xf8, 0x80, 0xbd,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0xff, 0x21, 0x89, 0x31, 0x02, 0x48,
+ 0xbd, 0xf7, 0xa2, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0xdc, 0x71, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x49,
+ 0x08, 0x20, 0xcf, 0xf7, 0x11, 0xfc, 0x80, 0xbd,
+ 0x3c, 0x00, 0x6c, 0x2b, 0x04, 0x00, 0x59, 0xd9,
+ 0x00, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7,
+ 0x4c, 0xf9, 0x02, 0x49, 0x48, 0x80, 0x80, 0xbd,
+ 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x98, 0x7c,
+ 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7,
+ 0x40, 0xf9, 0x02, 0x49, 0x88, 0x80, 0x80, 0xbd,
+ 0x00, 0x00, 0xd5, 0x23, 0x00, 0x00, 0x58, 0x7c,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5,
+ 0x02, 0x48, 0x3c, 0x00, 0xa8, 0x2b, 0x04, 0x00,
+ 0xca, 0xf7, 0xe4, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x71, 0xe0, 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7,
+ 0xa5, 0xfb, 0x02, 0x21, 0x0f, 0x20, 0x06, 0x4a,
+ 0xd0, 0xf7, 0xc2, 0xfd, 0x14, 0x21, 0x05, 0x48,
+ 0xbd, 0xf7, 0x68, 0xfc, 0x03, 0x48, 0x78, 0x21,
+ 0x14, 0x30, 0xbd, 0xf7, 0x63, 0xfc, 0x80, 0xbd,
+ 0x35, 0xe2, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00,
+ 0x80, 0xb5, 0xcc, 0xf7, 0x3c, 0x00, 0xe4, 0x2b,
+ 0x04, 0x00, 0xb7, 0xfb, 0x05, 0x49, 0x08, 0x61,
+ 0x05, 0x49, 0x0e, 0x20, 0xcf, 0xf7, 0xcd, 0xfb,
+ 0x04, 0x49, 0x08, 0x20, 0xcf, 0xf7, 0xc9, 0xfb,
+ 0x80, 0xbd, 0xec, 0x65, 0x01, 0x00, 0x01, 0x02,
+ 0x01, 0x00, 0xc1, 0x2e, 0x00, 0x00, 0x01, 0x49,
+ 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x40, 0xd9,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49,
+ 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x3c, 0x00,
+ 0x20, 0x2c, 0x04, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x07, 0x48, 0xc8, 0xf7, 0xf2, 0xff,
+ 0x06, 0x49, 0x48, 0x60, 0x06, 0x48, 0xc0, 0xf7,
+ 0x07, 0xfb, 0x06, 0x48, 0xc0, 0xf7, 0x86, 0xfb,
+ 0x05, 0x48, 0xc9, 0xf7, 0xa3, 0xfa, 0x80, 0xbd,
+ 0xa9, 0xe4, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0xb9, 0xe4, 0x00, 0x00, 0x85, 0x2e, 0x00, 0x00,
+ 0x81, 0xe4, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0x5c, 0x2c, 0x04, 0x00, 0x00, 0x21,
+ 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0,
+ 0x10, 0x38, 0xc8, 0x21, 0x01, 0x60, 0x00, 0x21,
+ 0x0c, 0x38, 0x02, 0x4a, 0xcc, 0xf7, 0x61, 0xfb,
+ 0x80, 0xbd, 0xd0, 0x60, 0x01, 0x00, 0xfd, 0xe5,
+ 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x67, 0xfb,
+ 0x04, 0x49, 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48,
+ 0x04, 0x30, 0xcc, 0xf7, 0x86, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x98, 0x2c, 0x04, 0x00,
+ 0xc0, 0x60, 0x01, 0x00, 0x09, 0x48, 0x80, 0xb5,
+ 0x0a, 0x21, 0x01, 0x70, 0x41, 0x70, 0x08, 0x49,
+ 0x08, 0x4a, 0x81, 0x60, 0x00, 0x21, 0xc1, 0x60,
+ 0x52, 0x79, 0x82, 0x70, 0x01, 0x61, 0x41, 0x61,
+ 0x28, 0x21, 0x18, 0x30, 0xbd, 0xf7, 0xee, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00,
+ 0xa0, 0x86, 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0f, 0x49, 0x3c, 0x00, 0xd4, 0x2c,
+ 0x04, 0x00, 0x0f, 0x48, 0x0d, 0x88, 0x4f, 0x88,
+ 0x06, 0x79, 0x00, 0x24, 0x30, 0x1b, 0x68, 0x43,
+ 0x68, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18,
+ 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0x0f, 0xfd,
+ 0x61, 0x00, 0x09, 0x4a, 0xa6, 0x42, 0x50, 0x52,
+ 0x00, 0xd1, 0x3d, 0x1c, 0x01, 0x34, 0x24, 0x06,
+ 0x24, 0x0e, 0x10, 0x2c, 0xea, 0xd3, 0x05, 0x49,
+ 0x01, 0x20, 0x08, 0x61, 0xf8, 0xbd, 0x3c, 0x00,
+ 0x10, 0x2d, 0x04, 0x00, 0xf6, 0x59, 0x01, 0x00,
+ 0x0c, 0x5a, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00,
+ 0x12, 0x5a, 0x01, 0x00, 0x7c, 0x78, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfa, 0x02, 0x49,
+ 0x01, 0x20, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00,
+ 0x7c, 0x78, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x08, 0x1c, 0x0f, 0x49, 0x49, 0x79, 0x00, 0x29,
+ 0x01, 0xd1, 0x0e, 0x4b, 0x00, 0xe0, 0x0e, 0x4b,
+ 0x3c, 0x00, 0x4c, 0x2d, 0x04, 0x00, 0x00, 0x2c,
+ 0x07, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x0a, 0x1c,
+ 0x01, 0x24, 0x19, 0x1c, 0xbd, 0xf7, 0xcd, 0xfb,
+ 0x0a, 0xe0, 0x01, 0x24, 0x01, 0x1c, 0x18, 0x1c,
+ 0x12, 0x88, 0xbd, 0xf7, 0xc6, 0xfb, 0x00, 0xf0,
+ 0xc4, 0xfa, 0x05, 0x49, 0x01, 0x20, 0x08, 0x61,
+ 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x0c, 0x5a,
+ 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, 0xfa, 0x59,
+ 0x01, 0x00, 0x3c, 0x00, 0x88, 0x2d, 0x04, 0x00,
+ 0x7c, 0x78, 0x01, 0x00, 0x0d, 0x48, 0x8c, 0xb5,
+ 0xc1, 0x88, 0x00, 0xab, 0x0c, 0x4a, 0x99, 0x80,
+ 0x01, 0x89, 0x04, 0x20, 0xd9, 0x80, 0x18, 0x80,
+ 0x02, 0x21, 0x13, 0x20, 0xd0, 0xf7, 0xd0, 0xfc,
+ 0x00, 0xf0, 0xa6, 0xfa, 0x07, 0x49, 0x01, 0x20,
+ 0x08, 0x61, 0xff, 0xf7, 0x8d, 0xff, 0x6a, 0x46,
+ 0x01, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xbc, 0xff,
+ 0x8c, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xc4, 0x2d,
+ 0x04, 0x00, 0xf4, 0x59, 0x01, 0x00, 0x95, 0xf9,
+ 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, 0xf8, 0xb5,
+ 0x13, 0x4e, 0x01, 0x25, 0xb5, 0x70, 0x05, 0x20,
+ 0xf0, 0x70, 0x11, 0x49, 0x10, 0x48, 0x0e, 0xc9,
+ 0x2c, 0x30, 0x0e, 0xc0, 0x00, 0x20, 0x70, 0x61,
+ 0x0f, 0x48, 0x0f, 0x49, 0x10, 0x4f, 0x00, 0x24,
+ 0x48, 0x60, 0xa0, 0x00, 0x39, 0x58, 0x20, 0x1c,
+ 0xd1, 0xf7, 0xd7, 0xf8, 0x01, 0x34, 0x3c, 0x00,
+ 0x00, 0x2e, 0x04, 0x00, 0x10, 0x2c, 0xf7, 0xd3,
+ 0x06, 0x4c, 0x0b, 0x4a, 0x20, 0x34, 0x20, 0x1c,
+ 0x0a, 0x49, 0xb5, 0x60, 0xcc, 0xf7, 0x92, 0xfa,
+ 0xcc, 0xf7, 0x9e, 0xfa, 0x30, 0x61, 0x20, 0x60,
+ 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0xb0, 0x58, 0x01, 0x00, 0x04, 0x18, 0x02, 0x00,
+ 0x60, 0x00, 0x07, 0x00, 0xd4, 0x44, 0x01, 0x00,
+ 0x45, 0xfa, 0x00, 0x00, 0x71, 0xfa, 0x00, 0x00,
+ 0x3c, 0x00, 0x3c, 0x2e, 0x04, 0x00, 0x0c, 0x49,
+ 0x30, 0xb5, 0x00, 0x23, 0xcc, 0x56, 0x0b, 0x4b,
+ 0x00, 0x20, 0xf0, 0x25, 0x1a, 0x5c, 0x11, 0x07,
+ 0x09, 0x0f, 0x09, 0x19, 0x0f, 0x29, 0x01, 0xdd,
+ 0x0f, 0x21, 0x02, 0xe0, 0x00, 0x29, 0x00, 0xda,
+ 0x00, 0x21, 0x2a, 0x40, 0x51, 0x18, 0x19, 0x54,
+ 0x01, 0x30, 0x0e, 0x28, 0xee, 0xdb, 0x30, 0xbd,
+ 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xc0, 0x58,
+ 0x01, 0x00, 0x3c, 0x00, 0x78, 0x2e, 0x04, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, 0x08, 0xd0,
+ 0x01, 0x24, 0x14, 0x80, 0x05, 0x20, 0xcc, 0xf7,
+ 0xb5, 0xf8, 0x80, 0x03, 0xc0, 0x0f, 0x28, 0x70,
+ 0x07, 0xe0, 0x28, 0x78, 0x01, 0x22, 0x41, 0x04,
+ 0x52, 0x04, 0x05, 0x20, 0xd0, 0xf7, 0xae, 0xfd,
+ 0x01, 0x24, 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00,
+ 0x98, 0xb5, 0x05, 0x4c, 0x60, 0x68, 0xcc, 0xf7,
+ 0xf5, 0xfd, 0x00, 0x90, 0x3c, 0x00, 0xb4, 0x2e,
+ 0x04, 0x00, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80,
+ 0xce, 0xf7, 0xfb, 0xff, 0x98, 0xbd, 0xa0, 0x58,
+ 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c,
+ 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0,
+ 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24,
+ 0x29, 0x1c, 0xbd, 0xf7, 0x0c, 0xfb, 0x22, 0xe0,
+ 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c,
+ 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0x3c, 0x00,
+ 0xf0, 0x2e, 0x04, 0x00, 0x03, 0xfb, 0x00, 0x98,
+ 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, 0x00, 0xe0,
+ 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20,
+ 0xbd, 0xf7, 0x98, 0xfb, 0x01, 0x06, 0x09, 0x16,
+ 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7,
+ 0x85, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1,
+ 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7,
+ 0xe9, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd,
+ 0x3c, 0x00, 0x2c, 0x2f, 0x04, 0x00, 0xda, 0x59,
+ 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c,
+ 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0,
+ 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24,
+ 0x29, 0x1c, 0xbd, 0xf7, 0xd6, 0xfa, 0x22, 0xe0,
+ 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c,
+ 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0xcd, 0xfa,
+ 0x00, 0x98, 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30,
+ 0x00, 0xe0, 0x3c, 0x00, 0x68, 0x2f, 0x04, 0x00,
+ 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20,
+ 0xbd, 0xf7, 0x62, 0xfb, 0x01, 0x06, 0x09, 0x16,
+ 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7,
+ 0x4f, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1,
+ 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7,
+ 0xb3, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd,
+ 0xcc, 0x59, 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5,
+ 0x01, 0x78, 0x00, 0x20, 0x3c, 0x00, 0xa4, 0x2f,
+ 0x04, 0x00, 0xcc, 0xf7, 0xb4, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x02, 0x49, 0x03, 0x20, 0x08, 0x70,
+ 0x00, 0x20, 0x48, 0x70, 0x70, 0x47, 0x9c, 0x73,
+ 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x11, 0x20,
+ 0x02, 0x4a, 0xd0, 0xf7, 0xbc, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xa1, 0xfe, 0x00, 0x00, 0xf0, 0xb5,
+ 0x0b, 0x4f, 0x1c, 0x1c, 0x00, 0x23, 0x3c, 0x00,
+ 0xe0, 0x2f, 0x04, 0x00, 0xfd, 0x56, 0x2b, 0x1c,
+ 0x06, 0x2d, 0x01, 0xd1, 0x01, 0x20, 0xf0, 0xbd,
+ 0x06, 0x4e, 0x05, 0x1c, 0xd8, 0x00, 0x34, 0x36,
+ 0x35, 0x54, 0x80, 0x19, 0x41, 0x70, 0x82, 0x70,
+ 0x44, 0x60, 0x58, 0x1c, 0x38, 0x70, 0x00, 0x20,
+ 0xf0, 0xbd, 0x00, 0x00, 0x98, 0x5a, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x48, 0x00, 0xf0,
+ 0x21, 0xf9, 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0,
+ 0x3c, 0x00, 0x1c, 0x30, 0x04, 0x00, 0x01, 0x23,
+ 0xe0, 0x56, 0x06, 0x21, 0x00, 0xf0, 0xcd, 0xf8,
+ 0x08, 0x4a, 0x01, 0x21, 0x10, 0x78, 0x08, 0x43,
+ 0x07, 0x49, 0x08, 0x70, 0x20, 0x23, 0x18, 0x43,
+ 0x08, 0x70, 0x80, 0x23, 0x18, 0x43, 0x10, 0x70,
+ 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x91, 0x9b,
+ 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, 0x04, 0x00,
+ 0x07, 0x00, 0x10, 0xb5, 0x0a, 0x49, 0x04, 0x1c,
+ 0x08, 0x78, 0x3c, 0x00, 0x58, 0x30, 0x04, 0x00,
+ 0x40, 0x08, 0x40, 0x00, 0x08, 0x70, 0x08, 0x49,
+ 0x08, 0x70, 0x08, 0x48, 0x00, 0xf0, 0xf8, 0xf8,
+ 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, 0x01, 0x23,
+ 0xe0, 0x56, 0x05, 0x21, 0x00, 0xf0, 0xa4, 0xf8,
+ 0x10, 0xbd, 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00,
+ 0x04, 0x00, 0x07, 0x00, 0x91, 0x9b, 0x00, 0x00,
+ 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x08, 0xc0, 0x3c, 0x00, 0x94, 0x30,
+ 0x04, 0x00, 0x70, 0x47, 0x00, 0x00, 0xe8, 0x60,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5,
+ 0x07, 0x4c, 0x00, 0x20, 0x60, 0x60, 0x20, 0x80,
+ 0xe0, 0x60, 0x02, 0x21, 0x14, 0x20, 0x04, 0x4a,
+ 0xd0, 0xf7, 0x49, 0xfb, 0x02, 0x48, 0x10, 0x30,
+ 0xa0, 0x60, 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75,
+ 0x01, 0x00, 0x05, 0x1d, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x10, 0xb5, 0x48, 0x21, 0x3c, 0x00,
+ 0xd0, 0x30, 0x04, 0x00, 0x0a, 0x48, 0xbd, 0xf7,
+ 0xe3, 0xf9, 0x09, 0x4c, 0xe0, 0x21, 0x48, 0x34,
+ 0x20, 0x1c, 0xbd, 0xf7, 0xdd, 0xf9, 0x00, 0x20,
+ 0xc1, 0x00, 0x09, 0x19, 0x0a, 0x1c, 0x08, 0x32,
+ 0x01, 0x30, 0x1b, 0x28, 0x4a, 0x60, 0xf7, 0xd3,
+ 0x01, 0x48, 0x04, 0x38, 0x04, 0x60, 0x10, 0xbd,
+ 0x68, 0x5b, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x23, 0x20, 0x02, 0x4a, 0xd0, 0xf7, 0x1e, 0xfb,
+ 0x3c, 0x00, 0x0c, 0x31, 0x04, 0x00, 0x80, 0xbd,
+ 0x00, 0x00, 0x45, 0x23, 0x01, 0x00, 0x80, 0xb5,
+ 0xff, 0xf7, 0x6b, 0xf8, 0x80, 0xbd, 0x70, 0x47,
+ 0x00, 0x00, 0xf8, 0xb5, 0x01, 0x20, 0x1d, 0x49,
+ 0xc0, 0x07, 0x48, 0x60, 0x1d, 0x49, 0xff, 0x20,
+ 0x08, 0x73, 0x1c, 0x4e, 0x10, 0x20, 0x30, 0x60,
+ 0x05, 0x01, 0x35, 0x60, 0x1b, 0x4c, 0x80, 0x21,
+ 0x20, 0x1c, 0xbd, 0xf7, 0xac, 0xf9, 0x00, 0x21,
+ 0x19, 0x4a, 0x3c, 0x00, 0x48, 0x31, 0x04, 0x00,
+ 0x15, 0x4f, 0x00, 0x20, 0x0b, 0x01, 0x1b, 0x19,
+ 0x5a, 0x60, 0xcb, 0x00, 0xdb, 0x19, 0x18, 0x74,
+ 0x01, 0x31, 0x08, 0x29, 0xf6, 0xdb, 0x0f, 0x4c,
+ 0xfa, 0x21, 0x21, 0x80, 0x12, 0x49, 0x61, 0x80,
+ 0xa0, 0x60, 0x6a, 0x46, 0x11, 0x49, 0x04, 0x20,
+ 0xbd, 0xf7, 0x30, 0xff, 0x6a, 0x46, 0x10, 0x49,
+ 0x08, 0x20, 0xbd, 0xf7, 0x2b, 0xff, 0x10, 0x20,
+ 0x70, 0x60, 0x75, 0x60, 0x3c, 0x00, 0x84, 0x31,
+ 0x04, 0x00, 0x60, 0x68, 0x02, 0x21, 0x08, 0x43,
+ 0x60, 0x60, 0x0b, 0x49, 0x06, 0x4a, 0x08, 0x1c,
+ 0x10, 0x30, 0x08, 0x3a, 0x03, 0xc2, 0xf8, 0xbd,
+ 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0xac, 0x73,
+ 0x01, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x20, 0x4e,
+ 0x00, 0x00, 0x05, 0x2c, 0x01, 0x00, 0x11, 0x2c,
+ 0x01, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x3c, 0x00,
+ 0xc0, 0x31, 0x04, 0x00, 0x70, 0xb5, 0x0e, 0x1c,
+ 0x00, 0x24, 0xc4, 0xf7, 0x5b, 0xfe, 0x00, 0x28,
+ 0x3b, 0xd0, 0x45, 0x68, 0xff, 0x2d, 0x38, 0xd0,
+ 0x0c, 0x2e, 0x28, 0xd2, 0x01, 0xa3, 0x9b, 0x5d,
+ 0x5b, 0x00, 0x9f, 0x44, 0x05, 0x07, 0x09, 0x0b,
+ 0x0d, 0x10, 0x13, 0x16, 0x18, 0x1b, 0x1e, 0x21,
+ 0x18, 0x24, 0x20, 0xe0, 0x30, 0x24, 0x1e, 0xe0,
+ 0x60, 0x24, 0x1c, 0xe0, 0xc0, 0x24, 0x1a, 0xe0,
+ 0x3c, 0x00, 0xfc, 0x31, 0x04, 0x00, 0xff, 0x24,
+ 0x81, 0x34, 0x17, 0xe0, 0x09, 0x24, 0xa4, 0x01,
+ 0x14, 0xe0, 0x09, 0x24, 0xe4, 0x01, 0x11, 0xe0,
+ 0x0f, 0x4c, 0x0f, 0xe0, 0x09, 0x24, 0x24, 0x02,
+ 0x0c, 0xe0, 0x09, 0x24, 0x64, 0x02, 0x09, 0xe0,
+ 0x03, 0x24, 0xe4, 0x02, 0x06, 0xe0, 0x09, 0x24,
+ 0xa4, 0x02, 0x03, 0xe0, 0x09, 0x21, 0x9e, 0x20,
+ 0xbe, 0xf7, 0x39, 0xf8, 0x60, 0x00, 0x00, 0x19,
+ 0x40, 0x08, 0x3c, 0x00, 0x38, 0x32, 0x04, 0x00,
+ 0x05, 0x49, 0x80, 0x04, 0x40, 0x18, 0x05, 0x4a,
+ 0xa9, 0x00, 0x89, 0x18, 0x48, 0x60, 0x64, 0x20,
+ 0x60, 0x43, 0x70, 0xbd, 0xdc, 0x07, 0x00, 0x00,
+ 0x80, 0x38, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00,
+ 0x02, 0x49, 0x80, 0xb5, 0x08, 0x60, 0xd0, 0xf7,
+ 0x97, 0xf8, 0x80, 0xbd, 0x5c, 0x5b, 0x01, 0x00,
+ 0xf8, 0xb5, 0x00, 0x26, 0x17, 0x4c, 0x17, 0x4b,
+ 0x19, 0x49, 0x26, 0x70, 0x3c, 0x00, 0x74, 0x32,
+ 0x04, 0x00, 0x00, 0x20, 0x14, 0x33, 0x0d, 0x88,
+ 0x15, 0x4e, 0x15, 0x4a, 0x04, 0xe0, 0xc1, 0x00,
+ 0xcf, 0x18, 0x7a, 0x60, 0x5e, 0x50, 0x01, 0x30,
+ 0xa8, 0x42, 0xf8, 0xdb, 0xc6, 0xf7, 0x2b, 0xfd,
+ 0xff, 0x21, 0x11, 0x4d, 0xa5, 0x31, 0x28, 0x1c,
+ 0xbd, 0xf7, 0xff, 0xf8, 0x00, 0x21, 0x28, 0x1c,
+ 0x02, 0x1c, 0x14, 0x32, 0xc2, 0x60, 0x10, 0x1c,
+ 0x01, 0x31, 0x14, 0x29, 0xf8, 0xdb, 0x3c, 0x00,
+ 0xb0, 0x32, 0x04, 0x00, 0x00, 0x26, 0xc6, 0x60,
+ 0x05, 0x48, 0x0c, 0x30, 0x60, 0xc0, 0x09, 0x48,
+ 0x18, 0x21, 0xbd, 0xf7, 0xed, 0xf8, 0x01, 0x20,
+ 0x04, 0x34, 0x41, 0xc4, 0x00, 0x20, 0xf8, 0xbd,
+ 0x70, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00,
+ 0x30, 0xd9, 0x01, 0x00, 0x56, 0x57, 0x01, 0x00,
+ 0x04, 0x5f, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0xcf, 0xf7, 0xb6, 0xfc,
+ 0x3c, 0x00, 0xec, 0x32, 0x04, 0x00, 0x01, 0x49,
+ 0x08, 0x80, 0x80, 0xbd, 0x00, 0x00, 0x2c, 0x74,
+ 0x01, 0x00, 0x11, 0x48, 0xf8, 0xb5, 0x41, 0x79,
+ 0x00, 0x29, 0x02, 0xd1, 0x05, 0x78, 0x0f, 0x4e,
+ 0x01, 0xe0, 0x45, 0x78, 0x0f, 0x4e, 0x02, 0x23,
+ 0xf7, 0x5e, 0x00, 0x24, 0x60, 0x1b, 0x78, 0x43,
+ 0x64, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18,
+ 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0xf5, 0xf9,
+ 0x61, 0x00, 0x3c, 0x00, 0x28, 0x33, 0x04, 0x00,
+ 0x09, 0x4a, 0xac, 0x42, 0x50, 0x52, 0x01, 0xd1,
+ 0x00, 0x23, 0xf7, 0x5e, 0x01, 0x34, 0x24, 0x06,
+ 0x24, 0x0e, 0x10, 0x2c, 0xe9, 0xd3, 0xf8, 0xbd,
+ 0x0c, 0x5a, 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00,
+ 0xfa, 0x59, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00,
+ 0x32, 0x5a, 0x01, 0x00, 0x38, 0xb5, 0x10, 0x4c,
+ 0xbe, 0x25, 0x25, 0x73, 0x20, 0x7a, 0x18, 0x21,
+ 0x88, 0x43, 0x20, 0x72, 0x3c, 0x00, 0x64, 0x33,
+ 0x04, 0x00, 0x6a, 0x46, 0x0d, 0x49, 0x0d, 0x20,
+ 0xbd, 0xf7, 0x33, 0xfe, 0x01, 0x20, 0x0b, 0x49,
+ 0x40, 0x03, 0x08, 0x60, 0x48, 0x60, 0x25, 0x73,
+ 0x2d, 0x20, 0xc0, 0x03, 0x20, 0x60, 0x25, 0x73,
+ 0x20, 0x7a, 0x10, 0x21, 0x08, 0x43, 0x20, 0x72,
+ 0x06, 0x48, 0x06, 0x49, 0x08, 0x60, 0x00, 0x20,
+ 0x48, 0x60, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0x8d, 0x3e, 0x01, 0x00, 0x24, 0x00,
+ 0xa0, 0x33, 0x04, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x00, 0x87, 0x93, 0x03, 0x04, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x15, 0x20, 0x02, 0x4a,
+ 0xd0, 0xf7, 0xc8, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0x0d, 0x3e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x60, 0x04, 0x00, 0x44, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x40, 0x20, 0x07, 0x00,
+ 0xff, 0xff, 0xff, 0xff,
+};
+const uint32_t fw_len = sizeof(fw_buf) / sizeof(fw_buf[0]);
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h
new file mode 100644
index 0000000..1a3b75f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h
@@ -0,0 +1,35 @@
+#ifndef WL_OS_H
+#define WL_OS_H
+
+#include <stdarg.h>
+#include <stdlib.h>
+
+void *owl_os_alloc(size_t size);
+void *owl_os_realloc(void *ptr, size_t size);
+void owl_os_free(void *p);
+void *owl_os_memcpy(void *dst, const void *src, size_t n);
+void *owl_os_memset(void *s, int c, size_t n);
+void *owl_os_memmove(void *dst, const void *src, size_t n);
+size_t owl_os_strlen(char *s);
+char *owl_os_strncpy(char *dst, const char *src, size_t n);
+int owl_os_strncmp(const char *s1, const char *s2, size_t n);
+int owl_os_strcmp(const char *s1, const char *s2);
+char *owl_os_strcpy(char *dst, const char *src);
+char *owl_os_strdup(const char *s);
+char *owl_os_strndup(const char *s, size_t n);
+int owl_os_memcmp(const void *s1, const void *s2, size_t n);
+long int owl_os_strtol(const char *nptr, char **endptr, int base);
+char *owl_os_strchr(const char *s, int c);
+char *owl_os_strrchr(const char *s, int c);
+int owl_os_strcasecmp(const char *s1, const char *s2);
+char *owl_os_strstr(const char *haystack, const char *needle);
+
+int owl_os_snprintf(char *str, size_t size, const char *format, ...)
+ __attribute__((format(printf, 3, 4)));
+
+int owl_os_vprintf(const char *format, va_list arg); /* debug only */
+int owl_os_printf(const char *format, ...) /* debug only */
+ __attribute__((format(printf, 1, 2)));
+
+#endif /* WL_OS_H */
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h
new file mode 100644
index 0000000..ee08fad
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h
@@ -0,0 +1,172 @@
+/*!
+ * \file wl_sdio.h
+ * \brief SDIO interface for wl_api.
+ * Copyright (C) 2010 HD Wireless AB
+ *
+ * You should have received a copy of the license along with this library.
+ */
+
+#ifndef WL_SDIO_H
+#define WL_SDIO_H
+
+/** \defgroup wl_sdio SDIO Interface
+ *
+ * These functions implement the interface that the wl_api library
+ * needs to work with a SDIO transport layer.
+ *
+ * The functions prototyped here must be implemented when porting the
+ * wl_api library to a new platform with a different SDIO configuration
+ *
+ * On platforms supported by H&D Wireless these functions are
+ * implemented in the file avr32_sdio.c
+ *
+ * @{
+ */
+
+/**
+ * Maximum transfer size. This will set an upper limit on the len parameter
+ * passed to owl_sdio_tx() and owl_sdio_rx().
+ *
+ */
+#define MAX_BLOCK_LEN 512
+
+
+/**
+ * This flag might be set when owl_sdio_cmd() is called in case the cmd will
+ * be followed by a data transfer. If the flag is set, the transfer direction is
+ * from the device to the host (read). Otherwise, the transfer direction is
+ * from the host to the device (write).
+ *
+ */
+ #define CMD_FLAG_TO_HOST (1 << 0)
+
+
+/**
+ * Indicates that the sdio driver needs to be polled in order to make
+ * forward progress, i.e. it does not support interrupts
+ *
+ * The actual polling will result in owl_sdio_cmd() being called to
+ * request status information from the device.
+ *
+ * To activate polling, this flag should be set in owl_sdio_init().
+ */
+#define SDIO_FLAG_POLL (1 << 0)
+
+/**
+ * Indicates that the sdio driver only supports 1-bit mode.
+ *
+ * To set 1-bit mode, this flag should be set in owl_sdio_init().
+ */
+#define SDIO_FLAG_1BIT_MODE (1 << 1)
+
+/**
+ * This function will be invoked when wlan initialization should be performed,
+ * this happens when the wl_fw_download() function in the transport group of
+ * wl_api is invoked.
+ *
+ * The wifi device supports sdio high speed mode and clock frequencies up to
+ * 50 MHz.
+ *
+ * The function is responsible for doing any necessary sdio initialization such
+ * as allocating gpio's, setting up the mci master, one time allocations of
+ * dma buffers etc.
+ *
+ * @param flags is an out parameter that should hold any sdio flags upon return.
+ * The avaible flags are prefixed with SDIO_FLAG_
+ *
+ *
+ */
+void owl_sdio_init(uint8_t *flags);
+
+
+
+/**
+ * This function will be invoked when an sdio cmd should be sent to the
+ * device.
+ *
+ * @param idx is the sdio command number
+ * @param arg is the sdio command argument
+ * @param flags specifies other options, such as any transfer direction.
+ * @param rsp should hold the command response upon return. If null, the
+ * response can be ignored.
+ * @param data holds a pointer to any data that might follow the command. This
+ * allows the sdio driver to setup dma transfers while waiting for the
+ * command response. NULL if no data transfer will follow. Note that
+ * the same data pointer will be passed to owl_sdio_tx(), which should
+ * start the actual transfer.
+ * @param len is the length of the data buffer.
+ *
+ */
+void owl_sdio_cmd(uint8_t idx, uint32_t arg, uint8_t flags, uint32_t *rsp,
+ const uint8_t *data, uint16_t len);
+
+
+/**
+ * This function will be invoked when data should be transmitted to the device.
+ *
+ * If wl_fw_downlad() was called with the size_align parameter set to non-zero,
+ * the pad parameter should be used. If the pad parameter is not 0, additional
+ * data must be transmitted after the data buffer has be sent. Depending on
+ * how the data buffer was first allocated (probably by an TCP/IP stack), it
+ * might be safe or unsafe to continue reading beyond the data buffer to
+ * transmit the additional padding bytes.
+ *
+ * @param data holds a pointer to the data to transmit, the pointer is the
+ * same as the one passed to wl_tx().
+ * @param len is the number of bytes that should be transmitted, including
+ * padding.
+ * @param pad is the number of padding bytes to send.
+ *
+ */
+void owl_sdio_tx(const uint8_t *data, uint16_t len, uint8_t pad);
+
+
+/**
+ * This function will be invoked when data should be received from the device.
+ *
+ * @param data should hold the read data upon return.
+ * @param len is the number of bytes to read.
+ *
+ */
+void owl_sdio_rx(uint8_t *data, uint16_t len);
+
+
+/**
+ * Invoked when sdio rx interrupts from the device should be enabled or
+ * disabled.
+ *
+ * If SDIO_FLAG_POLL was set in wl_spi_init(), then this function can be
+ * left empty.
+ *
+ * @param enable specifies if interrupts should be enabled or disabled.
+ *
+ */
+void owl_sdio_irq(uint8_t enable);
+
+
+/**
+ * Delay executiom for the specified number of ms. This function will be called
+ * with delays in the 10-20 ms range during fw download and startup of the
+ * Wi-Fi device. This function can be implemented with a simple for-loop if
+ * desired (beware of optimization). The timing does not have to be accurate as
+ * long as the actual delay becomes at least the specified number of ms.
+ *
+ * @param ms is the minimal amount of time to wait [ms].
+ *
+ */
+void owl_sdio_mdelay(uint32_t ms);
+
+
+/**
+ * This function should be called whenever an interrupt is detected. It can
+ * be called from an interrupt context.
+ *
+ * If SDIO_FLAG_POLL was set in owl_sdio_init(), then wl_sdio_irq()
+ * should never be called.
+ *
+ */
+extern void wl_sdio_irq(void);
+
+/*! @} */
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h
new file mode 100644
index 0000000..5d91374
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h
@@ -0,0 +1,185 @@
+/*!
+ * \file wl_spi.h
+ * \brief SPI interface for wl_api.
+ * Copyright (C) 2010 HD Wireless AB
+ *
+ * You should have received a copy of the license along with this library.
+ */
+
+#ifndef WL_SPI_H
+#define WL_SPI_H
+
+#ifndef WITHOUT_STDINT
+#include <stdint.h>
+#endif
+
+/** \defgroup wl_spi SPI Interface
+ *
+ * These functions implement the interface that the wl_api library
+ * needs to work with a SPI transport layer.
+ *
+ * The functions prototyped here must be implemented when porting the
+ * wl_api library to a new platform with a different SPI configuration
+ *
+ * On platforms supported by H&D Wireless these functions are
+ * implemented in the file avr32_spi.c
+ *
+ * @{
+ */
+
+/**
+ * Maximum transfer size. This will set an upper limit on the len parameter
+ * passed to owl_spi_txrx().
+ *
+ *
+ */
+#define MAX_BLOCK_LEN 512
+
+
+/**
+ * Indicates that the spi driver needs to be polled in order to make
+ * forward progress, i.e. it does not support interrupts through SD pin 8.
+ *
+ * The actual polling will result in owl_spi_txrx() being call to
+ * request status information from the device.
+ *
+ * To activate polling, this flag should be set in owl_spi_init().
+ *
+ * See wl_poll() and wl_register_rx_isr() for more information regarding
+ * polled and interrupt modes.
+ *
+ */
+#define SPI_FLAG_POLL (1 << 0)
+
+
+/**
+ * This function will be invoked when wlan device initialization should be
+ * performed, this happens when the wl_fw_download() function in the transport
+ * group of wl_api is invoked.
+ *
+ * The wifi device requires spi mode 3, i.e. clock polarity high and sample
+ * on second phase. This corresponds to CPOL=1, CPHA=1. Maximum frequency on
+ * spi clock is 30 MHz.
+ *
+ * The function is also responsible for doing any necessary spi initialization
+ * such as allocating gpio's, setting up the SPI master, one time allocations of
+ * dma buffers etc.
+ *
+ *
+ * If the SPB105 device is used, two signals; POWER (pin 10 on SPB105) and
+ * SHUTDOWN (pin 4 on SPB105) might be connected to gpio's on the host.
+ * The GPIO_POWER_PIN is the main power supply to the device. The
+ * GPIO_SHUTDOWN_PIN (active low) should be defined as an input.
+ *
+ * After GPIO_POWER_PIN is pulled high by the host, the device will pull the
+ * GPIO_SHUTDOWN_PIN high once the device is properly powered.
+ *
+ * However, if pin 4 (GPIO_SHUTDOWN_PIN) is not connected to the host, a delay
+ * of up to 250 ms must be added after GPIO_POWER_PIN is pulled high to ensure
+ * that startup is completed. The actual time is usually much shorter, therefore
+ * one might try to reduce the delay for a particualar hardware design.
+ *
+ * On SPB104, the GPIO_POWER_PIN will be connected to VCC and GPIO_SHUTDOWN_PIN
+ * will be unconnected; hence we have to make sure that we have enough delay
+ * after powering on the host. Since the device power-on usually happens at the
+ * same time as the host power-on, the startup time of the host can be
+ * subtracted from any delay put into owl_spi_init().
+ *
+ * @param flags is an out parameter that should hold any spi flags upon return.
+ * The avaible flags are prefixed with SPI_FLAG_
+ *
+ * @return 0 on success
+ * -1 if any error occurs
+ *
+ */
+int owl_spi_init(uint8_t *flags);
+
+
+/**
+ * Invoked when a spi transfer should be performed.
+ *
+ * All buffers that are allocated by the wl library will have a size that is
+ * aligned to 4. If size-unaligned data is passed to this function, it is
+ * always allocated by the ip stack. If 4-byte size alignment (e.g. for DMA)
+ * is required, 1-3 extra padding bytes can be transmitted after the in buffer.
+ * These bytes must be 0xff.
+ *
+ * Since size-unaligned data always comes from the ip stack, the out ptr is
+ * always NULL for such data.
+ *
+ * @param in points a buffer which holds the data to be transmitted. If NULL,
+ * then \a len bytes with the value 0xff should be transmitted on the
+ * bus.
+ * @param out points a buffer should hold the data received from the device. If
+ * NULL, any received data can be discarded.
+ * @param len is the length of the in and out buffers.
+ *
+ */
+void owl_spi_txrx(const uint8_t *in, uint8_t* out, uint16_t len);
+
+
+/**
+ * Invoked when spi rx interrupts from the device should be enabled or disabled.
+ * Note that the spi interrupts are obtained from pin 8 on SPB104 or pin 3 from
+ * SPB105. This pin can be be connected to a gpio on the host. The irq line
+ * will signal an interrupt on both edges.
+ *
+ * In general, the wifi device will not issue a new interrupt unless the
+ * last interrupt has been handled. Also, during normal operation (i.e after
+ * the complete callback registered in wl_init() has been invoked),
+ * owl_spi_irq() will never be invoked so interrupts will be enabled all
+ * the time. For the SPI-mode, the purpose of owl_spi_irq() is basically to
+ * make sure that the first interrupt (coming after the reset performed in
+ * owl_spi_init()) is ignored.
+ *
+ * If SPI_FLAG_POLL was set in owl_spi_init(), then this function can be
+ * left empty and the wifi device will be used in polled mode. In polled mode,
+ * the interrupt line is not used. Regardless of polled or interrupt-mode,
+ * wl_poll() must be called to ensure progress of the driver.
+ *
+ * @param enable specifies if interrupts should be enabled or disabled.
+ *
+ */
+void owl_spi_irq(uint8_t enable);
+
+
+/**
+ * Invoked when the spi cs for the wifi device should be enabled. Note that
+ * multiple calls to owl_spi_txrx() might be done during a 'single' chip
+ * select.
+ *
+ * @param enable specifies whether chip select should be asserted or deasserted,
+ * The chip select signal is active low, so if enable is '1' then the
+ * chip select connected to the wifi device should be set to '0'.
+ *
+ */
+void owl_spi_cs(uint8_t enable);
+
+
+/**
+ * Delay executiom for the specified number of ms. This function will be called
+ * with delays in the 10-20 ms range during fw download and startup of the
+ * Wi-Fi device. This function can be implemented with a simple for-loop if
+ * desired (beware of optimization). The timing does not have to be accurate as
+ * long as the actual delay becomes at least the specified number of ms.
+ *
+ * @param ms is the minimal amount of time to wait [ms].
+ *
+ */
+void owl_spi_mdelay(uint32_t ms);
+
+
+/**
+ * This function should be called whenever an interrupt is detected. It can
+ * be called from an interrupt context.
+ *
+ * If SPI_FLAG_POLL was set in owl_spi_init(), then wl_spi_irq()
+ * should never be called.
+ *
+ */
+extern void wl_spi_irq(void);
+
+
+/*! @} */
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h
new file mode 100644
index 0000000..9a4483a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h
@@ -0,0 +1,154 @@
+/*
+ * Programming interface for wlap_api.
+ * Copyright (C) 2011 HD Wireless AB
+ *
+ * You should have received a copy of the license along with this library.
+ */
+
+/*! \file wlap_api.h *************************************************************
+ *
+ * \brief WiFi AP API
+ *
+ * This file provides the wlap_api interface.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices:
+ * \li SPB104 + EVK1100
+ * \li SPB104 + EVK1101
+ * \li SPB104 + EVK1104
+ * \li SPB104 + EVK1105 (SPI)
+ * \li SPB104 + EVK1105 (SPI + irq)
+ * \li SPB105 + EVK1105 (SPI)
+ * - AppNote:
+ *
+ * \author H&D Wireless AB: \n
+ *
+ *****************************************************************************
+ *
+ * \section intro Introduction
+ * This is the documentation for the WiFi AP Driver API \a wlap_api.
+ *
+ * \section files Main Files
+ * - wlap_api.h : WiFi driver interface.
+ * - libwlap_api_*.*.a - Driver library.
+ *
+ */
+
+#ifndef WLAP_API_H
+#define WLAP_API_H
+
+#define WLAP_API_RELEASE_NAME "unknown"
+
+#include <wl_api.h>
+
+/** \defgroup wl_softap Access Point Mode
+ *
+ * \brief Support the WiFi Access Point mode.
+ *
+ * @{
+ */
+/*
+ * Station representation
+ *
+ */
+struct wl_sta_t
+{
+ struct wl_mac_addr_t bssid; /**< The BSSID of the network. */
+ uint8_t queued_pkt_cnt; /**< Number of queueud packets for
+ this STA. */
+ uint8_t in_ps; /**< Is the STA in power save mode. */
+ uint8_t aid; /**< STA AID */
+};
+
+/* Station list representation. Array of pointers to wl_sta_t entries. */
+struct wl_sta_list_t
+{
+ struct wl_sta_t **sta; /**< The list of pointers to stations */
+ size_t cnt; /**< Number of stations */
+};
+
+/*! \brief Get the list of currently associated stations (SoftAP).
+ *
+ * Retrieves the list of current stations from
+ * the driver.
+ *
+ * This function is not thread safe. It must be called in the
+ * same execution context as wl_poll().
+ *
+ * @param network_list Output buffer. The API call returns
+ * a pointer to allocated memory containing the network list.
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE.
+ */
+wl_err_t wlap_get_sta_list(struct wl_sta_list_t **network_list);
+
+
+/*! Callback used to read data from a TX packet.
+ * This function is supplied by the user of the API.
+ *
+ * @param dst Destination buffer. The data should be copied
+ * to this buffer.
+ * @param src_handle Handle to the source packet from where
+ * the data should be copied. This handle is the same one that
+ * is passed in parameter \a pkt_handle to \a wl_process_tx().
+ * @param read_len Number of bytes to copy from \a src_handle
+ * to \a dst.
+ * @param offset The offset in bytes, counting from the
+ * beginning of the Ethernet header, from where to copy data.
+ * @return
+ * - The number of bytes copied. This number may be smaller
+ * than the length requested in \a read_len but it may not
+ * be shorter than the length of the packet counting from
+ * \a offset. In other words, if the caller of this function
+ * receives a return count that is shorter than \a read_len
+ * he will assume that all packet data has been read.
+ * - < 0 on error.
+ */
+typedef ssize_t (*wl_pkt_read_cb_t)(char *dst,
+ void *src_handle,
+ size_t read_len,
+ int offset);
+
+/*! \brief Register a data access function for TX packets (SoftAP).
+ *
+ * When a TX data packet has a different representation than a single
+ * contiguous buffer in memory then a packet read function must be
+ * implemented and registered with this call. Whenever the library
+ * needs to read packet data it will call this function to do it.
+ *
+ * This function can be ignored if the TX packet representation is
+ * a single contiguous buffer. This function is only needed in SoftAP
+ * mode.
+ *
+ * @param pkt_read_cb Read callback.
+ * @param ctx Context
+ */
+void wl_register_pkt_read_cb(wl_pkt_read_cb_t pkt_read_cb);
+
+/*! \brief Start a network using the SoftAP mode.
+ *
+ * This call will cause the WiFi chip to start sending beacons
+ * and accept associations from WiFi stations.
+ *
+ */
+wl_err_t wlap_start_ap(const char *ssid,
+ const size_t ssid_len,
+ const uint8_t channel,
+ const enum wl_auth_mode auth_mode,
+ const enum wl_enc_type enc_type);
+
+/*! \brief Disconnect a STA (SoftAP)
+ *
+ * @param bssid The BSSID of the station to disconnect.
+ * @return
+ * - WL_SUCCESS
+ * - WL_FAILURE.
+ */
+wl_err_t wlap_disconnect_sta(const struct wl_mac_addr_t bssid);
+
+
+/*! @} */ /* End wl_softap group */
+
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h
new file mode 100644
index 0000000..d0c51df
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h
@@ -0,0 +1,309 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Cycle counter driver.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32UC devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CYCLE_COUNTER_H_
+#define _CYCLE_COUNTER_H_
+
+#include "compiler.h"
+
+
+//! Structure holding private information, automatically initialized by the
+//! cpu_set_timeout() function.
+typedef struct
+{
+ //! The cycle count at the begining of the timeout.
+ unsigned long delay_start_cycle;
+
+ //! The cycle count at the end of the timeout.
+ unsigned long delay_end_cycle;
+
+ //! Enable/disable the timout detection
+ unsigned char timer_state;
+ #define CPU_TIMER_STATE_STARTED 0
+ #define CPU_TIMER_STATE_REACHED 1
+ #define CPU_TIMER_STATE_STOPPED 2
+} t_cpu_time;
+
+
+/*!
+ * \brief Convert milli-seconds into CPU cycles.
+ *
+ * \param ms: Number of millisecond.
+ * \param fcpu_hz: CPU frequency in Hz.
+ *
+ * \return the converted number of CPU cycles.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ U32 cpu_ms_2_cy(unsigned long ms, unsigned long fcpu_hz)
+{
+ return ((unsigned long long)ms * fcpu_hz + 999) / 1000;
+}
+
+
+/*!
+ * \brief Convert micro-seconds into CPU cycles.
+ *
+ * \param us: Number of microsecond.
+ * \param fcpu_hz: CPU frequency in Hz.
+ *
+ * \return the converted number of CPU cycles.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ U32 cpu_us_2_cy(unsigned long us, unsigned long fcpu_hz)
+{
+ return ((unsigned long long)us * fcpu_hz + 999999) / 1000000;
+}
+
+
+/*!
+ * \brief Convert CPU cycles into milli-seconds.
+ *
+ * \param cy: Number of CPU cycles.
+ * \param fcpu_hz: CPU frequency in Hz.
+ *
+ * \return the converted number of milli-second.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ U32 cpu_cy_2_ms(unsigned long cy, unsigned long fcpu_hz)
+{
+ return ((unsigned long long)cy * 1000 + fcpu_hz-1) / fcpu_hz;
+}
+
+
+/*!
+ * \brief Convert CPU cycles into micro-seconds.
+ *
+ * \param cy: Number of CPU cycles.
+ * \param fcpu_hz: CPU frequency in Hz.
+ *
+ * \return the converted number of micro-second.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ U32 cpu_cy_2_us(unsigned long cy, unsigned long fcpu_hz)
+{
+ return ((unsigned long long)cy * 1000000 + fcpu_hz-1) / fcpu_hz;
+}
+
+
+/*!
+ * \brief Set a timer variable.
+ *
+ * Ex: t_cpu_time timer;
+ * cpu_set_timeout( cpu_ms_2_cy(10, FOSC0), &timer ); // timeout in 10 ms
+ * if( cpu_is_timeout(&timer) )
+ * cpu_stop_timeout(&timer);
+ * ../..
+ *
+ * \param delay: (input) delay in CPU cycles before timeout.
+ * \param cpu_time: (output) internal information used by the timer API.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void cpu_set_timeout(unsigned long delay, t_cpu_time *cpu_time)
+{
+ cpu_time->delay_start_cycle = Get_system_register(AVR32_COUNT);
+ cpu_time->delay_end_cycle = cpu_time->delay_start_cycle + delay;
+ cpu_time->timer_state = CPU_TIMER_STATE_STARTED;
+}
+
+
+/*!
+ * \brief Test if a timer variable reached its timeout.
+ *
+ * Once the timeout is reached, the function will always return TRUE,
+ * until the cpu_stop_timeout() function is called.
+ *
+ * Ex: t_cpu_time timer;
+ * cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms
+ * if( cpu_is_timeout(&timer) )
+ * cpu_stop_timeout(&timer);
+ * ../..
+ *
+ * \param cpu_time: (input) internal information used by the timer API.
+ *
+ * \return TRUE if timeout occured, otherwise FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned long cpu_is_timeout(t_cpu_time *cpu_time)
+{
+ unsigned long current_cycle_count = Get_system_register(AVR32_COUNT);
+
+ if( cpu_time->timer_state==CPU_TIMER_STATE_STOPPED )
+ return FALSE;
+
+ // Test if the timeout as already occured.
+ else if (cpu_time->timer_state == CPU_TIMER_STATE_REACHED)
+ return TRUE;
+
+ // If the ending cycle count of this timeout is wrapped, ...
+ else if (cpu_time->delay_start_cycle > cpu_time->delay_end_cycle)
+ {
+ if (current_cycle_count < cpu_time->delay_start_cycle && current_cycle_count > cpu_time->delay_end_cycle)
+ {
+ cpu_time->timer_state = CPU_TIMER_STATE_REACHED;
+ return TRUE;
+ }
+ return FALSE;
+ }
+ else
+ {
+ if (current_cycle_count < cpu_time->delay_start_cycle || current_cycle_count > cpu_time->delay_end_cycle)
+ {
+ cpu_time->timer_state = CPU_TIMER_STATE_REACHED;
+ return TRUE;
+ }
+ return FALSE;
+ }
+}
+
+
+/*!
+ * \brief Stop a timeout detection.
+ *
+ * Ex: t_cpu_time timer;
+ * cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms
+ * if( cpu_is_timeout(&timer) )
+ * cpu_stop_timeout(&timer);
+ * ../..
+ *
+ * \param cpu_time: (input) internal information used by the timer API.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void cpu_stop_timeout(t_cpu_time *cpu_time)
+{
+ cpu_time->timer_state = CPU_TIMER_STATE_STOPPED;
+}
+
+
+/*!
+ * \brief Test if a timer is stopped.
+ *
+ * \param cpu_time: (input) internal information used by the timer API.
+ *
+ * \return TRUE if timer is stopped, otherwise FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned long cpu_is_timer_stopped(t_cpu_time *cpu_time)
+{
+
+ if( cpu_time->timer_state==CPU_TIMER_STATE_STOPPED )
+ return TRUE;
+ else
+ return FALSE;
+}
+
+
+/*!
+ * \brief Waits during at least the specified delay (in millisecond) before returning.
+ *
+ * \param delay: Number of millisecond to wait.
+ * \param fcpu_hz: CPU frequency in Hz.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void cpu_delay_ms(unsigned long delay, unsigned long fcpu_hz)
+{
+ t_cpu_time timer;
+ cpu_set_timeout( cpu_ms_2_cy(delay, fcpu_hz), &timer);
+ while( !cpu_is_timeout(&timer) );
+}
+
+/*!
+ * \brief Waits during at least the specified delay (in microsecond) before returning.
+ *
+ * \param delay: Number of microsecond to wait.
+ * \param fcpu_hz: CPU frequency in Hz.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void cpu_delay_us(unsigned long delay, unsigned long fcpu_hz)
+{
+ t_cpu_time timer;
+ cpu_set_timeout( cpu_us_2_cy(delay, fcpu_hz), &timer);
+ while( !cpu_is_timeout(&timer) );
+}
+
+/*!
+ * \brief Waits during at least the specified delay (in CPU cycles) before returning.
+ *
+ * \param delay: Number of CPU cycles to wait.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void cpu_delay_cy(unsigned long delay)
+{
+ t_cpu_time timer;
+ cpu_set_timeout( delay, &timer);
+ while( !cpu_is_timeout(&timer) );
+}
+
+
+#define Get_sys_count() ( Get_system_register(AVR32_COUNT) )
+#define Set_sys_count(x) ( Set_system_register(AVR32_COUNT, (x)) )
+#define Get_sys_compare() ( Get_system_register(AVR32_COMPARE) )
+#define Set_sys_compare(x) ( Set_system_register(AVR32_COMPARE, (x)) )
+
+
+#endif // _CYCLE_COUNTER_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c
new file mode 100644
index 0000000..543fed6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c
@@ -0,0 +1,995 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief SMC on EBI driver for AVR32 UC3.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a SMC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "preprocessor.h"
+#include "gpio.h"
+#include "smc.h"
+
+// Configure the SM Controller with SM setup and timing information for all chip select
+#define SMC_CS_SETUP(ncs) { \
+ U32 nwe_setup = ((NWE_SETUP * hsb_mhz_up + 999) / 1000); \
+ U32 ncs_wr_setup = ((NCS_WR_SETUP * hsb_mhz_up + 999) / 1000); \
+ U32 nrd_setup = ((NRD_SETUP * hsb_mhz_up + 999) / 1000); \
+ U32 ncs_rd_setup = ((NCS_RD_SETUP * hsb_mhz_up + 999) / 1000); \
+ U32 nwe_pulse = ((NWE_PULSE * hsb_mhz_up + 999) / 1000); \
+ U32 ncs_wr_pulse = ((NCS_WR_PULSE * hsb_mhz_up + 999) / 1000); \
+ U32 nrd_pulse = ((NRD_PULSE * hsb_mhz_up + 999) / 1000); \
+ U32 ncs_rd_pulse = ((NCS_RD_PULSE * hsb_mhz_up + 999) / 1000); \
+ U32 nwe_cycle = ((NWE_CYCLE * hsb_mhz_up + 999) / 1000); \
+ U32 nrd_cycle = ((NRD_CYCLE * hsb_mhz_up + 999) / 1000); \
+ \
+ /* Some coherence checks... */ \
+ /* Ensures CS is active during Rd or Wr */ \
+ if( ncs_rd_setup + ncs_rd_pulse < nrd_setup + nrd_pulse ) \
+ ncs_rd_pulse = nrd_setup + nrd_pulse - ncs_rd_setup; \
+ if( ncs_wr_setup + ncs_wr_pulse < nwe_setup + nwe_pulse ) \
+ ncs_wr_pulse = nwe_setup + nwe_pulse - ncs_wr_setup; \
+ \
+ /* ncs_hold = n_cycle - ncs_setup - ncs_pulse */ \
+ /* n_hold = n_cycle - n_setup - n_pulse */ \
+ /* */ \
+ /* All holds parameters must be positive or null, so: */ \
+ /* nwe_cycle shall be >= ncs_wr_setup + ncs_wr_pulse */ \
+ if( nwe_cycle < ncs_wr_setup + ncs_wr_pulse ) \
+ nwe_cycle = ncs_wr_setup + ncs_wr_pulse; \
+ \
+ /* nwe_cycle shall be >= nwe_setup + nwe_pulse */ \
+ if( nwe_cycle < nwe_setup + nwe_pulse ) \
+ nwe_cycle = nwe_setup + nwe_pulse; \
+ \
+ /* nrd_cycle shall be >= ncs_rd_setup + ncs_rd_pulse */ \
+ if( nrd_cycle < ncs_rd_setup + ncs_rd_pulse ) \
+ nrd_cycle = ncs_rd_setup + ncs_rd_pulse; \
+ \
+ /* nrd_cycle shall be >= nrd_setup + nrd_pulse */ \
+ if( nrd_cycle < nrd_setup + nrd_pulse ) \
+ nrd_cycle = nrd_setup + nrd_pulse; \
+ \
+ AVR32_SMC.cs[ncs].setup = (nwe_setup << AVR32_SMC_SETUP0_NWE_SETUP_OFFSET) | \
+ (ncs_wr_setup << AVR32_SMC_SETUP0_NCS_WR_SETUP_OFFSET) | \
+ (nrd_setup << AVR32_SMC_SETUP0_NRD_SETUP_OFFSET) | \
+ (ncs_rd_setup << AVR32_SMC_SETUP0_NCS_RD_SETUP_OFFSET); \
+ AVR32_SMC.cs[ncs].pulse = (nwe_pulse << AVR32_SMC_PULSE0_NWE_PULSE_OFFSET) | \
+ (ncs_wr_pulse << AVR32_SMC_PULSE0_NCS_WR_PULSE_OFFSET) | \
+ (nrd_pulse << AVR32_SMC_PULSE0_NRD_PULSE_OFFSET) | \
+ (ncs_rd_pulse << AVR32_SMC_PULSE0_NCS_RD_PULSE_OFFSET); \
+ AVR32_SMC.cs[ncs].cycle = (nwe_cycle << AVR32_SMC_CYCLE0_NWE_CYCLE_OFFSET) | \
+ (nrd_cycle << AVR32_SMC_CYCLE0_NRD_CYCLE_OFFSET); \
+ AVR32_SMC.cs[ncs].mode = (((NCS_CONTROLLED_READ) ? AVR32_SMC_MODE0_READ_MODE_NCS_CONTROLLED : \
+ AVR32_SMC_MODE0_READ_MODE_NRD_CONTROLLED) << AVR32_SMC_MODE0_READ_MODE_OFFSET) | \
+ + (((NCS_CONTROLLED_WRITE) ? AVR32_SMC_MODE0_WRITE_MODE_NCS_CONTROLLED : \
+ AVR32_SMC_MODE0_WRITE_MODE_NWE_CONTROLLED) << AVR32_SMC_MODE0_WRITE_MODE_OFFSET) | \
+ (NWAIT_MODE << AVR32_SMC_MODE0_EXNW_MODE_OFFSET) | \
+ (((SMC_8_BIT_CHIPS) ? AVR32_SMC_MODE0_BAT_BYTE_WRITE : \
+ AVR32_SMC_MODE0_BAT_BYTE_SELECT) << AVR32_SMC_MODE0_BAT_OFFSET) | \
+ (((SMC_DBW <= 8 ) ? AVR32_SMC_MODE0_DBW_8_BITS : \
+ (SMC_DBW <= 16) ? AVR32_SMC_MODE0_DBW_16_BITS : \
+ AVR32_SMC_MODE0_DBW_32_BITS) << AVR32_SMC_MODE0_DBW_OFFSET) | \
+ (TDF_CYCLES << AVR32_SMC_MODE0_TDF_CYCLES_OFFSET) | \
+ (TDF_OPTIM << AVR32_SMC_MODE0_TDF_MODE_OFFSET) | \
+ (PAGE_MODE << AVR32_SMC_MODE0_PMEN_OFFSET) | \
+ (PAGE_SIZE << AVR32_SMC_MODE0_PS_OFFSET); \
+ smc_tab_cs_size[ncs] = (U8)EXT_SM_SIZE; \
+ }
+
+static U8 smc_tab_cs_size[6];
+
+static void smc_enable_muxed_pins(void);
+
+
+void smc_init(unsigned long hsb_hz)
+{
+ unsigned long hsb_mhz_up = (hsb_hz + 999999) / 1000000;
+
+//! Whether to use the NCS0 pin
+#ifdef SMC_USE_NCS0
+ #include SMC_COMPONENT_CS0
+
+ // Setup SMC for NCS0
+ SMC_CS_SETUP(0)
+
+ #ifdef SMC_DBW_GLOBAL
+ #if (SMC_DBW_GLOBAL < SMC_DBW)
+ #undef SMC_DBW_GLOBAL
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+ #else
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+
+ #ifdef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT)
+ #undef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+ #else
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+
+ #ifdef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE_GLOBAL < NWAIT_MODE)
+ #undef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+ #else
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+
+ #undef EXT_SM_SIZE
+ #undef SMC_DBW
+ #undef SMC_8_BIT_CHIPS
+ #undef NWE_SETUP
+ #undef NCS_WR_SETUP
+ #undef NRD_SETUP
+ #undef NCS_RD_SETUP
+ #undef NCS_WR_PULSE
+ #undef NWE_PULSE
+ #undef NCS_RD_PULSE
+ #undef NRD_PULSE
+ #undef NCS_WR_HOLD
+ #undef NWE_HOLD
+ #undef NWE_CYCLE
+ #undef NCS_RD_HOLD
+ #undef NRD_CYCLE
+ #undef TDF_CYCLES
+ #undef TDF_OPTIM
+ #undef PAGE_MODE
+ #undef PAGE_SIZE
+ #undef NCS_CONTROLLED_READ
+ #undef NCS_CONTROLLED_WRITE
+ #undef NWAIT_MODE
+#endif
+
+
+//! Whether to use the NCS1 pin
+#ifdef SMC_USE_NCS1
+ #include SMC_COMPONENT_CS1
+
+ // Enable SM mode for CS1 if necessary.
+ AVR32_HMATRIX.sfr[AVR32_EBI_HMATRIX_NR] &= ~(1 << AVR32_EBI_SDRAM_CS);
+ AVR32_HMATRIX.sfr[AVR32_EBI_HMATRIX_NR];
+
+ // Setup SMC for NCS1
+ SMC_CS_SETUP(1)
+
+ #ifdef SMC_DBW_GLOBAL
+ #if (SMC_DBW_GLOBAL < SMC_DBW)
+ #undef SMC_DBW_GLOBAL
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+ #else
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+
+ #ifdef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT)
+ #undef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+ #else
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+
+ #ifdef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE_GLOBAL < NWAIT_MODE)
+ #undef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+ #else
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+
+ #undef EXT_SM_SIZE
+ #undef SMC_DBW
+ #undef SMC_8_BIT_CHIPS
+ #undef NWE_SETUP
+ #undef NCS_WR_SETUP
+ #undef NRD_SETUP
+ #undef NCS_RD_SETUP
+ #undef NCS_WR_PULSE
+ #undef NWE_PULSE
+ #undef NCS_RD_PULSE
+ #undef NRD_PULSE
+ #undef NCS_WR_HOLD
+ #undef NWE_HOLD
+ #undef NWE_CYCLE
+ #undef NCS_RD_HOLD
+ #undef NRD_CYCLE
+ #undef TDF_CYCLES
+ #undef TDF_OPTIM
+ #undef PAGE_MODE
+ #undef PAGE_SIZE
+ #undef NCS_CONTROLLED_READ
+ #undef NCS_CONTROLLED_WRITE
+ #undef NWAIT_MODE
+#endif
+
+//! Whether to use the NCS2 pin
+#ifdef SMC_USE_NCS2
+ #include SMC_COMPONENT_CS2
+
+ // Setup SMC for NCS2
+ SMC_CS_SETUP(2)
+
+ #ifdef SMC_DBW_GLOBAL
+ #if (SMC_DBW_GLOBAL < SMC_DBW)
+ #undef SMC_DBW_GLOBAL
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+ #else
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+
+ #ifdef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT)
+ #undef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+ #else
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+
+ #ifdef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE_GLOBAL < NWAIT_MODE)
+ #undef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+ #else
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+
+
+ #undef EXT_SM_SIZE
+ #undef SMC_DBW
+ #undef SMC_8_BIT_CHIPS
+ #undef NWE_SETUP
+ #undef NCS_WR_SETUP
+ #undef NRD_SETUP
+ #undef NCS_RD_SETUP
+ #undef NCS_WR_PULSE
+ #undef NWE_PULSE
+ #undef NCS_RD_PULSE
+ #undef NRD_PULSE
+ #undef NCS_WR_HOLD
+ #undef NWE_HOLD
+ #undef NWE_CYCLE
+ #undef NCS_RD_HOLD
+ #undef NRD_CYCLE
+ #undef TDF_CYCLES
+ #undef TDF_OPTIM
+ #undef PAGE_MODE
+ #undef PAGE_SIZE
+ #undef NCS_CONTROLLED_READ
+ #undef NCS_CONTROLLED_WRITE
+ #undef NWAIT_MODE
+#endif
+
+//! Whether to use the NCS3 pin
+#ifdef SMC_USE_NCS3
+ #include SMC_COMPONENT_CS3
+
+ // Setup SMC for NCS3
+ SMC_CS_SETUP(3)
+
+ #ifdef SMC_DBW_GLOBAL
+ #if (SMC_DBW_GLOBAL < SMC_DBW)
+ #undef SMC_DBW_GLOBAL
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+ #else
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+
+ #ifdef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT)
+ #undef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+ #else
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+
+ #ifdef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE_GLOBAL < NWAIT_MODE)
+ #undef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+ #else
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+
+
+ #undef EXT_SM_SIZE
+ #undef SMC_DBW
+ #undef SMC_8_BIT_CHIPS
+ #undef NWE_SETUP
+ #undef NCS_WR_SETUP
+ #undef NRD_SETUP
+ #undef NCS_RD_SETUP
+ #undef NCS_WR_PULSE
+ #undef NWE_PULSE
+ #undef NCS_RD_PULSE
+ #undef NRD_PULSE
+ #undef NCS_WR_HOLD
+ #undef NWE_HOLD
+ #undef NWE_CYCLE
+ #undef NCS_RD_HOLD
+ #undef NRD_CYCLE
+ #undef TDF_CYCLES
+ #undef TDF_OPTIM
+ #undef PAGE_MODE
+ #undef PAGE_SIZE
+ #undef NCS_CONTROLLED_READ
+ #undef NCS_CONTROLLED_WRITE
+ #undef NWAIT_MODE
+#endif
+
+//! Whether to use the NCS4 pin
+#ifdef SMC_USE_NCS4
+ #include SMC_COMPONENT_CS4
+
+ // Setup SMC for NCS4
+ SMC_CS_SETUP(4)
+
+ #ifdef SMC_DBW_GLOBAL
+ #if (SMC_DBW_GLOBAL < SMC_DBW)
+ #undef SMC_DBW_GLOBAL
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+ #else
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+
+ #ifdef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT)
+ #undef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+ #else
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+
+ #ifdef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE_GLOBAL < NWAIT_MODE)
+ #undef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+ #else
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+
+
+ #undef EXT_SM_SIZE
+ #undef SMC_DBW
+ #undef SMC_8_BIT_CHIPS
+ #undef NWE_SETUP
+ #undef NCS_WR_SETUP
+ #undef NRD_SETUP
+ #undef NCS_RD_SETUP
+ #undef NCS_WR_PULSE
+ #undef NWE_PULSE
+ #undef NCS_RD_PULSE
+ #undef NRD_PULSE
+ #undef NCS_WR_HOLD
+ #undef NWE_HOLD
+ #undef NWE_CYCLE
+ #undef NCS_RD_HOLD
+ #undef NRD_CYCLE
+ #undef TDF_CYCLES
+ #undef TDF_OPTIM
+ #undef PAGE_MODE
+ #undef PAGE_SIZE
+ #undef NCS_CONTROLLED_READ
+ #undef NCS_CONTROLLED_WRITE
+ #undef NWAIT_MODE
+#endif
+
+//! Whether to use the NCS5 pin
+#ifdef SMC_USE_NCS5
+ #include SMC_COMPONENT_CS5
+
+ // Setup SMC for NCS5
+ SMC_CS_SETUP(5)
+
+ #ifdef SMC_DBW_GLOBAL
+ #if (SMC_DBW_GLOBAL < SMC_DBW)
+ #undef SMC_DBW_GLOBAL
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+ #else
+ #if (SMC_DBW == 8)
+ #define SMC_DBW_GLOBAL 8
+ #elif (SMC_DBW == 16)
+ #define SMC_DBW_GLOBAL 16
+ #elif (SMC_DBW == 32)
+ #define SMC_DBW_GLOBAL 32
+ #else
+ #error error in SMC_DBW size
+ #endif
+ #endif
+
+ #ifdef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT)
+ #undef SMC_8_BIT_CHIPS_GLOBAL
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+ #else
+ #if (SMC_8_BIT_CHIPS == TRUE)
+ #define SMC_8_BIT_CHIPS_GLOBAL TRUE
+ #elif (SMC_8_BIT_CHIPS == FALSE)
+ #define SMC_8_BIT_CHIPS_GLOBAL FALSE
+ #else
+ #error error in SMC_8_BIT_CHIPS size
+ #endif
+ #endif
+
+ #ifdef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE_GLOBAL < NWAIT_MODE)
+ #undef NWAIT_MODE_GLOBAL
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+ #else
+ #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED
+ #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN)
+ #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN
+ #else
+ #error error in NWAIT_MODE size
+ #endif
+ #endif
+
+
+ #undef EXT_SM_SIZE
+ #undef SMC_DBW
+ #undef SMC_8_BIT_CHIPS
+ #undef NWE_SETUP
+ #undef NCS_WR_SETUP
+ #undef NRD_SETUP
+ #undef NCS_RD_SETUP
+ #undef NCS_WR_PULSE
+ #undef NWE_PULSE
+ #undef NCS_RD_PULSE
+ #undef NRD_PULSE
+ #undef NCS_WR_HOLD
+ #undef NWE_HOLD
+ #undef NWE_CYCLE
+ #undef NCS_RD_HOLD
+ #undef NRD_CYCLE
+ #undef TDF_CYCLES
+ #undef TDF_OPTIM
+ #undef PAGE_MODE
+ #undef PAGE_SIZE
+ #undef NCS_CONTROLLED_READ
+ #undef NCS_CONTROLLED_WRITE
+ #undef NWAIT_MODE
+#endif
+ // Put the multiplexed MCU pins used for the SM under control of the SMC.
+ smc_enable_muxed_pins();
+}
+
+/*! \brief Puts the multiplexed MCU pins used for the SMC
+ *
+ */
+static void smc_enable_muxed_pins(void)
+{
+ static const gpio_map_t SMC_EBI_GPIO_MAP =
+ {
+ // Enable data pins.
+#ifdef EBI_DATA_0
+ {ATPASTE2(EBI_DATA_0,_PIN),ATPASTE2(EBI_DATA_0,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_1
+ {ATPASTE2(EBI_DATA_1,_PIN),ATPASTE2(EBI_DATA_1,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_2
+ {ATPASTE2(EBI_DATA_2,_PIN),ATPASTE2(EBI_DATA_2,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_3
+ {ATPASTE2(EBI_DATA_3,_PIN),ATPASTE2(EBI_DATA_3,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_4
+ {ATPASTE2(EBI_DATA_4,_PIN),ATPASTE2(EBI_DATA_4,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_5
+ {ATPASTE2(EBI_DATA_5,_PIN),ATPASTE2(EBI_DATA_5,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_6
+ {ATPASTE2(EBI_DATA_6,_PIN),ATPASTE2(EBI_DATA_6,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_7
+ {ATPASTE2(EBI_DATA_7,_PIN),ATPASTE2(EBI_DATA_7,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_8
+ {ATPASTE2(EBI_DATA_8,_PIN),ATPASTE2(EBI_DATA_8,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_9
+ {ATPASTE2(EBI_DATA_9,_PIN),ATPASTE2(EBI_DATA_9,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_10
+ {ATPASTE2(EBI_DATA_10,_PIN),ATPASTE2(EBI_DATA_10,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_11
+ {ATPASTE2(EBI_DATA_11,_PIN),ATPASTE2(EBI_DATA_11,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_12
+ {ATPASTE2(EBI_DATA_12,_PIN),ATPASTE2(EBI_DATA_12,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_13
+ {ATPASTE2(EBI_DATA_13,_PIN),ATPASTE2(EBI_DATA_13,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_14
+ {ATPASTE2(EBI_DATA_14,_PIN),ATPASTE2(EBI_DATA_14,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_15
+ {ATPASTE2(EBI_DATA_15,_PIN),ATPASTE2(EBI_DATA_15,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_16
+ {ATPASTE2(EBI_DATA_16,_PIN),ATPASTE2(EBI_DATA_16,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_17
+ {ATPASTE2(EBI_DATA_17,_PIN),ATPASTE2(EBI_DATA_17,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_18
+ {ATPASTE2(EBI_DATA_18,_PIN),ATPASTE2(EBI_DATA_18,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_19
+ {ATPASTE2(EBI_DATA_19,_PIN),ATPASTE2(EBI_DATA_19,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_20
+ {ATPASTE2(EBI_DATA_20,_PIN),ATPASTE2(EBI_DATA_20,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_21
+ {ATPASTE2(EBI_DATA_21,_PIN),ATPASTE2(EBI_DATA_21,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_22
+ {ATPASTE2(EBI_DATA_22,_PIN),ATPASTE2(EBI_DATA_22,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_23
+ {ATPASTE2(EBI_DATA_23,_PIN),ATPASTE2(EBI_DATA_23,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_24
+ {ATPASTE2(EBI_DATA_24,_PIN),ATPASTE2(EBI_DATA_24,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_25
+ {ATPASTE2(EBI_DATA_25,_PIN),ATPASTE2(EBI_DATA_25,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_26
+ {ATPASTE2(EBI_DATA_26,_PIN),ATPASTE2(EBI_DATA_26,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_27
+ {ATPASTE2(EBI_DATA_27,_PIN),ATPASTE2(EBI_DATA_27,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_28
+ {ATPASTE2(EBI_DATA_28,_PIN),ATPASTE2(EBI_DATA_28,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_29
+ {ATPASTE2(EBI_DATA_29,_PIN),ATPASTE2(EBI_DATA_29,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_30
+ {ATPASTE2(EBI_DATA_30,_PIN),ATPASTE2(EBI_DATA_30,_FUNCTION)},
+#endif
+#ifdef EBI_DATA_31
+ {ATPASTE2(EBI_DATA_31,_PIN),ATPASTE2(EBI_DATA_31,_FUNCTION)},
+#endif
+
+ // Enable address pins.
+#if SMC_DBW_GLOBAL <= 8
+#ifdef EBI_ADDR_0
+ {ATPASTE2(EBI_ADDR_0,_PIN),ATPASTE2(EBI_ADDR_0,_FUNCTION)},
+#endif
+#endif
+#if SMC_DBW_GLOBAL <= 16
+#ifdef EBI_ADDR_1
+ {ATPASTE2(EBI_ADDR_1,_PIN),ATPASTE2(EBI_ADDR_1,_FUNCTION)},
+#endif
+#endif
+
+#ifdef EBI_ADDR_2
+ {ATPASTE2(EBI_ADDR_2,_PIN),ATPASTE2(EBI_ADDR_2,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_3
+ {ATPASTE2(EBI_ADDR_3,_PIN),ATPASTE2(EBI_ADDR_3,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_4
+ {ATPASTE2(EBI_ADDR_4,_PIN),ATPASTE2(EBI_ADDR_4,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_5
+ {ATPASTE2(EBI_ADDR_5,_PIN),ATPASTE2(EBI_ADDR_5,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_6
+ {ATPASTE2(EBI_ADDR_6,_PIN),ATPASTE2(EBI_ADDR_6,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_7
+ {ATPASTE2(EBI_ADDR_7,_PIN),ATPASTE2(EBI_ADDR_7,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_8
+ {ATPASTE2(EBI_ADDR_8,_PIN),ATPASTE2(EBI_ADDR_8,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_9
+ {ATPASTE2(EBI_ADDR_9,_PIN),ATPASTE2(EBI_ADDR_9,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_10
+ {ATPASTE2(EBI_ADDR_10,_PIN),ATPASTE2(EBI_ADDR_10,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_11
+ {ATPASTE2(EBI_ADDR_11,_PIN),ATPASTE2(EBI_ADDR_11,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_12
+ {ATPASTE2(EBI_ADDR_12,_PIN),ATPASTE2(EBI_ADDR_12,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_13
+ {ATPASTE2(EBI_ADDR_13,_PIN),ATPASTE2(EBI_ADDR_13,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_14
+ {ATPASTE2(EBI_ADDR_14,_PIN),ATPASTE2(EBI_ADDR_14,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_15
+ {ATPASTE2(EBI_ADDR_15,_PIN),ATPASTE2(EBI_ADDR_15,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_16
+ {ATPASTE2(EBI_ADDR_16,_PIN),ATPASTE2(EBI_ADDR_16,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_17
+ {ATPASTE2(EBI_ADDR_17,_PIN),ATPASTE2(EBI_ADDR_17,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_18
+ {ATPASTE2(EBI_ADDR_18,_PIN),ATPASTE2(EBI_ADDR_18,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_19
+ {ATPASTE2(EBI_ADDR_19,_PIN),ATPASTE2(EBI_ADDR_19,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_20
+ {ATPASTE2(EBI_ADDR_20,_PIN),ATPASTE2(EBI_ADDR_20,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_21
+ {ATPASTE2(EBI_ADDR_21,_PIN),ATPASTE2(EBI_ADDR_21,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_22
+ {ATPASTE2(EBI_ADDR_22,_PIN),ATPASTE2(EBI_ADDR_22,_FUNCTION)},
+#endif
+#ifdef EBI_ADDR_23
+ {ATPASTE2(EBI_ADDR_23,_PIN),ATPASTE2(EBI_ADDR_23,_FUNCTION)},
+#endif
+
+#if SMC_DBW_GLOBAL <= 8
+ #undef SMC_8_BIT_CHIPS
+ #define SMC_8_BIT_CHIPS TRUE
+#endif
+
+ // Enable data mask pins.
+#if !SMC_8_BIT_CHIPS_GLOBAL
+#ifdef EBI_ADDR_0
+ {ATPASTE2(EBI_ADDR_0,_PIN),ATPASTE2(EBI_ADDR_0,_FUNCTION)},
+#endif
+#endif
+#ifdef EBI_NWE0
+ {ATPASTE2(EBI_NWE0,_PIN),ATPASTE2(EBI_NWE0,_FUNCTION)},
+#endif
+
+#if SMC_DBW_GLOBAL >= 16
+ #ifdef EBI_NWE1
+ {ATPASTE2(EBI_NWE1,_PIN),ATPASTE2(EBI_NWE1,_FUNCTION)},
+ #endif
+ #if SMC_DBW_GLOBAL >= 32
+ #ifdef EBI_ADDR_1
+ {ATPASTE2(EBI_ADDR_1,_PIN),ATPASTE2(EBI_ADDR_1,_FUNCTION)},
+ #endif
+ #ifdef EBI_NWE3
+ {ATPASTE2(EBI_NWE3,_PIN),ATPASTE2(EBI_NWE3,_FUNCTION)},
+ #endif
+ #endif
+#endif
+ #ifdef EBI_NRD
+ {ATPASTE2(EBI_NRD,_PIN),ATPASTE2(EBI_NRD,_FUNCTION)},
+ #endif
+
+ // Enable control pins.
+#if NWAIT_MODE_GLOBAL != AVR32_SMC_EXNW_MODE_DISABLED
+ #ifdef EBI_NWAIT
+ {ATPASTE2(EBI_NWAIT,_PIN),ATPASTE2(EBI_NWAIT,_FUNCTION)},
+ #endif
+#endif
+#ifdef SMC_USE_NCS0
+ #ifdef EBI_NCS_0
+ {ATPASTE2(EBI_NCS_0,_PIN),ATPASTE2(EBI_NCS_0,_FUNCTION)},
+ #endif
+#endif
+#ifdef SMC_USE_NCS1
+ #ifdef EBI_NCS_1
+ {ATPASTE2(EBI_NCS_1,_PIN),ATPASTE2(EBI_NCS_1,_FUNCTION)},
+ #endif
+#endif
+#ifdef SMC_USE_NCS2
+ #ifdef EBI_NCS_2
+ {ATPASTE2(EBI_NCS_2,_PIN),ATPASTE2(EBI_NCS_2,_FUNCTION)},
+ #endif
+#endif
+#ifdef SMC_USE_NCS3
+ #ifdef EBI_NCS_3
+ {ATPASTE2(EBI_NCS_3,_PIN),ATPASTE2(EBI_NCS_3,_FUNCTION)},
+ #endif
+#endif
+#ifdef SMC_USE_NCS4
+ #ifdef EBI_NCS_4
+ {ATPASTE2(EBI_NCS_4,_PIN),ATPASTE2(EBI_NCS_4,_FUNCTION)},
+ #endif
+#endif
+#ifdef SMC_USE_NCS5
+ #ifdef EBI_NCS_5
+ {ATPASTE2(EBI_NCS_5,_PIN),ATPASTE2(EBI_NCS_5,_FUNCTION)},
+ #endif
+#endif
+ };
+
+ gpio_enable_module(SMC_EBI_GPIO_MAP, sizeof(SMC_EBI_GPIO_MAP) / sizeof(SMC_EBI_GPIO_MAP[0]));
+}
+
+unsigned char smc_get_cs_size(unsigned char cs)
+{
+ return smc_tab_cs_size[cs];
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h
new file mode 100644
index 0000000..c3bdf43
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h
@@ -0,0 +1,68 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief SMC on EBI driver for AVR32 UC3.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a SMC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _SMC_H_
+#define _SMC_H_
+
+#include <avr32/io.h>
+
+#include "compiler.h"
+#include "conf_ebi.h"
+
+/*! \brief Initializes the AVR32 SMC module and the connected SRAM(s).
+ * \param hsb_hz HSB frequency in Hz (the HSB frequency is applied to the SMC).
+ * \note Each access to the SMC address space validates the mode of the SMC
+ * and generates an operation corresponding to this mode.
+ */
+extern void smc_init(unsigned long hsb_hz);
+
+/*! \brief Return the size of the peripheral connected .
+ * \param cs The chip select value
+ */
+extern unsigned char smc_get_cs_size(unsigned char cs);
+
+#endif // _SMC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c
new file mode 100644
index 0000000..1008c94
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c
@@ -0,0 +1,183 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief EIC driver for AVR32 UC3.
+ *
+ * AVR32 External Interrupt Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an EIC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "compiler.h"
+#include "preprocessor.h"
+#include "eic.h"
+
+
+
+void eic_init(volatile avr32_eic_t *eic, const eic_options_t *opt, unsigned int nb_lines)
+{
+ int i;
+ for (i = 0; i < nb_lines; i++)
+ {
+ // Set up mode level
+ eic->mode = (opt[i].eic_mode == 1) ? (eic->mode | (1 << opt[i].eic_line)) : (eic->mode & ~(1 << opt[i].eic_line));
+ // Set up edge type
+ eic->edge = (opt[i].eic_edge == 1) ? (eic->edge | (1 << opt[i].eic_line)) : (eic->edge & ~(1 << opt[i].eic_line));
+ // Set up level
+ eic->level = (opt[i].eic_level == 1) ? (eic->level | (1 << opt[i].eic_line)) : (eic->level & ~(1 << opt[i].eic_line));
+ // Set up if filter is used
+ eic->filter = (opt[i].eic_filter == 1) ? (eic->filter | (1 << opt[i].eic_line)) : (eic->filter & ~(1 << opt[i].eic_line));
+ // Set up which mode is used : asynchronous mode/ synchronous mode
+ eic->async = (opt[i].eic_async == 1) ? (eic->async | (1 << opt[i].eic_line)) : (eic->async & ~(1 << opt[i].eic_line));
+ }
+}
+
+void eic_enable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines)
+{
+ eic->en = mask_lines;
+}
+
+void eic_enable_line(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ // Enable line line_number
+ eic->en = 1 << line_number;
+}
+
+void eic_disable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines)
+{
+ eic->dis = mask_lines;
+}
+
+void eic_disable_line(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ // Disable line line_number
+ eic->dis = 1 << line_number;
+}
+
+Bool eic_is_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ return (eic->ctrl & (1 << line_number)) != 0;
+}
+
+void eic_enable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines)
+{
+ eic->ier = mask_lines;
+}
+
+void eic_enable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ // Enable line line_number
+ eic->ier = 1 << line_number;
+}
+
+void eic_disable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ eic->idr = mask_lines;
+ eic->imr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+void eic_disable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ // Disable line line_number
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ eic->idr = 1 << line_number;
+ eic->imr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+Bool eic_is_interrupt_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ return (eic->imr & (1 << line_number)) != 0;
+}
+
+void eic_clear_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ eic->icr = mask_lines;
+ eic->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+void eic_clear_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ // Clear line line_number
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ eic->icr = 1 << line_number;
+ eic->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+Bool eic_is_interrupt_line_pending(volatile avr32_eic_t *eic, unsigned int line_number)
+{
+ return (eic->isr & (1 << line_number)) != 0;
+}
+
+#if !defined(AVR32_EIC_301_H_INCLUDED)
+void eic_enable_interrupt_scan(volatile avr32_eic_t *eic,unsigned int presc)
+{
+ // Enable SCAN function with PRESC value
+ eic->scan |= (presc << AVR32_EIC_SCAN_PRESC_OFFSET) | (1 << AVR32_EIC_SCAN_EN_OFFSET);
+}
+
+void eic_disable_interrupt_scan(volatile avr32_eic_t *eic)
+{
+ // Disable SCAN function
+ eic->scan = 0 << AVR32_EIC_SCAN_EN_OFFSET;
+}
+
+unsigned long eic_get_interrupt_pad_scan(volatile avr32_eic_t *eic)
+{
+ // Return pad number that causes interrupt
+ return(eic->scan>>AVR32_EIC_SCAN_PIN_OFFSET);
+}
+#endif
\ No newline at end of file
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h
new file mode 100644
index 0000000..32641b7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h
@@ -0,0 +1,275 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief EIC driver for AVR32 UC3.
+ *
+ * AVR32 External Interrupt Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an EIC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _EIC_H_
+#define _EIC_H_
+
+#include "compiler.h"
+
+/*! \name External Interrupt lines
+ */
+//! @{
+#if (UC3A || UC3B)
+#define EXT_INT0 AVR32_EIC_INT0 //!< Line 0
+#define EXT_INT1 AVR32_EIC_INT1 //!< Line 1
+#define EXT_INT2 AVR32_EIC_INT2 //!< Line 2
+#define EXT_INT3 AVR32_EIC_INT3 //!< Line 3
+#define EXT_INT4 AVR32_EIC_INT4 //!< Line 4
+#define EXT_INT5 AVR32_EIC_INT5 //!< Line 5
+#define EXT_INT6 AVR32_EIC_INT6 //!< Line 6
+#define EXT_INT7 AVR32_EIC_INT7 //!< Line 7
+#define EXT_NMI AVR32_EIC_NMI //!< Line 8
+#else
+#define EXT_INT0 AVR32_EIC_INT1 //!< Line 0
+#define EXT_INT1 AVR32_EIC_INT2 //!< Line 1
+#define EXT_INT2 AVR32_EIC_INT3 //!< Line 2
+#define EXT_INT3 AVR32_EIC_INT4 //!< Line 3
+#define EXT_INT4 AVR32_EIC_INT5 //!< Line 4
+#define EXT_INT5 AVR32_EIC_INT6 //!< Line 5
+#define EXT_INT6 AVR32_EIC_INT7 //!< Line 6
+#define EXT_INT7 AVR32_EIC_INT8 //!< Line 7
+#define EXT_NMI AVR32_EIC_NMI //!< Line 8
+
+#endif
+
+//! @}
+
+/*! \name Mode Trigger Options
+ */
+//! @{
+#define EIC_MODE_EDGE_TRIGGERED AVR32_EIC_EDGE_IRQ //!<
+#define EIC_MODE_LEVEL_TRIGGERED AVR32_EIC_LEVEL_IRQ //!<
+//! @}
+
+/*! \name Edge level Options
+ */
+//! @{
+#define EIC_EDGE_FALLING_EDGE AVR32_EIC_FALLING_EDGE //!<
+#define EIC_EDGE_RISING_EDGE AVR32_EIC_RISING_EDGE //!<
+//! @}
+
+/*! \name Level Options
+ */
+//! @{
+#define EIC_LEVEL_LOW_LEVEL AVR32_EIC_LOW_LEVEL //!<
+#define EIC_LEVEL_HIGH_LEVEL AVR32_EIC_HIGH_LEVEL //!<
+//! @}
+
+/*! \name Filter Options
+ */
+//! @{
+#define EIC_FILTER_ENABLED AVR32_EIC_FILTER_ON //!<
+#define EIC_FILTER_DISABLED AVR32_EIC_FILTER_OFF //!<
+//! @}
+
+/*! \name Synch Mode Options
+ */
+//! @{
+#define EIC_SYNCH_MODE AVR32_EIC_SYNC //!<
+#define EIC_ASYNCH_MODE AVR32_EIC_USE_ASYNC //!<
+//! @}
+
+//! Configuration parameters of the EIC module.
+typedef struct
+{
+ //!Line
+ unsigned char eic_line;
+
+ //! Mode : EDGE_LEVEL or TRIGGER_LEVEL
+ unsigned char eic_mode;
+
+ //! Edge : FALLING_EDGE or RISING_EDGE
+ unsigned char eic_edge;
+
+ //! Level : LOW_LEVEL or HIGH_LEVEL
+ unsigned char eic_level;
+
+ //! Filter: NOT_FILTERED or FILTERED
+ unsigned char eic_filter;
+
+ //! Async: SYNC mode or ASYNC
+ unsigned char eic_async;
+
+} eic_options_t;
+
+
+/*! \brief Init the EIC driver.
+ *
+ * \param eic Base address of the EIC module
+ * \param opt Configuration parameters of the EIC module (see \ref eic_options_t)
+ * \param nb_lines Number of lines to consider, equal to size of opt buffer
+ */
+extern void eic_init(volatile avr32_eic_t *eic, const eic_options_t *opt, unsigned int nb_lines);
+
+/*! \brief Enable the EIC driver.
+ *
+ * \param eic Base address of the EIC module
+ * \param mask_lines Mask for current selected lines
+ */
+extern void eic_enable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines);
+
+/*! \brief Enable the EIC driver.
+ *
+ * \param eic Base address of the EIC module
+ * \param line_number Line number to enable
+ */
+extern void eic_enable_line(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \brief Disable the EIC driver.
+ *
+ * \param eic Base address of the EIC module
+ * \param mask_lines Mask for current selected lines
+ */
+extern void eic_disable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines);
+
+/*! \brief Disable the EIC driver.
+ *
+ * \param eic Base address of the EIC module
+ * \param line_number Line number to disable
+ */
+extern void eic_disable_line(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \brief Tells whether an EIC line is enabled.
+ *
+ * \param eic Base address of the EIC module
+ * \param line_number Line number to test
+ *
+ * \return Whether an EIC line is enabled.
+ */
+extern Bool eic_is_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \name Interrupt Control Functions
+ */
+//! @{
+
+/*! \brief Enable the interrupt feature of the EIC.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ * \param mask_lines Mask for current selected lines
+ */
+extern void eic_enable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines);
+
+/*! \brief Enable the interrupt feature of the EIC.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ * \param line_number Line number to enable
+ */
+extern void eic_enable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \brief Disable the interrupt feature of the EIC.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ * \param mask_lines Mask for current selected lines
+ */
+extern void eic_disable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines);
+
+/*! \brief Disable the interrupt feature of the EIC.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ * \param line_number Line number to disable
+ */
+extern void eic_disable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \brief Tells whether an EIC interrupt line is enabled.
+ *
+ * \param eic Base address of the EIC module
+ * \param line_number Line number to test
+ *
+ * \return Whether an EIC interrupt line is enabled.
+ */
+extern Bool eic_is_interrupt_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \brief Clear the interrupt flag.
+ * Call this function once you've handled the interrupt.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ * \param mask_lines Mask for current selected lines
+ */
+extern void eic_clear_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines);
+
+/*! \brief Clear the interrupt flag.
+ * Call this function once you've handled the interrupt.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ * \param line_number Line number to clear
+ */
+extern void eic_clear_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \brief Tells whether an EIC interrupt line is pending.
+ *
+ * \param eic Base address of the EIC module
+ * \param line_number Line number to test
+ *
+ * \return Whether an EIC interrupt line is pending.
+ */
+extern Bool eic_is_interrupt_line_pending(volatile avr32_eic_t *eic, unsigned int line_number);
+
+/*! \brief Enable the interrupt scan feature of the EIC.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ * \param presc Prescale select for the keypad scan rate in the range [0,31].
+ */
+extern void eic_enable_interrupt_scan(volatile avr32_eic_t *eic, unsigned int presc);
+
+/*! \brief Disable the interrupt scan feature of the EIC.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ */
+extern void eic_disable_interrupt_scan(volatile avr32_eic_t *eic);
+
+/*! \brief Return scan pad number that causes interrupt.
+ *
+ * \param eic Base address of the EIC (i.e. &AVR32_EIC).
+ */
+extern unsigned long eic_get_interrupt_pad_scan(volatile avr32_eic_t *eic);
+
+//! @}
+
+
+#endif // _EIC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c
new file mode 100644
index 0000000..2eee15c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c
@@ -0,0 +1,1117 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief FLASHC driver for AVR32 UC3.
+ *
+ * AVR32 Flash Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a FLASHC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include <stddef.h>
+#include "compiler.h"
+#include "flashc.h"
+
+
+/*! \name FLASHC Writable Bit-Field Registers
+ */
+//! @{
+
+typedef union
+{
+ unsigned long fcr;
+ avr32_flashc_fcr_t FCR;
+} u_avr32_flashc_fcr_t;
+
+typedef union
+{
+ unsigned long fcmd;
+ avr32_flashc_fcmd_t FCMD;
+} u_avr32_flashc_fcmd_t;
+
+//! @}
+
+
+/*! \name Flash Properties
+ */
+//! @{
+
+
+unsigned int flashc_get_flash_size(void)
+{
+#if (defined AVR32_FLASHC_300_H_INCLUDED)
+ static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_PR_FSZ_SIZE] =
+ {
+ 32 << 10,
+ 64 << 10,
+ 128 << 10,
+ 256 << 10,
+ 384 << 10,
+ 512 << 10,
+ 768 << 10,
+ 1024 << 10
+ };
+ return FLASH_SIZE[(AVR32_FLASHC.pr & AVR32_FLASHC_PR_FSZ_MASK) >> AVR32_FLASHC_PR_FSZ_OFFSET];
+#else
+ static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_FSR_FSZ_SIZE] =
+ {
+ 32 << 10,
+ 64 << 10,
+ 128 << 10,
+ 256 << 10,
+ 384 << 10,
+ 512 << 10,
+ 768 << 10,
+ 1024 << 10
+ };
+ return FLASH_SIZE[(AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FSZ_MASK) >> AVR32_FLASHC_FSR_FSZ_OFFSET];
+#endif
+}
+
+
+unsigned int flashc_get_page_count(void)
+{
+ return flashc_get_flash_size() / AVR32_FLASHC_PAGE_SIZE;
+}
+
+
+unsigned int flashc_get_page_count_per_region(void)
+{
+ return flashc_get_page_count() / AVR32_FLASHC_REGIONS;
+}
+
+
+unsigned int flashc_get_page_region(int page_number)
+{
+ return ((page_number >= 0) ? page_number : flashc_get_page_number()) / flashc_get_page_count_per_region();
+}
+
+
+unsigned int flashc_get_region_first_page_number(unsigned int region)
+{
+ return region * flashc_get_page_count_per_region();
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Control
+ */
+//! @{
+
+
+unsigned int flashc_get_wait_state(void)
+{
+ return (AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FWS_MASK) >> AVR32_FLASHC_FCR_FWS_OFFSET;
+}
+
+
+void flashc_set_wait_state(unsigned int wait_state)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.fws = wait_state;
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+Bool flashc_is_ready_int_enabled(void)
+{
+ return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FRDY_MASK) != 0);
+}
+
+
+void flashc_enable_ready_int(Bool enable)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.frdy = (enable != FALSE);
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+Bool flashc_is_lock_error_int_enabled(void)
+{
+ return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_LOCKE_MASK) != 0);
+}
+
+
+void flashc_enable_lock_error_int(Bool enable)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.locke = (enable != FALSE);
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+Bool flashc_is_prog_error_int_enabled(void)
+{
+ return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_PROGE_MASK) != 0);
+}
+
+
+void flashc_enable_prog_error_int(Bool enable)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.proge = (enable != FALSE);
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Status
+ */
+//! @{
+
+
+Bool flashc_is_ready(void)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FRDY_MASK) != 0);
+}
+
+
+void flashc_default_wait_until_ready(void)
+{
+ while (!flashc_is_ready());
+}
+
+
+void (*volatile flashc_wait_until_ready)(void) = flashc_default_wait_until_ready;
+
+
+/*! \brief Gets the error status of the FLASHC.
+ *
+ * \return The error status of the FLASHC built up from
+ * \c AVR32_FLASHC_FSR_LOCKE_MASK and \c AVR32_FLASHC_FSR_PROGE_MASK.
+ *
+ * \warning This hardware error status is cleared by all functions reading the
+ * Flash Status Register (FSR). This function is therefore not part of
+ * the driver's API which instead presents \ref flashc_is_lock_error
+ * and \ref flashc_is_programming_error.
+ */
+static unsigned int flashc_get_error_status(void)
+{
+ return AVR32_FLASHC.fsr & (AVR32_FLASHC_FSR_LOCKE_MASK |
+ AVR32_FLASHC_FSR_PROGE_MASK);
+}
+
+
+//! Sticky error status of the FLASHC.
+//! This variable is updated by functions that issue FLASHC commands. It
+//! contains the cumulated FLASHC error status of all the FLASHC commands issued
+//! by a function.
+static unsigned int flashc_error_status = 0;
+
+
+Bool flashc_is_lock_error(void)
+{
+ return ((flashc_error_status & AVR32_FLASHC_FSR_LOCKE_MASK) != 0);
+}
+
+
+Bool flashc_is_programming_error(void)
+{
+ return ((flashc_error_status & AVR32_FLASHC_FSR_PROGE_MASK) != 0);
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Command Control
+ */
+//! @{
+
+
+unsigned int flashc_get_command(void)
+{
+ return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_CMD_MASK) >> AVR32_FLASHC_FCMD_CMD_OFFSET;
+}
+
+
+unsigned int flashc_get_page_number(void)
+{
+ return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_PAGEN_MASK) >> AVR32_FLASHC_FCMD_PAGEN_OFFSET;
+}
+
+
+void flashc_issue_command(unsigned int command, int page_number)
+{
+ u_avr32_flashc_fcmd_t u_avr32_flashc_fcmd;
+ flashc_wait_until_ready();
+ u_avr32_flashc_fcmd.fcmd = AVR32_FLASHC.fcmd;
+ u_avr32_flashc_fcmd.FCMD.cmd = command;
+ if (page_number >= 0) u_avr32_flashc_fcmd.FCMD.pagen = page_number;
+ u_avr32_flashc_fcmd.FCMD.key = AVR32_FLASHC_FCMD_KEY_KEY;
+ AVR32_FLASHC.fcmd = u_avr32_flashc_fcmd.fcmd;
+ flashc_error_status = flashc_get_error_status();
+ flashc_wait_until_ready();
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Global Commands
+ */
+//! @{
+
+
+void flashc_no_operation(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_NOP, -1);
+}
+
+
+void flashc_erase_all(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EA, -1);
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Protection Mechanisms
+ */
+//! @{
+
+
+Bool flashc_is_security_bit_active(void)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_SECURITY_MASK) != 0);
+}
+
+
+void flashc_activate_security_bit(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_SSB, -1);
+}
+
+
+unsigned int flashc_get_bootloader_protected_size(void)
+{
+ unsigned int bootprot = (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 -
+ flashc_read_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET,
+ AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE);
+ return (bootprot) ? AVR32_FLASHC_PAGE_SIZE << bootprot : 0;
+}
+
+
+unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size)
+{
+ flashc_set_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET,
+ AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE,
+ (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 -
+ ((bootprot_size) ?
+ 32 - clz((((min(max(bootprot_size, AVR32_FLASHC_PAGE_SIZE << 1),
+ AVR32_FLASHC_PAGE_SIZE <<
+ ((1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1)) +
+ AVR32_FLASHC_PAGE_SIZE - 1) /
+ AVR32_FLASHC_PAGE_SIZE) << 1) - 1) - 1 :
+ 0));
+ return flashc_get_bootloader_protected_size();
+}
+
+
+Bool flashc_is_external_privileged_fetch_locked(void)
+{
+ return (!flashc_read_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET));
+}
+
+
+void flashc_lock_external_privileged_fetch(Bool lock)
+{
+ flashc_set_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET, !lock);
+}
+
+
+Bool flashc_is_page_region_locked(int page_number)
+{
+ return flashc_is_region_locked(flashc_get_page_region(page_number));
+}
+
+
+Bool flashc_is_region_locked(unsigned int region)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_LOCK0_MASK << (region & (AVR32_FLASHC_REGIONS - 1))) != 0);
+}
+
+
+void flashc_lock_page_region(int page_number, Bool lock)
+{
+ flashc_issue_command((lock) ? AVR32_FLASHC_FCMD_CMD_LP : AVR32_FLASHC_FCMD_CMD_UP, page_number);
+}
+
+
+void flashc_lock_region(unsigned int region, Bool lock)
+{
+ flashc_lock_page_region(flashc_get_region_first_page_number(region), lock);
+}
+
+
+void flashc_lock_all_regions(Bool lock)
+{
+ unsigned int error_status = 0;
+ unsigned int region = AVR32_FLASHC_REGIONS;
+ while (region)
+ {
+ flashc_lock_region(--region, lock);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+//! @}
+
+
+/*! \name Access to General-Purpose Fuses
+ */
+//! @{
+
+
+Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit)
+{
+ return ((flashc_read_all_gp_fuses() & 1ULL << (gp_fuse_bit & 0x3F)) != 0);
+}
+
+
+U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width)
+{
+ return flashc_read_all_gp_fuses() >> (pos & 0x3F) & ((1ULL << min(width, 64)) - 1);
+}
+
+
+U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte)
+{
+ return flashc_read_all_gp_fuses() >> ((gp_fuse_byte & 0x07) << 3);
+}
+
+
+U64 flashc_read_all_gp_fuses(void)
+{
+ return AVR32_FLASHC.fgpfrlo | (U64)AVR32_FLASHC.fgpfrhi << 32;
+}
+
+
+Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EGPB, gp_fuse_bit & 0x3F);
+ return (check) ? flashc_read_gp_fuse_bit(gp_fuse_bit) : TRUE;
+}
+
+
+Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_bit;
+ pos &= 0x3F;
+ width = min(width, 64);
+ for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++)
+ {
+ flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+ return (check) ? (flashc_read_gp_fuse_bitfield(pos, width) == (1ULL << width) - 1) : TRUE;
+}
+
+
+Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check)
+{
+ unsigned int error_status;
+ unsigned int current_gp_fuse_byte;
+ U64 value = flashc_read_all_gp_fuses();
+ flashc_erase_all_gp_fuses(FALSE);
+ error_status = flashc_error_status;
+ for (current_gp_fuse_byte = 0; current_gp_fuse_byte < 8; current_gp_fuse_byte++, value >>= 8)
+ {
+ if (current_gp_fuse_byte != gp_fuse_byte)
+ {
+ flashc_write_gp_fuse_byte(current_gp_fuse_byte, value);
+ error_status |= flashc_error_status;
+ }
+ }
+ flashc_error_status = error_status;
+ return (check) ? (flashc_read_gp_fuse_byte(gp_fuse_byte) == 0xFF) : TRUE;
+}
+
+
+Bool flashc_erase_all_gp_fuses(Bool check)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EAGPF, -1);
+ return (check) ? (flashc_read_all_gp_fuses() == 0xFFFFFFFFFFFFFFFFULL) : TRUE;
+}
+
+
+void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value)
+{
+ if (!value)
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WGPB, gp_fuse_bit & 0x3F);
+}
+
+
+void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_bit;
+ pos &= 0x3F;
+ width = min(width, 64);
+ for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1)
+ {
+ flashc_write_gp_fuse_bit(gp_fuse_bit, value & 0x01);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_PGPFB, (gp_fuse_byte & 0x07) | value << 3);
+}
+
+
+void flashc_write_all_gp_fuses(U64 value)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_byte;
+ for (gp_fuse_byte = 0; gp_fuse_byte < 8; gp_fuse_byte++, value >>= 8)
+ {
+ flashc_write_gp_fuse_byte(gp_fuse_byte, value);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value)
+{
+ if (value)
+ flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE);
+ else
+ flashc_write_gp_fuse_bit(gp_fuse_bit, FALSE);
+}
+
+
+void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_bit;
+ pos &= 0x3F;
+ width = min(width, 64);
+ for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1)
+ {
+ flashc_set_gp_fuse_bit(gp_fuse_bit, value & 0x01);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value)
+{
+ unsigned int error_status;
+ switch (value)
+ {
+ case 0xFF:
+ flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE);
+ break;
+ case 0x00:
+ flashc_write_gp_fuse_byte(gp_fuse_byte, 0x00);
+ break;
+ default:
+ flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE);
+ error_status = flashc_error_status;
+ flashc_write_gp_fuse_byte(gp_fuse_byte, value);
+ flashc_error_status |= error_status;
+ }
+}
+
+
+void flashc_set_all_gp_fuses(U64 value)
+{
+ unsigned int error_status;
+ switch (value)
+ {
+ case 0xFFFFFFFFFFFFFFFFULL:
+ flashc_erase_all_gp_fuses(FALSE);
+ break;
+ case 0x0000000000000000ULL:
+ flashc_write_all_gp_fuses(0x0000000000000000ULL);
+ break;
+ default:
+ flashc_erase_all_gp_fuses(FALSE);
+ error_status = flashc_error_status;
+ flashc_write_all_gp_fuses(value);
+ flashc_error_status |= error_status;
+ }
+}
+
+
+//! @}
+
+
+/*! \name Access to Flash Pages
+ */
+//! @{
+
+
+void flashc_clear_page_buffer(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_CPB, -1);
+}
+
+
+Bool flashc_is_page_erased(void)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_QPRR_MASK) != 0);
+}
+
+
+Bool flashc_quick_page_read(int page_number)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPR, page_number);
+ return flashc_is_page_erased();
+}
+
+
+Bool flashc_erase_page(int page_number, Bool check)
+{
+ Bool page_erased = TRUE;
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EP, page_number);
+ if (check)
+ {
+ unsigned int error_status = flashc_error_status;
+ page_erased = flashc_quick_page_read(-1);
+ flashc_error_status |= error_status;
+ }
+ return page_erased;
+}
+
+
+Bool flashc_erase_all_pages(Bool check)
+{
+ Bool all_pages_erased = TRUE;
+ unsigned int error_status = 0;
+ unsigned int page_number = flashc_get_page_count();
+ while (page_number)
+ {
+ all_pages_erased &= flashc_erase_page(--page_number, check);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+ return all_pages_erased;
+}
+
+
+void flashc_write_page(int page_number)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WP, page_number);
+}
+
+
+Bool flashc_quick_user_page_read(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPRUP, -1);
+ return flashc_is_page_erased();
+}
+
+
+Bool flashc_erase_user_page(Bool check)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EUP, -1);
+ return (check) ? flashc_quick_user_page_read() : TRUE;
+}
+
+
+void flashc_write_user_page(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WUP, -1);
+}
+
+
+volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase)
+{
+ return flashc_memset16(dst, src | (U16)src << 8, nbytes, erase);
+}
+
+
+volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase)
+{
+ return flashc_memset32(dst, src | (U32)src << 16, nbytes, erase);
+}
+
+
+volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase)
+{
+ return flashc_memset64(dst, src | (U64)src << 32, nbytes, erase);
+}
+
+
+volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase)
+{
+ // Use aggregated pointers to have several alignments available for a same address.
+ UnionCVPtr flash_array_end;
+ UnionVPtr dest;
+ Union64 source = {0};
+ StructCVPtr dest_end;
+ UnionCVPtr flash_page_source_end;
+ Bool incomplete_flash_page_end;
+ Union64 flash_dword;
+ UnionVPtr tmp;
+ unsigned int error_status = 0;
+ unsigned int i;
+
+ // Reformat arguments.
+ flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size();
+ dest.u8ptr = dst;
+ for (i = (Get_align((U32)dest.u8ptr, sizeof(U64)) - 1) & (sizeof(U64) - 1);
+ src; i = (i - 1) & (sizeof(U64) - 1))
+ {
+ source.u8[i] = src;
+ src >>= 8;
+ }
+ dest_end.u8ptr = dest.u8ptr + nbytes;
+
+ // If destination is outside flash, go to next flash page if any.
+ if (dest.u8ptr < AVR32_FLASH)
+ {
+ dest.u8ptr = AVR32_FLASH;
+ }
+ else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE)
+ {
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+
+ // If end of destination is outside flash, move it to the end of the previous flash page if any.
+ if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE)
+ {
+ dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE;
+ }
+ else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr)
+ {
+ dest_end.u8ptr = flash_array_end.u8ptr;
+ }
+
+ // Align each end of destination pointer with its natural boundary.
+ dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16));
+ dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32));
+ dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64));
+
+ // While end of destination is not reached...
+ while (dest.u8ptr < dest_end.u8ptr)
+ {
+ // Clear the page buffer in order to prepare data for a flash page write.
+ flashc_clear_page_buffer();
+ error_status |= flashc_error_status;
+
+ // Determine where the source data will end in the current flash page.
+ flash_page_source_end.u64ptr =
+ (U64 *)min((U32)dest_end.u64ptr,
+ Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE);
+
+ // Determine if the current destination page has an incomplete end.
+ incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >=
+ Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE));
+
+ // Use a flash double-word buffer to manage unaligned accesses.
+ flash_dword.u64 = source.u64;
+
+ // If destination does not point to the beginning of the current flash page...
+ if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE))
+ {
+ // Fill the beginning of the page buffer with the current flash page data.
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE);
+ tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+ tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+
+ // If destination is not 64-bit aligned...
+ if (!Test_align((U32)dest.u8ptr, sizeof(U64)))
+ {
+ // Fill the beginning of the flash double-word buffer with the current
+ // flash page data.
+ // This is required by the hardware, even if page erase is not
+ // requested, in order to be able to write successfully to erased parts
+ // of flash pages that have already been written to.
+ for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Align the destination pointer with its 64-bit boundary.
+ dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+
+ // If the current destination double-word is not the last one...
+ if (dest.u64ptr < dest_end.u64ptr)
+ {
+ // Write the flash double-word buffer to the page buffer and reinitialize it.
+ *dest.u64ptr++ = flash_dword.u64;
+ flash_dword.u64 = source.u64;
+ }
+ }
+ }
+
+ // Write the source data to the page buffer with 64-bit alignment.
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ *dest.u64ptr++ = source.u64;
+
+ // If the current destination page has an incomplete end...
+ if (incomplete_flash_page_end)
+ {
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ {
+ tmp.u8ptr = (volatile U8 *)dest_end.u8ptr;
+
+ // If end of destination is not 64-bit aligned...
+ if (!Test_align((U32)dest_end.u8ptr, sizeof(U64)))
+ {
+ // Fill the end of the flash double-word buffer with the current flash page data.
+ for (i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); i < sizeof(U64); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Write the flash double-word buffer to the page buffer.
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+
+ // Fill the end of the page buffer with the current flash page data.
+ for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+ }
+ }
+
+ // If the current flash page is in the flash array...
+ if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE)
+ {
+ // Erase the current page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_page(-1, FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_page(-1);
+ error_status |= flashc_error_status;
+
+ // If the end of the flash array is reached, go to the User page.
+ if (dest.u8ptr >= flash_array_end.u8ptr)
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+ // If the current flash page is the User page...
+ else
+ {
+ // Erase the User page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_user_page(FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_user_page();
+ error_status |= flashc_error_status;
+ }
+ }
+
+ // Update the FLASHC error status.
+ flashc_error_status = error_status;
+
+ // Return the initial destination pointer as the standard memset function does.
+ return dst;
+}
+
+
+volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase)
+{
+ // Use aggregated pointers to have several alignments available for a same address.
+ UnionCVPtr flash_array_end;
+ UnionVPtr dest;
+ UnionCPtr source;
+ StructCVPtr dest_end;
+ UnionCVPtr flash_page_source_end;
+ Bool incomplete_flash_page_end;
+ Union64 flash_dword;
+ Bool flash_dword_pending = FALSE;
+ UnionVPtr tmp;
+ unsigned int error_status = 0;
+ unsigned int i, j;
+
+ // Reformat arguments.
+ flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size();
+ dest.u8ptr = dst;
+ source.u8ptr = src;
+ dest_end.u8ptr = dest.u8ptr + nbytes;
+
+ // If destination is outside flash, go to next flash page if any.
+ if (dest.u8ptr < AVR32_FLASH)
+ {
+ source.u8ptr += AVR32_FLASH - dest.u8ptr;
+ dest.u8ptr = AVR32_FLASH;
+ }
+ else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE)
+ {
+ source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr;
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+
+ // If end of destination is outside flash, move it to the end of the previous flash page if any.
+ if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE)
+ {
+ dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE;
+ }
+ else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr)
+ {
+ dest_end.u8ptr = flash_array_end.u8ptr;
+ }
+
+ // Align each end of destination pointer with its natural boundary.
+ dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16));
+ dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32));
+ dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64));
+
+ // While end of destination is not reached...
+ while (dest.u8ptr < dest_end.u8ptr)
+ {
+ // Clear the page buffer in order to prepare data for a flash page write.
+ flashc_clear_page_buffer();
+ error_status |= flashc_error_status;
+
+ // Determine where the source data will end in the current flash page.
+ flash_page_source_end.u64ptr =
+ (U64 *)min((U32)dest_end.u64ptr,
+ Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE);
+
+ // Determine if the current destination page has an incomplete end.
+ incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >=
+ Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE));
+
+ // If destination does not point to the beginning of the current flash page...
+ if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE))
+ {
+ // Fill the beginning of the page buffer with the current flash page data.
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE);
+ tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+ tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+
+ // If destination is not 64-bit aligned...
+ if (!Test_align((U32)dest.u8ptr, sizeof(U64)))
+ {
+ // Fill the beginning of the flash double-word buffer with the current
+ // flash page data.
+ // This is required by the hardware, even if page erase is not
+ // requested, in order to be able to write successfully to erased parts
+ // of flash pages that have already been written to.
+ for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Fill the end of the flash double-word buffer with the source data.
+ for (; i < sizeof(U64); i++)
+ flash_dword.u8[i] = *source.u8ptr++;
+
+ // Align the destination pointer with its 64-bit boundary.
+ dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+
+ // If the current destination double-word is not the last one...
+ if (dest.u64ptr < dest_end.u64ptr)
+ {
+ // Write the flash double-word buffer to the page buffer.
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+ // If the current destination double-word is the last one, the flash
+ // double-word buffer must be kept for later.
+ else flash_dword_pending = TRUE;
+ }
+ }
+
+ // Read the source data with the maximal possible alignment and write it to
+ // the page buffer with 64-bit alignment.
+ switch (Get_align((U32)source.u8ptr, sizeof(U32)))
+ {
+ case 0:
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ *dest.u64ptr++ = *source.u64ptr++;
+ break;
+
+ case sizeof(U16):
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ {
+ for (j = 0; j < sizeof(U64) / sizeof(U16); j++) flash_dword.u16[j] = *source.u16ptr++;
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+ break;
+
+ default:
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ {
+ for (j = 0; j < sizeof(U64); j++) flash_dword.u8[j] = *source.u8ptr++;
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+ }
+
+ // If the current destination page has an incomplete end...
+ if (incomplete_flash_page_end)
+ {
+ // If the flash double-word buffer is in use, do not initialize it.
+ if (flash_dword_pending) i = Get_align((U32)dest_end.u8ptr, sizeof(U64));
+ // If the flash double-word buffer is free...
+ else
+ {
+ // Fill the beginning of the flash double-word buffer with the source data.
+ for (i = 0; i < Get_align((U32)dest_end.u8ptr, sizeof(U64)); i++)
+ flash_dword.u8[i] = *source.u8ptr++;
+ }
+
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ {
+ tmp.u8ptr = (volatile U8 *)dest_end.u8ptr;
+
+ // If end of destination is not 64-bit aligned...
+ if (!Test_align((U32)dest_end.u8ptr, sizeof(U64)))
+ {
+ // Fill the end of the flash double-word buffer with the current flash page data.
+ for (; i < sizeof(U64); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Write the flash double-word buffer to the page buffer.
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+
+ // Fill the end of the page buffer with the current flash page data.
+ for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+ }
+ }
+
+ // If the current flash page is in the flash array...
+ if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE)
+ {
+ // Erase the current page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_page(-1, FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_page(-1);
+ error_status |= flashc_error_status;
+
+ // If the end of the flash array is reached, go to the User page.
+ if (dest.u8ptr >= flash_array_end.u8ptr)
+ {
+ source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr;
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+ }
+ // If the current flash page is the User page...
+ else
+ {
+ // Erase the User page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_user_page(FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_user_page();
+ error_status |= flashc_error_status;
+ }
+ }
+
+ // Update the FLASHC error status.
+ flashc_error_status = error_status;
+
+ // Return the initial destination pointer as the standard memcpy function does.
+ return dst;
+}
+
+
+#if UC3C
+void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz)
+{
+ //! Device-specific data
+ #undef AVR32_FLASHC_FWS_0_MAX_FREQ
+ #undef AVR32_FLASHC_FWS_1_MAX_FREQ
+ #undef AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ
+ #undef AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ
+ #define AVR32_FLASHC_FWS_0_MAX_FREQ 33000000
+ #define AVR32_FLASHC_FWS_1_MAX_FREQ 66000000
+ #define AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ 33000000
+ #define AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ 72000000
+ // These defines are missing from or wrong in the toolchain header files uc3cxxx.h
+ // Put a Bugzilla
+
+ if(cpu_f_hz > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) // > 33MHz
+ {
+ // Set a wait-state
+ flashc_set_wait_state(1);
+ if(cpu_f_hz <= AVR32_FLASHC_FWS_1_MAX_FREQ) // <= 66MHz and >33Mhz
+ {
+ // Disable the high-speed read mode.
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+ }
+ else // > 66Mhz
+ {
+ // Enable the high-speed read mode.
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1);
+ }
+ }
+ else // <= 33 MHz
+ {
+ // Disable wait-state
+ flashc_set_wait_state(0);
+
+ // Disable the high-speed read mode.
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+
+ }
+}
+#endif // UC3C device-specific implementation
+
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h
new file mode 100644
index 0000000..9f2547a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h
@@ -0,0 +1,1002 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief FLASHC driver for AVR32 UC3.
+ *
+ * AVR32 Flash Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a FLASHC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _FLASHC_H_
+#define _FLASHC_H_
+
+#include <avr32/io.h>
+#include <stddef.h>
+#include "compiler.h"
+
+//! Number of flash regions defined by the FLASHC.
+#define AVR32_FLASHC_REGIONS (AVR32_FLASHC_FLASH_SIZE /\
+ (AVR32_FLASHC_PAGES_PR_REGION * AVR32_FLASHC_PAGE_SIZE))
+
+
+/*! \name Flash Properties
+ */
+//! @{
+
+/*! \brief Gets the size of the whole flash array.
+ *
+ * \return The size of the whole flash array in bytes.
+ */
+extern unsigned int flashc_get_flash_size(void);
+
+/*! \brief Gets the total number of pages in the flash array.
+ *
+ * \return The total number of pages in the flash array.
+ */
+extern unsigned int flashc_get_page_count(void);
+
+/*! \brief Gets the number of pages in each flash region.
+ *
+ * \return The number of pages in each flash region.
+ */
+extern unsigned int flashc_get_page_count_per_region(void);
+
+/*! \brief Gets the region number of a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \return The region number of the specified page.
+ */
+extern unsigned int flashc_get_page_region(int page_number);
+
+/*! \brief Gets the number of the first page of a region.
+ *
+ * \param region The region number: \c 0 to <tt>(AVR32_FLASHC_REGIONS - 1)</tt>.
+ *
+ * \return The number of the first page of the specified region.
+ */
+extern unsigned int flashc_get_region_first_page_number(unsigned int region);
+
+//! @}
+
+
+/*! \name FLASHC Control
+ */
+//! @{
+
+/*! \brief Gets the number of wait states of flash read accesses.
+ *
+ * \return The number of wait states of flash read accesses.
+ */
+extern unsigned int flashc_get_wait_state(void);
+
+/*! \brief Sets the number of wait states of flash read accesses.
+ *
+ * \param wait_state The number of wait states of flash read accesses: \c 0 to
+ * \c 1.
+ */
+extern void flashc_set_wait_state(unsigned int wait_state);
+
+/*! \brief Tells whether the Flash Ready interrupt is enabled.
+ *
+ * \return Whether the Flash Ready interrupt is enabled.
+ */
+extern Bool flashc_is_ready_int_enabled(void);
+
+/*! \brief Enables or disables the Flash Ready interrupt.
+ *
+ * \param enable Whether to enable the Flash Ready interrupt: \c TRUE or
+ * \c FALSE.
+ */
+extern void flashc_enable_ready_int(Bool enable);
+
+/*! \brief Tells whether the Lock Error interrupt is enabled.
+ *
+ * \return Whether the Lock Error interrupt is enabled.
+ */
+extern Bool flashc_is_lock_error_int_enabled(void);
+
+/*! \brief Enables or disables the Lock Error interrupt.
+ *
+ * \param enable Whether to enable the Lock Error interrupt: \c TRUE or
+ * \c FALSE.
+ */
+extern void flashc_enable_lock_error_int(Bool enable);
+
+/*! \brief Tells whether the Programming Error interrupt is enabled.
+ *
+ * \return Whether the Programming Error interrupt is enabled.
+ */
+extern Bool flashc_is_prog_error_int_enabled(void);
+
+/*! \brief Enables or disables the Programming Error interrupt.
+ *
+ * \param enable Whether to enable the Programming Error interrupt: \c TRUE or
+ * \c FALSE.
+ */
+extern void flashc_enable_prog_error_int(Bool enable);
+
+//! @}
+
+
+/*! \name FLASHC Status
+ */
+//! @{
+
+/*! \brief Tells whether the FLASHC is ready to run a new command.
+ *
+ * \return Whether the FLASHC is ready to run a new command.
+ */
+extern Bool flashc_is_ready(void);
+
+/*! \brief Waits actively until the FLASHC is ready to run a new command.
+ *
+ * This is the default function assigned to \ref flashc_wait_until_ready.
+ */
+extern void flashc_default_wait_until_ready(void);
+
+//! Pointer to the function used by the driver when it needs to wait until the
+//! FLASHC is ready to run a new command.
+//! The default function is \ref flashc_default_wait_until_ready.
+//! The user may change this pointer to use another implementation.
+extern void (*volatile flashc_wait_until_ready)(void);
+
+/*! \brief Tells whether a Lock Error has occurred during the last function
+ * called that issued one or more FLASHC commands.
+ *
+ * \return Whether a Lock Error has occurred during the last function called
+ * that issued one or more FLASHC commands.
+ */
+extern Bool flashc_is_lock_error(void);
+
+/*! \brief Tells whether a Programming Error has occurred during the last
+ * function called that issued one or more FLASHC commands.
+ *
+ * \return Whether a Programming Error has occurred during the last function
+ * called that issued one or more FLASHC commands.
+ */
+extern Bool flashc_is_programming_error(void);
+
+//! @}
+
+
+/*! \name FLASHC Command Control
+ */
+//! @{
+
+/*! \brief Gets the last issued FLASHC command.
+ *
+ * \return The last issued FLASHC command.
+ */
+extern unsigned int flashc_get_command(void);
+
+/*! \brief Gets the current FLASHC page number.
+ *
+ * \return The current FLASHC page number.
+ */
+extern unsigned int flashc_get_page_number(void);
+
+/*! \brief Issues a FLASHC command.
+ *
+ * \param command The command: \c AVR32_FLASHC_FCMD_CMD_x.
+ * \param page_number The page number to apply the command to:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: use this to apply the command to the current page number
+ * or if the command does not apply to any page number;
+ * \arg this argument may have other meanings according to the command. See
+ * the FLASHC chapter of the MCU datasheet.
+ *
+ * \warning A Lock Error is issued if the command violates the protection
+ * mechanism.
+ *
+ * \warning A Programming Error is issued if the command is invalid.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_issue_command(unsigned int command, int page_number);
+
+//! @}
+
+
+/*! \name FLASHC Global Commands
+ */
+//! @{
+
+/*! \brief Issues a No Operation command to the FLASHC.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_no_operation(void);
+
+/*! \brief Issues an Erase All command to the FLASHC.
+ *
+ * This command erases all bits in the flash array, the general-purpose fuse
+ * bits and the Security bit. The User page is not erased.
+ *
+ * This command also ensures that all volatile memories, such as register file
+ * and RAMs, are erased before the Security bit is erased, i.e. deactivated.
+ *
+ * \warning A Lock Error is issued if at least one region is locked or the
+ * bootloader protection is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern void flashc_erase_all(void);
+
+//! @}
+
+
+/*! \name FLASHC Protection Mechanisms
+ */
+//! @{
+
+/*! \brief Tells whether the Security bit is active.
+ *
+ * \return Whether the Security bit is active.
+ */
+extern Bool flashc_is_security_bit_active(void);
+
+/*! \brief Activates the Security bit.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_activate_security_bit(void);
+
+/*! \brief Gets the bootloader protected size.
+ *
+ * \return The bootloader protected size in bytes.
+ */
+extern unsigned int flashc_get_bootloader_protected_size(void);
+
+/*! \brief Sets the bootloader protected size.
+ *
+ * \param bootprot_size The wanted bootloader protected size in bytes. If this
+ * size is not supported, the actual size will be the
+ * nearest greater available size or the maximal possible
+ * size if the requested size is too large.
+ *
+ * \return The actual bootloader protected size in bytes.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size);
+
+/*! \brief Tells whether external privileged fetch is locked.
+ *
+ * \return Whether external privileged fetch is locked.
+ */
+extern Bool flashc_is_external_privileged_fetch_locked(void);
+
+/*! \brief Locks or unlocks external privileged fetch.
+ *
+ * \param lock Whether to lock external privileged fetch: \c TRUE or \c FALSE.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_external_privileged_fetch(Bool lock);
+
+/*! \brief Tells whether the region of a page is locked.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \return Whether the region of the specified page is locked.
+ */
+extern Bool flashc_is_page_region_locked(int page_number);
+
+/*! \brief Tells whether a region is locked.
+ *
+ * \param region The region number: \c 0 to <tt>(AVR32_FLASHC_REGIONS - 1)</tt>.
+ *
+ * \return Whether the specified region is locked.
+ */
+extern Bool flashc_is_region_locked(unsigned int region);
+
+/*! \brief Locks or unlocks the region of a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ * \param lock Whether to lock the region of the specified page: \c TRUE or
+ * \c FALSE.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_page_region(int page_number, Bool lock);
+
+/*! \brief Locks or unlocks a region.
+ *
+ * \param region The region number: \c 0 to <tt>(AVR32_FLASHC_REGIONS - 1)</tt>.
+ * \param lock Whether to lock the specified region: \c TRUE or \c FALSE.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_region(unsigned int region, Bool lock);
+
+/*! \brief Locks or unlocks all regions.
+ *
+ * \param lock Whether to lock the regions: \c TRUE or \c FALSE.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_all_regions(Bool lock);
+
+//! @}
+
+
+/*! \name Access to General-Purpose Fuses
+ */
+//! @{
+
+/*! \brief Reads a general-purpose fuse bit.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ *
+ * \return The value of the specified general-purpose fuse bit.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit);
+
+/*! \brief Reads a general-purpose fuse bit-field.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ *
+ * \return The value of the specified general-purpose fuse bit-field.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width);
+
+/*! \brief Reads a general-purpose fuse byte.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ *
+ * \return The value of the specified general-purpose fuse byte.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte);
+
+/*! \brief Reads all general-purpose fuses.
+ *
+ * \return The value of all general-purpose fuses as a word.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern U64 flashc_read_all_gp_fuses(void);
+
+/*! \brief Erases a general-purpose fuse bit.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check);
+
+/*! \brief Erases a general-purpose fuse bit-field.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check);
+
+/*! \brief Erases a general-purpose fuse byte.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check);
+
+/*! \brief Erases all general-purpose fuses.
+ *
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_all_gp_fuses(Bool check);
+
+/*! \brief Writes a general-purpose fuse bit.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ * \param value The value of the specified general-purpose fuse bit.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value);
+
+/*! \brief Writes a general-purpose fuse bit-field.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ * \param value The value of the specified general-purpose fuse bit-field.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value);
+
+/*! \brief Writes a general-purpose fuse byte.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ * \param value The value of the specified general-purpose fuse byte.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value);
+
+/*! \brief Writes all general-purpose fuses.
+ *
+ * \param value The value of all general-purpose fuses as a word.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_all_gp_fuses(U64 value);
+
+/*! \brief Sets a general-purpose fuse bit with the appropriate erase and write
+ * operations.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ * \param value The value of the specified general-purpose fuse bit.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value);
+
+/*! \brief Sets a general-purpose fuse bit-field with the appropriate erase and
+ * write operations.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ * \param value The value of the specified general-purpose fuse bit-field.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value);
+
+/*! \brief Sets a general-purpose fuse byte with the appropriate erase and write
+ * operations.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ * \param value The value of the specified general-purpose fuse byte.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value);
+
+/*! \brief Sets all general-purpose fuses with the appropriate erase and write
+ * operations.
+ *
+ * \param value The value of all general-purpose fuses as a word.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_all_gp_fuses(U64 value);
+
+//! @}
+
+
+/*! \name Access to Flash Pages
+ */
+//! @{
+
+/*! \brief Clears the page buffer.
+ *
+ * This command resets all bits in the page buffer to one. Write accesses to the
+ * page buffer can only change page buffer bits from one to zero.
+ *
+ * \warning The page buffer is not automatically reset after a page write.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_clear_page_buffer(void);
+
+/*! \brief Tells whether the page to which the last Quick Page Read or Quick
+ * Page Read User Page command was applied was erased.
+ *
+ * \return Whether the page to which the last Quick Page Read or Quick Page Read
+ * User Page command was applied was erased.
+ */
+extern Bool flashc_is_page_erased(void);
+
+/*! \brief Applies the Quick Page Read command to a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \return Whether the specified page is erased.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern Bool flashc_quick_page_read(int page_number);
+
+/*! \brief Erases a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the command is applied to a page belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern Bool flashc_erase_page(int page_number, Bool check);
+
+/*! \brief Erases all pages within the flash array.
+ *
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if at least one region is locked or the
+ * bootloader protection is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern Bool flashc_erase_all_pages(Bool check);
+
+/*! \brief Writes a page from the page buffer.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \warning A Lock Error is issued if the command is applied to a page belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \warning The page buffer is not automatically reset after a page write.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ */
+extern void flashc_write_page(int page_number);
+
+/*! \brief Issues a Quick Page Read User Page command to the FLASHC.
+ *
+ * \return Whether the User page is erased.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern Bool flashc_quick_user_page_read(void);
+
+/*! \brief Erases the User page.
+ *
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern Bool flashc_erase_user_page(Bool check);
+
+/*! \brief Writes the User page from the page buffer.
+ *
+ * \warning The page buffer is not automatically reset after a page write.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ */
+extern void flashc_write_user_page(void);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src source byte.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source byte.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source half-word.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source half-word.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source word.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source word.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source double-word.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source double-word.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source pattern.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source double-word.
+ * \param src_width \a src width in bits: 8, 16, 32 or 64.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+#define flashc_memset(dst, src, src_width, nbytes, erase) \
+ TPASTE2(flashc_memset, src_width)((dst), (src), (nbytes), (erase))
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the source pointed to by \a src.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Pointer to source data.
+ * \param nbytes Number of bytes to copy.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning If copying takes place between areas that overlap, the behavior is
+ * undefined.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase);
+
+#if UC3C
+
+/*! \brief Depednding to the CPU frequency, set the wait states of flash read
+ * accesses and enable or disable the High speed read mode.
+ *
+ * \param cpu_f_hz The CPU frequency
+ */
+void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz);
+#endif // UC3C device-specific implementation
+
+//! @}
+
+
+#endif // _FLASHC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c
new file mode 100644
index 0000000..b6b83c7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c
@@ -0,0 +1,458 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief GPIO driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the GPIO.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a GPIO module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "gpio.h"
+
+//! GPIO module instance.
+#define GPIO AVR32_GPIO
+
+
+/*! \name Peripheral Bus Interface
+ */
+//! @{
+
+
+int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size)
+{
+ int status = GPIO_SUCCESS;
+ unsigned int i;
+
+ for (i = 0; i < size; i++)
+ {
+ status |= gpio_enable_module_pin(gpiomap->pin, gpiomap->function);
+ gpiomap++;
+ }
+
+ return status;
+}
+
+
+int gpio_enable_module_pin(unsigned int pin, unsigned int function)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ // Enable the correct function.
+ switch (function)
+ {
+ case 0: // A function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+ case 1: // B function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+ case 2: // C function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+ case 3: // D function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ case 4: // E function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+
+ case 5: // F function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+
+ case 6: // G function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+
+ case 7: // H function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+#endif
+
+ default:
+ return GPIO_INVALID_ARGUMENT;
+ }
+
+ // Disable GPIO control.
+ gpio_port->gperc = 1 << (pin & 0x1F);
+
+ return GPIO_SUCCESS;
+}
+
+
+void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size)
+{
+ unsigned int i;
+
+ for (i = 0; i < size; i++)
+ {
+ gpio_enable_gpio_pin(gpiomap->pin);
+ gpiomap++;
+ }
+}
+
+
+void gpio_enable_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->oderc = 1 << (pin & 0x1F);
+ gpio_port->gpers = 1 << (pin & 0x1F);
+}
+
+
+// The open-drain mode is not synthesized on the current AVR32 products.
+// If one day some AVR32 products have this feature, the corresponding part
+// numbers should be listed in the #if below.
+// Note that other functions are available in this driver to use pins with open
+// drain in GPIO mode. The advantage of the open-drain mode functions over these
+// other functions is that they can be used not only in GPIO mode but also in
+// module mode.
+#if 0
+
+
+void gpio_enable_pin_open_drain(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->odmers = 1 << (pin & 0x1F);
+}
+
+
+void gpio_disable_pin_open_drain(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->odmerc = 1 << (pin & 0x1F);
+}
+
+
+#endif
+
+
+void gpio_enable_pin_pull_up(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puers = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pderc = 1 << (pin & 0x1F);
+#endif
+}
+
+
+void gpio_disable_pin_pull_up(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puerc = 1 << (pin & 0x1F);
+}
+
+#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control.
+
+/*! \brief Enables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_enable_pin_pull_down(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puerc = 1 << (pin & 0x1F);
+ gpio_port->pders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_disable_pin_pull_down(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->pderc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Enables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_enable_pin_buskeeper(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puers = 1 << (pin & 0x1F);
+ gpio_port->pders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_disable_pin_buskeeper(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puerc = 1 << (pin & 0x1F);
+ gpio_port->pderc = 1 << (pin & 0x1F);
+}
+
+#endif
+
+int gpio_get_pin_value(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return (gpio_port->pvr >> (pin & 0x1F)) & 1;
+}
+
+
+int gpio_get_gpio_pin_output_value(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return (gpio_port->ovr >> (pin & 0x1F)) & 1;
+}
+
+
+int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return ((gpio_port->oder >> (pin & 0x1F)) & 1) ^ 1;
+}
+
+
+void gpio_set_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrs = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_clr_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_tgl_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrt = 1 << (pin & 0x1F); // Toggle the I/O line.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_set_gpio_open_drain_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_clr_gpio_open_drain_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_tgl_gpio_open_drain_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line if the GPIO output driver is enabled: 0.
+ gpio_port->odert = 1 << (pin & 0x1F); // The GPIO output driver is toggled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_enable_pin_glitch_filter(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->gfers = 1 << (pin & 0x1F);
+}
+
+
+void gpio_disable_pin_glitch_filter(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->gferc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Configure the edge detector of an input pin
+ *
+ * \param pin The pin number.
+ * \param mode The edge detection mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE
+ * or \ref GPIO_FALLING_EDGE).
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+static int gpio_configure_edge_detector(unsigned int pin, unsigned int mode)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ // Configure the edge detector.
+ switch (mode)
+ {
+ case GPIO_PIN_CHANGE:
+ gpio_port->imr0c = 1 << (pin & 0x1F);
+ gpio_port->imr1c = 1 << (pin & 0x1F);
+ break;
+
+ case GPIO_RISING_EDGE:
+ gpio_port->imr0s = 1 << (pin & 0x1F);
+ gpio_port->imr1c = 1 << (pin & 0x1F);
+ break;
+
+ case GPIO_FALLING_EDGE:
+ gpio_port->imr0c = 1 << (pin & 0x1F);
+ gpio_port->imr1s = 1 << (pin & 0x1F);
+ break;
+
+ default:
+ return GPIO_INVALID_ARGUMENT;
+ }
+
+ return GPIO_SUCCESS;
+}
+
+
+int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ // Enable the glitch filter.
+ gpio_port->gfers = 1 << (pin & 0x1F);
+
+ // Configure the edge detector.
+ if(GPIO_INVALID_ARGUMENT == gpio_configure_edge_detector(pin, mode))
+ return(GPIO_INVALID_ARGUMENT);
+
+ // Enable interrupt.
+ gpio_port->iers = 1 << (pin & 0x1F);
+
+ return GPIO_SUCCESS;
+}
+
+
+void gpio_disable_pin_interrupt(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->ierc = 1 << (pin & 0x1F);
+}
+
+
+int gpio_get_pin_interrupt_flag(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return (gpio_port->ifr >> (pin & 0x1F)) & 1;
+}
+
+
+void gpio_clear_pin_interrupt_flag(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->ifrc = 1 << (pin & 0x1F);
+}
+
+
+//#
+//# Peripheral Event System Support.
+//#
+#if UC3L
+int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ if(TRUE == use_igf)
+ {
+ // Enable the glitch filter.
+ gpio_port->gfers = 1 << (pin & 0x1F);
+ }
+ else
+ {
+ // Disable the glitch filter.
+ gpio_port->gferc = 1 << (pin & 0x1F);
+ }
+
+ // Configure the edge detector.
+ return(gpio_configure_edge_detector(pin, mode));
+}
+
+#endif
+
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h
new file mode 100644
index 0000000..f0b5fd8
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h
@@ -0,0 +1,583 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief GPIO header for AVR32 UC3.
+ *
+ * This file contains basic GPIO driver functions.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a GPIO module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _GPIO_H_
+#define _GPIO_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+/*! \name Return Values of the GPIO API
+ */
+//! @{
+#define GPIO_SUCCESS 0 //!< Function successfully completed.
+#define GPIO_INVALID_ARGUMENT 1 //!< Input parameters are out of range.
+//! @}
+
+
+/*! \name Interrupt Trigger Modes
+ */
+//! @{
+#define GPIO_PIN_CHANGE 0 //!< Interrupt triggered upon pin change.
+#define GPIO_RISING_EDGE 1 //!< Interrupt triggered upon rising edge.
+#define GPIO_FALLING_EDGE 2 //!< Interrupt triggered upon falling edge.
+//! @}
+
+
+//! A type definition of pins and modules connectivity.
+typedef struct
+{
+ unsigned char pin; //!< Module pin.
+ unsigned char function; //!< Module function.
+} gpio_map_t[];
+
+
+/*! \name Peripheral Bus Interface
+ *
+ * Low-speed interface with a non-deterministic number of clock cycles per
+ * access.
+ *
+ * This interface operates with lower clock frequencies (fPB <= fCPU), and its
+ * timing is not deterministic since it needs to access a shared bus which may
+ * be heavily loaded.
+ *
+ * \note This interface is immediately available without initialization.
+ */
+//! @{
+
+/*! \brief Enables specific module modes for a set of pins.
+ *
+ * \param gpiomap The pin map.
+ * \param size The number of pins in \a gpiomap.
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size);
+
+/*! \brief Enables a specific module mode for a pin.
+ *
+ * \param pin The pin number.\n
+ * Refer to the product header file `uc3x.h' (where x is the part
+ * number; e.g. x = a0512) for module pins. E.g., to enable a PWM
+ * channel output, the pin number can be AVR32_PWM_3_PIN for PWM
+ * channel 3.
+ * \param function The pin function.\n
+ * Refer to the product header file `uc3x.h' (where x is the
+ * part number; e.g. x = a0512) for module pin functions. E.g.,
+ * to enable a PWM channel output, the pin function can be
+ * AVR32_PWM_3_FUNCTION for PWM channel 3.
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_enable_module_pin(unsigned int pin, unsigned int function);
+
+/*! \brief Enables the GPIO mode of a set of pins.
+ *
+ * \param gpiomap The pin map.
+ * \param size The number of pins in \a gpiomap.
+ */
+extern void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size);
+
+/*! \brief Enables the GPIO mode of a pin.
+ *
+ * \param pin The pin number.\n
+ * Refer to the product header file `uc3x.h' (where x is the part
+ * number; e.g. x = a0512) for pin definitions. E.g., to enable the
+ * GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as
+ * AVR32_PWM_3_PIN for PWM channel 3 can also be used to release
+ * module pins for GPIO.
+ */
+extern void gpio_enable_gpio_pin(unsigned int pin);
+
+// The open-drain mode is not synthesized on the current AVR32 products.
+// If one day some AVR32 products have this feature, the corresponding part
+// numbers should be listed in the #if below.
+// Note that other functions are available in this driver to use pins with open
+// drain in GPIO mode. The advantage of the open-drain mode functions over these
+// other functions is that they can be used not only in GPIO mode but also in
+// module mode.
+#if 0
+
+/*! \brief Enables the open-drain mode of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_open_drain(unsigned int pin);
+
+/*! \brief Disables the open-drain mode of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_open_drain(unsigned int pin);
+
+#endif
+
+/*! \brief Enables the pull-up resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_pull_up(unsigned int pin);
+
+/*! \brief Disables the pull-up resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_pull_up(unsigned int pin);
+
+#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control.
+
+/*! \brief Enables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_pull_down(unsigned int pin);
+
+/*! \brief Disables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_pull_down(unsigned int pin);
+
+/*! \brief Enables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_buskeeper(unsigned int pin);
+
+/*! \brief Disables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_buskeeper(unsigned int pin);
+
+#endif
+
+/*! \brief Returns the value of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin value.
+ */
+extern int gpio_get_pin_value(unsigned int pin);
+
+/*! \brief Returns the output value set for a GPIO pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin output value.
+ *
+ * \note This function must be used in conjunction with \ref gpio_set_gpio_pin,
+ * \ref gpio_clr_gpio_pin and \ref gpio_tgl_gpio_pin.
+ */
+extern int gpio_get_gpio_pin_output_value(unsigned int pin);
+
+/*! \brief Returns the output value set for a GPIO pin using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin output value.
+ *
+ * \note This function must be used in conjunction with
+ * \ref gpio_set_gpio_open_drain_pin, \ref gpio_clr_gpio_open_drain_pin
+ * and \ref gpio_tgl_gpio_open_drain_pin.
+ */
+extern int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 1.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_set_gpio_pin(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 0.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_clr_gpio_pin(unsigned int pin);
+
+/*! \brief Toggles a GPIO pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_tgl_gpio_pin(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 1 using open drain.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_set_gpio_open_drain_pin(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 0 using open drain.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_clr_gpio_open_drain_pin(unsigned int pin);
+
+/*! \brief Toggles a GPIO pin using open drain.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_tgl_gpio_open_drain_pin(unsigned int pin);
+
+/*! \brief Enables the glitch filter of a pin.
+ *
+ * When the glitch filter is enabled, a glitch with duration of less than 1
+ * clock cycle is automatically rejected, while a pulse with duration of 2 clock
+ * cycles or more is accepted. For pulse durations between 1 clock cycle and 2
+ * clock cycles, the pulse may or may not be taken into account, depending on
+ * the precise timing of its occurrence. Thus for a pulse to be guaranteed
+ * visible it must exceed 2 clock cycles, whereas for a glitch to be reliably
+ * filtered out, its duration must not exceed 1 clock cycle. The filter
+ * introduces 2 clock cycles latency.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_glitch_filter(unsigned int pin);
+
+/*! \brief Disables the glitch filter of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_glitch_filter(unsigned int pin);
+
+/*! \brief Enables the interrupt of a pin with the specified settings.
+ *
+ * \param pin The pin number.
+ * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or
+ * \ref GPIO_FALLING_EDGE).
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode);
+
+/*! \brief Disables the interrupt of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_interrupt(unsigned int pin);
+
+/*! \brief Gets the interrupt flag of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin interrupt flag.
+ */
+extern int gpio_get_pin_interrupt_flag(unsigned int pin);
+
+/*! \brief Clears the interrupt flag of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_clear_pin_interrupt_flag(unsigned int pin);
+
+//! @}
+
+
+#if (defined AVR32_GPIO_LOCAL_ADDRESS)
+/*! \name Local Bus Interface
+ *
+ * High-speed interface with only one clock cycle per access.
+ *
+ * This interface operates with high clock frequency (fCPU), and its timing is
+ * deterministic since it does not need to access a shared bus which may be
+ * heavily loaded.
+ *
+ * \warning To use this interface, the clock frequency of the peripheral bus on
+ * which the GPIO peripheral is connected must be set to the CPU clock
+ * frequency (fPB = fCPU).
+ *
+ * \note This interface has to be initialized in order to be available.
+ */
+//! @{
+
+/*! \brief Enables the local bus interface for GPIO.
+ *
+ * \note This function must have been called at least once before using other
+ * functions in this interface.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_init(void)
+{
+ Set_system_register(AVR32_CPUCR,
+ Get_system_register(AVR32_CPUCR) | AVR32_CPUCR_LOCEN_MASK);
+}
+
+/*! \brief Enables the output driver of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_enable_pin_output_driver(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the output driver of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_disable_pin_output_driver(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Returns the value of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin value.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int gpio_local_get_pin_value(unsigned int pin)
+{
+ return (AVR32_GPIO_LOCAL.port[pin >> 5].pvr >> (pin & 0x1F)) & 1;
+}
+
+/*! \brief Drives a GPIO pin to 1.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin nor its output
+ * driver. \ref gpio_enable_gpio_pin and
+ * \ref gpio_local_enable_pin_output_driver can be called for this
+ * purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_set_gpio_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrs = 1 << (pin & 0x1F);
+}
+
+/*! \brief Drives a GPIO pin to 0.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin nor its output
+ * driver. \ref gpio_enable_gpio_pin and
+ * \ref gpio_local_enable_pin_output_driver can be called for this
+ * purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_clr_gpio_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Toggles a GPIO pin.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin nor its output
+ * driver. \ref gpio_enable_gpio_pin and
+ * \ref gpio_local_enable_pin_output_driver can be called for this
+ * purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_tgl_gpio_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrt = 1 << (pin & 0x1F);
+}
+
+/*! \brief Initializes the configuration of a GPIO pin so that it can be used
+ * with GPIO open-drain functions.
+ *
+ * \note This function must have been called at least once before using
+ * \ref gpio_local_set_gpio_open_drain_pin,
+ * \ref gpio_local_clr_gpio_open_drain_pin or
+ * \ref gpio_local_tgl_gpio_open_drain_pin.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_init_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Drives a GPIO pin to 1 using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must
+ * have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_set_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Drives a GPIO pin to 0 using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must
+ * have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_clr_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Toggles a GPIO pin using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must
+ * have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_tgl_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].odert = 1 << (pin & 0x1F);
+}
+
+//! @}
+#endif // AVR32_GPIO_LOCAL_ADDRESS
+
+#if UC3L
+//! @{
+/*! \name Peripheral Event System support
+ *
+ * The GPIO can be programmed to output peripheral events whenever an interrupt
+ * condition is detected, such as pin value change, or only when a rising or
+ * falling edge is detected.
+ *
+ */
+
+/*! \brief Enables the peripheral event generation of a pin.
+ *
+ * \param pin The pin number.
+ *
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_enable_pin_periph_event(unsigned int pin)
+{
+ AVR32_GPIO.port[pin >> 5].oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin.
+ AVR32_GPIO.port[pin >> 5].evers = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the peripheral event generation of a pin.
+ *
+ * \param pin The pin number.
+ *
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_disable_pin_periph_event(unsigned int pin)
+{
+ AVR32_GPIO.port[pin >> 5].everc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Configure the peripheral event trigger mode of a pin
+ *
+ * \param pin The pin number.
+ * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or
+ * \ref GPIO_FALLING_EDGE).
+ * \param use_igf use the Input Glitch Filter (TRUE) or not (FALSE).
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf);
+
+//! @}
+#endif
+
+
+#endif // _GPIO_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x
new file mode 100644
index 0000000..ec4109d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x
@@ -0,0 +1,239 @@
+/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Exception and interrupt vectors.
+ *
+ * This file maps all events supported by an AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an INTC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#if !__AVR32_UC__ && !__AVR32_AP__
+ #error Implementation of the AVR32 architecture not supported by the INTC driver.
+#endif
+
+
+#include <avr32/io.h>
+
+
+//! @{
+//! \verbatim
+
+
+ .section .exception, "ax", @progbits
+
+
+// Start of Exception Vector Table.
+
+ // EVBA must be aligned with a power of two strictly greater than the EVBA-
+ // relative offset of the last vector.
+ .balign 0x200
+
+ // Export symbol.
+ .global _evba
+ .type _evba, @function
+_evba:
+
+ .org 0x000
+ // Unrecoverable Exception.
+_handle_Unrecoverable_Exception:
+ rjmp $
+
+ .org 0x004
+ // TLB Multiple Hit.
+_handle_TLB_Multiple_Hit:
+ rjmp $
+
+ .org 0x008
+ // Bus Error Data Fetch.
+_handle_Bus_Error_Data_Fetch:
+ rjmp $
+
+ .org 0x00C
+ // Bus Error Instruction Fetch.
+_handle_Bus_Error_Instruction_Fetch:
+ rjmp $
+
+ .org 0x010
+ // NMI.
+_handle_NMI:
+ rjmp $
+
+ .org 0x014
+ // Instruction Address.
+_handle_Instruction_Address:
+ rjmp $
+
+ .org 0x018
+ // ITLB Protection.
+_handle_ITLB_Protection:
+ rjmp $
+
+ .org 0x01C
+ // Breakpoint.
+_handle_Breakpoint:
+ rjmp $
+
+ .org 0x020
+ // Illegal Opcode.
+_handle_Illegal_Opcode:
+ rjmp $
+
+ .org 0x024
+ // Unimplemented Instruction.
+_handle_Unimplemented_Instruction:
+ rjmp $
+
+ .org 0x028
+ // Privilege Violation.
+_handle_Privilege_Violation:
+ rjmp $
+
+ .org 0x02C
+ // Floating-Point: UNUSED IN AVR32UC and AVR32AP.
+_handle_Floating_Point:
+ rjmp $
+
+ .org 0x030
+ // Coprocessor Absent: UNUSED IN AVR32UC.
+_handle_Coprocessor_Absent:
+ rjmp $
+
+ .org 0x034
+ // Data Address (Read).
+_handle_Data_Address_Read:
+ rjmp $
+
+ .org 0x038
+ // Data Address (Write).
+_handle_Data_Address_Write:
+ rjmp $
+
+ .org 0x03C
+ // DTLB Protection (Read).
+_handle_DTLB_Protection_Read:
+ rjmp $
+
+ .org 0x040
+ // DTLB Protection (Write).
+_handle_DTLB_Protection_Write:
+ rjmp $
+
+ .org 0x044
+ // DTLB Modified: UNUSED IN AVR32UC.
+_handle_DTLB_Modified:
+ rjmp $
+
+ .org 0x050
+ // ITLB Miss.
+_handle_ITLB_Miss:
+ rjmp $
+
+ .org 0x060
+ // DTLB Miss (Read).
+_handle_DTLB_Miss_Read:
+ rjmp $
+
+ .org 0x070
+ // DTLB Miss (Write).
+_handle_DTLB_Miss_Write:
+ rjmp $
+
+ .org 0x100
+ // Supervisor Call.
+_handle_Supervisor_Call:
+ rjmp $
+
+
+// Interrupt support.
+// The interrupt controller must provide the offset address relative to EVBA.
+// Important note:
+// All interrupts call a C function named _get_interrupt_handler.
+// This function will read group and interrupt line number to then return in
+// R12 a pointer to a user-provided interrupt handler.
+
+ .balign 4
+
+ .irp priority, 0, 1, 2, 3
+_int\priority:
+#if __AVR32_UC__
+ // R8-R12, LR, PC and SR are automatically pushed onto the system stack by the
+ // CPU upon interrupt entry. No other register is saved by hardware.
+#elif __AVR32_AP__
+ // PC and SR are automatically saved in respectively RAR_INTx and RSR_INTx by
+ // the CPU upon interrupt entry. No other register is saved by hardware.
+ pushm r8-r12, lr
+#endif
+ mov r12, \priority // Pass the int_level parameter to the _get_interrupt_handler function.
+ call _get_interrupt_handler
+ cp.w r12, 0 // Get the pointer to the interrupt handler returned by the function.
+#if __AVR32_UC__
+ movne pc, r12 // If this was not a spurious interrupt (R12 != NULL), jump to the handler.
+#elif __AVR32_AP__
+ breq spint\priority // If this was a spurious interrupt (R12 == NULL), branch.
+ st.w --sp, r12 // Push the pointer to the interrupt handler onto the system stack since no register may be altered.
+ popm r8-r12, lr, pc // Restore registers and jump to the handler.
+spint\priority:
+ popm r8-r12, lr
+#endif
+ rete // If this was a spurious interrupt (R12 == NULL), return from event handler.
+ .endr
+
+
+// Constant data area.
+
+ .balign 4
+
+ // Values to store in the interrupt priority registers for the various interrupt priority levels.
+ // The interrupt priority registers contain the interrupt priority level and
+ // the EVBA-relative interrupt vector offset.
+ .global ipr_val
+ .type ipr_val, @object
+ipr_val:
+ .word (AVR32_INTC_INT0 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int0 - _evba),\
+ (AVR32_INTC_INT1 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int1 - _evba),\
+ (AVR32_INTC_INT2 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int2 - _evba),\
+ (AVR32_INTC_INT3 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int3 - _evba)
+
+
+//! \endverbatim
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c
new file mode 100644
index 0000000..84d498d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c
@@ -0,0 +1,214 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief INTC driver for AVR32 UC3.
+ *
+ * AVR32 Interrupt Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an INTC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "compiler.h"
+#include "preprocessor.h"
+#include "intc.h"
+
+// define _evba from exception.S
+extern void _evba;
+
+//! Values to store in the interrupt priority registers for the various interrupt priority levels.
+extern const unsigned int ipr_val[AVR32_INTC_NUM_INT_LEVELS];
+
+//! Creates a table of interrupt line handlers per interrupt group in order to optimize RAM space.
+//! Each line handler table contains a set of pointers to interrupt handlers.
+#if (defined __GNUC__)
+#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \
+static volatile __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)];
+#elif (defined __ICCAVR32__)
+#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \
+static volatile __no_init __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)];
+#endif
+MREPEAT(AVR32_INTC_NUM_INT_GRPS, DECL_INT_LINE_HANDLER_TABLE, ~);
+#undef DECL_INT_LINE_HANDLER_TABLE
+
+//! Table containing for each interrupt group the number of interrupt request
+//! lines and a pointer to the table of interrupt line handlers.
+static const struct
+{
+ unsigned int num_irqs;
+ volatile __int_handler *_int_line_handler_table;
+} _int_handler_table[AVR32_INTC_NUM_INT_GRPS] =
+{
+#define INSERT_INT_LINE_HANDLER_TABLE(GRP, unused) \
+ {AVR32_INTC_NUM_IRQS_PER_GRP##GRP, _int_line_handler_table_##GRP},
+ MREPEAT(AVR32_INTC_NUM_INT_GRPS, INSERT_INT_LINE_HANDLER_TABLE, ~)
+#undef INSERT_INT_LINE_HANDLER_TABLE
+};
+
+
+/*! \brief Default interrupt handler.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+#if (defined __GNUC__)
+__attribute__((__interrupt__))
+#elif (defined __ICCAVR32__)
+__interrupt
+#endif
+static void _unhandled_interrupt(void)
+{
+ // Catch unregistered interrupts.
+ while (TRUE);
+}
+
+
+/*! \brief Gets the interrupt handler of the current event at the \a int_level
+ * interrupt priority level (called from exception.S).
+ *
+ * \param int_level Interrupt priority level to handle.
+ *
+ * \return Interrupt handler to execute.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+__int_handler _get_interrupt_handler(unsigned int int_level)
+{
+ // ICR3 is mapped first, ICR0 last.
+ // Code in exception.S puts int_level in R12 which is used by AVR32-GCC to
+ // pass a single argument to a function.
+ unsigned int int_grp = AVR32_INTC.icr[AVR32_INTC_INT3 - int_level];
+ unsigned int int_req = AVR32_INTC.irr[int_grp];
+
+ // As an interrupt may disappear while it is being fetched by the CPU
+ // (spurious interrupt caused by a delayed response from an MCU peripheral to
+ // an interrupt flag clear or interrupt disable instruction), check if there
+ // are remaining interrupt lines to process.
+ // If a spurious interrupt occurs, the status register (SR) contains an
+ // execution mode and interrupt level masks corresponding to a level 0
+ // interrupt, whatever the interrupt priority level causing the spurious
+ // event. This behavior has been chosen because a spurious interrupt has not
+ // to be a priority one and because it may not cause any trouble to other
+ // interrupts.
+ // However, these spurious interrupts place the hardware in an unstable state
+ // and could give problems in other/future versions of the CPU, so the
+ // software has to be written so that they never occur. The only safe way of
+ // achieving this is to always clear or disable peripheral interrupts with the
+ // following sequence:
+ // 1: Mask the interrupt in the CPU by setting GM (or IxM) in SR.
+ // 2: Perform the bus access to the peripheral register that clears or
+ // disables the interrupt.
+ // 3: Wait until the interrupt has actually been cleared or disabled by the
+ // peripheral. This is usually performed by reading from a register in the
+ // same peripheral (it DOES NOT have to be the same register that was
+ // accessed in step 2, but it MUST be in the same peripheral), what takes
+ // bus system latencies into account, but peripheral internal latencies
+ // (generally 0 cycle) also have to be considered.
+ // 4: Unmask the interrupt in the CPU by clearing GM (or IxM) in SR.
+ // Note that steps 1 and 4 are useless inside interrupt handlers as the
+ // corresponding interrupt level is automatically masked by IxM (unless IxM is
+ // explicitly cleared by the software).
+ //
+ // Get the right IRQ handler.
+ //
+ // If several interrupt lines are active in the group, the interrupt line with
+ // the highest number is selected. This is to be coherent with the
+ // prioritization of interrupt groups performed by the hardware interrupt
+ // controller.
+ //
+ // If no handler has been registered for the pending interrupt,
+ // _unhandled_interrupt will be selected thanks to the initialization of
+ // _int_line_handler_table_x by INTC_init_interrupts.
+ //
+ // exception.S will provide the interrupt handler with a clean interrupt stack
+ // frame, with nothing more pushed onto the stack. The interrupt handler must
+ // manage the `rete' instruction, what can be done thanks to pure assembly,
+ // inline assembly or the `__attribute__((__interrupt__))' C function
+ // attribute.
+ return (int_req) ? _int_handler_table[int_grp]._int_line_handler_table[32 - clz(int_req) - 1] : NULL;
+}
+
+//! Init EVBA address. This sequence might also be done in the UTILS/STARTUP/GCC/crt0.S
+static __inline__ void INTC_init_evba(void)
+{
+ Set_system_register(AVR32_EVBA, (int)&_evba );
+}
+
+void INTC_init_interrupts(void)
+{
+ unsigned int int_grp, int_req;
+
+ INTC_init_evba();
+
+ // For all interrupt groups,
+ for (int_grp = 0; int_grp < AVR32_INTC_NUM_INT_GRPS; int_grp++)
+ {
+ // For all interrupt request lines of each group,
+ for (int_req = 0; int_req < _int_handler_table[int_grp].num_irqs; int_req++)
+ {
+ // Assign _unhandled_interrupt as default interrupt handler.
+ _int_handler_table[int_grp]._int_line_handler_table[int_req] = &_unhandled_interrupt;
+ }
+
+ // Set the interrupt group priority register to its default value.
+ // By default, all interrupt groups are linked to the interrupt priority
+ // level 0 and to the interrupt vector _int0.
+ AVR32_INTC.ipr[int_grp] = ipr_val[AVR32_INTC_INT0];
+ }
+}
+
+
+void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level)
+{
+ // Determine the group of the IRQ.
+ unsigned int int_grp = irq / AVR32_INTC_MAX_NUM_IRQS_PER_GRP;
+
+ // Store in _int_line_handler_table_x the pointer to the interrupt handler, so
+ // that _get_interrupt_handler can retrieve it when the interrupt is vectored.
+ _int_handler_table[int_grp]._int_line_handler_table[irq % AVR32_INTC_MAX_NUM_IRQS_PER_GRP] = handler;
+
+ // Program the corresponding IPRX register to set the interrupt priority level
+ // and the interrupt vector offset that will be fetched by the core interrupt
+ // system.
+ // NOTE: The _intx functions are intermediate assembly functions between the
+ // core interrupt system and the user interrupt handler.
+ AVR32_INTC.ipr[int_grp] = ipr_val[int_level & (AVR32_INTC_IPR_INTLEVEL_MASK >> AVR32_INTC_IPR_INTLEVEL_OFFSET)];
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h
new file mode 100644
index 0000000..31a4fc1
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h
@@ -0,0 +1,100 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief INTC driver for AVR32 UC3.
+ *
+ * AVR32 Interrupt Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an INTC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _INTC_H_
+#define _INTC_H_
+
+#include "compiler.h"
+
+
+//! Maximal number of interrupt request lines per group.
+#define AVR32_INTC_MAX_NUM_IRQS_PER_GRP 32
+
+//! Number of interrupt priority levels.
+#define AVR32_INTC_NUM_INT_LEVELS (1 << AVR32_INTC_IPR_INTLEVEL_SIZE)
+
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+//! Pointer to interrupt handler.
+#if (defined __GNUC__)
+typedef void (*__int_handler)(void);
+#elif (defined __ICCAVR32__)
+typedef void (__interrupt *__int_handler)(void);
+#endif
+
+
+/*! \brief Initializes the hardware interrupt controller driver.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+extern void INTC_init_interrupts(void);
+
+/*! \brief Registers an interrupt handler.
+ *
+ * \param handler Interrupt handler to register.
+ * \param irq IRQ of the interrupt handler to register.
+ * \param int_level Interrupt priority level to assign to the group of this IRQ.
+ *
+ * \warning The interrupt handler must manage the `rete' instruction, what can
+ * be done thanks to pure assembly, inline assembly or the
+ * `__attribute__((__interrupt__))' C function attribute.
+ *
+ * \warning If several interrupt handlers of a same group are registered with
+ * different priority levels, only the latest priority level set will
+ * be effective.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+extern void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level);
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+#endif // _INTC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c
new file mode 100644
index 0000000..6c00f9e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c
@@ -0,0 +1,296 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief PDCA driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the PDCA interface on AVR32
+ * devices.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a PDCA module.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "pdca.h"
+
+
+volatile avr32_pdca_channel_t *pdca_get_handler(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = &AVR32_PDCA.channel[pdca_ch_number];
+
+ if (pdca_ch_number >= AVR32_PDCA_CHANNEL_LENGTH)
+ return (volatile avr32_pdca_channel_t *)PDCA_INVALID_ARGUMENT;
+
+ return pdca_channel;
+}
+
+
+int pdca_init_channel(unsigned int pdca_ch_number, const pdca_channel_options_t *opt)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_disable_interrupt_transfer_complete(pdca_ch_number); // disable channel interrupt
+ pdca_disable_interrupt_reload_counter_zero(pdca_ch_number); // disable channel interrupt
+
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ pdca_channel->mar = (unsigned long)opt->addr;
+ pdca_channel->tcr = opt->size;
+ pdca_channel->psr = opt->pid;
+ pdca_channel->marr = (unsigned long)opt->r_addr;
+ pdca_channel->tcrr = opt->r_size;
+ pdca_channel->mr =
+#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED )
+opt->etrig << AVR32_PDCA_ETRIG_OFFSET |
+#endif // #ifdef AVR32_PDCA_120_H_INCLUDED
+ opt->transfer_size << AVR32_PDCA_SIZE_OFFSET;
+ pdca_channel->cr = AVR32_PDCA_ECLR_MASK;
+ pdca_channel->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+
+ return PDCA_SUCCESS;
+}
+
+
+unsigned int pdca_get_channel_status(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ return (pdca_channel->sr & AVR32_PDCA_TEN_MASK) != 0;
+}
+
+
+void pdca_disable(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ // Disable transfer
+ pdca_channel->cr = AVR32_PDCA_TDIS_MASK;
+
+}
+
+
+void pdca_enable(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ // Enable transfer
+ pdca_channel->cr = AVR32_PDCA_TEN_MASK;
+}
+
+
+unsigned int pdca_get_load_size(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ return pdca_channel->tcr;
+}
+
+
+void pdca_load_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ pdca_channel->mar = (unsigned long)addr;
+ pdca_channel->tcr = size;
+ pdca_channel->cr = AVR32_PDCA_ECLR_MASK;
+ pdca_channel->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+unsigned int pdca_get_reload_size(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ return pdca_channel->tcrr;
+}
+
+
+void pdca_reload_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ // set up next memory address
+ pdca_channel->marr = (unsigned long)addr;
+ // set up next memory size
+ pdca_channel->tcrr = size;
+ pdca_channel->cr = AVR32_PDCA_ECLR_MASK;
+ pdca_channel->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void pdca_set_peripheral_select(unsigned int pdca_ch_number, unsigned int pid)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_channel->psr = pid;
+}
+
+
+void pdca_set_transfer_size(unsigned int pdca_ch_number, unsigned int transfer_size)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_channel->mr = (pdca_channel->mr & ~AVR32_PDCA_SIZE_MASK) |
+ transfer_size << AVR32_PDCA_SIZE_OFFSET;
+}
+
+
+#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED )
+
+
+void pdca_disable_event_trigger(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_channel->mr &= ~AVR32_PDCA_ETRIG_MASK;
+}
+
+
+void pdca_enable_event_trigger(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_channel->mr |= AVR32_PDCA_ETRIG_MASK;
+}
+
+
+#endif // #ifdef AVR32_PDCA_120_H_INCLUDED
+
+
+void pdca_disable_interrupt_transfer_error(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ pdca_channel->idr = AVR32_PDCA_TERR_MASK;
+ pdca_channel->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void pdca_enable_interrupt_transfer_error(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_channel->ier = AVR32_PDCA_TERR_MASK;
+}
+
+
+void pdca_disable_interrupt_transfer_complete(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ pdca_channel->idr = AVR32_PDCA_TRC_MASK;
+ pdca_channel->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void pdca_enable_interrupt_transfer_complete(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_channel->ier = AVR32_PDCA_TRC_MASK;
+}
+
+
+void pdca_disable_interrupt_reload_counter_zero(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ pdca_channel->idr = AVR32_PDCA_RCZ_MASK;
+ pdca_channel->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void pdca_enable_interrupt_reload_counter_zero(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ pdca_channel->ier = AVR32_PDCA_RCZ_MASK;
+}
+
+
+unsigned long pdca_get_transfer_status(unsigned int pdca_ch_number)
+{
+ // get the correct channel pointer
+ volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number);
+
+ return pdca_channel->isr;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h
new file mode 100644
index 0000000..5668fe9
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h
@@ -0,0 +1,251 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief PDCA driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the PDCA interface on AVR32
+ * devices.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a PDCA module.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _PDCA_H_
+#define _PDCA_H_
+
+#include <avr32/io.h>
+
+
+//! Size of PDCA transfer: byte.
+#define PDCA_TRANSFER_SIZE_BYTE AVR32_PDCA_BYTE
+
+//! Size of PDCA transfer: half-word.
+#define PDCA_TRANSFER_SIZE_HALF_WORD AVR32_PDCA_HALF_WORD
+
+//! Size of PDCA transfer: word.
+#define PDCA_TRANSFER_SIZE_WORD AVR32_PDCA_WORD
+
+/*! \name PDCA Driver Status Codes
+ */
+//! @{
+#define PDCA_SUCCESS 0
+#define PDCA_INVALID_ARGUMENT -1
+//! @}
+
+/*! \name PDCA Transfer Status Codes
+ */
+//! @{
+#define PDCA_TRANSFER_ERROR AVR32_PDCA_TERR_MASK
+#define PDCA_TRANSFER_COMPLETE AVR32_PDCA_TRC_MASK
+#define PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO AVR32_PDCA_RCZ_MASK
+//! @}
+
+
+//! PDCA channel options.
+typedef struct
+{
+ //! Memory address.
+ volatile void *addr ;
+ //! Transfer counter.
+ unsigned int size ;
+ //! Next memory address.
+ volatile void *r_addr ;
+ //! Next transfer counter.
+ unsigned int r_size ;
+ //! Select peripheral ID.
+ unsigned int pid ;
+ //! Select the size of the transfer (byte, half-word or word).
+ unsigned int transfer_size ;
+#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED )
+// Note: the options in this preprocessor section are only available from the PDCA IP version 1.2.0 on.
+ //! Enable (\c 1) or disable (\c 0) the transfer upon event trigger.
+ unsigned char etrig ;
+#endif // #ifdef AVR32_PDCA_120_H_INCLUDED
+} pdca_channel_options_t;
+
+
+/*! \brief Get PDCA channel handler
+ *
+ * \param pdca_ch_number PDCA channel
+ *
+ * \return channel handled or PDCA_INVALID_ARGUMENT
+ */
+extern volatile avr32_pdca_channel_t *pdca_get_handler(unsigned int pdca_ch_number);
+
+/*! \brief Set the channel configuration
+ *
+ * \param pdca_ch_number PDCA channel
+ * \param opt channel option
+ */
+extern int pdca_init_channel(unsigned int pdca_ch_number, const pdca_channel_options_t *opt);
+
+/*! \brief Get the PDCA channel transfer enable status
+ *
+ * \param pdca_ch_number PDCA channel
+ *
+ * \return \c 1 if channel transfer is enabled, else \c 0
+ */
+extern unsigned int pdca_get_channel_status(unsigned int pdca_ch_number);
+
+/*! \brief Disable the PDCA for the given channel
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_disable(unsigned int pdca_ch_number);
+
+/*! \brief Enable the PDCA for the given channel
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_enable(unsigned int pdca_ch_number);
+
+/*! \brief Get PDCA channel load size (or remaining size if transfer started)
+ *
+ * \param pdca_ch_number PDCA channel
+ *
+ * \return size current size to transfer
+ */
+extern unsigned int pdca_get_load_size(unsigned int pdca_ch_number);
+
+/*! \brief Set PDCA channel load values
+ *
+ * \param pdca_ch_number PDCA channel
+ * \param addr address where data to load are stored
+ * \param size size of the data block to load
+ */
+extern void pdca_load_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size);
+
+/*! \brief Get PDCA channel reload size
+ *
+ * \param pdca_ch_number PDCA channel
+ *
+ * \return size current reload size
+ */
+extern unsigned int pdca_get_reload_size(unsigned int pdca_ch_number);
+
+/*! \brief Set PDCA channel reload values
+ *
+ * \param pdca_ch_number PDCA channel
+ * \param addr address where data to load are stored
+ * \param size size of the data block to load
+ */
+extern void pdca_reload_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size);
+
+/*! \brief Set the peripheral function to use with the PDCA channel
+ *
+ * \param pdca_ch_number PDCA channel
+ * \param pid the peripheral ID
+ */
+extern void pdca_set_peripheral_select(unsigned int pdca_ch_number, unsigned int pid);
+
+/*! \brief Set the size of the transfer
+ *
+ * \param pdca_ch_number PDCA channel
+ * \param transfer_size size of the transfer (byte, half-word or word)
+ */
+extern void pdca_set_transfer_size(unsigned int pdca_ch_number, unsigned int transfer_size);
+
+#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED )
+// Note: the functions in this preprocessor section are only available from the PDCA IP version 1.2.0 on.
+
+/*! \brief Disable the event-triggered transfer feature
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_disable_event_trigger(unsigned int pdca_ch_number);
+
+/*! \brief Enable the event-triggered transfer feature
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_enable_event_trigger(unsigned int pdca_ch_number);
+
+#endif // #ifdef AVR32_PDCA_120_H_INCLUDED
+
+/*! \brief Disable PDCA transfer error interrupt
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_disable_interrupt_transfer_error(unsigned int pdca_ch_number);
+
+/*! \brief Enable PDCA transfer error interrupt
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_enable_interrupt_transfer_error(unsigned int pdca_ch_number);
+
+/*! \brief Disable PDCA transfer interrupt when completed (ie TCR and TCRR are both zero)
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_disable_interrupt_transfer_complete(unsigned int pdca_ch_number);
+
+/*! \brief Enable PDCA transfer interrupt when completed (ie TCR and TCRR are both zero)
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_enable_interrupt_transfer_complete(unsigned int pdca_ch_number);
+
+/*! \brief Disable PDCA transfer interrupt when TCRR reaches zero
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_disable_interrupt_reload_counter_zero(unsigned int pdca_ch_number);
+
+/*! \brief Enable PDCA transfer interrupt when TCRR reaches zero
+ *
+ * \param pdca_ch_number PDCA channel
+ */
+extern void pdca_enable_interrupt_reload_counter_zero(unsigned int pdca_ch_number);
+
+/*! \brief Get PDCA channel transfer status
+ *
+ * \param pdca_ch_number PDCA channel
+ *
+ * \return PDCA transfer status with the following bit-masks:\n
+ * - \c PDCA_TRANSFER_ERROR;\n
+ * - \c PDCA_TRANSFER_COMPLETE;\n
+ * - \c PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO.
+ */
+extern unsigned long pdca_get_transfer_status(unsigned int pdca_ch_number);
+
+
+#endif // _PDCA_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c
new file mode 100644
index 0000000..76d9268
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c
@@ -0,0 +1,546 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Power Manager driver.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "pm.h"
+
+
+/*! \name PM Writable Bit-Field Registers
+ */
+//! @{
+
+typedef union
+{
+ unsigned long mcctrl;
+ avr32_pm_mcctrl_t MCCTRL;
+} u_avr32_pm_mcctrl_t;
+
+typedef union
+{
+ unsigned long cksel;
+ avr32_pm_cksel_t CKSEL;
+} u_avr32_pm_cksel_t;
+
+typedef union
+{
+ unsigned long pll;
+ avr32_pm_pll_t PLL;
+} u_avr32_pm_pll_t;
+
+typedef union
+{
+ unsigned long oscctrl0;
+ avr32_pm_oscctrl0_t OSCCTRL0;
+} u_avr32_pm_oscctrl0_t;
+
+typedef union
+{
+ unsigned long oscctrl1;
+ avr32_pm_oscctrl1_t OSCCTRL1;
+} u_avr32_pm_oscctrl1_t;
+
+typedef union
+{
+ unsigned long oscctrl32;
+ avr32_pm_oscctrl32_t OSCCTRL32;
+} u_avr32_pm_oscctrl32_t;
+
+typedef union
+{
+ unsigned long ier;
+ avr32_pm_ier_t IER;
+} u_avr32_pm_ier_t;
+
+typedef union
+{
+ unsigned long idr;
+ avr32_pm_idr_t IDR;
+} u_avr32_pm_idr_t;
+
+typedef union
+{
+ unsigned long icr;
+ avr32_pm_icr_t ICR;
+} u_avr32_pm_icr_t;
+
+typedef union
+{
+ unsigned long gcctrl;
+ avr32_pm_gcctrl_t GCCTRL;
+} u_avr32_pm_gcctrl_t;
+
+typedef union
+{
+ unsigned long rccr;
+ avr32_pm_rccr_t RCCR;
+} u_avr32_pm_rccr_t;
+
+typedef union
+{
+ unsigned long bgcr;
+ avr32_pm_bgcr_t BGCR;
+} u_avr32_pm_bgcr_t;
+
+typedef union
+{
+ unsigned long vregcr;
+ avr32_pm_vregcr_t VREGCR;
+} u_avr32_pm_vregcr_t;
+
+typedef union
+{
+ unsigned long bod;
+ avr32_pm_bod_t BOD;
+} u_avr32_pm_bod_t;
+
+//! @}
+
+
+/*! \brief Sets the mode of the oscillator 0.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ * \param mode Oscillator 0 mode (i.e. AVR32_PM_OSCCTRL0_MODE_x).
+ */
+static void pm_set_osc0_mode(volatile avr32_pm_t *pm, unsigned int mode)
+{
+ // Read
+ u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0};
+ // Modify
+ u_avr32_pm_oscctrl0.OSCCTRL0.mode = mode;
+ // Write
+ pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0;
+}
+
+
+void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm)
+{
+ pm_set_osc0_mode(pm, AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK);
+}
+
+
+void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0)
+{
+ pm_set_osc0_mode(pm, (fosc0 < 900000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G0 :
+ (fosc0 < 3000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G1 :
+ (fosc0 < 8000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G2 :
+ AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G3);
+}
+
+
+void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ pm_enable_clk0_no_wait(pm, startup);
+ pm_wait_for_clk0_ready(pm);
+}
+
+
+void pm_disable_clk0(volatile avr32_pm_t *pm)
+{
+ pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC0EN_MASK;
+}
+
+
+void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ // Read register
+ u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0};
+ // Modify
+ u_avr32_pm_oscctrl0.OSCCTRL0.startup = startup;
+ // Write back
+ pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0;
+
+ pm->mcctrl |= AVR32_PM_MCCTRL_OSC0EN_MASK;
+}
+
+
+void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK));
+}
+
+
+/*! \brief Sets the mode of the oscillator 1.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ * \param mode Oscillator 1 mode (i.e. AVR32_PM_OSCCTRL1_MODE_x).
+ */
+static void pm_set_osc1_mode(volatile avr32_pm_t *pm, unsigned int mode)
+{
+ // Read
+ u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1};
+ // Modify
+ u_avr32_pm_oscctrl1.OSCCTRL1.mode = mode;
+ // Write
+ pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1;
+}
+
+
+void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm)
+{
+ pm_set_osc1_mode(pm, AVR32_PM_OSCCTRL1_MODE_EXT_CLOCK);
+}
+
+
+void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1)
+{
+ pm_set_osc1_mode(pm, (fosc1 < 900000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G0 :
+ (fosc1 < 3000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G1 :
+ (fosc1 < 8000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G2 :
+ AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G3);
+}
+
+
+void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ pm_enable_clk1_no_wait(pm, startup);
+ pm_wait_for_clk1_ready(pm);
+}
+
+
+void pm_disable_clk1(volatile avr32_pm_t *pm)
+{
+ pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC1EN_MASK;
+}
+
+
+void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ // Read register
+ u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1};
+ // Modify
+ u_avr32_pm_oscctrl1.OSCCTRL1.startup = startup;
+ // Write back
+ pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1;
+
+ pm->mcctrl |= AVR32_PM_MCCTRL_OSC1EN_MASK;
+}
+
+
+void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_OSC1RDY_MASK));
+}
+
+
+/*! \brief Sets the mode of the 32-kHz oscillator.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ * \param mode 32-kHz oscillator mode (i.e. AVR32_PM_OSCCTRL32_MODE_x).
+ */
+static void pm_set_osc32_mode(volatile avr32_pm_t *pm, unsigned int mode)
+{
+ // Read
+ u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32};
+ // Modify
+ u_avr32_pm_oscctrl32.OSCCTRL32.mode = mode;
+ // Write
+ pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32;
+}
+
+
+void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm)
+{
+ pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_EXT_CLOCK);
+}
+
+
+void pm_enable_osc32_crystal(volatile avr32_pm_t *pm)
+{
+ pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_CRYSTAL);
+}
+
+
+void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ pm_enable_clk32_no_wait(pm, startup);
+ pm_wait_for_clk32_ready(pm);
+}
+
+
+void pm_disable_clk32(volatile avr32_pm_t *pm)
+{
+ pm->oscctrl32 &= ~AVR32_PM_OSCCTRL32_OSC32EN_MASK;
+}
+
+
+void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ // Read register
+ u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32};
+ // Modify
+ u_avr32_pm_oscctrl32.OSCCTRL32.osc32en = 1;
+ u_avr32_pm_oscctrl32.OSCCTRL32.startup = startup;
+ // Write back
+ pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32;
+}
+
+
+void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_OSC32RDY_MASK));
+}
+
+
+void pm_cksel(volatile avr32_pm_t *pm,
+ unsigned int pbadiv,
+ unsigned int pbasel,
+ unsigned int pbbdiv,
+ unsigned int pbbsel,
+ unsigned int hsbdiv,
+ unsigned int hsbsel)
+{
+ u_avr32_pm_cksel_t u_avr32_pm_cksel = {0};
+
+ u_avr32_pm_cksel.CKSEL.cpusel = hsbsel;
+ u_avr32_pm_cksel.CKSEL.cpudiv = hsbdiv;
+ u_avr32_pm_cksel.CKSEL.hsbsel = hsbsel;
+ u_avr32_pm_cksel.CKSEL.hsbdiv = hsbdiv;
+ u_avr32_pm_cksel.CKSEL.pbasel = pbasel;
+ u_avr32_pm_cksel.CKSEL.pbadiv = pbadiv;
+ u_avr32_pm_cksel.CKSEL.pbbsel = pbbsel;
+ u_avr32_pm_cksel.CKSEL.pbbdiv = pbbdiv;
+
+ pm->cksel = u_avr32_pm_cksel.cksel;
+
+ // Wait for ckrdy bit and then clear it
+ while (!(pm->poscsr & AVR32_PM_POSCSR_CKRDY_MASK));
+}
+
+
+void pm_gc_setup(volatile avr32_pm_t *pm,
+ unsigned int gc,
+ unsigned int osc_or_pll, // Use Osc (=0) or PLL (=1)
+ unsigned int pll_osc, // Sel Osc0/PLL0 or Osc1/PLL1
+ unsigned int diven,
+ unsigned int div)
+{
+ u_avr32_pm_gcctrl_t u_avr32_pm_gcctrl = {0};
+
+ u_avr32_pm_gcctrl.GCCTRL.oscsel = pll_osc;
+ u_avr32_pm_gcctrl.GCCTRL.pllsel = osc_or_pll;
+ u_avr32_pm_gcctrl.GCCTRL.diven = diven;
+ u_avr32_pm_gcctrl.GCCTRL.div = div;
+
+ pm->gcctrl[gc] = u_avr32_pm_gcctrl.gcctrl;
+}
+
+
+void pm_gc_enable(volatile avr32_pm_t *pm,
+ unsigned int gc)
+{
+ pm->gcctrl[gc] |= AVR32_PM_GCCTRL_CEN_MASK;
+}
+
+
+void pm_gc_disable(volatile avr32_pm_t *pm,
+ unsigned int gc)
+{
+ pm->gcctrl[gc] &= ~AVR32_PM_GCCTRL_CEN_MASK;
+}
+
+
+void pm_pll_setup(volatile avr32_pm_t *pm,
+ unsigned int pll,
+ unsigned int mul,
+ unsigned int div,
+ unsigned int osc,
+ unsigned int lockcount)
+{
+ u_avr32_pm_pll_t u_avr32_pm_pll = {0};
+
+ u_avr32_pm_pll.PLL.pllosc = osc;
+ u_avr32_pm_pll.PLL.plldiv = div;
+ u_avr32_pm_pll.PLL.pllmul = mul;
+ u_avr32_pm_pll.PLL.pllcount = lockcount;
+
+ pm->pll[pll] = u_avr32_pm_pll.pll;
+}
+
+
+void pm_pll_set_option(volatile avr32_pm_t *pm,
+ unsigned int pll,
+ unsigned int pll_freq,
+ unsigned int pll_div2,
+ unsigned int pll_wbwdisable)
+{
+ u_avr32_pm_pll_t u_avr32_pm_pll = {pm->pll[pll]};
+ u_avr32_pm_pll.PLL.pllopt = pll_freq | (pll_div2 << 1) | (pll_wbwdisable << 2);
+ pm->pll[pll] = u_avr32_pm_pll.pll;
+}
+
+
+unsigned int pm_pll_get_option(volatile avr32_pm_t *pm,
+ unsigned int pll)
+{
+ return (pm->pll[pll] & AVR32_PM_PLLOPT_MASK) >> AVR32_PM_PLLOPT_OFFSET;
+}
+
+
+void pm_pll_enable(volatile avr32_pm_t *pm,
+ unsigned int pll)
+{
+ pm->pll[pll] |= AVR32_PM_PLLEN_MASK;
+}
+
+
+void pm_pll_disable(volatile avr32_pm_t *pm,
+ unsigned int pll)
+{
+ pm->pll[pll] &= ~AVR32_PM_PLLEN_MASK;
+}
+
+
+void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK0_MASK));
+}
+
+
+void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK1_MASK));
+}
+
+
+void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock)
+{
+ // Read
+ u_avr32_pm_mcctrl_t u_avr32_pm_mcctrl = {pm->mcctrl};
+ // Modify
+ u_avr32_pm_mcctrl.MCCTRL.mcsel = clock;
+ // Write back
+ pm->mcctrl = u_avr32_pm_mcctrl.mcctrl;
+}
+
+
+void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup)
+{
+ pm_enable_osc0_crystal(pm, fosc0); // Enable the Osc0 in crystal mode
+ pm_enable_clk0(pm, startup); // Crystal startup time - This parameter is critical and depends on the characteristics of the crystal
+ pm_switch_to_clock(pm, AVR32_PM_MCSEL_OSC0); // Then switch main clock to Osc0
+}
+
+
+void pm_bod_enable_irq(volatile avr32_pm_t *pm)
+{
+ pm->ier = AVR32_PM_IER_BODDET_MASK;
+}
+
+
+void pm_bod_disable_irq(volatile avr32_pm_t *pm)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ pm->idr = AVR32_PM_IDR_BODDET_MASK;
+ pm->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void pm_bod_clear_irq(volatile avr32_pm_t *pm)
+{
+ pm->icr = AVR32_PM_ICR_BODDET_MASK;
+}
+
+
+unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm)
+{
+ return ((pm->isr & AVR32_PM_ISR_BODDET_MASK) != 0);
+}
+
+
+unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm)
+{
+ return ((pm->imr & AVR32_PM_IMR_BODDET_MASK) != 0);
+}
+
+
+unsigned long pm_bod_get_level(volatile avr32_pm_t *pm)
+{
+ return (pm->bod & AVR32_PM_BOD_LEVEL_MASK) >> AVR32_PM_BOD_LEVEL_OFFSET;
+}
+
+
+unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp)
+{
+ return pm->gplp[gplp];
+}
+
+
+void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value)
+{
+ pm->gplp[gplp] = value;
+}
+
+
+long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module)
+{
+ unsigned long domain = module>>5;
+ unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain);
+
+ // Implementation-specific shortcut: the ckMASK registers are contiguous and
+ // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK.
+
+ *regptr |= (1<<(module%32));
+
+ return PASS;
+}
+
+long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module)
+{
+ unsigned long domain = module>>5;
+ unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain);
+
+ // Implementation-specific shortcut: the ckMASK registers are contiguous and
+ // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK.
+
+ *regptr &= ~(1<<(module%32));
+
+ return PASS;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h
new file mode 100644
index 0000000..ca679f7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h
@@ -0,0 +1,493 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Power Manager driver.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _PM_H_
+#define _PM_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+#include "preprocessor.h"
+
+
+/*! \brief Sets the MCU in the specified sleep mode.
+ *
+ * \param mode Sleep mode:
+ * \arg \c AVR32_PM_SMODE_IDLE: Idle;
+ * \arg \c AVR32_PM_SMODE_FROZEN: Frozen;
+ * \arg \c AVR32_PM_SMODE_STANDBY: Standby;
+ * \arg \c AVR32_PM_SMODE_STOP: Stop;
+ * \arg \c AVR32_PM_SMODE_DEEP_STOP: DeepStop;
+ * \arg \c AVR32_PM_SMODE_STATIC: Static.
+ */
+#define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));}
+
+
+//! Input and output parameters when initializing PM clocks using pm_configure_clocks().
+typedef struct
+{
+ //! CPU frequency (input/output argument).
+ unsigned long cpu_f;
+
+ //! PBA frequency (input/output argument).
+ unsigned long pba_f;
+
+ //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument).
+ unsigned long osc0_f;
+
+ //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument).
+ unsigned long osc0_startup;
+} pm_freq_param_t;
+
+#define PM_FREQ_STATUS_FAIL (-1)
+#define PM_FREQ_STATUS_OK (0)
+
+
+/*! \brief Gets the MCU reset cause.
+ *
+ * \param pm Base address of the Power Manager instance (i.e. &AVR32_PM).
+ *
+ * \return The MCU reset cause which can be masked with the
+ * \c AVR32_PM_RCAUSE_x_MASK bit-masks to isolate specific causes.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm)
+{
+ return pm->rcause;
+}
+
+
+/*!
+ * \brief This function will enable the external clock mode of the oscillator 0.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the crystal mode of the oscillator 0.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param fosc0 Oscillator 0 crystal frequency (Hz)
+ */
+extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0);
+
+
+/*!
+ * \brief This function will enable the oscillator 0 to be used with a startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will disable the oscillator 0.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_disable_clk0(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 0 to be used with no startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 0 startup time, for which the function does not wait. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will wait until the Osc0 clock is ready.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the external clock mode of the oscillator 1.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the crystal mode of the oscillator 1.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param fosc1 Oscillator 1 crystal frequency (Hz)
+ */
+extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1);
+
+
+/*!
+ * \brief This function will enable the oscillator 1 to be used with a startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 1 startup time. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will disable the oscillator 1.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_disable_clk1(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 1 to be used with no startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 1 startup time, for which the function does not wait. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will wait until the Osc1 clock is ready.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the external clock mode of the 32-kHz oscillator.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the crystal mode of the 32-kHz oscillator.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 32 to be used with a startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 32 kHz startup time. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will disable the oscillator 32.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_disable_clk32(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 32 to be used with no startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 32 kHz startup time, for which the function does not wait. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will wait until the osc32 clock is ready.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will select all the power manager clocks.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pbadiv Peripheral Bus A clock divisor enable
+ * \param pbasel Peripheral Bus A select
+ * \param pbbdiv Peripheral Bus B clock divisor enable
+ * \param pbbsel Peripheral Bus B select
+ * \param hsbdiv High Speed Bus clock divisor enable (CPU clock = HSB clock)
+ * \param hsbsel High Speed Bus select (CPU clock = HSB clock )
+ */
+extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel);
+
+
+/*!
+ * \brief This function will setup a generic clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gc generic clock number (0 for gc0...)
+ * \param osc_or_pll Use OSC (=0) or PLL (=1)
+ * \param pll_osc Select Osc0/PLL0 or Osc1/PLL1
+ * \param diven Generic clock divisor enable
+ * \param div Generic clock divisor
+ */
+extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div);
+
+
+/*!
+ * \brief This function will enable a generic clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gc generic clock number (0 for gc0...)
+ */
+extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc);
+
+
+/*!
+ * \brief This function will disable a generic clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gc generic clock number (0 for gc0...)
+ */
+extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc);
+
+
+/*!
+ * \brief This function will setup a PLL.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ * \param mul PLL MUL in the PLL formula
+ * \param div PLL DIV in the PLL formula
+ * \param osc OSC number (0 for osc0, 1 for osc1)
+ * \param lockcount PLL lockount
+ */
+extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount);
+
+
+/*!
+ * \brief This function will set a PLL option.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ * \param pll_freq Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz.
+ * \param pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value)
+ * \param pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode.
+ */
+extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable);
+
+
+/*!
+ * \brief This function will get a PLL option.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ * \return Option
+ */
+extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll);
+
+
+/*!
+ * \brief This function will enable a PLL.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ */
+extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll);
+
+
+/*!
+ * \brief This function will disable a PLL.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ */
+extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll);
+
+
+/*!
+ * \brief This function will wait for PLL0 locked
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will wait for PLL1 locked
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will switch the power manager main clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param clock Clock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0.
+ */
+extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock);
+
+
+/*!
+ * \brief Switch main clock to clock Osc0 (crystal mode)
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param fosc0 Oscillator 0 crystal frequency (Hz)
+ * \param startup Crystal 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.
+ */
+extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup);
+
+
+/*! \brief Enables the Brown-Out Detector interrupt.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ */
+extern void pm_bod_enable_irq(volatile avr32_pm_t *pm);
+
+
+/*! \brief Disables the Brown-Out Detector interrupt.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ */
+extern void pm_bod_disable_irq(volatile avr32_pm_t *pm);
+
+
+/*! \brief Clears the Brown-Out Detector interrupt flag.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ */
+extern void pm_bod_clear_irq(volatile avr32_pm_t *pm);
+
+
+/*! \brief Gets the Brown-Out Detector interrupt flag.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ *
+ * \retval 0 No BOD interrupt.
+ * \retval 1 BOD interrupt pending.
+ */
+extern unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm);
+
+
+/*! \brief Gets the Brown-Out Detector interrupt enable status.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ *
+ * \retval 0 BOD interrupt disabled.
+ * \retval 1 BOD interrupt enabled.
+ */
+extern unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm);
+
+
+/*! \brief Gets the triggering threshold of the Brown-Out Detector.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ *
+ * \return Triggering threshold of the BOD. See the electrical characteristics
+ * in the part datasheet for actual voltage levels.
+ */
+extern unsigned long pm_bod_get_level(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief Read the content of the PM GPLP registers
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ *
+ * \return The content of the chosen GPLP register.
+ */
+extern unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp);
+
+
+/*!
+ * \brief Write into the PM GPLP registers
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ * \param value Value to write
+ */
+extern void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value);
+
+
+/*! \brief Enable the clock of a module.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param module The module to clock (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks")
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module);
+
+/*! \brief Disable the clock of a module.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param module The module to shut down (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks")
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module);
+
+
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks
+ * according to the user wishes.
+ *
+ * This function needs some parameters stored in a pm_freq_param_t structure:
+ * - cpu_f and pba_f are the wanted frequencies,
+ * - osc0_f is the oscillator 0 on-board frequency (e.g. FOSC0),
+ * - osc0_startup is the oscillator 0 startup time (e.g. OSC0_STARTUP).
+ *
+ * The function will then configure the clocks using the following rules:
+ * - It first try to find a valid PLL frequency (the highest possible value to avoid jitter) in order
+ * to satisfy the CPU frequency,
+ * - It optimizes the configuration depending the various divide stages,
+ * - Then, the PBA frequency is configured from the CPU freq.
+ * - Note that HSB and PBB are configured with the same frequency as CPU.
+ * - Note also that the number of wait states of the flash read accesses is automatically set-up depending
+ * the CPU frequency. As a consequence, the application needs the FLASHC driver to compile.
+ *
+ * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval PM_FREQ_STATUS_OK Mode successfully initialized.
+ * \retval PM_FREQ_STATUS_FAIL The configuration can not be done.
+ */
+extern int pm_configure_clocks(pm_freq_param_t *param);
+
+
+/*! \brief Automatically configure the USB clock.
+ *
+ * USB clock is configured to 48MHz, using the PLL1 from the Oscillator0, assuming
+ * a 12 MHz crystal is connected to it.
+ */
+extern void pm_configure_usb_clock(void);
+
+
+#endif // _PM_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c
new file mode 100644
index 0000000..8beb83b
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c
@@ -0,0 +1,268 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Power Manager clocks configuration helper.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <string.h>
+#include "compiler.h"
+#include "pm.h"
+
+extern void flashc_set_wait_state(unsigned int wait_state);
+#if (defined AVR32_FLASHC_210_H_INCLUDED)
+extern void flashc_issue_command(unsigned int command, int page_number);
+#endif
+
+
+#define PM_MAX_MUL ((1 << AVR32_PM_PLL0_PLLMUL_SIZE) - 1)
+
+
+int pm_configure_clocks(pm_freq_param_t *param)
+{
+ // Supported frequencies:
+ // Fosc0 mul div PLL div2_en cpu_f pba_f Comment
+ // 12 15 1 192 1 12 12
+ // 12 9 3 40 1 20 20 PLL out of spec
+ // 12 15 1 192 1 24 12
+ // 12 9 1 120 1 30 15
+ // 12 9 3 40 0 40 20 PLL out of spec
+ // 12 15 1 192 1 48 12
+ // 12 15 1 192 1 48 24
+ // 12 8 1 108 1 54 27
+ // 12 9 1 120 1 60 15
+ // 12 9 1 120 1 60 30
+ // 12 10 1 132 1 66 16.5
+ //
+ unsigned long in_cpu_f = param->cpu_f;
+ unsigned long in_osc0_f = param->osc0_f;
+ unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0;
+ unsigned long pll_freq, rest;
+ Bool b_div2_pba, b_div2_cpu;
+
+ // Switch to external Oscillator 0
+ pm_switch_to_osc0(&AVR32_PM, in_osc0_f, param->osc0_startup);
+
+ // Start with CPU freq config
+ if (in_cpu_f == in_osc0_f)
+ {
+ param->cpu_f = in_osc0_f;
+ param->pba_f = in_osc0_f;
+ return PM_FREQ_STATUS_OK;
+ }
+ else if (in_cpu_f < in_osc0_f)
+ {
+ // TBD
+ }
+
+ rest = in_cpu_f % in_osc0_f;
+
+ for (div = 1; div < 32; div++)
+ {
+ if ((div * rest) % in_osc0_f == 0)
+ break;
+ }
+ if (div == 32)
+ return PM_FREQ_STATUS_FAIL;
+
+ mul = (in_cpu_f * div) / in_osc0_f;
+
+ if (mul > PM_MAX_MUL)
+ return PM_FREQ_STATUS_FAIL;
+
+ // export 2power from PLL div to div2_cpu
+ while (!(div % 2))
+ {
+ div /= 2;
+ div2_cpu++;
+ }
+
+ // Here we know the mul and div parameter of the PLL config.
+ // . Check out if the PLL has a valid in_cpu_f.
+ // . Try to have for the PLL frequency (VCO output) the highest possible value
+ // to reduce jitter.
+ while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ)
+ {
+ if (2 * mul > PM_MAX_MUL)
+ break;
+ mul *= 2;
+ div2_cpu++;
+ }
+
+ if (div2_cpu != 0)
+ {
+ div2_cpu--;
+ div2_en = 1;
+ }
+
+ pll_freq = in_osc0_f * mul / (div * (1 << div2_en));
+
+ // Update real CPU Frequency
+ param->cpu_f = pll_freq / (1 << div2_cpu);
+ mul--;
+
+ pm_pll_setup(&AVR32_PM
+ , 0 // pll
+ , mul // mul
+ , div // div
+ , 0 // osc
+ , 16 // lockcount
+ );
+
+ pm_pll_set_option(&AVR32_PM
+ , 0 // pll
+ // PLL clock is lower than 160MHz: need to set pllopt.
+ , (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0 // pll_freq
+ , div2_en // pll_div2
+ , 0 // pll_wbwdisable
+ );
+
+ rest = pll_freq;
+ while (rest > AVR32_PM_PBA_MAX_FREQ ||
+ rest != param->pba_f)
+ {
+ div2_pba++;
+ rest = pll_freq / (1 << div2_pba);
+ if (rest < param->pba_f)
+ break;
+ }
+
+ // Update real PBA Frequency
+ param->pba_f = pll_freq / (1 << div2_pba);
+
+ // Enable PLL0
+ pm_pll_enable(&AVR32_PM, 0);
+
+ // Wait for PLL0 locked
+ pm_wait_for_pll0_locked(&AVR32_PM);
+
+ if (div2_cpu)
+ {
+ b_div2_cpu = TRUE;
+ div2_cpu--;
+ }
+ else
+ b_div2_cpu = FALSE;
+
+ if (div2_pba)
+ {
+ b_div2_pba = TRUE;
+ div2_pba--;
+ }
+ else
+ b_div2_pba = FALSE;
+
+ pm_cksel(&AVR32_PM
+ , b_div2_pba, div2_pba // PBA
+ , b_div2_cpu, div2_cpu // PBB
+ , b_div2_cpu, div2_cpu // HSB
+ );
+
+ if (param->cpu_f > AVR32_FLASHC_FWS_0_MAX_FREQ)
+ {
+ flashc_set_wait_state(1);
+#if (defined AVR32_FLASHC_210_H_INCLUDED)
+ if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ)
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1);
+ else
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+#endif
+ }
+ else
+ {
+ flashc_set_wait_state(0);
+#if (defined AVR32_FLASHC_210_H_INCLUDED)
+ if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ)
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1);
+ else
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+#endif
+ }
+
+ pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0);
+
+ return PM_FREQ_STATUS_OK;
+}
+
+
+void pm_configure_usb_clock(void)
+{
+#if UC3A3
+
+ // Setup USB GCLK.
+ pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc
+ 0, // osc_or_pll: use Osc (if 0) or PLL (if 1)
+ 0, // pll_osc: select Osc0/PLL0 or Osc1/PLL1
+ 0, // diven
+ 0); // div
+
+ // Enable USB GCLK.
+ pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB);
+#else
+ // Use 12MHz from OSC0 and generate 96 MHz
+ pm_pll_setup(&AVR32_PM, 1, // pll.
+ 7, // mul.
+ 1, // div.
+ 0, // osc.
+ 16); // lockcount.
+
+ pm_pll_set_option(&AVR32_PM, 1, // pll.
+ 1, // pll_freq: choose the range 80-180MHz.
+ 1, // pll_div2.
+ 0); // pll_wbwdisable.
+
+ // start PLL1 and wait forl lock
+ pm_pll_enable(&AVR32_PM, 1);
+
+ // Wait for PLL1 locked.
+ pm_wait_for_pll1_locked(&AVR32_PM);
+
+ pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc.
+ 1, // osc_or_pll: use Osc (if 0) or PLL (if 1).
+ 1, // pll_osc: select Osc0/PLL0 or Osc1/PLL1.
+ 0, // diven.
+ 0); // div.
+ pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB);
+#endif
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c
new file mode 100644
index 0000000..f5fc155
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c
@@ -0,0 +1,566 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief High-level library abstracting features such as oscillators/pll/dfll
+ * configuration, clock configuration, System-sensible parameters
+ * configuration, buses clocks configuration, sleep mode, reset.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+#include "power_clocks_lib.h"
+
+
+//! Device-specific data
+#if UC3L
+static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param); // FORWARD declaration
+#endif
+
+#if UC3C
+static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param); // FORWARD declaration
+#endif
+
+long int pcl_configure_clocks(pcl_freq_param_t *param)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+ // Implementation for UC3A, UC3A3, UC3B parts.
+ return(pm_configure_clocks(param));
+#else
+ #ifdef AVR32_PM_410_H_INCLUDED
+ // Implementation for UC3C parts.
+ return(pcl_configure_clocks_uc3c(param));
+ #else
+ // Implementation for UC3L parts.
+ return(pcl_configure_clocks_uc3l(param));
+ #endif
+#endif
+}
+
+
+//! Device-specific implementation
+#if UC3L
+// FORWARD declaration
+static long int pcl_configure_synchronous_clocks( pm_clk_src_t main_clk_src,
+ unsigned long main_clock_freq_hz,
+ pcl_freq_param_t *param);
+
+long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_RCSYS
+
+ // Supported synchronous clocks frequencies if RCSYS is the main clock source:
+ // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > SCIF_SLOWCLOCK_FREQ_HZ) || (param->pba_f > SCIF_SLOWCLOCK_FREQ_HZ)
+ || (param->pbb_f > SCIF_SLOWCLOCK_FREQ_HZ))
+ return(-1);
+#endif
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_SLOW, SCIF_SLOWCLOCK_FREQ_HZ, param));
+}
+
+
+long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_RC120M
+
+ // Supported synchronous clocks frequencies if RC120M is the main clock source:
+ // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > SCIF_RC120M_FREQ_HZ) || (param->pba_f > SCIF_RC120M_FREQ_HZ)
+ || (param->pbb_f > SCIF_RC120M_FREQ_HZ))
+ return(-1);
+#endif
+
+ // Start the 120MHz internal RCosc (RC120M) clock
+ scif_start_rc120M();
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_RC120M, SCIF_RC120M_FREQ_HZ, param));
+}
+
+
+long int pcl_configure_clocks_osc0(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_OSC0
+
+ // Supported synchronous clocks frequencies if OSC0 is the main clock source:
+ // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example)
+ // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+ unsigned long main_clock_freq;
+
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+ main_clock_freq = param->osc0_f;
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq)
+ || (param->pbb_f > main_clock_freq))
+ return(-1);
+#endif
+ // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency.
+ scif_configure_osc_crystalmode(SCIF_OSC0, main_clock_freq);
+ // Enable the OSC0
+ scif_enable_osc(SCIF_OSC0, param->osc0_startup, true);
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_OSC0, main_clock_freq, param));
+}
+
+
+long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_DFLL
+
+ // Supported synchronous clocks frequencies if DFLL is the main clock source:
+ // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example)
+ // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+ unsigned long main_clock_freq;
+ scif_gclk_opt_t *pgc_dfllif_ref_opt;
+
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+ main_clock_freq = param->dfll_f;
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target DFLL output frequency is in the correct range.
+ if((main_clock_freq > SCIF_DFLL_MAXFREQ_HZ) || (main_clock_freq < SCIF_DFLL_MINFREQ_HZ))
+ return(-1);
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq)
+ || (param->pbb_f > main_clock_freq))
+ return(-1);
+#endif
+ pgc_dfllif_ref_opt = (scif_gclk_opt_t *)param->pextra_params;
+ // Implementation note: this implementation configures the DFLL in closed-loop
+ // mode (because it gives the best accuracy) which enables the generic clock CLK_DFLLIF_REF
+ // as a reference (RCSYS being used as the generic clock source, undivided).
+ scif_dfll0_closedloop_configure_and_start(pgc_dfllif_ref_opt, main_clock_freq, TRUE);
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_DFLL0, main_clock_freq, param));
+}
+
+
+static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_RCSYS, PCL_MC_OSC0, PCL_MC_DFLL0, PCL_MC_RC120M
+
+ // Supported synchronous clocks frequencies if RCSYS is the main clock source:
+ // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz.
+
+ // Supported synchronous clocks frequencies if RC120M is the main clock source:
+ // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz.
+
+ // Supported synchronous clocks frequencies if OSC0 is the main clock source:
+ // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example)
+ // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz.
+
+ // Supported synchronous clocks frequencies if DFLL is the main clock source:
+ // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example)
+ // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+ if(PCL_MC_RCSYS == param->main_clk_src)
+ {
+ return(pcl_configure_clocks_rcsys(param));
+ }
+ else if(PCL_MC_RC120M == param->main_clk_src)
+ {
+ return(pcl_configure_clocks_rc120m(param));
+ }
+ else if(PCL_MC_OSC0 == param->main_clk_src)
+ {
+ return(pcl_configure_clocks_osc0(param));
+ }
+ else // PCL_MC_DFLL0 == param->main_clk_src
+ {
+ return(pcl_configure_clocks_dfll0(param));
+ }
+}
+
+static long int pcl_configure_synchronous_clocks(pm_clk_src_t main_clk_src, unsigned long main_clock_freq_hz, pcl_freq_param_t *param)
+{
+ //#
+ //# Set the Synchronous clock division ratio for each clock domain
+ //#
+ pm_set_all_cksel(main_clock_freq_hz, param->cpu_f, param->pba_f, param->pbb_f);
+
+ //#
+ //# Set the Flash wait state and the speed read mode (depending on the target CPU frequency).
+ //#
+#if UC3L
+ flashcdw_set_flash_waitstate_and_readmode(param->cpu_f);
+#elif UC3C
+ flashc_set_flash_waitstate_and_readmode(param->cpu_f);
+#endif
+
+
+ //#
+ //# Switch the main clock source to the selected clock.
+ //#
+ pm_set_mclk_source(main_clk_src);
+
+ return PASS;
+}
+
+#endif // UC3L device-specific implementation
+
+//! UC3C Device-specific implementation
+#if UC3C
+static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param)
+{
+ #define PM_MAX_MUL ((1 << AVR32_SCIF_PLLMUL_SIZE) - 1)
+ #define AVR32_PM_PBA_MAX_FREQ 66000000
+ #define AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ 240000000
+ #define AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ 160000000
+
+ // Implementation for UC3C parts.
+ // Supported frequencies:
+ // Fosc0 mul div PLL div2_en cpu_f pba_f Comment
+ // 12 15 1 192 1 12 12
+ // 12 9 3 40 1 20 20 PLL out of spec
+ // 12 15 1 192 1 24 12
+ // 12 9 1 120 1 30 15
+ // 12 9 3 40 0 40 20 PLL out of spec
+ // 12 15 1 192 1 48 12
+ // 12 15 1 192 1 48 24
+ // 12 8 1 108 1 54 27
+ // 12 9 1 120 1 60 15
+ // 12 9 1 120 1 60 30
+ // 12 10 1 132 1 66 16.5
+ //
+ unsigned long in_cpu_f = param->cpu_f;
+ unsigned long in_osc0_f = param->osc0_f;
+ unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0;
+ unsigned long pll_freq, rest;
+ Bool b_div2_pba, b_div2_cpu;
+
+ // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency.
+ scif_configure_osc_crystalmode(SCIF_OSC0, in_osc0_f);
+ // Enable the OSC0
+ scif_enable_osc(SCIF_OSC0, param->osc0_startup, true);
+ // Set the main clock source as being OSC0.
+ pm_set_mclk_source(PM_CLK_SRC_OSC0);
+
+ // Start with CPU freq config
+ if (in_cpu_f == in_osc0_f)
+ {
+ param->cpu_f = in_osc0_f;
+ param->pba_f = in_osc0_f;
+ return PASS;
+ }
+ else if (in_cpu_f < in_osc0_f)
+ {
+ // TBD
+ }
+
+ rest = in_cpu_f % in_osc0_f;
+
+ for (div = 1; div < 32; div++)
+ {
+ if ((div * rest) % in_osc0_f == 0)
+ break;
+ }
+ if (div == 32)
+ return FAIL;
+
+ mul = (in_cpu_f * div) / in_osc0_f;
+
+ if (mul > PM_MAX_MUL)
+ return FAIL;
+
+ // export 2power from PLL div to div2_cpu
+ while (!(div % 2))
+ {
+ div /= 2;
+ div2_cpu++;
+ }
+
+ // Here we know the mul and div parameter of the PLL config.
+ // . Check out if the PLL has a valid in_cpu_f.
+ // . Try to have for the PLL frequency (VCO output) the highest possible value
+ // to reduce jitter.
+ while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ)
+ {
+ if (2 * mul > PM_MAX_MUL)
+ break;
+ mul *= 2;
+ div2_cpu++;
+ }
+
+ if (div2_cpu != 0)
+ {
+ div2_cpu--;
+ div2_en = 1;
+ }
+
+ pll_freq = in_osc0_f * mul / (div * (1 << div2_en));
+
+ // Update real CPU Frequency
+ param->cpu_f = pll_freq / (1 << div2_cpu);
+ mul--;
+
+ scif_pll_opt_t opt;
+
+ opt.osc = SCIF_OSC0, // Sel Osc0 or Osc1
+ opt.lockcount = 16, // lockcount in main clock for the PLL wait lock
+ opt.div = div, // DIV=1 in the formula
+ opt.mul = mul, // MUL=7 in the formula
+ opt.pll_div2 = div2_en, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value)
+ opt.pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode.
+ opt.pll_freq = (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz.
+
+
+ scif_pll_setup(SCIF_PLL0, opt); // lockcount in main clock for the PLL wait lock
+
+ /* Enable PLL0 */
+ scif_pll_enable(SCIF_PLL0);
+
+ /* Wait for PLL0 locked */
+ scif_wait_for_pll_locked(SCIF_PLL0) ;
+
+ rest = pll_freq;
+ while (rest > AVR32_PM_PBA_MAX_FREQ ||
+ rest != param->pba_f)
+ {
+ div2_pba++;
+ rest = pll_freq / (1 << div2_pba);
+ if (rest < param->pba_f)
+ break;
+ }
+
+ // Update real PBA Frequency
+ param->pba_f = pll_freq / (1 << div2_pba);
+
+
+ if (div2_cpu)
+ {
+ b_div2_cpu = TRUE;
+ div2_cpu--;
+ }
+ else
+ b_div2_cpu = FALSE;
+
+ if (div2_pba)
+ {
+ b_div2_pba = TRUE;
+ div2_pba--;
+ }
+ else
+ b_div2_pba = FALSE;
+
+ if (b_div2_cpu == TRUE )
+ {
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_0, (pm_divratio_t) div2_cpu); // CPU
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_1, (pm_divratio_t) div2_cpu); // HSB
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_3, (pm_divratio_t) div2_cpu); // PBB
+ }
+ if (b_div2_pba == TRUE )
+ {
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_2, (pm_divratio_t) div2_pba); // PBA
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_4, (pm_divratio_t) div2_pba); // PBC
+ }
+
+ // Set Flashc Wait State
+ flashc_set_flash_waitstate_and_readmode(param->cpu_f);
+
+ // Set the main clock source as being PLL0.
+ pm_set_mclk_source(PM_CLK_SRC_PLL0);
+
+ return PASS;
+}
+#endif // UC3C device-specific implementation
+
+long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ if(PCL_OSC0 == osc)
+ {
+ // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency,
+ // enable the OSC0, set the main clock source as being OSC0.
+ pm_switch_to_osc0(&AVR32_PM, fcrystal, startup);
+ }
+ else
+ {
+ return PCL_NOT_SUPPORTED;
+ }
+#else
+// Implementation for UC3C, UC3L parts.
+ #if AVR32_PM_VERSION_RESETVALUE < 0x400
+ return PCL_NOT_SUPPORTED;
+ #else
+ if(PCL_OSC0 == osc)
+ {
+ // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency.
+ scif_configure_osc_crystalmode(SCIF_OSC0, fcrystal);
+ // Enable the OSC0
+ scif_enable_osc(SCIF_OSC0, startup, true);
+ // Set the Flash wait state and the speed read mode (depending on the target CPU frequency).
+#if UC3L
+ flashcdw_set_flash_waitstate_and_readmode(fcrystal);
+#elif UC3C
+ flashc_set_flash_waitstate_and_readmode(fcrystal);
+#endif
+ // Set the main clock source as being OSC0.
+ pm_set_mclk_source(PM_CLK_SRC_OSC0);
+ }
+ else
+ {
+ return PCL_NOT_SUPPORTED;
+ }
+ #endif
+#endif
+ return PASS;
+}
+
+long int pcl_configure_usb_clock(void)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ pm_configure_usb_clock();
+ return PASS;
+#else
+ #ifdef AVR32_PM_410_H_INCLUDED
+ const scif_pll_opt_t opt = {
+ .osc = SCIF_OSC0, // Sel Osc0 or Osc1
+ .lockcount = 16, // lockcount in main clock for the PLL wait lock
+ .div = 1, // DIV=1 in the formula
+ .mul = 5, // MUL=7 in the formula
+ .pll_div2 = 1, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value)
+ .pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode.
+ .pll_freq = 1, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz.
+ };
+
+ /* Setup PLL1 on Osc0, mul=7 ,no divisor, lockcount=16, ie. 16Mhzx6 = 96MHz output */
+ scif_pll_setup(SCIF_PLL1, opt); // lockcount in main clock for the PLL wait lock
+
+ /* Enable PLL1 */
+ scif_pll_enable(SCIF_PLL1);
+
+ /* Wait for PLL1 locked */
+ scif_wait_for_pll_locked(SCIF_PLL1) ;
+
+ // Implementation for UC3C parts.
+ // Setup the generic clock for USB
+ scif_gc_setup(AVR32_SCIF_GCLK_USB,
+ SCIF_GCCTRL_PLL1,
+ AVR32_SCIF_GC_NO_DIV_CLOCK,
+ 0);
+ // Now enable the generic clock
+ scif_gc_enable(AVR32_SCIF_GCLK_USB);
+ return PASS;
+ #else
+ return PCL_NOT_SUPPORTED;
+ #endif
+#endif
+}
+
+
+#if UC3L
+#else
+void pcl_write_gplp(unsigned long gplp, unsigned long value)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ pm_write_gplp(&AVR32_PM,gplp,value);
+#else
+ scif_write_gplp(gplp,value);
+#endif
+}
+
+unsigned long pcl_read_gplp(unsigned long gplp)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ return pm_read_gplp(&AVR32_PM,gplp);
+#else
+ return scif_read_gplp(gplp);
+#endif
+}
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h
new file mode 100644
index 0000000..28c5888
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h
@@ -0,0 +1,379 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief High-level library abstracting features such as oscillators/pll/dfll
+ * configuration, clock configuration, System-sensible parameters
+ * configuration, buses clocks configuration, sleep mode, reset.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _POWER_CLOCKS_LIB_H_
+#define _POWER_CLOCKS_LIB_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Support for UC3A, UC3A3, UC3B parts.
+ #include "pm.h"
+#else
+//! Device-specific data
+#if UC3L
+ #include "pm_uc3l.h"
+ #include "scif_uc3l.h"
+ #include "flashcdw.h"
+#elif UC3C
+ #include "pm_uc3c.h"
+ #include "scif_uc3c.h"
+ #include "flashc.h"
+#endif
+#endif
+
+/*! \name Clocks Management
+ */
+//! @{
+
+//! The different oscillators
+typedef enum
+{
+ PCL_OSC0 = 0,
+ PCL_OSC1 = 1
+} pcl_osc_t;
+
+//! The different DFLLs
+typedef enum
+{
+ PCL_DFLL0 = 0,
+ PCL_DFLL1 = 1
+} pcl_dfll_t;
+
+//! Possible Main Clock Sources
+typedef enum
+{
+ PCL_MC_RCSYS, // Default main clock source, supported by all (aka Slow Clock)
+ PCL_MC_OSC0, // Supported by all
+ PCL_MC_OSC1, // Supported by UC3C only
+ PCL_MC_OSC0_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC0 as reference)
+ PCL_MC_OSC1_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC1 as reference)
+ PCL_MC_OSC0_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC0 as reference)
+ PCL_MC_OSC1_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC1 as reference)
+ PCL_MC_DFLL0, // Supported by UC3L
+ PCL_MC_DFLL1, // Not supported yet
+ PCL_MC_RC120M, // Supported by UC3L, UC3C
+ PCL_MC_RC8M, // Supported by UC3C
+ PCL_MC_CRIPOSC // Supported by UC3C
+} pcl_mainclk_t;
+
+//! Input and output parameters to configure clocks with pcl_configure_clocks().
+// NOTE: regarding the frequency settings, always abide by the datasheet rules and min & max supported frequencies.
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Support for UC3A, UC3A3, UC3B parts.
+#define pcl_freq_param_t pm_freq_param_t // See pm.h
+#else
+// Support for UC3C, UC3L parts.
+typedef struct
+{
+ //! Main clock source selection (input argument).
+ pcl_mainclk_t main_clk_src;
+
+ //! Target CPU frequency (input/output argument).
+ unsigned long cpu_f;
+
+ //! Target PBA frequency (input/output argument).
+ unsigned long pba_f;
+
+ //! Target PBB frequency (input/output argument).
+ unsigned long pbb_f;
+
+ //! Target PBC frequency (input/output argument).
+ unsigned long pbc_f;
+
+ //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument).
+ unsigned long osc0_f;
+
+ //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument).
+ unsigned long osc0_startup;
+
+ //! DFLL target frequency (input/output argument) (NOTE: the bigger, the most stable the frequency)
+ unsigned long dfll_f;
+
+ //! Other parameters that might be necessary depending on the device (implementation-dependent).
+ // For the UC3L DFLL setup, this parameter should be pointing to a structure of
+ // type (scif_gclk_opt_t *).
+ void *pextra_params;
+} pcl_freq_param_t;
+#endif
+
+//! Define "not supported" for the lib.
+#define PCL_NOT_SUPPORTED (-10000)
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - main_clk_src is the id of the main clock source to use,
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies,
+ * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0),
+ * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP).
+ * - dfll_f is the target DFLL frequency to set-up if main_clk_src is the dfll.
+ *
+ * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks() and modify it to use
+ * preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RCSYS osc as main source clock.
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies
+ *
+ * Supported main clock sources: PCL_MC_RCSYS
+ *
+ * Supported synchronous clocks frequencies:
+ * 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_rcsys() and modify it to use
+ * preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RC120M osc as main source clock.
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies
+ *
+ * Supported main clock sources: PCL_MC_RC120M
+ *
+ * Supported synchronous clocks frequencies:
+ * 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_rc120m() and modify it to
+ * use preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the OSC0 osc as main source clock
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies,
+ * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0),
+ * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP).
+ *
+ * Supported main clock sources: PCL_MC_OSC0
+ *
+ * Supported synchronous clocks frequencies:
+ * (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example)
+ * 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_osc0() and modify it to use
+ * preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_osc0(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the DFLL0 as main source clock
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies,
+ * - dfll_f is the target DFLL frequency to set-up
+ *
+ * \note: when the DFLL0 is to be used as main source clock for the synchronous clocks,
+ * the target frequency of the DFLL should be chosen to be as high as possible
+ * within the specification range (for stability reasons); the target cpu and pbx
+ * frequencies will then be reached by appropriate division ratio.
+ *
+ * Supported main clock sources: PCL_MC_DFLL0
+ *
+ * Supported synchronous clocks frequencies:
+ * (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example)
+ * 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_dfll0() and modify it to
+ * use preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param);
+
+/*! \brief Switch the main clock source to Osc0 configured in crystal mode
+ *
+ * \param osc The oscillator to enable and switch to.
+ * \param fcrystal Oscillator external crystal frequency (Hz)
+ * \param startup Oscillator startup time.
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup);
+
+/*! \brief Enable the clock of a module.
+ *
+ * \param module The module to clock (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks"
+ * or look in the module section).
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+#define pcl_enable_module(module) pm_enable_module(&AVR32_PM, module)
+#else
+// Implementation for UC3C, UC3L parts.
+#define pcl_enable_module(module) pm_enable_module(module)
+#endif
+
+/*! \brief Disable the clock of a module.
+ *
+ * \param module The module to shut down (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks"
+ * or look in the module section).
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+#define pcl_disable_module(module) pm_disable_module(&AVR32_PM, module)
+#else
+// Implementation for UC3C, UC3L parts.
+#define pcl_disable_module(module) pm_disable_module(module)
+#endif
+
+/*! \brief Configure the USB Clock
+ *
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long int pcl_configure_usb_clock(void);
+
+//! @}
+
+/*! \name Power Management
+ */
+//! @{
+/*!
+ * \brief Read the content of the GPLP registers
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ *
+ * \return The content of the chosen GPLP register.
+ */
+extern unsigned long pcl_read_gplp(unsigned long gplp);
+
+
+/*!
+ * \brief Write into the GPLP registers
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ * \param value Value to write
+ */
+extern void pcl_write_gplp(unsigned long gplp, unsigned long value);
+
+//! @}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _POWER_CLOCKS_LIB_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c
new file mode 100644
index 0000000..4cbae0f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c
@@ -0,0 +1,213 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief RTC driver for AVR32 UC3.
+ *
+ * AVR32 Real Time Counter driver module.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an RTC and a PM module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "compiler.h"
+#include "pm.h"
+#include "rtc.h"
+
+
+int rtc_is_busy(volatile avr32_rtc_t *rtc)
+{
+ return (rtc->ctrl & AVR32_RTC_CTRL_BUSY_MASK) != 0;
+}
+
+
+int rtc_init(volatile avr32_rtc_t *rtc, unsigned char osc_type, unsigned char psel)
+{
+ // If exit, it means that the configuration has not been set correctly
+ if (osc_type > (1 << AVR32_RTC_CTRL_CLK32_SIZE) - 1 ||
+ psel > (1 << AVR32_RTC_CTRL_PSEL_SIZE) - 1)
+ return 0;
+
+ // If we use the 32-kHz oscillator, we have to enable it first
+ if (osc_type == RTC_OSC_32KHZ)
+ {
+ // Select the 32-kHz oscillator crystal
+ pm_enable_osc32_crystal(&AVR32_PM);
+ // Enable the 32-kHz clock
+ pm_enable_clk32_no_wait(&AVR32_PM, AVR32_PM_OSCCTRL32_STARTUP_0_RCOSC);
+ }
+
+ // Wait until the rtc CTRL register is up-to-date
+ while (rtc_is_busy(rtc));
+
+ // Set the new RTC configuration
+ rtc->ctrl = osc_type << AVR32_RTC_CTRL_CLK32_OFFSET |
+ psel << AVR32_RTC_CTRL_PSEL_OFFSET |
+ AVR32_RTC_CTRL_CLKEN_MASK;
+
+ // Wait until write is done
+ while (rtc_is_busy(rtc));
+
+ // Set the counter value to 0
+ rtc_set_value(rtc, 0x00000000);
+ // Set the top value to 0xFFFFFFFF
+ rtc_set_top_value(rtc, 0xFFFFFFFF);
+
+ return 1;
+}
+
+
+void rtc_set_value(volatile avr32_rtc_t *rtc, unsigned long val)
+{
+ // Wait until we can write into the VAL register
+ while (rtc_is_busy(rtc));
+ // Set the new val value
+ rtc->val = val;
+ // Wait until write is done
+ while (rtc_is_busy(rtc));
+}
+
+
+unsigned long rtc_get_value(volatile avr32_rtc_t *rtc)
+{
+ return rtc->val;
+}
+
+
+void rtc_enable_wake_up(volatile avr32_rtc_t *rtc)
+{
+ // Wait until the rtc CTRL register is up-to-date
+ while (rtc_is_busy(rtc));
+ // Enable the wake up of the RTC
+ rtc->ctrl |= AVR32_RTC_CTRL_WAKE_EN_MASK;
+ // Wait until write is done
+ while (rtc_is_busy(rtc));
+}
+
+
+void rtc_disable_wake_up(volatile avr32_rtc_t *rtc)
+{
+ // Wait until the rtc CTRL register is up-to-date
+ while (rtc_is_busy(rtc));
+ // Disable the wake up of the RTC
+ rtc->ctrl &= ~AVR32_RTC_CTRL_WAKE_EN_MASK;
+ // Wait until write is done
+ while (rtc_is_busy(rtc));
+}
+
+
+void rtc_enable(volatile avr32_rtc_t *rtc)
+{
+ // Wait until the rtc CTRL register is up-to-date
+ while (rtc_is_busy(rtc));
+ // Enable the RTC
+ rtc->ctrl |= AVR32_RTC_CTRL_EN_MASK;
+ // Wait until write is done
+ while (rtc_is_busy(rtc));
+}
+
+
+void rtc_disable(volatile avr32_rtc_t *rtc)
+{
+ // Wait until the rtc CTRL register is up-to-date
+ while (rtc_is_busy(rtc));
+ // Disable the RTC
+ rtc->ctrl &= ~AVR32_RTC_CTRL_EN_MASK;
+ // Wait until write is done
+ while (rtc_is_busy(rtc));
+}
+
+
+void rtc_enable_interrupt(volatile avr32_rtc_t *rtc)
+{
+ rtc->ier = AVR32_RTC_IER_TOPI_MASK;
+}
+
+
+void rtc_disable_interrupt(volatile avr32_rtc_t *rtc)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ rtc->idr = AVR32_RTC_IDR_TOPI_MASK;
+ rtc->imr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void rtc_clear_interrupt(volatile avr32_rtc_t *rtc)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ rtc->icr = AVR32_RTC_ICR_TOPI_MASK;
+ rtc->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void rtc_set_top_value(volatile avr32_rtc_t *rtc, unsigned long top)
+{
+ // Wait until we can write into the VAL register
+ while (rtc_is_busy(rtc));
+ // Set the new val value
+ rtc->top = top;
+ // Wait until write is done
+ while (rtc_is_busy(rtc));
+}
+
+
+unsigned long rtc_get_top_value(volatile avr32_rtc_t *rtc)
+{
+ return rtc->top;
+}
+
+
+int rtc_interrupt_enabled(volatile avr32_rtc_t *rtc)
+{
+ return (rtc->imr & AVR32_RTC_IMR_TOPI_MASK) != 0;
+}
+
+
+int rtc_is_interrupt(volatile avr32_rtc_t *rtc)
+{
+ return (rtc->isr & AVR32_RTC_ISR_TOPI_MASK) != 0;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h
new file mode 100644
index 0000000..5702c29
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h
@@ -0,0 +1,191 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief RTC driver for AVR32 UC3.
+ *
+ * AVR32 Real Time Counter driver module.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an RTC and a PM module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _RTC_H_
+#define _RTC_H_
+
+#include "compiler.h"
+#include <avr32/io.h>
+
+
+/*! \name Oscillator Types
+ */
+//! @{
+#define RTC_OSC_32KHZ 1
+#define RTC_OSC_RC 0
+//! @}
+
+/*! \name Predefined PSEL Values
+ */
+//! @{
+
+//! The PSEL value to set the RTC source clock (after the prescaler) to 1 Hz,
+//! when using an external 32-kHz crystal.
+#define RTC_PSEL_32KHZ_1HZ 14
+
+//! The PSEL value to set the RTC source clock (after the prescaler) to 1.76 Hz,
+//! when using the internal RC oscillator (~ 115 kHz).
+#define RTC_PSEL_RC_1_76HZ 15
+
+//! @}
+
+
+/*!
+ * \brief This function will initialise the RTC module.
+ * If you use the 32 KHz oscillator, it will enable this module.
+ * This function also set the top value of the RTC to 0xFFFFFFFF
+ * and the value to 0.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \param osc_type The oscillator you want to use. If you need a better
+ * accuracy, use the 32 KHz oscillator (i.e. RTC_OSC_32KHZ).
+ * \param psel The preselector value for the corresponding oscillator (4-bits).
+ * To obtain this value, you can use this formula:
+ * psel = log(Fosc/Frtc)/log(2)-1, where Fosc is the frequency of the
+ * oscillator you are using (32 KHz or 115 KHz) and Frtc the frequency
+ * desired.
+ * \return 1 if the initialisation succeds otherwize it will return 0.
+ */
+extern int rtc_init(volatile avr32_rtc_t *rtc, unsigned char osc_type, unsigned char psel);
+
+/*!
+ * \brief Enable the RTC.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ */
+extern void rtc_enable(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Disable the RTC.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ */
+extern void rtc_disable(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Enable the wake up feature of the RTC.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ */
+extern void rtc_enable_wake_up(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Disable the wake up feature of the RTC.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ */
+extern void rtc_disable_wake_up(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Enable the interrupt feature of the RTC.
+ * An interrupt is raised when the value of the RTC
+ * is equal to its top value.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ */
+extern void rtc_enable_interrupt(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Disable the interrupt feature of the RTC.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ */
+extern void rtc_disable_interrupt(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Clear the interrupt flag.
+ * Call this function once you handled the interrupt.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ */
+extern void rtc_clear_interrupt(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Get the status of interrupts.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \return 1 if the interrupts are enabled otherwize it returns 0.
+ */
+extern int rtc_interrupt_enabled(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief Check if an interrupt is raised.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \return 1 if an interrupt is currently raised otherwize it returns 0.
+ */
+extern int rtc_is_interrupt(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief This function sets the RTC current top value.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \param top The top value you want to store.
+ */
+extern void rtc_set_top_value(volatile avr32_rtc_t *rtc, unsigned long top);
+
+/*!
+ * \brief This function returns the RTC current top value.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \return The RTC current top value.
+ */
+extern unsigned long rtc_get_top_value(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief This function checks if the RTC is busy or not.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \return 1 if the RTC is busy otherwize it will return 0.
+ */
+extern int rtc_is_busy(volatile avr32_rtc_t *rtc);
+
+/*!
+ * \brief This function sets the RTC current value.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \param val The value you want to store.
+ */
+extern void rtc_set_value(volatile avr32_rtc_t *rtc, unsigned long val);
+
+/*!
+ * \brief This function returns the RTC current value.
+ * \param rtc Base address of the RTC (i.e. &AVR32_RTC).
+ * \return The RTC current value.
+ */
+extern unsigned long rtc_get_value(volatile avr32_rtc_t *rtc);
+
+
+#endif // _RTC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c
new file mode 100644
index 0000000..d2b7ccd
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c
@@ -0,0 +1,443 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief SPI driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the SPI interface on AVR32
+ * devices.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "spi.h"
+
+#ifdef FREERTOS_USED
+
+#include "FreeRTOS.h"
+#include "semphr.h"
+
+#endif
+
+
+/*! \name SPI Writable Bit-Field Registers
+ */
+//! @{
+
+typedef union
+{
+ unsigned long cr;
+ avr32_spi_cr_t CR;
+} u_avr32_spi_cr_t;
+
+typedef union
+{
+ unsigned long mr;
+ avr32_spi_mr_t MR;
+} u_avr32_spi_mr_t;
+
+typedef union
+{
+ unsigned long tdr;
+ avr32_spi_tdr_t TDR;
+} u_avr32_spi_tdr_t;
+
+typedef union
+{
+ unsigned long ier;
+ avr32_spi_ier_t IER;
+} u_avr32_spi_ier_t;
+
+typedef union
+{
+ unsigned long idr;
+ avr32_spi_idr_t IDR;
+} u_avr32_spi_idr_t;
+
+typedef union
+{
+ unsigned long csr;
+ avr32_spi_csr0_t CSR;
+} u_avr32_spi_csr_t;
+
+//! @}
+
+
+#ifdef FREERTOS_USED
+
+//! The SPI mutex.
+static xSemaphoreHandle xSPIMutex;
+
+#endif
+
+
+/*! \brief Calculates the baudrate divider.
+ *
+ * \param options Pointer to a structure containing initialization options for
+ * an SPI channel.
+ * \param pba_hz SPI module input clock frequency (PBA clock, Hz).
+ *
+ * \return Divider or error code.
+ * \retval >=0 Success.
+ * \retval <0 Error.
+ */
+static int getBaudDiv(const spi_options_t *options, unsigned int pba_hz)
+{
+ int baudDiv = (pba_hz + options->baudrate / 2) / options->baudrate;
+
+ if (baudDiv <= 0 || baudDiv > 255) {
+ return -1;
+ }
+
+ return baudDiv;
+}
+
+
+void spi_reset(volatile avr32_spi_t *spi)
+{
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+}
+
+
+spi_status_t spi_initSlave(volatile avr32_spi_t *spi,
+ unsigned char bits,
+ unsigned char spi_mode)
+{
+ if (spi_mode > 3 ||
+ bits < 8 || bits > 16) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ // Reset.
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+
+ // Will use CSR0 offsets; these are the same for CSR0 to CSR3.
+ spi->csr0 = ((spi_mode >> 1) << AVR32_SPI_CSR0_CPOL_OFFSET) |
+ (((spi_mode & 0x1) ^ 0x1) << AVR32_SPI_CSR0_NCPHA_OFFSET) |
+ ((bits - 8) << AVR32_SPI_CSR0_BITS_OFFSET);
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_initTest(volatile avr32_spi_t *spi)
+{
+ // Reset.
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+ spi->mr |= AVR32_SPI_MR_MSTR_MASK | // Master Mode.
+ AVR32_SPI_MR_LLB_MASK; // Local Loopback.
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options)
+{
+ u_avr32_spi_mr_t u_avr32_spi_mr;
+
+ if (options->modfdis > 1) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ // Reset.
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+
+ // Master Mode.
+ u_avr32_spi_mr.mr = spi->mr;
+ u_avr32_spi_mr.MR.mstr = 1;
+ u_avr32_spi_mr.MR.modfdis = options->modfdis;
+ u_avr32_spi_mr.MR.llb = 0;
+ u_avr32_spi_mr.MR.pcs = (1 << AVR32_SPI_MR_PCS_SIZE) - 1;
+ spi->mr = u_avr32_spi_mr.mr;
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_selectionMode(volatile avr32_spi_t *spi,
+ unsigned char variable_ps,
+ unsigned char pcs_decode,
+ unsigned char delay)
+{
+ u_avr32_spi_mr_t u_avr32_spi_mr;
+
+ if (variable_ps > 1 ||
+ pcs_decode > 1) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ u_avr32_spi_mr.mr = spi->mr;
+ u_avr32_spi_mr.MR.ps = variable_ps;
+ u_avr32_spi_mr.MR.pcsdec = pcs_decode;
+ u_avr32_spi_mr.MR.dlybcs = delay;
+ spi->mr = u_avr32_spi_mr.mr;
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip)
+{
+#ifdef FREERTOS_USED
+ while (pdFALSE == xSemaphoreTake(xSPIMutex, 20));
+#endif
+
+ // Assert all lines; no peripheral is selected.
+ spi->mr |= AVR32_SPI_MR_PCS_MASK;
+
+ if (spi->mr & AVR32_SPI_MR_PCSDEC_MASK) {
+ // The signal is decoded; allow up to 15 chips.
+ if (chip > 14) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ spi->mr &= ~AVR32_SPI_MR_PCS_MASK | (chip << AVR32_SPI_MR_PCS_OFFSET);
+ } else {
+ if (chip > 3) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ spi->mr &= ~(1 << (AVR32_SPI_MR_PCS_OFFSET + chip));
+ }
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ while (!(spi->sr & AVR32_SPI_SR_TXEMPTY_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ // Assert all lines; no peripheral is selected.
+ spi->mr |= AVR32_SPI_MR_PCS_MASK;
+
+ // Last transfer, so deassert the current NPCS if CSAAT is set.
+ spi->cr = AVR32_SPI_CR_LASTXFER_MASK;
+
+#ifdef FREERTOS_USED
+ xSemaphoreGive(xSPIMutex);
+#endif
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi,
+ const spi_options_t *options,
+ unsigned int pba_hz)
+{
+ u_avr32_spi_csr_t u_avr32_spi_csr;
+
+ if (options->spi_mode > 3 ||
+ options->stay_act > 1 ||
+ options->bits < 8 || options->bits > 16) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ int baudDiv = getBaudDiv(options, pba_hz);
+
+ if (baudDiv < 0) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ // Will use CSR0 offsets; these are the same for CSR0 to CSR3.
+ u_avr32_spi_csr.csr = 0;
+ u_avr32_spi_csr.CSR.cpol = options->spi_mode >> 1;
+ u_avr32_spi_csr.CSR.ncpha = (options->spi_mode & 0x1) ^ 0x1;
+ u_avr32_spi_csr.CSR.csaat = options->stay_act;
+ u_avr32_spi_csr.CSR.bits = options->bits - 8;
+ u_avr32_spi_csr.CSR.scbr = baudDiv;
+ u_avr32_spi_csr.CSR.dlybs = options->spck_delay;
+ u_avr32_spi_csr.CSR.dlybct = options->trans_delay;
+
+ switch(options->reg) {
+ case 0:
+ spi->csr0 = u_avr32_spi_csr.csr;
+ break;
+ case 1:
+ spi->csr1 = u_avr32_spi_csr.csr;
+ break;
+ case 2:
+ spi->csr2 = u_avr32_spi_csr.csr;
+ break;
+ case 3:
+ spi->csr3 = u_avr32_spi_csr.csr;
+ break;
+ default:
+ return SPI_ERROR_ARGUMENT;
+ }
+
+#ifdef FREERTOS_USED
+ if (!xSPIMutex)
+ {
+ // Create the SPI mutex.
+ vSemaphoreCreateBinary(xSPIMutex);
+ if (!xSPIMutex)
+ {
+ while(1);
+ }
+ }
+#endif
+
+ return SPI_OK;
+}
+
+
+void spi_enable(volatile avr32_spi_t *spi)
+{
+ spi->cr = AVR32_SPI_CR_SPIEN_MASK;
+}
+
+
+void spi_disable(volatile avr32_spi_t *spi)
+{
+ spi->cr = AVR32_SPI_CR_SPIDIS_MASK;
+}
+
+
+int spi_is_enabled(volatile avr32_spi_t *spi)
+{
+ return (spi->sr & AVR32_SPI_SR_SPIENS_MASK) != 0;
+}
+
+
+inline unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi)
+{
+ return ((spi->sr & AVR32_SPI_SR_TDRE_MASK) != 0);
+}
+
+
+inline spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ spi->tdr = data << AVR32_SPI_TDR_TD_OFFSET;
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, unsigned short data,
+ unsigned char pcs, unsigned char lastxfer)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ if (pcs > 14 || lastxfer > 1) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ spi->tdr = (data << AVR32_SPI_TDR_TD_OFFSET) |
+ (pcs << AVR32_SPI_TDR_PCS_OFFSET) |
+ (lastxfer << AVR32_SPI_TDR_LASTXFER_OFFSET);
+
+ return SPI_OK;
+}
+
+
+inline unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi)
+{
+ return ((spi->sr & AVR32_SPI_SR_TXEMPTY_MASK) != 0);
+}
+
+
+unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi)
+{
+ return ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0);
+}
+
+
+inline spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=
+ (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ *data = spi->rdr >> AVR32_SPI_RDR_RD_OFFSET;
+
+ return SPI_OK;
+}
+
+
+unsigned char spi_getStatus(volatile avr32_spi_t *spi)
+{
+ spi_status_t ret = SPI_OK;
+ unsigned long sr = spi->sr;
+
+ if (sr & AVR32_SPI_SR_OVRES_MASK) {
+ ret = SPI_ERROR_OVERRUN;
+ }
+
+ if (sr & AVR32_SPI_SR_MODF_MASK) {
+ ret += SPI_ERROR_MODE_FAULT;
+ }
+
+ if (ret == (SPI_ERROR_OVERRUN + SPI_ERROR_MODE_FAULT)) {
+ return SPI_ERROR_OVERRUN_AND_MODE_FAULT;
+ }
+ else if (ret > 0) {
+ return ret;
+ } else {
+ return SPI_OK;
+ }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h
new file mode 100644
index 0000000..6dcc928
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h
@@ -0,0 +1,342 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief SPI driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the SPI interface on AVR32
+ * devices.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _SPI_H_
+#define _SPI_H_
+
+#include <avr32/io.h>
+
+
+//! Time-out value (number of attempts).
+#define SPI_TIMEOUT 10000
+
+
+//! Status codes used by the SPI driver.
+typedef enum
+{
+ SPI_ERROR = -1,
+ SPI_OK = 0,
+ SPI_ERROR_TIMEOUT = 1,
+ SPI_ERROR_ARGUMENT,
+ SPI_ERROR_OVERRUN,
+ SPI_ERROR_MODE_FAULT,
+ SPI_ERROR_OVERRUN_AND_MODE_FAULT
+} spi_status_t;
+
+//! Option structure for SPI channels.
+typedef struct
+{
+ //! The SPI channel to set up.
+ unsigned char reg;
+
+ //! Preferred baudrate for the SPI.
+ unsigned int baudrate;
+
+ //! Number of bits in each character (8 to 16).
+ unsigned char bits;
+
+ //! Delay before first clock pulse after selecting slave (in PBA clock periods).
+ unsigned char spck_delay;
+
+ //! Delay between each transfer/character (in PBA clock periods).
+ unsigned char trans_delay;
+
+ //! Sets this chip to stay active after last transfer to it.
+ unsigned char stay_act;
+
+ //! Which SPI mode to use when transmitting.
+ unsigned char spi_mode;
+
+ //! Disables the mode fault detection.
+ //! With this bit cleared, the SPI master mode will disable itself if another
+ //! master tries to address it.
+ unsigned char modfdis;
+} spi_options_t;
+
+
+/*! \brief Resets the SPI controller.
+ *
+ * \param spi Base address of the SPI instance.
+ */
+extern void spi_reset(volatile avr32_spi_t *spi);
+
+/*! \brief Initializes the SPI in slave mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param bits Number of bits in each transmitted character (8 to 16).
+ * \param spi_mode Clock polarity and phase.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_initSlave(volatile avr32_spi_t *spi,
+ unsigned char bits,
+ unsigned char spi_mode);
+
+/*! \brief Sets up the SPI in a test mode where the transmitter is connected to
+ * the receiver (local loopback).
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ */
+extern spi_status_t spi_initTest(volatile avr32_spi_t *spi);
+
+/*! \brief Initializes the SPI in master mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param options Pointer to a structure containing initialization options.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options);
+
+/*! \brief Sets up how and when the slave chips are selected (master mode only).
+ *
+ * \param spi Base address of the SPI instance.
+ * \param variable_ps Target slave is selected in transfer register for every
+ * character to transmit.
+ * \param pcs_decode The four chip select lines are decoded externally. Values
+ * 0 to 14 can be given to \ref spi_selectChip.
+ * \param delay Delay in PBA periods between chip selects.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_selectionMode(volatile avr32_spi_t *spi,
+ unsigned char variable_ps,
+ unsigned char pcs_decode,
+ unsigned char delay);
+
+/*! \brief Selects slave chip.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0
+ * to 14).
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip);
+
+/*! \brief Unselects slave chip.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0
+ * to 14).
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ *
+ * \note Will block program execution until time-out occurs if last transmission
+ * is not complete. Invoke \ref spi_writeEndCheck beforehand if needed.
+ */
+extern spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip);
+
+/*! \brief Sets options for a specific slave chip.
+ *
+ * The baudrate field has to be written before transfer in master mode. Four
+ * similar registers exist, one for each slave. When using encoded slave
+ * addressing, reg=0 sets options for slaves 0 to 3, reg=1 for slaves 4 to 7 and
+ * so on.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param options Pointer to a structure containing initialization options for
+ * an SPI channel.
+ * \param pba_hz SPI module input clock frequency (PBA clock, Hz).
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi,
+ const spi_options_t *options,
+ unsigned int pba_hz);
+
+/*! \brief Enables the SPI.
+ *
+ * \param spi Base address of the SPI instance.
+ */
+extern void spi_enable(volatile avr32_spi_t *spi);
+
+/*! \brief Disables the SPI.
+ *
+ * Ensures that nothing is transferred while setting up buffers.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \warning This may cause data loss if used on a slave SPI.
+ */
+extern void spi_disable(volatile avr32_spi_t *spi);
+
+/*! \brief Tests if the SPI is enabled.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return \c 1 if the SPI is enabled, otherwise \c 0.
+ */
+extern int spi_is_enabled(volatile avr32_spi_t *spi);
+
+/*! \brief Checks if there is no data in the transmit register.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval 1 No data in TDR.
+ * \retval 0 Some data in TDR.
+ */
+extern unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi);
+
+/*! \brief Writes one data word in master fixed peripheral select mode or in
+ * slave mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param data The data word to write.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ *
+ * \note Will block program execution until time-out occurs if transmitter is
+ * busy and transmit buffer is full. Invoke
+ * \ref spi_writeRegisterEmptyCheck beforehand if needed.
+ *
+ * \note Once the data has been written to the transmit buffer, the end of
+ * transmission is not waited for. Invoke \ref spi_writeEndCheck if
+ * needed.
+ */
+extern spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data);
+
+/*! \brief Selects a slave in master variable peripheral select mode and writes
+ * one data word to it.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param data The data word to write.
+ * \param pcs Slave selector (bit 0 -> nCS line 0, bit 1 -> nCS line 1,
+ * etc.).
+ * \param lastxfer Boolean indicating whether this is the last data word
+ * transfer.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ *
+ * \note Will block program execution until time-out occurs if transmitter is
+ * busy and transmit buffer is full. Invoke
+ * \ref spi_writeRegisterEmptyCheck beforehand if needed.
+ *
+ * \note Once the data has been written to the transmit buffer, the end of
+ * transmission is not waited for. Invoke \ref spi_writeEndCheck if
+ * needed.
+ */
+extern spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi,
+ unsigned short data,
+ unsigned char pcs,
+ unsigned char lastxfer);
+
+/*! \brief Checks if all transmissions are complete.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval 1 All transmissions complete.
+ * \retval 0 Transmissions not complete.
+ */
+extern unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi);
+
+/*! \brief Checks if there is data in the receive register.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval 1 Some data in RDR.
+ * \retval 0 No data in RDR.
+ */
+extern unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi);
+
+/*! \brief Reads one data word in master mode or in slave mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param data Pointer to the location where to store the received data word.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ *
+ * \note Will block program execution until time-out occurs if no data is
+ * received or last transmission is not complete. Invoke
+ * \ref spi_writeEndCheck or \ref spi_readRegisterFullCheck beforehand if
+ * needed.
+ */
+extern spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data);
+
+/*! \brief Gets status information from the SPI.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_OVERRUN Overrun error.
+ * \retval SPI_ERROR_MODE_FAULT Mode fault (SPI addressed as slave
+ * while in master mode).
+ * \retval SPI_ERROR_OVERRUN_AND_MODE_FAULT Overrun error and mode fault.
+ */
+extern unsigned char spi_getStatus(volatile avr32_spi_t *spi);
+
+
+#endif // _SPI_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c
new file mode 100644
index 0000000..225642e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c
@@ -0,0 +1,314 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief TC driver for AVR32 UC3.
+ *
+ * AVR32 Timer/Counter driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a TC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "compiler.h"
+#include "tc.h"
+
+
+int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ return tc->channel[channel].imr;
+}
+
+
+int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // Enable the appropriate interrupts.
+ tc->channel[channel].ier = bitfield->etrgs << AVR32_TC_ETRGS_OFFSET |
+ bitfield->ldrbs << AVR32_TC_LDRBS_OFFSET |
+ bitfield->ldras << AVR32_TC_LDRAS_OFFSET |
+ bitfield->cpcs << AVR32_TC_CPCS_OFFSET |
+ bitfield->cpbs << AVR32_TC_CPBS_OFFSET |
+ bitfield->cpas << AVR32_TC_CPAS_OFFSET |
+ bitfield->lovrs << AVR32_TC_LOVRS_OFFSET |
+ bitfield->covfs << AVR32_TC_COVFS_OFFSET;
+
+ // Disable the appropriate interrupts.
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ tc->channel[channel].idr = (~bitfield->etrgs & 1) << AVR32_TC_ETRGS_OFFSET |
+ (~bitfield->ldrbs & 1) << AVR32_TC_LDRBS_OFFSET |
+ (~bitfield->ldras & 1) << AVR32_TC_LDRAS_OFFSET |
+ (~bitfield->cpcs & 1) << AVR32_TC_CPCS_OFFSET |
+ (~bitfield->cpbs & 1) << AVR32_TC_CPBS_OFFSET |
+ (~bitfield->cpas & 1) << AVR32_TC_CPAS_OFFSET |
+ (~bitfield->lovrs & 1) << AVR32_TC_LOVRS_OFFSET |
+ (~bitfield->covfs & 1) << AVR32_TC_COVFS_OFFSET;
+ tc->channel[channel].sr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+
+ return 0;
+}
+
+
+int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS || ext_clk_sig_src >= 1 << AVR32_TC_BMR_TC0XC0S_SIZE)
+ return TC_INVALID_ARGUMENT;
+
+ // Clear bit-field and set the correct behavior.
+ tc->bmr = (tc->bmr & ~(AVR32_TC_BMR_TC0XC0S_MASK << (channel * AVR32_TC_BMR_TC0XC0S_SIZE))) |
+ (ext_clk_sig_src << (channel * AVR32_TC_BMR_TC0XC0S_SIZE));
+
+ return 0;
+}
+
+
+int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt)
+{
+ // Check for valid input.
+ if (opt->channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // MEASURE SIGNALS: Capture operating mode.
+ tc->channel[opt->channel].cmr = opt->ldrb << AVR32_TC_LDRB_OFFSET |
+ opt->ldra << AVR32_TC_LDRA_OFFSET |
+ 0 << AVR32_TC_WAVE_OFFSET |
+ opt->cpctrg << AVR32_TC_CPCTRG_OFFSET |
+ opt->abetrg << AVR32_TC_ABETRG_OFFSET |
+ opt->etrgedg << AVR32_TC_ETRGEDG_OFFSET|
+ opt->ldbdis << AVR32_TC_LDBDIS_OFFSET |
+ opt->ldbstop << AVR32_TC_LDBSTOP_OFFSET |
+ opt->burst << AVR32_TC_BURST_OFFSET |
+ opt->clki << AVR32_TC_CLKI_OFFSET |
+ opt->tcclks << AVR32_TC_TCCLKS_OFFSET;
+
+ return 0;
+}
+
+
+int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt)
+{
+ // Check for valid input.
+ if (opt->channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // GENERATE SIGNALS: Waveform operating mode.
+ tc->channel[opt->channel].cmr = opt->bswtrg << AVR32_TC_BSWTRG_OFFSET |
+ opt->beevt << AVR32_TC_BEEVT_OFFSET |
+ opt->bcpc << AVR32_TC_BCPC_OFFSET |
+ opt->bcpb << AVR32_TC_BCPB_OFFSET |
+ opt->aswtrg << AVR32_TC_ASWTRG_OFFSET |
+ opt->aeevt << AVR32_TC_AEEVT_OFFSET |
+ opt->acpc << AVR32_TC_ACPC_OFFSET |
+ opt->acpa << AVR32_TC_ACPA_OFFSET |
+ 1 << AVR32_TC_WAVE_OFFSET |
+ opt->wavsel << AVR32_TC_WAVSEL_OFFSET |
+ opt->enetrg << AVR32_TC_ENETRG_OFFSET |
+ opt->eevt << AVR32_TC_EEVT_OFFSET |
+ opt->eevtedg << AVR32_TC_EEVTEDG_OFFSET |
+ opt->cpcdis << AVR32_TC_CPCDIS_OFFSET |
+ opt->cpcstop << AVR32_TC_CPCSTOP_OFFSET |
+ opt->burst << AVR32_TC_BURST_OFFSET |
+ opt->clki << AVR32_TC_CLKI_OFFSET |
+ opt->tcclks << AVR32_TC_TCCLKS_OFFSET;
+
+ return 0;
+}
+
+
+int tc_start(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // Enable, reset and start the selected timer/counter channel.
+ tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK | AVR32_TC_CLKEN_MASK;
+
+ return 0;
+}
+
+
+int tc_stop(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // Disable the selected timer/counter channel.
+ tc->channel[channel].ccr = AVR32_TC_CLKDIS_MASK;
+
+ return 0;
+}
+
+
+int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // Reset the selected timer/counter channel.
+ tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK;
+
+ return 0;
+}
+
+
+void tc_sync_trigger(volatile avr32_tc_t *tc)
+{
+ // Reset all channels of the selected timer/counter.
+ tc->bcr = AVR32_TC_BCR_SYNC_MASK;
+}
+
+
+void tc_sync_start(volatile avr32_tc_t *tc)
+{
+ unsigned int i;
+ // Enable the clock for each channel.
+ for(i=0; i<TC_NUMBER_OF_CHANNELS;i++)
+ tc->channel[i].ccr = AVR32_TC_CLKEN_MASK;
+
+ // Reset all channels of the selected timer/counter.
+ tc->bcr = AVR32_TC_BCR_SYNC_MASK;
+}
+
+
+int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ return tc->channel[channel].sr;
+}
+
+
+int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ return Rd_bitfield(tc->channel[channel].cv, AVR32_TC_CV_MASK);
+}
+
+
+int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ return Rd_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK);
+}
+
+
+int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ return Rd_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK);
+}
+
+
+int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ return Rd_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK);
+}
+
+
+int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // This function is only available in WAVEFORM mode.
+ if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK))
+ Wr_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK, value);
+
+ return value;
+}
+
+
+int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // This function is only available in WAVEFORM mode.
+ if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK))
+ Wr_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK, value);
+
+ return value;
+}
+
+
+int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value)
+{
+ // Check for valid input.
+ if (channel >= TC_NUMBER_OF_CHANNELS)
+ return TC_INVALID_ARGUMENT;
+
+ // This function is only available in WAVEFORM mode.
+ if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK))
+ Wr_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK, value);
+
+ return value;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h
new file mode 100644
index 0000000..45ef4f2
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h
@@ -0,0 +1,591 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Timer/Counter driver for AVR32 UC3.
+ *
+ * AVR32 Timer/Counter driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a TC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _TC_H_
+#define _TC_H_
+
+#include <avr32/io.h>
+
+
+//! TC driver functions return value in case of invalid argument(s).
+#define TC_INVALID_ARGUMENT (-1)
+
+//! Number of timer/counter channels.
+#define TC_NUMBER_OF_CHANNELS (sizeof(((avr32_tc_t *)0)->channel) / sizeof(avr32_tc_channel_t))
+
+/*! \name External Clock Signal 0 Selection
+ */
+//! @{
+#define TC_CH0_EXT_CLK0_SRC_TCLK0 AVR32_TC_TC0XC0S_TCLK0
+#define TC_CH0_EXT_CLK0_SRC_NO_CLK AVR32_TC_TC0XC0S_NO_CLK
+#define TC_CH0_EXT_CLK0_SRC_TIOA1 AVR32_TC_TC0XC0S_TIOA1
+#define TC_CH0_EXT_CLK0_SRC_TIOA2 AVR32_TC_TC0XC0S_TIOA2
+//! @}
+
+/*! \name External Clock Signal 1 Selection
+ */
+//! @{
+#define TC_CH1_EXT_CLK1_SRC_TCLK1 AVR32_TC_TC1XC1S_TCLK1
+#define TC_CH1_EXT_CLK1_SRC_NO_CLK AVR32_TC_TC1XC1S_NO_CLK
+#define TC_CH1_EXT_CLK1_SRC_TIOA0 AVR32_TC_TC1XC1S_TIOA0
+#define TC_CH1_EXT_CLK1_SRC_TIOA2 AVR32_TC_TC1XC1S_TIOA2
+//! @}
+
+/*! \name External Clock Signal 2 Selection
+ */
+//! @{
+#define TC_CH2_EXT_CLK2_SRC_TCLK2 AVR32_TC_TC2XC2S_TCLK2
+#define TC_CH2_EXT_CLK2_SRC_NO_CLK AVR32_TC_TC2XC2S_NO_CLK
+#define TC_CH2_EXT_CLK2_SRC_TIOA0 AVR32_TC_TC2XC2S_TIOA0
+#define TC_CH2_EXT_CLK2_SRC_TIOA1 AVR32_TC_TC2XC2S_TIOA1
+//! @}
+
+/*! \name Event/Trigger Actions on Output
+ */
+//! @{
+#define TC_EVT_EFFECT_NOOP AVR32_TC_NONE
+#define TC_EVT_EFFECT_SET AVR32_TC_SET
+#define TC_EVT_EFFECT_CLEAR AVR32_TC_CLEAR
+#define TC_EVT_EFFECT_TOGGLE AVR32_TC_TOGGLE
+//! @}
+
+/*! \name RC Compare Trigger Enable
+ */
+//! @{
+#define TC_NO_TRIGGER_COMPARE_RC 0
+#define TC_TRIGGER_COMPARE_RC 1
+//! @}
+
+/*! \name Waveform Selection
+ */
+//! @{
+#define TC_WAVEFORM_SEL_UP_MODE AVR32_TC_WAVSEL_UP_NO_AUTO
+#define TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UP_AUTO
+#define TC_WAVEFORM_SEL_UPDOWN_MODE AVR32_TC_WAVSEL_UPDOWN_NO_AUTO
+#define TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UPDOWN_AUTO
+//! @}
+
+/*! \name TIOA or TIOB External Trigger Selection
+ */
+//! @{
+#define TC_EXT_TRIG_SEL_TIOA 1
+#define TC_EXT_TRIG_SEL_TIOB 0
+//! @}
+
+/*! \name External Event Selection
+ */
+//! @{
+#define TC_EXT_EVENT_SEL_TIOB_INPUT AVR32_TC_EEVT_TIOB_INPUT
+#define TC_EXT_EVENT_SEL_XC0_OUTPUT AVR32_TC_EEVT_XC0_OUTPUT
+#define TC_EXT_EVENT_SEL_XC1_OUTPUT AVR32_TC_EEVT_XC1_OUTPUT
+#define TC_EXT_EVENT_SEL_XC2_OUTPUT AVR32_TC_EEVT_XC2_OUTPUT
+//! @}
+
+/*! \name Edge Selection
+ */
+//! @{
+#define TC_SEL_NO_EDGE AVR32_TC_EEVTEDG_NO_EDGE
+#define TC_SEL_RISING_EDGE AVR32_TC_EEVTEDG_POS_EDGE
+#define TC_SEL_FALLING_EDGE AVR32_TC_EEVTEDG_NEG_EDGE
+#define TC_SEL_EACH_EDGE AVR32_TC_EEVTEDG_BOTH_EDGES
+//! @}
+
+/*! \name Burst Signal Selection
+ */
+//! @{
+#define TC_BURST_NOT_GATED AVR32_TC_BURST_NOT_GATED
+#define TC_BURST_CLK_AND_XC0 AVR32_TC_BURST_CLK_AND_XC0
+#define TC_BURST_CLK_AND_XC1 AVR32_TC_BURST_CLK_AND_XC1
+#define TC_BURST_CLK_AND_XC2 AVR32_TC_BURST_CLK_AND_XC2
+//! @}
+
+/*! \name Clock Invert
+ */
+//! @{
+#define TC_CLOCK_RISING_EDGE 0
+#define TC_CLOCK_FALLING_EDGE 1
+//! @}
+
+/*! \name Clock Selection
+ */
+//! @{
+#define TC_CLOCK_SOURCE_TC1 AVR32_TC_TCCLKS_TIMER_CLOCK1
+#define TC_CLOCK_SOURCE_TC2 AVR32_TC_TCCLKS_TIMER_CLOCK2
+#define TC_CLOCK_SOURCE_TC3 AVR32_TC_TCCLKS_TIMER_CLOCK3
+#define TC_CLOCK_SOURCE_TC4 AVR32_TC_TCCLKS_TIMER_CLOCK4
+#define TC_CLOCK_SOURCE_TC5 AVR32_TC_TCCLKS_TIMER_CLOCK5
+#define TC_CLOCK_SOURCE_XC0 AVR32_TC_TCCLKS_XC0
+#define TC_CLOCK_SOURCE_XC1 AVR32_TC_TCCLKS_XC1
+#define TC_CLOCK_SOURCE_XC2 AVR32_TC_TCCLKS_XC2
+//! @}
+
+
+//! Timer/counter interrupts.
+typedef struct
+{
+ unsigned int :24;
+
+ //! External trigger interrupt.
+ unsigned int etrgs : 1;
+
+ //! RB load interrupt.
+ unsigned int ldrbs : 1;
+
+ //! RA load interrupt.
+ unsigned int ldras : 1;
+
+ //! RC compare interrupt.
+ unsigned int cpcs : 1;
+
+ //! RB compare interrupt.
+ unsigned int cpbs : 1;
+
+ //! RA compare interrupt.
+ unsigned int cpas : 1;
+
+ //! Load overrun interrupt.
+ unsigned int lovrs : 1;
+
+ //! Counter overflow interrupt.
+ unsigned int covfs : 1;
+} tc_interrupt_t;
+
+//! Parameters when initializing a timer/counter in capture mode.
+typedef struct
+{
+ //! Channel to initialize.
+ unsigned int channel ;
+
+ unsigned int :12;
+
+ //! RB loading selection:\n
+ //! - \ref TC_SEL_NO_EDGE;\n
+ //! - \ref TC_SEL_RISING_EDGE;\n
+ //! - \ref TC_SEL_FALLING_EDGE;\n
+ //! - \ref TC_SEL_EACH_EDGE.
+ unsigned int ldrb : 2;
+
+ //! RA loading selection:\n
+ //! - \ref TC_SEL_NO_EDGE;\n
+ //! - \ref TC_SEL_RISING_EDGE;\n
+ //! - \ref TC_SEL_FALLING_EDGE;\n
+ //! - \ref TC_SEL_EACH_EDGE.
+ unsigned int ldra : 2;
+
+ unsigned int : 1;
+
+ //! RC compare trigger enable:\n
+ //! - \ref TC_NO_TRIGGER_COMPARE_RC;\n
+ //! - \ref TC_TRIGGER_COMPARE_RC.
+ unsigned int cpctrg : 1;
+
+ unsigned int : 3;
+
+ //! TIOA or TIOB external trigger selection:\n
+ //! - \ref TC_EXT_TRIG_SEL_TIOA;\n
+ //! - \ref TC_EXT_TRIG_SEL_TIOB.
+ unsigned int abetrg : 1;
+
+ //! External trigger edge selection:\n
+ //! - \ref TC_SEL_NO_EDGE;\n
+ //! - \ref TC_SEL_RISING_EDGE;\n
+ //! - \ref TC_SEL_FALLING_EDGE;\n
+ //! - \ref TC_SEL_EACH_EDGE.
+ unsigned int etrgedg : 2;
+
+ //! Counter clock disable with RB loading:\n
+ //! - \c FALSE;\n
+ //! - \c TRUE.
+ unsigned int ldbdis : 1;
+
+ //! Counter clock stopped with RB loading:\n
+ //! - \c FALSE;\n
+ //! - \c TRUE.
+ unsigned int ldbstop : 1;
+
+ //! Burst signal selection:\n
+ //! - \ref TC_BURST_NOT_GATED;\n
+ //! - \ref TC_BURST_CLK_AND_XC0;\n
+ //! - \ref TC_BURST_CLK_AND_XC1;\n
+ //! - \ref TC_BURST_CLK_AND_XC2.
+ unsigned int burst : 2;
+
+ //! Clock invert:\n
+ //! - \ref TC_CLOCK_RISING_EDGE;\n
+ //! - \ref TC_CLOCK_FALLING_EDGE.
+ unsigned int clki : 1;
+
+ //! Clock selection:\n
+ //! - \ref TC_CLOCK_SOURCE_TC1;\n
+ //! - \ref TC_CLOCK_SOURCE_TC2;\n
+ //! - \ref TC_CLOCK_SOURCE_TC3;\n
+ //! - \ref TC_CLOCK_SOURCE_TC4;\n
+ //! - \ref TC_CLOCK_SOURCE_TC5;\n
+ //! - \ref TC_CLOCK_SOURCE_XC0;\n
+ //! - \ref TC_CLOCK_SOURCE_XC1;\n
+ //! - \ref TC_CLOCK_SOURCE_XC2.
+ unsigned int tcclks : 3;
+} tc_capture_opt_t;
+
+//! Parameters when initializing a timer/counter in waveform mode.
+typedef struct
+{
+ //! Channel to initialize.
+ unsigned int channel ;
+
+ //! Software trigger effect on TIOB:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int bswtrg : 2;
+
+ //! External event effect on TIOB:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int beevt : 2;
+
+ //! RC compare effect on TIOB:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int bcpc : 2;
+
+ //! RB compare effect on TIOB:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int bcpb : 2;
+
+ //! Software trigger effect on TIOA:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int aswtrg : 2;
+
+ //! External event effect on TIOA:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int aeevt : 2;
+
+ //! RC compare effect on TIOA:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int acpc : 2;
+
+ //! RA compare effect on TIOA:\n
+ //! - \ref TC_EVT_EFFECT_NOOP;\n
+ //! - \ref TC_EVT_EFFECT_SET;\n
+ //! - \ref TC_EVT_EFFECT_CLEAR;\n
+ //! - \ref TC_EVT_EFFECT_TOGGLE.
+ unsigned int acpa : 2;
+
+ unsigned int : 1;
+
+ //! Waveform selection:\n
+ //! - \ref TC_WAVEFORM_SEL_UP_MODE;\n
+ //! - \ref TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER;\n
+ //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE;\n
+ //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER.
+ unsigned int wavsel : 2;
+
+ //! External event trigger enable:\n
+ //! - \c FALSE;\n
+ //! - \c TRUE.
+ unsigned int enetrg : 1;
+
+ //! External event selection:\n
+ //! - \ref TC_EXT_EVENT_SEL_TIOB_INPUT;\n
+ //! - \ref TC_EXT_EVENT_SEL_XC0_OUTPUT;\n
+ //! - \ref TC_EXT_EVENT_SEL_XC1_OUTPUT;\n
+ //! - \ref TC_EXT_EVENT_SEL_XC2_OUTPUT.
+ unsigned int eevt : 2;
+
+ //! External event edge selection:\n
+ //! - \ref TC_SEL_NO_EDGE;\n
+ //! - \ref TC_SEL_RISING_EDGE;\n
+ //! - \ref TC_SEL_FALLING_EDGE;\n
+ //! - \ref TC_SEL_EACH_EDGE.
+ unsigned int eevtedg : 2;
+
+ //! Counter clock disable with RC compare:\n
+ //! - \c FALSE;\n
+ //! - \c TRUE.
+ unsigned int cpcdis : 1;
+
+ //! Counter clock stopped with RC compare:\n
+ //! - \c FALSE;\n
+ //! - \c TRUE.
+ unsigned int cpcstop : 1;
+
+ //! Burst signal selection:\n
+ //! - \ref TC_BURST_NOT_GATED;\n
+ //! - \ref TC_BURST_CLK_AND_XC0;\n
+ //! - \ref TC_BURST_CLK_AND_XC1;\n
+ //! - \ref TC_BURST_CLK_AND_XC2.
+ unsigned int burst : 2;
+
+ //! Clock invert:\n
+ //! - \ref TC_CLOCK_RISING_EDGE;\n
+ //! - \ref TC_CLOCK_FALLING_EDGE.
+ unsigned int clki : 1;
+
+ //! Clock selection:\n
+ //! - \ref TC_CLOCK_SOURCE_TC1;\n
+ //! - \ref TC_CLOCK_SOURCE_TC2;\n
+ //! - \ref TC_CLOCK_SOURCE_TC3;\n
+ //! - \ref TC_CLOCK_SOURCE_TC4;\n
+ //! - \ref TC_CLOCK_SOURCE_TC5;\n
+ //! - \ref TC_CLOCK_SOURCE_XC0;\n
+ //! - \ref TC_CLOCK_SOURCE_XC1;\n
+ //! - \ref TC_CLOCK_SOURCE_XC2.
+ unsigned int tcclks : 3;
+} tc_waveform_opt_t;
+
+
+/*! \brief Reads timer/counter interrupt settings.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval >=0 The interrupt enable configuration organized according to \ref tc_interrupt_t.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Enables various timer/counter interrupts.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ * \param bitfield The interrupt enable configuration.
+ *
+ * \retval 0 Success.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield);
+
+/*! \brief Selects which external clock to use and how to configure it.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ * \param ext_clk_sig_src External clock signal selection:
+ * \arg \c TC_CH0_EXT_CLK0_SRC_TCLK0;
+ * \arg \c TC_CH0_EXT_CLK0_SRC_NO_CLK;
+ * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA1;
+ * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA2;
+ * \arg \c TC_CH1_EXT_CLK1_SRC_TCLK1;
+ * \arg \c TC_CH1_EXT_CLK1_SRC_NO_CLK;
+ * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA0;
+ * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA2;
+ * \arg \c TC_CH2_EXT_CLK2_SRC_TCLK2;
+ * \arg \c TC_CH2_EXT_CLK2_SRC_NO_CLK;
+ * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA0;
+ * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA1.
+ *
+ * \retval 0 Success.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src);
+
+/*! \brief Sets options for timer/counter capture initialization.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param opt Options for capture mode.
+ *
+ * \retval 0 Success.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt);
+
+/*! \brief Sets options for timer/counter waveform initialization.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param opt Options for waveform generation.
+ *
+ * \retval 0 Success.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt);
+
+/*! \brief Starts a timer/counter.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval 0 Success.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_start(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Stops a timer/counter.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval 0 Success.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_stop(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Performs a software trigger: the counter is reset and the clock is started.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval 0 Success.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Asserts a SYNC signal to generate a software trigger and reset all channels.
+ *
+ * \param tc Pointer to the TC instance to access.
+ */
+extern void tc_sync_trigger(volatile avr32_tc_t *tc);
+
+/*! \brief Start all TC channels simultaneously.
+ *
+ * \param tc Pointer to the TC instance to access.
+ */
+extern void tc_sync_start(volatile avr32_tc_t *tc);
+
+/*! \brief Reads the status register.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval >=0 Status register value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Reads the channel's TC counter and returns the value.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval >=0 TC counter value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Reads the channel's RA register and returns the value.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval >=0 RA register value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Reads the channel's RB register and returns the value.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval >=0 RB register value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Reads the channel's RC register and returns the value.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ *
+ * \retval >=0 RC register value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel);
+
+/*! \brief Writes a value to the channel's RA register.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ * \param value Value to write to the RA register.
+ *
+ * \retval >=0 Written value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value);
+
+/*! \brief Writes a value to the channel's RB register.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ * \param value Value to write to the RB register.
+ *
+ * \retval >=0 Written value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value);
+
+/*! \brief Writes a value to the channel's RC register.
+ *
+ * \param tc Pointer to the TC instance to access.
+ * \param channel The TC instance channel to access.
+ * \param value Value to write to the RC register.
+ *
+ * \retval >=0 Written value.
+ * \retval TC_INVALID_ARGUMENT Invalid argument(s).
+ */
+extern int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value);
+
+
+#endif // _TC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c
new file mode 100644
index 0000000..b95882a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c
@@ -0,0 +1,914 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief USART driver for AVR32 UC3.
+ *
+ * This file contains basic functions for the AVR32 USART, with support for all
+ * modes, settings and clock speeds.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "usart.h"
+
+
+//------------------------------------------------------------------------------
+/*! \name Private Functions
+ */
+//! @{
+
+
+/*! \brief Checks if the USART is in multidrop mode.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART is in multidrop mode, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+static __inline__ int usart_mode_is_multidrop(volatile avr32_usart_t *usart)
+{
+ return ((usart->mr >> AVR32_USART_MR_PAR_OFFSET) & AVR32_USART_MR_PAR_MULTI) == AVR32_USART_MR_PAR_MULTI;
+}
+
+
+/*! \brief Calculates a clock divider (\e CD) and a fractional part (\e FP) for
+ * the USART asynchronous modes to generate a baud rate as close as
+ * possible to the baud rate set point.
+ *
+ * Baud rate calculation:
+ * \f$ Baudrate = \frac{SelectedClock}{Over \times (CD + \frac{FP}{8})} \f$, \e Over being 16 or 8.
+ * The maximal oversampling is selected if it allows to generate a baud rate close to the set point.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency.
+ */
+static int usart_set_async_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz)
+{
+ unsigned int over = (pba_hz >= 16 * baudrate) ? 16 : 8;
+ unsigned int cd_fp = ((1 << AVR32_USART_BRGR_FP_SIZE) * pba_hz + (over * baudrate) / 2) / (over * baudrate);
+ unsigned int cd = cd_fp >> AVR32_USART_BRGR_FP_SIZE;
+ unsigned int fp = cd_fp & ((1 << AVR32_USART_BRGR_FP_SIZE) - 1);
+
+ if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK |
+ AVR32_USART_MR_SYNC_MASK |
+ AVR32_USART_MR_OVER_MASK)) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET |
+ ((over == 16) ? AVR32_USART_MR_OVER_X16 : AVR32_USART_MR_OVER_X8) << AVR32_USART_MR_OVER_OFFSET;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET |
+ fp << AVR32_USART_BRGR_FP_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Calculates a clock divider (\e CD) for the USART synchronous master
+ * modes to generate a baud rate as close as possible to the baud rate
+ * set point.
+ *
+ * Baud rate calculation:
+ * \f$ Baudrate = \frac{SelectedClock}{CD} \f$.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency.
+ */
+static int usart_set_sync_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz)
+{
+ unsigned int cd = (pba_hz + baudrate / 2) / baudrate;
+
+ if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET |
+ AVR32_USART_MR_SYNC_MASK;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Selects the SCK pin as the source of baud rate for the USART
+ * synchronous slave modes.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ */
+static int usart_set_sync_slave_baudrate(volatile avr32_usart_t *usart)
+{
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET |
+ AVR32_USART_MR_SYNC_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Calculates a clock divider (\e CD) for the USART ISO7816 mode to
+ * generate an ISO7816 clock as close as possible to the clock set point.
+ *
+ * ISO7816 clock calculation:
+ * \f$ Clock = \frac{SelectedClock}{CD} \f$.
+ *
+ * \param usart Base address of the USART instance.
+ * \param clock ISO7816 clock set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS ISO7816 clock successfully initialized.
+ * \retval USART_INVALID_INPUT ISO7816 clock set point is out of range for the given input clock frequency.
+ */
+static int usart_set_iso7816_clock(volatile avr32_usart_t *usart, unsigned int clock, unsigned long pba_hz)
+{
+ unsigned int cd = (pba_hz + clock / 2) / clock;
+
+ if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK |
+ AVR32_USART_MR_SYNC_MASK |
+ AVR32_USART_MR_OVER_MASK)) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET |
+ AVR32_USART_MR_OVER_X16 << AVR32_USART_MR_OVER_OFFSET;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+
+/*! \brief Calculates a clock divider (\e CD) for the USART SPI master mode to
+ * generate a baud rate as close as possible to the baud rate set point.
+ *
+ * Baud rate calculation:
+ * \f$ Baudrate = \frac{SelectedClock}{CD} \f$.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency.
+ */
+static int usart_set_spi_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz)
+{
+ unsigned int cd = (pba_hz + baudrate / 2) / baudrate;
+
+ if (cd < 4 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Selects the SCK pin as the source of baud rate for the USART SPI
+ * slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ */
+static int usart_set_spi_slave_baudrate(volatile avr32_usart_t *usart)
+{
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+#endif // USART rev. >= 4.0.0
+
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+/*! \name Initialization Functions
+ */
+//! @{
+
+
+void usart_reset(volatile avr32_usart_t *usart)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ // Disable all USART interrupts.
+ // Interrupts needed should be set explicitly on every reset.
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ usart->idr = 0xFFFFFFFF;
+ usart->csr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+
+ // Reset mode and other registers that could cause unpredictable behavior after reset.
+ usart->mr = 0;
+ usart->rtor = 0;
+ usart->ttgr = 0;
+
+ // Shutdown TX and RX (will be re-enabled when setup has successfully completed),
+ // reset status bits and turn off DTR and RTS.
+ usart->cr = AVR32_USART_CR_RSTRX_MASK |
+ AVR32_USART_CR_RSTTX_MASK |
+ AVR32_USART_CR_RSTSTA_MASK |
+ AVR32_USART_CR_RSTIT_MASK |
+ AVR32_USART_CR_RSTNACK_MASK |
+#ifndef AVR32_USART_440_H_INCLUDED
+// Note: Modem Signal Management DTR-DSR-DCD-RI are not included in USART rev.440.
+ AVR32_USART_CR_DTRDIS_MASK |
+#endif
+ AVR32_USART_CR_RTSDIS_MASK;
+}
+
+
+int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_async_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1, 1.5 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET;
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits == 1 || opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET;
+
+ // Setup complete; enable communication.
+ // Enable only output as input is not possible in synchronous mode without
+ // transferring clock.
+ usart->cr = AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set hardware handshaking mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_HARDWARE << AVR32_USART_MR_MODE_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set modem mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_MODEM << AVR32_USART_MR_MODE_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits == 1 || opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_CLKO_MASK;
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits == 1 || opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_sync_slave_baudrate(usart) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET;
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set RS485 mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_RS485 << AVR32_USART_MR_MODE_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt,
+ long pba_hz, unsigned char irda_filter)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set IrDA filter.
+ usart->ifr = irda_filter;
+
+ // Set IrDA mode and activate filtering of input.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MODE_IRDA << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_FILTER_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->paritytype > 1)
+ return USART_INVALID_INPUT;
+
+ if (t == 0)
+ {
+ // Set USART mode to ISO7816, T=0.
+ // The T=0 protocol always uses 2 stop bits.
+ usart->mr = AVR32_USART_MR_MODE_ISO7816_T0 << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET |
+ opt->bit_order << AVR32_USART_MR_MSBF_OFFSET; // Allow MSBF in T=0.
+ }
+ else if (t == 1)
+ {
+ // Only LSB first in the T=1 protocol.
+ // max_iterations field is only used in T=0 mode.
+ if (opt->bit_order != 0 ||
+ opt->max_iterations != 0)
+ return USART_INVALID_INPUT;
+
+ // Set USART mode to ISO7816, T=1.
+ // The T=1 protocol always uses 1 stop bit.
+ usart->mr = AVR32_USART_MR_MODE_ISO7816_T1 << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_NBSTOP_1 << AVR32_USART_MR_NBSTOP_OFFSET;
+ }
+ else
+ return USART_INVALID_INPUT;
+
+ if (usart_set_iso7816_clock(usart, opt->iso7816_hz, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set FIDI register: bit rate = selected clock/FI_DI_ratio/16.
+ usart->fidi = opt->fidi_ratio;
+
+ // Set ISO7816 spesific options in the MODE register.
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ AVR32_USART_MR_CLKO_MASK | // Enable clock output.
+ opt->inhibit_nack << AVR32_USART_MR_INACK_OFFSET |
+ opt->dis_suc_nack << AVR32_USART_MR_DSNACK_OFFSET |
+ opt->max_iterations << AVR32_USART_MR_MAX_ITERATION_OFFSET;
+
+ // Setup complete; enable the receiver by default.
+ usart_iso7816_enable_receiver(usart);
+
+ return USART_SUCCESS;
+}
+
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+
+int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ usart->mr |= AVR32_USART_MR_MODE_LIN_MASTER << AVR32_USART_MR_MODE_OFFSET; // LIN master mode.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ usart->mr |= AVR32_USART_MR_MODE_LIN_SLAVE << AVR32_USART_MR_MODE_OFFSET; // LIN slave mode.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->spimode > 3 ||
+ opt->channelmode > 3 ||
+ usart_set_spi_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= AVR32_USART_MR_MODE_SPI_MASTER << AVR32_USART_MR_MODE_OFFSET | // SPI master mode.
+ ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase.
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode.
+ (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET | // SPI clock polarity.
+ AVR32_USART_MR_CLKO_MASK; // Drive SCK pin.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->spimode > 3 ||
+ opt->channelmode > 3 ||
+ usart_set_spi_slave_baudrate(usart) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= AVR32_USART_MR_MODE_SPI_SLAVE << AVR32_USART_MR_MODE_OFFSET | // SPI slave mode.
+ ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase.
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode.
+ (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET; // SPI clock polarity.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+#endif // USART rev. >= 4.0.0
+
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+
+/*! \name SPI Control Functions
+ */
+//! @{
+
+
+int usart_spi_selectChip(volatile avr32_usart_t *usart)
+{
+ // Force the SPI chip select.
+ usart->cr = AVR32_USART_CR_RTSEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_spi_unselectChip(volatile avr32_usart_t *usart)
+{
+ int timeout = USART_DEFAULT_TIMEOUT;
+
+ do
+ {
+ if (!timeout--) return USART_FAILURE;
+ } while (!usart_tx_empty(usart));
+
+ // Release the SPI chip select.
+ usart->cr = AVR32_USART_CR_RTSDIS_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+//! @}
+
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+/*! \name Transmit/Receive Functions
+ */
+//! @{
+
+
+int usart_send_address(volatile avr32_usart_t *usart, int address)
+{
+ // Check if USART is in multidrop / RS485 mode.
+ if (!usart_mode_is_multidrop(usart)) return USART_MODE_FAULT;
+
+ // Prepare to send an address.
+ usart->cr = AVR32_USART_CR_SENDA_MASK;
+
+ // Write the address to TX.
+ usart_bw_write_char(usart, address);
+
+ return USART_SUCCESS;
+}
+
+
+int usart_write_char(volatile avr32_usart_t *usart, int c)
+{
+ if (usart_tx_ready(usart))
+ {
+ usart->thr = (c << AVR32_USART_THR_TXCHR_OFFSET) & AVR32_USART_THR_TXCHR_MASK;
+ return USART_SUCCESS;
+ }
+ else
+ return USART_TX_BUSY;
+}
+
+
+int usart_putchar(volatile avr32_usart_t *usart, int c)
+{
+ int timeout = USART_DEFAULT_TIMEOUT;
+
+ if (c == '\n')
+ {
+ do
+ {
+ if (!timeout--) return USART_FAILURE;
+ } while (usart_write_char(usart, '\r') != USART_SUCCESS);
+
+ timeout = USART_DEFAULT_TIMEOUT;
+ }
+
+ do
+ {
+ if (!timeout--) return USART_FAILURE;
+ } while (usart_write_char(usart, c) != USART_SUCCESS);
+
+ return USART_SUCCESS;
+}
+
+
+int usart_read_char(volatile avr32_usart_t *usart, int *c)
+{
+ // Check for errors: frame, parity and overrun. In RS485 mode, a parity error
+ // would mean that an address char has been received.
+ if (usart->csr & (AVR32_USART_CSR_OVRE_MASK |
+ AVR32_USART_CSR_FRAME_MASK |
+ AVR32_USART_CSR_PARE_MASK))
+ return USART_RX_ERROR;
+
+ // No error; if we really did receive a char, read it and return SUCCESS.
+ if (usart_test_hit(usart))
+ {
+ *c = (usart->rhr & AVR32_USART_RHR_RXCHR_MASK) >> AVR32_USART_RHR_RXCHR_OFFSET;
+ return USART_SUCCESS;
+ }
+ else
+ return USART_RX_EMPTY;
+}
+
+
+int usart_getchar(volatile avr32_usart_t *usart)
+{
+ int c, ret;
+
+ while ((ret = usart_read_char(usart, &c)) == USART_RX_EMPTY);
+
+ if (ret == USART_RX_ERROR)
+ return USART_FAILURE;
+
+ return c;
+}
+
+
+void usart_write_line(volatile avr32_usart_t *usart, const char *string)
+{
+ while (*string != '\0')
+ usart_putchar(usart, *string++);
+}
+
+
+int usart_get_echo_line(volatile avr32_usart_t *usart)
+{
+ int rx_char;
+ int retval = USART_SUCCESS;
+
+ while (1)
+ {
+ rx_char = usart_getchar(usart);
+ if (rx_char == USART_FAILURE)
+ {
+ usart_write_line(usart, "Error!!!\n");
+ retval = USART_FAILURE;
+ break;
+ }
+ if (rx_char == '\x03')
+ {
+ retval = USART_FAILURE;
+ break;
+ }
+ usart_putchar(usart, rx_char);
+ if (rx_char == '\r')
+ {
+ usart_putchar(usart, '\n');
+ break;
+ }
+ }
+
+ return retval;
+}
+
+
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h
new file mode 100644
index 0000000..bc1c100
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h
@@ -0,0 +1,889 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief USART driver for AVR32 UC3.
+ *
+ * This file contains basic functions for the AVR32 USART, with support for all
+ * modes, settings and clock speeds.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _USART_H_
+#define _USART_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+
+/*! \name Return Values
+ */
+//! @{
+#define USART_SUCCESS 0 //!< Successful completion.
+#define USART_FAILURE -1 //!< Failure because of some unspecified reason.
+#define USART_INVALID_INPUT 1 //!< Input value out of range.
+#define USART_INVALID_ARGUMENT -1 //!< Argument value out of range.
+#define USART_TX_BUSY 2 //!< Transmitter was busy.
+#define USART_RX_EMPTY 3 //!< Nothing was received.
+#define USART_RX_ERROR 4 //!< Transmission error occurred.
+#define USART_MODE_FAULT 5 //!< USART not in the appropriate mode.
+//! @}
+
+//! Default time-out value (number of attempts).
+#define USART_DEFAULT_TIMEOUT 10000
+
+/*! \name Parity Settings
+ */
+//! @{
+#define USART_EVEN_PARITY AVR32_USART_MR_PAR_EVEN //!< Use even parity on character transmission.
+#define USART_ODD_PARITY AVR32_USART_MR_PAR_ODD //!< Use odd parity on character transmission.
+#define USART_SPACE_PARITY AVR32_USART_MR_PAR_SPACE //!< Use a space as parity bit.
+#define USART_MARK_PARITY AVR32_USART_MR_PAR_MARK //!< Use a mark as parity bit.
+#define USART_NO_PARITY AVR32_USART_MR_PAR_NONE //!< Don't use a parity bit.
+#define USART_MULTIDROP_PARITY AVR32_USART_MR_PAR_MULTI //!< Parity bit is used to flag address characters.
+//! @}
+
+/*! \name Stop Bits Settings
+ */
+//! @{
+#define USART_1_STOPBIT AVR32_USART_MR_NBSTOP_1 //!< Use 1 stop bit.
+#define USART_1_5_STOPBITS AVR32_USART_MR_NBSTOP_1_5 //!< Use 1.5 stop bits.
+#define USART_2_STOPBITS AVR32_USART_MR_NBSTOP_2 //!< Use 2 stop bits (for more, just give the number of bits).
+//! @}
+
+/*! \name Channel Modes
+ */
+//! @{
+#define USART_NORMAL_CHMODE AVR32_USART_MR_CHMODE_NORMAL //!< Normal communication.
+#define USART_AUTO_ECHO AVR32_USART_MR_CHMODE_ECHO //!< Echo data.
+#define USART_LOCAL_LOOPBACK AVR32_USART_MR_CHMODE_LOCAL_LOOP //!< Local loopback.
+#define USART_REMOTE_LOOPBACK AVR32_USART_MR_CHMODE_REMOTE_LOOP //!< Remote loopback.
+//! @}
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \name LIN Node Actions
+ */
+//! @{
+#define USART_LIN_PUBLISH_ACTION AVR32_USART_LINMR_NACT_PUBLISH //!< The USART transmits the response.
+#define USART_LIN_SUBSCRIBE_ACTION AVR32_USART_LINMR_NACT_SUBSCRIBE //!< The USART receives the response.
+#define USART_LIN_IGNORE_ACTION AVR32_USART_LINMR_NACT_IGNORE //!< The USART does not transmit and does not receive the reponse.
+//! @}
+
+/*! \name LIN Checksum Types
+ */
+//! @{
+#define USART_LIN_ENHANCED_CHECKSUM 0 //!< LIN 2.0 "enhanced" checksum.
+#define USART_LIN_CLASSIC_CHECKSUM 1 //!< LIN 1.3 "classic" checksum.
+//! @}
+
+#endif // USART rev. >= 4.0.0
+
+
+//! Input parameters when initializing RS232 and similar modes.
+typedef struct
+{
+ //! Set baud rate of the USART (unused in slave modes).
+ unsigned long baudrate;
+
+ //! Number of bits to transmit as a character (5 to 9).
+ unsigned char charlength;
+
+ //! How to calculate the parity bit: \ref USART_EVEN_PARITY, \ref USART_ODD_PARITY,
+ //! \ref USART_SPACE_PARITY, \ref USART_MARK_PARITY, \ref USART_NO_PARITY or
+ //! \ref USART_MULTIDROP_PARITY.
+ unsigned char paritytype;
+
+ //! Number of stop bits between two characters: \ref USART_1_STOPBIT,
+ //! \ref USART_1_5_STOPBITS, \ref USART_2_STOPBITS or any number from 3 to 257
+ //! which will result in a time guard period of that length between characters.
+ //! \note \ref USART_1_5_STOPBITS is supported in asynchronous modes only.
+ unsigned short stopbits;
+
+ //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO,
+ //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK.
+ unsigned char channelmode;
+} usart_options_t;
+
+//! Input parameters when initializing ISO7816 mode.
+typedef struct
+{
+ //! Set the frequency of the ISO7816 clock.
+ unsigned long iso7816_hz;
+
+ //! The number of ISO7816 clock ticks in every bit period (1 to 2047, 0 = disable clock).
+ //! Bit rate = \ref iso7816_hz / \ref fidi_ratio.
+ unsigned short fidi_ratio;
+
+ //! How to calculate the parity bit: \ref USART_EVEN_PARITY for normal mode or
+ //! \ref USART_ODD_PARITY for inverse mode.
+ unsigned char paritytype;
+
+ //! Inhibit Non Acknowledge:\n
+ //! - 0: the NACK is generated;\n
+ //! - 1: the NACK is not generated.
+ //!
+ //! \note This bit will be used only in ISO7816 mode, protocol T = 0 receiver.
+ int inhibit_nack;
+
+ //! Disable successive NACKs.
+ //! Successive parity errors are counted up to the value in the \ref max_iterations field.
+ //! These parity errors generate a NACK on the ISO line. As soon as this value is reached,
+ //! no addititional NACK is sent on the ISO line. The ITERATION flag is asserted.
+ int dis_suc_nack;
+
+ //! Max number of repetitions (0 to 7).
+ unsigned char max_iterations;
+
+ //! Bit order in transmitted characters:\n
+ //! - 0: LSB first;\n
+ //! - 1: MSB first.
+ int bit_order;
+} usart_iso7816_options_t;
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+//! Input parameters when initializing SPI mode.
+typedef struct
+{
+ //! Set the frequency of the SPI clock (unused in slave mode).
+ unsigned long baudrate;
+
+ //! Number of bits to transmit as a character (5 to 9).
+ unsigned char charlength;
+
+ //! Which SPI mode to use.
+ unsigned char spimode;
+
+ //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO,
+ //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK.
+ unsigned char channelmode;
+} usart_spi_options_t;
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+/*! \name Initialization Functions
+ */
+//! @{
+
+/*! \brief Resets the USART and disables TX and RX.
+ *
+ * \param usart Base address of the USART instance.
+ */
+extern void usart_reset(volatile avr32_usart_t *usart);
+
+/*! \brief Sets up the USART to use the standard RS232 protocol.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the standard RS232 protocol in TX-only mode.
+ *
+ * Compared to \ref usart_init_rs232, this function allows very high baud rates
+ * (up to \a pba_hz instead of \a pba_hz / \c 8) at the expense of full duplex.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ *
+ * \note The \c 1.5 stop bit is not supported in this mode.
+ */
+extern int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use hardware handshaking.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ *
+ * \note \ref usart_init_rs232 does not need to be invoked before this function.
+ */
+extern int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the modem protocol, activating dedicated inputs/outputs.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use a synchronous RS232-like protocol in master mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use a synchronous RS232-like protocol in slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the RS485 protocol.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the IrDA protocol.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ * \param irda_filter Counter used to distinguish received ones from zeros.
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt,
+ long pba_hz, unsigned char irda_filter);
+
+/*! \brief Sets up the USART to use the ISO7816 T=0 or T=1 smartcard protocols.
+ *
+ * The receiver is enabled by default. \ref usart_iso7816_enable_receiver and
+ * \ref usart_iso7816_enable_transmitter can be called to change the half-duplex
+ * communication direction.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up ISO7816 communication (see \ref usart_iso7816_options_t).
+ * \param t ISO7816 mode to use (T=0 or T=1).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz);
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \brief Sets up the USART to use the LIN master mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ */
+extern int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz);
+
+/*! \brief Sets up the USART to use the LIN slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ */
+extern int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz);
+
+/*! \brief Sets up the USART to use the SPI master mode.
+ *
+ * \ref usart_spi_selectChip and \ref usart_spi_unselectChip can be called to
+ * select or unselect the SPI slave chip.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the SPI slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz);
+
+#endif // USART rev. >= 4.0.0
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+/*! \name Read and Reset Error Status Bits
+ */
+//! @{
+
+/*! \brief Resets the error status.
+ *
+ * This function resets the status bits indicating that a parity error,
+ * framing error or overrun has occurred. The RXBRK bit, indicating
+ * a start/end of break condition on the RX line, is also reset.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_reset_status(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_CR_RSTSTA_MASK;
+}
+
+/*! \brief Checks if a parity error has occurred since last status reset.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a parity error has been detected, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_parity_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_PARE_MASK) != 0;
+}
+
+/*! \brief Checks if a framing error has occurred since last status reset.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a framing error has been detected, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_framing_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_FRAME_MASK) != 0;
+}
+
+/*! \brief Checks if an overrun error has occurred since last status reset.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a overrun error has been detected, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_overrun_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_OVRE_MASK) != 0;
+}
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \brief Get LIN Error Status
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval The binary value of the error field.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_lin_get_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & (AVR32_USART_CSR_LINSNRE_MASK |
+ AVR32_USART_CSR_LINCE_MASK |
+ AVR32_USART_CSR_LINIPE_MASK |
+ AVR32_USART_CSR_LINISFE_MASK |
+ AVR32_USART_CSR_LINBE_MASK)) >> AVR32_USART_CSR_LINBE_OFFSET;
+}
+
+#endif // USART rev. >= 4.0.0
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+/*! \name ISO7816 Control Functions
+ */
+//! @{
+
+/*! \brief Enables the ISO7816 receiver.
+ *
+ * The ISO7816 transmitter is disabled.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_iso7816_enable_receiver(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_CR_TXDIS_MASK | AVR32_USART_CR_RXEN_MASK;
+}
+
+/*! \brief Enables the ISO7816 transmitter.
+ *
+ * The ISO7816 receiver is disabled.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_iso7816_enable_transmitter(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_CR_RXDIS_MASK | AVR32_USART_CR_TXEN_MASK;
+}
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \name LIN Control Functions
+ */
+//! @{
+
+/*! \brief Sets the node action.
+ *
+ * \param usart Base address of the USART instance.
+ * \param action The node action: \ref USART_LIN_PUBLISH_ACTION,
+ * \ref USART_LIN_SUBSCRIBE_ACTION or
+ * \ref USART_LIN_IGNORE_ACTION.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_node_action(volatile avr32_usart_t *usart, unsigned char action)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_NACT_MASK) |
+ action << AVR32_USART_LINMR_NACT_OFFSET;
+}
+
+/*! \brief Enables or disables the Identifier parity.
+ *
+ * \param usart Base address of the USART instance.
+ * \param parity Whether to enable the Identifier parity: \c TRUE or \c FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_enable_parity(volatile avr32_usart_t *usart, unsigned char parity)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_PARDIS_MASK) |
+ !parity << AVR32_USART_LINMR_PARDIS_OFFSET;
+}
+
+/*! \brief Enables or disables the checksum.
+ *
+ * \param usart Base address of the USART instance.
+ * \param parity Whether to enable the checksum: \c TRUE or \c FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_enable_checksum(volatile avr32_usart_t *usart, unsigned char checksum)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKDIS_MASK) |
+ !checksum << AVR32_USART_LINMR_CHKDIS_OFFSET;
+}
+
+/*! \brief Sets the checksum type.
+ *
+ * \param usart Base address of the USART instance.
+ * \param chktyp The checksum type: \ref USART_LIN_ENHANCED_CHEKSUM or
+ * \ref USART_LIN_CLASSIC_CHECKSUM.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_checksum(volatile avr32_usart_t *usart, unsigned char chktyp)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKTYP_MASK) |
+ chktyp << AVR32_USART_LINMR_CHKTYP_OFFSET;
+}
+
+/*! \brief Gets the response data length.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return The response data length.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned char usart_lin_get_data_length(volatile avr32_usart_t *usart)
+{
+ if (usart->linmr & AVR32_USART_LINMR_DLM_MASK)
+ {
+ unsigned char data_length = 1 << ((usart->linir >> (AVR32_USART_LINIR_IDCHR_OFFSET + 4)) & 0x03);
+ if (data_length == 1)
+ data_length = 2;
+ return data_length;
+ }
+ else
+ return ((usart->linmr & AVR32_USART_LINMR_DLC_MASK) >> AVR32_USART_LINMR_DLC_OFFSET) + 1;
+}
+
+/*! \brief Sets the response data length for LIN 1.x.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_data_length_lin1x(volatile avr32_usart_t *usart)
+{
+ usart->linmr |= AVR32_USART_LINMR_DLM_MASK;
+}
+
+/*! \brief Sets the response data length for LIN 2.x.
+ *
+ * \param usart Base address of the USART instance.
+ * \param data_length The response data length.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_data_length_lin2x(volatile avr32_usart_t *usart, unsigned char data_length)
+{
+ usart->linmr = (usart->linmr & ~(AVR32_USART_LINMR_DLC_MASK |
+ AVR32_USART_LINMR_DLM_MASK)) |
+ (data_length - 1) << AVR32_USART_LINMR_DLC_OFFSET;
+}
+
+/*! \brief Enables or disables the frame slot mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param frameslot Whether to enable the frame slot mode: \c TRUE or
+ * \c FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_enable_frameslot(volatile avr32_usart_t *usart, unsigned char frameslot)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_FSDIS_MASK) |
+ !frameslot << AVR32_USART_LINMR_FSDIS_OFFSET;
+}
+
+/*! \brief Gets the Identifier character.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return The Identifier character.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned char usart_lin_get_id_char(volatile avr32_usart_t *usart)
+{
+ return (usart->linir & AVR32_USART_LINIR_IDCHR_MASK) >> AVR32_USART_LINIR_IDCHR_OFFSET;
+}
+
+/*! \brief Sets the Identifier character.
+ *
+ * \param usart Base address of the USART instance.
+ * \param id_char The Identifier character.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_id_char(volatile avr32_usart_t *usart, unsigned char id_char)
+{
+ usart->linir = (usart->linir & ~AVR32_USART_LINIR_IDCHR_MASK) |
+ id_char << AVR32_USART_LINIR_IDCHR_OFFSET;
+}
+
+//! @}
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \name SPI Control Functions
+ */
+//! @{
+
+/*! \brief Selects SPI slave chip.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Success.
+ */
+extern int usart_spi_selectChip(volatile avr32_usart_t *usart);
+
+/*! \brief Unselects SPI slave chip.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Success.
+ * \retval USART_FAILURE Time-out.
+ */
+extern int usart_spi_unselectChip(volatile avr32_usart_t *usart);
+
+//! @}
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+/*! \name Transmit/Receive Functions
+ */
+//! @{
+
+/*! \brief Addresses a receiver.
+ *
+ * While in RS485 mode, receivers only accept data addressed to them.
+ * A packet/char with the address tag set has to precede any data.
+ * This function is used to address a receiver. This receiver should read
+ * all the following data, until an address packet addresses another receiver.
+ *
+ * \param usart Base address of the USART instance.
+ * \param address Address of the target device.
+ *
+ * \retval USART_SUCCESS Address successfully sent (if current mode is RS485).
+ * \retval USART_MODE_FAULT Wrong operating mode.
+ */
+extern int usart_send_address(volatile avr32_usart_t *usart, int address);
+
+/*! \brief Tests if the USART is ready to transmit a character.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART Transmit Holding Register is free, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_tx_ready(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_TXRDY_MASK) != 0;
+}
+
+/*! \brief Writes the given character to the TX buffer if the transmitter is ready.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c The character (up to 9 bits) to transmit.
+ *
+ * \retval USART_SUCCESS The transmitter was ready.
+ * \retval USART_TX_BUSY The transmitter was busy.
+ */
+extern int usart_write_char(volatile avr32_usart_t *usart, int c);
+
+/*! \brief An active wait writing a character to the USART.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c The character (up to 9 bits) to transmit.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_bw_write_char(volatile avr32_usart_t *usart, int c)
+{
+ while (usart_write_char(usart, c) != USART_SUCCESS);
+}
+
+/*! \brief Sends a character with the USART.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c Character to write.
+ *
+ * \retval USART_SUCCESS The character was written.
+ * \retval USART_FAILURE The function timed out before the USART transmitter became ready to send.
+ */
+extern int usart_putchar(volatile avr32_usart_t *usart, int c);
+
+/*! \brief Tests if all requested USART transmissions are over.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART Transmit Shift Register and the USART Transmit
+ * Holding Register are free, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_tx_empty(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_TXEMPTY_MASK) != 0;
+}
+
+/*! \brief Tests if the USART contains a received character.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART Receive Holding Register is full, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_test_hit(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_RXRDY_MASK) != 0;
+}
+
+/*! \brief Checks the RX buffer for a received character, and stores it at the
+ * given memory location.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c Pointer to the where the read character should be stored
+ * (must be at least short in order to accept 9-bit characters).
+ *
+ * \retval USART_SUCCESS The character was read successfully.
+ * \retval USART_RX_EMPTY The RX buffer was empty.
+ * \retval USART_RX_ERROR An error was deteceted.
+ */
+extern int usart_read_char(volatile avr32_usart_t *usart, int *c);
+
+/*! \brief Waits until a character is received, and returns it.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return The received character, or \ref USART_FAILURE upon error.
+ */
+extern int usart_getchar(volatile avr32_usart_t *usart);
+
+/*! \brief Writes one character string to the USART.
+ *
+ * \param usart Base address of the USART instance.
+ * \param string String to be written.
+ */
+extern void usart_write_line(volatile avr32_usart_t *usart, const char *string);
+
+/*! \brief Gets and echoes characters until end of line.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Success.
+ * \retval USART_FAILURE Low-level error detected or ETX character received.
+ */
+extern int usart_get_echo_line(volatile avr32_usart_t *usart);
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \brief Abort LIN transmission.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_abort(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_LINABT_MASK;
+}
+
+/*! \brief Tests if a LIN transfer has been completed.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a LIN transfer has been completed, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_lin_transfer_completed(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_LINTC_MASK) != 0;
+}
+
+#endif // USART rev. >= 4.0.0
+
+//! @}
+
+
+#endif // _USART_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c
new file mode 100644
index 0000000..ad5ecca
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c
@@ -0,0 +1,87 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file ******************************************************************
+ *
+ * \brief Management of the delays.
+ *
+ * This file manages the "delays", with or without an OS.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ***************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+//_____ I N C L U D E S ___________________________________________________
+
+#include "delay.h"
+
+
+//_____ M A C R O S ________________________________________________________
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+//! CPU frequency
+#ifndef FREERTOS_USED
+static unsigned long s_fcpu_hz;
+#endif
+#if (defined NUTOS_USED)
+extern void NutSleep(unsigned long ms);
+#endif
+
+//_____ D E C L A R A T I O N S ____________________________________________
+
+void delay_init(unsigned long fcpu_hz)
+{
+#ifndef FREERTOS_USED
+ s_fcpu_hz = fcpu_hz;
+#endif
+}
+
+
+void delay_ms(unsigned long delay)
+{
+#if (defined FREERTOS_USED)
+ vTaskDelay( (portTickType)TASK_DELAY_MS(delay) );
+#elif (defined NUTOS_USED)
+ NutSleep(delay);
+#else
+ cpu_delay_ms(delay, s_fcpu_hz);
+#endif
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h
new file mode 100644
index 0000000..2811326
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h
@@ -0,0 +1,80 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3 delay management header file.
+ *
+ * This file contains definitions and services to handle "delays".
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _DELAY_H_
+#define _DELAY_H_
+
+#include "compiler.h"
+#ifdef FREERTOS_USED
+# include "FreeRTOS.h"
+# include "task.h"
+#else
+# include "cycle_counter.h"
+#endif
+
+
+/*!
+ * \brief Initialize the delay driver.
+ *
+ * \param fcpu_hz: CPU frequency in Hz.
+ */
+extern void delay_init(unsigned long fcpu_hz);
+
+
+/*!
+ * \brief Waits during at least the specified delay (in millisecond) before returning.
+ *
+ * Note that in the case of FreeRTOS, the function will delay the current task for a given number of ms.
+ *
+ * \param delay: Number of millisecond to wait.
+ */
+extern void delay_ms(unsigned long delay);
+
+
+#endif // _DELAY_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c
new file mode 100644
index 0000000..8ef6c84
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c
@@ -0,0 +1,1724 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Dynamic Host Configuration Protocol client
+ *
+ */
+
+/*
+ *
+ * Copyright (c) 2001-2004 Leon Woestenberg <leon woestenberg gmx net>
+ * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is a contribution to the lwIP TCP/IP stack.
+ * The Swedish Institute of Computer Science and Adam Dunkels
+ * are specifically granted permission to redistribute this
+ * source code.
+ *
+ * Author: Leon Woestenberg <leon woestenberg gmx net>
+ *
+ * This is a DHCP client for the lwIP TCP/IP stack. It aims to conform
+ * with RFC 2131 and RFC 2132.
+ *
+ * TODO:
+ * - Proper parsing of DHCP messages exploiting file/sname field overloading.
+ * - Add JavaDoc style documentation (API, internals).
+ * - Support for interfaces other than Ethernet (SLIP, PPP, ...)
+ *
+ * Please coordinate changes and requests with Leon Woestenberg
+ * <leon woestenberg gmx net>
+ *
+ * Integration with your code:
+ *
+ * In lwip/dhcp.h
+ * #define DHCP_COARSE_TIMER_SECS (recommended 60 which is a minute)
+ * #define DHCP_FINE_TIMER_MSECS (recommended 500 which equals TCP coarse timer)
+ *
+ * Then have your application call dhcp_coarse_tmr() and
+ * dhcp_fine_tmr() on the defined intervals.
+ *
+ * dhcp_start(struct netif *netif);
+ * starts a DHCP client instance which configures the interface by
+ * obtaining an IP address lease and maintaining it.
+ *
+ * Use dhcp_release(netif) to end the lease and use dhcp_stop(netif)
+ * to remove the DHCP client.
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/stats.h"
+#include "lwip/mem.h"
+#include "lwip/udp.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/inet.h"
+#include "lwip/sys.h"
+#include "lwip/dhcp.h"
+#include "lwip/autoip.h"
+#include "lwip/dns.h"
+#include "netif/etharp.h"
+
+#include <string.h>
+
+/** Default for DHCP_GLOBAL_XID is 0xABCD0000
+ * This can be changed by defining DHCP_GLOBAL_XID and DHCP_GLOBAL_XID_HEADER, e.g.
+ * #define DHCP_GLOBAL_XID_HEADER "stdlib.h"
+ * #define DHCP_GLOBAL_XID rand()
+ */
+#ifdef DHCP_GLOBAL_XID_HEADER
+#include DHCP_GLOBAL_XID_HEADER /* include optional starting XID generation prototypes */
+#endif
+
+/** DHCP_OPTION_MAX_MSG_SIZE is set to the MTU
+ * MTU is checked to be big enough in dhcp_start */
+#define DHCP_MAX_MSG_LEN(netif) (netif->mtu)
+#define DHCP_MAX_MSG_LEN_MIN_REQUIRED 576
+/** Minimum length for reply before packet is parsed */
+#define DHCP_MIN_REPLY_LEN 44
+
+#define REBOOT_TRIES 2
+
+/* DHCP client state machine functions */
+static void dhcp_handle_ack(struct netif *netif);
+static void dhcp_handle_nak(struct netif *netif);
+static void dhcp_handle_offer(struct netif *netif);
+
+static err_t dhcp_discover(struct netif *netif);
+static err_t dhcp_select(struct netif *netif);
+static void dhcp_bind(struct netif *netif);
+#if DHCP_DOES_ARP_CHECK
+static void dhcp_check(struct netif *netif);
+static err_t dhcp_decline(struct netif *netif);
+#endif /* DHCP_DOES_ARP_CHECK */
+static err_t dhcp_rebind(struct netif *netif);
+static err_t dhcp_reboot(struct netif *netif);
+static void dhcp_set_state(struct dhcp *dhcp, u8_t new_state);
+
+/* receive, unfold, parse and free incoming messages */
+static void dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port);
+static err_t dhcp_unfold_reply(struct dhcp *dhcp, struct pbuf *p);
+static u8_t *dhcp_get_option_ptr(struct dhcp *dhcp, u8_t option_type);
+static u8_t dhcp_get_option_byte(u8_t *ptr);
+#if 0
+static u16_t dhcp_get_option_short(u8_t *ptr);
+#endif
+static u32_t dhcp_get_option_long(u8_t *ptr);
+static void dhcp_free_reply(struct dhcp *dhcp);
+
+/* set the DHCP timers */
+static void dhcp_timeout(struct netif *netif);
+static void dhcp_t1_timeout(struct netif *netif);
+static void dhcp_t2_timeout(struct netif *netif);
+
+/* build outgoing messages */
+/* create a DHCP request, fill in common headers */
+static err_t dhcp_create_request(struct netif *netif);
+/* free a DHCP request */
+static void dhcp_delete_request(struct netif *netif);
+/* add a DHCP option (type, then length in bytes) */
+static void dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len);
+/* add option values */
+static void dhcp_option_byte(struct dhcp *dhcp, u8_t value);
+static void dhcp_option_short(struct dhcp *dhcp, u16_t value);
+static void dhcp_option_long(struct dhcp *dhcp, u32_t value);
+/* always add the DHCP options trailer to end and pad */
+static void dhcp_option_trailer(struct dhcp *dhcp);
+
+/**
+ * Back-off the DHCP client (because of a received NAK response).
+ *
+ * Back-off the DHCP client because of a received NAK. Receiving a
+ * NAK means the client asked for something non-sensible, for
+ * example when it tries to renew a lease obtained on another network.
+ *
+ * We clear any existing set IP address and restart DHCP negotiation
+ * afresh (as per RFC2131 3.2.3).
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_handle_nak(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_nak(netif=%p) %c%c%"U16_F"\n",
+ (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));
+ /* Set the interface down since the address must no longer be used, as per RFC2131 */
+ netif_set_down(netif);
+ /* remove IP address from interface */
+ netif_set_ipaddr(netif, IP_ADDR_ANY);
+ netif_set_gw(netif, IP_ADDR_ANY);
+ netif_set_netmask(netif, IP_ADDR_ANY);
+ /* Change to a defined state */
+ dhcp_set_state(dhcp, DHCP_BACKING_OFF);
+ /* We can immediately restart discovery */
+ dhcp_discover(netif);
+}
+
+#if DHCP_DOES_ARP_CHECK
+/**
+ * Checks if the offered IP address is already in use.
+ *
+ * It does so by sending an ARP request for the offered address and
+ * entering CHECKING state. If no ARP reply is received within a small
+ * interval, the address is assumed to be free for use by us.
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_check(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result;
+ u16_t msecs;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_check(netif=%p) %c%c\n", (void *)netif, (s16_t)netif->name[0],
+ (s16_t)netif->name[1]));
+ dhcp_set_state(dhcp, DHCP_CHECKING);
+ /* create an ARP query for the offered IP address, expecting that no host
+ responds, as the IP address should not be in use. */
+ result = etharp_query(netif, &dhcp->offered_ip_addr, NULL);
+ if (result != ERR_OK) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_check: could not perform ARP query\n"));
+ }
+ dhcp->tries++;
+ msecs = 500;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_check(): set request timeout %"U16_F" msecs\n", msecs));
+}
+#endif /* DHCP_DOES_ARP_CHECK */
+
+/**
+ * Remember the configuration offered by a DHCP server.
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_handle_offer(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ /* obtain the server address */
+ u8_t *option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_SERVER_ID);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n",
+ (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));
+ if (option_ptr != NULL) {
+ dhcp->server_ip_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2]));
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n", dhcp->server_ip_addr.addr));
+ /* remember offered address */
+ ip_addr_set(&dhcp->offered_ip_addr, (struct ip_addr *)&dhcp->msg_in->yiaddr);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): offer for 0x%08"X32_F"\n", dhcp->offered_ip_addr.addr));
+
+ dhcp_select(netif);
+ }
+}
+
+/**
+ * Select a DHCP server offer out of all offers.
+ *
+ * Simply select the first offer received.
+ *
+ * @param netif the netif under DHCP control
+ * @return lwIP specific error (see error.h)
+ */
+static err_t
+dhcp_select(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result;
+ u16_t msecs;
+#if LWIP_NETIF_HOSTNAME
+ const char *p;
+#endif /* LWIP_NETIF_HOSTNAME */
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_select(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));
+ dhcp_set_state(dhcp, DHCP_REQUESTING);
+
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_REQUEST);
+
+ dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
+ dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif));
+
+ /* MUST request the offered IP address */
+ dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr));
+
+ dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr));
+
+ dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
+ dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
+ dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
+ dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
+ dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
+
+#if LWIP_NETIF_HOSTNAME
+ p = (const char*)netif->hostname;
+ if (p != NULL) {
+ dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p));
+ while (*p) {
+ dhcp_option_byte(dhcp, *p++);
+ }
+ }
+#endif /* LWIP_NETIF_HOSTNAME */
+
+ dhcp_option_trailer(dhcp);
+ /* shrink the pbuf to the actual content length */
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+ /* send broadcast to any DHCP server */
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif);
+ dhcp_delete_request(netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_select: REQUESTING\n"));
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_select: could not allocate DHCP request\n"));
+ }
+ dhcp->tries++;
+ msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_select(): set request timeout %"U16_F" msecs\n", msecs));
+ return result;
+}
+
+/**
+ * The DHCP timer that checks for lease renewal/rebind timeouts.
+ *
+ */
+void
+dhcp_coarse_tmr()
+{
+ struct netif *netif = netif_list;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_coarse_tmr()\n"));
+ /* iterate through all network interfaces */
+ while (netif != NULL) {
+ /* only act on DHCP configured interfaces */
+ if (netif->dhcp != NULL) {
+ /* timer is active (non zero), and triggers (zeroes) now? */
+ if (netif->dhcp->t2_timeout-- == 1) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t2 timeout\n"));
+ /* this clients' rebind timeout triggered */
+ dhcp_t2_timeout(netif);
+ /* timer is active (non zero), and triggers (zeroes) now */
+ } else if (netif->dhcp->t1_timeout-- == 1) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t1 timeout\n"));
+ /* this clients' renewal timeout triggered */
+ dhcp_t1_timeout(netif);
+ }
+ }
+ /* proceed to next netif */
+ netif = netif->next;
+ }
+}
+
+/**
+ * DHCP transaction timeout handling
+ *
+ * A DHCP server is expected to respond within a short period of time.
+ * This timer checks whether an outstanding DHCP request is timed out.
+ *
+ */
+void
+dhcp_fine_tmr()
+{
+ struct netif *netif = netif_list;
+ /* loop through netif's */
+ while (netif != NULL) {
+ /* only act on DHCP configured interfaces */
+ if (netif->dhcp != NULL) {
+ /* timer is active (non zero), and is about to trigger now */
+ if (netif->dhcp->request_timeout > 1) {
+ netif->dhcp->request_timeout--;
+ }
+ else if (netif->dhcp->request_timeout == 1) {
+ netif->dhcp->request_timeout--;
+ /* { netif->dhcp->request_timeout == 0 } */
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_fine_tmr(): request timeout\n"));
+ /* this clients' request timeout triggered */
+ dhcp_timeout(netif);
+ }
+ }
+ /* proceed to next network interface */
+ netif = netif->next;
+ }
+}
+
+/**
+ * A DHCP negotiation transaction, or ARP request, has timed out.
+ *
+ * The timer that was started with the DHCP or ARP request has
+ * timed out, indicating no response was received in time.
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_timeout(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout()\n"));
+ /* back-off period has passed, or server selection timed out */
+ if ((dhcp->state == DHCP_BACKING_OFF) || (dhcp->state == DHCP_SELECTING)) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout(): restarting discovery\n"));
+ dhcp_discover(netif);
+ /* receiving the requested lease timed out */
+ } else if (dhcp->state == DHCP_REQUESTING) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, DHCP request timed out\n"));
+ if (dhcp->tries <= 5) {
+ dhcp_select(netif);
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, releasing, restarting\n"));
+ dhcp_release(netif);
+ dhcp_discover(netif);
+ }
+#if DHCP_DOES_ARP_CHECK
+ /* received no ARP reply for the offered address (which is good) */
+ } else if (dhcp->state == DHCP_CHECKING) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): CHECKING, ARP request timed out\n"));
+ if (dhcp->tries <= 1) {
+ dhcp_check(netif);
+ /* no ARP replies on the offered address,
+ looks like the IP address is indeed free */
+ } else {
+ /* bind the interface to the offered address */
+ dhcp_bind(netif);
+ }
+#endif /* DHCP_DOES_ARP_CHECK */
+ }
+ /* did not get response to renew request? */
+ else if (dhcp->state == DHCP_RENEWING) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RENEWING, DHCP request timed out\n"));
+ /* just retry renewal */
+ /* note that the rebind timer will eventually time-out if renew does not work */
+ dhcp_renew(netif);
+ /* did not get response to rebind request? */
+ } else if (dhcp->state == DHCP_REBINDING) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REBINDING, DHCP request timed out\n"));
+ if (dhcp->tries <= 8) {
+ dhcp_rebind(netif);
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RELEASING, DISCOVERING\n"));
+ dhcp_release(netif);
+ dhcp_discover(netif);
+ }
+ } else if (dhcp->state == DHCP_REBOOTING) {
+ if (dhcp->tries < REBOOT_TRIES) {
+ dhcp_reboot(netif);
+ } else {
+ dhcp_discover(netif);
+ }
+ }
+}
+
+/**
+ * The renewal period has timed out.
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_t1_timeout(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_t1_timeout()\n"));
+ if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || (dhcp->state == DHCP_RENEWING)) {
+ /* just retry to renew - note that the rebind timer (t2) will
+ * eventually time-out if renew tries fail. */
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t1_timeout(): must renew\n"));
+ dhcp_renew(netif);
+ }
+}
+
+/**
+ * The rebind period has timed out.
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_t2_timeout(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout()\n"));
+ if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || (dhcp->state == DHCP_RENEWING)) {
+ /* just retry to rebind */
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout(): must rebind\n"));
+ dhcp_rebind(netif);
+ }
+}
+
+/**
+ * Handle a DHCP ACK packet
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_handle_ack(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ u8_t *option_ptr;
+ /* clear options we might not get from the ACK */
+ dhcp->offered_sn_mask.addr = 0;
+ dhcp->offered_gw_addr.addr = 0;
+ dhcp->offered_bc_addr.addr = 0;
+
+ /* lease time given? */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_LEASE_TIME);
+ if (option_ptr != NULL) {
+ /* remember offered lease time */
+ dhcp->offered_t0_lease = dhcp_get_option_long(option_ptr + 2);
+ }
+ /* renewal period given? */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_T1);
+ if (option_ptr != NULL) {
+ /* remember given renewal period */
+ dhcp->offered_t1_renew = dhcp_get_option_long(option_ptr + 2);
+ } else {
+ /* calculate safe periods for renewal */
+ dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2;
+ }
+
+ /* renewal period given? */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_T2);
+ if (option_ptr != NULL) {
+ /* remember given rebind period */
+ dhcp->offered_t2_rebind = dhcp_get_option_long(option_ptr + 2);
+ } else {
+ /* calculate safe periods for rebinding */
+ dhcp->offered_t2_rebind = dhcp->offered_t0_lease;
+ }
+
+ /* (y)our internet address */
+ ip_addr_set(&dhcp->offered_ip_addr, &dhcp->msg_in->yiaddr);
+
+/**
+ * Patch #1308
+ * TODO: we must check if the file field is not overloaded by DHCP options!
+ */
+#if 0
+ /* boot server address */
+ ip_addr_set(&dhcp->offered_si_addr, &dhcp->msg_in->siaddr);
+ /* boot file name */
+ if (dhcp->msg_in->file[0]) {
+ dhcp->boot_file_name = mem_malloc(strlen(dhcp->msg_in->file) + 1);
+ strcpy(dhcp->boot_file_name, dhcp->msg_in->file);
+ }
+#endif
+
+ /* subnet mask */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_SUBNET_MASK);
+ /* subnet mask given? */
+ if (option_ptr != NULL) {
+ dhcp->offered_sn_mask.addr = htonl(dhcp_get_option_long(&option_ptr[2]));
+ }
+
+ /* gateway router */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_ROUTER);
+ if (option_ptr != NULL) {
+ dhcp->offered_gw_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2]));
+ }
+
+ /* broadcast address */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_BROADCAST);
+ if (option_ptr != NULL) {
+ dhcp->offered_bc_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2]));
+ }
+
+ /* DNS servers */
+ option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_DNS_SERVER);
+ if (option_ptr != NULL) {
+ u8_t n;
+ dhcp->dns_count = dhcp_get_option_byte(&option_ptr[1]) / (u32_t)sizeof(struct ip_addr);
+ /* limit to at most DHCP_MAX_DNS DNS servers */
+ if (dhcp->dns_count > DHCP_MAX_DNS)
+ dhcp->dns_count = DHCP_MAX_DNS;
+ for (n = 0; n < dhcp->dns_count; n++) {
+ dhcp->offered_dns_addr[n].addr = htonl(dhcp_get_option_long(&option_ptr[2 + n * 4]));
+#if LWIP_DNS
+ dns_setserver( n, (struct ip_addr *)(&(dhcp->offered_dns_addr[n].addr)));
+#endif /* LWIP_DNS */
+ }
+#if LWIP_DNS
+ dns_setserver( n, (struct ip_addr *)(&ip_addr_any));
+#endif /* LWIP_DNS */
+ }
+}
+
+/**
+ * Start DHCP negotiation for a network interface.
+ *
+ * If no DHCP client instance was attached to this interface,
+ * a new client is created first. If a DHCP client instance
+ * was already present, it restarts negotiation.
+ *
+ * @param netif The lwIP network interface
+ * @return lwIP error code
+ * - ERR_OK - No error
+ * - ERR_MEM - Out of memory
+ */
+err_t
+dhcp_start(struct netif *netif)
+{
+ struct dhcp *dhcp;
+ err_t result = ERR_OK;
+
+ LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;);
+ dhcp = netif->dhcp;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));
+ /* Remove the flag that says this netif is handled by DHCP,
+ it is set when we succeeded starting. */
+ netif->flags &= ~NETIF_FLAG_DHCP;
+
+ /* check MTU of the netif */
+ if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): Cannot use this netif with DHCP: MTU is too small\n"));
+ return ERR_MEM;
+ }
+
+ /* no DHCP client attached yet? */
+ if (dhcp == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting new DHCP client\n"));
+ dhcp = mem_malloc(sizeof(struct dhcp));
+ if (dhcp == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not allocate dhcp\n"));
+ return ERR_MEM;
+ }
+ /* store this dhcp client in the netif */
+ netif->dhcp = dhcp;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): allocated dhcp"));
+ /* already has DHCP client attached */
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(): restarting DHCP configuration\n"));
+ if (dhcp->pcb != NULL) {
+ udp_remove(dhcp->pcb);
+ }
+ LWIP_ASSERT("pbuf p_out wasn't freed", dhcp->p_out == NULL);
+ LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL &&
+ dhcp->options_in == NULL && dhcp->options_in_len == 0);
+ }
+
+ /* clear data structure */
+ memset(dhcp, 0, sizeof(struct dhcp));
+ /* allocate UDP PCB */
+ dhcp->pcb = udp_new();
+ if (dhcp->pcb == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not obtain pcb\n"));
+ mem_free((void *)dhcp);
+ netif->dhcp = dhcp = NULL;
+ return ERR_MEM;
+ }
+#if IP_SOF_BROADCAST
+ dhcp->pcb->so_options|=SOF_BROADCAST;
+#endif /* IP_SOF_BROADCAST */
+ /* set up local and remote port for the pcb */
+ udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT);
+ udp_connect(dhcp->pcb, IP_ADDR_ANY, DHCP_SERVER_PORT);
+ /* set up the recv callback and argument */
+ udp_recv(dhcp->pcb, dhcp_recv, netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting DHCP configuration\n"));
+ /* (re)start the DHCP negotiation */
+ result = dhcp_discover(netif);
+ if (result != ERR_OK) {
+ /* free resources allocated above */
+ dhcp_stop(netif);
+ return ERR_MEM;
+ }
+ /* Set the flag that says this netif is handled by DHCP. */
+ netif->flags |= NETIF_FLAG_DHCP;
+ return result;
+}
+
+/**
+ * Inform a DHCP server of our manual configuration.
+ *
+ * This informs DHCP servers of our fixed IP address configuration
+ * by sending an INFORM message. It does not involve DHCP address
+ * configuration, it is just here to be nice to the network.
+ *
+ * @param netif The lwIP network interface
+ */
+void
+dhcp_inform(struct netif *netif)
+{
+ struct dhcp *dhcp, *old_dhcp;
+ err_t result = ERR_OK;
+ dhcp = mem_malloc(sizeof(struct dhcp));
+ if (dhcp == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform(): could not allocate dhcp\n"));
+ return;
+ }
+ memset(dhcp, 0, sizeof(struct dhcp));
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_inform(): allocated dhcp\n"));
+ dhcp->pcb = udp_new();
+ if (dhcp->pcb == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform(): could not obtain pcb"));
+ goto free_dhcp_and_return;
+ }
+ old_dhcp = netif->dhcp;
+ netif->dhcp = dhcp;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_inform(): created new udp pcb\n"));
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_INFORM);
+
+ dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
+ dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif));
+
+ dhcp_option_trailer(dhcp);
+
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+#if IP_SOF_BROADCAST
+ dhcp->pcb->so_options|=SOF_BROADCAST;
+#endif /* IP_SOF_BROADCAST */
+ udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_inform: INFORMING\n"));
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif);
+ dhcp_delete_request(netif);
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform: could not allocate DHCP request\n"));
+ }
+
+ udp_remove(dhcp->pcb);
+ dhcp->pcb = NULL;
+ netif->dhcp = old_dhcp;
+free_dhcp_and_return:
+ mem_free((void *)dhcp);
+}
+
+/** Handle a possible change in the network configuration.
+ *
+ * This enters the REBOOTING state to verify that the currently bound
+ * address is still valid.
+ */
+void
+dhcp_network_changed(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ if (!dhcp)
+ return;
+ switch (dhcp->state) {
+ case DHCP_REBINDING:
+ case DHCP_RENEWING:
+ case DHCP_BOUND:
+ case DHCP_REBOOTING:
+ netif_set_down(netif);
+ dhcp->tries = 0;
+ dhcp_reboot(netif);
+ break;
+ case DHCP_OFF:
+ /* stay off */
+ break;
+ default:
+ dhcp->tries = 0;
+ dhcp_discover(netif);
+ break;
+ }
+}
+
+#if DHCP_DOES_ARP_CHECK
+/**
+ * Match an ARP reply with the offered IP address.
+ *
+ * @param netif the network interface on which the reply was received
+ * @param addr The IP address we received a reply from
+ */
+void dhcp_arp_reply(struct netif *netif, struct ip_addr *addr)
+{
+ LWIP_ERROR("netif != NULL", (netif != NULL), return;);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_arp_reply()\n"));
+ /* is a DHCP client doing an ARP check? */
+ if ((netif->dhcp != NULL) && (netif->dhcp->state == DHCP_CHECKING)) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_arp_reply(): CHECKING, arp reply for 0x%08"X32_F"\n", addr->addr));
+ /* did a host respond with the address we
+ were offered by the DHCP server? */
+ if (ip_addr_cmp(addr, &netif->dhcp->offered_ip_addr)) {
+ /* we will not accept the offered address */
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING,
+ ("dhcp_arp_reply(): arp reply matched with offered address, declining\n"));
+ dhcp_decline(netif);
+ }
+ }
+}
+
+/**
+ * Decline an offered lease.
+ *
+ * Tell the DHCP server we do not accept the offered address.
+ * One reason to decline the lease is when we find out the address
+ * is already in use by another host (through ARP).
+ *
+ * @param netif the netif under DHCP control
+ */
+static err_t
+dhcp_decline(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result = ERR_OK;
+ u16_t msecs;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline()\n"));
+ dhcp_set_state(dhcp, DHCP_BACKING_OFF);
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_DECLINE);
+
+ dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr));
+
+ dhcp_option_trailer(dhcp);
+ /* resize pbuf to reflect true size of options */
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+ /* per section 4.4.4, broadcast DECLINE messages */
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif);
+ dhcp_delete_request(netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_decline: BACKING OFF\n"));
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
+ ("dhcp_decline: could not allocate DHCP request\n"));
+ }
+ dhcp->tries++;
+ msecs = 10*1000;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline(): set request timeout %"U16_F" msecs\n", msecs));
+ return result;
+}
+#endif
+
+
+/**
+ * Start the DHCP process, discover a DHCP server.
+ *
+ * @param netif the netif under DHCP control
+ */
+static err_t
+dhcp_discover(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result = ERR_OK;
+ u16_t msecs;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover()\n"));
+ ip_addr_set(&dhcp->offered_ip_addr, IP_ADDR_ANY);
+ dhcp_set_state(dhcp, DHCP_SELECTING);
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: making request\n"));
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_DISCOVER);
+
+ dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
+ dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif));
+
+ dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
+ dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
+ dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
+ dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
+ dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
+
+ dhcp_option_trailer(dhcp);
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: realloc()ing\n"));
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: sendto(DISCOVER, IP_ADDR_BROADCAST, DHCP_SERVER_PORT)\n"));
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: deleting()ing\n"));
+ dhcp_delete_request(netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover: SELECTING\n"));
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_discover: could not allocate DHCP request\n"));
+ }
+ dhcp->tries++;
+#if LWIP_DHCP_AUTOIP_COOP
+ if(dhcp->tries >= LWIP_DHCP_AUTOIP_COOP_TRIES && dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_OFF) {
+ dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_ON;
+ autoip_start(netif);
+ }
+#endif /* LWIP_DHCP_AUTOIP_COOP */
+ msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs));
+ return result;
+}
+
+
+/**
+ * Bind the interface to the offered IP address.
+ *
+ * @param netif network interface to bind to the offered address
+ */
+static void
+dhcp_bind(struct netif *netif)
+{
+ u32_t timeout;
+ struct dhcp *dhcp;
+ struct ip_addr sn_mask, gw_addr;
+ LWIP_ERROR("dhcp_bind: netif != NULL", (netif != NULL), return;);
+ dhcp = netif->dhcp;
+ LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));
+
+ /* temporary DHCP lease? */
+ if (dhcp->offered_t1_renew != 0xffffffffUL) {
+ /* set renewal period timer */
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t1 renewal timer %"U32_F" secs\n", dhcp->offered_t1_renew));
+ timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
+ if(timeout > 0xffff) {
+ timeout = 0xffff;
+ }
+ dhcp->t1_timeout = (u16_t)timeout;
+ if (dhcp->t1_timeout == 0) {
+ dhcp->t1_timeout = 1;
+ }
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t1_renew*1000));
+ }
+ /* set renewal period timer */
+ if (dhcp->offered_t2_rebind != 0xffffffffUL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t2 rebind timer %"U32_F" secs\n", dhcp->offered_t2_rebind));
+ timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
+ if(timeout > 0xffff) {
+ timeout = 0xffff;
+ }
+ dhcp->t2_timeout = (u16_t)timeout;
+ if (dhcp->t2_timeout == 0) {
+ dhcp->t2_timeout = 1;
+ }
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t2_rebind*1000));
+ }
+ /* copy offered network mask */
+ ip_addr_set(&sn_mask, &dhcp->offered_sn_mask);
+
+ /* subnet mask not given? */
+ /* TODO: this is not a valid check. what if the network mask is 0? */
+ if (sn_mask.addr == 0) {
+ /* choose a safe subnet mask given the network class */
+ u8_t first_octet = ip4_addr1(&sn_mask);
+ if (first_octet <= 127) {
+ sn_mask.addr = htonl(0xff000000);
+ } else if (first_octet >= 192) {
+ sn_mask.addr = htonl(0xffffff00);
+ } else {
+ sn_mask.addr = htonl(0xffff0000);
+ }
+ }
+
+ ip_addr_set(&gw_addr, &dhcp->offered_gw_addr);
+ /* gateway address not given? */
+ if (gw_addr.addr == 0) {
+ /* copy network address */
+ gw_addr.addr = (dhcp->offered_ip_addr.addr & sn_mask.addr);
+ /* use first host address on network as gateway */
+ gw_addr.addr |= htonl(0x00000001);
+ }
+
+#if LWIP_DHCP_AUTOIP_COOP
+ if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) {
+ autoip_stop(netif);
+ dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF;
+ }
+#endif /* LWIP_DHCP_AUTOIP_COOP */
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): IP: 0x%08"X32_F"\n", dhcp->offered_ip_addr.addr));
+ netif_set_ipaddr(netif, &dhcp->offered_ip_addr);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): SN: 0x%08"X32_F"\n", sn_mask.addr));
+ netif_set_netmask(netif, &sn_mask);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): GW: 0x%08"X32_F"\n", gw_addr.addr));
+ netif_set_gw(netif, &gw_addr);
+ /* bring the interface up */
+ netif_set_up(netif);
+ /* netif is now bound to DHCP leased address */
+ dhcp_set_state(dhcp, DHCP_BOUND);
+}
+
+/**
+ * Renew an existing DHCP lease at the involved DHCP server.
+ *
+ * @param netif network interface which must renew its lease
+ */
+err_t
+dhcp_renew(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result;
+ u16_t msecs;
+#if LWIP_NETIF_HOSTNAME
+ const char *p;
+#endif /* LWIP_NETIF_HOSTNAME */
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_renew()\n"));
+ dhcp_set_state(dhcp, DHCP_RENEWING);
+
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_REQUEST);
+
+ dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
+ dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif));
+
+#if LWIP_NETIF_HOSTNAME
+ p = (const char*)netif->hostname;
+ if (p != NULL) {
+ dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p));
+ while (*p) {
+ dhcp_option_byte(dhcp, *p++);
+ }
+ }
+#endif /* LWIP_NETIF_HOSTNAME */
+
+#if 0
+ dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr));
+#endif
+
+#if 0
+ dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr));
+#endif
+ /* append DHCP message trailer */
+ dhcp_option_trailer(dhcp);
+
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif);
+ dhcp_delete_request(netif);
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew: RENEWING\n"));
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_renew: could not allocate DHCP request\n"));
+ }
+ dhcp->tries++;
+ /* back-off on retries, but to a maximum of 20 seconds */
+ msecs = dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew(): set request timeout %"U16_F" msecs\n", msecs));
+ return result;
+}
+
+/**
+ * Rebind with a DHCP server for an existing DHCP lease.
+ *
+ * @param netif network interface which must rebind with a DHCP server
+ */
+static err_t
+dhcp_rebind(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result;
+ u16_t msecs;
+#if LWIP_NETIF_HOSTNAME
+ const char *p;
+#endif /* LWIP_NETIF_HOSTNAME */
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind()\n"));
+ dhcp_set_state(dhcp, DHCP_REBINDING);
+
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_REQUEST);
+
+ dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
+ dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif));
+
+#if LWIP_NETIF_HOSTNAME
+ p = (const char*)netif->hostname;
+ if (p != NULL) {
+ dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p));
+ while (*p) {
+ dhcp_option_byte(dhcp, *p++);
+ }
+ }
+#endif /* LWIP_NETIF_HOSTNAME */
+
+#if 0
+ dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr));
+
+ dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr));
+#endif
+
+ dhcp_option_trailer(dhcp);
+
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+ /* broadcast to server */
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif);
+ dhcp_delete_request(netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind: REBINDING\n"));
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_rebind: could not allocate DHCP request\n"));
+ }
+ dhcp->tries++;
+ msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind(): set request timeout %"U16_F" msecs\n", msecs));
+ return result;
+}
+
+/**
+ * Enter REBOOTING state to verify an existing lease
+ *
+ * @param netif network interface which must reboot
+ */
+static err_t
+dhcp_reboot(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result;
+ u16_t msecs;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot()\n"));
+ dhcp_set_state(dhcp, DHCP_REBOOTING);
+
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_REQUEST);
+
+ dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
+ dhcp_option_short(dhcp, 576);
+
+ dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
+ dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr));
+
+ dhcp_option_trailer(dhcp);
+
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+ /* broadcast to server */
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif);
+ dhcp_delete_request(netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot: REBOOTING\n"));
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_reboot: could not allocate DHCP request\n"));
+ }
+ dhcp->tries++;
+ msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot(): set request timeout %"U16_F" msecs\n", msecs));
+ return result;
+}
+
+
+/**
+ * Release a DHCP lease.
+ *
+ * @param netif network interface which must release its lease
+ */
+err_t
+dhcp_release(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ err_t result;
+ u16_t msecs;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_release()\n"));
+
+ /* idle DHCP client */
+ dhcp_set_state(dhcp, DHCP_OFF);
+ /* clean old DHCP offer */
+ dhcp->server_ip_addr.addr = 0;
+ dhcp->offered_ip_addr.addr = dhcp->offered_sn_mask.addr = 0;
+ dhcp->offered_gw_addr.addr = dhcp->offered_bc_addr.addr = 0;
+ dhcp->offered_t0_lease = dhcp->offered_t1_renew = dhcp->offered_t2_rebind = 0;
+ dhcp->dns_count = 0;
+
+ /* create and initialize the DHCP message header */
+ result = dhcp_create_request(netif);
+ if (result == ERR_OK) {
+ dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
+ dhcp_option_byte(dhcp, DHCP_RELEASE);
+
+ dhcp_option_trailer(dhcp);
+
+ pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
+
+ udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif);
+ dhcp_delete_request(netif);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release: RELEASED, DHCP_OFF\n"));
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_release: could not allocate DHCP request\n"));
+ }
+ dhcp->tries++;
+ msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000;
+ dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release(): set request timeout %"U16_F" msecs\n", msecs));
+ /* bring the interface down */
+ netif_set_down(netif);
+ /* remove IP address from interface */
+ netif_set_ipaddr(netif, IP_ADDR_ANY);
+ netif_set_gw(netif, IP_ADDR_ANY);
+ netif_set_netmask(netif, IP_ADDR_ANY);
+
+ /* TODO: netif_down(netif); */
+ return result;
+}
+
+/**
+ * Remove the DHCP client from the interface.
+ *
+ * @param netif The network interface to stop DHCP on
+ */
+void
+dhcp_stop(struct netif *netif)
+{
+ struct dhcp *dhcp = netif->dhcp;
+ LWIP_ERROR("dhcp_stop: netif != NULL", (netif != NULL), return;);
+ /* Remove the flag that says this netif is handled by DHCP. */
+ netif->flags &= ~NETIF_FLAG_DHCP;
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_stop()\n"));
+ /* netif is DHCP configured? */
+ if (dhcp != NULL) {
+#if LWIP_DHCP_AUTOIP_COOP
+ if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) {
+ autoip_stop(netif);
+ dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF;
+ }
+#endif /* LWIP_DHCP_AUTOIP_COOP */
+
+ if (dhcp->pcb != NULL) {
+ udp_remove(dhcp->pcb);
+ dhcp->pcb = NULL;
+ }
+ LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL &&
+ dhcp->options_in == NULL && dhcp->options_in_len == 0);
+ mem_free((void *)dhcp);
+ netif->dhcp = NULL;
+ }
+}
+
+/*
+ * Set the DHCP state of a DHCP client.
+ *
+ * If the state changed, reset the number of tries.
+ *
+ * TODO: we might also want to reset the timeout here?
+ */
+static void
+dhcp_set_state(struct dhcp *dhcp, u8_t new_state)
+{
+ if (new_state != dhcp->state) {
+ dhcp->state = new_state;
+ dhcp->tries = 0;
+ }
+}
+
+/*
+ * Concatenate an option type and length field to the outgoing
+ * DHCP message.
+ *
+ */
+static void
+dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len)
+{
+ LWIP_ASSERT("dhcp_option: dhcp->options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN);
+ dhcp->msg_out->options[dhcp->options_out_len++] = option_type;
+ dhcp->msg_out->options[dhcp->options_out_len++] = option_len;
+}
+/*
+ * Concatenate a single byte to the outgoing DHCP message.
+ *
+ */
+static void
+dhcp_option_byte(struct dhcp *dhcp, u8_t value)
+{
+ LWIP_ASSERT("dhcp_option_byte: dhcp->options_out_len < DHCP_OPTIONS_LEN", dhcp->options_out_len < DHCP_OPTIONS_LEN);
+ dhcp->msg_out->options[dhcp->options_out_len++] = value;
+}
+
+static void
+dhcp_option_short(struct dhcp *dhcp, u16_t value)
+{
+ LWIP_ASSERT("dhcp_option_short: dhcp->options_out_len + 2 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U <= DHCP_OPTIONS_LEN);
+ dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff00U) >> 8);
+ dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t) (value & 0x00ffU);
+}
+
+static void
+dhcp_option_long(struct dhcp *dhcp, u32_t value)
+{
+ LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN);
+ dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24);
+ dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16);
+ dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8);
+ dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x000000ffUL));
+}
+
+/**
+ * Extract the DHCP message and the DHCP options.
+ *
+ * Extract the DHCP message and the DHCP options, each into a contiguous
+ * piece of memory. As a DHCP message is variable sized by its options,
+ * and also allows overriding some fields for options, the easy approach
+ * is to first unfold the options into a conitguous piece of memory, and
+ * use that further on.
+ *
+ */
+static err_t
+dhcp_unfold_reply(struct dhcp *dhcp, struct pbuf *p)
+{
+ u16_t ret;
+ LWIP_ERROR("dhcp != NULL", (dhcp != NULL), return ERR_ARG;);
+ /* free any left-overs from previous unfolds */
+ dhcp_free_reply(dhcp);
+ /* options present? */
+ if (p->tot_len > (sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN)) {
+ dhcp->options_in_len = p->tot_len - (sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN);
+ dhcp->options_in = mem_malloc(dhcp->options_in_len);
+ if (dhcp->options_in == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
+ ("dhcp_unfold_reply(): could not allocate dhcp->options\n"));
+ dhcp->options_in_len = 0;
+ return ERR_MEM;
+ }
+ }
+ dhcp->msg_in = mem_malloc(sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN);
+ if (dhcp->msg_in == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
+ ("dhcp_unfold_reply(): could not allocate dhcp->msg_in\n"));
+ if (dhcp->options_in != NULL) {
+ mem_free(dhcp->options_in);
+ dhcp->options_in = NULL;
+ dhcp->options_in_len = 0;
+ }
+ return ERR_MEM;
+ }
+
+ /** copy the DHCP message without options */
+ ret = pbuf_copy_partial(p, dhcp->msg_in, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN, 0);
+ LWIP_ASSERT("ret == sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN", ret == sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_unfold_reply(): copied %"U16_F" bytes into dhcp->msg_in[]\n",
+ sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN));
+
+ if (dhcp->options_in != NULL) {
+ /** copy the DHCP options */
+ ret = pbuf_copy_partial(p, dhcp->options_in, dhcp->options_in_len, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN);
+ LWIP_ASSERT("ret == dhcp->options_in_len", ret == dhcp->options_in_len);
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_unfold_reply(): copied %"U16_F" bytes to dhcp->options_in[]\n",
+ dhcp->options_in_len));
+ }
+ LWIP_UNUSED_ARG(ret);
+ return ERR_OK;
+}
+
+/**
+ * Free the incoming DHCP message including contiguous copy of
+ * its DHCP options.
+ */
+static void dhcp_free_reply(struct dhcp *dhcp)
+{
+ if (dhcp->msg_in != NULL) {
+ mem_free((void *)dhcp->msg_in);
+ dhcp->msg_in = NULL;
+ }
+ if (dhcp->options_in) {
+ mem_free(dhcp->options_in);
+ dhcp->options_in = NULL;
+ dhcp->options_in_len = 0;
+ }
+ LWIP_DEBUGF(DHCP_DEBUG, ("dhcp_free_reply(): free'd\n"));
+}
+
+/**
+ * If an incoming DHCP message is in response to us, then trigger the state machine
+ */
+static void dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port)
+{
+ struct netif *netif = (struct netif *)arg;
+ struct dhcp *dhcp = netif->dhcp;
+ struct dhcp_msg *reply_msg = (struct dhcp_msg *)p->payload;
+ u8_t *options_ptr;
+ u8_t msg_type;
+ u8_t i;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_recv(pbuf = %p) from DHCP server %"U16_F".%"U16_F".%"U16_F".%"U16_F" port %"U16_F"\n", (void*)p,
+ (u16_t)(ntohl(addr->addr) >> 24 & 0xff), (u16_t)(ntohl(addr->addr) >> 16 & 0xff),
+ (u16_t)(ntohl(addr->addr) >> 8 & 0xff), (u16_t)(ntohl(addr->addr) & 0xff), port));
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->len = %"U16_F"\n", p->len));
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->tot_len = %"U16_F"\n", p->tot_len));
+ /* prevent warnings about unused arguments */
+ LWIP_UNUSED_ARG(pcb);
+ LWIP_UNUSED_ARG(addr);
+ LWIP_UNUSED_ARG(port);
+
+ LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL &&
+ dhcp->options_in == NULL && dhcp->options_in_len == 0);
+
+ if (p->len < DHCP_MIN_REPLY_LEN) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP reply message too short\n"));
+ goto free_pbuf_and_return;
+ }
+
+ if (reply_msg->op != DHCP_BOOTREPLY) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op));
+ goto free_pbuf_and_return;
+ }
+ /* iterate through hardware address and match against DHCP message */
+ for (i = 0; i < netif->hwaddr_len; i++) {
+ if (netif->hwaddr[i] != reply_msg->chaddr[i]) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING,
+ ("netif->hwaddr[%"U16_F"]==%02"X16_F" != reply_msg->chaddr[%"U16_F"]==%02"X16_F"\n",
+ (u16_t)i, (u16_t)netif->hwaddr[i], (u16_t)i, (u16_t)reply_msg->chaddr[i]));
+ goto free_pbuf_and_return;
+ }
+ }
+ /* match transaction ID against what we expected */
+ if (ntohl(reply_msg->xid) != dhcp->xid) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING,
+ ("transaction id mismatch reply_msg->xid(%"X32_F")!=dhcp->xid(%"X32_F")\n",ntohl(reply_msg->xid),dhcp->xid));
+ goto free_pbuf_and_return;
+ }
+ /* option fields could be unfold? */
+ if (dhcp_unfold_reply(dhcp, p) != ERR_OK) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
+ ("problem unfolding DHCP message - too short on memory?\n"));
+ goto free_pbuf_and_return;
+ }
+
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("searching DHCP_OPTION_MESSAGE_TYPE\n"));
+ /* obtain pointer to DHCP message type */
+ options_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_MESSAGE_TYPE);
+ if (options_ptr == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP_OPTION_MESSAGE_TYPE option not found\n"));
+ goto free_pbuf_and_return;
+ }
+
+ /* read DHCP message type */
+ msg_type = dhcp_get_option_byte(options_ptr + 2);
+ /* message type is DHCP ACK? */
+ if (msg_type == DHCP_ACK) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_ACK received\n"));
+ /* in requesting state? */
+ if (dhcp->state == DHCP_REQUESTING) {
+ dhcp_handle_ack(netif);
+ dhcp->request_timeout = 0;
+#if DHCP_DOES_ARP_CHECK
+ /* check if the acknowledged lease address is already in use */
+ dhcp_check(netif);
+#else
+ /* bind interface to the acknowledged lease address */
+ dhcp_bind(netif);
+#endif
+ }
+ /* already bound to the given lease address? */
+ else if ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING)) {
+ dhcp->request_timeout = 0;
+ dhcp_bind(netif);
+ }
+ }
+ /* received a DHCP_NAK in appropriate state? */
+ else if ((msg_type == DHCP_NAK) &&
+ ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REQUESTING) ||
+ (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING ))) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_NAK received\n"));
+ dhcp->request_timeout = 0;
+ dhcp_handle_nak(netif);
+ }
+ /* received a DHCP_OFFER in DHCP_SELECTING state? */
+ else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_SELECTING)) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_OFFER received in DHCP_SELECTING state\n"));
+ dhcp->request_timeout = 0;
+ /* remember offered lease */
+ dhcp_handle_offer(netif);
+ }
+free_pbuf_and_return:
+ dhcp_free_reply(dhcp);
+ pbuf_free(p);
+}
+
+/**
+ * Create a DHCP request, fill in common headers
+ *
+ * @param netif the netif under DHCP control
+ */
+static err_t
+dhcp_create_request(struct netif *netif)
+{
+ struct dhcp *dhcp;
+ u16_t i;
+#ifndef DHCP_GLOBAL_XID
+ /** default global transaction identifier starting value (easy to match
+ * with a packet analyser). We simply increment for each new request.
+ * Predefine DHCP_GLOBAL_XID to a better value or a function call to generate one
+ * at runtime, any supporting function prototypes can be defined in DHCP_GLOBAL_XID_HEADER */
+ static u32_t xid = 0xABCD0000;
+#else
+ static u32_t xid;
+ static u8_t xid_initialised = 0;
+ if (!xid_initialised) {
+ xid = DHCP_GLOBAL_XID;
+ xid_initialised = !xid_initialised;
+ }
+#endif
+ LWIP_ERROR("dhcp_create_request: netif != NULL", (netif != NULL), return ERR_ARG;);
+ dhcp = netif->dhcp;
+ LWIP_ERROR("dhcp_create_request: dhcp != NULL", (dhcp != NULL), return ERR_VAL;);
+ LWIP_ASSERT("dhcp_create_request: dhcp->p_out == NULL", dhcp->p_out == NULL);
+ LWIP_ASSERT("dhcp_create_request: dhcp->msg_out == NULL", dhcp->msg_out == NULL);
+ dhcp->p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM);
+ if (dhcp->p_out == NULL) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
+ ("dhcp_create_request(): could not allocate pbuf\n"));
+ return ERR_MEM;
+ }
+ LWIP_ASSERT("dhcp_create_request: check that first pbuf can hold struct dhcp_msg",
+ (dhcp->p_out->len >= sizeof(struct dhcp_msg)));
+
+ /* reuse transaction identifier in retransmissions */
+ if (dhcp->tries==0)
+ xid++;
+ dhcp->xid = xid;
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE,
+ ("transaction id xid(%"X32_F")\n", xid));
+
+ dhcp->msg_out = (struct dhcp_msg *)dhcp->p_out->payload;
+
+ dhcp->msg_out->op = DHCP_BOOTREQUEST;
+ /* TODO: make link layer independent */
+ dhcp->msg_out->htype = DHCP_HTYPE_ETH;
+ /* TODO: make link layer independent */
+ dhcp->msg_out->hlen = DHCP_HLEN_ETH;
+ dhcp->msg_out->hops = 0;
+ dhcp->msg_out->xid = htonl(dhcp->xid);
+ dhcp->msg_out->secs = 0;
+ dhcp->msg_out->flags = 0;
+ dhcp->msg_out->ciaddr.addr = 0;
+ if (dhcp->state==DHCP_BOUND || dhcp->state==DHCP_RENEWING || dhcp->state==DHCP_REBINDING) {
+ dhcp->msg_out->ciaddr.addr = netif->ip_addr.addr;
+ }
+ dhcp->msg_out->yiaddr.addr = 0;
+ dhcp->msg_out->siaddr.addr = 0;
+ dhcp->msg_out->giaddr.addr = 0;
+ for (i = 0; i < DHCP_CHADDR_LEN; i++) {
+ /* copy netif hardware address, pad with zeroes */
+ dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;
+ }
+ for (i = 0; i < DHCP_SNAME_LEN; i++) {
+ dhcp->msg_out->sname[i] = 0;
+ }
+ for (i = 0; i < DHCP_FILE_LEN; i++) {
+ dhcp->msg_out->file[i] = 0;
+ }
+ dhcp->msg_out->cookie = htonl(0x63825363UL);
+ dhcp->options_out_len = 0;
+ /* fill options field with an incrementing array (for debugging purposes) */
+ for (i = 0; i < DHCP_OPTIONS_LEN; i++) {
+ dhcp->msg_out->options[i] = (u8_t)i; /* for debugging only, no matter if truncated */
+ }
+ return ERR_OK;
+}
+
+/**
+ * Free previously allocated memory used to send a DHCP request.
+ *
+ * @param netif the netif under DHCP control
+ */
+static void
+dhcp_delete_request(struct netif *netif)
+{
+ struct dhcp *dhcp;
+ LWIP_ERROR("dhcp_delete_request: netif != NULL", (netif != NULL), return;);
+ dhcp = netif->dhcp;
+ LWIP_ERROR("dhcp_delete_request: dhcp != NULL", (dhcp != NULL), return;);
+ LWIP_ASSERT("dhcp_delete_request: dhcp->p_out != NULL", dhcp->p_out != NULL);
+ LWIP_ASSERT("dhcp_delete_request: dhcp->msg_out != NULL", dhcp->msg_out != NULL);
+ if (dhcp->p_out != NULL) {
+ pbuf_free(dhcp->p_out);
+ }
+ dhcp->p_out = NULL;
+ dhcp->msg_out = NULL;
+}
+
+/**
+ * Add a DHCP message trailer
+ *
+ * Adds the END option to the DHCP message, and if
+ * necessary, up to three padding bytes.
+ *
+ * @param dhcp DHCP state structure
+ */
+static void
+dhcp_option_trailer(struct dhcp *dhcp)
+{
+ LWIP_ERROR("dhcp_option_trailer: dhcp != NULL", (dhcp != NULL), return;);
+ LWIP_ASSERT("dhcp_option_trailer: dhcp->msg_out != NULL\n", dhcp->msg_out != NULL);
+ LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN);
+ dhcp->msg_out->options[dhcp->options_out_len++] = DHCP_OPTION_END;
+ /* packet is too small, or not 4 byte aligned? */
+ while ((dhcp->options_out_len < DHCP_MIN_OPTIONS_LEN) || (dhcp->options_out_len & 3)) {
+ /* LWIP_DEBUGF(DHCP_DEBUG,("dhcp_option_trailer:dhcp->options_out_len=%"U16_F", DHCP_OPTIONS_LEN=%"U16_F, dhcp->options_out_len, DHCP_OPTIONS_LEN)); */
+ LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN);
+ /* add a fill/padding byte */
+ dhcp->msg_out->options[dhcp->options_out_len++] = 0;
+ }
+}
+
+/**
+ * Find the offset of a DHCP option inside the DHCP message.
+ *
+ * @param dhcp DHCP client
+ * @param option_type
+ *
+ * @return a byte offset into the UDP message where the option was found, or
+ * zero if the given option was not found.
+ */
+static u8_t *dhcp_get_option_ptr(struct dhcp *dhcp, u8_t option_type)
+{
+ u8_t overload = DHCP_OVERLOAD_NONE;
+
+ /* options available? */
+ if ((dhcp->options_in != NULL) && (dhcp->options_in_len > 0)) {
+ /* start with options field */
+ u8_t *options = (u8_t *)dhcp->options_in;
+ u16_t offset = 0;
+ /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */
+ while ((offset < dhcp->options_in_len) && (options[offset] != DHCP_OPTION_END)) {
+ /* LWIP_DEBUGF(DHCP_DEBUG, ("msg_offset=%"U16_F", q->len=%"U16_F, msg_offset, q->len)); */
+ /* are the sname and/or file field overloaded with options? */
+ if (options[offset] == DHCP_OPTION_OVERLOAD) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded message detected\n"));
+ /* skip option type and length */
+ offset += 2;
+ overload = options[offset++];
+ }
+ /* requested option found */
+ else if (options[offset] == option_type) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("option found at offset %"U16_F" in options\n", offset));
+ return &options[offset];
+ /* skip option */
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", options[offset]));
+ /* skip option type */
+ offset++;
+ /* skip option length, and then length bytes */
+ offset += 1 + options[offset];
+ }
+ }
+ /* is this an overloaded message? */
+ if (overload != DHCP_OVERLOAD_NONE) {
+ u16_t field_len;
+ if (overload == DHCP_OVERLOAD_FILE) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded file field\n"));
+ options = (u8_t *)&dhcp->msg_in->file;
+ field_len = DHCP_FILE_LEN;
+ } else if (overload == DHCP_OVERLOAD_SNAME) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname field\n"));
+ options = (u8_t *)&dhcp->msg_in->sname;
+ field_len = DHCP_SNAME_LEN;
+ /* TODO: check if else if () is necessary */
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname and file field\n"));
+ options = (u8_t *)&dhcp->msg_in->sname;
+ field_len = DHCP_FILE_LEN + DHCP_SNAME_LEN;
+ }
+ offset = 0;
+
+ /* at least 1 byte to read and no end marker */
+ while ((offset < field_len) && (options[offset] != DHCP_OPTION_END)) {
+ if (options[offset] == option_type) {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("option found at offset=%"U16_F"\n", offset));
+ return &options[offset];
+ /* skip option */
+ } else {
+ LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("skipping option %"U16_F"\n", options[offset]));
+ /* skip option type */
+ offset++;
+ offset += 1 + options[offset];
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+/**
+ * Return the byte of DHCP option data.
+ *
+ * @param client DHCP client.
+ * @param ptr pointer obtained by dhcp_get_option_ptr().
+ *
+ * @return byte value at the given address.
+ */
+static u8_t
+dhcp_get_option_byte(u8_t *ptr)
+{
+ LWIP_DEBUGF(DHCP_DEBUG, ("option byte value=%"U16_F"\n", (u16_t)(*ptr)));
+ return *ptr;
+}
+
+#if 0 /* currently unused */
+/**
+ * Return the 16-bit value of DHCP option data.
+ *
+ * @param client DHCP client.
+ * @param ptr pointer obtained by dhcp_get_option_ptr().
+ *
+ * @return byte value at the given address.
+ */
+static u16_t
+dhcp_get_option_short(u8_t *ptr)
+{
+ u16_t value;
+ value = *ptr++ << 8;
+ value |= *ptr;
+ LWIP_DEBUGF(DHCP_DEBUG, ("option short value=%"U16_F"\n", value));
+ return value;
+}
+#endif
+
+/**
+ * Return the 32-bit value of DHCP option data.
+ *
+ * @param client DHCP client.
+ * @param ptr pointer obtained by dhcp_get_option_ptr().
+ *
+ * @return byte value at the given address.
+ */
+static u32_t dhcp_get_option_long(u8_t *ptr)
+{
+ u32_t value;
+ value = (u32_t)(*ptr++) << 24;
+ value |= (u32_t)(*ptr++) << 16;
+ value |= (u32_t)(*ptr++) << 8;
+ value |= (u32_t)(*ptr++);
+ LWIP_DEBUGF(DHCP_DEBUG, ("option long value=%"U32_F"\n", value));
+ return value;
+}
+
+#endif /* LWIP_DHCP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c
new file mode 100644
index 0000000..62ccf63
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c
@@ -0,0 +1,982 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * DNS - host name to IP address resolver.
+ *
+ */
+
+/**
+
+ * This file implements a DNS host name to IP address resolver.
+
+ * Port to lwIP from uIP
+ * by Jim Pettinato April 2007
+
+ * uIP version Copyright (c) 2002-2003, Adam Dunkels.
+ * 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. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+ *
+ *
+ * DNS.C
+ *
+ * The lwIP DNS resolver functions are used to lookup a host name and
+ * map it to a numerical IP address. It maintains a list of resolved
+ * hostnames that can be queried with the dns_lookup() function.
+ * New hostnames can be resolved using the dns_query() function.
+ *
+ * The lwIP version of the resolver also adds a non-blocking version of
+ * gethostbyname() that will work with a raw API application. This function
+ * checks for an IP address string first and converts it if it is valid.
+ * gethostbyname() then does a dns_lookup() to see if the name is
+ * already in the table. If so, the IP is returned. If not, a query is
+ * issued and the function returns with a ERR_INPROGRESS status. The app
+ * using the dns client must then go into a waiting state.
+ *
+ * Once a hostname has been resolved (or found to be non-existent),
+ * the resolver code calls a specified callback function (which
+ * must be implemented by the module that uses the resolver).
+ */
+
+/*-----------------------------------------------------------------------------
+ * RFC 1035 - Domain names - implementation and specification
+ * RFC 2181 - Clarifications to the DNS Specification
+ *----------------------------------------------------------------------------*/
+
+/** @todo: define good default values (rfc compliance) */
+/** @todo: improve answer parsing, more checkings... */
+/** @todo: check RFC1035 - 7.3. Processing responses */
+
+/*-----------------------------------------------------------------------------
+ * Includes
+ *----------------------------------------------------------------------------*/
+
+#include "lwip/opt.h"
+
+#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/udp.h"
+#include "lwip/mem.h"
+#include "lwip/dns.h"
+
+#include <string.h>
+
+/** DNS server IP address */
+#ifndef DNS_SERVER_ADDRESS
+#define DNS_SERVER_ADDRESS inet_addr("208.67.222.222") /* resolver1.opendns.com */
+#endif
+
+/** DNS server port address */
+#ifndef DNS_SERVER_PORT
+#define DNS_SERVER_PORT 53
+#endif
+
+/** DNS maximum number of retries when asking for a name, before "timeout". */
+#ifndef DNS_MAX_RETRIES
+#define DNS_MAX_RETRIES 4
+#endif
+
+/** DNS resource record max. TTL (one week as default) */
+#ifndef DNS_MAX_TTL
+#define DNS_MAX_TTL 604800
+#endif
+
+/* DNS protocol flags */
+#define DNS_FLAG1_RESPONSE 0x80
+#define DNS_FLAG1_OPCODE_STATUS 0x10
+#define DNS_FLAG1_OPCODE_INVERSE 0x08
+#define DNS_FLAG1_OPCODE_STANDARD 0x00
+#define DNS_FLAG1_AUTHORATIVE 0x04
+#define DNS_FLAG1_TRUNC 0x02
+#define DNS_FLAG1_RD 0x01
+#define DNS_FLAG2_RA 0x80
+#define DNS_FLAG2_ERR_MASK 0x0f
+#define DNS_FLAG2_ERR_NONE 0x00
+#define DNS_FLAG2_ERR_NAME 0x03
+
+/* DNS protocol states */
+#define DNS_STATE_UNUSED 0
+#define DNS_STATE_NEW 1
+#define DNS_STATE_ASKING 2
+#define DNS_STATE_DONE 3
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+/** DNS message header */
+struct dns_hdr {
+ PACK_STRUCT_FIELD(u16_t id);
+ PACK_STRUCT_FIELD(u8_t flags1);
+ PACK_STRUCT_FIELD(u8_t flags2);
+ PACK_STRUCT_FIELD(u16_t numquestions);
+ PACK_STRUCT_FIELD(u16_t numanswers);
+ PACK_STRUCT_FIELD(u16_t numauthrr);
+ PACK_STRUCT_FIELD(u16_t numextrarr);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+#define SIZEOF_DNS_HDR 12
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+/** DNS query message structure */
+struct dns_query {
+ /* DNS query record starts with either a domain name or a pointer
+ to a name already present somewhere in the packet. */
+ PACK_STRUCT_FIELD(u16_t type);
+ PACK_STRUCT_FIELD(u16_t class);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+#define SIZEOF_DNS_QUERY 4
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+/** DNS answer message structure */
+struct dns_answer {
+ /* DNS answer record starts with either a domain name or a pointer
+ to a name already present somewhere in the packet. */
+ PACK_STRUCT_FIELD(u16_t type);
+ PACK_STRUCT_FIELD(u16_t class);
+ PACK_STRUCT_FIELD(u32_t ttl);
+ PACK_STRUCT_FIELD(u16_t len);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+#define SIZEOF_DNS_ANSWER 10
+
+/** DNS table entry */
+struct dns_table_entry {
+ u8_t state;
+ u8_t numdns;
+ u8_t tmr;
+ u8_t retries;
+ u8_t seqno;
+ u8_t err;
+ u32_t ttl;
+ char name[DNS_MAX_NAME_LENGTH];
+ struct ip_addr ipaddr;
+ /* pointer to callback on DNS query done */
+ dns_found_callback found;
+ void *arg;
+};
+
+#if DNS_LOCAL_HOSTLIST
+/** struct used for local host-list */
+struct local_hostlist_entry {
+ /** static hostname */
+ const char *name;
+ /** static host address in network byteorder */
+ u32_t addr;
+ struct local_hostlist_entry *next;
+};
+
+#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
+/** Local host-list. For hostnames in this list, no
+ * external name resolution is performed */
+static struct local_hostlist_entry *local_hostlist_dynamic;
+#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
+
+/** Defining this allows the local_hostlist_static to be placed in a different
+ * linker section (e.g. FLASH) */
+#ifndef DNS_LOCAL_HOSTLIST_STORAGE_PRE
+#define DNS_LOCAL_HOSTLIST_STORAGE_PRE static
+#endif /* DNS_LOCAL_HOSTLIST_STORAGE_PRE */
+/** Defining this allows the local_hostlist_static to be placed in a different
+ * linker section (e.g. FLASH) */
+#ifndef DNS_LOCAL_HOSTLIST_STORAGE_POST
+#define DNS_LOCAL_HOSTLIST_STORAGE_POST
+#endif /* DNS_LOCAL_HOSTLIST_STORAGE_POST */
+DNS_LOCAL_HOSTLIST_STORAGE_PRE struct local_hostlist_entry local_hostlist_static[]
+ DNS_LOCAL_HOSTLIST_STORAGE_POST = DNS_LOCAL_HOSTLIST_INIT;
+
+#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
+
+static void dns_init_local();
+#endif /* DNS_LOCAL_HOSTLIST */
+
+
+/* forward declarations */
+static void dns_recv(void *s, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port);
+static void dns_check_entries(void);
+
+/*-----------------------------------------------------------------------------
+ * Globales
+ *----------------------------------------------------------------------------*/
+
+/* DNS variables */
+static struct udp_pcb *dns_pcb;
+static u8_t dns_seqno;
+static struct dns_table_entry dns_table[DNS_TABLE_SIZE];
+static struct ip_addr dns_servers[DNS_MAX_SERVERS];
+
+#if (DNS_USES_STATIC_BUF == 1)
+static u8_t dns_payload[DNS_MSG_SIZE];
+#endif /* (DNS_USES_STATIC_BUF == 1) */
+
+/**
+ * Initialize the resolver: set up the UDP pcb and configure the default server
+ * (DNS_SERVER_ADDRESS).
+ */
+void
+dns_init()
+{
+ struct ip_addr dnsserver;
+
+ /* initialize default DNS server address */
+ dnsserver.addr = DNS_SERVER_ADDRESS;
+
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_init: initializing\n"));
+
+ /* if dns client not yet initialized... */
+ if (dns_pcb == NULL) {
+ dns_pcb = udp_new();
+
+ if (dns_pcb != NULL) {
+ /* initialize DNS table not needed (initialized to zero since it is a
+ * global variable) */
+ LWIP_ASSERT("For implicit initialization to work, DNS_STATE_UNUSED needs to be 0",
+ DNS_STATE_UNUSED == 0);
+
+ /* initialize DNS client */
+ udp_bind(dns_pcb, IP_ADDR_ANY, 0);
+ udp_recv(dns_pcb, dns_recv, NULL);
+
+ /* initialize default DNS primary server */
+ dns_setserver(0, &dnsserver);
+ }
+ }
+#if DNS_LOCAL_HOSTLIST
+ dns_init_local();
+#endif
+}
+
+/**
+ * Initialize one of the DNS servers.
+ *
+ * @param numdns the index of the DNS server to set must be < DNS_MAX_SERVERS
+ * @param dnsserver IP address of the DNS server to set
+ */
+void
+dns_setserver(u8_t numdns, struct ip_addr *dnsserver)
+{
+ if ((numdns < DNS_MAX_SERVERS) && (dns_pcb != NULL) &&
+ (dnsserver != NULL) && (dnsserver->addr !=0 )) {
+ dns_servers[numdns] = (*dnsserver);
+ }
+}
+
+/**
+ * Obtain one of the currently configured DNS server.
+ *
+ * @param numdns the index of the DNS server
+ * @return IP address of the indexed DNS server or "ip_addr_any" if the DNS
+ * server has not been configured.
+ */
+struct ip_addr
+dns_getserver(u8_t numdns)
+{
+ if (numdns < DNS_MAX_SERVERS) {
+ return dns_servers[numdns];
+ } else {
+ return *IP_ADDR_ANY;
+ }
+}
+
+/**
+ * The DNS resolver client timer - handle retries and timeouts and should
+ * be called every DNS_TMR_INTERVAL milliseconds (every second by default).
+ */
+void
+dns_tmr(void)
+{
+ if (dns_pcb != NULL) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_tmr: dns_check_entries\n"));
+ dns_check_entries();
+ }
+}
+
+#if DNS_LOCAL_HOSTLIST
+static void
+dns_init_local()
+{
+#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT)
+ int i;
+ struct local_hostlist_entry *entry;
+ /* Dynamic: copy entries from DNS_LOCAL_HOSTLIST_INIT to list */
+ struct local_hostlist_entry local_hostlist_init[] = DNS_LOCAL_HOSTLIST_INIT;
+ for (i = 0; i < sizeof(local_hostlist_init) / sizeof(struct local_hostlist_entry); i++) {
+ entry = mem_malloc(sizeof(struct local_hostlist_entry));
+ LWIP_ASSERT("mem-error in dns_init_local", entry != NULL);
+ if (entry != NULL) {
+ struct local_hostlist_entry *init_entry = &local_hostlist_init[i];
+ entry->name = init_entry->name;
+ entry->addr = init_entry->addr;
+ entry->next = local_hostlist_dynamic;
+ local_hostlist_dynamic = entry;
+ }
+ }
+#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT) */
+}
+
+/**
+ * Scans the local host-list for a hostname.
+ *
+ * @param hostname Hostname to look for in the local host-list
+ * @return The first IP address for the hostname in the local host-list or
+ * INADDR_NONE if not found.
+ */
+static u32_t
+dns_lookup_local(const char *hostname)
+{
+#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
+ struct local_hostlist_entry *entry = local_hostlist_dynamic;
+ while(entry != NULL) {
+ if(strcmp(entry->name, hostname) == 0) {
+ return entry->addr;
+ }
+ entry = entry->next;
+ }
+#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
+ int i;
+ for (i = 0; i < sizeof(local_hostlist_static) / sizeof(struct local_hostlist_entry); i++) {
+ if(strcmp(local_hostlist_static[i].name, hostname) == 0) {
+ return local_hostlist_static[i].addr;
+ }
+ }
+#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
+ return INADDR_NONE;
+}
+
+#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
+/** Remove all entries from the local host-list for a specific hostname
+ * and/or IP addess
+ *
+ * @param hostname hostname for which entries shall be removed from the local
+ * host-list
+ * @param addr address for which entries shall be removed from the local host-list
+ * @return the number of removed entries
+ */
+int
+dns_local_removehost(const char *hostname, const struct ip_addr *addr)
+{
+ int removed = 0;
+ struct local_hostlist_entry *entry = local_hostlist_dynamic;
+ struct local_hostlist_entry *last_entry = NULL;
+ while (entry != NULL) {
+ if (((hostname == NULL) || !strcmp(entry->name, hostname)) &&
+ ((addr == NULL) || (entry->addr == addr->addr))) {
+ struct local_hostlist_entry *free_entry;
+ if (last_entry != NULL) {
+ last_entry->next = entry->next;
+ } else {
+ local_hostlist_dynamic = entry->next;
+ }
+ free_entry = entry;
+ entry = entry->next;
+ mem_free(free_entry);
+ removed++;
+ } else {
+ last_entry = entry;
+ entry = entry->next;
+ }
+ }
+ return removed;
+}
+
+/**
+ * Add a hostname/IP address pair to the local host-list.
+ * Duplicates are not checked.
+ *
+ * @param hostname hostname of the new entry
+ * @param addr IP address of the new entry
+ * @return ERR_OK if succeeded or ERR_MEM on memory error
+ */
+err_t
+dns_local_addhost(const char *hostname, const struct ip_addr *addr)
+{
+ struct local_hostlist_entry *entry;
+ entry = mem_malloc(sizeof(struct local_hostlist_entry));
+ if (entry == NULL) {
+ return ERR_MEM;
+ }
+ entry->name = hostname;
+ entry->addr = addr->addr;
+ entry->next = local_hostlist_dynamic;
+ local_hostlist_dynamic = entry;
+ return ERR_OK;
+}
+#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC*/
+#endif /* DNS_LOCAL_HOSTLIST */
+
+/**
+ * Look up a hostname in the array of known hostnames.
+ *
+ * @note This function only looks in the internal array of known
+ * hostnames, it does not send out a query for the hostname if none
+ * was found. The function dns_enqueue() can be used to send a query
+ * for a hostname.
+ *
+ * @param name the hostname to look up
+ * @return the hostname's IP address, as u32_t (instead of struct ip_addr to
+ * better check for failure: != INADDR_NONE) or INADDR_NONE if the hostname
+ * was not found in the cached dns_table.
+ */
+static u32_t
+dns_lookup(const char *name)
+{
+ u8_t i;
+#if DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN)
+ u32_t addr;
+#endif /* DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN) */
+#if DNS_LOCAL_HOSTLIST
+ if ((addr = dns_lookup_local(name)) != INADDR_NONE) {
+ return addr;
+ }
+#endif /* DNS_LOCAL_HOSTLIST */
+#ifdef DNS_LOOKUP_LOCAL_EXTERN
+ if((addr = DNS_LOOKUP_LOCAL_EXTERN(name)) != INADDR_NONE) {
+ return addr;
+ }
+#endif /* DNS_LOOKUP_LOCAL_EXTERN */
+
+ /* Walk through name list, return entry if found. If not, return NULL. */
+ for (i = 0; i < DNS_TABLE_SIZE; ++i) {
+ if ((dns_table[i].state == DNS_STATE_DONE) &&
+ (strcmp(name, dns_table[i].name) == 0)) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_lookup: \"%s\": found = ", name));
+ ip_addr_debug_print(DNS_DEBUG, &(dns_table[i].ipaddr));
+ LWIP_DEBUGF(DNS_DEBUG, ("\n"));
+ return dns_table[i].ipaddr.addr;
+ }
+ }
+
+ return INADDR_NONE;
+}
+
+#if DNS_DOES_NAME_CHECK
+/**
+ * Compare the "dotted" name "query" with the encoded name "response"
+ * to make sure an answer from the DNS server matches the current dns_table
+ * entry (otherwise, answers might arrive late for hostname not on the list
+ * any more).
+ *
+ * @param query hostname (not encoded) from the dns_table
+ * @param response encoded hostname in the DNS response
+ * @return 0: names equal; 1: names differ
+ */
+static u8_t
+dns_compare_name(unsigned char *query, unsigned char *response)
+{
+ unsigned char n;
+
+ do {
+ n = *response++;
+ /** @see RFC 1035 - 4.1.4. Message compression */
+ if ((n & 0xc0) == 0xc0) {
+ /* Compressed name */
+ break;
+ } else {
+ /* Not compressed name */
+ while (n > 0) {
+ if ((*query) != (*response)) {
+ return 1;
+ }
+ ++response;
+ ++query;
+ --n;
+ };
+ ++query;
+ }
+ } while (*response != 0);
+
+ return 0;
+}
+#endif /* DNS_DOES_NAME_CHECK */
+
+/**
+ * Walk through a compact encoded DNS name and return the end of the name.
+ *
+ * @param query encoded DNS name in the DNS server response
+ * @return end of the name
+ */
+static unsigned char *
+dns_parse_name(unsigned char *query)
+{
+ unsigned char n;
+
+ do {
+ n = *query++;
+ /** @see RFC 1035 - 4.1.4. Message compression */
+ if ((n & 0xc0) == 0xc0) {
+ /* Compressed name */
+ break;
+ } else {
+ /* Not compressed name */
+ while (n > 0) {
+ ++query;
+ --n;
+ };
+ }
+ } while (*query != 0);
+
+ return query + 1;
+}
+
+/**
+ * Send a DNS query packet.
+ *
+ * @param numdns index of the DNS server in the dns_servers table
+ * @param name hostname to query
+ * @param id index of the hostname in dns_table, used as transaction ID in the
+ * DNS query packet
+ * @return ERR_OK if packet is sent; an err_t indicating the problem otherwise
+ */
+static err_t
+dns_send(u8_t numdns, const char* name, u8_t id)
+{
+ err_t err;
+ struct dns_hdr *hdr;
+ struct dns_query qry;
+ struct pbuf *p;
+ char *query, *nptr;
+ const char *pHostname;
+ u8_t n;
+
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_send: dns_servers[%"U16_F"] \"%s\": request\n",
+ (u16_t)(numdns), name));
+ LWIP_ASSERT("dns server out of array", numdns < DNS_MAX_SERVERS);
+ LWIP_ASSERT("dns server has no IP address set", dns_servers[numdns].addr != 0);
+
+ /* if here, we have either a new query or a retry on a previous query to process */
+ p = pbuf_alloc(PBUF_TRANSPORT, SIZEOF_DNS_HDR + DNS_MAX_NAME_LENGTH +
+ SIZEOF_DNS_QUERY, PBUF_RAM);
+ if (p != NULL) {
+ LWIP_ASSERT("pbuf must be in one piece", p->next == NULL);
+ /* fill dns header */
+ hdr = (struct dns_hdr*)p->payload;
+ memset(hdr, 0, SIZEOF_DNS_HDR);
+ hdr->id = htons(id);
+ hdr->flags1 = DNS_FLAG1_RD;
+ hdr->numquestions = htons(1);
+ query = (char*)hdr + SIZEOF_DNS_HDR;
+ pHostname = name;
+ --pHostname;
+
+ /* convert hostname into suitable query format. */
+ do {
+ ++pHostname;
+ nptr = query;
+ ++query;
+ for(n = 0; *pHostname != '.' && *pHostname != 0; ++pHostname) {
+ *query = *pHostname;
+ ++query;
+ ++n;
+ }
+ *nptr = n;
+ } while(*pHostname != 0);
+ *query++='\0';
+
+ /* fill dns query */
+ qry.type = htons(DNS_RRTYPE_A);
+ qry.class = htons(DNS_RRCLASS_IN);
+ MEMCPY( query, &qry, SIZEOF_DNS_QUERY);
+
+ /* resize pbuf to the exact dns query */
+ pbuf_realloc(p, (query + SIZEOF_DNS_QUERY) - ((char*)(p->payload)));
+
+ /* connect to the server for faster receiving */
+ udp_connect(dns_pcb, &dns_servers[numdns], DNS_SERVER_PORT);
+ /* send dns packet */
+ err = udp_sendto(dns_pcb, p, &dns_servers[numdns], DNS_SERVER_PORT);
+
+ /* free pbuf */
+ pbuf_free(p);
+ } else {
+ err = ERR_MEM;
+ }
+
+ return err;
+}
+
+/**
+ * dns_check_entry() - see if pEntry has not yet been queried and, if so, sends out a query.
+ * Check an entry in the dns_table:
+ * - send out query for new entries
+ * - retry old pending entries on timeout (also with different servers)
+ * - remove completed entries from the table if their TTL has expired
+ *
+ * @param i index of the dns_table entry to check
+ */
+static void
+dns_check_entry(u8_t i)
+{
+ struct dns_table_entry *pEntry = &dns_table[i];
+
+ LWIP_ASSERT("array index out of bounds", i < DNS_TABLE_SIZE);
+
+ switch(pEntry->state) {
+
+ case DNS_STATE_NEW: {
+ /* initialize new entry */
+ pEntry->state = DNS_STATE_ASKING;
+ pEntry->numdns = 0;
+ pEntry->tmr = 1;
+ pEntry->retries = 0;
+
+ /* send DNS packet for this entry */
+ dns_send(pEntry->numdns, pEntry->name, i);
+ break;
+ }
+
+ case DNS_STATE_ASKING: {
+ if (--pEntry->tmr == 0) {
+ if (++pEntry->retries == DNS_MAX_RETRIES) {
+ if ((pEntry->numdns+1<DNS_MAX_SERVERS) && (dns_servers[pEntry->numdns+1].addr!=0)) {
+ /* change of server */
+ pEntry->numdns++;
+ pEntry->tmr = 1;
+ pEntry->retries = 0;
+ break;
+ } else {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": timeout\n", pEntry->name));
+ /* call specified callback function if provided */
+ if (pEntry->found)
+ (*pEntry->found)(pEntry->name, NULL, pEntry->arg);
+ /* flush this entry */
+ pEntry->state = DNS_STATE_UNUSED;
+ pEntry->found = NULL;
+ break;
+ }
+ }
+
+ /* wait longer for the next retry */
+ pEntry->tmr = pEntry->retries;
+
+ /* send DNS packet for this entry */
+ dns_send(pEntry->numdns, pEntry->name, i);
+ }
+ break;
+ }
+
+ case DNS_STATE_DONE: {
+ /* if the time to live is nul */
+ if (--pEntry->ttl == 0) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": flush\n", pEntry->name));
+ /* flush this entry */
+ pEntry->state = DNS_STATE_UNUSED;
+ pEntry->found = NULL;
+ }
+ break;
+ }
+ case DNS_STATE_UNUSED:
+ /* nothing to do */
+ break;
+ default:
+ LWIP_ASSERT("unknown dns_table entry state:", 0);
+ break;
+ }
+}
+
+/**
+ * Call dns_check_entry for each entry in dns_table - check all entries.
+ */
+static void
+dns_check_entries(void)
+{
+ u8_t i;
+
+ for (i = 0; i < DNS_TABLE_SIZE; ++i) {
+ dns_check_entry(i);
+ }
+}
+
+/**
+ * Receive input function for DNS response packets arriving for the dns UDP pcb.
+ *
+ * @params see udp.h
+ */
+static void
+dns_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port)
+{
+ u8_t i;
+ char *pHostname;
+ struct dns_hdr *hdr;
+ struct dns_answer ans;
+ struct dns_table_entry *pEntry;
+ u8_t nquestions, nanswers;
+#if (DNS_USES_STATIC_BUF == 0)
+ u8_t dns_payload[DNS_MSG_SIZE];
+#endif /* (DNS_USES_STATIC_BUF == 0) */
+#if (DNS_USES_STATIC_BUF == 2)
+ u8_t* dns_payload;
+#endif /* (DNS_USES_STATIC_BUF == 2) */
+
+ LWIP_UNUSED_ARG(arg);
+ LWIP_UNUSED_ARG(pcb);
+ LWIP_UNUSED_ARG(addr);
+ LWIP_UNUSED_ARG(port);
+
+ /* is the dns message too big ? */
+ if (p->tot_len > DNS_MSG_SIZE) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too big\n"));
+ /* free pbuf and return */
+ goto memerr1;
+ }
+
+ /* is the dns message big enough ? */
+ if (p->tot_len < (SIZEOF_DNS_HDR + SIZEOF_DNS_QUERY + SIZEOF_DNS_ANSWER)) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too small\n"));
+ /* free pbuf and return */
+ goto memerr1;
+ }
+
+#if (DNS_USES_STATIC_BUF == 2)
+ dns_payload = mem_malloc(p->tot_len);
+ if (dns_payload == NULL) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: mem_malloc error\n"));
+ /* free pbuf and return */
+ goto memerr1;
+ }
+#endif /* (DNS_USES_STATIC_BUF == 2) */
+
+ /* copy dns payload inside static buffer for processing */
+ if (pbuf_copy_partial(p, dns_payload, p->tot_len, 0) == p->tot_len) {
+ /* The ID in the DNS header should be our entry into the name table. */
+ hdr = (struct dns_hdr*)dns_payload;
+ i = htons(hdr->id);
+ if (i < DNS_TABLE_SIZE) {
+ pEntry = &dns_table[i];
+ if(pEntry->state == DNS_STATE_ASKING) {
+ /* This entry is now completed. */
+ pEntry->state = DNS_STATE_DONE;
+ pEntry->err = hdr->flags2 & DNS_FLAG2_ERR_MASK;
+
+ /* We only care about the question(s) and the answers. The authrr
+ and the extrarr are simply discarded. */
+ nquestions = htons(hdr->numquestions);
+ nanswers = htons(hdr->numanswers);
+
+ /* Check for error. If so, call callback to inform. */
+ if (((hdr->flags1 & DNS_FLAG1_RESPONSE) == 0) || (pEntry->err != 0) || (nquestions != 1)) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in flags\n", pEntry->name));
+ /* call callback to indicate error, clean up memory and return */
+ goto responseerr;
+ }
+
+#if DNS_DOES_NAME_CHECK
+ /* Check if the name in the "question" part match with the name in the entry. */
+ if (dns_compare_name((unsigned char *)(pEntry->name), (unsigned char *)dns_payload + SIZEOF_DNS_HDR) != 0) {
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response not match to query\n", pEntry->name));
+ /* call callback to indicate error, clean up memory and return */
+ goto responseerr;
+ }
+#endif /* DNS_DOES_NAME_CHECK */
+
+ /* Skip the name in the "question" part */
+ pHostname = (char *) dns_parse_name((unsigned char *)dns_payload + SIZEOF_DNS_HDR) + SIZEOF_DNS_QUERY;
+
+ while(nanswers > 0) {
+ /* skip answer resource record's host name */
+ pHostname = (char *) dns_parse_name((unsigned char *)pHostname);
+
+ /* Check for IP address type and Internet class. Others are discarded. */
+ MEMCPY(&ans, pHostname, SIZEOF_DNS_ANSWER);
+ if((ntohs(ans.type) == DNS_RRTYPE_A) && (ntohs(ans.class) == DNS_RRCLASS_IN) && (ntohs(ans.len) == sizeof(struct ip_addr)) ) {
+ /* read the answer resource record's TTL, and maximize it if needed */
+ pEntry->ttl = ntohl(ans.ttl);
+ if (pEntry->ttl > DNS_MAX_TTL) {
+ pEntry->ttl = DNS_MAX_TTL;
+ }
+ /* read the IP address after answer resource record's header */
+ MEMCPY( &(pEntry->ipaddr), (pHostname+SIZEOF_DNS_ANSWER), sizeof(struct ip_addr));
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response = ", pEntry->name));
+ ip_addr_debug_print(DNS_DEBUG, (&(pEntry->ipaddr)));
+ LWIP_DEBUGF(DNS_DEBUG, ("\n"));
+ /* call specified callback function if provided */
+ if (pEntry->found) {
+ (*pEntry->found)(pEntry->name, &pEntry->ipaddr, pEntry->arg);
+ }
+ /* deallocate memory and return */
+ goto memerr2;
+ } else {
+ pHostname = pHostname + SIZEOF_DNS_ANSWER + htons(ans.len);
+ }
+ --nanswers;
+ }
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in response\n", pEntry->name));
+ /* call callback to indicate error, clean up memory and return */
+ goto responseerr;
+ }
+ }
+ }
+
+ /* deallocate memory and return */
+ goto memerr2;
+
+responseerr:
+ /* ERROR: call specified callback function with NULL as name to indicate an error */
+ if (pEntry->found) {
+ (*pEntry->found)(pEntry->name, NULL, pEntry->arg);
+ }
+ /* flush this entry */
+ pEntry->state = DNS_STATE_UNUSED;
+ pEntry->found = NULL;
+
+memerr2:
+#if (DNS_USES_STATIC_BUF == 2)
+ /* free dns buffer */
+ mem_free(dns_payload);
+#endif /* (DNS_USES_STATIC_BUF == 2) */
+
+memerr1:
+ /* free pbuf */
+ pbuf_free(p);
+ return;
+}
+
+/**
+ * Queues a new hostname to resolve and sends out a DNS query for that hostname
+ *
+ * @param name the hostname that is to be queried
+ * @param found a callback founction to be called on success, failure or timeout
+ * @param callback_arg argument to pass to the callback function
+ * @return @return a err_t return code.
+ */
+static err_t
+dns_enqueue(const char *name, dns_found_callback found, void *callback_arg)
+{
+ u8_t i;
+ u8_t lseq, lseqi;
+ struct dns_table_entry *pEntry = NULL;
+
+ /* search an unused entry, or the oldest one */
+ lseq = lseqi = 0;
+ for (i = 0; i < DNS_TABLE_SIZE; ++i) {
+ pEntry = &dns_table[i];
+ /* is it an unused entry ? */
+ if (pEntry->state == DNS_STATE_UNUSED)
+ break;
+
+ /* check if this is the oldest completed entry */
+ if (pEntry->state == DNS_STATE_DONE) {
+ if ((dns_seqno - pEntry->seqno) > lseq) {
+ lseq = dns_seqno - pEntry->seqno;
+ lseqi = i;
+ }
+ }
+ }
+
+ /* if we don't have found an unused entry, use the oldest completed one */
+ if (i == DNS_TABLE_SIZE) {
+ if ((lseqi >= DNS_TABLE_SIZE) || (dns_table[lseqi].state != DNS_STATE_DONE)) {
+ /* no entry can't be used now, table is full */
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": DNS entries table is full\n", name));
+ return ERR_MEM;
+ } else {
+ /* use the oldest completed one */
+ i = lseqi;
+ pEntry = &dns_table[i];
+ }
+ }
+
+ /* use this entry */
+ LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": use DNS entry %"U16_F"\n", name, (u16_t)(i)));
+
+ /* fill the entry */
+ pEntry->state = DNS_STATE_NEW;
+ pEntry->seqno = dns_seqno++;
+ pEntry->found = found;
+ pEntry->arg = callback_arg;
+ strcpy(pEntry->name, name);
+
+ /* force to send query without waiting timer */
+ dns_check_entry(i);
+
+ /* dns query is enqueued */
+ return ERR_INPROGRESS;
+}
+
+/**
+ * Resolve a hostname (string) into an IP address.
+ * NON-BLOCKING callback version for use with raw API!!!
+ *
+ * Returns immediately with one of err_t return codes:
+ * - ERR_OK if hostname is a valid IP address string or the host
+ * name is already in the local names table.
+ * - ERR_INPROGRESS enqueue a request to be sent to the DNS server
+ * for resolution if no errors are present.
+ *
+ * @param hostname the hostname that is to be queried
+ * @param addr pointer to a struct ip_addr where to store the address if it is already
+ * cached in the dns_table (only valid if ERR_OK is returned!)
+ * @param found a callback function to be called on success, failure or timeout (only if
+ * ERR_INPROGRESS is returned!)
+ * @param callback_arg argument to pass to the callback function
+ * @return a err_t return code.
+ */
+err_t
+dns_gethostbyname(const char *hostname, struct ip_addr *addr, dns_found_callback found,
+ void *callback_arg)
+{
+ /* not initialized or no valid server yet, or invalid addr pointer
+ * or invalid hostname or invalid hostname length */
+ if ((dns_pcb == NULL) || (addr == NULL) ||
+ (!hostname) || (!hostname[0]) ||
+ (strlen(hostname) >= DNS_MAX_NAME_LENGTH)) {
+ return ERR_VAL;
+ }
+
+#if LWIP_HAVE_LOOPIF
+ if (strcmp(hostname,"localhost")==0) {
+ addr->addr = htonl(INADDR_LOOPBACK);
+ return ERR_OK;
+ }
+#endif /* LWIP_HAVE_LOOPIF */
+
+ /* host name already in octet notation? set ip addr and return ERR_OK
+ * already have this address cached? */
+ if (((addr->addr = inet_addr(hostname)) != INADDR_NONE) ||
+ ((addr->addr = dns_lookup(hostname)) != INADDR_NONE)) {
+ return ERR_OK;
+ }
+
+ /* queue query with specified callback */
+ return dns_enqueue(hostname, found, callback_arg);
+}
+
+#endif /* LWIP_DNS */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c
new file mode 100644
index 0000000..b799527
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c
@@ -0,0 +1,276 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Modules initialization
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#include "lwip/init.h"
+#include "lwip/stats.h"
+#include "lwip/sys.h"
+#include "lwip/mem.h"
+#include "lwip/memp.h"
+#include "lwip/pbuf.h"
+#include "lwip/netif.h"
+#include "lwip/sockets.h"
+#include "lwip/ip.h"
+#include "lwip/raw.h"
+#include "lwip/udp.h"
+#include "lwip/tcp.h"
+#include "lwip/snmp_msg.h"
+#include "lwip/autoip.h"
+#include "lwip/igmp.h"
+#include "lwip/dns.h"
+#include "netif/etharp.h"
+
+/* Compile-time sanity checks for configuration errors.
+ * These can be done independently of LWIP_DEBUG, without penalty.
+ */
+#ifndef BYTE_ORDER
+ #error "BYTE_ORDER is not defined, you have to define it in your cc.h"
+#endif
+#if (!IP_SOF_BROADCAST && IP_SOF_BROADCAST_RECV)
+ #error "If you want to use broadcast filter per pcb on recv operations, you have to define IP_SOF_BROADCAST=1 in your lwipopts.h"
+#endif
+#if (!LWIP_ARP && ARP_QUEUEING)
+ #error "If you want to use ARP Queueing, you have to define LWIP_ARP=1 in your lwipopts.h"
+#endif
+#if (!LWIP_UDP && LWIP_UDPLITE)
+ #error "If you want to use UDP Lite, you have to define LWIP_UDP=1 in your lwipopts.h"
+#endif
+#if (!LWIP_UDP && LWIP_SNMP)
+ #error "If you want to use SNMP, you have to define LWIP_UDP=1 in your lwipopts.h"
+#endif
+#if (!LWIP_UDP && LWIP_DHCP)
+ #error "If you want to use DHCP, you have to define LWIP_UDP=1 in your lwipopts.h"
+#endif
+#if (!LWIP_UDP && LWIP_IGMP)
+ #error "If you want to use IGMP, you have to define LWIP_UDP=1 in your lwipopts.h"
+#endif
+#if (!LWIP_UDP && LWIP_DNS)
+ #error "If you want to use DNS, you have to define LWIP_UDP=1 in your lwipopts.h"
+#endif
+#if (LWIP_ARP && (ARP_TABLE_SIZE > 0x7f))
+ #error "If you want to use ARP, ARP_TABLE_SIZE must fit in an s8_t, so, you have to reduce it in your lwipopts.h"
+#endif
+#if (LWIP_ARP && ARP_QUEUEING && (MEMP_NUM_ARP_QUEUE<=0))
+ #error "If you want to use ARP Queueing, you have to define MEMP_NUM_ARP_QUEUE>=1 in your lwipopts.h"
+#endif
+#if (LWIP_RAW && (MEMP_NUM_RAW_PCB<=0))
+ #error "If you want to use RAW, you have to define MEMP_NUM_RAW_PCB>=1 in your lwipopts.h"
+#endif
+#if (LWIP_UDP && (MEMP_NUM_UDP_PCB<=0))
+ #error "If you want to use UDP, you have to define MEMP_NUM_UDP_PCB>=1 in your lwipopts.h"
+#endif
+#if (LWIP_TCP && (MEMP_NUM_TCP_PCB<=0))
+ #error "If you want to use TCP, you have to define MEMP_NUM_TCP_PCB>=1 in your lwipopts.h"
+#endif
+#if (LWIP_TCP && (TCP_WND > 0xffff))
+ #error "If you want to use TCP, TCP_WND must fit in an u16_t, so, you have to reduce it in your lwipopts.h"
+#endif
+#if (LWIP_TCP && (TCP_SND_QUEUELEN > 0xffff))
+ #error "If you want to use TCP, TCP_SND_QUEUELEN must fit in an u16_t, so, you have to reduce it in your lwipopts.h"
+#endif
+#if (LWIP_TCP && ((TCP_MAXRTX > 12) || (TCP_SYNMAXRTX > 12)))
+ #error "If you want to use TCP, TCP_MAXRTX and TCP_SYNMAXRTX must less or equal to 12 (due to tcp_backoff table), so, you have to reduce them in your lwipopts.h"
+#endif
+#if (LWIP_TCP && TCP_LISTEN_BACKLOG && (TCP_DEFAULT_LISTEN_BACKLOG < 0) || (TCP_DEFAULT_LISTEN_BACKLOG > 0xff))
+ #error "If you want to use TCP backlog, TCP_DEFAULT_LISTEN_BACKLOG must fit into an u8_t"
+#endif
+#if (LWIP_IGMP && (MEMP_NUM_IGMP_GROUP<=1))
+ #error "If you want to use IGMP, you have to define MEMP_NUM_IGMP_GROUP>1 in your lwipopts.h"
+#endif
+#if (PPP_SUPPORT && (NO_SYS==1))
+ #error "If you want to use PPP, you have to define NO_SYS=0 in your lwipopts.h"
+#endif
+#if (LWIP_NETIF_API && (NO_SYS==1))
+ #error "If you want to use NETIF API, you have to define NO_SYS=0 in your lwipopts.h"
+#endif
+#if ((LWIP_SOCKET || LWIP_NETCONN) && (NO_SYS==1))
+ #error "If you want to use Sequential API, you have to define NO_SYS=0 in your lwipopts.h"
+#endif
+#if ((LWIP_NETCONN || LWIP_SOCKET) && (MEMP_NUM_TCPIP_MSG_API<=0))
+ #error "If you want to use Sequential API, you have to define MEMP_NUM_TCPIP_MSG_API>=1 in your lwipopts.h"
+#endif
+#if (!LWIP_NETCONN && LWIP_SOCKET)
+ #error "If you want to use Socket API, you have to define LWIP_NETCONN=1 in your lwipopts.h"
+#endif
+#if (((!LWIP_DHCP) || (!LWIP_AUTOIP)) && LWIP_DHCP_AUTOIP_COOP)
+ #error "If you want to use DHCP/AUTOIP cooperation mode, you have to define LWIP_DHCP=1 and LWIP_AUTOIP=1 in your lwipopts.h"
+#endif
+#if (((!LWIP_DHCP) || (!LWIP_ARP)) && DHCP_DOES_ARP_CHECK)
+ #error "If you want to use DHCP ARP checking, you have to define LWIP_DHCP=1 and LWIP_ARP=1 in your lwipopts.h"
+#endif
+#if (!LWIP_ARP && LWIP_AUTOIP)
+ #error "If you want to use AUTOIP, you have to define LWIP_ARP=1 in your lwipopts.h"
+#endif
+#if (LWIP_SNMP && (SNMP_CONCURRENT_REQUESTS<=0))
+ #error "If you want to use SNMP, you have to define SNMP_CONCURRENT_REQUESTS>=1 in your lwipopts.h"
+#endif
+#if (LWIP_SNMP && (SNMP_TRAP_DESTINATIONS<=0))
+ #error "If you want to use SNMP, you have to define SNMP_TRAP_DESTINATIONS>=1 in your lwipopts.h"
+#endif
+#if (LWIP_TCP && ((LWIP_EVENT_API && LWIP_CALLBACK_API) || (!LWIP_EVENT_API && !LWIP_CALLBACK_API)))
+ #error "One and exactly one of LWIP_EVENT_API and LWIP_CALLBACK_API has to be enabled in your lwipopts.h"
+#endif
+/* There must be sufficient timeouts, taking into account requirements of the subsystems. */
+#if ((NO_SYS==0) && (MEMP_NUM_SYS_TIMEOUT < (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_SUPPORT)))
+ #error "MEMP_NUM_SYS_TIMEOUT is too low to accomodate all required timeouts"
+#endif
+#if (IP_REASSEMBLY && (MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS))
+ #error "MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS doesn't make sense since each struct ip_reassdata must hold 2 pbufs at least!"
+#endif
+#if (MEM_LIBC_MALLOC && MEM_USE_POOLS)
+ #error "MEM_LIBC_MALLOC and MEM_USE_POOLS may not both be simultaneously enabled in your lwipopts.h"
+#endif
+#if (MEM_USE_POOLS && !MEMP_USE_CUSTOM_POOLS)
+ #error "MEM_USE_POOLS requires custom pools (MEMP_USE_CUSTOM_POOLS) to be enabled in your lwipopts.h"
+#endif
+#if (PBUF_POOL_BUFSIZE <= MEM_ALIGNMENT)
+ #error "PBUF_POOL_BUFSIZE must be greater than MEM_ALIGNMENT or the offset may take the full first pbuf"
+#endif
+#if (TCP_QUEUE_OOSEQ && !LWIP_TCP)
+ #error "TCP_QUEUE_OOSEQ requires LWIP_TCP"
+#endif
+#if (DNS_LOCAL_HOSTLIST && !DNS_LOCAL_HOSTLIST_IS_DYNAMIC && !(defined(DNS_LOCAL_HOSTLIST_INIT)))
+ #error "you have to define define DNS_LOCAL_HOSTLIST_INIT {{'host1', 0x123}, {'host2', 0x234}} to initialize DNS_LOCAL_HOSTLIST"
+#endif
+#if PPP_SUPPORT && !PPPOS_SUPPORT & !PPPOE_SUPPORT
+ #error "PPP_SUPPORT needs either PPPOS_SUPPORT or PPPOE_SUPPORT turned on"
+#endif
+
+
+/* Compile-time checks for deprecated options.
+ */
+#ifdef MEMP_NUM_TCPIP_MSG
+ #error "MEMP_NUM_TCPIP_MSG option is deprecated. Remove it from your lwipopts.h."
+#endif
+#ifdef MEMP_NUM_API_MSG
+ #error "MEMP_NUM_API_MSG option is deprecated. Remove it from your lwipopts.h."
+#endif
+#ifdef TCP_REXMIT_DEBUG
+ #error "TCP_REXMIT_DEBUG option is deprecated. Remove it from your lwipopts.h."
+#endif
+#ifdef RAW_STATS
+ #error "RAW_STATS option is deprecated. Remove it from your lwipopts.h."
+#endif
+#ifdef ETHARP_QUEUE_FIRST
+ #error "ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h."
+#endif
+#ifdef ETHARP_ALWAYS_INSERT
+ #error "ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h."
+#endif
+#if SO_REUSE
+/* I removed the lot since this was an ugly hack. It broke the raw-API.
+ It also came with many ugly goto's, Christiaan Simons. */
+ #error "SO_REUSE currently unavailable, this was a hack"
+#endif
+
+#ifdef LWIP_DEBUG
+static void
+lwip_sanity_check(void)
+{
+ /* Warnings */
+#if LWIP_NETCONN
+ if (MEMP_NUM_NETCONN > (MEMP_NUM_TCP_PCB+MEMP_NUM_TCP_PCB_LISTEN+MEMP_NUM_UDP_PCB+MEMP_NUM_RAW_PCB))
+ LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_NETCONN should be less than the sum of MEMP_NUM_{TCP,RAW,UDP}_PCB+MEMP_NUM_TCP_PCB_LISTEN\n"));
+#endif /* LWIP_NETCONN */
+#if LWIP_TCP
+ if (MEMP_NUM_TCP_SEG < TCP_SND_QUEUELEN)
+ LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_TCP_SEG should be at least as big as TCP_SND_QUEUELEN\n"));
+ if (TCP_SND_BUF < 2 * TCP_MSS)
+ LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_BUF must be at least as much as (2 * TCP_MSS) for things to work smoothly\n"));
+ if (TCP_SND_QUEUELEN < (2 * (TCP_SND_BUF/TCP_MSS)))
+ LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_QUEUELEN must be at least as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work\n"));
+ if (TCP_SNDLOWAT > TCP_SND_BUF)
+ LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SNDLOWAT must be less than or equal to TCP_SND_BUF.\n"));
+ if (TCP_WND > (PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE))
+ LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is larger than space provided by PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE\n"));
+ if (TCP_WND < TCP_MSS)
+ LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is smaller than MSS\n"));
+#endif /* LWIP_TCP */
+}
+#else /* LWIP_DEBUG */
+#define lwip_sanity_check()
+#endif /* LWIP_DEBUG */
+
+/**
+ * Perform Sanity check of user-configurable values, and initialize all modules.
+ */
+void
+lwip_init(void)
+{
+ /* Sanity check user-configurable values */
+ lwip_sanity_check();
+
+ /* Modules initialization */
+ stats_init();
+ sys_init();
+ mem_init();
+ memp_init();
+ pbuf_init();
+ netif_init();
+#if LWIP_SOCKET
+ lwip_socket_init();
+#endif /* LWIP_SOCKET */
+ ip_init();
+#if LWIP_ARP
+ etharp_init();
+#endif /* LWIP_ARP */
+#if LWIP_RAW
+ raw_init();
+#endif /* LWIP_RAW */
+#if LWIP_UDP
+ udp_init();
+#endif /* LWIP_UDP */
+#if LWIP_TCP
+ tcp_init();
+#endif /* LWIP_TCP */
+#if LWIP_SNMP
+ snmp_init();
+#endif /* LWIP_SNMP */
+#if LWIP_AUTOIP
+ autoip_init();
+#endif /* LWIP_AUTOIP */
+#if LWIP_IGMP
+ igmp_init();
+#endif /* LWIP_IGMP */
+#if LWIP_DNS
+ dns_init();
+#endif /* LWIP_DNS */
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c
new file mode 100644
index 0000000..dde6b6d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c
@@ -0,0 +1,499 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * AutoIP Automatic LinkLocal IP Configuration
+ *
+ */
+
+/*
+ *
+ * Copyright (c) 2007 Dominik Spies <kontakt dspies de>
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+ *
+ * Author: Dominik Spies <kontakt dspies de>
+ *
+ * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform
+ * with RFC 3927.
+ *
+ *
+ * Please coordinate changes and requests with Dominik Spies
+ * <kontakt dspies de>
+ */
+
+/*******************************************************************************
+ * USAGE:
+ *
+ * define LWIP_AUTOIP 1 in your lwipopts.h
+ *
+ * If you don't use tcpip.c (so, don't call, you don't call tcpip_init):
+ * - First, call autoip_init().
+ * - call autoip_tmr() all AUTOIP_TMR_INTERVAL msces,
+ * that should be defined in autoip.h.
+ * I recommend a value of 100. The value must divide 1000 with a remainder almost 0.
+ * Possible values are 1000, 500, 333, 250, 200, 166, 142, 125, 111, 100 ....
+ *
+ * Without DHCP:
+ * - Call autoip_start() after netif_add().
+ *
+ * With DHCP:
+ * - define LWIP_DHCP_AUTOIP_COOP 1 in your lwipopts.h.
+ * - Configure your DHCP Client.
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/mem.h"
+#include "lwip/udp.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/autoip.h"
+#include "netif/etharp.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* 169.254.0.0 */
+#define AUTOIP_NET 0xA9FE0000
+/* 169.254.1.0 */
+#define AUTOIP_RANGE_START (AUTOIP_NET | 0x0100)
+/* 169.254.254.255 */
+#define AUTOIP_RANGE_END (AUTOIP_NET | 0xFEFF)
+
+
+/** Pseudo random macro based on netif informations.
+ * You could use "rand()" from the C Library if you define LWIP_AUTOIP_RAND in lwipopts.h */
+#ifndef LWIP_AUTOIP_RAND
+#define LWIP_AUTOIP_RAND(netif) ( (((u32_t)((netif->hwaddr[5]) & 0xff) << 24) | \
+ ((u32_t)((netif->hwaddr[3]) & 0xff) << 16) | \
+ ((u32_t)((netif->hwaddr[2]) & 0xff) << 8) | \
+ ((u32_t)((netif->hwaddr[4]) & 0xff))) + \
+ (netif->autoip?netif->autoip->tried_llipaddr:0))
+#endif /* LWIP_AUTOIP_RAND */
+
+/**
+ * Macro that generates the initial IP address to be tried by AUTOIP.
+ * If you want to override this, define it to something else in lwipopts.h.
+ */
+#ifndef LWIP_AUTOIP_CREATE_SEED_ADDR
+#define LWIP_AUTOIP_CREATE_SEED_ADDR(netif) \
+ htonl(AUTOIP_RANGE_START + ((u32_t)(((u8_t)(netif->hwaddr[4])) | \
+ ((u32_t)((u8_t)(netif->hwaddr[5]))) << 8)))
+#endif /* LWIP_AUTOIP_CREATE_SEED_ADDR */
+
+/* static functions */
+static void autoip_handle_arp_conflict(struct netif *netif);
+
+/* creates a pseudo random LL IP-Address for a network interface */
+static void autoip_create_addr(struct netif *netif, struct ip_addr *ipaddr);
+
+/* sends an ARP probe */
+static err_t autoip_arp_probe(struct netif *netif);
+
+/* sends an ARP announce */
+static err_t autoip_arp_announce(struct netif *netif);
+
+/* configure interface for use with current LL IP-Address */
+static err_t autoip_bind(struct netif *netif);
+
+/* start sending probes for llipaddr */
+static void autoip_start_probing(struct netif *netif);
+
+/**
+ * Initialize this module
+ */
+void
+autoip_init(void)
+{
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_init()\n"));
+}
+
+/**
+ * Handle a IP address conflict after an ARP conflict detection
+ */
+static void
+autoip_handle_arp_conflict(struct netif *netif)
+{
+ /* Somehow detect if we are defending or retreating */
+ unsigned char defend = 1; /* tbd */
+
+ if(defend) {
+ if(netif->autoip->lastconflict > 0) {
+ /* retreat, there was a conflicting ARP in the last
+ * DEFEND_INTERVAL seconds
+ */
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
+ ("autoip_handle_arp_conflict(): we are defending, but in DEFEND_INTERVAL, retreating\n"));
+
+ /* TODO: close all TCP sessions */
+ autoip_start(netif);
+ } else {
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
+ ("autoip_handle_arp_conflict(): we are defend, send ARP Announce\n"));
+ autoip_arp_announce(netif);
+ netif->autoip->lastconflict = DEFEND_INTERVAL * AUTOIP_TICKS_PER_SECOND;
+ }
+ } else {
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
+ ("autoip_handle_arp_conflict(): we do not defend, retreating\n"));
+ /* TODO: close all TCP sessions */
+ autoip_start(netif);
+ }
+}
+
+/**
+ * Create an IP-Address out of range 169.254.1.0 to 169.254.254.255
+ *
+ * @param netif network interface on which create the IP-Address
+ * @param ipaddr ip address to initialize
+ */
+static void
+autoip_create_addr(struct netif *netif, struct ip_addr *ipaddr)
+{
+ /* Here we create an IP-Address out of range 169.254.1.0 to 169.254.254.255
+ * compliant to RFC 3927 Section 2.1
+ * We have 254 * 256 possibilities */
+
+ u32_t addr = ntohl(LWIP_AUTOIP_CREATE_SEED_ADDR(netif));
+ addr += netif->autoip->tried_llipaddr;
+ addr = AUTOIP_NET | (addr & 0xffff);
+ /* Now, 169.254.0.0 <= addr <= 169.254.255.255 */
+
+ if (addr < AUTOIP_RANGE_START) {
+ addr += AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1;
+ }
+ if (addr > AUTOIP_RANGE_END) {
+ addr -= AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1;
+ }
+ LWIP_ASSERT("AUTOIP address not in range", (addr >= AUTOIP_RANGE_START) &&
+ (addr <= AUTOIP_RANGE_END));
+ ipaddr->addr = htonl(addr);
+
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
+ ("autoip_create_addr(): tried_llipaddr=%"U16_F", 0x%08"X32_F"\n",
+ (u16_t)(netif->autoip->tried_llipaddr), (u32_t)(ipaddr->addr)));
+}
+
+/**
+ * Sends an ARP probe from a network interface
+ *
+ * @param netif network interface used to send the probe
+ */
+static err_t
+autoip_arp_probe(struct netif *netif)
+{
+ return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast,
+ (struct eth_addr *)netif->hwaddr, IP_ADDR_ANY, ðzero,
+ &netif->autoip->llipaddr, ARP_REQUEST);
+}
+
+/**
+ * Sends an ARP announce from a network interface
+ *
+ * @param netif network interface used to send the announce
+ */
+static err_t
+autoip_arp_announce(struct netif *netif)
+{
+ return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast,
+ (struct eth_addr *)netif->hwaddr, &netif->autoip->llipaddr, ðzero,
+ &netif->autoip->llipaddr, ARP_REQUEST);
+}
+
+/**
+ * Configure interface for use with current LL IP-Address
+ *
+ * @param netif network interface to configure with current LL IP-Address
+ */
+static err_t
+autoip_bind(struct netif *netif)
+{
+ struct autoip *autoip = netif->autoip;
+ struct ip_addr sn_mask, gw_addr;
+
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE,
+ ("autoip_bind(netif=%p) %c%c%"U16_F" 0x%08"X32_F"\n",
+ (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num, autoip->llipaddr.addr));
+
+ IP4_ADDR(&sn_mask, 255, 255, 0, 0);
+ IP4_ADDR(&gw_addr, 0, 0, 0, 0);
+
+ netif_set_ipaddr(netif, &autoip->llipaddr);
+ netif_set_netmask(netif, &sn_mask);
+ netif_set_gw(netif, &gw_addr);
+
+ /* bring the interface up */
+ netif_set_up(netif);
+
+ return ERR_OK;
+}
+
+/**
+ * Start AutoIP client
+ *
+ * @param netif network interface on which start the AutoIP client
+ */
+err_t
+autoip_start(struct netif *netif)
+{
+ struct autoip *autoip = netif->autoip;
+ err_t result = ERR_OK;
+
+ if(netif_is_up(netif)) {
+ netif_set_down(netif);
+ }
+
+ /* Set IP-Address, Netmask and Gateway to 0 to make sure that
+ * ARP Packets are formed correctly
+ */
+ netif->ip_addr.addr = 0;
+ netif->netmask.addr = 0;
+ netif->gw.addr = 0;
+
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
+ ("autoip_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0],
+ netif->name[1], (u16_t)netif->num));
+ if(autoip == NULL) {
+ /* no AutoIP client attached yet? */
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE,
+ ("autoip_start(): starting new AUTOIP client\n"));
+ autoip = mem_malloc(sizeof(struct autoip));
+ if(autoip == NULL) {
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE,
+ ("autoip_start(): could not allocate autoip\n"));
+ return ERR_MEM;
+ }
+ memset( autoip, 0, sizeof(struct autoip));
+ /* store this AutoIP client in the netif */
+ netif->autoip = autoip;
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_start(): allocated autoip"));
+ } else {
+ autoip->state = AUTOIP_STATE_OFF;
+ autoip->ttw = 0;
+ autoip->sent_num = 0;
+ memset(&autoip->llipaddr, 0, sizeof(struct ip_addr));
+ autoip->lastconflict = 0;
+ }
+
+ autoip_create_addr(netif, &(autoip->llipaddr));
+ autoip->tried_llipaddr++;
+ autoip_start_probing(netif);
+
+ return result;
+}
+
+static void
+autoip_start_probing(struct netif *netif)
+{
+ struct autoip *autoip = netif->autoip;
+
+ autoip->state = AUTOIP_STATE_PROBING;
+ autoip->sent_num = 0;
+
+ /* time to wait to first probe, this is randomly
+ * choosen out of 0 to PROBE_WAIT seconds.
+ * compliant to RFC 3927 Section 2.2.1
+ */
+ autoip->ttw = (u16_t)(LWIP_AUTOIP_RAND(netif) % (PROBE_WAIT * AUTOIP_TICKS_PER_SECOND));
+
+ /*
+ * if we tried more then MAX_CONFLICTS we must limit our rate for
+ * accquiring and probing address
+ * compliant to RFC 3927 Section 2.2.1
+ */
+ if(autoip->tried_llipaddr > MAX_CONFLICTS) {
+ autoip->ttw = RATE_LIMIT_INTERVAL * AUTOIP_TICKS_PER_SECOND;
+ }
+}
+
+/**
+ * Handle a possible change in the network configuration.
+ *
+ * If there is an AutoIP address configured, take the interface down
+ * and begin probing with the same address.
+ */
+void
+autoip_network_changed(struct netif *netif)
+{
+ if (netif->autoip && netif->autoip->state != AUTOIP_STATE_OFF) {
+ netif_set_down(netif);
+ autoip_start_probing(netif);
+ }
+}
+
+/**
+ * Stop AutoIP client
+ *
+ * @param netif network interface on which stop the AutoIP client
+ */
+err_t
+autoip_stop(struct netif *netif)
+{
+ netif->autoip->state = AUTOIP_STATE_OFF;
+ netif_set_down(netif);
+ return ERR_OK;
+}
+
+/**
+ * Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds
+ */
+void
+autoip_tmr()
+{
+ struct netif *netif = netif_list;
+ /* loop through netif's */
+ while (netif != NULL) {
+ /* only act on AutoIP configured interfaces */
+ if (netif->autoip != NULL) {
+ if(netif->autoip->lastconflict > 0) {
+ netif->autoip->lastconflict--;
+ }
+
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE,
+ ("autoip_tmr() AutoIP-State: %"U16_F", ttw=%"U16_F"\n",
+ (u16_t)(netif->autoip->state), netif->autoip->ttw));
+
+ switch(netif->autoip->state) {
+ case AUTOIP_STATE_PROBING:
+ if(netif->autoip->ttw > 0) {
+ netif->autoip->ttw--;
+ } else {
+ if(netif->autoip->sent_num >= PROBE_NUM) {
+ netif->autoip->state = AUTOIP_STATE_ANNOUNCING;
+ netif->autoip->sent_num = 0;
+ netif->autoip->ttw = ANNOUNCE_WAIT * AUTOIP_TICKS_PER_SECOND;
+ } else {
+ autoip_arp_probe(netif);
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE,
+ ("autoip_tmr() PROBING Sent Probe\n"));
+ netif->autoip->sent_num++;
+ /* calculate time to wait to next probe */
+ netif->autoip->ttw = (u16_t)((LWIP_AUTOIP_RAND(netif) %
+ ((PROBE_MAX - PROBE_MIN) * AUTOIP_TICKS_PER_SECOND) ) +
+ PROBE_MIN * AUTOIP_TICKS_PER_SECOND);
+ }
+ }
+ break;
+
+ case AUTOIP_STATE_ANNOUNCING:
+ if(netif->autoip->ttw > 0) {
+ netif->autoip->ttw--;
+ } else {
+ if(netif->autoip->sent_num == 0) {
+ /* We are here the first time, so we waited ANNOUNCE_WAIT seconds
+ * Now we can bind to an IP address and use it.
+ *
+ * autoip_bind calls netif_set_up. This triggers a gratuitous ARP
+ * which counts as an announcement.
+ */
+ autoip_bind(netif);
+ } else {
+ autoip_arp_announce(netif);
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE,
+ ("autoip_tmr() ANNOUNCING Sent Announce\n"));
+ }
+ netif->autoip->ttw = ANNOUNCE_INTERVAL * AUTOIP_TICKS_PER_SECOND;
+ netif->autoip->sent_num++;
+
+ if(netif->autoip->sent_num >= ANNOUNCE_NUM) {
+ netif->autoip->state = AUTOIP_STATE_BOUND;
+ netif->autoip->sent_num = 0;
+ netif->autoip->ttw = 0;
+ }
+ }
+ break;
+ }
+ }
+ /* proceed to next network interface */
+ netif = netif->next;
+ }
+}
+
+/**
+ * Handles every incoming ARP Packet, called by etharp_arp_input.
+ *
+ * @param netif network interface to use for autoip processing
+ * @param hdr Incoming ARP packet
+ */
+void
+autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr)
+{
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_arp_reply()\n"));
+ if ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) {
+ /* when ip.src == llipaddr && hw.src != netif->hwaddr
+ *
+ * when probing ip.dst == llipaddr && hw.src != netif->hwaddr
+ * we have a conflict and must solve it
+ */
+ struct ip_addr sipaddr, dipaddr;
+ struct eth_addr netifaddr;
+ netifaddr.addr[0] = netif->hwaddr[0];
+ netifaddr.addr[1] = netif->hwaddr[1];
+ netifaddr.addr[2] = netif->hwaddr[2];
+ netifaddr.addr[3] = netif->hwaddr[3];
+ netifaddr.addr[4] = netif->hwaddr[4];
+ netifaddr.addr[5] = netif->hwaddr[5];
+
+ /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without
+ * structure packing (not using structure copy which breaks strict-aliasing rules).
+ */
+ SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr));
+ SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr));
+
+ if ((netif->autoip->state == AUTOIP_STATE_PROBING) ||
+ ((netif->autoip->state == AUTOIP_STATE_ANNOUNCING) &&
+ (netif->autoip->sent_num == 0))) {
+ /* RFC 3927 Section 2.2.1:
+ * from beginning to after ANNOUNCE_WAIT
+ * seconds we have a conflict if
+ * ip.src == llipaddr OR
+ * ip.dst == llipaddr && hw.src != own hwaddr
+ */
+ if ((ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr)) ||
+ (ip_addr_cmp(&dipaddr, &netif->autoip->llipaddr) &&
+ !eth_addr_cmp(&netifaddr, &hdr->shwaddr))) {
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING,
+ ("autoip_arp_reply(): Probe Conflict detected\n"));
+ autoip_start(netif);
+ }
+ } else {
+ /* RFC 3927 Section 2.5:
+ * in any state we have a conflict if
+ * ip.src == llipaddr && hw.src != own hwaddr
+ */
+ if (ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr) &&
+ !eth_addr_cmp(&netifaddr, &hdr->shwaddr)) {
+ LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING,
+ ("autoip_arp_reply(): Conflicting ARP-Packet detected\n"));
+ autoip_handle_arp_conflict(netif);
+ }
+ }
+ }
+}
+
+#endif /* LWIP_AUTOIP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c
new file mode 100644
index 0000000..3ee17ae
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c
@@ -0,0 +1,333 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * ICMP - Internet Control Message Protocol
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+/* Some ICMP messages should be passed to the transport protocols. This
+ is not implemented. */
+
+#include "lwip/opt.h"
+
+#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/icmp.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/ip.h"
+#include "lwip/def.h"
+#include "lwip/stats.h"
+#include "lwip/snmp.h"
+
+#include <string.h>
+
+/** Small optimization: set to 0 if incoming PBUF_POOL pbuf always can be
+ * used to modify and send a response packet (and to 1 if this is not the case,
+ * e.g. when link header is stripped of when receiving) */
+#ifndef LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN
+#define LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN 1
+#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */
+
+/* The amount of data from the original packet to return in a dest-unreachable */
+#define ICMP_DEST_UNREACH_DATASIZE 8
+
+static void icmp_send_response(struct pbuf *p, u8_t type, u8_t code);
+
+/**
+ * Processes ICMP input packets, called from ip_input().
+ *
+ * Currently only processes icmp echo requests and sends
+ * out the echo response.
+ *
+ * @param p the icmp echo request packet, p->payload pointing to the ip header
+ * @param inp the netif on which this packet was received
+ */
+void
+icmp_input(struct pbuf *p, struct netif *inp)
+{
+ u8_t type;
+#ifdef LWIP_DEBUG
+ u8_t code;
+#endif /* LWIP_DEBUG */
+ struct icmp_echo_hdr *iecho;
+ struct ip_hdr *iphdr;
+ struct ip_addr tmpaddr;
+ s16_t hlen;
+
+ ICMP_STATS_INC(icmp.recv);
+ snmp_inc_icmpinmsgs();
+
+
+ iphdr = p->payload;
+ hlen = IPH_HL(iphdr) * 4;
+ if (pbuf_header(p, -hlen) || (p->tot_len < sizeof(u16_t)*2)) {
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%"U16_F" bytes) received\n", p->tot_len));
+ goto lenerr;
+ }
+
+ type = *((u8_t *)p->payload);
+#ifdef LWIP_DEBUG
+ code = *(((u8_t *)p->payload)+1);
+#endif /* LWIP_DEBUG */
+ switch (type) {
+ case ICMP_ECHO:
+#if !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING
+ {
+ int accepted = 1;
+#if !LWIP_MULTICAST_PING
+ /* multicast destination address? */
+ if (ip_addr_ismulticast(&iphdr->dest)) {
+ accepted = 0;
+ }
+#endif /* LWIP_MULTICAST_PING */
+#if !LWIP_BROADCAST_PING
+ /* broadcast destination address? */
+ if (ip_addr_isbroadcast(&iphdr->dest, inp)) {
+ accepted = 0;
+ }
+#endif /* LWIP_BROADCAST_PING */
+ /* broadcast or multicast destination address not acceptd? */
+ if (!accepted) {
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to multicast or broadcast pings\n"));
+ ICMP_STATS_INC(icmp.err);
+ pbuf_free(p);
+ return;
+ }
+ }
+#endif /* !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING */
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n"));
+ if (p->tot_len < sizeof(struct icmp_echo_hdr)) {
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: bad ICMP echo received\n"));
+ goto lenerr;
+ }
+ if (inet_chksum_pbuf(p) != 0) {
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: checksum failed for received ICMP echo\n"));
+ pbuf_free(p);
+ ICMP_STATS_INC(icmp.chkerr);
+ snmp_inc_icmpinerrors();
+ return;
+ }
+#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN
+ if (pbuf_header(p, (PBUF_IP_HLEN + PBUF_LINK_HLEN))) {
+ /* p is not big enough to contain link headers
+ * allocate a new one and copy p into it
+ */
+ struct pbuf *r;
+ /* switch p->payload to ip header */
+ if (pbuf_header(p, hlen)) {
+ LWIP_ASSERT("icmp_input: moving p->payload to ip header failed\n", 0);
+ goto memerr;
+ }
+ /* allocate new packet buffer with space for link headers */
+ r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM);
+ if (r == NULL) {
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed\n"));
+ goto memerr;
+ }
+ LWIP_ASSERT("check that first pbuf can hold struct the ICMP header",
+ (r->len >= hlen + sizeof(struct icmp_echo_hdr)));
+ /* copy the whole packet including ip header */
+ if (pbuf_copy(r, p) != ERR_OK) {
+ LWIP_ASSERT("icmp_input: copying to new pbuf failed\n", 0);
+ goto memerr;
+ }
+ iphdr = r->payload;
+ /* switch r->payload back to icmp header */
+ if (pbuf_header(r, -hlen)) {
+ LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0);
+ goto memerr;
+ }
+ /* free the original p */
+ pbuf_free(p);
+ /* we now have an identical copy of p that has room for link headers */
+ p = r;
+ } else {
+ /* restore p->payload to point to icmp header */
+ if (pbuf_header(p, -(s16_t)(PBUF_IP_HLEN + PBUF_LINK_HLEN))) {
+ LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0);
+ goto memerr;
+ }
+ }
+#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */
+ /* At this point, all checks are OK. */
+ /* We generate an answer by switching the dest and src ip addresses,
+ * setting the icmp type to ECHO_RESPONSE and updating the checksum. */
+ iecho = p->payload;
+ tmpaddr.addr = iphdr->src.addr;
+ iphdr->src.addr = iphdr->dest.addr;
+ iphdr->dest.addr = tmpaddr.addr;
+ ICMPH_TYPE_SET(iecho, ICMP_ER);
+ /* adjust the checksum */
+ if (iecho->chksum >= htons(0xffff - (ICMP_ECHO << 8))) {
+ iecho->chksum += htons(ICMP_ECHO << 8) + 1;
+ } else {
+ iecho->chksum += htons(ICMP_ECHO << 8);
+ }
+
+ /* Set the correct TTL and recalculate the header checksum. */
+ IPH_TTL_SET(iphdr, ICMP_TTL);
+ IPH_CHKSUM_SET(iphdr, 0);
+#if CHECKSUM_GEN_IP
+ IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN));
+#endif /* CHECKSUM_GEN_IP */
+
+ ICMP_STATS_INC(icmp.xmit);
+ /* increase number of messages attempted to send */
+ snmp_inc_icmpoutmsgs();
+ /* increase number of echo replies attempted to send */
+ snmp_inc_icmpoutechoreps();
+
+ if(pbuf_header(p, hlen)) {
+ LWIP_ASSERT("Can't move over header in packet", 0);
+ } else {
+ err_t ret;
+ ret = ip_output_if(p, &(iphdr->src), IP_HDRINCL,
+ ICMP_TTL, 0, IP_PROTO_ICMP, inp);
+ if (ret != ERR_OK) {
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ip_output_if returned an error: %c.\n", ret));
+ }
+ }
+ break;
+ default:
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n",
+ (s16_t)type, (s16_t)code));
+ ICMP_STATS_INC(icmp.proterr);
+ ICMP_STATS_INC(icmp.drop);
+ }
+ pbuf_free(p);
+ return;
+lenerr:
+ pbuf_free(p);
+ ICMP_STATS_INC(icmp.lenerr);
+ snmp_inc_icmpinerrors();
+ return;
+#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN
+memerr:
+ pbuf_free(p);
+ ICMP_STATS_INC(icmp.err);
+ snmp_inc_icmpinerrors();
+ return;
+#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */
+}
+
+/**
+ * Send an icmp 'destination unreachable' packet, called from ip_input() if
+ * the transport layer protocol is unknown and from udp_input() if the local
+ * port is not bound.
+ *
+ * @param p the input packet for which the 'unreachable' should be sent,
+ * p->payload pointing to the IP header
+ * @param t type of the 'unreachable' packet
+ */
+void
+icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t)
+{
+ icmp_send_response(p, ICMP_DUR, t);
+}
+
+#if IP_FORWARD || IP_REASSEMBLY
+/**
+ * Send a 'time exceeded' packet, called from ip_forward() if TTL is 0.
+ *
+ * @param p the input packet for which the 'time exceeded' should be sent,
+ * p->payload pointing to the IP header
+ * @param t type of the 'time exceeded' packet
+ */
+void
+icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t)
+{
+ icmp_send_response(p, ICMP_TE, t);
+}
+
+#endif /* IP_FORWARD || IP_REASSEMBLY */
+
+/**
+ * Send an icmp packet in response to an incoming packet.
+ *
+ * @param p the input packet for which the 'unreachable' should be sent,
+ * p->payload pointing to the IP header
+ * @param type Type of the ICMP header
+ * @param code Code of the ICMP header
+ */
+static void
+icmp_send_response(struct pbuf *p, u8_t type, u8_t code)
+{
+ struct pbuf *q;
+ struct ip_hdr *iphdr;
+ /* we can use the echo header here */
+ struct icmp_echo_hdr *icmphdr;
+
+ /* ICMP header + IP header + 8 bytes of data */
+ q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE,
+ PBUF_RAM);
+ if (q == NULL) {
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMP packet.\n"));
+ return;
+ }
+ LWIP_ASSERT("check that first pbuf can hold icmp message",
+ (q->len >= (sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE)));
+
+ iphdr = p->payload;
+ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded from "));
+ ip_addr_debug_print(ICMP_DEBUG, &(iphdr->src));
+ LWIP_DEBUGF(ICMP_DEBUG, (" to "));
+ ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest));
+ LWIP_DEBUGF(ICMP_DEBUG, ("\n"));
+
+ icmphdr = q->payload;
+ icmphdr->type = type;
+ icmphdr->code = code;
+ icmphdr->id = 0;
+ icmphdr->seqno = 0;
+
+ /* copy fields from original packet */
+ SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload,
+ IP_HLEN + ICMP_DEST_UNREACH_DATASIZE);
+
+ /* calculate checksum */
+ icmphdr->chksum = 0;
+ icmphdr->chksum = inet_chksum(icmphdr, q->len);
+ ICMP_STATS_INC(icmp.xmit);
+ /* increase number of messages attempted to send */
+ snmp_inc_icmpoutmsgs();
+ /* increase number of destination unreachable messages attempted to send */
+ snmp_inc_icmpouttimeexcds();
+ ip_output(q, NULL, &(iphdr->src), ICMP_TTL, 0, IP_PROTO_ICMP);
+ pbuf_free(q);
+}
+
+#endif /* LWIP_ICMP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c
new file mode 100644
index 0000000..b302ef4
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c
@@ -0,0 +1,759 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * IGMP - Internet Group Management Protocol
+ *
+ */
+
+/*
+ * Copyright (c) 2002 CITEL Technologies Ltd.
+ * 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. Neither the name of CITEL Technologies Ltd nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL CITEL TECHNOLOGIES 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.
+ *
+ * This file is a contribution to the lwIP TCP/IP stack.
+ * The Swedish Institute of Computer Science and Adam Dunkels
+ * are specifically granted permission to redistribute this
+ * source code.
+*/
+
+/*-------------------------------------------------------------
+Note 1)
+Although the rfc requires V1 AND V2 capability
+we will only support v2 since now V1 is very old (August 1989)
+V1 can be added if required
+
+a debug print and statistic have been implemented to
+show this up.
+-------------------------------------------------------------
+-------------------------------------------------------------
+Note 2)
+A query for a specific group address (as opposed to ALLHOSTS)
+has now been implemented as I am unsure if it is required
+
+a debug print and statistic have been implemented to
+show this up.
+-------------------------------------------------------------
+-------------------------------------------------------------
+Note 3)
+The router alert rfc 2113 is implemented in outgoing packets
+but not checked rigorously incoming
+-------------------------------------------------------------
+Steve Reynolds
+------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+ * RFC 988 - Host extensions for IP multicasting - V0
+ * RFC 1054 - Host extensions for IP multicasting -
+ * RFC 1112 - Host extensions for IP multicasting - V1
+ * RFC 2236 - Internet Group Management Protocol, Version 2 - V2 <- this code is based on this RFC (it's the "de facto" standard)
+ * RFC 3376 - Internet Group Management Protocol, Version 3 - V3
+ * RFC 4604 - Using Internet Group Management Protocol Version 3... - V3+
+ * RFC 2113 - IP Router Alert Option -
+ *----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+ * Includes
+ *----------------------------------------------------------------------------*/
+
+#include "lwip/opt.h"
+
+#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/igmp.h"
+#include "lwip/debug.h"
+#include "lwip/def.h"
+#include "lwip/mem.h"
+#include "lwip/ip.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/netif.h"
+#include "lwip/icmp.h"
+#include "lwip/udp.h"
+#include "lwip/tcp.h"
+#include "lwip/stats.h"
+
+#include "string.h"
+
+/*-----------------------------------------------------------------------------
+ * Globales
+ *----------------------------------------------------------------------------*/
+
+static struct igmp_group* igmp_group_list;
+static struct ip_addr allsystems;
+static struct ip_addr allrouters;
+
+/**
+ * Initialize the IGMP module
+ */
+void
+igmp_init(void)
+{
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_init: initializing\n"));
+
+ IP4_ADDR(&allsystems, 224, 0, 0, 1);
+ IP4_ADDR(&allrouters, 224, 0, 0, 2);
+}
+
+#ifdef LWIP_DEBUG
+/**
+ * Dump global IGMP groups list
+ */
+void
+igmp_dump_group_list()
+{
+ struct igmp_group *group = igmp_group_list;
+
+ while (group != NULL) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_dump_group_list: [%"U32_F"] ", (u32_t)(group->group_state)));
+ ip_addr_debug_print(IGMP_DEBUG, &group->group_address);
+ LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->interface));
+ group = group->next;
+ }
+ LWIP_DEBUGF(IGMP_DEBUG, ("\n"));
+}
+#else
+#define igmp_dump_group_list()
+#endif /* LWIP_DEBUG */
+
+/**
+ * Start IGMP processing on interface
+ *
+ * @param netif network interface on which start IGMP processing
+ */
+err_t
+igmp_start(struct netif *netif)
+{
+ struct igmp_group* group;
+
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: starting IGMP processing on if %p\n", netif));
+
+ group = igmp_lookup_group(netif, &allsystems);
+
+ if (group != NULL) {
+ group->group_state = IGMP_GROUP_IDLE_MEMBER;
+ group->use++;
+
+ /* Allow the igmp messages at the MAC level */
+ if (netif->igmp_mac_filter != NULL) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: igmp_mac_filter(ADD "));
+ ip_addr_debug_print(IGMP_DEBUG, &allsystems);
+ LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif));
+ netif->igmp_mac_filter( netif, &allsystems, IGMP_ADD_MAC_FILTER);
+ }
+
+ return ERR_OK;
+ }
+
+ return ERR_MEM;
+}
+
+/**
+ * Stop IGMP processing on interface
+ *
+ * @param netif network interface on which stop IGMP processing
+ */
+err_t
+igmp_stop(struct netif *netif)
+{
+ struct igmp_group *group = igmp_group_list;
+ struct igmp_group *prev = NULL;
+ struct igmp_group *next;
+
+ /* look for groups joined on this interface further down the list */
+ while (group != NULL) {
+ next = group->next;
+ /* is it a group joined on this interface? */
+ if (group->interface == netif) {
+ /* is it the first group of the list? */
+ if (group == igmp_group_list) {
+ igmp_group_list = next;
+ }
+ /* is there a "previous" group defined? */
+ if (prev != NULL) {
+ prev->next = next;
+ }
+ /* disable the group at the MAC level */
+ if (netif->igmp_mac_filter != NULL) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_stop: igmp_mac_filter(DEL "));
+ ip_addr_debug_print(IGMP_DEBUG, &group->group_address);
+ LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif));
+ netif->igmp_mac_filter(netif, &(group->group_address), IGMP_DEL_MAC_FILTER);
+ }
+ /* free group */
+ memp_free(MEMP_IGMP_GROUP, group);
+ } else {
+ /* change the "previous" */
+ prev = group;
+ }
+ /* move to "next" */
+ group = next;
+ }
+ return ERR_OK;
+}
+
+/**
+ * Report IGMP memberships for this interface
+ *
+ * @param netif network interface on which report IGMP memberships
+ */
+void
+igmp_report_groups( struct netif *netif)
+{
+ struct igmp_group *group = igmp_group_list;
+
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_report_groups: sending IGMP reports on if %p\n", netif));
+
+ while (group != NULL) {
+ if (group->interface == netif) {
+ igmp_delaying_member( group, IGMP_JOIN_DELAYING_MEMBER_TMR);
+ }
+ group = group->next;
+ }
+}
+
+/**
+ * Search for a group in the global igmp_group_list
+ *
+ * @param ifp the network interface for which to look
+ * @param addr the group ip address to search for
+ * @return a struct igmp_group* if the group has been found,
+ * NULL if the group wasn't found.
+ */
+struct igmp_group *
+igmp_lookfor_group(struct netif *ifp, struct ip_addr *addr)
+{
+ struct igmp_group *group = igmp_group_list;
+
+ while (group != NULL) {
+ if ((group->interface == ifp) && (ip_addr_cmp(&(group->group_address), addr))) {
+ return group;
+ }
+ group = group->next;
+ }
+
+ /* to be clearer, we return NULL here instead of
+ * 'group' (which is also NULL at this point).
+ */
+ return NULL;
+}
+
+/**
+ * Search for a specific igmp group and create a new one if not found-
+ *
+ * @param ifp the network interface for which to look
+ * @param addr the group ip address to search
+ * @return a struct igmp_group*,
+ * NULL on memory error.
+ */
+struct igmp_group *
+igmp_lookup_group(struct netif *ifp, struct ip_addr *addr)
+{
+ struct igmp_group *group = igmp_group_list;
+
+ /* Search if the group already exists */
+ group = igmp_lookfor_group(ifp, addr);
+ if (group != NULL) {
+ /* Group already exists. */
+ return group;
+ }
+
+ /* Group doesn't exist yet, create a new one */
+ group = memp_malloc(MEMP_IGMP_GROUP);
+ if (group != NULL) {
+ group->interface = ifp;
+ ip_addr_set(&(group->group_address), addr);
+ group->timer = 0; /* Not running */
+ group->group_state = IGMP_GROUP_NON_MEMBER;
+ group->last_reporter_flag = 0;
+ group->use = 0;
+ group->next = igmp_group_list;
+
+ igmp_group_list = group;
+ }
+
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_lookup_group: %sallocated a new group with address ", (group?"":"impossible to ")));
+ ip_addr_debug_print(IGMP_DEBUG, addr);
+ LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", ifp));
+
+ return group;
+}
+
+/**
+ * Remove a group in the global igmp_group_list
+ *
+ * @param group the group to remove from the global igmp_group_list
+ * @return ERR_OK if group was removed from the list, an err_t otherwise
+ */
+err_t
+igmp_remove_group(struct igmp_group *group)
+{
+ err_t err = ERR_OK;
+
+ /* Is it the first group? */
+ if (igmp_group_list == group) {
+ igmp_group_list = group->next;
+ } else {
+ /* look for group further down the list */
+ struct igmp_group *tmpGroup;
+ for (tmpGroup = igmp_group_list; tmpGroup != NULL; tmpGroup = tmpGroup->next) {
+ if (tmpGroup->next == group) {
+ tmpGroup->next = group->next;
+ break;
+ }
+ }
+ /* Group not found in the global igmp_group_list */
+ if (tmpGroup == NULL)
+ err = ERR_ARG;
+ }
+ /* free group */
+ memp_free(MEMP_IGMP_GROUP, group);
+
+ return err;
+}
+
+/**
+ * Called from ip_input() if a new IGMP packet is received.
+ *
+ * @param p received igmp packet, p->payload pointing to the ip header
+ * @param inp network interface on which the packet was received
+ * @param dest destination ip address of the igmp packet
+ */
+void
+igmp_input(struct pbuf *p, struct netif *inp, struct ip_addr *dest)
+{
+ struct ip_hdr * iphdr;
+ struct igmp_msg* igmp;
+ struct igmp_group* group;
+ struct igmp_group* groupref;
+
+ /* Note that the length CAN be greater than 8 but only 8 are used - All are included in the checksum */
+ iphdr = p->payload;
+ if (pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4)) || (p->len < IGMP_MINLEN)) {
+ pbuf_free(p);
+ IGMP_STATS_INC(igmp.lenerr);
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: length error\n"));
+ return;
+ }
+
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: message from "));
+ ip_addr_debug_print(IGMP_DEBUG, &(iphdr->src));
+ LWIP_DEBUGF(IGMP_DEBUG, (" to address "));
+ ip_addr_debug_print(IGMP_DEBUG, &(iphdr->dest));
+ LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", inp));
+
+ /* Now calculate and check the checksum */
+ igmp = (struct igmp_msg *)p->payload;
+ if (inet_chksum(igmp, p->len)) {
+ pbuf_free(p);
+ IGMP_STATS_INC(igmp.chkerr);
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: checksum error\n"));
+ return;
+ }
+
+ /* Packet is ok so find an existing group */
+ group = igmp_lookfor_group(inp, dest); /* use the incoming IP address! */
+
+ /* If group can be found or create... */
+ if (!group) {
+ pbuf_free(p);
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP frame not for us\n"));
+ return;
+ }
+
+ /* NOW ACT ON THE INCOMING MESSAGE TYPE... */
+ switch (igmp->igmp_msgtype) {
+ case IGMP_MEMB_QUERY: {
+ /* IGMP_MEMB_QUERY to the "all systems" address ? */
+ if ((ip_addr_cmp(dest, &allsystems)) && (igmp->igmp_group_address.addr == 0)) {
+ /* THIS IS THE GENERAL QUERY */
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: General IGMP_MEMB_QUERY on \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp)));
+
+ if (igmp->igmp_maxresp == 0) {
+ IGMP_STATS_INC(igmp.v1_rxed);
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: got an all hosts query with time== 0 - this is V1 and not implemented - treat as v2\n"));
+ igmp->igmp_maxresp = IGMP_V1_DELAYING_MEMBER_TMR;
+ }
+
+ IGMP_STATS_INC(igmp.group_query_rxed);
+ groupref = igmp_group_list;
+ while (groupref) {
+ /* Do not send messages on the all systems group address! */
+ if ((groupref->interface == inp) && (!(ip_addr_cmp(&(groupref->group_address), &allsystems)))) {
+ igmp_delaying_member( groupref, igmp->igmp_maxresp);
+ }
+ groupref = groupref->next;
+ }
+ } else {
+ /* IGMP_MEMB_QUERY to a specific group ? */
+ if (group->group_address.addr != 0) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_MEMB_QUERY to a specific group "));
+ ip_addr_debug_print(IGMP_DEBUG, &group->group_address);
+ if (ip_addr_cmp (dest, &allsystems)) {
+ LWIP_DEBUGF(IGMP_DEBUG, (" using \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp)));
+ /* we first need to re-lookfor the group since we used dest last time */
+ group = igmp_lookfor_group(inp, &igmp->igmp_group_address);
+ } else {
+ LWIP_DEBUGF(IGMP_DEBUG, (" with the group address as destination [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp)));
+ }
+
+ if (group != NULL) {
+ IGMP_STATS_INC(igmp.unicast_query);
+ igmp_delaying_member( group, igmp->igmp_maxresp);
+ }
+ }
+ }
+ break;
+ }
+ case IGMP_V2_MEMB_REPORT: {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_V2_MEMB_REPORT\n"));
+
+ IGMP_STATS_INC(igmp.report_rxed);
+ if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) {
+ /* This is on a specific group we have already looked up */
+ group->timer = 0; /* stopped */
+ group->group_state = IGMP_GROUP_IDLE_MEMBER;
+ group->last_reporter_flag = 0;
+ }
+ break;
+ }
+ default: {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: unexpected msg %d in state %d on group %p on if %p\n",
+ igmp->igmp_msgtype, group->group_state, &group, group->interface));
+ break;
+ }
+ }
+
+ pbuf_free(p);
+ return;
+}
+
+/**
+ * Join a group on one network interface.
+ *
+ * @param ifaddr ip address of the network interface which should join a new group
+ * @param groupaddr the ip address of the group which to join
+ * @return ERR_OK if group was joined on the netif(s), an err_t otherwise
+ */
+err_t
+igmp_joingroup(struct ip_addr *ifaddr, struct ip_addr *groupaddr)
+{
+ err_t err = ERR_VAL; /* no matching interface */
+ struct igmp_group *group;
+ struct netif *netif;
+
+ /* make sure it is multicast address */
+ LWIP_ERROR("igmp_joingroup: attempt to join non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;);
+ LWIP_ERROR("igmp_joingroup: attempt to join allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
+
+ /* loop through netif's */
+ netif = netif_list;
+ while (netif != NULL) {
+ /* Should we join this interface ? */
+ if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) {
+ /* find group or create a new one if not found */
+ group = igmp_lookup_group(netif, groupaddr);
+
+ if (group != NULL) {
+ /* This should create a new group, check the state to make sure */
+ if (group->group_state != IGMP_GROUP_NON_MEMBER) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to group not in state IGMP_GROUP_NON_MEMBER\n"));
+ } else {
+ /* OK - it was new group */
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to new group: "));
+ ip_addr_debug_print(IGMP_DEBUG, groupaddr);
+ LWIP_DEBUGF(IGMP_DEBUG, ("\n"));
+
+ /* If first use of the group, allow the group at the MAC level */
+ if ((group->use==0) && (netif->igmp_mac_filter != NULL)) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: igmp_mac_filter(ADD "));
+ ip_addr_debug_print(IGMP_DEBUG, groupaddr);
+ LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif));
+ netif->igmp_mac_filter(netif, groupaddr, IGMP_ADD_MAC_FILTER);
+ }
+
+ IGMP_STATS_INC(igmp.join_sent);
+ igmp_send(group, IGMP_V2_MEMB_REPORT);
+
+ igmp_start_timer(group, IGMP_JOIN_DELAYING_MEMBER_TMR);
+
+ /* Need to work out where this timer comes from */
+ group->group_state = IGMP_GROUP_DELAYING_MEMBER;
+ }
+ /* Increment group use */
+ group->use++;
+ /* Join on this interface */
+ err = ERR_OK;
+ } else {
+ /* Return an error even if some network interfaces are joined */
+ /** @todo undo any other netif already joined */
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: Not enought memory to join to group\n"));
+ return ERR_MEM;
+ }
+ }
+ /* proceed to next network interface */
+ netif = netif->next;
+ }
+
+ return err;
+}
+
+/**
+ * Leave a group on one network interface.
+ *
+ * @param ifaddr ip address of the network interface which should leave a group
+ * @param groupaddr the ip address of the group which to leave
+ * @return ERR_OK if group was left on the netif(s), an err_t otherwise
+ */
+err_t
+igmp_leavegroup(struct ip_addr *ifaddr, struct ip_addr *groupaddr)
+{
+ err_t err = ERR_VAL; /* no matching interface */
+ struct igmp_group *group;
+ struct netif *netif;
+
+ /* make sure it is multicast address */
+ LWIP_ERROR("igmp_leavegroup: attempt to leave non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;);
+ LWIP_ERROR("igmp_leavegroup: attempt to leave allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
+
+ /* loop through netif's */
+ netif = netif_list;
+ while (netif != NULL) {
+ /* Should we leave this interface ? */
+ if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) {
+ /* find group */
+ group = igmp_lookfor_group(netif, groupaddr);
+
+ if (group != NULL) {
+ /* Only send a leave if the flag is set according to the state diagram */
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: Leaving group: "));
+ ip_addr_debug_print(IGMP_DEBUG, groupaddr);
+ LWIP_DEBUGF(IGMP_DEBUG, ("\n"));
+
+ /* If there is no other use of the group */
+ if (group->use <= 1) {
+ /* If we are the last reporter for this group */
+ if (group->last_reporter_flag) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: sending leaving group\n"));
+ IGMP_STATS_INC(igmp.leave_sent);
+ igmp_send(group, IGMP_LEAVE_GROUP);
+ }
+
+ /* Disable the group at the MAC level */
+ if (netif->igmp_mac_filter != NULL) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: igmp_mac_filter(DEL "));
+ ip_addr_debug_print(IGMP_DEBUG, groupaddr);
+ LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif));
+ netif->igmp_mac_filter(netif, groupaddr, IGMP_DEL_MAC_FILTER);
+ }
+
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: remove group: "));
+ ip_addr_debug_print(IGMP_DEBUG, groupaddr);
+ LWIP_DEBUGF(IGMP_DEBUG, ("\n"));
+
+ /* Free the group */
+ igmp_remove_group(group);
+ } else {
+ /* Decrement group use */
+ group->use--;
+ }
+ /* Leave on this interface */
+ err = ERR_OK;
+ } else {
+ /* It's not a fatal error on "leavegroup" */
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: not member of group\n"));
+ }
+ }
+ /* proceed to next network interface */
+ netif = netif->next;
+ }
+
+ return err;
+}
+
+/**
+ * The igmp timer function (both for NO_SYS=1 and =0)
+ * Should be called every IGMP_TMR_INTERVAL milliseconds (100 ms is default).
+ */
+void
+igmp_tmr(void)
+{
+ struct igmp_group *group = igmp_group_list;
+
+ while (group != NULL) {
+ if (group->timer != 0) {
+ group->timer -= 1;
+ if (group->timer == 0) {
+ igmp_timeout(group);
+ }
+ }
+ group = group->next;
+ }
+}
+
+/**
+ * Called if a timeout for one group is reached.
+ * Sends a report for this group.
+ *
+ * @param group an igmp_group for which a timeout is reached
+ */
+void
+igmp_timeout(struct igmp_group *group)
+{
+ /* If the state is IGMP_GROUP_DELAYING_MEMBER then we send a report for this group */
+ if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_timeout: report membership for group with address "));
+ ip_addr_debug_print(IGMP_DEBUG, &(group->group_address));
+ LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->interface));
+
+ igmp_send(group, IGMP_V2_MEMB_REPORT);
+ }
+}
+
+/**
+ * Start a timer for an igmp group
+ *
+ * @param group the igmp_group for which to start a timer
+ * @param max_time the time in multiples of IGMP_TMR_INTERVAL (decrease with
+ * every call to igmp_tmr())
+ */
+void
+igmp_start_timer(struct igmp_group *group, u8_t max_time)
+{
+ /**
+ * @todo Important !! this should be random 0 -> max_time. Find out how to do this
+ */
+ group->timer = max_time;
+}
+
+/**
+ * Stop a timer for an igmp_group
+ *
+ * @param group the igmp_group for which to stop the timer
+ */
+void
+igmp_stop_timer(struct igmp_group *group)
+{
+ group->timer = 0;
+}
+
+/**
+ * Delaying membership report for a group if necessary
+ *
+ * @param group the igmp_group for which "delaying" membership report
+ * @param maxresp query delay
+ */
+void
+igmp_delaying_member( struct igmp_group *group, u8_t maxresp)
+{
+ if ((group->group_state == IGMP_GROUP_IDLE_MEMBER) ||
+ ((group->group_state == IGMP_GROUP_DELAYING_MEMBER) && (maxresp > group->timer))) {
+ igmp_start_timer(group, (maxresp)/2);
+ group->group_state = IGMP_GROUP_DELAYING_MEMBER;
+ }
+}
+
+
+/**
+ * Sends an IP packet on a network interface. This function constructs the IP header
+ * and calculates the IP header checksum. If the source IP address is NULL,
+ * the IP address of the outgoing network interface is filled in as source address.
+ *
+ * @param p the packet to send (p->payload points to the data, e.g. next
+ protocol header; if dest == IP_HDRINCL, p already includes an IP
+ header and p->payload points to that IP header)
+ * @param src the source IP address to send from (if src == IP_ADDR_ANY, the
+ * IP address of the netif used to send is used as source address)
+ * @param dest the destination IP address to send the packet to
+ * @param ttl the TTL value to be set in the IP header
+ * @param proto the PROTOCOL to be set in the IP header
+ * @param netif the netif on which to send this packet
+ * @return ERR_OK if the packet was sent OK
+ * ERR_BUF if p doesn't have enough space for IP/LINK headers
+ * returns errors returned by netif->output
+ */
+err_t
+igmp_ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t proto, struct netif *netif)
+{
+ /* This is the "router alert" option */
+ u16_t ra[2];
+ ra[0] = htons (ROUTER_ALERT);
+ ra[1] = 0x0000; /* Router shall examine packet */
+ return ip_output_if_opt(p, src, dest, ttl, 0, proto, netif, ra, ROUTER_ALERTLEN);
+}
+
+/**
+ * Send an igmp packet to a specific group.
+ *
+ * @param group the group to which to send the packet
+ * @param type the type of igmp packet to send
+ */
+void
+igmp_send(struct igmp_group *group, u8_t type)
+{
+ struct pbuf* p = NULL;
+ struct igmp_msg* igmp = NULL;
+ struct ip_addr src = {0};
+ struct ip_addr* dest = NULL;
+
+ /* IP header + "router alert" option + IGMP header */
+ p = pbuf_alloc(PBUF_TRANSPORT, IGMP_MINLEN, PBUF_RAM);
+
+ if (p) {
+ igmp = p->payload;
+ LWIP_ASSERT("igmp_send: check that first pbuf can hold struct igmp_msg",
+ (p->len >= sizeof(struct igmp_msg)));
+ ip_addr_set(&src, &((group->interface)->ip_addr));
+
+ if (type == IGMP_V2_MEMB_REPORT) {
+ dest = &(group->group_address);
+ IGMP_STATS_INC(igmp.report_sent);
+ ip_addr_set(&(igmp->igmp_group_address), &(group->group_address));
+ group->last_reporter_flag = 1; /* Remember we were the last to report */
+ } else {
+ if (type == IGMP_LEAVE_GROUP) {
+ dest = &allrouters;
+ ip_addr_set(&(igmp->igmp_group_address), &(group->group_address));
+ }
+ }
+
+ if ((type == IGMP_V2_MEMB_REPORT) || (type == IGMP_LEAVE_GROUP)) {
+ igmp->igmp_msgtype = type;
+ igmp->igmp_maxresp = 0;
+ igmp->igmp_checksum = 0;
+ igmp->igmp_checksum = inet_chksum( igmp, IGMP_MINLEN);
+
+ igmp_ip_output_if(p, &src, dest, IGMP_TTL, IP_PROTO_IGMP, group->interface);
+ }
+
+ pbuf_free(p);
+ } else {
+ LWIP_DEBUGF(IGMP_DEBUG, ("igmp_send: not enough memory for igmp_send\n"));
+ }
+}
+
+#endif /* LWIP_IGMP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c
new file mode 100644
index 0000000..0d4f922
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c
@@ -0,0 +1,280 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Functions common to all TCP/IPv4 modules, such as the byte order functions.
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#include "lwip/inet.h"
+
+/* Here for now until needed in other places in lwIP */
+#ifndef isprint
+#define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up)
+#define isprint(c) in_range(c, 0x20, 0x7f)
+#define isdigit(c) in_range(c, '0', '9')
+#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'A', 'F'))
+#define islower(c) in_range(c, 'a', 'z')
+#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v')
+#endif
+
+/**
+ * Ascii internet address interpretation routine.
+ * The value returned is in network order.
+ *
+ * @param cp IP address in ascii represenation (e.g. "127.0.0.1")
+ * @return ip address in network order
+ */
+u32_t
+inet_addr(const char *cp)
+{
+ struct in_addr val;
+
+ if (inet_aton(cp, &val)) {
+ return (val.s_addr);
+ }
+ return (INADDR_NONE);
+}
+
+/**
+ * Check whether "cp" is a valid ascii representation
+ * of an Internet address and convert to a binary address.
+ * Returns 1 if the address is valid, 0 if not.
+ * This replaces inet_addr, the return value from which
+ * cannot distinguish between failure and a local broadcast address.
+ *
+ * @param cp IP address in ascii represenation (e.g. "127.0.0.1")
+ * @param addr pointer to which to save the ip address in network order
+ * @return 1 if cp could be converted to addr, 0 on failure
+ */
+int
+inet_aton(const char *cp, struct in_addr *addr)
+{
+ u32_t val;
+ u8_t base;
+ char c;
+ u32_t parts[4];
+ u32_t *pp = parts;
+
+ c = *cp;
+ for (;;) {
+ /*
+ * Collect number up to ``.''.
+ * Values are specified as for C:
+ * 0x=hex, 0=octal, 1-9=decimal.
+ */
+ if (!isdigit(c))
+ return (0);
+ val = 0;
+ base = 10;
+ if (c == '0') {
+ c = *++cp;
+ if (c == 'x' || c == 'X') {
+ base = 16;
+ c = *++cp;
+ } else
+ base = 8;
+ }
+ for (;;) {
+ if (isdigit(c)) {
+ val = (val * base) + (int)(c - '0');
+ c = *++cp;
+ } else if (base == 16 && isxdigit(c)) {
+ val = (val << 4) | (int)(c + 10 - (islower(c) ? 'a' : 'A'));
+ c = *++cp;
+ } else
+ break;
+ }
+ if (c == '.') {
+ /*
+ * Internet format:
+ * a.b.c.d
+ * a.b.c (with c treated as 16 bits)
+ * a.b (with b treated as 24 bits)
+ */
+ if (pp >= parts + 3)
+ return (0);
+ *pp++ = val;
+ c = *++cp;
+ } else
+ break;
+ }
+ /*
+ * Check for trailing characters.
+ */
+ if (c != '\0' && !isspace(c))
+ return (0);
+ /*
+ * Concoct the address according to
+ * the number of parts specified.
+ */
+ switch (pp - parts + 1) {
+
+ case 0:
+ return (0); /* initial nondigit */
+
+ case 1: /* a -- 32 bits */
+ break;
+
+ case 2: /* a.b -- 8.24 bits */
+ if (val > 0xffffffUL)
+ return (0);
+ val |= parts[0] << 24;
+ break;
+
+ case 3: /* a.b.c -- 8.8.16 bits */
+ if (val > 0xffff)
+ return (0);
+ val |= (parts[0] << 24) | (parts[1] << 16);
+ break;
+
+ case 4: /* a.b.c.d -- 8.8.8.8 bits */
+ if (val > 0xff)
+ return (0);
+ val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+ break;
+ }
+ if (addr)
+ addr->s_addr = htonl(val);
+ return (1);
+}
+
+/**
+ * Convert numeric IP address into decimal dotted ASCII representation.
+ * returns ptr to static buffer; not reentrant!
+ *
+ * @param addr ip address in network order to convert
+ * @return pointer to a global static (!) buffer that holds the ASCII
+ * represenation of addr
+ */
+char *
+inet_ntoa(struct in_addr addr)
+{
+ static char str[16];
+ u32_t s_addr = addr.s_addr;
+ char inv[3];
+ char *rp;
+ u8_t *ap;
+ u8_t rem;
+ u8_t n;
+ u8_t i;
+
+ rp = str;
+ ap = (u8_t *)&s_addr;
+ for(n = 0; n < 4; n++) {
+ i = 0;
+ do {
+ rem = *ap % (u8_t)10;
+ *ap /= (u8_t)10;
+ inv[i++] = '0' + rem;
+ } while(*ap);
+ while(i--)
+ *rp++ = inv[i];
+ *rp++ = '.';
+ ap++;
+ }
+ *--rp = 0;
+ return str;
+}
+
+/**
+ * These are reference implementations of the byte swapping functions.
+ * Again with the aim of being simple, correct and fully portable.
+ * Byte swapping is the second thing you would want to optimize. You will
+ * need to port it to your architecture and in your cc.h:
+ *
+ * #define LWIP_PLATFORM_BYTESWAP 1
+ * #define LWIP_PLATFORM_HTONS(x) <your_htons>
+ * #define LWIP_PLATFORM_HTONL(x) <your_htonl>
+ *
+ * Note ntohs() and ntohl() are merely references to the htonx counterparts.
+ */
+
+#if (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN)
+
+/**
+ * Convert an u16_t from host- to network byte order.
+ *
+ * @param n u16_t in host byte order
+ * @return n in network byte order
+ */
+u16_t
+htons(u16_t n)
+{
+ return ((n & 0xff) << 8) | ((n & 0xff00) >> 8);
+}
+
+/**
+ * Convert an u16_t from network- to host byte order.
+ *
+ * @param n u16_t in network byte order
+ * @return n in host byte order
+ */
+u16_t
+ntohs(u16_t n)
+{
+ return htons(n);
+}
+
+/**
+ * Convert an u32_t from host- to network byte order.
+ *
+ * @param n u32_t in host byte order
+ * @return n in network byte order
+ */
+u32_t
+htonl(u32_t n)
+{
+ return ((n & 0xff) << 24) |
+ ((n & 0xff00) << 8) |
+ ((n & 0xff0000UL) >> 8) |
+ ((n & 0xff000000UL) >> 24);
+}
+
+/**
+ * Convert an u32_t from network- to host byte order.
+ *
+ * @param n u32_t in network byte order
+ * @return n in host byte order
+ */
+u32_t
+ntohl(u32_t n)
+{
+ return htonl(n);
+}
+
+#endif /* (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c
new file mode 100644
index 0000000..47a11d4
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c
@@ -0,0 +1,440 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Incluse internet checksum functions.
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#include "lwip/inet_chksum.h"
+#include "lwip/inet.h"
+
+#include <stddef.h>
+
+/* These are some reference implementations of the checksum algorithm, with the
+ * aim of being simple, correct and fully portable. Checksumming is the
+ * first thing you would want to optimize for your platform. If you create
+ * your own version, link it in and in your cc.h put:
+ *
+ * #define LWIP_CHKSUM <your_checksum_routine>
+ *
+ * Or you can select from the implementations below by defining
+ * LWIP_CHKSUM_ALGORITHM to 1, 2 or 3.
+ */
+
+#ifndef LWIP_CHKSUM
+# define LWIP_CHKSUM lwip_standard_chksum
+# ifndef LWIP_CHKSUM_ALGORITHM
+# define LWIP_CHKSUM_ALGORITHM 1
+# endif
+#endif
+/* If none set: */
+#ifndef LWIP_CHKSUM_ALGORITHM
+# define LWIP_CHKSUM_ALGORITHM 0
+#endif
+
+/** Like the name says... */
+#if LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN)
+/* little endian and PLATFORM_BYTESWAP defined */
+#define SWAP_BYTES_IN_WORD(w) LWIP_PLATFORM_HTONS(w)
+#else
+/* can't use htons on big endian (or PLATFORM_BYTESWAP not defined)... */
+#define SWAP_BYTES_IN_WORD(w) ((w & 0xff) << 8) | ((w & 0xff00) >> 8)
+#endif
+
+/** Split an u32_t in two u16_ts and add them up */
+#define FOLD_U32T(u) ((u >> 16) + (u & 0x0000ffffUL))
+
+#if (LWIP_CHKSUM_ALGORITHM == 1) /* Version #1 */
+/**
+ * lwip checksum
+ *
+ * @param dataptr points to start of data to be summed at any boundary
+ * @param len length of data to be summed
+ * @return host order (!) lwip checksum (non-inverted Internet sum)
+ *
+ * @note accumulator size limits summable length to 64k
+ * @note host endianess is irrelevant (p3 RFC1071)
+ */
+static u16_t
+lwip_standard_chksum(void *dataptr, u16_t len)
+{
+ u32_t acc;
+ u16_t src;
+ u8_t *octetptr;
+
+ acc = 0;
+ /* dataptr may be at odd or even addresses */
+ octetptr = (u8_t*)dataptr;
+ while (len > 1) {
+ /* declare first octet as most significant
+ thus assume network order, ignoring host order */
+ src = (*octetptr) << 8;
+ octetptr++;
+ /* declare second octet as least significant */
+ src |= (*octetptr);
+ octetptr++;
+ acc += src;
+ len -= 2;
+ }
+ if (len > 0) {
+ /* accumulate remaining octet */
+ src = (*octetptr) << 8;
+ acc += src;
+ }
+ /* add deferred carry bits */
+ acc = (acc >> 16) + (acc & 0x0000ffffUL);
+ if ((acc & 0xffff0000UL) != 0) {
+ acc = (acc >> 16) + (acc & 0x0000ffffUL);
+ }
+ /* This maybe a little confusing: reorder sum using htons()
+ instead of ntohs() since it has a little less call overhead.
+ The caller must invert bits for Internet sum ! */
+ return htons((u16_t)acc);
+}
+#endif
+
+#if (LWIP_CHKSUM_ALGORITHM == 2) /* Alternative version #2 */
+/*
+ * Curt McDowell
+ * Broadcom Corp.
+ * csm broadcom com
+ *
+ * IP checksum two bytes at a time with support for
+ * unaligned buffer.
+ * Works for len up to and including 0x20000.
+ * by Curt McDowell, Broadcom Corp. 12/08/2005
+ *
+ * @param dataptr points to start of data to be summed at any boundary
+ * @param len length of data to be summed
+ * @return host order (!) lwip checksum (non-inverted Internet sum)
+ */
+
+static u16_t
+lwip_standard_chksum(void *dataptr, int len)
+{
+ u8_t *pb = dataptr;
+ u16_t *ps, t = 0;
+ u32_t sum = 0;
+ int odd = ((u32_t)pb & 1);
+
+ /* Get aligned to u16_t */
+ if (odd && len > 0) {
+ ((u8_t *)&t)[1] = *pb++;
+ len--;
+ }
+
+ /* Add the bulk of the data */
+ ps = (u16_t *)pb;
+ while (len > 1) {
+ sum += *ps++;
+ len -= 2;
+ }
+
+ /* Consume left-over byte, if any */
+ if (len > 0) {
+ ((u8_t *)&t)[0] = *(u8_t *)ps;;
+ }
+
+ /* Add end bytes */
+ sum += t;
+
+ /* Fold 32-bit sum to 16 bits
+ calling this twice is propably faster than if statements... */
+ sum = FOLD_U32T(sum);
+ sum = FOLD_U32T(sum);
+
+ /* Swap if alignment was odd */
+ if (odd) {
+ sum = SWAP_BYTES_IN_WORD(sum);
+ }
+
+ return sum;
+}
+#endif
+
+#if (LWIP_CHKSUM_ALGORITHM == 3) /* Alternative version #3 */
+/**
+ * An optimized checksum routine. Basically, it uses loop-unrolling on
+ * the checksum loop, treating the head and tail bytes specially, whereas
+ * the inner loop acts on 8 bytes at a time.
+ *
+ * @arg start of buffer to be checksummed. May be an odd byte address.
+ * @len number of bytes in the buffer to be checksummed.
+ * @return host order (!) lwip checksum (non-inverted Internet sum)
+ *
+ * by Curt McDowell, Broadcom Corp. December 8th, 2005
+ */
+
+static u16_t
+lwip_standard_chksum(void *dataptr, int len)
+{
+ u8_t *pb = dataptr;
+ u16_t *ps, t = 0;
+ u32_t *pl;
+ u32_t sum = 0, tmp;
+ /* starts at odd byte address? */
+ int odd = ((u32_t)pb & 1);
+
+ if (odd && len > 0) {
+ ((u8_t *)&t)[1] = *pb++;
+ len--;
+ }
+
+ ps = (u16_t *)pb;
+
+ if (((u32_t)ps & 3) && len > 1) {
+ sum += *ps++;
+ len -= 2;
+ }
+
+ pl = (u32_t *)ps;
+
+ while (len > 7) {
+ tmp = sum + *pl++; /* ping */
+ if (tmp < sum) {
+ tmp++; /* add back carry */
+ }
+
+ sum = tmp + *pl++; /* pong */
+ if (sum < tmp) {
+ sum++; /* add back carry */
+ }
+
+ len -= 8;
+ }
+
+ /* make room in upper bits */
+ sum = FOLD_U32T(sum);
+
+ ps = (u16_t *)pl;
+
+ /* 16-bit aligned word remaining? */
+ while (len > 1) {
+ sum += *ps++;
+ len -= 2;
+ }
+
+ /* dangling tail byte remaining? */
+ if (len > 0) { /* include odd byte */
+ ((u8_t *)&t)[0] = *(u8_t *)ps;
+ }
+
+ sum += t; /* add end bytes */
+
+ /* Fold 32-bit sum to 16 bits
+ calling this twice is propably faster than if statements... */
+ sum = FOLD_U32T(sum);
+ sum = FOLD_U32T(sum);
+
+ if (odd) {
+ sum = SWAP_BYTES_IN_WORD(sum);
+ }
+
+ return sum;
+}
+#endif
+
+/* inet_chksum_pseudo:
+ *
+ * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain.
+ * IP addresses are expected to be in network byte order.
+ *
+ * @param p chain of pbufs over that a checksum should be calculated (ip data part)
+ * @param src source ip address (used for checksum of pseudo header)
+ * @param dst destination ip address (used for checksum of pseudo header)
+ * @param proto ip protocol (used for checksum of pseudo header)
+ * @param proto_len length of the ip data part (used for checksum of pseudo header)
+ * @return checksum (as u16_t) to be saved directly in the protocol header
+ */
+u16_t
+inet_chksum_pseudo(struct pbuf *p,
+ struct ip_addr *src, struct ip_addr *dest,
+ u8_t proto, u16_t proto_len)
+{
+ u32_t acc;
+ struct pbuf *q;
+ u8_t swapped;
+
+ acc = 0;
+ swapped = 0;
+ /* iterate through all pbuf in chain */
+ for(q = p; q != NULL; q = q->next) {
+ LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n",
+ (void *)q, (void *)q->next));
+ acc += LWIP_CHKSUM(q->payload, q->len);
+ /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/
+ /* just executing this next line is probably faster that the if statement needed
+ to check whether we really need to execute it, and does no harm */
+ acc = FOLD_U32T(acc);
+ if (q->len % 2 != 0) {
+ swapped = 1 - swapped;
+ acc = SWAP_BYTES_IN_WORD(acc);
+ }
+ /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/
+ }
+
+ if (swapped) {
+ acc = SWAP_BYTES_IN_WORD(acc);
+ }
+ acc += (src->addr & 0xffffUL);
+ acc += ((src->addr >> 16) & 0xffffUL);
+ acc += (dest->addr & 0xffffUL);
+ acc += ((dest->addr >> 16) & 0xffffUL);
+ acc += (u32_t)htons((u16_t)proto);
+ acc += (u32_t)htons(proto_len);
+
+ /* Fold 32-bit sum to 16 bits
+ calling this twice is propably faster than if statements... */
+ acc = FOLD_U32T(acc);
+ acc = FOLD_U32T(acc);
+ LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc));
+ return (u16_t)~(acc & 0xffffUL);
+}
+
+/* inet_chksum_pseudo:
+ *
+ * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain.
+ * IP addresses are expected to be in network byte order.
+ *
+ * @param p chain of pbufs over that a checksum should be calculated (ip data part)
+ * @param src source ip address (used for checksum of pseudo header)
+ * @param dst destination ip address (used for checksum of pseudo header)
+ * @param proto ip protocol (used for checksum of pseudo header)
+ * @param proto_len length of the ip data part (used for checksum of pseudo header)
+ * @return checksum (as u16_t) to be saved directly in the protocol header
+ */
+/* Currently only used by UDPLITE, although this could change in the future. */
+#if LWIP_UDPLITE
+u16_t
+inet_chksum_pseudo_partial(struct pbuf *p,
+ struct ip_addr *src, struct ip_addr *dest,
+ u8_t proto, u16_t proto_len, u16_t chksum_len)
+{
+ u32_t acc;
+ struct pbuf *q;
+ u8_t swapped;
+ u16_t chklen;
+
+ acc = 0;
+ swapped = 0;
+ /* iterate through all pbuf in chain */
+ for(q = p; (q != NULL) && (chksum_len > 0); q = q->next) {
+ LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n",
+ (void *)q, (void *)q->next));
+ chklen = q->len;
+ if (chklen > chksum_len) {
+ chklen = chksum_len;
+ }
+ acc += LWIP_CHKSUM(q->payload, chklen);
+ chksum_len -= chklen;
+ LWIP_ASSERT("delete me", chksum_len < 0x7fff);
+ /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/
+ /* fold the upper bit down */
+ acc = FOLD_U32T(acc);
+ if (q->len % 2 != 0) {
+ swapped = 1 - swapped;
+ acc = SWAP_BYTES_IN_WORD(acc);
+ }
+ /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/
+ }
+
+ if (swapped) {
+ acc = SWAP_BYTES_IN_WORD(acc);
+ }
+ acc += (src->addr & 0xffffUL);
+ acc += ((src->addr >> 16) & 0xffffUL);
+ acc += (dest->addr & 0xffffUL);
+ acc += ((dest->addr >> 16) & 0xffffUL);
+ acc += (u32_t)htons((u16_t)proto);
+ acc += (u32_t)htons(proto_len);
+
+ /* Fold 32-bit sum to 16 bits
+ calling this twice is propably faster than if statements... */
+ acc = FOLD_U32T(acc);
+ acc = FOLD_U32T(acc);
+ LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc));
+ return (u16_t)~(acc & 0xffffUL);
+}
+#endif /* LWIP_UDPLITE */
+
+/* inet_chksum:
+ *
+ * Calculates the Internet checksum over a portion of memory. Used primarily for IP
+ * and ICMP.
+ *
+ * @param dataptr start of the buffer to calculate the checksum (no alignment needed)
+ * @param len length of the buffer to calculate the checksum
+ * @return checksum (as u16_t) to be saved directly in the protocol header
+ */
+
+u16_t
+inet_chksum(void *dataptr, u16_t len)
+{
+ return ~LWIP_CHKSUM(dataptr, len);
+}
+
+/**
+ * Calculate a checksum over a chain of pbufs (without pseudo-header, much like
+ * inet_chksum only pbufs are used).
+ *
+ * @param p pbuf chain over that the checksum should be calculated
+ * @return checksum (as u16_t) to be saved directly in the protocol header
+ */
+u16_t
+inet_chksum_pbuf(struct pbuf *p)
+{
+ u32_t acc;
+ struct pbuf *q;
+ u8_t swapped;
+
+ acc = 0;
+ swapped = 0;
+ for(q = p; q != NULL; q = q->next) {
+ acc += LWIP_CHKSUM(q->payload, q->len);
+ acc = FOLD_U32T(acc);
+ if (q->len % 2 != 0) {
+ swapped = 1 - swapped;
+ acc = SWAP_BYTES_IN_WORD(acc);
+ }
+ }
+
+ if (swapped) {
+ acc = SWAP_BYTES_IN_WORD(acc);
+ }
+ return (u16_t)~(acc & 0xffffUL);
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c
new file mode 100644
index 0000000..a958242
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c
@@ -0,0 +1,725 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * This is the IPv4 layer implementation for incoming and outgoing IP traffic.
+ *
+ * @see ip_frag.c
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+#include "lwip/ip.h"
+#include "lwip/def.h"
+#include "lwip/mem.h"
+#include "lwip/ip_frag.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/netif.h"
+#include "lwip/icmp.h"
+#include "lwip/igmp.h"
+#include "lwip/raw.h"
+#include "lwip/udp.h"
+#include "lwip/tcp.h"
+#include "lwip/snmp.h"
+#include "lwip/dhcp.h"
+#include "lwip/stats.h"
+#include "arch/perf.h"
+
+#include <string.h>
+
+/**
+ * The interface that provided the packet for the current callback
+ * invocation.
+ */
+struct netif *current_netif;
+
+/**
+ * Header of the input packet currently being processed.
+ */
+const struct ip_hdr *current_header;
+
+/**
+ * Finds the appropriate network interface for a given IP address. It
+ * searches the list of network interfaces linearly. A match is found
+ * if the masked IP address of the network interface equals the masked
+ * IP address given to the function.
+ *
+ * @param dest the destination IP address for which to find the route
+ * @return the netif on which to send to reach dest
+ */
+struct netif *
+ip_route(struct ip_addr *dest)
+{
+ struct netif *netif;
+
+ /* iterate through netifs */
+ for(netif = netif_list; netif != NULL; netif = netif->next) {
+ /* network mask matches? */
+ if (netif_is_up(netif)) {
+ if (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask))) {
+ /* return netif on which to forward IP packet */
+ return netif;
+ }
+ }
+ }
+ if ((netif_default == NULL) || (!netif_is_up(netif_default))) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_route: No route to 0x%"X32_F"\n", dest->addr));
+ IP_STATS_INC(ip.rterr);
+ snmp_inc_ipoutnoroutes();
+ return NULL;
+ }
+ /* no matching netif found, use default netif */
+ return netif_default;
+}
+
+#if IP_FORWARD
+/**
+ * Forwards an IP packet. It finds an appropriate route for the
+ * packet, decrements the TTL value of the packet, adjusts the
+ * checksum and outputs the packet on the appropriate interface.
+ *
+ * @param p the packet to forward (p->payload points to IP header)
+ * @param iphdr the IP header of the input packet
+ * @param inp the netif on which this packet was received
+ * @return the netif on which the packet was sent (NULL if it wasn't sent)
+ */
+static struct netif *
+ip_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp)
+{
+ struct netif *netif;
+
+ PERF_START;
+ /* Find network interface where to forward this IP packet to. */
+ netif = ip_route((struct ip_addr *)&(iphdr->dest));
+ if (netif == NULL) {
+ LWIP_DEBUGF(IP_DEBUG, ("ip_forward: no forwarding route for 0x%"X32_F" found\n",
+ iphdr->dest.addr));
+ snmp_inc_ipoutnoroutes();
+ return (struct netif *)NULL;
+ }
+ /* Do not forward packets onto the same network interface on which
+ * they arrived. */
+ if (netif == inp) {
+ LWIP_DEBUGF(IP_DEBUG, ("ip_forward: not bouncing packets back on incoming interface.\n"));
+ snmp_inc_ipoutnoroutes();
+ return (struct netif *)NULL;
+ }
+
+ /* decrement TTL */
+ IPH_TTL_SET(iphdr, IPH_TTL(iphdr) - 1);
+ /* send ICMP if TTL == 0 */
+ if (IPH_TTL(iphdr) == 0) {
+ snmp_inc_ipinhdrerrors();
+#if LWIP_ICMP
+ /* Don't send ICMP messages in response to ICMP messages */
+ if (IPH_PROTO(iphdr) != IP_PROTO_ICMP) {
+ icmp_time_exceeded(p, ICMP_TE_TTL);
+ }
+#endif /* LWIP_ICMP */
+ return (struct netif *)NULL;
+ }
+
+ /* Incrementally update the IP checksum. */
+ if (IPH_CHKSUM(iphdr) >= htons(0xffff - 0x100)) {
+ IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + htons(0x100) + 1);
+ } else {
+ IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + htons(0x100));
+ }
+
+ LWIP_DEBUGF(IP_DEBUG, ("ip_forward: forwarding packet to 0x%"X32_F"\n",
+ iphdr->dest.addr));
+
+ IP_STATS_INC(ip.fw);
+ IP_STATS_INC(ip.xmit);
+ snmp_inc_ipforwdatagrams();
+
+ PERF_STOP("ip_forward");
+ /* transmit pbuf on chosen interface */
+ netif->output(netif, p, (struct ip_addr *)&(iphdr->dest));
+ return netif;
+}
+#endif /* IP_FORWARD */
+
+/**
+ * This function is called by the network interface device driver when
+ * an IP packet is received. The function does the basic checks of the
+ * IP header such as packet size being at least larger than the header
+ * size etc. If the packet was not destined for us, the packet is
+ * forwarded (using ip_forward). The IP checksum is always checked.
+ *
+ * Finally, the packet is sent to the upper layer protocol input function.
+ *
+ * @param p the received IP packet (p->payload points to IP header)
+ * @param inp the netif on which this packet was received
+ * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't
+ * processed, but currently always returns ERR_OK)
+ */
+err_t
+ip_input(struct pbuf *p, struct netif *inp)
+{
+ struct ip_hdr *iphdr;
+ struct netif *netif;
+ u16_t iphdr_hlen;
+ u16_t iphdr_len;
+#if LWIP_DHCP
+ int check_ip_src=1;
+#endif /* LWIP_DHCP */
+
+ IP_STATS_INC(ip.recv);
+ snmp_inc_ipinreceives();
+
+ /* identify the IP header */
+ iphdr = p->payload;
+ if (IPH_V(iphdr) != 4) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", IPH_V(iphdr)));
+ ip_debug_print(p);
+ pbuf_free(p);
+ IP_STATS_INC(ip.err);
+ IP_STATS_INC(ip.drop);
+ snmp_inc_ipinhdrerrors();
+ return ERR_OK;
+ }
+
+ /* obtain IP header length in number of 32-bit words */
+ iphdr_hlen = IPH_HL(iphdr);
+ /* calculate IP header length in bytes */
+ iphdr_hlen *= 4;
+ /* obtain ip length in bytes */
+ iphdr_len = ntohs(IPH_LEN(iphdr));
+
+ /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */
+ if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len)) {
+ if (iphdr_hlen > p->len) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("IP header (len %"U16_F") does not fit in first pbuf (len %"U16_F"), IP packet dropped.\n",
+ iphdr_hlen, p->len));
+ }
+ if (iphdr_len > p->tot_len) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n",
+ iphdr_len, p->tot_len));
+ }
+ /* free (drop) packet pbufs */
+ pbuf_free(p);
+ IP_STATS_INC(ip.lenerr);
+ IP_STATS_INC(ip.drop);
+ snmp_inc_ipindiscards();
+ return ERR_OK;
+ }
+
+ /* verify checksum */
+#if CHECKSUM_CHECK_IP
+ if (inet_chksum(iphdr, iphdr_hlen) != 0) {
+
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("Checksum (0x%"X16_F") failed, IP packet dropped.\n", inet_chksum(iphdr, iphdr_hlen)));
+ ip_debug_print(p);
+ pbuf_free(p);
+ IP_STATS_INC(ip.chkerr);
+ IP_STATS_INC(ip.drop);
+ snmp_inc_ipinhdrerrors();
+ return ERR_OK;
+ }
+#endif
+
+ /* Trim pbuf. This should have been done at the netif layer,
+ * but we'll do it anyway just to be sure that its done. */
+ pbuf_realloc(p, iphdr_len);
+
+ /* match packet against an interface, i.e. is this packet for us? */
+#if LWIP_IGMP
+ if (ip_addr_ismulticast(&(iphdr->dest))) {
+ if ((inp->flags & NETIF_FLAG_IGMP) && (igmp_lookfor_group(inp, &(iphdr->dest)))) {
+ netif = inp;
+ } else {
+ netif = NULL;
+ }
+ } else
+#endif /* LWIP_IGMP */
+ {
+ /* start trying with inp. if that's not acceptable, start walking the
+ list of configured netifs.
+ 'first' is used as a boolean to mark whether we started walking the list */
+ int first = 1;
+ netif = inp;
+ do {
+ LWIP_DEBUGF(IP_DEBUG, ("ip_input: iphdr->dest 0x%"X32_F" netif->ip_addr 0x%"X32_F" (0x%"X32_F", 0x%"X32_F", 0x%"X32_F")\n",
+ iphdr->dest.addr, netif->ip_addr.addr,
+ iphdr->dest.addr & netif->netmask.addr,
+ netif->ip_addr.addr & netif->netmask.addr,
+ iphdr->dest.addr & ~(netif->netmask.addr)));
+
+ /* interface is up and configured? */
+ if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) {
+ /* unicast to this interface address? */
+ if (ip_addr_cmp(&(iphdr->dest), &(netif->ip_addr)) ||
+ /* or broadcast on this interface network address? */
+ ip_addr_isbroadcast(&(iphdr->dest), netif)) {
+ LWIP_DEBUGF(IP_DEBUG, ("ip_input: packet accepted on interface %c%c\n",
+ netif->name[0], netif->name[1]));
+ /* break out of for loop */
+ break;
+ }
+ }
+ if (first) {
+ first = 0;
+ netif = netif_list;
+ } else {
+ netif = netif->next;
+ }
+ if (netif == inp) {
+ netif = netif->next;
+ }
+ } while(netif != NULL);
+ }
+
+#if LWIP_DHCP
+ /* Pass DHCP messages regardless of destination address. DHCP traffic is addressed
+ * using link layer addressing (such as Ethernet MAC) so we must not filter on IP.
+ * According to RFC 1542 section 3.1.1, referred by RFC 2131).
+ */
+ if (netif == NULL) {
+ /* remote port is DHCP server? */
+ if (IPH_PROTO(iphdr) == IP_PROTO_UDP) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: UDP packet to DHCP client port %"U16_F"\n",
+ ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen))->dest)));
+ if (ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen))->dest) == DHCP_CLIENT_PORT) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: DHCP packet accepted.\n"));
+ netif = inp;
+ check_ip_src = 0;
+ }
+ }
+ }
+#endif /* LWIP_DHCP */
+
+ /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */
+#if LWIP_DHCP
+ /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */
+ if (check_ip_src && (iphdr->src.addr != 0))
+#endif /* LWIP_DHCP */
+ { if ((ip_addr_isbroadcast(&(iphdr->src), inp)) ||
+ (ip_addr_ismulticast(&(iphdr->src)))) {
+ /* packet source is not valid */
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("ip_input: packet source is not valid.\n"));
+ /* free (drop) packet pbufs */
+ pbuf_free(p);
+ IP_STATS_INC(ip.drop);
+ snmp_inc_ipinaddrerrors();
+ snmp_inc_ipindiscards();
+ return ERR_OK;
+ }
+ }
+
+ /* packet not for us? */
+ if (netif == NULL) {
+ /* packet not for us, route or discard */
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: packet not for us.\n"));
+#if IP_FORWARD
+ /* non-broadcast packet? */
+ if (!ip_addr_isbroadcast(&(iphdr->dest), inp)) {
+ /* try to forward IP packet on (other) interfaces */
+ ip_forward(p, iphdr, inp);
+ } else
+#endif /* IP_FORWARD */
+ {
+ snmp_inc_ipinaddrerrors();
+ snmp_inc_ipindiscards();
+ }
+ pbuf_free(p);
+ return ERR_OK;
+ }
+ /* packet consists of multiple fragments? */
+ if ((IPH_OFFSET(iphdr) & htons(IP_OFFMASK | IP_MF)) != 0) {
+#if IP_REASSEMBLY /* packet fragment reassembly code present? */
+ LWIP_DEBUGF(IP_DEBUG, ("IP packet is a fragment (id=0x%04"X16_F" tot_len=%"U16_F" len=%"U16_F" MF=%"U16_F" offset=%"U16_F"), calling ip_reass()\n",
+ ntohs(IPH_ID(iphdr)), p->tot_len, ntohs(IPH_LEN(iphdr)), !!(IPH_OFFSET(iphdr) & htons(IP_MF)), (ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)*8));
+ /* reassemble the packet*/
+ p = ip_reass(p);
+ /* packet not fully reassembled yet? */
+ if (p == NULL) {
+ return ERR_OK;
+ }
+ iphdr = p->payload;
+#else /* IP_REASSEMBLY == 0, no packet fragment reassembly code present */
+ pbuf_free(p);
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since it was fragmented (0x%"X16_F") (while IP_REASSEMBLY == 0).\n",
+ ntohs(IPH_OFFSET(iphdr))));
+ IP_STATS_INC(ip.opterr);
+ IP_STATS_INC(ip.drop);
+ /* unsupported protocol feature */
+ snmp_inc_ipinunknownprotos();
+ return ERR_OK;
+#endif /* IP_REASSEMBLY */
+ }
+
+#if IP_OPTIONS_ALLOWED == 0 /* no support for IP options in the IP header? */
+
+#if LWIP_IGMP
+ /* there is an extra "router alert" option in IGMP messages which we allow for but do not police */
+ if((iphdr_hlen > IP_HLEN && (IPH_PROTO(iphdr) != IP_PROTO_IGMP)) {
+#else
+ if (iphdr_hlen > IP_HLEN) {
+#endif /* LWIP_IGMP */
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since there were IP options (while IP_OPTIONS_ALLOWED == 0).\n"));
+ pbuf_free(p);
+ IP_STATS_INC(ip.opterr);
+ IP_STATS_INC(ip.drop);
+ /* unsupported protocol feature */
+ snmp_inc_ipinunknownprotos();
+ return ERR_OK;
+ }
+#endif /* IP_OPTIONS_ALLOWED == 0 */
+
+ /* send to upper layers */
+ LWIP_DEBUGF(IP_DEBUG, ("ip_input: \n"));
+ ip_debug_print(p);
+ LWIP_DEBUGF(IP_DEBUG, ("ip_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len));
+
+ current_netif = inp;
+ current_header = iphdr;
+
+#if LWIP_RAW
+ /* raw input did not eat the packet? */
+ if (raw_input(p, inp) == 0)
+#endif /* LWIP_RAW */
+ {
+
+ switch (IPH_PROTO(iphdr)) {
+#if LWIP_UDP
+ case IP_PROTO_UDP:
+#if LWIP_UDPLITE
+ case IP_PROTO_UDPLITE:
+#endif /* LWIP_UDPLITE */
+ snmp_inc_ipindelivers();
+ udp_input(p, inp);
+ break;
+#endif /* LWIP_UDP */
+#if LWIP_TCP
+ case IP_PROTO_TCP:
+ snmp_inc_ipindelivers();
+ tcp_input(p, inp);
+ break;
+#endif /* LWIP_TCP */
+#if LWIP_ICMP
+ case IP_PROTO_ICMP:
+ snmp_inc_ipindelivers();
+ icmp_input(p, inp);
+ break;
+#endif /* LWIP_ICMP */
+#if LWIP_IGMP
+ case IP_PROTO_IGMP:
+ igmp_input(p,inp,&(iphdr->dest));
+ break;
+#endif /* LWIP_IGMP */
+ default:
+#if LWIP_ICMP
+ /* send ICMP destination protocol unreachable unless is was a broadcast */
+ if (!ip_addr_isbroadcast(&(iphdr->dest), inp) &&
+ !ip_addr_ismulticast(&(iphdr->dest))) {
+ p->payload = iphdr;
+ icmp_dest_unreach(p, ICMP_DUR_PROTO);
+ }
+#endif /* LWIP_ICMP */
+ pbuf_free(p);
+
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Unsupported transport protocol %"U16_F"\n", IPH_PROTO(iphdr)));
+
+ IP_STATS_INC(ip.proterr);
+ IP_STATS_INC(ip.drop);
+ snmp_inc_ipinunknownprotos();
+ }
+ }
+
+ current_netif = NULL;
+ current_header = NULL;
+
+ return ERR_OK;
+}
+
+/**
+ * Sends an IP packet on a network interface. This function constructs
+ * the IP header and calculates the IP header checksum. If the source
+ * IP address is NULL, the IP address of the outgoing network
+ * interface is filled in as source address.
+ * If the destination IP address is IP_HDRINCL, p is assumed to already
+ * include an IP header and p->payload points to it instead of the data.
+ *
+ * @param p the packet to send (p->payload points to the data, e.g. next
+ protocol header; if dest == IP_HDRINCL, p already includes an IP
+ header and p->payload points to that IP header)
+ * @param src the source IP address to send from (if src == IP_ADDR_ANY, the
+ * IP address of the netif used to send is used as source address)
+ * @param dest the destination IP address to send the packet to
+ * @param ttl the TTL value to be set in the IP header
+ * @param tos the TOS value to be set in the IP header
+ * @param proto the PROTOCOL to be set in the IP header
+ * @param netif the netif on which to send this packet
+ * @return ERR_OK if the packet was sent OK
+ * ERR_BUF if p doesn't have enough space for IP/LINK headers
+ * returns errors returned by netif->output
+ *
+ * @note ip_id: RFC791 "some host may be able to simply use
+ * unique identifiers independent of destination"
+ */
+err_t
+ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos,
+ u8_t proto, struct netif *netif)
+{
+#if IP_OPTIONS_SEND
+ return ip_output_if_opt(p, src, dest, ttl, tos, proto, netif, NULL, 0);
+}
+
+/**
+ * Same as ip_output_if() but with the possibility to include IP options:
+ *
+ * @ param ip_options pointer to the IP options, copied into the IP header
+ * @ param optlen length of ip_options
+ */
+err_t ip_output_if_opt(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options,
+ u16_t optlen)
+{
+#endif /* IP_OPTIONS_SEND */
+ struct ip_hdr *iphdr;
+ static u16_t ip_id = 0;
+
+ snmp_inc_ipoutrequests();
+
+ /* Should the IP header be generated or is it already included in p? */
+ if (dest != IP_HDRINCL) {
+ u16_t ip_hlen = IP_HLEN;
+#if IP_OPTIONS_SEND
+ u16_t optlen_aligned = 0;
+ if (optlen != 0) {
+ /* round up to a multiple of 4 */
+ optlen_aligned = ((optlen + 3) & ~3);
+ ip_hlen += optlen_aligned;
+ /* First write in the IP options */
+ if (pbuf_header(p, optlen_aligned)) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output_if_opt: not enough room for IP options in pbuf\n"));
+ IP_STATS_INC(ip.err);
+ snmp_inc_ipoutdiscards();
+ return ERR_BUF;
+ }
+ MEMCPY(p->payload, ip_options, optlen);
+ if (optlen < optlen_aligned) {
+ /* zero the remaining bytes */
+ memset(((char*)p->payload) + optlen, 0, optlen_aligned - optlen);
+ }
+ }
+#endif /* IP_OPTIONS_SEND */
+ /* generate IP header */
+ if (pbuf_header(p, IP_HLEN)) {
+ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output: not enough room for IP header in pbuf\n"));
+
+ IP_STATS_INC(ip.err);
+ snmp_inc_ipoutdiscards();
+ return ERR_BUF;
+ }
+
+ iphdr = p->payload;
+ LWIP_ASSERT("check that first pbuf can hold struct ip_hdr",
+ (p->len >= sizeof(struct ip_hdr)));
+
+ IPH_TTL_SET(iphdr, ttl);
+ IPH_PROTO_SET(iphdr, proto);
+
+ ip_addr_set(&(iphdr->dest), dest);
+
+ IPH_VHLTOS_SET(iphdr, 4, ip_hlen / 4, tos);
+ IPH_LEN_SET(iphdr, htons(p->tot_len));
+ IPH_OFFSET_SET(iphdr, 0);
+ IPH_ID_SET(iphdr, htons(ip_id));
+ ++ip_id;
+
+ if (ip_addr_isany(src)) {
+ ip_addr_set(&(iphdr->src), &(netif->ip_addr));
+ } else {
+ ip_addr_set(&(iphdr->src), src);
+ }
+
+ IPH_CHKSUM_SET(iphdr, 0);
+#if CHECKSUM_GEN_IP
+ IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, ip_hlen));
+#endif
+ } else {
+ /* IP header already included in p */
+ iphdr = p->payload;
+ dest = &(iphdr->dest);
+ }
+
+ IP_STATS_INC(ip.xmit);
+
+ LWIP_DEBUGF(IP_DEBUG, ("ip_output_if: %c%c%"U16_F"\n", netif->name[0], netif->name[1], netif->num));
+ ip_debug_print(p);
+
+#if ENABLE_LOOPBACK
+ if (ip_addr_cmp(dest, &netif->ip_addr)) {
+ /* Packet to self, enqueue it for loopback */
+ LWIP_DEBUGF(IP_DEBUG, ("netif_loop_output()"));
+ return netif_loop_output(netif, p, dest);
+ }
+#endif /* ENABLE_LOOPBACK */
+#if IP_FRAG
+ /* don't fragment if interface has mtu set to 0 [loopif] */
+ if (netif->mtu && (p->tot_len > netif->mtu)) {
+ return ip_frag(p,netif,dest);
+ }
+#endif
+
+ LWIP_DEBUGF(IP_DEBUG, ("netif->output()"));
+ return netif->output(netif, p, dest);
+}
+
+/**
+ * Simple interface to ip_output_if. It finds the outgoing network
+ * interface and calls upon ip_output_if to do the actual work.
+ *
+ * @param p the packet to send (p->payload points to the data, e.g. next
+ protocol header; if dest == IP_HDRINCL, p already includes an IP
+ header and p->payload points to that IP header)
+ * @param src the source IP address to send from (if src == IP_ADDR_ANY, the
+ * IP address of the netif used to send is used as source address)
+ * @param dest the destination IP address to send the packet to
+ * @param ttl the TTL value to be set in the IP header
+ * @param tos the TOS value to be set in the IP header
+ * @param proto the PROTOCOL to be set in the IP header
+ *
+ * @return ERR_RTE if no route is found
+ * see ip_output_if() for more return values
+ */
+err_t
+ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos, u8_t proto)
+{
+ struct netif *netif;
+
+ if ((netif = ip_route(dest)) == NULL) {
+ LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to 0x%"X32_F"\n", dest->addr));
+ IP_STATS_INC(ip.rterr);
+ return ERR_RTE;
+ }
+
+ return ip_output_if(p, src, dest, ttl, tos, proto, netif);
+}
+
+#if LWIP_NETIF_HWADDRHINT
+/** Like ip_output, but takes and addr_hint pointer that is passed on to netif->addr_hint
+ * before calling ip_output_if.
+ *
+ * @param p the packet to send (p->payload points to the data, e.g. next
+ protocol header; if dest == IP_HDRINCL, p already includes an IP
+ header and p->payload points to that IP header)
+ * @param src the source IP address to send from (if src == IP_ADDR_ANY, the
+ * IP address of the netif used to send is used as source address)
+ * @param dest the destination IP address to send the packet to
+ * @param ttl the TTL value to be set in the IP header
+ * @param tos the TOS value to be set in the IP header
+ * @param proto the PROTOCOL to be set in the IP header
+ * @param addr_hint address hint pointer set to netif->addr_hint before
+ * calling ip_output_if()
+ *
+ * @return ERR_RTE if no route is found
+ * see ip_output_if() for more return values
+ */
+err_t
+ip_output_hinted(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint)
+{
+ struct netif *netif;
+ err_t err;
+
+ if ((netif = ip_route(dest)) == NULL) {
+ LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to 0x%"X32_F"\n", dest->addr));
+ IP_STATS_INC(ip.rterr);
+ return ERR_RTE;
+ }
+
+ netif->addr_hint = addr_hint;
+ err = ip_output_if(p, src, dest, ttl, tos, proto, netif);
+ netif->addr_hint = NULL;
+
+ return err;
+}
+#endif /* LWIP_NETIF_HWADDRHINT*/
+
+#if IP_DEBUG
+/* Print an IP header by using LWIP_DEBUGF
+ * @param p an IP packet, p->payload pointing to the IP header
+ */
+void
+ip_debug_print(struct pbuf *p)
+{
+ struct ip_hdr *iphdr = p->payload;
+ u8_t *payload;
+
+ payload = (u8_t *)iphdr + IP_HLEN;
+
+ LWIP_DEBUGF(IP_DEBUG, ("IP header:\n"));
+ LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(IP_DEBUG, ("|%2"S16_F" |%2"S16_F" | 0x%02"X16_F" | %5"U16_F" | (v, hl, tos, len)\n",
+ IPH_V(iphdr),
+ IPH_HL(iphdr),
+ IPH_TOS(iphdr),
+ ntohs(IPH_LEN(iphdr))));
+ LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(IP_DEBUG, ("| %5"U16_F" |%"U16_F"%"U16_F"%"U16_F"| %4"U16_F" | (id, flags, offset)\n",
+ ntohs(IPH_ID(iphdr)),
+ ntohs(IPH_OFFSET(iphdr)) >> 15 & 1,
+ ntohs(IPH_OFFSET(iphdr)) >> 14 & 1,
+ ntohs(IPH_OFFSET(iphdr)) >> 13 & 1,
+ ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK));
+ LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | 0x%04"X16_F" | (ttl, proto, chksum)\n",
+ IPH_TTL(iphdr),
+ IPH_PROTO(iphdr),
+ ntohs(IPH_CHKSUM(iphdr))));
+ LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (src)\n",
+ ip4_addr1(&iphdr->src),
+ ip4_addr2(&iphdr->src),
+ ip4_addr3(&iphdr->src),
+ ip4_addr4(&iphdr->src)));
+ LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (dest)\n",
+ ip4_addr1(&iphdr->dest),
+ ip4_addr2(&iphdr->dest),
+ ip4_addr3(&iphdr->dest),
+ ip4_addr4(&iphdr->dest)));
+ LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n"));
+}
+#endif /* IP_DEBUG */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c
new file mode 100644
index 0000000..33e0aad
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c
@@ -0,0 +1,86 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * This is the IPv4 address tools implementation.
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+#include "lwip/ip_addr.h"
+#include "lwip/inet.h"
+#include "lwip/netif.h"
+
+#define IP_ADDR_ANY_VALUE 0x00000000UL
+#define IP_ADDR_BROADCAST_VALUE 0xffffffffUL
+
+/* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */
+const struct ip_addr ip_addr_any = { IP_ADDR_ANY_VALUE };
+const struct ip_addr ip_addr_broadcast = { IP_ADDR_BROADCAST_VALUE };
+
+/**
+ * Determine if an address is a broadcast address on a network interface
+ *
+ * @param addr address to be checked
+ * @param netif the network interface against which the address is checked
+ * @return returns non-zero if the address is a broadcast address
+ */
+u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif)
+{
+ u32_t addr2test;
+
+ addr2test = addr->addr;
+ /* all ones (broadcast) or all zeroes (old skool broadcast) */
+ if ((~addr2test == IP_ADDR_ANY_VALUE) ||
+ (addr2test == IP_ADDR_ANY_VALUE))
+ return 1;
+ /* no broadcast support on this network interface? */
+ else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0)
+ /* the given address cannot be a broadcast address
+ * nor can we check against any broadcast addresses */
+ return 0;
+ /* address matches network interface address exactly? => no broadcast */
+ else if (addr2test == netif->ip_addr.addr)
+ return 0;
+ /* on the same (sub) network... */
+ else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask))
+ /* ...and host identifier bits are all ones? =>... */
+ && ((addr2test & ~netif->netmask.addr) ==
+ (IP_ADDR_BROADCAST_VALUE & ~netif->netmask.addr)))
+ /* => network broadcast address */
+ return 1;
+ else
+ return 0;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c
new file mode 100644
index 0000000..ab35572
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c
@@ -0,0 +1,794 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * This is the IPv4 packet segmentation and reassembly implementation.
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Jani Monoses <jani iv ro>
+ * Simon Goldschmidt
+ * original reassembly code by Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+#include "lwip/ip_frag.h"
+#include "lwip/ip.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/netif.h"
+#include "lwip/snmp.h"
+#include "lwip/stats.h"
+#include "lwip/icmp.h"
+
+#include <string.h>
+
+#if IP_REASSEMBLY
+/**
+ * The IP reassembly code currently has the following limitations:
+ * - IP header options are not supported
+ * - fragments must not overlap (e.g. due to different routes),
+ * currently, overlapping or duplicate fragments are thrown away
+ * if IP_REASS_CHECK_OVERLAP=1 (the default)!
+ *
+ * @todo: work with IP header options
+ */
+
+/** Setting this to 0, you can turn off checking the fragments for overlapping
+ * regions. The code gets a little smaller. Only use this if you know that
+ * overlapping won't occur on your network! */
+#ifndef IP_REASS_CHECK_OVERLAP
+#define IP_REASS_CHECK_OVERLAP 1
+#endif /* IP_REASS_CHECK_OVERLAP */
+
+/** Set to 0 to prevent freeing the oldest datagram when the reassembly buffer is
+ * full (IP_REASS_MAX_PBUFS pbufs are enqueued). The code gets a little smaller.
+ * Datagrams will be freed by timeout only. Especially useful when MEMP_NUM_REASSDATA
+ * is set to 1, so one datagram can be reassembled at a time, only. */
+#ifndef IP_REASS_FREE_OLDEST
+#define IP_REASS_FREE_OLDEST 1
+#endif /* IP_REASS_FREE_OLDEST */
+
+#define IP_REASS_FLAG_LASTFRAG 0x01
+
+/** This is a helper struct which holds the starting
+ * offset and the ending offset of this fragment to
+ * easily chain the fragments.
+ * It has to be packed since it has to fit inside the IP header.
+ */
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct ip_reass_helper {
+ PACK_STRUCT_FIELD(struct pbuf *next_pbuf);
+ PACK_STRUCT_FIELD(u16_t start);
+ PACK_STRUCT_FIELD(u16_t end);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define IP_ADDRESSES_AND_ID_MATCH(iphdrA, iphdrB) \
+ (ip_addr_cmp(&(iphdrA)->src, &(iphdrB)->src) && \
+ ip_addr_cmp(&(iphdrA)->dest, &(iphdrB)->dest) && \
+ IPH_ID(iphdrA) == IPH_ID(iphdrB)) ? 1 : 0
+
+/* global variables */
+static struct ip_reassdata *reassdatagrams;
+static u16_t ip_reass_pbufcount;
+
+/* function prototypes */
+static void ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev);
+static int ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev);
+
+/**
+ * Reassembly timer base function
+ * for both NO_SYS == 0 and 1 (!).
+ *
+ * Should be called every 1000 msec (defined by IP_TMR_INTERVAL).
+ */
+void
+ip_reass_tmr(void)
+{
+ struct ip_reassdata *r, *prev = NULL;
+
+ r = reassdatagrams;
+ while (r != NULL) {
+ /* Decrement the timer. Once it reaches 0,
+ * clean up the incomplete fragment assembly */
+ if (r->timer > 0) {
+ r->timer--;
+ LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer dec %"U16_F"\n",(u16_t)r->timer));
+ prev = r;
+ r = r->next;
+ } else {
+ /* reassembly timed out */
+ struct ip_reassdata *tmp;
+ LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer timed out\n"));
+ tmp = r;
+ /* get the next pointer before freeing */
+ r = r->next;
+ /* free the helper struct and all enqueued pbufs */
+ ip_reass_free_complete_datagram(tmp, prev);
+ }
+ }
+}
+
+/**
+ * Free a datagram (struct ip_reassdata) and all its pbufs.
+ * Updates the total count of enqueued pbufs (ip_reass_pbufcount),
+ * SNMP counters and sends an ICMP time exceeded packet.
+ *
+ * @param ipr datagram to free
+ * @param prev the previous datagram in the linked list
+ * @return the number of pbufs freed
+ */
+static int
+ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev)
+{
+ int pbufs_freed = 0;
+ struct pbuf *p;
+ struct ip_reass_helper *iprh;
+
+ LWIP_ASSERT("prev != ipr", prev != ipr);
+ if (prev != NULL) {
+ LWIP_ASSERT("prev->next == ipr", prev->next == ipr);
+ }
+
+ snmp_inc_ipreasmfails();
+#if LWIP_ICMP
+ iprh = (struct ip_reass_helper *)ipr->p->payload;
+ if (iprh->start == 0) {
+ /* The first fragment was received, send ICMP time exceeded. */
+ /* First, de-queue the first pbuf from r->p. */
+ p = ipr->p;
+ ipr->p = iprh->next_pbuf;
+ /* Then, copy the original header into it. */
+ SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN);
+ icmp_time_exceeded(p, ICMP_TE_FRAG);
+ pbufs_freed += pbuf_clen(p);
+ pbuf_free(p);
+ }
+#endif /* LWIP_ICMP */
+
+ /* First, free all received pbufs. The individual pbufs need to be released
+ separately as they have not yet been chained */
+ p = ipr->p;
+ while (p != NULL) {
+ struct pbuf *pcur;
+ iprh = (struct ip_reass_helper *)p->payload;
+ pcur = p;
+ /* get the next pointer before freeing */
+ p = iprh->next_pbuf;
+ pbufs_freed += pbuf_clen(pcur);
+ pbuf_free(pcur);
+ }
+ /* Then, unchain the struct ip_reassdata from the list and free it. */
+ ip_reass_dequeue_datagram(ipr, prev);
+ LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= pbufs_freed);
+ ip_reass_pbufcount -= pbufs_freed;
+
+ return pbufs_freed;
+}
+
+#if IP_REASS_FREE_OLDEST
+/**
+ * Free the oldest datagram to make room for enqueueing new fragments.
+ * The datagram 'fraghdr' belongs to is not freed!
+ *
+ * @param fraghdr IP header of the current fragment
+ * @param pbufs_needed number of pbufs needed to enqueue
+ * (used for freeing other datagrams if not enough space)
+ * @return the number of pbufs freed
+ */
+static int
+ip_reass_remove_oldest_datagram(struct ip_hdr *fraghdr, int pbufs_needed)
+{
+ /* @todo Can't we simply remove the last datagram in the
+ * linked list behind reassdatagrams?
+ */
+ struct ip_reassdata *r, *oldest, *prev;
+ int pbufs_freed = 0, pbufs_freed_current;
+ int other_datagrams;
+
+ /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs,
+ * but don't free the datagram that 'fraghdr' belongs to! */
+ do {
+ oldest = NULL;
+ prev = NULL;
+ other_datagrams = 0;
+ r = reassdatagrams;
+ while (r != NULL) {
+ if (!IP_ADDRESSES_AND_ID_MATCH(&r->iphdr, fraghdr)) {
+ /* Not the same datagram as fraghdr */
+ other_datagrams++;
+ if (oldest == NULL) {
+ oldest = r;
+ } else if (r->timer <= oldest->timer) {
+ /* older than the previous oldest */
+ oldest = r;
+ }
+ }
+ if (r->next != NULL) {
+ prev = r;
+ }
+ r = r->next;
+ }
+ if (oldest != NULL) {
+ pbufs_freed_current = ip_reass_free_complete_datagram(oldest, prev);
+ pbufs_freed += pbufs_freed_current;
+ }
+ } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1));
+ return pbufs_freed;
+}
+#endif /* IP_REASS_FREE_OLDEST */
+
+/**
+ * Enqueues a new fragment into the fragment queue
+ * @param fraghdr points to the new fragments IP hdr
+ * @param clen number of pbufs needed to enqueue (used for freeing other datagrams if not enough space)
+ * @return A pointer to the queue location into which the fragment was enqueued
+ */
+static struct ip_reassdata*
+ip_reass_enqueue_new_datagram(struct ip_hdr *fraghdr, int clen)
+{
+ struct ip_reassdata* ipr;
+ /* No matching previous fragment found, allocate a new reassdata struct */
+ ipr = memp_malloc(MEMP_REASSDATA);
+ if (ipr == NULL) {
+#if IP_REASS_FREE_OLDEST
+ if (ip_reass_remove_oldest_datagram(fraghdr, clen) >= clen) {
+ ipr = memp_malloc(MEMP_REASSDATA);
+ }
+ if (ipr == NULL)
+#endif /* IP_REASS_FREE_OLDEST */
+ {
+ IPFRAG_STATS_INC(ip_frag.memerr);
+ LWIP_DEBUGF(IP_REASS_DEBUG,("Failed to alloc reassdata struct\n"));
+ return NULL;
+ }
+ }
+ memset(ipr, 0, sizeof(struct ip_reassdata));
+ ipr->timer = IP_REASS_MAXAGE;
+
+ /* enqueue the new structure to the front of the list */
+ ipr->next = reassdatagrams;
+ reassdatagrams = ipr;
+ /* copy the ip header for later tests and input */
+ /* @todo: no ip options supported? */
+ SMEMCPY(&(ipr->iphdr), fraghdr, IP_HLEN);
+ return ipr;
+}
+
+/**
+ * Dequeues a datagram from the datagram queue. Doesn't deallocate the pbufs.
+ * @param ipr points to the queue entry to dequeue
+ */
+static void
+ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev)
+{
+
+ /* dequeue the reass struct */
+ if (reassdatagrams == ipr) {
+ /* it was the first in the list */
+ reassdatagrams = ipr->next;
+ } else {
+ /* it wasn't the first, so it must have a valid 'prev' */
+ LWIP_ASSERT("sanity check linked list", prev != NULL);
+ prev->next = ipr->next;
+ }
+
+ /* now we can free the ip_reass struct */
+ memp_free(MEMP_REASSDATA, ipr);
+}
+
+/**
+ * Chain a new pbuf into the pbuf list that composes the datagram. The pbuf list
+ * will grow over time as new pbufs are rx.
+ * Also checks that the datagram passes basic continuity checks (if the last
+ * fragment was received at least once).
+ * @param root_p points to the 'root' pbuf for the current datagram being assembled.
+ * @param new_p points to the pbuf for the current fragment
+ * @return 0 if invalid, >0 otherwise
+ */
+static int
+ip_reass_chain_frag_into_datagram_and_validate(struct ip_reassdata *ipr, struct pbuf *new_p)
+{
+ struct ip_reass_helper *iprh, *iprh_tmp, *iprh_prev=NULL;
+ struct pbuf *q;
+ u16_t offset,len;
+ struct ip_hdr *fraghdr;
+ int valid = 1;
+
+ /* Extract length and fragment offset from current fragment */
+ fraghdr = (struct ip_hdr*)new_p->payload;
+ len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4;
+ offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8;
+
+ /* overwrite the fragment's ip header from the pbuf with our helper struct,
+ * and setup the embedded helper structure. */
+ /* make sure the struct ip_reass_helper fits into the IP header */
+ LWIP_ASSERT("sizeof(struct ip_reass_helper) <= IP_HLEN",
+ sizeof(struct ip_reass_helper) <= IP_HLEN);
+ iprh = (struct ip_reass_helper*)new_p->payload;
+ iprh->next_pbuf = NULL;
+ iprh->start = offset;
+ iprh->end = offset + len;
+
+ /* Iterate through until we either get to the end of the list (append),
+ * or we find on with a larger offset (insert). */
+ for (q = ipr->p; q != NULL;) {
+ iprh_tmp = (struct ip_reass_helper*)q->payload;
+ if (iprh->start < iprh_tmp->start) {
+ /* the new pbuf should be inserted before this */
+ iprh->next_pbuf = q;
+ if (iprh_prev != NULL) {
+ /* not the fragment with the lowest offset */
+#if IP_REASS_CHECK_OVERLAP
+ if ((iprh->start < iprh_prev->end) || (iprh->end > iprh_tmp->start)) {
+ /* fragment overlaps with previous or following, throw away */
+ goto freepbuf;
+ }
+#endif /* IP_REASS_CHECK_OVERLAP */
+ iprh_prev->next_pbuf = new_p;
+ } else {
+ /* fragment with the lowest offset */
+ ipr->p = new_p;
+ }
+ break;
+ } else if(iprh->start == iprh_tmp->start) {
+ /* received the same datagram twice: no need to keep the datagram */
+ goto freepbuf;
+#if IP_REASS_CHECK_OVERLAP
+ } else if(iprh->start < iprh_tmp->end) {
+ /* overlap: no need to keep the new datagram */
+ goto freepbuf;
+#endif /* IP_REASS_CHECK_OVERLAP */
+ } else {
+ /* Check if the fragments received so far have no wholes. */
+ if (iprh_prev != NULL) {
+ if (iprh_prev->end != iprh_tmp->start) {
+ /* There is a fragment missing between the current
+ * and the previous fragment */
+ valid = 0;
+ }
+ }
+ }
+ q = iprh_tmp->next_pbuf;
+ iprh_prev = iprh_tmp;
+ }
+
+ /* If q is NULL, then we made it to the end of the list. Determine what to do now */
+ if (q == NULL) {
+ if (iprh_prev != NULL) {
+ /* this is (for now), the fragment with the highest offset:
+ * chain it to the last fragment */
+#if IP_REASS_CHECK_OVERLAP
+ LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start);
+#endif /* IP_REASS_CHECK_OVERLAP */
+ iprh_prev->next_pbuf = new_p;
+ if (iprh_prev->end != iprh->start) {
+ valid = 0;
+ }
+ } else {
+#if IP_REASS_CHECK_OVERLAP
+ LWIP_ASSERT("no previous fragment, this must be the first fragment!",
+ ipr->p == NULL);
+#endif /* IP_REASS_CHECK_OVERLAP */
+ /* this is the first fragment we ever received for this ip datagram */
+ ipr->p = new_p;
+ }
+ }
+
+ /* At this point, the validation part begins: */
+ /* If we already received the last fragment */
+ if ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0) {
+ /* and had no wholes so far */
+ if (valid) {
+ /* then check if the rest of the fragments is here */
+ /* Check if the queue starts with the first datagram */
+ if (((struct ip_reass_helper*)ipr->p->payload)->start != 0) {
+ valid = 0;
+ } else {
+ /* and check that there are no wholes after this datagram */
+ iprh_prev = iprh;
+ q = iprh->next_pbuf;
+ while (q != NULL) {
+ iprh = (struct ip_reass_helper*)q->payload;
+ if (iprh_prev->end != iprh->start) {
+ valid = 0;
+ break;
+ }
+ iprh_prev = iprh;
+ q = iprh->next_pbuf;
+ }
+ /* if still valid, all fragments are received
+ * (because to the MF==0 already arrived */
+ if (valid) {
+ LWIP_ASSERT("sanity check", ipr->p != NULL);
+ LWIP_ASSERT("sanity check",
+ ((struct ip_reass_helper*)ipr->p->payload) != iprh);
+ LWIP_ASSERT("validate_datagram:next_pbuf!=NULL",
+ iprh->next_pbuf == NULL);
+ LWIP_ASSERT("validate_datagram:datagram end!=datagram len",
+ iprh->end == ipr->datagram_len);
+ }
+ }
+ }
+ /* If valid is 0 here, there are some fragments missing in the middle
+ * (since MF == 0 has already arrived). Such datagrams simply time out if
+ * no more fragments are received... */
+ return valid;
+ }
+ /* If we come here, not all fragments were received, yet! */
+ return 0; /* not yet valid! */
+#if IP_REASS_CHECK_OVERLAP
+freepbuf:
+ ip_reass_pbufcount -= pbuf_clen(new_p);
+ pbuf_free(new_p);
+ return 0;
+#endif /* IP_REASS_CHECK_OVERLAP */
+}
+
+/**
+ * Reassembles incoming IP fragments into an IP datagram.
+ *
+ * @param p points to a pbuf chain of the fragment
+ * @return NULL if reassembly is incomplete, ? otherwise
+ */
+struct pbuf *
+ip_reass(struct pbuf *p)
+{
+ struct pbuf *r;
+ struct ip_hdr *fraghdr;
+ struct ip_reassdata *ipr;
+ struct ip_reass_helper *iprh;
+ u16_t offset, len;
+ u8_t clen;
+ struct ip_reassdata *ipr_prev = NULL;
+
+ IPFRAG_STATS_INC(ip_frag.recv);
+ snmp_inc_ipreasmreqds();
+
+ fraghdr = (struct ip_hdr*)p->payload;
+
+ if ((IPH_HL(fraghdr) * 4) != IP_HLEN) {
+ LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: IP options currently not supported!\n"));
+ IPFRAG_STATS_INC(ip_frag.err);
+ goto nullreturn;
+ }
+
+ offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8;
+ len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4;
+
+ /* Check if we are allowed to enqueue more datagrams. */
+ clen = pbuf_clen(p);
+ if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) {
+#if IP_REASS_FREE_OLDEST
+ if (!ip_reass_remove_oldest_datagram(fraghdr, clen) ||
+ ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS))
+#endif /* IP_REASS_FREE_OLDEST */
+ {
+ /* No datagram could be freed and still too many pbufs enqueued */
+ LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: Overflow condition: pbufct=%d, clen=%d, MAX=%d\n",
+ ip_reass_pbufcount, clen, IP_REASS_MAX_PBUFS));
+ IPFRAG_STATS_INC(ip_frag.memerr);
+ /* @todo: send ICMP time exceeded here? */
+ /* drop this pbuf */
+ goto nullreturn;
+ }
+ }
+
+ /* Look for the datagram the fragment belongs to in the current datagram queue,
+ * remembering the previous in the queue for later dequeueing. */
+ for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) {
+ /* Check if the incoming fragment matches the one currently present
+ in the reassembly buffer. If so, we proceed with copying the
+ fragment into the buffer. */
+ if (IP_ADDRESSES_AND_ID_MATCH(&ipr->iphdr, fraghdr)) {
+ LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass: matching previous fragment ID=%"X16_F"\n",
+ ntohs(IPH_ID(fraghdr))));
+ IPFRAG_STATS_INC(ip_frag.cachehit);
+ break;
+ }
+ ipr_prev = ipr;
+ }
+
+ if (ipr == NULL) {
+ /* Enqueue a new datagram into the datagram queue */
+ ipr = ip_reass_enqueue_new_datagram(fraghdr, clen);
+ /* Bail if unable to enqueue */
+ if(ipr == NULL) {
+ goto nullreturn;
+ }
+ } else {
+ if (((ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) &&
+ ((ntohs(IPH_OFFSET(&ipr->iphdr)) & IP_OFFMASK) != 0)) {
+ /* ipr->iphdr is not the header from the first fragment, but fraghdr is
+ * -> copy fraghdr into ipr->iphdr since we want to have the header
+ * of the first fragment (for ICMP time exceeded and later, for copying
+ * all options, if supported)*/
+ SMEMCPY(&ipr->iphdr, fraghdr, IP_HLEN);
+ }
+ }
+ /* Track the current number of pbufs current 'in-flight', in order to limit
+ the number of fragments that may be enqueued at any one time */
+ ip_reass_pbufcount += clen;
+
+ /* At this point, we have either created a new entry or pointing
+ * to an existing one */
+
+ /* check for 'no more fragments', and update queue entry*/
+ if ((ntohs(IPH_OFFSET(fraghdr)) & IP_MF) == 0) {
+ ipr->flags |= IP_REASS_FLAG_LASTFRAG;
+ ipr->datagram_len = offset + len;
+ LWIP_DEBUGF(IP_REASS_DEBUG,
+ ("ip_reass: last fragment seen, total len %"S16_F"\n",
+ ipr->datagram_len));
+ }
+ /* find the right place to insert this pbuf */
+ /* @todo: trim pbufs if fragments are overlapping */
+ if (ip_reass_chain_frag_into_datagram_and_validate(ipr, p)) {
+ /* the totally last fragment (flag more fragments = 0) was received at least
+ * once AND all fragments are received */
+ ipr->datagram_len += IP_HLEN;
+
+ /* save the second pbuf before copying the header over the pointer */
+ r = ((struct ip_reass_helper*)ipr->p->payload)->next_pbuf;
+
+ /* copy the original ip header back to the first pbuf */
+ fraghdr = (struct ip_hdr*)(ipr->p->payload);
+ SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN);
+ IPH_LEN_SET(fraghdr, htons(ipr->datagram_len));
+ IPH_OFFSET_SET(fraghdr, 0);
+ IPH_CHKSUM_SET(fraghdr, 0);
+ /* @todo: do we need to set calculate the correct checksum? */
+ IPH_CHKSUM_SET(fraghdr, inet_chksum(fraghdr, IP_HLEN));
+
+ p = ipr->p;
+
+ /* chain together the pbufs contained within the reass_data list. */
+ while(r != NULL) {
+ iprh = (struct ip_reass_helper*)r->payload;
+
+ /* hide the ip header for every succeding fragment */
+ pbuf_header(r, -IP_HLEN);
+ pbuf_cat(p, r);
+ r = iprh->next_pbuf;
+ }
+ /* release the sources allocate for the fragment queue entry */
+ ip_reass_dequeue_datagram(ipr, ipr_prev);
+
+ /* and adjust the number of pbufs currently queued for reassembly. */
+ ip_reass_pbufcount -= pbuf_clen(p);
+
+ /* Return the pbuf chain */
+ return p;
+ }
+ /* the datagram is not (yet?) reassembled completely */
+ LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass_pbufcount: %d out\n", ip_reass_pbufcount));
+ return NULL;
+
+nullreturn:
+ LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: nullreturn\n"));
+ IPFRAG_STATS_INC(ip_frag.drop);
+ pbuf_free(p);
+ return NULL;
+}
+#endif /* IP_REASSEMBLY */
+
+#if IP_FRAG
+#if IP_FRAG_USES_STATIC_BUF
+static u8_t buf[LWIP_MEM_ALIGN_SIZE(IP_FRAG_MAX_MTU + MEM_ALIGNMENT - 1)];
+#endif /* IP_FRAG_USES_STATIC_BUF */
+
+/**
+ * Fragment an IP datagram if too large for the netif.
+ *
+ * Chop the datagram in MTU sized chunks and send them in order
+ * by using a fixed size static memory buffer (PBUF_REF) or
+ * point PBUF_REFs into p (depending on IP_FRAG_USES_STATIC_BUF).
+ *
+ * @param p ip packet to send
+ * @param netif the netif on which to send
+ * @param dest destination ip address to which to send
+ *
+ * @return ERR_OK if sent successfully, err_t otherwise
+ */
+err_t
+ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest)
+{
+ struct pbuf *rambuf;
+#if IP_FRAG_USES_STATIC_BUF
+ struct pbuf *header;
+#else
+ struct pbuf *newpbuf;
+ struct ip_hdr *original_iphdr;
+#endif
+ struct ip_hdr *iphdr;
+ u16_t nfb;
+ u16_t left, cop;
+ u16_t mtu = netif->mtu;
+ u16_t ofo, omf;
+ u16_t last;
+ u16_t poff = IP_HLEN;
+ u16_t tmp;
+#if !IP_FRAG_USES_STATIC_BUF
+ u16_t newpbuflen = 0;
+ u16_t left_to_copy;
+#endif
+
+ /* Get a RAM based MTU sized pbuf */
+#if IP_FRAG_USES_STATIC_BUF
+ /* When using a static buffer, we use a PBUF_REF, which we will
+ * use to reference the packet (without link header).
+ * Layer and length is irrelevant.
+ */
+ rambuf = pbuf_alloc(PBUF_LINK, 0, PBUF_REF);
+ if (rambuf == NULL) {
+ LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc(PBUF_LINK, 0, PBUF_REF) failed\n"));
+ return ERR_MEM;
+ }
+ rambuf->tot_len = rambuf->len = mtu;
+ rambuf->payload = LWIP_MEM_ALIGN((void *)buf);
+
+ /* Copy the IP header in it */
+ iphdr = rambuf->payload;
+ SMEMCPY(iphdr, p->payload, IP_HLEN);
+#else /* IP_FRAG_USES_STATIC_BUF */
+ original_iphdr = p->payload;
+ iphdr = original_iphdr;
+#endif /* IP_FRAG_USES_STATIC_BUF */
+
+ /* Save original offset */
+ tmp = ntohs(IPH_OFFSET(iphdr));
+ ofo = tmp & IP_OFFMASK;
+ omf = tmp & IP_MF;
+
+ left = p->tot_len - IP_HLEN;
+
+ nfb = (mtu - IP_HLEN) / 8;
+
+ while (left) {
+ last = (left <= mtu - IP_HLEN);
+
+ /* Set new offset and MF flag */
+ tmp = omf | (IP_OFFMASK & (ofo));
+ if (!last)
+ tmp = tmp | IP_MF;
+
+ /* Fill this fragment */
+ cop = last ? left : nfb * 8;
+
+#if IP_FRAG_USES_STATIC_BUF
+ poff += pbuf_copy_partial(p, (u8_t*)iphdr + IP_HLEN, cop, poff);
+#else /* IP_FRAG_USES_STATIC_BUF */
+ /* When not using a static buffer, create a chain of pbufs.
+ * The first will be a PBUF_RAM holding the link and IP header.
+ * The rest will be PBUF_REFs mirroring the pbuf chain to be fragged,
+ * but limited to the size of an mtu.
+ */
+ rambuf = pbuf_alloc(PBUF_LINK, IP_HLEN, PBUF_RAM);
+ if (rambuf == NULL) {
+ return ERR_MEM;
+ }
+ LWIP_ASSERT("this needs a pbuf in one piece!",
+ (p->len >= (IP_HLEN)));
+ SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN);
+ iphdr = rambuf->payload;
+
+ /* Can just adjust p directly for needed offset. */
+ p->payload = (u8_t *)p->payload + poff;
+ p->len -= poff;
+
+ left_to_copy = cop;
+ while (left_to_copy) {
+ newpbuflen = (left_to_copy < p->len) ? left_to_copy : p->len;
+ /* Is this pbuf already empty? */
+ if (!newpbuflen) {
+ p = p->next;
+ continue;
+ }
+ newpbuf = pbuf_alloc(PBUF_RAW, 0, PBUF_REF);
+ if (newpbuf == NULL) {
+ pbuf_free(rambuf);
+ return ERR_MEM;
+ }
+ /* Mirror this pbuf, although we might not need all of it. */
+ newpbuf->payload = p->payload;
+ newpbuf->len = newpbuf->tot_len = newpbuflen;
+ /* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain
+ * so that it is removed when pbuf_dechain is later called on rambuf.
+ */
+ pbuf_cat(rambuf, newpbuf);
+ left_to_copy -= newpbuflen;
+ if (left_to_copy)
+ p = p->next;
+ }
+ poff = newpbuflen;
+#endif /* IP_FRAG_USES_STATIC_BUF */
+
+ /* Correct header */
+ IPH_OFFSET_SET(iphdr, htons(tmp));
+ IPH_LEN_SET(iphdr, htons(cop + IP_HLEN));
+ IPH_CHKSUM_SET(iphdr, 0);
+ IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN));
+
+#if IP_FRAG_USES_STATIC_BUF
+ if (last)
+ pbuf_realloc(rambuf, left + IP_HLEN);
+
+ /* This part is ugly: we alloc a RAM based pbuf for
+ * the link level header for each chunk and then
+ * free it.A PBUF_ROM style pbuf for which pbuf_header
+ * worked would make things simpler.
+ */
+ header = pbuf_alloc(PBUF_LINK, 0, PBUF_RAM);
+ if (header != NULL) {
+ pbuf_chain(header, rambuf);
+ netif->output(netif, header, dest);
+ IPFRAG_STATS_INC(ip_frag.xmit);
+ snmp_inc_ipfragcreates();
+ pbuf_free(header);
+ } else {
+ LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc() for header failed\n"));
+ pbuf_free(rambuf);
+ return ERR_MEM;
+ }
+#else /* IP_FRAG_USES_STATIC_BUF */
+ /* No need for separate header pbuf - we allowed room for it in rambuf
+ * when allocated.
+ */
+ netif->output(netif, rambuf, dest);
+ IPFRAG_STATS_INC(ip_frag.xmit);
+
+ /* Unfortunately we can't reuse rambuf - the hardware may still be
+ * using the buffer. Instead we free it (and the ensuing chain) and
+ * recreate it next time round the loop. If we're lucky the hardware
+ * will have already sent the packet, the free will really free, and
+ * there will be zero memory penalty.
+ */
+
+ pbuf_free(rambuf);
+#endif /* IP_FRAG_USES_STATIC_BUF */
+ left -= cop;
+ ofo += nfb;
+ }
+#if IP_FRAG_USES_STATIC_BUF
+ pbuf_free(rambuf);
+#endif /* IP_FRAG_USES_STATIC_BUF */
+ snmp_inc_ipfragoks();
+ return ERR_OK;
+}
+#endif /* IP_FRAG */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c
new file mode 100644
index 0000000..ea3f4a6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c
@@ -0,0 +1,635 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Dynamic memory manager
+ *
+ * This is a lightweight replacement for the standard C library malloc().
+ *
+ * If you want to use the standard C library malloc() instead, define
+ * MEM_LIBC_MALLOC to 1 in your lwipopts.h
+ *
+ * To let mem_malloc() use pools (prevents fragmentation and is much faster than
+ * a heap but might waste some memory), define MEM_USE_POOLS to 1, define
+ * MEM_USE_CUSTOM_POOLS to 1 and create a file "lwippools.h" that includes a list
+ * of pools like this (more pools can be added between _START and _END):
+ *
+ * Define three pools with sizes 256, 512, and 1512 bytes
+ * LWIP_MALLOC_MEMPOOL_START
+ * LWIP_MALLOC_MEMPOOL(20, 256)
+ * LWIP_MALLOC_MEMPOOL(10, 512)
+ * LWIP_MALLOC_MEMPOOL(5, 1512)
+ * LWIP_MALLOC_MEMPOOL_END
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ * Simon Goldschmidt
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if !MEM_LIBC_MALLOC /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/def.h"
+#include "lwip/mem.h"
+#include "lwip/sys.h"
+#include "lwip/stats.h"
+
+#include <string.h>
+
+#if MEM_USE_POOLS
+/* lwIP head implemented with different sized pools */
+
+/**
+ * Allocate memory: determine the smallest pool that is big enough
+ * to contain an element of 'size' and get an element from that pool.
+ *
+ * @param size the size in bytes of the memory needed
+ * @return a pointer to the allocated memory or NULL if the pool is empty
+ */
+void *
+mem_malloc(mem_size_t size)
+{
+ struct memp_malloc_helper *element;
+ memp_t poolnr;
+ mem_size_t required_size = size + sizeof(struct memp_malloc_helper);
+
+ for (poolnr = MEMP_POOL_FIRST; poolnr <= MEMP_POOL_LAST; poolnr++) {
+#if MEM_USE_POOLS_TRY_BIGGER_POOL
+again:
+#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */
+ /* is this pool big enough to hold an element of the required size
+ plus a struct memp_malloc_helper that saves the pool this element came from? */
+ if (required_size <= memp_sizes[poolnr]) {
+ break;
+ }
+ }
+ if (poolnr > MEMP_POOL_LAST) {
+ LWIP_ASSERT("mem_malloc(): no pool is that big!", 0);
+ return NULL;
+ }
+ element = (struct memp_malloc_helper*)memp_malloc(poolnr);
+ if (element == NULL) {
+ /* No need to DEBUGF or ASSERT: This error is already
+ taken care of in memp.c */
+#if MEM_USE_POOLS_TRY_BIGGER_POOL
+ /** Try a bigger pool if this one is empty! */
+ if (poolnr < MEMP_POOL_LAST) {
+ poolnr++;
+ goto again;
+ }
+#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */
+ return NULL;
+ }
+
+ /* save the pool number this element came from */
+ element->poolnr = poolnr;
+ /* and return a pointer to the memory directly after the struct memp_malloc_helper */
+ element++;
+
+ return element;
+}
+
+/**
+ * Free memory previously allocated by mem_malloc. Loads the pool number
+ * and calls memp_free with that pool number to put the element back into
+ * its pool
+ *
+ * @param rmem the memory element to free
+ */
+void
+mem_free(void *rmem)
+{
+ struct memp_malloc_helper *hmem = (struct memp_malloc_helper*)rmem;
+
+ LWIP_ASSERT("rmem != NULL", (rmem != NULL));
+ LWIP_ASSERT("rmem == MEM_ALIGN(rmem)", (rmem == LWIP_MEM_ALIGN(rmem)));
+
+ /* get the original struct memp_malloc_helper */
+ hmem--;
+
+ LWIP_ASSERT("hmem != NULL", (hmem != NULL));
+ LWIP_ASSERT("hmem == MEM_ALIGN(hmem)", (hmem == LWIP_MEM_ALIGN(hmem)));
+ LWIP_ASSERT("hmem->poolnr < MEMP_MAX", (hmem->poolnr < MEMP_MAX));
+
+ /* and put it in the pool we saved earlier */
+ memp_free(hmem->poolnr, hmem);
+}
+
+#else /* MEM_USE_POOLS */
+/* lwIP replacement for your libc malloc() */
+
+/**
+ * The heap is made up as a list of structs of this type.
+ * This does not have to be aligned since for getting its size,
+ * we only use the macro SIZEOF_STRUCT_MEM, which automatically alignes.
+ */
+struct mem {
+ /** index (-> ram[next]) of the next struct */
+ mem_size_t next;
+ /** index (-> ram[next]) of the next struct */
+ mem_size_t prev;
+ /** 1: this area is used; 0: this area is unused */
+ u8_t used;
+};
+
+/** All allocated blocks will be MIN_SIZE bytes big, at least!
+ * MIN_SIZE can be overridden to suit your needs. Smaller values save space,
+ * larger values could prevent too small blocks to fragment the RAM too much. */
+#ifndef MIN_SIZE
+#define MIN_SIZE 12
+#endif /* MIN_SIZE */
+/* some alignment macros: we define them here for better source code layout */
+#define MIN_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MIN_SIZE)
+#define SIZEOF_STRUCT_MEM LWIP_MEM_ALIGN_SIZE(sizeof(struct mem))
+#define MEM_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEM_SIZE)
+
+/** the heap. we need one struct mem at the end and some room for alignment */
+static u8_t ram_heap[MEM_SIZE_ALIGNED + (2*SIZEOF_STRUCT_MEM) + MEM_ALIGNMENT];
+/** pointer to the heap (ram_heap): for alignment, ram is now a pointer instead of an array */
+static u8_t *ram;
+/** the last entry, always unused! */
+static struct mem *ram_end;
+/** pointer to the lowest free block, this is used for faster search */
+static struct mem *lfree;
+
+/** concurrent access protection */
+static sys_sem_t mem_sem;
+
+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+
+static volatile u8_t mem_free_count;
+
+/* Allow mem_free from other (e.g. interrupt) context */
+#define LWIP_MEM_FREE_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_free)
+#define LWIP_MEM_FREE_PROTECT() SYS_ARCH_PROTECT(lev_free)
+#define LWIP_MEM_FREE_UNPROTECT() SYS_ARCH_UNPROTECT(lev_free)
+#define LWIP_MEM_ALLOC_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_alloc)
+#define LWIP_MEM_ALLOC_PROTECT() SYS_ARCH_PROTECT(lev_alloc)
+#define LWIP_MEM_ALLOC_UNPROTECT() SYS_ARCH_UNPROTECT(lev_alloc)
+
+#else /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+
+/* Protect the heap only by using a semaphore */
+#define LWIP_MEM_FREE_DECL_PROTECT()
+#define LWIP_MEM_FREE_PROTECT() sys_arch_sem_wait(mem_sem, 0)
+#define LWIP_MEM_FREE_UNPROTECT() sys_sem_signal(mem_sem)
+/* mem_malloc is protected using semaphore AND LWIP_MEM_ALLOC_PROTECT */
+#define LWIP_MEM_ALLOC_DECL_PROTECT()
+#define LWIP_MEM_ALLOC_PROTECT()
+#define LWIP_MEM_ALLOC_UNPROTECT()
+
+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+
+
+/**
+ * "Plug holes" by combining adjacent empty struct mems.
+ * After this function is through, there should not exist
+ * one empty struct mem pointing to another empty struct mem.
+ *
+ * @param mem this points to a struct mem which just has been freed
+ * @internal this function is only called by mem_free() and mem_realloc()
+ *
+ * This assumes access to the heap is protected by the calling function
+ * already.
+ */
+static void
+plug_holes(struct mem *mem)
+{
+ struct mem *nmem;
+ struct mem *pmem;
+
+ LWIP_ASSERT("plug_holes: mem >= ram", (u8_t *)mem >= ram);
+ LWIP_ASSERT("plug_holes: mem < ram_end", (u8_t *)mem < (u8_t *)ram_end);
+ LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0);
+
+ /* plug hole forward */
+ LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED);
+
+ nmem = (struct mem *)&ram[mem->next];
+ if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) {
+ /* if mem->next is unused and not end of ram, combine mem and mem->next */
+ if (lfree == nmem) {
+ lfree = mem;
+ }
+ mem->next = nmem->next;
+ ((struct mem *)&ram[nmem->next])->prev = (u8_t *)mem - ram;
+ }
+
+ /* plug hole backward */
+ pmem = (struct mem *)&ram[mem->prev];
+ if (pmem != mem && pmem->used == 0) {
+ /* if mem->prev is unused, combine mem and mem->prev */
+ if (lfree == mem) {
+ lfree = pmem;
+ }
+ pmem->next = mem->next;
+ ((struct mem *)&ram[mem->next])->prev = (u8_t *)pmem - ram;
+ }
+}
+
+/**
+ * Zero the heap and initialize start, end and lowest-free
+ */
+void
+mem_init(void)
+{
+ struct mem *mem;
+
+ LWIP_ASSERT("Sanity check alignment",
+ (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT-1)) == 0);
+
+ /* align the heap */
+ ram = LWIP_MEM_ALIGN(ram_heap);
+ /* initialize the start of the heap */
+ mem = (struct mem *)ram;
+ mem->next = MEM_SIZE_ALIGNED;
+ mem->prev = 0;
+ mem->used = 0;
+ /* initialize the end of the heap */
+ ram_end = (struct mem *)&ram[MEM_SIZE_ALIGNED];
+ ram_end->used = 1;
+ ram_end->next = MEM_SIZE_ALIGNED;
+ ram_end->prev = MEM_SIZE_ALIGNED;
+
+ mem_sem = sys_sem_new(1);
+
+ /* initialize the lowest-free pointer to the start of the heap */
+ lfree = (struct mem *)ram;
+
+ MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED);
+}
+
+/**
+ * Put a struct mem back on the heap
+ *
+ * @param rmem is the data portion of a struct mem as returned by a previous
+ * call to mem_malloc()
+ */
+void
+mem_free(void *rmem)
+{
+ struct mem *mem;
+ LWIP_MEM_FREE_DECL_PROTECT();
+
+ if (rmem == NULL) {
+ LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("mem_free(p == NULL) was called.\n"));
+ return;
+ }
+ LWIP_ASSERT("mem_free: sanity check alignment", (((mem_ptr_t)rmem) & (MEM_ALIGNMENT-1)) == 0);
+
+ LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram &&
+ (u8_t *)rmem < (u8_t *)ram_end);
+
+ if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) {
+ SYS_ARCH_DECL_PROTECT(lev);
+ LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n"));
+ /* protect mem stats from concurrent access */
+ SYS_ARCH_PROTECT(lev);
+ MEM_STATS_INC(illegal);
+ SYS_ARCH_UNPROTECT(lev);
+ return;
+ }
+ /* protect the heap from concurrent access */
+ LWIP_MEM_FREE_PROTECT();
+ /* Get the corresponding struct mem ... */
+ mem = (struct mem *)((u8_t *)rmem - SIZEOF_STRUCT_MEM);
+ /* ... which has to be in a used state ... */
+ LWIP_ASSERT("mem_free: mem->used", mem->used);
+ /* ... and is now unused. */
+ mem->used = 0;
+
+ if (mem < lfree) {
+ /* the newly freed struct is now the lowest */
+ lfree = mem;
+ }
+
+ MEM_STATS_DEC_USED(used, mem->next - ((u8_t *)mem - ram));
+
+ /* finally, see if prev or next are free also */
+ plug_holes(mem);
+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+ mem_free_count = 1;
+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+ LWIP_MEM_FREE_UNPROTECT();
+}
+
+/**
+ * In contrast to its name, mem_realloc can only shrink memory, not expand it.
+ * Since the only use (for now) is in pbuf_realloc (which also can only shrink),
+ * this shouldn't be a problem!
+ *
+ * @param rmem pointer to memory allocated by mem_malloc the is to be shrinked
+ * @param newsize required size after shrinking (needs to be smaller than or
+ * equal to the previous size)
+ * @return for compatibility reasons: is always == rmem, at the moment
+ * or NULL if newsize is > old size, in which case rmem is NOT touched
+ * or freed!
+ */
+void *
+mem_realloc(void *rmem, mem_size_t newsize)
+{
+ mem_size_t size;
+ mem_size_t ptr, ptr2;
+ struct mem *mem, *mem2;
+ /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */
+ LWIP_MEM_FREE_DECL_PROTECT();
+
+ /* Expand the size of the allocated memory region so that we can
+ adjust for alignment. */
+ newsize = LWIP_MEM_ALIGN_SIZE(newsize);
+
+ if(newsize < MIN_SIZE_ALIGNED) {
+ /* every data block must be at least MIN_SIZE_ALIGNED long */
+ newsize = MIN_SIZE_ALIGNED;
+ }
+
+ if (newsize > MEM_SIZE_ALIGNED) {
+ return NULL;
+ }
+
+ LWIP_ASSERT("mem_realloc: legal memory", (u8_t *)rmem >= (u8_t *)ram &&
+ (u8_t *)rmem < (u8_t *)ram_end);
+
+ if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) {
+ SYS_ARCH_DECL_PROTECT(lev);
+ LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_realloc: illegal memory\n"));
+ /* protect mem stats from concurrent access */
+ SYS_ARCH_PROTECT(lev);
+ MEM_STATS_INC(illegal);
+ SYS_ARCH_UNPROTECT(lev);
+ return rmem;
+ }
+ /* Get the corresponding struct mem ... */
+ mem = (struct mem *)((u8_t *)rmem - SIZEOF_STRUCT_MEM);
+ /* ... and its offset pointer */
+ ptr = (u8_t *)mem - ram;
+
+ size = mem->next - ptr - SIZEOF_STRUCT_MEM;
+ LWIP_ASSERT("mem_realloc can only shrink memory", newsize <= size);
+ if (newsize > size) {
+ /* not supported */
+ return NULL;
+ }
+ if (newsize == size) {
+ /* No change in size, simply return */
+ return rmem;
+ }
+
+ /* protect the heap from concurrent access */
+ LWIP_MEM_FREE_PROTECT();
+
+ MEM_STATS_DEC_USED(used, (size - newsize));
+
+ mem2 = (struct mem *)&ram[mem->next];
+ if(mem2->used == 0) {
+ /* The next struct is unused, we can simply move it at little */
+ mem_size_t next;
+ /* remember the old next pointer */
+ next = mem2->next;
+ /* create new struct mem which is moved directly after the shrinked mem */
+ ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize;
+ if (lfree == mem2) {
+ lfree = (struct mem *)&ram[ptr2];
+ }
+ mem2 = (struct mem *)&ram[ptr2];
+ mem2->used = 0;
+ /* restore the next pointer */
+ mem2->next = next;
+ /* link it back to mem */
+ mem2->prev = ptr;
+ /* link mem to it */
+ mem->next = ptr2;
+ /* last thing to restore linked list: as we have moved mem2,
+ * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not
+ * the end of the heap */
+ if (mem2->next != MEM_SIZE_ALIGNED) {
+ ((struct mem *)&ram[mem2->next])->prev = ptr2;
+ }
+ /* no need to plug holes, we've already done that */
+ } else if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED <= size) {
+ /* Next struct is used but there's room for another struct mem with
+ * at least MIN_SIZE_ALIGNED of data.
+ * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem
+ * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED').
+ * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty
+ * region that couldn't hold data, but when mem->next gets freed,
+ * the 2 regions would be combined, resulting in more free memory */
+ ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize;
+ mem2 = (struct mem *)&ram[ptr2];
+ if (mem2 < lfree) {
+ lfree = mem2;
+ }
+ mem2->used = 0;
+ mem2->next = mem->next;
+ mem2->prev = ptr;
+ mem->next = ptr2;
+ if (mem2->next != MEM_SIZE_ALIGNED) {
+ ((struct mem *)&ram[mem2->next])->prev = ptr2;
+ }
+ /* the original mem->next is used, so no need to plug holes! */
+ }
+ /* else {
+ next struct mem is used but size between mem and mem2 is not big enough
+ to create another struct mem
+ -> don't do anyhting.
+ -> the remaining space stays unused since it is too small
+ } */
+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+ mem_free_count = 1;
+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+ LWIP_MEM_FREE_UNPROTECT();
+ return rmem;
+}
+
+/**
+ * Adam's mem_malloc() plus solution for bug #17922
+ * Allocate a block of memory with a minimum of 'size' bytes.
+ *
+ * @param size is the minimum size of the requested block in bytes.
+ * @return pointer to allocated memory or NULL if no free memory was found.
+ *
+ * Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT).
+ */
+void *
+mem_malloc(mem_size_t size)
+{
+ mem_size_t ptr, ptr2;
+ struct mem *mem, *mem2;
+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+ u8_t local_mem_free_count = 0;
+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+ LWIP_MEM_ALLOC_DECL_PROTECT();
+
+ if (size == 0) {
+ return NULL;
+ }
+
+ /* Expand the size of the allocated memory region so that we can
+ adjust for alignment. */
+ size = LWIP_MEM_ALIGN_SIZE(size);
+
+ if(size < MIN_SIZE_ALIGNED) {
+ /* every data block must be at least MIN_SIZE_ALIGNED long */
+ size = MIN_SIZE_ALIGNED;
+ }
+
+ if (size > MEM_SIZE_ALIGNED) {
+ return NULL;
+ }
+
+ /* protect the heap from concurrent access */
+ sys_arch_sem_wait(mem_sem, 0);
+ LWIP_MEM_ALLOC_PROTECT();
+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+ /* run as long as a mem_free disturbed mem_malloc */
+ do {
+ local_mem_free_count = 0;
+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+
+ /* Scan through the heap searching for a free block that is big enough,
+ * beginning with the lowest free block.
+ */
+ for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE_ALIGNED - size;
+ ptr = ((struct mem *)&ram[ptr])->next) {
+ mem = (struct mem *)&ram[ptr];
+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+ mem_free_count = 0;
+ LWIP_MEM_ALLOC_UNPROTECT();
+ /* allow mem_free to run */
+ LWIP_MEM_ALLOC_PROTECT();
+ if (mem_free_count != 0) {
+ local_mem_free_count = mem_free_count;
+ }
+ mem_free_count = 0;
+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+
+ if ((!mem->used) &&
+ (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) {
+ /* mem is not used and at least perfect fit is possible:
+ * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */
+
+ if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) {
+ /* (in addition to the above, we test if another struct mem (SIZEOF_STRUCT_MEM) containing
+ * at least MIN_SIZE_ALIGNED of data also fits in the 'user data space' of 'mem')
+ * -> split large block, create empty remainder,
+ * remainder must be large enough to contain MIN_SIZE_ALIGNED data: if
+ * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size,
+ * struct mem would fit in but no data between mem2 and mem2->next
+ * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty
+ * region that couldn't hold data, but when mem->next gets freed,
+ * the 2 regions would be combined, resulting in more free memory
+ */
+ ptr2 = ptr + SIZEOF_STRUCT_MEM + size;
+ /* create mem2 struct */
+ mem2 = (struct mem *)&ram[ptr2];
+ mem2->used = 0;
+ mem2->next = mem->next;
+ mem2->prev = ptr;
+ /* and insert it between mem and mem->next */
+ mem->next = ptr2;
+ mem->used = 1;
+
+ if (mem2->next != MEM_SIZE_ALIGNED) {
+ ((struct mem *)&ram[mem2->next])->prev = ptr2;
+ }
+ MEM_STATS_INC_USED(used, (size + SIZEOF_STRUCT_MEM));
+ } else {
+ /* (a mem2 struct does no fit into the user data space of mem and mem->next will always
+ * be used at this point: if not we have 2 unused structs in a row, plug_holes should have
+ * take care of this).
+ * -> near fit or excact fit: do not split, no mem2 creation
+ * also can't move mem->next directly behind mem, since mem->next
+ * will always be used at this point!
+ */
+ mem->used = 1;
+ MEM_STATS_INC_USED(used, mem->next - ((u8_t *)mem - ram));
+ }
+
+ if (mem == lfree) {
+ /* Find next free block after mem and update lowest free pointer */
+ while (lfree->used && lfree != ram_end) {
+ LWIP_MEM_ALLOC_UNPROTECT();
+ /* prevent high interrupt latency... */
+ LWIP_MEM_ALLOC_PROTECT();
+ lfree = (struct mem *)&ram[lfree->next];
+ }
+ LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used)));
+ }
+ LWIP_MEM_ALLOC_UNPROTECT();
+ sys_sem_signal(mem_sem);
+ LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.",
+ (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end);
+ LWIP_ASSERT("mem_malloc: allocated memory properly aligned.",
+ ((mem_ptr_t)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0);
+ LWIP_ASSERT("mem_malloc: sanity check alignment",
+ (((mem_ptr_t)mem) & (MEM_ALIGNMENT-1)) == 0);
+
+ return (u8_t *)mem + SIZEOF_STRUCT_MEM;
+ }
+ }
+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+ /* if we got interrupted by a mem_free, try again */
+ } while(local_mem_free_count != 0);
+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
+ LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size));
+ MEM_STATS_INC(err);
+ LWIP_MEM_ALLOC_UNPROTECT();
+ sys_sem_signal(mem_sem);
+ return NULL;
+}
+
+#endif /* MEM_USE_POOLS */
+/**
+ * Contiguously allocates enough space for count objects that are size bytes
+ * of memory each and returns a pointer to the allocated memory.
+ *
+ * The allocated memory is filled with bytes of value zero.
+ *
+ * @param count number of objects to allocate
+ * @param size size of the objects to allocate
+ * @return pointer to allocated memory / NULL pointer if there is an error
+ */
+void *mem_calloc(mem_size_t count, mem_size_t size)
+{
+ void *p;
+
+ /* allocate 'count' objects of size 'size' */
+ p = mem_malloc(count * size);
+ if (p) {
+ /* zero the memory */
+ memset(p, 0, count * size);
+ }
+ return p;
+}
+
+#endif /* !MEM_LIBC_MALLOC */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c
new file mode 100644
index 0000000..bd2fd26
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c
@@ -0,0 +1,388 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Dynamic pool memory manager
+ *
+ * lwIP has dedicated pools for many structures (netconn, protocol control blocks,
+ * packet buffers, ...). All these pools are managed here.
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#include "lwip/memp.h"
+#include "lwip/pbuf.h"
+#include "lwip/udp.h"
+#include "lwip/raw.h"
+#include "lwip/tcp.h"
+#include "lwip/igmp.h"
+#include "lwip/api.h"
+#include "lwip/api_msg.h"
+#include "lwip/tcpip.h"
+#include "lwip/sys.h"
+#include "lwip/stats.h"
+#include "netif/etharp.h"
+#include "lwip/ip_frag.h"
+
+#include <string.h>
+
+#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */
+
+struct memp {
+ struct memp *next;
+#if MEMP_OVERFLOW_CHECK
+ const char *file;
+ int line;
+#endif /* MEMP_OVERFLOW_CHECK */
+};
+
+#if MEMP_OVERFLOW_CHECK
+/* if MEMP_OVERFLOW_CHECK is turned on, we reserve some bytes at the beginning
+ * and at the end of each element, initialize them as 0xcd and check
+ * them later. */
+/* If MEMP_OVERFLOW_CHECK is >= 2, on every call to memp_malloc or memp_free,
+ * every single element in each pool is checked!
+ * This is VERY SLOW but also very helpful. */
+/* MEMP_SANITY_REGION_BEFORE and MEMP_SANITY_REGION_AFTER can be overridden in
+ * lwipopts.h to change the amount reserved for checking. */
+#ifndef MEMP_SANITY_REGION_BEFORE
+#define MEMP_SANITY_REGION_BEFORE 16
+#endif /* MEMP_SANITY_REGION_BEFORE*/
+#if MEMP_SANITY_REGION_BEFORE > 0
+#define MEMP_SANITY_REGION_BEFORE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_BEFORE)
+#else
+#define MEMP_SANITY_REGION_BEFORE_ALIGNED 0
+#endif /* MEMP_SANITY_REGION_BEFORE*/
+#ifndef MEMP_SANITY_REGION_AFTER
+#define MEMP_SANITY_REGION_AFTER 16
+#endif /* MEMP_SANITY_REGION_AFTER*/
+#if MEMP_SANITY_REGION_AFTER > 0
+#define MEMP_SANITY_REGION_AFTER_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_AFTER)
+#else
+#define MEMP_SANITY_REGION_AFTER_ALIGNED 0
+#endif /* MEMP_SANITY_REGION_AFTER*/
+
+/* MEMP_SIZE: save space for struct memp and for sanity check */
+#define MEMP_SIZE (LWIP_MEM_ALIGN_SIZE(sizeof(struct memp)) + MEMP_SANITY_REGION_BEFORE_ALIGNED)
+#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x) + MEMP_SANITY_REGION_AFTER_ALIGNED)
+
+#else /* MEMP_OVERFLOW_CHECK */
+
+/* No sanity checks
+ * We don't need to preserve the struct memp while not allocated, so we
+ * can save a little space and set MEMP_SIZE to 0.
+ */
+#define MEMP_SIZE 0
+#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x))
+
+#endif /* MEMP_OVERFLOW_CHECK */
+
+/** This array holds the first free element of each pool.
+ * Elements form a linked list. */
+static struct memp *memp_tab[MEMP_MAX];
+
+#else /* MEMP_MEM_MALLOC */
+
+#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x))
+
+#endif /* MEMP_MEM_MALLOC */
+
+/** This array holds the element sizes of each pool. */
+#if !MEM_USE_POOLS && !MEMP_MEM_MALLOC
+static
+#endif
+const u16_t memp_sizes[MEMP_MAX] = {
+#define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEM_ALIGN_SIZE(size),
+#include "lwip/memp_std.h"
+};
+
+#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */
+
+/** This array holds the number of elements in each pool. */
+static const u16_t memp_num[MEMP_MAX] = {
+#define LWIP_MEMPOOL(name,num,size,desc) (num),
+#include "lwip/memp_std.h"
+};
+
+/** This array holds a textual description of each pool. */
+#ifdef LWIP_DEBUG
+static const char *memp_desc[MEMP_MAX] = {
+#define LWIP_MEMPOOL(name,num,size,desc) (desc),
+#include "lwip/memp_std.h"
+};
+#endif /* LWIP_DEBUG */
+
+/** This is the actual memory used by the pools. */
+static u8_t memp_memory[MEM_ALIGNMENT - 1
+#define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) )
+#include "lwip/memp_std.h"
+];
+
+#if MEMP_SANITY_CHECK
+/**
+ * Check that memp-lists don't form a circle
+ */
+static int
+memp_sanity(void)
+{
+ s16_t i, c;
+ struct memp *m, *n;
+
+ for (i = 0; i < MEMP_MAX; i++) {
+ for (m = memp_tab[i]; m != NULL; m = m->next) {
+ c = 1;
+ for (n = memp_tab[i]; n != NULL; n = n->next) {
+ if (n == m && --c < 0) {
+ return 0;
+ }
+ }
+ }
+ }
+ return 1;
+}
+#endif /* MEMP_SANITY_CHECK*/
+#if MEMP_OVERFLOW_CHECK
+/**
+ * Check if a memp element was victim of an overflow
+ * (e.g. the restricted area after it has been altered)
+ *
+ * @param p the memp element to check
+ * @param memp_size the element size of the pool p comes from
+ */
+static void
+memp_overflow_check_element(struct memp *p, u16_t memp_size)
+{
+ u16_t k;
+ u8_t *m;
+#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0
+ m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED;
+ for (k = 0; k < MEMP_SANITY_REGION_BEFORE_ALIGNED; k++) {
+ if (m[k] != 0xcd) {
+ LWIP_ASSERT("detected memp underflow!", 0);
+ }
+ }
+#endif
+#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0
+ m = (u8_t*)p + MEMP_SIZE + memp_size;
+ for (k = 0; k < MEMP_SANITY_REGION_AFTER_ALIGNED; k++) {
+ if (m[k] != 0xcd) {
+ LWIP_ASSERT("detected memp overflow!", 0);
+ }
+ }
+#endif
+}
+
+/**
+ * Do an overflow check for all elements in every pool.
+ *
+ * @see memp_overflow_check_element for a description of the check
+ */
+static void
+memp_overflow_check_all(void)
+{
+ u16_t i, j;
+ struct memp *p;
+
+ p = LWIP_MEM_ALIGN(memp_memory);
+ for (i = 0; i < MEMP_MAX; ++i) {
+ p = p;
+ for (j = 0; j < memp_num[i]; ++j) {
+ memp_overflow_check_element(p, memp_sizes[i]);
+ p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED);
+ }
+ }
+}
+
+/**
+ * Initialize the restricted areas of all memp elements in every pool.
+ */
+static void
+memp_overflow_init(void)
+{
+ u16_t i, j;
+ struct memp *p;
+ u8_t *m;
+
+ p = LWIP_MEM_ALIGN(memp_memory);
+ for (i = 0; i < MEMP_MAX; ++i) {
+ p = p;
+ for (j = 0; j < memp_num[i]; ++j) {
+#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0
+ m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED;
+ memset(m, 0xcd, MEMP_SANITY_REGION_BEFORE_ALIGNED);
+#endif
+#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0
+ m = (u8_t*)p + MEMP_SIZE + memp_sizes[i];
+ memset(m, 0xcd, MEMP_SANITY_REGION_AFTER_ALIGNED);
+#endif
+ p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED);
+ }
+ }
+}
+#endif /* MEMP_OVERFLOW_CHECK */
+
+/**
+ * Initialize this module.
+ *
+ * Carves out memp_memory into linked lists for each pool-type.
+ */
+void
+memp_init(void)
+{
+ struct memp *memp;
+ u16_t i, j;
+
+ for (i = 0; i < MEMP_MAX; ++i) {
+ MEMP_STATS_AVAIL(used, i, 0);
+ MEMP_STATS_AVAIL(max, i, 0);
+ MEMP_STATS_AVAIL(err, i, 0);
+ MEMP_STATS_AVAIL(avail, i, memp_num[i]);
+ }
+
+ memp = LWIP_MEM_ALIGN(memp_memory);
+ /* for every pool: */
+ for (i = 0; i < MEMP_MAX; ++i) {
+ memp_tab[i] = NULL;
+ /* create a linked list of memp elements */
+ for (j = 0; j < memp_num[i]; ++j) {
+ memp->next = memp_tab[i];
+ memp_tab[i] = memp;
+ memp = (struct memp *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i]
+#if MEMP_OVERFLOW_CHECK
+ + MEMP_SANITY_REGION_AFTER_ALIGNED
+#endif
+ );
+ }
+ }
+#if MEMP_OVERFLOW_CHECK
+ memp_overflow_init();
+ /* check everything a first time to see if it worked */
+ memp_overflow_check_all();
+#endif /* MEMP_OVERFLOW_CHECK */
+}
+
+/**
+ * Get an element from a specific pool.
+ *
+ * @param type the pool to get an element from
+ *
+ * the debug version has two more parameters:
+ * @param file file name calling this function
+ * @param line number of line where this function is called
+ *
+ * @return a pointer to the allocated memory or a NULL pointer on error
+ */
+void *
+#if !MEMP_OVERFLOW_CHECK
+memp_malloc(memp_t type)
+#else
+memp_malloc_fn(memp_t type, const char* file, const int line)
+#endif
+{
+ struct memp *memp;
+ SYS_ARCH_DECL_PROTECT(old_level);
+
+ LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;);
+
+ SYS_ARCH_PROTECT(old_level);
+#if MEMP_OVERFLOW_CHECK >= 2
+ memp_overflow_check_all();
+#endif /* MEMP_OVERFLOW_CHECK >= 2 */
+
+ memp = memp_tab[type];
+
+ if (memp != NULL) {
+ memp_tab[type] = memp->next;
+#if MEMP_OVERFLOW_CHECK
+ memp->next = NULL;
+ memp->file = file;
+ memp->line = line;
+#endif /* MEMP_OVERFLOW_CHECK */
+ MEMP_STATS_INC_USED(used, type);
+ LWIP_ASSERT("memp_malloc: memp properly aligned",
+ ((mem_ptr_t)memp % MEM_ALIGNMENT) == 0);
+ memp = (struct memp*)((u8_t*)memp + MEMP_SIZE);
+ } else {
+ LWIP_DEBUGF(MEMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("memp_malloc: out of memory in pool %s\n", memp_desc[type]));
+ MEMP_STATS_INC(err, type);
+ }
+
+ SYS_ARCH_UNPROTECT(old_level);
+
+ return memp;
+}
+
+/**
+ * Put an element back into its pool.
+ *
+ * @param type the pool where to put mem
+ * @param mem the memp element to free
+ */
+void
+memp_free(memp_t type, void *mem)
+{
+ struct memp *memp;
+ SYS_ARCH_DECL_PROTECT(old_level);
+
+ if (mem == NULL) {
+ return;
+ }
+ LWIP_ASSERT("memp_free: mem properly aligned",
+ ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0);
+
+ memp = (struct memp *)((u8_t*)mem - MEMP_SIZE);
+
+ SYS_ARCH_PROTECT(old_level);
+#if MEMP_OVERFLOW_CHECK
+#if MEMP_OVERFLOW_CHECK >= 2
+ memp_overflow_check_all();
+#else
+ memp_overflow_check_element(memp, memp_sizes[type]);
+#endif /* MEMP_OVERFLOW_CHECK >= 2 */
+#endif /* MEMP_OVERFLOW_CHECK */
+
+ MEMP_STATS_DEC(used, type);
+
+ memp->next = memp_tab[type];
+ memp_tab[type] = memp;
+
+#if MEMP_SANITY_CHECK
+ LWIP_ASSERT("memp sanity", memp_sanity());
+#endif /* MEMP_SANITY_CHECK */
+
+ SYS_ARCH_UNPROTECT(old_level);
+}
+
+#endif /* MEMP_MEM_MALLOC */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c
new file mode 100644
index 0000000..cf3815c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c
@@ -0,0 +1,683 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * lwIP network interface abstraction
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#include "lwip/def.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/tcp.h"
+#include "lwip/snmp.h"
+#include "lwip/igmp.h"
+#include "netif/etharp.h"
+#if ENABLE_LOOPBACK
+#include "lwip/sys.h"
+#if LWIP_NETIF_LOOPBACK_MULTITHREADING
+#include "lwip/tcpip.h"
+#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */
+#endif /* ENABLE_LOOPBACK */
+
+#if LWIP_AUTOIP
+#include "lwip/autoip.h"
+#endif /* LWIP_AUTOIP */
+#if LWIP_DHCP
+#include "lwip/dhcp.h"
+#endif /* LWIP_DHCP */
+
+#if LWIP_NETIF_STATUS_CALLBACK
+#define NETIF_STATUS_CALLBACK(n) { if (n->status_callback) (n->status_callback)(n); }
+#else
+#define NETIF_STATUS_CALLBACK(n) { /* NOP */ }
+#endif /* LWIP_NETIF_STATUS_CALLBACK */
+
+#if LWIP_NETIF_LINK_CALLBACK
+#define NETIF_LINK_CALLBACK(n) { if (n->link_callback) (n->link_callback)(n); }
+#else
+#define NETIF_LINK_CALLBACK(n) { /* NOP */ }
+#endif /* LWIP_NETIF_LINK_CALLBACK */
+
+struct netif *netif_list;
+struct netif *netif_default;
+
+/**
+ * Add a network interface to the list of lwIP netifs.
+ *
+ * @param netif a pre-allocated netif structure
+ * @param ipaddr IP address for the new netif
+ * @param netmask network mask for the new netif
+ * @param gw default gateway IP address for the new netif
+ * @param state opaque data passed to the new netif
+ * @param init callback function that initializes the interface
+ * @param input callback function that is called to pass
+ * ingress packets up in the protocol layer stack.
+ *
+ * @return netif, or NULL if failed.
+ */
+struct netif *
+netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask,
+ struct ip_addr *gw,
+ void *state,
+ err_t (* init)(struct netif *netif),
+ err_t (* input)(struct pbuf *p, struct netif *netif))
+{
+ static u8_t netifnum = 0;
+
+ /* reset new interface configuration state */
+ netif->ip_addr.addr = 0;
+ netif->netmask.addr = 0;
+ netif->gw.addr = 0;
+ netif->flags = 0;
+#if LWIP_DHCP
+ /* netif not under DHCP control by default */
+ netif->dhcp = NULL;
+#endif /* LWIP_DHCP */
+#if LWIP_AUTOIP
+ /* netif not under AutoIP control by default */
+ netif->autoip = NULL;
+#endif /* LWIP_AUTOIP */
+#if LWIP_NETIF_STATUS_CALLBACK
+ netif->status_callback = NULL;
+#endif /* LWIP_NETIF_STATUS_CALLBACK */
+#if LWIP_NETIF_LINK_CALLBACK
+ netif->link_callback = NULL;
+#endif /* LWIP_NETIF_LINK_CALLBACK */
+#if LWIP_IGMP
+ netif->igmp_mac_filter = NULL;
+#endif /* LWIP_IGMP */
+#if ENABLE_LOOPBACK
+ netif->loop_first = NULL;
+ netif->loop_last = NULL;
+#endif /* ENABLE_LOOPBACK */
+
+ /* remember netif specific state information data */
+ netif->state = state;
+ netif->num = netifnum++;
+ netif->input = input;
+#if LWIP_NETIF_HWADDRHINT
+ netif->addr_hint = NULL;
+#endif /* LWIP_NETIF_HWADDRHINT*/
+#if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS
+ netif->loop_cnt_current = 0;
+#endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */
+
+ netif_set_addr(netif, ipaddr, netmask, gw);
+
+ /* call user specified initialization function for netif */
+ if (init(netif) != ERR_OK) {
+ return NULL;
+ }
+
+ /* add this netif to the list */
+ netif->next = netif_list;
+ netif_list = netif;
+ snmp_inc_iflist();
+
+#if LWIP_IGMP
+ /* start IGMP processing */
+ if (netif->flags & NETIF_FLAG_IGMP) {
+ igmp_start( netif);
+ }
+#endif /* LWIP_IGMP */
+
+ LWIP_DEBUGF(NETIF_DEBUG, ("netif: added interface %c%c IP addr ",
+ netif->name[0], netif->name[1]));
+ ip_addr_debug_print(NETIF_DEBUG, ipaddr);
+ LWIP_DEBUGF(NETIF_DEBUG, (" netmask "));
+ ip_addr_debug_print(NETIF_DEBUG, netmask);
+ LWIP_DEBUGF(NETIF_DEBUG, (" gw "));
+ ip_addr_debug_print(NETIF_DEBUG, gw);
+ LWIP_DEBUGF(NETIF_DEBUG, ("\n"));
+ return netif;
+}
+
+/**
+ * Change IP address configuration for a network interface (including netmask
+ * and default gateway).
+ *
+ * @param netif the network interface to change
+ * @param ipaddr the new IP address
+ * @param netmask the new netmask
+ * @param gw the new default gateway
+ */
+void
+netif_set_addr(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask,
+ struct ip_addr *gw)
+{
+ netif_set_ipaddr(netif, ipaddr);
+ netif_set_netmask(netif, netmask);
+ netif_set_gw(netif, gw);
+}
+
+/**
+ * Remove a network interface from the list of lwIP netifs.
+ *
+ * @param netif the network interface to remove
+ */
+void netif_remove(struct netif * netif)
+{
+ if ( netif == NULL ) return;
+
+#if LWIP_IGMP
+ /* stop IGMP processing */
+ if (netif->flags & NETIF_FLAG_IGMP) {
+ igmp_stop( netif);
+ }
+#endif /* LWIP_IGMP */
+
+ snmp_delete_ipaddridx_tree(netif);
+
+ /* is it the first netif? */
+ if (netif_list == netif) {
+ netif_list = netif->next;
+ snmp_dec_iflist();
+ }
+ else {
+ /* look for netif further down the list */
+ struct netif * tmpNetif;
+ for (tmpNetif = netif_list; tmpNetif != NULL; tmpNetif = tmpNetif->next) {
+ if (tmpNetif->next == netif) {
+ tmpNetif->next = netif->next;
+ snmp_dec_iflist();
+ break;
+ }
+ }
+ if (tmpNetif == NULL)
+ return; /* we didn't find any netif today */
+ }
+ /* this netif is default? */
+ if (netif_default == netif)
+ /* reset default netif */
+ netif_set_default(NULL);
+ LWIP_DEBUGF( NETIF_DEBUG, ("netif_remove: removed netif\n") );
+}
+
+/**
+ * Find a network interface by searching for its name
+ *
+ * @param name the name of the netif (like netif->name) plus concatenated number
+ * in ascii representation (e.g. 'en0')
+ */
+struct netif *
+netif_find(char *name)
+{
+ struct netif *netif;
+ u8_t num;
+
+ if (name == NULL) {
+ return NULL;
+ }
+
+ num = name[2] - '0';
+
+ for(netif = netif_list; netif != NULL; netif = netif->next) {
+ if (num == netif->num &&
+ name[0] == netif->name[0] &&
+ name[1] == netif->name[1]) {
+ LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: found %c%c\n", name[0], name[1]));
+ return netif;
+ }
+ }
+ LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: didn't find %c%c\n", name[0], name[1]));
+ return NULL;
+}
+
+/**
+ * Change the IP address of a network interface
+ *
+ * @param netif the network interface to change
+ * @param ipaddr the new IP address
+ *
+ * @note call netif_set_addr() if you also want to change netmask and
+ * default gateway
+ */
+void
+netif_set_ipaddr(struct netif *netif, struct ip_addr *ipaddr)
+{
+ /* TODO: Handling of obsolete pcbs */
+ /* See: http://mail.gnu.org/archive/html/lwip-users/2003-03/msg00118.html */
+#if LWIP_TCP
+ struct tcp_pcb *pcb;
+ struct tcp_pcb_listen *lpcb;
+
+ /* address is actually being changed? */
+ if ((ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0)
+ {
+ /* extern struct tcp_pcb *tcp_active_pcbs; defined by tcp.h */
+ LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n"));
+ pcb = tcp_active_pcbs;
+ while (pcb != NULL) {
+ /* PCB bound to current local interface address? */
+ if (ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))) {
+ /* this connection must be aborted */
+ struct tcp_pcb *next = pcb->next;
+ LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb));
+ tcp_abort(pcb);
+ pcb = next;
+ } else {
+ pcb = pcb->next;
+ }
+ }
+ for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
+ /* PCB bound to current local interface address? */
+ if ((!(ip_addr_isany(&(lpcb->local_ip)))) &&
+ (ip_addr_cmp(&(lpcb->local_ip), &(netif->ip_addr)))) {
+ /* The PCB is listening to the old ipaddr and
+ * is set to listen to the new one instead */
+ ip_addr_set(&(lpcb->local_ip), ipaddr);
+ }
+ }
+ }
+#endif
+ snmp_delete_ipaddridx_tree(netif);
+ snmp_delete_iprteidx_tree(0,netif);
+ /* set new IP address to netif */
+ ip_addr_set(&(netif->ip_addr), ipaddr);
+ snmp_insert_ipaddridx_tree(netif);
+ snmp_insert_iprteidx_tree(0,netif);
+
+ LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: IP address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
+ netif->name[0], netif->name[1],
+ ip4_addr1(&netif->ip_addr),
+ ip4_addr2(&netif->ip_addr),
+ ip4_addr3(&netif->ip_addr),
+ ip4_addr4(&netif->ip_addr)));
+}
+
+/**
+ * Change the default gateway for a network interface
+ *
+ * @param netif the network interface to change
+ * @param gw the new default gateway
+ *
+ * @note call netif_set_addr() if you also want to change ip address and netmask
+ */
+void
+netif_set_gw(struct netif *netif, struct ip_addr *gw)
+{
+ ip_addr_set(&(netif->gw), gw);
+ LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: GW address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
+ netif->name[0], netif->name[1],
+ ip4_addr1(&netif->gw),
+ ip4_addr2(&netif->gw),
+ ip4_addr3(&netif->gw),
+ ip4_addr4(&netif->gw)));
+}
+
+/**
+ * Change the netmask of a network interface
+ *
+ * @param netif the network interface to change
+ * @param netmask the new netmask
+ *
+ * @note call netif_set_addr() if you also want to change ip address and
+ * default gateway
+ */
+void
+netif_set_netmask(struct netif *netif, struct ip_addr *netmask)
+{
+ snmp_delete_iprteidx_tree(0, netif);
+ /* set new netmask to netif */
+ ip_addr_set(&(netif->netmask), netmask);
+ snmp_insert_iprteidx_tree(0, netif);
+ LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: netmask of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
+ netif->name[0], netif->name[1],
+ ip4_addr1(&netif->netmask),
+ ip4_addr2(&netif->netmask),
+ ip4_addr3(&netif->netmask),
+ ip4_addr4(&netif->netmask)));
+}
+
+/**
+ * Set a network interface as the default network interface
+ * (used to output all packets for which no specific route is found)
+ *
+ * @param netif the default network interface
+ */
+void
+netif_set_default(struct netif *netif)
+{
+ if (netif == NULL)
+ {
+ /* remove default route */
+ snmp_delete_iprteidx_tree(1, netif);
+ }
+ else
+ {
+ /* install default route */
+ snmp_insert_iprteidx_tree(1, netif);
+ }
+ netif_default = netif;
+ LWIP_DEBUGF(NETIF_DEBUG, ("netif: setting default interface %c%c\n",
+ netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\''));
+}
+
+/**
+ * Bring an interface up, available for processing
+ * traffic.
+ *
+ * @note: Enabling DHCP on a down interface will make it come
+ * up once configured.
+ *
+ * @see dhcp_start()
+ */
+void netif_set_up(struct netif *netif)
+{
+ if ( !(netif->flags & NETIF_FLAG_UP )) {
+ netif->flags |= NETIF_FLAG_UP;
+
+#if LWIP_SNMP
+ snmp_get_sysuptime(&netif->ts);
+#endif /* LWIP_SNMP */
+
+ NETIF_LINK_CALLBACK(netif);
+ NETIF_STATUS_CALLBACK(netif);
+
+#if LWIP_ARP
+ /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */
+ if (netif->flags & NETIF_FLAG_ETHARP) {
+ etharp_gratuitous(netif);
+ }
+#endif /* LWIP_ARP */
+
+#if LWIP_IGMP
+ /* resend IGMP memberships */
+ if (netif->flags & NETIF_FLAG_IGMP) {
+ igmp_report_groups( netif);
+ }
+#endif /* LWIP_IGMP */
+ }
+}
+
+/**
+ * Bring an interface down, disabling any traffic processing.
+ *
+ * @note: Enabling DHCP on a down interface will make it come
+ * up once configured.
+ *
+ * @see dhcp_start()
+ */
+void netif_set_down(struct netif *netif)
+{
+ if ( netif->flags & NETIF_FLAG_UP )
+ {
+ netif->flags &= ~NETIF_FLAG_UP;
+#if LWIP_SNMP
+ snmp_get_sysuptime(&netif->ts);
+#endif
+
+ NETIF_LINK_CALLBACK(netif);
+ NETIF_STATUS_CALLBACK(netif);
+ }
+}
+
+/**
+ * Ask if an interface is up
+ */
+u8_t netif_is_up(struct netif *netif)
+{
+ return (netif->flags & NETIF_FLAG_UP)?1:0;
+}
+
+#if LWIP_NETIF_STATUS_CALLBACK
+/**
+ * Set callback to be called when interface is brought up/down
+ */
+void netif_set_status_callback(struct netif *netif, void (* status_callback)(struct netif *netif ))
+{
+ if ( netif )
+ netif->status_callback = status_callback;
+}
+#endif /* LWIP_NETIF_STATUS_CALLBACK */
+
+#if LWIP_NETIF_LINK_CALLBACK
+/**
+ * Called by a driver when its link goes up
+ */
+void netif_set_link_up(struct netif *netif )
+{
+ netif->flags |= NETIF_FLAG_LINK_UP;
+
+#if LWIP_DHCP
+ if (netif->dhcp) {
+ dhcp_network_changed(netif);
+ }
+#endif /* LWIP_DHCP */
+
+#if LWIP_AUTOIP
+ if (netif->autoip) {
+ autoip_network_changed(netif);
+ }
+#endif /* LWIP_AUTOIP */
+
+ if (netif->flags & NETIF_FLAG_UP) {
+#if LWIP_ARP
+ /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */
+ if (netif->flags & NETIF_FLAG_ETHARP) {
+ etharp_gratuitous(netif);
+ }
+#endif /* LWIP_ARP */
+
+#if LWIP_IGMP
+ /* resend IGMP memberships */
+ if (netif->flags & NETIF_FLAG_IGMP) {
+ igmp_report_groups( netif);
+ }
+#endif /* LWIP_IGMP */
+ }
+ NETIF_LINK_CALLBACK(netif);
+}
+
+/**
+ * Called by a driver when its link goes down
+ */
+void netif_set_link_down(struct netif *netif )
+{
+ netif->flags &= ~NETIF_FLAG_LINK_UP;
+ NETIF_LINK_CALLBACK(netif);
+}
+
+/**
+ * Ask if a link is up
+ */
+u8_t netif_is_link_up(struct netif *netif)
+{
+ return (netif->flags & NETIF_FLAG_LINK_UP) ? 1 : 0;
+}
+
+/**
+ * Set callback to be called when link is brought up/down
+ */
+void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif ))
+{
+ if (netif) {
+ netif->link_callback = link_callback;
+ }
+}
+#endif /* LWIP_NETIF_LINK_CALLBACK */
+
+#if ENABLE_LOOPBACK
+/**
+ * Send an IP packet to be received on the same netif (loopif-like).
+ * The pbuf is simply copied and handed back to netif->input.
+ * In multithreaded mode, this is done directly since netif->input must put
+ * the packet on a queue.
+ * In callback mode, the packet is put on an internal queue and is fed to
+ * netif->input by netif_poll().
+ *
+ * @param netif the lwip network interface structure
+ * @param p the (IP) packet to 'send'
+ * @param ipaddr the ip address to send the packet to (not used)
+ * @return ERR_OK if the packet has been sent
+ * ERR_MEM if the pbuf used to copy the packet couldn't be allocated
+ */
+err_t
+netif_loop_output(struct netif *netif, struct pbuf *p,
+ struct ip_addr *ipaddr)
+{
+ struct pbuf *r;
+ err_t err;
+ struct pbuf *last;
+#if LWIP_LOOPBACK_MAX_PBUFS
+ u8_t clen = 0;
+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
+ SYS_ARCH_DECL_PROTECT(lev);
+ LWIP_UNUSED_ARG(ipaddr);
+
+ /* Allocate a new pbuf */
+ r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM);
+ if (r == NULL) {
+ return ERR_MEM;
+ }
+#if LWIP_LOOPBACK_MAX_PBUFS
+ clen = pbuf_clen(r);
+ /* check for overflow or too many pbuf on queue */
+ if(((netif->loop_cnt_current + clen) < netif->loop_cnt_current) ||
+ ((netif->loop_cnt_current + clen) > LWIP_LOOPBACK_MAX_PBUFS)) {
+ pbuf_free(r);
+ r = NULL;
+ return ERR_MEM;
+ }
+ netif->loop_cnt_current += clen;
+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
+
+ /* Copy the whole pbuf queue p into the single pbuf r */
+ if ((err = pbuf_copy(r, p)) != ERR_OK) {
+ pbuf_free(r);
+ r = NULL;
+ return err;
+ }
+
+ /* Put the packet on a linked list which gets emptied through calling
+ netif_poll(). */
+
+ /* let last point to the last pbuf in chain r */
+ for (last = r; last->next != NULL; last = last->next);
+
+ SYS_ARCH_PROTECT(lev);
+ if(netif->loop_first != NULL) {
+ LWIP_ASSERT("if first != NULL, last must also be != NULL", netif->loop_last != NULL);
+ netif->loop_last->next = r;
+ netif->loop_last = last;
+ } else {
+ netif->loop_first = r;
+ netif->loop_last = last;
+ }
+ SYS_ARCH_UNPROTECT(lev);
+
+#if LWIP_NETIF_LOOPBACK_MULTITHREADING
+ /* For multithreading environment, schedule a call to netif_poll */
+ tcpip_callback((void (*)(void *))(netif_poll), netif);
+#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */
+
+ return ERR_OK;
+}
+
+/**
+ * Call netif_poll() in the main loop of your application. This is to prevent
+ * reentering non-reentrant functions like tcp_input(). Packets passed to
+ * netif_loop_output() are put on a list that is passed to netif->input() by
+ * netif_poll().
+ */
+void
+netif_poll(struct netif *netif)
+{
+ struct pbuf *in;
+ SYS_ARCH_DECL_PROTECT(lev);
+
+ do {
+ /* Get a packet from the list. With SYS_LIGHTWEIGHT_PROT=1, this is protected */
+ SYS_ARCH_PROTECT(lev);
+ in = netif->loop_first;
+ if(in != NULL) {
+ struct pbuf *in_end = in;
+#if LWIP_LOOPBACK_MAX_PBUFS
+ u8_t clen = pbuf_clen(in);
+ /* adjust the number of pbufs on queue */
+ LWIP_ASSERT("netif->loop_cnt_current underflow",
+ ((netif->loop_cnt_current - clen) < netif->loop_cnt_current));
+ netif->loop_cnt_current -= clen;
+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
+ while(in_end->len != in_end->tot_len) {
+ LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL);
+ in_end = in_end->next;
+ }
+ /* 'in_end' now points to the last pbuf from 'in' */
+ if(in_end == netif->loop_last) {
+ /* this was the last pbuf in the list */
+ netif->loop_first = netif->loop_last = NULL;
+ } else {
+ /* pop the pbuf off the list */
+ netif->loop_first = in_end->next;
+ LWIP_ASSERT("should not be null since first != last!", netif->loop_first != NULL);
+ }
+ /* De-queue the pbuf from its successors on the 'loop_' list. */
+ in_end->next = NULL;
+ }
+ SYS_ARCH_UNPROTECT(lev);
+
+ if(in != NULL) {
+ /* loopback packets are always IP packets! */
+ if(ip_input(in, netif) != ERR_OK) {
+ pbuf_free(in);
+ }
+ /* Don't reference the packet any more! */
+ in = NULL;
+ }
+ /* go on while there is a packet on the list */
+ } while(netif->loop_first != NULL);
+}
+
+#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
+/**
+ * Calls netif_poll() for every netif on the netif_list.
+ */
+void
+netif_poll_all(void)
+{
+ struct netif *netif = netif_list;
+ /* loop through netifs */
+ while (netif != NULL) {
+ netif_poll(netif);
+ /* proceed to next network interface */
+ netif = netif->next;
+ }
+}
+#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
+#endif /* ENABLE_LOOPBACK */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c
new file mode 100644
index 0000000..6284b9a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c
@@ -0,0 +1,931 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Packet buffer management
+ *
+ * Packets are built from the pbuf data structure. It supports dynamic
+ * memory allocation for packet contents or can reference externally
+ * managed packet contents both in RAM and ROM. Quick allocation for
+ * incoming packets is provided through pools with fixed sized pbufs.
+ *
+ * A packet may span over multiple pbufs, chained as a singly linked
+ * list. This is called a "pbuf chain".
+ *
+ * Multiple packets may be queued, also using this singly linked list.
+ * This is called a "packet queue".
+ *
+ * So, a packet queue consists of one or more pbuf chains, each of
+ * which consist of one or more pbufs. CURRENTLY, PACKET QUEUES ARE
+ * NOT SUPPORTED!!! Use helper structs to queue multiple packets.
+ *
+ * The differences between a pbuf chain and a packet queue are very
+ * precise but subtle.
+ *
+ * The last pbuf of a packet has a ->tot_len field that equals the
+ * ->len field. It can be found by traversing the list. If the last
+ * pbuf of a packet has a ->next field other than NULL, more packets
+ * are on the queue.
+ *
+ * Therefore, looping through a pbuf of a single packet, has an
+ * loop end condition (tot_len == p->len), NOT (next == NULL).
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#include "lwip/stats.h"
+#include "lwip/def.h"
+#include "lwip/mem.h"
+#include "lwip/memp.h"
+#include "lwip/pbuf.h"
+#include "lwip/sys.h"
+#include "arch/perf.h"
+#if TCP_QUEUE_OOSEQ
+#include "lwip/tcp.h"
+#endif
+
+#include <string.h>
+
+#define SIZEOF_STRUCT_PBUF LWIP_MEM_ALIGN_SIZE(sizeof(struct pbuf))
+/* Since the pool is created in memp, PBUF_POOL_BUFSIZE will be automatically
+ aligned there. Therefore, PBUF_POOL_BUFSIZE_ALIGNED can be used here. */
+#define PBUF_POOL_BUFSIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE)
+
+#if !TCP_QUEUE_OOSEQ || NO_SYS
+#define PBUF_POOL_IS_EMPTY()
+#else /* !TCP_QUEUE_OOSEQ || NO_SYS */
+/** Define this to 0 to prevent freeing ooseq pbufs when the PBUF_POOL is empty */
+#ifndef PBUF_POOL_FREE_OOSEQ
+#define PBUF_POOL_FREE_OOSEQ 1
+#endif /* PBUF_POOL_FREE_OOSEQ */
+
+#if PBUF_POOL_FREE_OOSEQ
+#include "lwip/tcpip.h"
+#define PBUF_POOL_IS_EMPTY() pbuf_pool_is_empty()
+static u8_t pbuf_free_ooseq_queued;
+/**
+ * Attempt to reclaim some memory from queued out-of-sequence TCP segments
+ * if we run out of pool pbufs. It's better to give priority to new packets
+ * if we're running out.
+ *
+ * This must be done in the correct thread context therefore this function
+ * can only be used with NO_SYS=0 and through tcpip_callback.
+ */
+static void
+pbuf_free_ooseq(void* arg)
+{
+ struct tcp_pcb* pcb;
+ SYS_ARCH_DECL_PROTECT(old_level);
+ LWIP_UNUSED_ARG(arg);
+
+ SYS_ARCH_PROTECT(old_level);
+ pbuf_free_ooseq_queued = 0;
+ SYS_ARCH_UNPROTECT(old_level);
+
+ for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) {
+ if (NULL != pcb->ooseq) {
+ /** Free the ooseq pbufs of one PCB only */
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free_ooseq: freeing out-of-sequence pbufs\n"));
+ tcp_segs_free(pcb->ooseq);
+ pcb->ooseq = NULL;
+ return;
+ }
+ }
+}
+
+/** Queue a call to pbuf_free_ooseq if not already queued. */
+static void
+pbuf_pool_is_empty(void)
+{
+ u8_t queued;
+ SYS_ARCH_DECL_PROTECT(old_level);
+
+ SYS_ARCH_PROTECT(old_level);
+ queued = pbuf_free_ooseq_queued;
+ pbuf_free_ooseq_queued = 1;
+ SYS_ARCH_UNPROTECT(old_level);
+
+ if(!queued) {
+ /* queue a call to pbuf_free_ooseq if not already queued */
+ if(tcpip_callback_with_block(pbuf_free_ooseq, NULL, 0) != ERR_OK) {
+ SYS_ARCH_PROTECT(old_level);
+ pbuf_free_ooseq_queued = 0;
+ SYS_ARCH_UNPROTECT(old_level);
+ }
+ }
+}
+#endif /* PBUF_POOL_FREE_OOSEQ */
+#endif /* !TCP_QUEUE_OOSEQ || NO_SYS */
+
+/**
+ * Allocates a pbuf of the given type (possibly a chain for PBUF_POOL type).
+ *
+ * The actual memory allocated for the pbuf is determined by the
+ * layer at which the pbuf is allocated and the requested size
+ * (from the size parameter).
+ *
+ * @param layer flag to define header size
+ * @param length size of the pbuf's payload
+ * @param type this parameter decides how and where the pbuf
+ * should be allocated as follows:
+ *
+ * - PBUF_RAM: buffer memory for pbuf is allocated as one large
+ * chunk. This includes protocol headers as well.
+ * - PBUF_ROM: no buffer memory is allocated for the pbuf, even for
+ * protocol headers. Additional headers must be prepended
+ * by allocating another pbuf and chain in to the front of
+ * the ROM pbuf. It is assumed that the memory used is really
+ * similar to ROM in that it is immutable and will not be
+ * changed. Memory which is dynamic should generally not
+ * be attached to PBUF_ROM pbufs. Use PBUF_REF instead.
+ * - PBUF_REF: no buffer memory is allocated for the pbuf, even for
+ * protocol headers. It is assumed that the pbuf is only
+ * being used in a single thread. If the pbuf gets queued,
+ * then pbuf_take should be called to copy the buffer.
+ * - PBUF_POOL: the pbuf is allocated as a pbuf chain, with pbufs from
+ * the pbuf pool that is allocated during pbuf_init().
+ *
+ * @return the allocated pbuf. If multiple pbufs where allocated, this
+ * is the first pbuf of a pbuf chain.
+ */
+struct pbuf *
+pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)
+{
+ struct pbuf *p, *q, *r;
+ u16_t offset;
+ s32_t rem_len; /* remaining length */
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length));
+
+ /* determine header offset */
+ offset = 0;
+ switch (layer) {
+ case PBUF_TRANSPORT:
+ /* add room for transport (often TCP) layer header */
+ offset += PBUF_TRANSPORT_HLEN;
+ /* FALLTHROUGH */
+ case PBUF_IP:
+ /* add room for IP layer header */
+ offset += PBUF_IP_HLEN;
+ /* FALLTHROUGH */
+ case PBUF_LINK:
+ /* add room for link layer header */
+ offset += PBUF_LINK_HLEN;
+ break;
+ case PBUF_RAW:
+ break;
+ default:
+ LWIP_ASSERT("pbuf_alloc: bad pbuf layer", 0);
+ return NULL;
+ }
+
+ switch (type) {
+ case PBUF_POOL:
+ /* allocate head of pbuf chain into p */
+ p = memp_malloc(MEMP_PBUF_POOL);
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc: allocated pbuf %p\n", (void *)p));
+ if (p == NULL) {
+ PBUF_POOL_IS_EMPTY();
+ return NULL;
+ }
+ p->type = type;
+ p->next = NULL;
+
+ /* make the payload pointer point 'offset' bytes into pbuf data memory */
+ p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset)));
+ LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned",
+ ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0);
+ /* the total length of the pbuf chain is the requested size */
+ p->tot_len = length;
+ /* set the length of the first pbuf in the chain */
+ p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset));
+ LWIP_ASSERT("check p->payload + p->len does not overflow pbuf",
+ ((u8_t*)p->payload + p->len <=
+ (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED));
+ LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT",
+ (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 );
+ /* set reference count (needed here in case we fail) */
+ p->ref = 1;
+
+ /* now allocate the tail of the pbuf chain */
+
+ /* remember first pbuf for linkage in next iteration */
+ r = p;
+ /* remaining length to be allocated */
+ rem_len = length - p->len;
+ /* any remaining pbufs to be allocated? */
+ while (rem_len > 0) {
+ q = memp_malloc(MEMP_PBUF_POOL);
+ if (q == NULL) {
+ PBUF_POOL_IS_EMPTY();
+ /* free chain so far allocated */
+ pbuf_free(p);
+ /* bail out unsuccesfully */
+ return NULL;
+ }
+ q->type = type;
+ q->flags = 0;
+ q->next = NULL;
+ /* make previous pbuf point to this pbuf */
+ r->next = q;
+ /* set total length of this pbuf and next in chain */
+ LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff);
+ q->tot_len = (u16_t)rem_len;
+ /* this pbuf length is pool size, unless smaller sized tail */
+ q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED);
+ q->payload = (void *)((u8_t *)q + SIZEOF_STRUCT_PBUF);
+ LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned",
+ ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0);
+ LWIP_ASSERT("check p->payload + p->len does not overflow pbuf",
+ ((u8_t*)p->payload + p->len <=
+ (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED));
+ q->ref = 1;
+ /* calculate remaining length to be allocated */
+ rem_len -= q->len;
+ /* remember this pbuf for linkage in next iteration */
+ r = q;
+ }
+ /* end of chain */
+ /*r->next = NULL;*/
+
+ break;
+ case PBUF_RAM:
+ /* If pbuf is to be allocated in RAM, allocate memory for it. */
+ p = (struct pbuf*)mem_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length));
+ if (p == NULL) {
+ return NULL;
+ }
+ /* Set up internal structure of the pbuf. */
+ p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset));
+ p->len = p->tot_len = length;
+ p->next = NULL;
+ p->type = type;
+
+ LWIP_ASSERT("pbuf_alloc: pbuf->payload properly aligned",
+ ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0);
+ break;
+ /* pbuf references existing (non-volatile static constant) ROM payload? */
+ case PBUF_ROM:
+ /* pbuf references existing (externally allocated) RAM payload? */
+ case PBUF_REF:
+ /* only allocate memory for the pbuf structure */
+ p = memp_malloc(MEMP_PBUF);
+ if (p == NULL) {
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("pbuf_alloc: Could not allocate MEMP_PBUF for PBUF_%s.\n",
+ (type == PBUF_ROM) ? "ROM" : "REF"));
+ return NULL;
+ }
+ /* caller must set this field properly, afterwards */
+ p->payload = NULL;
+ p->len = p->tot_len = length;
+ p->next = NULL;
+ p->type = type;
+ break;
+ default:
+ LWIP_ASSERT("pbuf_alloc: erroneous type", 0);
+ return NULL;
+ }
+ /* set reference count */
+ p->ref = 1;
+ /* set flags */
+ p->flags = 0;
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p));
+ return p;
+}
+
+
+/**
+ * Shrink a pbuf chain to a desired length.
+ *
+ * @param p pbuf to shrink.
+ * @param new_len desired new length of pbuf chain
+ *
+ * Depending on the desired length, the first few pbufs in a chain might
+ * be skipped and left unchanged. The new last pbuf in the chain will be
+ * resized, and any remaining pbufs will be freed.
+ *
+ * @note If the pbuf is ROM/REF, only the ->tot_len and ->len fields are adjusted.
+ * @note May not be called on a packet queue.
+ *
+ * @note Despite its name, pbuf_realloc cannot grow the size of a pbuf (chain).
+ */
+void
+pbuf_realloc(struct pbuf *p, u16_t new_len)
+{
+ struct pbuf *q;
+ u16_t rem_len; /* remaining length */
+ s32_t grow;
+
+ LWIP_ASSERT("pbuf_realloc: p != NULL", p != NULL);
+ LWIP_ASSERT("pbuf_realloc: sane p->type", p->type == PBUF_POOL ||
+ p->type == PBUF_ROM ||
+ p->type == PBUF_RAM ||
+ p->type == PBUF_REF);
+
+ /* desired length larger than current length? */
+ if (new_len >= p->tot_len) {
+ /* enlarging not yet supported */
+ return;
+ }
+
+ /* the pbuf chain grows by (new_len - p->tot_len) bytes
+ * (which may be negative in case of shrinking) */
+ grow = new_len - p->tot_len;
+
+ /* first, step over any pbufs that should remain in the chain */
+ rem_len = new_len;
+ q = p;
+ /* should this pbuf be kept? */
+ while (rem_len > q->len) {
+ /* decrease remaining length by pbuf length */
+ rem_len -= q->len;
+ /* decrease total length indicator */
+ LWIP_ASSERT("grow < max_u16_t", grow < 0xffff);
+ q->tot_len += (u16_t)grow;
+ /* proceed to next pbuf in chain */
+ q = q->next;
+ LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL);
+ }
+ /* we have now reached the new last pbuf (in q) */
+ /* rem_len == desired length for pbuf q */
+
+ /* shrink allocated memory for PBUF_RAM */
+ /* (other types merely adjust their length fields */
+ if ((q->type == PBUF_RAM) && (rem_len != q->len)) {
+ /* reallocate and adjust the length of the pbuf that will be split */
+ q = mem_realloc(q, (u8_t *)q->payload - (u8_t *)q + rem_len);
+ LWIP_ASSERT("mem_realloc give q == NULL", q != NULL);
+ }
+ /* adjust length fields for new last pbuf */
+ q->len = rem_len;
+ q->tot_len = q->len;
+
+ /* any remaining pbufs in chain? */
+ if (q->next != NULL) {
+ /* free remaining pbufs in chain */
+ pbuf_free(q->next);
+ }
+ /* q is last packet in chain */
+ q->next = NULL;
+
+}
+
+/**
+ * Adjusts the payload pointer to hide or reveal headers in the payload.
+ *
+ * Adjusts the ->payload pointer so that space for a header
+ * (dis)appears in the pbuf payload.
+ *
+ * The ->payload, ->tot_len and ->len fields are adjusted.
+ *
+ * @param p pbuf to change the header size.
+ * @param header_size_increment Number of bytes to increment header size which
+ * increases the size of the pbuf. New space is on the front.
+ * (Using a negative value decreases the header size.)
+ * If hdr_size_inc is 0, this function does nothing and returns succesful.
+ *
+ * PBUF_ROM and PBUF_REF type buffers cannot have their sizes increased, so
+ * the call will fail. A check is made that the increase in header size does
+ * not move the payload pointer in front of the start of the buffer.
+ * @return non-zero on failure, zero on success.
+ *
+ */
+u8_t
+pbuf_header(struct pbuf *p, s16_t header_size_increment)
+{
+ u16_t type;
+ void *payload;
+ u16_t increment_magnitude;
+
+ LWIP_ASSERT("p != NULL", p != NULL);
+ if ((header_size_increment == 0) || (p == NULL))
+ return 0;
+
+ if (header_size_increment < 0){
+ increment_magnitude = -header_size_increment;
+ /* Check that we aren't going to move off the end of the pbuf */
+ LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;);
+ } else {
+ increment_magnitude = header_size_increment;
+#if 0
+ /* Can't assert these as some callers speculatively call
+ pbuf_header() to see if it's OK. Will return 1 below instead. */
+ /* Check that we've got the correct type of pbuf to work with */
+ LWIP_ASSERT("p->type == PBUF_RAM || p->type == PBUF_POOL",
+ p->type == PBUF_RAM || p->type == PBUF_POOL);
+ /* Check that we aren't going to move off the beginning of the pbuf */
+ LWIP_ASSERT("p->payload - increment_magnitude >= p + SIZEOF_STRUCT_PBUF",
+ (u8_t *)p->payload - increment_magnitude >= (u8_t *)p + SIZEOF_STRUCT_PBUF);
+#endif
+ }
+
+ type = p->type;
+ /* remember current payload pointer */
+ payload = p->payload;
+
+ /* pbuf types containing payloads? */
+ if (type == PBUF_RAM || type == PBUF_POOL) {
+ /* set new payload pointer */
+ p->payload = (u8_t *)p->payload - header_size_increment;
+ /* boundary check fails? */
+ if ((u8_t *)p->payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) {
+ LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("pbuf_header: failed as %p < %p (not enough space for new header size)\n",
+ (void *)p->payload, (void *)(p + 1)));
+ /* restore old payload pointer */
+ p->payload = payload;
+ /* bail out unsuccesfully */
+ return 1;
+ }
+ /* pbuf types refering to external payloads? */
+ } else if (type == PBUF_REF || type == PBUF_ROM) {
+ /* hide a header in the payload? */
+ if ((header_size_increment < 0) && (increment_magnitude <= p->len)) {
+ /* increase payload pointer */
+ p->payload = (u8_t *)p->payload - header_size_increment;
+ } else {
+ /* cannot expand payload to front (yet!)
+ * bail out unsuccesfully */
+ return 1;
+ }
+ }
+ else {
+ /* Unknown type */
+ LWIP_ASSERT("bad pbuf type", 0);
+ return 1;
+ }
+ /* modify pbuf length fields */
+ p->len += header_size_increment;
+ p->tot_len += header_size_increment;
+
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_header: old %p new %p (%"S16_F")\n",
+ (void *)payload, (void *)p->payload, header_size_increment));
+
+ return 0;
+}
+
+/**
+ * Dereference a pbuf chain or queue and deallocate any no-longer-used
+ * pbufs at the head of this chain or queue.
+ *
+ * Decrements the pbuf reference count. If it reaches zero, the pbuf is
+ * deallocated.
+ *
+ * For a pbuf chain, this is repeated for each pbuf in the chain,
+ * up to the first pbuf which has a non-zero reference count after
+ * decrementing. So, when all reference counts are one, the whole
+ * chain is free'd.
+ *
+ * @param p The pbuf (chain) to be dereferenced.
+ *
+ * @return the number of pbufs that were de-allocated
+ * from the head of the chain.
+ *
+ * @note MUST NOT be called on a packet queue (Not verified to work yet).
+ * @note the reference counter of a pbuf equals the number of pointers
+ * that refer to the pbuf (or into the pbuf).
+ *
+ * @internal examples:
+ *
+ * Assuming existing chains a->b->c with the following reference
+ * counts, calling pbuf_free(a) results in:
+ *
+ * 1->2->3 becomes ...1->3
+ * 3->3->3 becomes 2->3->3
+ * 1->1->2 becomes ......1
+ * 2->1->1 becomes 1->1->1
+ * 1->1->1 becomes .......
+ *
+ */
+u8_t
+pbuf_free(struct pbuf *p)
+{
+ u16_t type;
+ struct pbuf *q;
+ u8_t count;
+
+ if (p == NULL) {
+ LWIP_ASSERT("p != NULL", p != NULL);
+ /* if assertions are disabled, proceed with debug output */
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("pbuf_free(p == NULL) was called.\n"));
+ return 0;
+ }
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free(%p)\n", (void *)p));
+
+ PERF_START;
+
+ LWIP_ASSERT("pbuf_free: sane type",
+ p->type == PBUF_RAM || p->type == PBUF_ROM ||
+ p->type == PBUF_REF || p->type == PBUF_POOL);
+
+ count = 0;
+ /* de-allocate all consecutive pbufs from the head of the chain that
+ * obtain a zero reference count after decrementing*/
+ while (p != NULL) {
+ u16_t ref;
+ SYS_ARCH_DECL_PROTECT(old_level);
+ /* Since decrementing ref cannot be guaranteed to be a single machine operation
+ * we must protect it. We put the new ref into a local variable to prevent
+ * further protection. */
+ SYS_ARCH_PROTECT(old_level);
+ /* all pbufs in a chain are referenced at least once */
+ LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0);
+ /* decrease reference count (number of pointers to pbuf) */
+ ref = --(p->ref);
+ SYS_ARCH_UNPROTECT(old_level);
+ /* this pbuf is no longer referenced to? */
+ if (ref == 0) {
+ /* remember next pbuf in chain for next iteration */
+ q = p->next;
+ LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: deallocating %p\n", (void *)p));
+ type = p->type;
+ /* is this a pbuf from the pool? */
+ if (type == PBUF_POOL) {
+ memp_free(MEMP_PBUF_POOL, p);
+ /* is this a ROM or RAM referencing pbuf? */
+ } else if (type == PBUF_ROM || type == PBUF_REF) {
+ memp_free(MEMP_PBUF, p);
+ /* type == PBUF_RAM */
+ } else {
+ mem_free(p);
+ }
+ count++;
+ /* proceed to next pbuf */
+ p = q;
+ /* p->ref > 0, this pbuf is still referenced to */
+ /* (and so the remaining pbufs in chain as well) */
+ } else {
+ LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: %p has ref %"U16_F", ending here.\n", (void *)p, ref));
+ /* stop walking through the chain */
+ p = NULL;
+ }
+ }
+ PERF_STOP("pbuf_free");
+ /* return number of de-allocated pbufs */
+ return count;
+}
+
+/**
+ * Count number of pbufs in a chain
+ *
+ * @param p first pbuf of chain
+ * @return the number of pbufs in a chain
+ */
+
+u8_t
+pbuf_clen(struct pbuf *p)
+{
+ u8_t len;
+
+ len = 0;
+ while (p != NULL) {
+ ++len;
+ p = p->next;
+ }
+ return len;
+}
+
+/**
+ * Increment the reference count of the pbuf.
+ *
+ * @param p pbuf to increase reference counter of
+ *
+ */
+void
+pbuf_ref(struct pbuf *p)
+{
+ SYS_ARCH_DECL_PROTECT(old_level);
+ /* pbuf given? */
+ if (p != NULL) {
+ SYS_ARCH_PROTECT(old_level);
+ ++(p->ref);
+ SYS_ARCH_UNPROTECT(old_level);
+ }
+}
+
+/**
+ * Concatenate two pbufs (each may be a pbuf chain) and take over
+ * the caller's reference of the tail pbuf.
+ *
+ * @note The caller MAY NOT reference the tail pbuf afterwards.
+ * Use pbuf_chain() for that purpose.
+ *
+ * @see pbuf_chain()
+ */
+
+void
+pbuf_cat(struct pbuf *h, struct pbuf *t)
+{
+ struct pbuf *p;
+
+ LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)",
+ ((h != NULL) && (t != NULL)), return;);
+
+ /* proceed to last pbuf of chain */
+ for (p = h; p->next != NULL; p = p->next) {
+ /* add total length of second chain to all totals of first chain */
+ p->tot_len += t->tot_len;
+ }
+ /* { p is last pbuf of first h chain, p->next == NULL } */
+ LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len);
+ LWIP_ASSERT("p->next == NULL", p->next == NULL);
+ /* add total length of second chain to last pbuf total of first chain */
+ p->tot_len += t->tot_len;
+ /* chain last pbuf of head (p) with first of tail (t) */
+ p->next = t;
+ /* p->next now references t, but the caller will drop its reference to t,
+ * so netto there is no change to the reference count of t.
+ */
+}
+
+/**
+ * Chain two pbufs (or pbuf chains) together.
+ *
+ * The caller MUST call pbuf_free(t) once it has stopped
+ * using it. Use pbuf_cat() instead if you no longer use t.
+ *
+ * @param h head pbuf (chain)
+ * @param t tail pbuf (chain)
+ * @note The pbufs MUST belong to the same packet.
+ * @note MAY NOT be called on a packet queue.
+ *
+ * The ->tot_len fields of all pbufs of the head chain are adjusted.
+ * The ->next field of the last pbuf of the head chain is adjusted.
+ * The ->ref field of the first pbuf of the tail chain is adjusted.
+ *
+ */
+void
+pbuf_chain(struct pbuf *h, struct pbuf *t)
+{
+ pbuf_cat(h, t);
+ /* t is now referenced by h */
+ pbuf_ref(t);
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_chain: %p references %p\n", (void *)h, (void *)t));
+}
+
+/**
+ * Dechains the first pbuf from its succeeding pbufs in the chain.
+ *
+ * Makes p->tot_len field equal to p->len.
+ * @param p pbuf to dechain
+ * @return remainder of the pbuf chain, or NULL if it was de-allocated.
+ * @note May not be called on a packet queue.
+ */
+struct pbuf *
+pbuf_dechain(struct pbuf *p)
+{
+ struct pbuf *q;
+ u8_t tail_gone = 1;
+ /* tail */
+ q = p->next;
+ /* pbuf has successor in chain? */
+ if (q != NULL) {
+ /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */
+ LWIP_ASSERT("p->tot_len == p->len + q->tot_len", q->tot_len == p->tot_len - p->len);
+ /* enforce invariant if assertion is disabled */
+ q->tot_len = p->tot_len - p->len;
+ /* decouple pbuf from remainder */
+ p->next = NULL;
+ /* total length of pbuf p is its own length only */
+ p->tot_len = p->len;
+ /* q is no longer referenced by p, free it */
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_dechain: unreferencing %p\n", (void *)q));
+ tail_gone = pbuf_free(q);
+ if (tail_gone > 0) {
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE,
+ ("pbuf_dechain: deallocated %p (as it is no longer referenced)\n", (void *)q));
+ }
+ /* return remaining tail or NULL if deallocated */
+ }
+ /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */
+ LWIP_ASSERT("p->tot_len == p->len", p->tot_len == p->len);
+ return ((tail_gone > 0) ? NULL : q);
+}
+
+/**
+ *
+ * Create PBUF_RAM copies of pbufs.
+ *
+ * Used to queue packets on behalf of the lwIP stack, such as
+ * ARP based queueing.
+ *
+ * @note You MUST explicitly use p = pbuf_take(p);
+ *
+ * @note Only one packet is copied, no packet queue!
+ *
+ * @param p_to pbuf destination of the copy
+ * @param p_from pbuf source of the copy
+ *
+ * @return ERR_OK if pbuf was copied
+ * ERR_ARG if one of the pbufs is NULL or p_to is not big
+ * enough to hold p_from
+ */
+err_t
+pbuf_copy(struct pbuf *p_to, struct pbuf *p_from)
+{
+ u16_t offset_to=0, offset_from=0, len;
+
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy(%p, %p)\n",
+ (void*)p_to, (void*)p_from));
+
+ /* is the target big enough to hold the source? */
+ LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) &&
+ (p_from != NULL) && (p_to->tot_len >= p_from->tot_len)), return ERR_ARG;);
+
+ /* iterate through pbuf chain */
+ do
+ {
+ LWIP_ASSERT("p_to != NULL", p_to != NULL);
+ /* copy one part of the original chain */
+ if ((p_to->len - offset_to) >= (p_from->len - offset_from)) {
+ /* complete current p_from fits into current p_to */
+ len = p_from->len - offset_from;
+ } else {
+ /* current p_from does not fit into current p_to */
+ len = p_to->len - offset_to;
+ }
+ MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len);
+ offset_to += len;
+ offset_from += len;
+ LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);
+ if (offset_to == p_to->len) {
+ /* on to next p_to (if any) */
+ offset_to = 0;
+ p_to = p_to->next;
+ }
+ LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len);
+ if (offset_from >= p_from->len) {
+ /* on to next p_from (if any) */
+ offset_from = 0;
+ p_from = p_from->next;
+ }
+
+ if((p_from != NULL) && (p_from->len == p_from->tot_len)) {
+ /* don't copy more than one packet! */
+ LWIP_ERROR("pbuf_copy() does not allow packet queues!\n",
+ (p_from->next == NULL), return ERR_VAL;);
+ }
+ if((p_to != NULL) && (p_to->len == p_to->tot_len)) {
+ /* don't copy more than one packet! */
+ LWIP_ERROR("pbuf_copy() does not allow packet queues!\n",
+ (p_to->next == NULL), return ERR_VAL;);
+ }
+ } while (p_from);
+ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n"));
+ return ERR_OK;
+}
+
+/**
+ * Copy (part of) the contents of a packet buffer
+ * to an application supplied buffer.
+ *
+ * @param buf the pbuf from which to copy data
+ * @param dataptr the application supplied buffer
+ * @param len length of data to copy (dataptr must be big enough). No more
+ * than buf->tot_len will be copied, irrespective of len
+ * @param offset offset into the packet buffer from where to begin copying len bytes
+ * @return the number of bytes copied, or 0 on failure
+ */
+u16_t
+pbuf_copy_partial(struct pbuf *buf, void *dataptr, u16_t len, u16_t offset)
+{
+ struct pbuf *p;
+ u16_t left;
+ u16_t buf_copy_len;
+ u16_t copied_total = 0;
+
+ LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;);
+ LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;);
+
+ left = 0;
+
+ if((buf == NULL) || (dataptr == NULL)) {
+ return 0;
+ }
+
+ /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */
+ for(p = buf; len != 0 && p != NULL; p = p->next) {
+ if ((offset != 0) && (offset >= p->len)) {
+ /* don't copy from this buffer -> on to the next */
+ offset -= p->len;
+ } else {
+ /* copy from this buffer. maybe only partially. */
+ buf_copy_len = p->len - offset;
+ if (buf_copy_len > len)
+ buf_copy_len = len;
+ /* copy the necessary parts of the buffer */
+ MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len);
+ copied_total += buf_copy_len;
+ left += buf_copy_len;
+ len -= buf_copy_len;
+ offset = 0;
+ }
+ }
+ return copied_total;
+}
+
+/**
+ * Copy application supplied data into a pbuf.
+ * This function can only be used to copy the equivalent of buf->tot_len data.
+ *
+ * @param buf pbuf to fill with data
+ * @param dataptr application supplied data buffer
+ * @param len length of the application supplied data buffer
+ *
+ * @return ERR_OK if successful, ERR_MEM if the pbuf is not big enough
+ */
+err_t
+pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len)
+{
+ struct pbuf *p;
+ u16_t buf_copy_len;
+ u16_t total_copy_len = len;
+ u16_t copied_total = 0;
+
+ LWIP_ERROR("pbuf_take: invalid buf", (buf != NULL), return 0;);
+ LWIP_ERROR("pbuf_take: invalid dataptr", (dataptr != NULL), return 0;);
+
+ if ((buf == NULL) || (dataptr == NULL) || (buf->tot_len < len)) {
+ return ERR_ARG;
+ }
+
+ /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */
+ for(p = buf; total_copy_len != 0; p = p->next) {
+ LWIP_ASSERT("pbuf_take: invalid pbuf", p != NULL);
+ buf_copy_len = total_copy_len;
+ if (buf_copy_len > p->len) {
+ /* this pbuf cannot hold all remaining data */
+ buf_copy_len = p->len;
+ }
+ /* copy the necessary parts of the buffer */
+ MEMCPY(p->payload, &((char*)dataptr)[copied_total], buf_copy_len);
+ total_copy_len -= buf_copy_len;
+ copied_total += buf_copy_len;
+ }
+ LWIP_ASSERT("did not copy all data", total_copy_len == 0 && copied_total == len);
+ return ERR_OK;
+}
+
+/**
+ * Creates a single pbuf out of a queue of pbufs.
+ *
+ * @remark: The source pbuf 'p' is not freed by this function because that can
+ * be illegal in some places!
+ *
+ * @param p the source pbuf
+ * @param layer pbuf_layer of the new pbuf
+ *
+ * @return a new, single pbuf (p->next is NULL)
+ * or the old pbuf if allocation fails
+ */
+struct pbuf*
+pbuf_coalesce(struct pbuf *p, pbuf_layer layer)
+{
+ struct pbuf *q;
+ err_t err;
+ if (p->next == NULL) {
+ return p;
+ }
+ q = pbuf_alloc(layer, p->tot_len, PBUF_RAM);
+ if (q == NULL) {
+ /* @todo: what do we do now? */
+ return p;
+ }
+ err = pbuf_copy(q, p);
+ LWIP_ASSERT("pbuf_copy failed", err == ERR_OK);
+ pbuf_free(p);
+ return q;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c
new file mode 100644
index 0000000..6966bbc
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c
@@ -0,0 +1,355 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Implementation of raw protocol PCBs for low-level handling of
+ * different types of protocols besides (or overriding) those
+ * already available in lwIP.
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/def.h"
+#include "lwip/memp.h"
+#include "lwip/inet.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/raw.h"
+#include "lwip/stats.h"
+#include "lwip/snmp.h"
+#include "arch/perf.h"
+
+#include <string.h>
+
+/** The list of RAW PCBs */
+static struct raw_pcb *raw_pcbs;
+
+/**
+ * Determine if in incoming IP packet is covered by a RAW PCB
+ * and if so, pass it to a user-provided receive callback function.
+ *
+ * Given an incoming IP datagram (as a chain of pbufs) this function
+ * finds a corresponding RAW PCB and calls the corresponding receive
+ * callback function.
+ *
+ * @param p pbuf to be demultiplexed to a RAW PCB.
+ * @param inp network interface on which the datagram was received.
+ * @return - 1 if the packet has been eaten by a RAW PCB receive
+ * callback function. The caller MAY NOT not reference the
+ * packet any longer, and MAY NOT call pbuf_free().
+ * @return - 0 if packet is not eaten (pbuf is still referenced by the
+ * caller).
+ *
+ */
+u8_t
+raw_input(struct pbuf *p, struct netif *inp)
+{
+ struct raw_pcb *pcb, *prev;
+ struct ip_hdr *iphdr;
+ s16_t proto;
+ u8_t eaten = 0;
+
+ LWIP_UNUSED_ARG(inp);
+
+ iphdr = p->payload;
+ proto = IPH_PROTO(iphdr);
+
+ prev = NULL;
+ pcb = raw_pcbs;
+ /* loop through all raw pcbs until the packet is eaten by one */
+ /* this allows multiple pcbs to match against the packet by design */
+ while ((eaten == 0) && (pcb != NULL)) {
+ if (pcb->protocol == proto) {
+#if IP_SOF_BROADCAST_RECV
+ /* broadcast filter? */
+ if ((pcb->so_options & SOF_BROADCAST) || !ip_addr_isbroadcast(&(iphdr->dest), inp))
+#endif /* IP_SOF_BROADCAST_RECV */
+ {
+ /* receive callback function available? */
+ if (pcb->recv != NULL) {
+ /* the receive callback function did not eat the packet? */
+ if (pcb->recv(pcb->recv_arg, pcb, p, &(iphdr->src)) != 0) {
+ /* receive function ate the packet */
+ p = NULL;
+ eaten = 1;
+ if (prev != NULL) {
+ /* move the pcb to the front of raw_pcbs so that is
+ found faster next time */
+ prev->next = pcb->next;
+ pcb->next = raw_pcbs;
+ raw_pcbs = pcb;
+ }
+ }
+ }
+ /* no receive callback function was set for this raw PCB */
+ }
+ /* drop the packet */
+ }
+ prev = pcb;
+ pcb = pcb->next;
+ }
+ return eaten;
+}
+
+/**
+ * Bind a RAW PCB.
+ *
+ * @param pcb RAW PCB to be bound with a local address ipaddr.
+ * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to
+ * bind to all local interfaces.
+ *
+ * @return lwIP error code.
+ * - ERR_OK. Successful. No error occured.
+ * - ERR_USE. The specified IP address is already bound to by
+ * another RAW PCB.
+ *
+ * @see raw_disconnect()
+ */
+err_t
+raw_bind(struct raw_pcb *pcb, struct ip_addr *ipaddr)
+{
+ ip_addr_set(&pcb->local_ip, ipaddr);
+ return ERR_OK;
+}
+
+/**
+ * Connect an RAW PCB. This function is required by upper layers
+ * of lwip. Using the raw api you could use raw_sendto() instead
+ *
+ * This will associate the RAW PCB with the remote address.
+ *
+ * @param pcb RAW PCB to be connected with remote address ipaddr and port.
+ * @param ipaddr remote IP address to connect with.
+ *
+ * @return lwIP error code
+ *
+ * @see raw_disconnect() and raw_sendto()
+ */
+err_t
+raw_connect(struct raw_pcb *pcb, struct ip_addr *ipaddr)
+{
+ ip_addr_set(&pcb->remote_ip, ipaddr);
+ return ERR_OK;
+}
+
+
+/**
+ * Set the callback function for received packets that match the
+ * raw PCB's protocol and binding.
+ *
+ * The callback function MUST either
+ * - eat the packet by calling pbuf_free() and returning non-zero. The
+ * packet will not be passed to other raw PCBs or other protocol layers.
+ * - not free the packet, and return zero. The packet will be matched
+ * against further PCBs and/or forwarded to another protocol layers.
+ *
+ * @return non-zero if the packet was free()d, zero if the packet remains
+ * available for others.
+ */
+void
+raw_recv(struct raw_pcb *pcb,
+ u8_t (* recv)(void *arg, struct raw_pcb *upcb, struct pbuf *p,
+ struct ip_addr *addr),
+ void *recv_arg)
+{
+ /* remember recv() callback and user data */
+ pcb->recv = recv;
+ pcb->recv_arg = recv_arg;
+}
+
+/**
+ * Send the raw IP packet to the given address. Note that actually you cannot
+ * modify the IP headers (this is inconsistent with the receive callback where
+ * you actually get the IP headers), you can only specify the IP payload here.
+ * It requires some more changes in lwIP. (there will be a raw_send() function
+ * then.)
+ *
+ * @param pcb the raw pcb which to send
+ * @param p the IP payload to send
+ * @param ipaddr the destination address of the IP packet
+ *
+ */
+err_t
+raw_sendto(struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr)
+{
+ err_t err;
+ struct netif *netif;
+ struct ip_addr *src_ip;
+ struct pbuf *q; /* q will be sent down the stack */
+
+ LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_sendto\n"));
+
+ /* not enough space to add an IP header to first pbuf in given p chain? */
+ if (pbuf_header(p, IP_HLEN)) {
+ /* allocate header in new pbuf */
+ q = pbuf_alloc(PBUF_IP, 0, PBUF_RAM);
+ /* new header pbuf could not be allocated? */
+ if (q == NULL) {
+ LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("raw_sendto: could not allocate header\n"));
+ return ERR_MEM;
+ }
+ /* chain header q in front of given pbuf p */
+ pbuf_chain(q, p);
+ /* { first pbuf q points to header pbuf } */
+ LWIP_DEBUGF(RAW_DEBUG, ("raw_sendto: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p));
+ } else {
+ /* first pbuf q equals given pbuf */
+ q = p;
+ if(pbuf_header(q, -IP_HLEN)) {
+ LWIP_ASSERT("Can't restore header we just removed!", 0);
+ return ERR_MEM;
+ }
+ }
+
+ if ((netif = ip_route(ipaddr)) == NULL) {
+ LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: No route to 0x%"X32_F"\n", ipaddr->addr));
+ /* free any temporary header pbuf allocated by pbuf_header() */
+ if (q != p) {
+ pbuf_free(q);
+ }
+ return ERR_RTE;
+ }
+
+#if IP_SOF_BROADCAST
+ /* broadcast filter? */
+ if ( ((pcb->so_options & SOF_BROADCAST) == 0) && ip_addr_isbroadcast(ipaddr, netif) ) {
+ LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb));
+ /* free any temporary header pbuf allocated by pbuf_header() */
+ if (q != p) {
+ pbuf_free(q);
+ }
+ return ERR_VAL;
+ }
+#endif /* IP_SOF_BROADCAST */
+
+ if (ip_addr_isany(&pcb->local_ip)) {
+ /* use outgoing network interface IP address as source address */
+ src_ip = &(netif->ip_addr);
+ } else {
+ /* use RAW PCB local IP address as source address */
+ src_ip = &(pcb->local_ip);
+ }
+
+#if LWIP_NETIF_HWADDRHINT
+ netif->addr_hint = &(pcb->addr_hint);
+#endif /* LWIP_NETIF_HWADDRHINT*/
+ err = ip_output_if (q, src_ip, ipaddr, pcb->ttl, pcb->tos, pcb->protocol, netif);
+#if LWIP_NETIF_HWADDRHINT
+ netif->addr_hint = NULL;
+#endif /* LWIP_NETIF_HWADDRHINT*/
+
+ /* did we chain a header earlier? */
+ if (q != p) {
+ /* free the header */
+ pbuf_free(q);
+ }
+ return err;
+}
+
+/**
+ * Send the raw IP packet to the address given by raw_connect()
+ *
+ * @param pcb the raw pcb which to send
+ * @param p the IP payload to send
+ *
+ */
+err_t
+raw_send(struct raw_pcb *pcb, struct pbuf *p)
+{
+ return raw_sendto(pcb, p, &pcb->remote_ip);
+}
+
+/**
+ * Remove an RAW PCB.
+ *
+ * @param pcb RAW PCB to be removed. The PCB is removed from the list of
+ * RAW PCB's and the data structure is freed from memory.
+ *
+ * @see raw_new()
+ */
+void
+raw_remove(struct raw_pcb *pcb)
+{
+ struct raw_pcb *pcb2;
+ /* pcb to be removed is first in list? */
+ if (raw_pcbs == pcb) {
+ /* make list start at 2nd pcb */
+ raw_pcbs = raw_pcbs->next;
+ /* pcb not 1st in list */
+ } else {
+ for(pcb2 = raw_pcbs; pcb2 != NULL; pcb2 = pcb2->next) {
+ /* find pcb in raw_pcbs list */
+ if (pcb2->next != NULL && pcb2->next == pcb) {
+ /* remove pcb from list */
+ pcb2->next = pcb->next;
+ }
+ }
+ }
+ memp_free(MEMP_RAW_PCB, pcb);
+}
+
+/**
+ * Create a RAW PCB.
+ *
+ * @return The RAW PCB which was created. NULL if the PCB data structure
+ * could not be allocated.
+ *
+ * @param proto the protocol number of the IPs payload (e.g. IP_PROTO_ICMP)
+ *
+ * @see raw_remove()
+ */
+struct raw_pcb *
+raw_new(u8_t proto) {
+ struct raw_pcb *pcb;
+
+ LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_new\n"));
+
+ pcb = memp_malloc(MEMP_RAW_PCB);
+ /* could allocate RAW PCB? */
+ if (pcb != NULL) {
+ /* initialize PCB to all zeroes */
+ memset(pcb, 0, sizeof(struct raw_pcb));
+ pcb->protocol = proto;
+ pcb->ttl = RAW_TTL;
+ pcb->next = raw_pcbs;
+ raw_pcbs = pcb;
+ }
+ return pcb;
+}
+
+#endif /* LWIP_RAW */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c
new file mode 100644
index 0000000..4299a94
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c
@@ -0,0 +1,151 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Statistics module
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_STATS /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/def.h"
+#include "lwip/stats.h"
+#include "lwip/mem.h"
+
+#include <string.h>
+
+struct stats_ lwip_stats;
+
+#if LWIP_STATS_DISPLAY
+void
+stats_display_proto(struct stats_proto *proto, char *name)
+{
+ LWIP_PLATFORM_DIAG(("\n%s\n\t", name));
+ LWIP_PLATFORM_DIAG(("xmit: %"STAT_COUNTER_F"\n\t", proto->xmit));
+ LWIP_PLATFORM_DIAG(("recv: %"STAT_COUNTER_F"\n\t", proto->recv));
+ LWIP_PLATFORM_DIAG(("fw: %"STAT_COUNTER_F"\n\t", proto->fw));
+ LWIP_PLATFORM_DIAG(("drop: %"STAT_COUNTER_F"\n\t", proto->drop));
+ LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", proto->chkerr));
+ LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", proto->lenerr));
+ LWIP_PLATFORM_DIAG(("memerr: %"STAT_COUNTER_F"\n\t", proto->memerr));
+ LWIP_PLATFORM_DIAG(("rterr: %"STAT_COUNTER_F"\n\t", proto->rterr));
+ LWIP_PLATFORM_DIAG(("proterr: %"STAT_COUNTER_F"\n\t", proto->proterr));
+ LWIP_PLATFORM_DIAG(("opterr: %"STAT_COUNTER_F"\n\t", proto->opterr));
+ LWIP_PLATFORM_DIAG(("err: %"STAT_COUNTER_F"\n\t", proto->err));
+ LWIP_PLATFORM_DIAG(("cachehit: %"STAT_COUNTER_F"\n", proto->cachehit));
+}
+
+#if IGMP_STATS
+void
+stats_display_igmp(struct stats_igmp *igmp)
+{
+ LWIP_PLATFORM_DIAG(("\nIGMP\n\t"));
+ LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", igmp->lenerr));
+ LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", igmp->chkerr));
+ LWIP_PLATFORM_DIAG(("v1_rxed: %"STAT_COUNTER_F"\n\t", igmp->v1_rxed));
+ LWIP_PLATFORM_DIAG(("join_sent: %"STAT_COUNTER_F"\n\t", igmp->join_sent));
+ LWIP_PLATFORM_DIAG(("leave_sent: %"STAT_COUNTER_F"\n\t", igmp->leave_sent));
+ LWIP_PLATFORM_DIAG(("unicast_query: %"STAT_COUNTER_F"\n\t", igmp->unicast_query));
+ LWIP_PLATFORM_DIAG(("report_sent: %"STAT_COUNTER_F"\n\t", igmp->report_sent));
+ LWIP_PLATFORM_DIAG(("report_rxed: %"STAT_COUNTER_F"\n\t", igmp->report_rxed));
+ LWIP_PLATFORM_DIAG(("group_query_rxed: %"STAT_COUNTER_F"\n", igmp->group_query_rxed));
+}
+#endif /* IGMP_STATS */
+
+#if MEM_STATS || MEMP_STATS
+void
+stats_display_mem(struct stats_mem *mem, char *name)
+{
+ LWIP_PLATFORM_DIAG(("\nMEM %s\n\t", name));
+ LWIP_PLATFORM_DIAG(("avail: %"U32_F"\n\t", (u32_t)mem->avail));
+ LWIP_PLATFORM_DIAG(("used: %"U32_F"\n\t", (u32_t)mem->used));
+ LWIP_PLATFORM_DIAG(("max: %"U32_F"\n\t", (u32_t)mem->max));
+ LWIP_PLATFORM_DIAG(("err: %"U32_F"\n", (u32_t)mem->err));
+}
+
+#if MEMP_STATS
+void
+stats_display_memp(struct stats_mem *mem, int index)
+{
+ char * memp_names[] = {
+#define LWIP_MEMPOOL(name,num,size,desc) desc,
+#include "lwip/memp_std.h"
+ };
+ if(index < MEMP_MAX) {
+ stats_display_mem(mem, memp_names[index]);
+ }
+}
+#endif /* MEMP_STATS */
+#endif /* MEM_STATS || MEMP_STATS */
+
+#if SYS_STATS
+void
+stats_display_sys(struct stats_sys *sys)
+{
+ LWIP_PLATFORM_DIAG(("\nSYS\n\t"));
+ LWIP_PLATFORM_DIAG(("sem.used: %"U32_F"\n\t", (u32_t)sys->sem.used));
+ LWIP_PLATFORM_DIAG(("sem.max: %"U32_F"\n\t", (u32_t)sys->sem.max));
+ LWIP_PLATFORM_DIAG(("sem.err: %"U32_F"\n\t", (u32_t)sys->sem.err));
+ LWIP_PLATFORM_DIAG(("mbox.used: %"U32_F"\n\t", (u32_t)sys->mbox.used));
+ LWIP_PLATFORM_DIAG(("mbox.max: %"U32_F"\n\t", (u32_t)sys->mbox.max));
+ LWIP_PLATFORM_DIAG(("mbox.err: %"U32_F"\n\t", (u32_t)sys->mbox.err));
+}
+#endif /* SYS_STATS */
+
+void
+stats_display(void)
+{
+ s16_t i;
+
+ LINK_STATS_DISPLAY();
+ ETHARP_STATS_DISPLAY();
+ IPFRAG_STATS_DISPLAY();
+ IP_STATS_DISPLAY();
+ IGMP_STATS_DISPLAY();
+ ICMP_STATS_DISPLAY();
+ UDP_STATS_DISPLAY();
+ TCP_STATS_DISPLAY();
+ MEM_STATS_DISPLAY();
+ for (i = 0; i < MEMP_MAX; i++) {
+ MEMP_STATS_DISPLAY(i);
+ }
+ SYS_STATS_DISPLAY();
+}
+#endif /* LWIP_STATS_DISPLAY */
+
+#endif /* LWIP_STATS */
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c
new file mode 100644
index 0000000..c588d21
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c
@@ -0,0 +1,1463 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Transmission Control Protocol for IP
+ *
+ * This file contains common functions for the TCP implementation, such as functinos
+ * for manipulating the data structures and the TCP timer functions. TCP functions
+ * related to input and output is found in tcp_in.c and tcp_out.c respectively.
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/def.h"
+#include "lwip/mem.h"
+#include "lwip/memp.h"
+#include "lwip/snmp.h"
+#include "lwip/tcp.h"
+#include "lwip/debug.h"
+#include "lwip/stats.h"
+
+#include <string.h>
+
+const char *tcp_state_str[] = {
+ "CLOSED",
+ "LISTEN",
+ "SYN_SENT",
+ "SYN_RCVD",
+ "ESTABLISHED",
+ "FIN_WAIT_1",
+ "FIN_WAIT_2",
+ "CLOSE_WAIT",
+ "CLOSING",
+ "LAST_ACK",
+ "TIME_WAIT"
+};
+
+/* Incremented every coarse grained timer shot (typically every 500 ms). */
+u32_t tcp_ticks;
+const u8_t tcp_backoff[13] =
+ { 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7};
+ /* Times per slowtmr hits */
+const u8_t tcp_persist_backoff[7] = { 3, 6, 12, 24, 48, 96, 120 };
+
+/* The TCP PCB lists. */
+
+/** List of all TCP PCBs bound but not yet (connected || listening) */
+struct tcp_pcb *tcp_bound_pcbs;
+/** List of all TCP PCBs in LISTEN state */
+union tcp_listen_pcbs_t tcp_listen_pcbs;
+/** List of all TCP PCBs that are in a state in which
+ * they accept or send data. */
+struct tcp_pcb *tcp_active_pcbs;
+/** List of all TCP PCBs in TIME-WAIT state */
+struct tcp_pcb *tcp_tw_pcbs;
+
+struct tcp_pcb *tcp_tmp_pcb;
+
+static u8_t tcp_timer;
+static u16_t tcp_new_port(void);
+
+/**
+ * Called periodically to dispatch TCP timers.
+ *
+ */
+void
+tcp_tmr(void)
+{
+ /* Call tcp_fasttmr() every 250 ms */
+ tcp_fasttmr();
+
+ if (++tcp_timer & 1) {
+ /* Call tcp_tmr() every 500 ms, i.e., every other timer
+ tcp_tmr() is called. */
+ tcp_slowtmr();
+ }
+}
+
+/**
+ * Closes the connection held by the PCB.
+ *
+ * Listening pcbs are freed and may not be referenced any more.
+ * Connection pcbs are freed if not yet connected and may not be referenced
+ * any more. If a connection is established (at least SYN received or in
+ * a closing state), the connection is closed, and put in a closing state.
+ * The pcb is then automatically freed in tcp_slowtmr(). It is therefore
+ * unsafe to reference it.
+ *
+ * @param pcb the tcp_pcb to close
+ * @return ERR_OK if connection has been closed
+ * another err_t if closing failed and pcb is not freed
+ */
+err_t
+tcp_close(struct tcp_pcb *pcb)
+{
+ err_t err;
+
+#if TCP_DEBUG
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_close: closing in "));
+ tcp_debug_print_state(pcb->state);
+#endif /* TCP_DEBUG */
+
+ switch (pcb->state) {
+ case CLOSED:
+ /* Closing a pcb in the CLOSED state might seem erroneous,
+ * however, it is in this state once allocated and as yet unused
+ * and the user needs some way to free it should the need arise.
+ * Calling tcp_close() with a pcb that has already been closed, (i.e. twice)
+ * or for a pcb that has been used and then entered the CLOSED state
+ * is erroneous, but this should never happen as the pcb has in those cases
+ * been freed, and so any remaining handles are bogus. */
+ err = ERR_OK;
+ TCP_RMV(&tcp_bound_pcbs, pcb);
+ memp_free(MEMP_TCP_PCB, pcb);
+ pcb = NULL;
+ break;
+ case LISTEN:
+ err = ERR_OK;
+ tcp_pcb_remove((struct tcp_pcb **)&tcp_listen_pcbs.pcbs, pcb);
+ memp_free(MEMP_TCP_PCB_LISTEN, pcb);
+ pcb = NULL;
+ break;
+ case SYN_SENT:
+ err = ERR_OK;
+ tcp_pcb_remove(&tcp_active_pcbs, pcb);
+ memp_free(MEMP_TCP_PCB, pcb);
+ pcb = NULL;
+ snmp_inc_tcpattemptfails();
+ break;
+ case SYN_RCVD:
+ err = tcp_send_ctrl(pcb, TCP_FIN);
+ if (err == ERR_OK) {
+ snmp_inc_tcpattemptfails();
+ pcb->state = FIN_WAIT_1;
+ }
+ break;
+ case ESTABLISHED:
+ err = tcp_send_ctrl(pcb, TCP_FIN);
+ if (err == ERR_OK) {
+ snmp_inc_tcpestabresets();
+ pcb->state = FIN_WAIT_1;
+ }
+ break;
+ case CLOSE_WAIT:
+ err = tcp_send_ctrl(pcb, TCP_FIN);
+ if (err == ERR_OK) {
+ snmp_inc_tcpestabresets();
+ pcb->state = LAST_ACK;
+ }
+ break;
+ default:
+ /* Has already been closed, do nothing. */
+ err = ERR_OK;
+ pcb = NULL;
+ break;
+ }
+
+ if (pcb != NULL && err == ERR_OK) {
+ /* To ensure all data has been sent when tcp_close returns, we have
+ to make sure tcp_output doesn't fail.
+ Since we don't really have to ensure all data has been sent when tcp_close
+ returns (unsent data is sent from tcp timer functions, also), we don't care
+ for the return value of tcp_output for now. */
+ /* @todo: When implementing SO_LINGER, this must be changed somehow:
+ If SOF_LINGER is set, the data should be sent when tcp_close returns. */
+ tcp_output(pcb);
+ }
+ return err;
+}
+
+/**
+ * Abandons a connection and optionally sends a RST to the remote
+ * host. Deletes the local protocol control block. This is done when
+ * a connection is killed because of shortage of memory.
+ *
+ * @param pcb the tcp_pcb to abort
+ * @param reset boolean to indicate whether a reset should be sent
+ */
+void
+tcp_abandon(struct tcp_pcb *pcb, int reset)
+{
+ u32_t seqno, ackno;
+ u16_t remote_port, local_port;
+ struct ip_addr remote_ip, local_ip;
+#if LWIP_CALLBACK_API
+ void (* errf)(void *arg, err_t err);
+#endif /* LWIP_CALLBACK_API */
+ void *errf_arg;
+
+
+ /* Figure out on which TCP PCB list we are, and remove us. If we
+ are in an active state, call the receive function associated with
+ the PCB with a NULL argument, and send an RST to the remote end. */
+ if (pcb->state == TIME_WAIT) {
+ tcp_pcb_remove(&tcp_tw_pcbs, pcb);
+ memp_free(MEMP_TCP_PCB, pcb);
+ } else {
+ seqno = pcb->snd_nxt;
+ ackno = pcb->rcv_nxt;
+ ip_addr_set(&local_ip, &(pcb->local_ip));
+ ip_addr_set(&remote_ip, &(pcb->remote_ip));
+ local_port = pcb->local_port;
+ remote_port = pcb->remote_port;
+#if LWIP_CALLBACK_API
+ errf = pcb->errf;
+#endif /* LWIP_CALLBACK_API */
+ errf_arg = pcb->callback_arg;
+ tcp_pcb_remove(&tcp_active_pcbs, pcb);
+ if (pcb->unacked != NULL) {
+ tcp_segs_free(pcb->unacked);
+ }
+ if (pcb->unsent != NULL) {
+ tcp_segs_free(pcb->unsent);
+ }
+#if TCP_QUEUE_OOSEQ
+ if (pcb->ooseq != NULL) {
+ tcp_segs_free(pcb->ooseq);
+ }
+#endif /* TCP_QUEUE_OOSEQ */
+ memp_free(MEMP_TCP_PCB, pcb);
+ TCP_EVENT_ERR(errf, errf_arg, ERR_ABRT);
+ if (reset) {
+ LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n"));
+ tcp_rst(seqno, ackno, &local_ip, &remote_ip, local_port, remote_port);
+ }
+ }
+}
+
+/**
+ * Binds the connection to a local portnumber and IP address. If the
+ * IP address is not given (i.e., ipaddr == NULL), the IP address of
+ * the outgoing network interface is used instead.
+ *
+ * @param pcb the tcp_pcb to bind (no check is done whether this pcb is
+ * already bound!)
+ * @param ipaddr the local ip address to bind to (use IP_ADDR_ANY to bind
+ * to any local address
+ * @param port the local port to bind to
+ * @return ERR_USE if the port is already in use
+ * ERR_OK if bound
+ */
+err_t
+tcp_bind(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
+{
+ struct tcp_pcb *cpcb;
+
+ LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_ISCONN);
+
+ if (port == 0) {
+ port = tcp_new_port();
+ }
+ /* Check if the address already is in use. */
+ /* Check the listen pcbs. */
+ for(cpcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs;
+ cpcb != NULL; cpcb = cpcb->next) {
+ if (cpcb->local_port == port) {
+ if (ip_addr_isany(&(cpcb->local_ip)) ||
+ ip_addr_isany(ipaddr) ||
+ ip_addr_cmp(&(cpcb->local_ip), ipaddr)) {
+ return ERR_USE;
+ }
+ }
+ }
+ /* Check the connected pcbs. */
+ for(cpcb = tcp_active_pcbs;
+ cpcb != NULL; cpcb = cpcb->next) {
+ if (cpcb->local_port == port) {
+ if (ip_addr_isany(&(cpcb->local_ip)) ||
+ ip_addr_isany(ipaddr) ||
+ ip_addr_cmp(&(cpcb->local_ip), ipaddr)) {
+ return ERR_USE;
+ }
+ }
+ }
+ /* Check the bound, not yet connected pcbs. */
+ for(cpcb = tcp_bound_pcbs; cpcb != NULL; cpcb = cpcb->next) {
+ if (cpcb->local_port == port) {
+ if (ip_addr_isany(&(cpcb->local_ip)) ||
+ ip_addr_isany(ipaddr) ||
+ ip_addr_cmp(&(cpcb->local_ip), ipaddr)) {
+ return ERR_USE;
+ }
+ }
+ }
+ /* @todo: until SO_REUSEADDR is implemented (see task #6995 on savannah),
+ * we have to check the pcbs in TIME-WAIT state, also: */
+ for(cpcb = tcp_tw_pcbs; cpcb != NULL; cpcb = cpcb->next) {
+ if (cpcb->local_port == port) {
+ if (ip_addr_cmp(&(cpcb->local_ip), ipaddr)) {
+ return ERR_USE;
+ }
+ }
+ }
+
+ if (!ip_addr_isany(ipaddr)) {
+ pcb->local_ip = *ipaddr;
+ }
+ pcb->local_port = port;
+ TCP_REG(&tcp_bound_pcbs, pcb);
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_bind: bind to port %"U16_F"\n", port));
+ return ERR_OK;
+}
+#if LWIP_CALLBACK_API
+/**
+ * Default accept callback if no accept callback is specified by the user.
+ */
+static err_t
+tcp_accept_null(void *arg, struct tcp_pcb *pcb, err_t err)
+{
+ LWIP_UNUSED_ARG(arg);
+ LWIP_UNUSED_ARG(pcb);
+ LWIP_UNUSED_ARG(err);
+
+ return ERR_ABRT;
+}
+#endif /* LWIP_CALLBACK_API */
+
+/**
+ * Set the state of the connection to be LISTEN, which means that it
+ * is able to accept incoming connections. The protocol control block
+ * is reallocated in order to consume less memory. Setting the
+ * connection to LISTEN is an irreversible process.
+ *
+ * @param pcb the original tcp_pcb
+ * @param backlog the incoming connections queue limit
+ * @return tcp_pcb used for listening, consumes less memory.
+ *
+ * @note The original tcp_pcb is freed. This function therefore has to be
+ * called like this:
+ * tpcb = tcp_listen(tpcb);
+ */
+struct tcp_pcb *
+tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog)
+{
+ struct tcp_pcb_listen *lpcb;
+
+ LWIP_UNUSED_ARG(backlog);
+ LWIP_ERROR("tcp_listen: pcb already connected", pcb->state == CLOSED, return NULL);
+
+ /* already listening? */
+ if (pcb->state == LISTEN) {
+ return pcb;
+ }
+ lpcb = memp_malloc(MEMP_TCP_PCB_LISTEN);
+ if (lpcb == NULL) {
+ return NULL;
+ }
+ lpcb->callback_arg = pcb->callback_arg;
+ lpcb->local_port = pcb->local_port;
+ lpcb->state = LISTEN;
+ lpcb->so_options = pcb->so_options;
+ lpcb->so_options |= SOF_ACCEPTCONN;
+ lpcb->ttl = pcb->ttl;
+ lpcb->tos = pcb->tos;
+ ip_addr_set(&lpcb->local_ip, &pcb->local_ip);
+ TCP_RMV(&tcp_bound_pcbs, pcb);
+ memp_free(MEMP_TCP_PCB, pcb);
+#if LWIP_CALLBACK_API
+ lpcb->accept = tcp_accept_null;
+#endif /* LWIP_CALLBACK_API */
+#if TCP_LISTEN_BACKLOG
+ lpcb->accepts_pending = 0;
+ lpcb->backlog = (backlog ? backlog : 1);
+#endif /* TCP_LISTEN_BACKLOG */
+ TCP_REG(&tcp_listen_pcbs.listen_pcbs, lpcb);
+ return (struct tcp_pcb *)lpcb;
+}
+
+/**
+ * Update the state that tracks the available window space to advertise.
+ *
+ * Returns how much extra window would be advertised if we sent an
+ * update now.
+ */
+u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb)
+{
+ u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd;
+
+ if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) {
+ /* we can advertise more window */
+ pcb->rcv_ann_wnd = pcb->rcv_wnd;
+ return new_right_edge - pcb->rcv_ann_right_edge;
+ } else {
+ if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) {
+ /* Can happen due to other end sending out of advertised window,
+ * but within actual available (but not yet advertised) window */
+ pcb->rcv_ann_wnd = 0;
+ } else {
+ /* keep the right edge of window constant */
+ pcb->rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt;
+ }
+ return 0;
+ }
+}
+
+/**
+ * This function should be called by the application when it has
+ * processed the data. The purpose is to advertise a larger window
+ * when the data has been processed.
+ *
+ * @param pcb the tcp_pcb for which data is read
+ * @param len the amount of bytes that have been read by the application
+ */
+void
+tcp_recved(struct tcp_pcb *pcb, u16_t len)
+{
+ int wnd_inflation;
+
+ LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n",
+ len <= 0xffff - pcb->rcv_wnd );
+
+ pcb->rcv_wnd += len;
+ if (pcb->rcv_wnd > TCP_WND)
+ pcb->rcv_wnd = TCP_WND;
+
+ wnd_inflation = tcp_update_rcv_ann_wnd(pcb);
+
+ /* If the change in the right edge of window is significant (default
+ * watermark is TCP_WND/2), then send an explicit update now.
+ * Otherwise wait for a packet to be sent in the normal course of
+ * events (or more window to be available later) */
+ if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD)
+ tcp_ack_now(pcb);
+
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %"U16_F" bytes, wnd %"U16_F" (%"U16_F").\n",
+ len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd));
+}
+
+/**
+ * A nastly hack featuring 'goto' statements that allocates a
+ * new TCP local port.
+ *
+ * @return a new (free) local TCP port number
+ */
+static u16_t
+tcp_new_port(void)
+{
+ struct tcp_pcb *pcb;
+#ifndef TCP_LOCAL_PORT_RANGE_START
+#define TCP_LOCAL_PORT_RANGE_START 4096
+#define TCP_LOCAL_PORT_RANGE_END 0x7fff
+#endif
+ static u16_t port = TCP_LOCAL_PORT_RANGE_START;
+
+ again:
+ if (++port > TCP_LOCAL_PORT_RANGE_END) {
+ port = TCP_LOCAL_PORT_RANGE_START;
+ }
+
+ for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
+ if (pcb->local_port == port) {
+ goto again;
+ }
+ }
+ for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
+ if (pcb->local_port == port) {
+ goto again;
+ }
+ }
+ for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) {
+ if (pcb->local_port == port) {
+ goto again;
+ }
+ }
+ return port;
+}
+
+/**
+ * Connects to another host. The function given as the "connected"
+ * argument will be called when the connection has been established.
+ *
+ * @param pcb the tcp_pcb used to establish the connection
+ * @param ipaddr the remote ip address to connect to
+ * @param port the remote tcp port to connect to
+ * @param connected callback function to call when connected (or on error)
+ * @return ERR_VAL if invalid arguments are given
+ * ERR_OK if connect request has been sent
+ * other err_t values if connect request couldn't be sent
+ */
+err_t
+tcp_connect(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port,
+ err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err))
+{
+ err_t ret;
+ u32_t iss;
+
+ LWIP_ERROR("tcp_connect: can only connected from state CLOSED", pcb->state == CLOSED, return ERR_ISCONN);
+
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_connect to port %"U16_F"\n", port));
+ if (ipaddr != NULL) {
+ pcb->remote_ip = *ipaddr;
+ } else {
+ return ERR_VAL;
+ }
+ pcb->remote_port = port;
+ if (pcb->local_port == 0) {
+ pcb->local_port = tcp_new_port();
+ }
+ iss = tcp_next_iss();
+ pcb->rcv_nxt = 0;
+ pcb->snd_nxt = iss;
+ pcb->lastack = iss - 1;
+ pcb->snd_lbb = iss - 1;
+ pcb->rcv_wnd = TCP_WND;
+ pcb->rcv_ann_wnd = TCP_WND;
+ pcb->rcv_ann_right_edge = pcb->rcv_nxt;
+ pcb->snd_wnd = TCP_WND;
+ /* As initial send MSS, we use TCP_MSS but limit it to 536.
+ The send MSS is updated when an MSS option is received. */
+ pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS;
+#if TCP_CALCULATE_EFF_SEND_MSS
+ pcb->mss = tcp_eff_send_mss(pcb->mss, ipaddr);
+#endif /* TCP_CALCULATE_EFF_SEND_MSS */
+ pcb->cwnd = 1;
+ pcb->ssthresh = pcb->mss * 10;
+ pcb->state = SYN_SENT;
+#if LWIP_CALLBACK_API
+ pcb->connected = connected;
+#endif /* LWIP_CALLBACK_API */
+ TCP_RMV(&tcp_bound_pcbs, pcb);
+ TCP_REG(&tcp_active_pcbs, pcb);
+
+ snmp_inc_tcpactiveopens();
+
+ ret = tcp_enqueue(pcb, NULL, 0, TCP_SYN, 0, TF_SEG_OPTS_MSS
+#if LWIP_TCP_TIMESTAMPS
+ | TF_SEG_OPTS_TS
+#endif
+ );
+ if (ret == ERR_OK) {
+ tcp_output(pcb);
+ }
+ return ret;
+}
+
+/**
+ * Called every 500 ms and implements the retransmission timer and the timer that
+ * removes PCBs that have been in TIME-WAIT for enough time. It also increments
+ * various timers such as the inactivity timer in each PCB.
+ *
+ * Automatically called from tcp_tmr().
+ */
+void
+tcp_slowtmr(void)
+{
+ struct tcp_pcb *pcb, *pcb2, *prev;
+ u16_t eff_wnd;
+ u8_t pcb_remove; /* flag if a PCB should be removed */
+ u8_t pcb_reset; /* flag if a RST should be sent when removing */
+ err_t err;
+
+ err = ERR_OK;
+
+ ++tcp_ticks;
+
+ /* Steps through all of the active PCBs. */
+ prev = NULL;
+ pcb = tcp_active_pcbs;
+ if (pcb == NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n"));
+ }
+ while (pcb != NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n"));
+ LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED);
+ LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN);
+ LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT);
+
+ pcb_remove = 0;
+ pcb_reset = 0;
+
+ if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) {
+ ++pcb_remove;
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n"));
+ }
+ else if (pcb->nrtx == TCP_MAXRTX) {
+ ++pcb_remove;
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));
+ } else {
+ if (pcb->persist_backoff > 0) {
+ /* If snd_wnd is zero, use persist timer to send 1 byte probes
+ * instead of using the standard retransmission mechanism. */
+ pcb->persist_cnt++;
+ if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) {
+ pcb->persist_cnt = 0;
+ if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) {
+ pcb->persist_backoff++;
+ }
+ tcp_zero_window_probe(pcb);
+ }
+ } else {
+ /* Increase the retransmission timer if it is running */
+ if(pcb->rtime >= 0)
+ ++pcb->rtime;
+
+ if (pcb->unacked != NULL && pcb->rtime >= pcb->rto) {
+ /* Time for a retransmission. */
+ LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_slowtmr: rtime %"S16_F
+ " pcb->rto %"S16_F"\n",
+ pcb->rtime, pcb->rto));
+
+ /* Double retransmission time-out unless we are trying to
+ * connect to somebody (i.e., we are in SYN_SENT). */
+ if (pcb->state != SYN_SENT) {
+ pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx];
+ }
+
+ /* Reset the retransmission timer. */
+ pcb->rtime = 0;
+
+ /* Reduce congestion window and ssthresh. */
+ eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd);
+ pcb->ssthresh = eff_wnd >> 1;
+ if (pcb->ssthresh < pcb->mss) {
+ pcb->ssthresh = pcb->mss * 2;
+ }
+ pcb->cwnd = pcb->mss;
+ LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %"U16_F
+ " ssthresh %"U16_F"\n",
+ pcb->cwnd, pcb->ssthresh));
+
+ /* The following needs to be called AFTER cwnd is set to one
+ mss - STJ */
+ tcp_rexmit_rto(pcb);
+ }
+ }
+ }
+ /* Check if this PCB has stayed too long in FIN-WAIT-2 */
+ if (pcb->state == FIN_WAIT_2) {
+ if ((u32_t)(tcp_ticks - pcb->tmr) >
+ TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) {
+ ++pcb_remove;
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in FIN-WAIT-2\n"));
+ }
+ }
+
+ /* Check if KEEPALIVE should be sent */
+ if((pcb->so_options & SOF_KEEPALIVE) &&
+ ((pcb->state == ESTABLISHED) ||
+ (pcb->state == CLOSE_WAIT))) {
+#if LWIP_TCP_KEEPALIVE
+ if((u32_t)(tcp_ticks - pcb->tmr) >
+ (pcb->keep_idle + (pcb->keep_cnt*pcb->keep_intvl))
+ / TCP_SLOW_INTERVAL)
+#else
+ if((u32_t)(tcp_ticks - pcb->tmr) >
+ (pcb->keep_idle + TCP_MAXIDLE) / TCP_SLOW_INTERVAL)
+#endif /* LWIP_TCP_KEEPALIVE */
+ {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting connection to %"U16_F".%"U16_F".%"U16_F".%"U16_F".\n",
+ ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip),
+ ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip)));
+
+ ++pcb_remove;
+ ++pcb_reset;
+ }
+#if LWIP_TCP_KEEPALIVE
+ else if((u32_t)(tcp_ticks - pcb->tmr) >
+ (pcb->keep_idle + pcb->keep_cnt_sent * pcb->keep_intvl)
+ / TCP_SLOW_INTERVAL)
+#else
+ else if((u32_t)(tcp_ticks - pcb->tmr) >
+ (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEPINTVL_DEFAULT)
+ / TCP_SLOW_INTERVAL)
+#endif /* LWIP_TCP_KEEPALIVE */
+ {
+ tcp_keepalive(pcb);
+ pcb->keep_cnt_sent++;
+ }
+ }
+
+ /* If this PCB has queued out of sequence data, but has been
+ inactive for too long, will drop the data (it will eventually
+ be retransmitted). */
+#if TCP_QUEUE_OOSEQ
+ if (pcb->ooseq != NULL &&
+ (u32_t)tcp_ticks - pcb->tmr >= pcb->rto * TCP_OOSEQ_TIMEOUT) {
+ tcp_segs_free(pcb->ooseq);
+ pcb->ooseq = NULL;
+ LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: dropping OOSEQ queued data\n"));
+ }
+#endif /* TCP_QUEUE_OOSEQ */
+
+ /* Check if this PCB has stayed too long in SYN-RCVD */
+ if (pcb->state == SYN_RCVD) {
+ if ((u32_t)(tcp_ticks - pcb->tmr) >
+ TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) {
+ ++pcb_remove;
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in SYN-RCVD\n"));
+ }
+ }
+
+ /* Check if this PCB has stayed too long in LAST-ACK */
+ if (pcb->state == LAST_ACK) {
+ if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
+ ++pcb_remove;
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in LAST-ACK\n"));
+ }
+ }
+
+ /* If the PCB should be removed, do it. */
+ if (pcb_remove) {
+ tcp_pcb_purge(pcb);
+ /* Remove PCB from tcp_active_pcbs list. */
+ if (prev != NULL) {
+ LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs);
+ prev->next = pcb->next;
+ } else {
+ /* This PCB was the first. */
+ LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb);
+ tcp_active_pcbs = pcb->next;
+ }
+
+ TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_ABRT);
+ if (pcb_reset) {
+ tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip,
+ pcb->local_port, pcb->remote_port);
+ }
+
+ pcb2 = pcb->next;
+ memp_free(MEMP_TCP_PCB, pcb);
+ pcb = pcb2;
+ } else {
+
+ /* We check if we should poll the connection. */
+ ++pcb->polltmr;
+ if (pcb->polltmr >= pcb->pollinterval) {
+ pcb->polltmr = 0;
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n"));
+ TCP_EVENT_POLL(pcb, err);
+ if (err == ERR_OK) {
+ tcp_output(pcb);
+ }
+ }
+
+ prev = pcb;
+ pcb = pcb->next;
+ }
+ }
+
+
+ /* Steps through all of the TIME-WAIT PCBs. */
+ prev = NULL;
+ pcb = tcp_tw_pcbs;
+ while (pcb != NULL) {
+ LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
+ pcb_remove = 0;
+
+ /* Check if this PCB has stayed long enough in TIME-WAIT */
+ if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
+ ++pcb_remove;
+ }
+
+
+
+ /* If the PCB should be removed, do it. */
+ if (pcb_remove) {
+ tcp_pcb_purge(pcb);
+ /* Remove PCB from tcp_tw_pcbs list. */
+ if (prev != NULL) {
+ LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);
+ prev->next = pcb->next;
+ } else {
+ /* This PCB was the first. */
+ LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);
+ tcp_tw_pcbs = pcb->next;
+ }
+ pcb2 = pcb->next;
+ memp_free(MEMP_TCP_PCB, pcb);
+ pcb = pcb2;
+ } else {
+ prev = pcb;
+ pcb = pcb->next;
+ }
+ }
+}
+
+/**
+ * Is called every TCP_FAST_INTERVAL (250 ms) and process data previously
+ * "refused" by upper layer (application) and sends delayed ACKs.
+ *
+ * Automatically called from tcp_tmr().
+ */
+void
+tcp_fasttmr(void)
+{
+ struct tcp_pcb *pcb;
+
+ for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
+ /* If there is data which was previously "refused" by upper layer */
+ if (pcb->refused_data != NULL) {
+ /* Notify again application with data previously received. */
+ err_t err;
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_fasttmr: notify kept packet\n"));
+ TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err);
+ if (err == ERR_OK) {
+ pcb->refused_data = NULL;
+ }
+ }
+
+ /* send delayed ACKs */
+ if (pcb->flags & TF_ACK_DELAY) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n"));
+ tcp_ack_now(pcb);
+ pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);
+ }
+ }
+}
+
+/**
+ * Deallocates a list of TCP segments (tcp_seg structures).
+ *
+ * @param seg tcp_seg list of TCP segments to free
+ * @return the number of pbufs that were deallocated
+ */
+u8_t
+tcp_segs_free(struct tcp_seg *seg)
+{
+ u8_t count = 0;
+ struct tcp_seg *next;
+ while (seg != NULL) {
+ next = seg->next;
+ count += tcp_seg_free(seg);
+ seg = next;
+ }
+ return count;
+}
+
+/**
+ * Frees a TCP segment (tcp_seg structure).
+ *
+ * @param seg single tcp_seg to free
+ * @return the number of pbufs that were deallocated
+ */
+u8_t
+tcp_seg_free(struct tcp_seg *seg)
+{
+ u8_t count = 0;
+
+ if (seg != NULL) {
+ if (seg->p != NULL) {
+ count = pbuf_free(seg->p);
+#if TCP_DEBUG
+ seg->p = NULL;
+#endif /* TCP_DEBUG */
+ }
+ memp_free(MEMP_TCP_SEG, seg);
+ }
+ return count;
+}
+
+/**
+ * Sets the priority of a connection.
+ *
+ * @param pcb the tcp_pcb to manipulate
+ * @param prio new priority
+ */
+void
+tcp_setprio(struct tcp_pcb *pcb, u8_t prio)
+{
+ pcb->prio = prio;
+}
+#if TCP_QUEUE_OOSEQ
+
+/**
+ * Returns a copy of the given TCP segment.
+ * The pbuf and data are not copied, only the pointers
+ *
+ * @param seg the old tcp_seg
+ * @return a copy of seg
+ */
+struct tcp_seg *
+tcp_seg_copy(struct tcp_seg *seg)
+{
+ struct tcp_seg *cseg;
+
+ cseg = memp_malloc(MEMP_TCP_SEG);
+ if (cseg == NULL) {
+ return NULL;
+ }
+ SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg));
+ pbuf_ref(cseg->p);
+ return cseg;
+}
+#endif
+
+#if LWIP_CALLBACK_API
+/**
+ * Default receive callback that is called if the user didn't register
+ * a recv callback for the pcb.
+ */
+err_t
+tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
+{
+ LWIP_UNUSED_ARG(arg);
+ if (p != NULL) {
+ tcp_recved(pcb, p->tot_len);
+ pbuf_free(p);
+ } else if (err == ERR_OK) {
+ return tcp_close(pcb);
+ }
+ return ERR_OK;
+}
+#endif /* LWIP_CALLBACK_API */
+
+/**
+ * Kills the oldest active connection that has lower priority than prio.
+ *
+ * @param prio minimum priority
+ */
+static void
+tcp_kill_prio(u8_t prio)
+{
+ struct tcp_pcb *pcb, *inactive;
+ u32_t inactivity;
+ u8_t mprio;
+
+
+ mprio = TCP_PRIO_MAX;
+
+ /* We kill the oldest active connection that has lower priority than prio. */
+ inactivity = 0;
+ inactive = NULL;
+ for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
+ if (pcb->prio <= prio &&
+ pcb->prio <= mprio &&
+ (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
+ inactivity = tcp_ticks - pcb->tmr;
+ inactive = pcb;
+ mprio = pcb->prio;
+ }
+ }
+ if (inactive != NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n",
+ (void *)inactive, inactivity));
+ tcp_abort(inactive);
+ }
+}
+
+/**
+ * Kills the oldest connection that is in TIME_WAIT state.
+ * Called from tcp_alloc() if no more connections are available.
+ */
+static void
+tcp_kill_timewait(void)
+{
+ struct tcp_pcb *pcb, *inactive;
+ u32_t inactivity;
+
+ inactivity = 0;
+ inactive = NULL;
+ /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */
+ for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
+ if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
+ inactivity = tcp_ticks - pcb->tmr;
+ inactive = pcb;
+ }
+ }
+ if (inactive != NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_timewait: killing oldest TIME-WAIT PCB %p (%"S32_F")\n",
+ (void *)inactive, inactivity));
+ tcp_abort(inactive);
+ }
+}
+
+/**
+ * Allocate a new tcp_pcb structure.
+ *
+ * @param prio priority for the new pcb
+ * @return a new tcp_pcb that initially is in state CLOSED
+ */
+struct tcp_pcb *
+tcp_alloc(u8_t prio)
+{
+ struct tcp_pcb *pcb;
+ u32_t iss;
+
+ pcb = memp_malloc(MEMP_TCP_PCB);
+ if (pcb == NULL) {
+ /* Try killing oldest connection in TIME-WAIT. */
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest TIME-WAIT connection\n"));
+ tcp_kill_timewait();
+ /* Try to allocate a tcp_pcb again. */
+ pcb = memp_malloc(MEMP_TCP_PCB);
+ if (pcb == NULL) {
+ /* Try killing active connections with lower priority than the new one. */
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing connection with prio lower than %d\n", prio));
+ tcp_kill_prio(prio);
+ /* Try to allocate a tcp_pcb again. */
+ pcb = memp_malloc(MEMP_TCP_PCB);
+ if (pcb != NULL) {
+ /* adjust err stats: memp_malloc failed twice before */
+ MEMP_STATS_DEC(err, MEMP_TCP_PCB);
+ }
+ }
+ if (pcb != NULL) {
+ /* adjust err stats: timewait PCB was freed above */
+ MEMP_STATS_DEC(err, MEMP_TCP_PCB);
+ }
+ }
+ if (pcb != NULL) {
+ memset(pcb, 0, sizeof(struct tcp_pcb));
+ pcb->prio = TCP_PRIO_NORMAL;
+ pcb->snd_buf = TCP_SND_BUF;
+ pcb->snd_queuelen = 0;
+ pcb->rcv_wnd = TCP_WND;
+ pcb->rcv_ann_wnd = TCP_WND;
+ pcb->tos = 0;
+ pcb->ttl = TCP_TTL;
+ /* As initial send MSS, we use TCP_MSS but limit it to 536.
+ The send MSS is updated when an MSS option is received. */
+ pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS;
+ pcb->rto = 3000 / TCP_SLOW_INTERVAL;
+ pcb->sa = 0;
+ pcb->sv = 3000 / TCP_SLOW_INTERVAL;
+ pcb->rtime = -1;
+ pcb->cwnd = 1;
+ iss = tcp_next_iss();
+ pcb->snd_wl2 = iss;
+ pcb->snd_nxt = iss;
+ pcb->lastack = iss;
+ pcb->snd_lbb = iss;
+ pcb->tmr = tcp_ticks;
+
+ pcb->polltmr = 0;
+
+#if LWIP_CALLBACK_API
+ pcb->recv = tcp_recv_null;
+#endif /* LWIP_CALLBACK_API */
+
+ /* Init KEEPALIVE timer */
+ pcb->keep_idle = TCP_KEEPIDLE_DEFAULT;
+
+#if LWIP_TCP_KEEPALIVE
+ pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT;
+ pcb->keep_cnt = TCP_KEEPCNT_DEFAULT;
+#endif /* LWIP_TCP_KEEPALIVE */
+
+ pcb->keep_cnt_sent = 0;
+ }
+ return pcb;
+}
+
+/**
+ * Creates a new TCP protocol control block but doesn't place it on
+ * any of the TCP PCB lists.
+ * The pcb is not put on any list until binding using tcp_bind().
+ *
+ * @internal: Maybe there should be a idle TCP PCB list where these
+ * PCBs are put on. Port reservation using tcp_bind() is implemented but
+ * allocated pcbs that are not bound can't be killed automatically if wanting
+ * to allocate a pcb with higher prio (@see tcp_kill_prio())
+ *
+ * @return a new tcp_pcb that initially is in state CLOSED
+ */
+struct tcp_pcb *
+tcp_new(void)
+{
+ return tcp_alloc(TCP_PRIO_NORMAL);
+}
+
+/**
+ * Used to specify the argument that should be passed callback
+ * functions.
+ *
+ * @param pcb tcp_pcb to set the callback argument
+ * @param arg void pointer argument to pass to callback functions
+ */
+void
+tcp_arg(struct tcp_pcb *pcb, void *arg)
+{
+ pcb->callback_arg = arg;
+}
+#if LWIP_CALLBACK_API
+
+/**
+ * Used to specify the function that should be called when a TCP
+ * connection receives data.
+ *
+ * @param pcb tcp_pcb to set the recv callback
+ * @param recv callback function to call for this pcb when data is received
+ */
+void
+tcp_recv(struct tcp_pcb *pcb,
+ err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err))
+{
+ pcb->recv = recv;
+}
+
+/**
+ * Used to specify the function that should be called when TCP data
+ * has been successfully delivered to the remote host.
+ *
+ * @param pcb tcp_pcb to set the sent callback
+ * @param sent callback function to call for this pcb when data is successfully sent
+ */
+void
+tcp_sent(struct tcp_pcb *pcb,
+ err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len))
+{
+ pcb->sent = sent;
+}
+
+/**
+ * Used to specify the function that should be called when a fatal error
+ * has occured on the connection.
+ *
+ * @param pcb tcp_pcb to set the err callback
+ * @param errf callback function to call for this pcb when a fatal error
+ * has occured on the connection
+ */
+void
+tcp_err(struct tcp_pcb *pcb,
+ void (* errf)(void *arg, err_t err))
+{
+ pcb->errf = errf;
+}
+
+/**
+ * Used for specifying the function that should be called when a
+ * LISTENing connection has been connected to another host.
+ *
+ * @param pcb tcp_pcb to set the accept callback
+ * @param accept callback function to call for this pcb when LISTENing
+ * connection has been connected to another host
+ */
+void
+tcp_accept(struct tcp_pcb *pcb,
+ err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err))
+{
+ pcb->accept = accept;
+}
+#endif /* LWIP_CALLBACK_API */
+
+
+/**
+ * Used to specify the function that should be called periodically
+ * from TCP. The interval is specified in terms of the TCP coarse
+ * timer interval, which is called twice a second.
+ *
+ */
+void
+tcp_poll(struct tcp_pcb *pcb,
+ err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval)
+{
+#if LWIP_CALLBACK_API
+ pcb->poll = poll;
+#endif /* LWIP_CALLBACK_API */
+ pcb->pollinterval = interval;
+}
+
+/**
+ * Purges a TCP PCB. Removes any buffered data and frees the buffer memory
+ * (pcb->ooseq, pcb->unsent and pcb->unacked are freed).
+ *
+ * @param pcb tcp_pcb to purge. The pcb itself is not deallocated!
+ */
+void
+tcp_pcb_purge(struct tcp_pcb *pcb)
+{
+ if (pcb->state != CLOSED &&
+ pcb->state != TIME_WAIT &&
+ pcb->state != LISTEN) {
+
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge\n"));
+
+#if TCP_LISTEN_BACKLOG
+ if (pcb->state == SYN_RCVD) {
+ /* Need to find the corresponding listen_pcb and decrease its accepts_pending */
+ struct tcp_pcb_listen *lpcb;
+ LWIP_ASSERT("tcp_pcb_purge: pcb->state == SYN_RCVD but tcp_listen_pcbs is NULL",
+ tcp_listen_pcbs.listen_pcbs != NULL);
+ for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
+ if ((lpcb->local_port == pcb->local_port) &&
+ (ip_addr_isany(&lpcb->local_ip) ||
+ ip_addr_cmp(&pcb->local_ip, &lpcb->local_ip))) {
+ /* port and address of the listen pcb match the timed-out pcb */
+ LWIP_ASSERT("tcp_pcb_purge: listen pcb does not have accepts pending",
+ lpcb->accepts_pending > 0);
+ lpcb->accepts_pending--;
+ break;
+ }
+ }
+ }
+#endif /* TCP_LISTEN_BACKLOG */
+
+
+ if (pcb->refused_data != NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->refused_data\n"));
+ pbuf_free(pcb->refused_data);
+ pcb->refused_data = NULL;
+ }
+ if (pcb->unsent != NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: not all data sent\n"));
+ }
+ if (pcb->unacked != NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n"));
+ }
+#if TCP_QUEUE_OOSEQ /* LW */
+ if (pcb->ooseq != NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n"));
+ }
+
+ /* Stop the retransmission timer as it will expect data on unacked
+ queue if it fires */
+ pcb->rtime = -1;
+
+ tcp_segs_free(pcb->ooseq);
+ pcb->ooseq = NULL;
+#endif /* TCP_QUEUE_OOSEQ */
+ tcp_segs_free(pcb->unsent);
+ tcp_segs_free(pcb->unacked);
+ pcb->unacked = pcb->unsent = NULL;
+ }
+}
+
+/**
+ * Purges the PCB and removes it from a PCB list. Any delayed ACKs are sent first.
+ *
+ * @param pcblist PCB list to purge.
+ * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated!
+ */
+void
+tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
+{
+ TCP_RMV(pcblist, pcb);
+
+ tcp_pcb_purge(pcb);
+
+ /* if there is an outstanding delayed ACKs, send it */
+ if (pcb->state != TIME_WAIT &&
+ pcb->state != LISTEN &&
+ pcb->flags & TF_ACK_DELAY) {
+ pcb->flags |= TF_ACK_NOW;
+ tcp_output(pcb);
+ }
+
+ if (pcb->state != LISTEN) {
+ LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL);
+ LWIP_ASSERT("unacked segments leaking", pcb->unacked == NULL);
+#if TCP_QUEUE_OOSEQ
+ LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL);
+#endif /* TCP_QUEUE_OOSEQ */
+ }
+
+ pcb->state = CLOSED;
+
+ LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane());
+}
+
+/**
+ * Calculates a new initial sequence number for new connections.
+ *
+ * @return u32_t pseudo random sequence number
+ */
+u32_t
+tcp_next_iss(void)
+{
+ static u32_t iss = 6510;
+
+ iss += tcp_ticks; /* XXX */
+ return iss;
+}
+
+#if TCP_CALCULATE_EFF_SEND_MSS
+/**
+ * Calcluates the effective send mss that can be used for a specific IP address
+ * by using ip_route to determin the netif used to send to the address and
+ * calculating the minimum of TCP_MSS and that netif's mtu (if set).
+ */
+u16_t
+tcp_eff_send_mss(u16_t sendmss, struct ip_addr *addr)
+{
+ u16_t mss_s;
+ struct netif *outif;
+
+ outif = ip_route(addr);
+ if ((outif != NULL) && (outif->mtu != 0)) {
+ mss_s = outif->mtu - IP_HLEN - TCP_HLEN;
+ /* RFC 1122, chap 4.2.2.6:
+ * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize
+ * We correct for TCP options in tcp_enqueue(), and don't support
+ * IP options
+ */
+ sendmss = LWIP_MIN(sendmss, mss_s);
+ }
+ return sendmss;
+}
+#endif /* TCP_CALCULATE_EFF_SEND_MSS */
+
+const char*
+tcp_debug_state_str(enum tcp_state s)
+{
+ return tcp_state_str[s];
+}
+
+#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG
+/**
+ * Print a tcp header for debugging purposes.
+ *
+ * @param tcphdr pointer to a struct tcp_hdr
+ */
+void
+tcp_debug_print(struct tcp_hdr *tcphdr)
+{
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP header:\n"));
+ LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(TCP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n",
+ ntohs(tcphdr->src), ntohs(tcphdr->dest)));
+ LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (seq no)\n",
+ ntohl(tcphdr->seqno)));
+ LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (ack no)\n",
+ ntohl(tcphdr->ackno)));
+ LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(TCP_DEBUG, ("| %2"U16_F" | |%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"| %5"U16_F" | (hdrlen, flags (",
+ TCPH_HDRLEN(tcphdr),
+ TCPH_FLAGS(tcphdr) >> 5 & 1,
+ TCPH_FLAGS(tcphdr) >> 4 & 1,
+ TCPH_FLAGS(tcphdr) >> 3 & 1,
+ TCPH_FLAGS(tcphdr) >> 2 & 1,
+ TCPH_FLAGS(tcphdr) >> 1 & 1,
+ TCPH_FLAGS(tcphdr) & 1,
+ ntohs(tcphdr->wnd)));
+ tcp_debug_print_flags(TCPH_FLAGS(tcphdr));
+ LWIP_DEBUGF(TCP_DEBUG, ("), win)\n"));
+ LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(TCP_DEBUG, ("| 0x%04"X16_F" | %5"U16_F" | (chksum, urgp)\n",
+ ntohs(tcphdr->chksum), ntohs(tcphdr->urgp)));
+ LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n"));
+}
+
+/**
+ * Print a tcp state for debugging purposes.
+ *
+ * @param s enum tcp_state to print
+ */
+void
+tcp_debug_print_state(enum tcp_state s)
+{
+ LWIP_DEBUGF(TCP_DEBUG, ("State: %s\n", tcp_state_str[s]));
+}
+
+/**
+ * Print tcp flags for debugging purposes.
+ *
+ * @param flags tcp flags, all active flags are printed
+ */
+void
+tcp_debug_print_flags(u8_t flags)
+{
+ if (flags & TCP_FIN) {
+ LWIP_DEBUGF(TCP_DEBUG, ("FIN "));
+ }
+ if (flags & TCP_SYN) {
+ LWIP_DEBUGF(TCP_DEBUG, ("SYN "));
+ }
+ if (flags & TCP_RST) {
+ LWIP_DEBUGF(TCP_DEBUG, ("RST "));
+ }
+ if (flags & TCP_PSH) {
+ LWIP_DEBUGF(TCP_DEBUG, ("PSH "));
+ }
+ if (flags & TCP_ACK) {
+ LWIP_DEBUGF(TCP_DEBUG, ("ACK "));
+ }
+ if (flags & TCP_URG) {
+ LWIP_DEBUGF(TCP_DEBUG, ("URG "));
+ }
+ if (flags & TCP_ECE) {
+ LWIP_DEBUGF(TCP_DEBUG, ("ECE "));
+ }
+ if (flags & TCP_CWR) {
+ LWIP_DEBUGF(TCP_DEBUG, ("CWR "));
+ }
+ LWIP_DEBUGF(TCP_DEBUG, ("\n"));
+}
+
+/**
+ * Print all tcp_pcbs in every list for debugging purposes.
+ */
+void
+tcp_debug_print_pcbs(void)
+{
+ struct tcp_pcb *pcb;
+ LWIP_DEBUGF(TCP_DEBUG, ("Active PCB states:\n"));
+ for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
+ LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ",
+ pcb, pcb->local_port, pcb->remote_port,
+ pcb->snd_nxt, pcb->rcv_nxt));
+ tcp_debug_print_state(pcb->state);
+ }
+ LWIP_DEBUGF(TCP_DEBUG, ("Listen PCB states:\n"));
+ for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) {
+ LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ",
+ pcb, pcb->local_port, pcb->remote_port,
+ pcb->snd_nxt, pcb->rcv_nxt));
+ tcp_debug_print_state(pcb->state);
+ }
+ LWIP_DEBUGF(TCP_DEBUG, ("TIME-WAIT PCB states:\n"));
+ for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
+ LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ",
+ pcb, pcb->local_port, pcb->remote_port,
+ pcb->snd_nxt, pcb->rcv_nxt));
+ tcp_debug_print_state(pcb->state);
+ }
+}
+
+/**
+ * Check state consistency of the tcp_pcb lists.
+ */
+s16_t
+tcp_pcbs_sane(void)
+{
+ struct tcp_pcb *pcb;
+ for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
+ LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != CLOSED", pcb->state != CLOSED);
+ LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != LISTEN", pcb->state != LISTEN);
+ LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);
+ }
+ for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
+ LWIP_ASSERT("tcp_pcbs_sane: tw pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
+ }
+ return 1;
+}
+#endif /* TCP_DEBUG */
+
+#endif /* LWIP_TCP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c
new file mode 100644
index 0000000..3930b40
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c
@@ -0,0 +1,1508 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Transmission Control Protocol, incoming traffic
+ *
+ * The input processing functions of the TCP layer.
+ *
+ * These functions are generally called in the order (ip_input() ->)
+ * tcp_input() -> * tcp_process() -> tcp_receive() (-> application).
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/tcp.h"
+#include "lwip/def.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/mem.h"
+#include "lwip/memp.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/stats.h"
+#include "lwip/snmp.h"
+#include "arch/perf.h"
+
+/* These variables are global to all functions involved in the input
+ processing of TCP segments. They are set by the tcp_input()
+ function. */
+static struct tcp_seg inseg;
+static struct tcp_hdr *tcphdr;
+static struct ip_hdr *iphdr;
+static u32_t seqno, ackno;
+static u8_t flags;
+static u16_t tcplen;
+
+static u8_t recv_flags;
+static struct pbuf *recv_data;
+
+struct tcp_pcb *tcp_input_pcb;
+
+/* Forward declarations. */
+static err_t tcp_process(struct tcp_pcb *pcb);
+static void tcp_receive(struct tcp_pcb *pcb);
+static void tcp_parseopt(struct tcp_pcb *pcb);
+
+static err_t tcp_listen_input(struct tcp_pcb_listen *pcb);
+static err_t tcp_timewait_input(struct tcp_pcb *pcb);
+
+/**
+ * The initial input processing of TCP. It verifies the TCP header, demultiplexes
+ * the segment between the PCBs and passes it on to tcp_process(), which implements
+ * the TCP finite state machine. This function is called by the IP layer (in
+ * ip_input()).
+ *
+ * @param p received TCP segment to process (p->payload pointing to the IP header)
+ * @param inp network interface on which this segment was received
+ */
+void
+tcp_input(struct pbuf *p, struct netif *inp)
+{
+ struct tcp_pcb *pcb, *prev;
+ struct tcp_pcb_listen *lpcb;
+ u8_t hdrlen;
+ err_t err;
+
+ PERF_START;
+
+ TCP_STATS_INC(tcp.recv);
+ snmp_inc_tcpinsegs();
+
+ iphdr = p->payload;
+ tcphdr = (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 4);
+
+#if TCP_INPUT_DEBUG
+ tcp_debug_print(tcphdr);
+#endif
+
+ /* remove header from payload */
+ if (pbuf_header(p, -((s16_t)(IPH_HL(iphdr) * 4))) || (p->tot_len < sizeof(struct tcp_hdr))) {
+ /* drop short packets */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet (%"U16_F" bytes) discarded\n", p->tot_len));
+ TCP_STATS_INC(tcp.lenerr);
+ TCP_STATS_INC(tcp.drop);
+ snmp_inc_tcpinerrs();
+ pbuf_free(p);
+ return;
+ }
+
+ /* Don't even process incoming broadcasts/multicasts. */
+ if (ip_addr_isbroadcast(&(iphdr->dest), inp) ||
+ ip_addr_ismulticast(&(iphdr->dest))) {
+ TCP_STATS_INC(tcp.proterr);
+ TCP_STATS_INC(tcp.drop);
+ snmp_inc_tcpinerrs();
+ pbuf_free(p);
+ return;
+ }
+
+#if CHECKSUM_CHECK_TCP
+ /* Verify TCP checksum. */
+ if (inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src),
+ (struct ip_addr *)&(iphdr->dest),
+ IP_PROTO_TCP, p->tot_len) != 0) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packet discarded due to failing checksum 0x%04"X16_F"\n",
+ inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src), (struct ip_addr *)&(iphdr->dest),
+ IP_PROTO_TCP, p->tot_len)));
+#if TCP_DEBUG
+ tcp_debug_print(tcphdr);
+#endif /* TCP_DEBUG */
+ TCP_STATS_INC(tcp.chkerr);
+ TCP_STATS_INC(tcp.drop);
+ snmp_inc_tcpinerrs();
+ pbuf_free(p);
+ return;
+ }
+#endif
+
+ /* Move the payload pointer in the pbuf so that it points to the
+ TCP data instead of the TCP header. */
+ hdrlen = TCPH_HDRLEN(tcphdr);
+ if(pbuf_header(p, -(hdrlen * 4))){
+ /* drop short packets */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet\n"));
+ TCP_STATS_INC(tcp.lenerr);
+ TCP_STATS_INC(tcp.drop);
+ snmp_inc_tcpinerrs();
+ pbuf_free(p);
+ return;
+ }
+
+ /* Convert fields in TCP header to host byte order. */
+ tcphdr->src = ntohs(tcphdr->src);
+ tcphdr->dest = ntohs(tcphdr->dest);
+ seqno = tcphdr->seqno = ntohl(tcphdr->seqno);
+ ackno = tcphdr->ackno = ntohl(tcphdr->ackno);
+ tcphdr->wnd = ntohs(tcphdr->wnd);
+
+ flags = TCPH_FLAGS(tcphdr);
+ tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0);
+
+ /* Demultiplex an incoming segment. First, we check if it is destined
+ for an active connection. */
+ prev = NULL;
+
+
+ for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
+ LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);
+ LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);
+ LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN);
+ if (pcb->remote_port == tcphdr->src &&
+ pcb->local_port == tcphdr->dest &&
+ ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)) &&
+ ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest))) {
+
+ /* Move this PCB to the front of the list so that subsequent
+ lookups will be faster (we exploit locality in TCP segment
+ arrivals). */
+ LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb);
+ if (prev != NULL) {
+ prev->next = pcb->next;
+ pcb->next = tcp_active_pcbs;
+ tcp_active_pcbs = pcb;
+ }
+ LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb);
+ break;
+ }
+ prev = pcb;
+ }
+
+ if (pcb == NULL) {
+ /* If it did not go to an active connection, we check the connections
+ in the TIME-WAIT state. */
+ for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
+ LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
+ if (pcb->remote_port == tcphdr->src &&
+ pcb->local_port == tcphdr->dest &&
+ ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)) &&
+ ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest))) {
+ /* We don't really care enough to move this PCB to the front
+ of the list since we are not very likely to receive that
+ many segments for connections in TIME-WAIT. */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for TIME_WAITing connection.\n"));
+ tcp_timewait_input(pcb);
+ pbuf_free(p);
+ return;
+ }
+ }
+
+ /* Finally, if we still did not get a match, we check all PCBs that
+ are LISTENing for incoming connections. */
+ prev = NULL;
+ for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
+ if ((ip_addr_isany(&(lpcb->local_ip)) ||
+ ip_addr_cmp(&(lpcb->local_ip), &(iphdr->dest))) &&
+ lpcb->local_port == tcphdr->dest) {
+ /* Move this PCB to the front of the list so that subsequent
+ lookups will be faster (we exploit locality in TCP segment
+ arrivals). */
+ if (prev != NULL) {
+ ((struct tcp_pcb_listen *)prev)->next = lpcb->next;
+ /* our successor is the remainder of the listening list */
+ lpcb->next = tcp_listen_pcbs.listen_pcbs;
+ /* put this listening pcb at the head of the listening list */
+ tcp_listen_pcbs.listen_pcbs = lpcb;
+ }
+
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for LISTENing connection.\n"));
+ tcp_listen_input(lpcb);
+ pbuf_free(p);
+ return;
+ }
+ prev = (struct tcp_pcb *)lpcb;
+ }
+ }
+
+#if TCP_INPUT_DEBUG
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags "));
+ tcp_debug_print_flags(TCPH_FLAGS(tcphdr));
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n"));
+#endif /* TCP_INPUT_DEBUG */
+
+
+ if (pcb != NULL) {
+ /* The incoming segment belongs to a connection. */
+#if TCP_INPUT_DEBUG
+#if TCP_DEBUG
+ tcp_debug_print_state(pcb->state);
+#endif /* TCP_DEBUG */
+#endif /* TCP_INPUT_DEBUG */
+
+ /* Set up a tcp_seg structure. */
+ inseg.next = NULL;
+ inseg.len = p->tot_len;
+ inseg.dataptr = p->payload;
+ inseg.p = p;
+ inseg.tcphdr = tcphdr;
+
+ recv_data = NULL;
+ recv_flags = 0;
+
+ /* If there is data which was previously "refused" by upper layer */
+ if (pcb->refused_data != NULL) {
+ /* Notify again application with data previously received. */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n"));
+ TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err);
+ if (err == ERR_OK) {
+ pcb->refused_data = NULL;
+ } else {
+ /* drop incoming packets, because pcb is "full" */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: drop incoming packets, because pcb is \"full\"\n"));
+ TCP_STATS_INC(tcp.drop);
+ snmp_inc_tcpinerrs();
+ pbuf_free(p);
+ return;
+ }
+ }
+ tcp_input_pcb = pcb;
+ err = tcp_process(pcb);
+ /* A return value of ERR_ABRT means that tcp_abort() was called
+ and that the pcb has been freed. If so, we don't do anything. */
+ if (err != ERR_ABRT) {
+ if (recv_flags & TF_RESET) {
+ /* TF_RESET means that the connection was reset by the other
+ end. We then call the error callback to inform the
+ application that the connection is dead before we
+ deallocate the PCB. */
+ TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_RST);
+ tcp_pcb_remove(&tcp_active_pcbs, pcb);
+ memp_free(MEMP_TCP_PCB, pcb);
+ } else if (recv_flags & TF_CLOSED) {
+ /* The connection has been closed and we will deallocate the
+ PCB. */
+ tcp_pcb_remove(&tcp_active_pcbs, pcb);
+ memp_free(MEMP_TCP_PCB, pcb);
+ } else {
+ err = ERR_OK;
+ /* If the application has registered a "sent" function to be
+ called when new send buffer space is available, we call it
+ now. */
+ if (pcb->acked > 0) {
+ TCP_EVENT_SENT(pcb, pcb->acked, err);
+ }
+
+ if (recv_data != NULL) {
+ if(flags & TCP_PSH) {
+ recv_data->flags |= PBUF_FLAG_PUSH;
+ }
+
+ /* Notify application that data has been received. */
+ TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);
+
+ /* If the upper layer can't receive this data, store it */
+ if (err != ERR_OK) {
+ pcb->refused_data = recv_data;
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: keep incoming packet, because pcb is \"full\"\n"));
+ }
+ }
+
+ /* If a FIN segment was received, we call the callback
+ function with a NULL buffer to indicate EOF. */
+ if (recv_flags & TF_GOT_FIN) {
+ TCP_EVENT_RECV(pcb, NULL, ERR_OK, err);
+ }
+
+ tcp_input_pcb = NULL;
+ /* Try to send something out. */
+ tcp_output(pcb);
+#if TCP_INPUT_DEBUG
+#if TCP_DEBUG
+ tcp_debug_print_state(pcb->state);
+#endif /* TCP_DEBUG */
+#endif /* TCP_INPUT_DEBUG */
+ }
+ }
+ tcp_input_pcb = NULL;
+
+
+ /* give up our reference to inseg.p */
+ if (inseg.p != NULL)
+ {
+ pbuf_free(inseg.p);
+ inseg.p = NULL;
+ }
+ } else {
+
+ /* If no matching PCB was found, send a TCP RST (reset) to the
+ sender. */
+ LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n"));
+ if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) {
+ TCP_STATS_INC(tcp.proterr);
+ TCP_STATS_INC(tcp.drop);
+ tcp_rst(ackno, seqno + tcplen,
+ &(iphdr->dest), &(iphdr->src),
+ tcphdr->dest, tcphdr->src);
+ }
+ pbuf_free(p);
+ }
+
+ LWIP_ASSERT("tcp_input: tcp_pcbs_sane()", tcp_pcbs_sane());
+ PERF_STOP("tcp_input");
+}
+
+/**
+ * Called by tcp_input() when a segment arrives for a listening
+ * connection (from tcp_input()).
+ *
+ * @param pcb the tcp_pcb_listen for which a segment arrived
+ * @return ERR_OK if the segment was processed
+ * another err_t on error
+ *
+ * @note the return value is not (yet?) used in tcp_input()
+ * @note the segment which arrived is saved in global variables, therefore only the pcb
+ * involved is passed as a parameter to this function
+ */
+static err_t
+tcp_listen_input(struct tcp_pcb_listen *pcb)
+{
+ struct tcp_pcb *npcb;
+ err_t rc;
+
+ /* In the LISTEN state, we check for incoming SYN segments,
+ creates a new PCB, and responds with a SYN|ACK. */
+ if (flags & TCP_ACK) {
+ /* For incoming segments with the ACK flag set, respond with a
+ RST. */
+ LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n"));
+ tcp_rst(ackno + 1, seqno + tcplen,
+ &(iphdr->dest), &(iphdr->src),
+ tcphdr->dest, tcphdr->src);
+ } else if (flags & TCP_SYN) {
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP connection request %"U16_F" -> %"U16_F".\n", tcphdr->src, tcphdr->dest));
+#if TCP_LISTEN_BACKLOG
+ if (pcb->accepts_pending >= pcb->backlog) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: listen backlog exceeded for port %"U16_F"\n", tcphdr->dest));
+ return ERR_ABRT;
+ }
+#endif /* TCP_LISTEN_BACKLOG */
+ npcb = tcp_alloc(pcb->prio);
+ /* If a new PCB could not be created (probably due to lack of memory),
+ we don't do anything, but rely on the sender will retransmit the
+ SYN at a time when we have more memory available. */
+ if (npcb == NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: could not allocate PCB\n"));
+ TCP_STATS_INC(tcp.memerr);
+ return ERR_MEM;
+ }
+#if TCP_LISTEN_BACKLOG
+ pcb->accepts_pending++;
+#endif /* TCP_LISTEN_BACKLOG */
+ /* Set up the new PCB. */
+ ip_addr_set(&(npcb->local_ip), &(iphdr->dest));
+ npcb->local_port = pcb->local_port;
+ ip_addr_set(&(npcb->remote_ip), &(iphdr->src));
+ npcb->remote_port = tcphdr->src;
+ npcb->state = SYN_RCVD;
+ npcb->rcv_nxt = seqno + 1;
+ npcb->rcv_ann_right_edge = npcb->rcv_nxt;
+ npcb->snd_wnd = tcphdr->wnd;
+ npcb->ssthresh = npcb->snd_wnd;
+ npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */
+ npcb->callback_arg = pcb->callback_arg;
+#if LWIP_CALLBACK_API
+ npcb->accept = pcb->accept;
+#endif /* LWIP_CALLBACK_API */
+ /* inherit socket options */
+ npcb->so_options = pcb->so_options & (SOF_DEBUG|SOF_DONTROUTE|SOF_KEEPALIVE|SOF_OOBINLINE|SOF_LINGER);
+ /* Register the new PCB so that we can begin receiving segments
+ for it. */
+ TCP_REG(&tcp_active_pcbs, npcb);
+
+ /* Parse any options in the SYN. */
+ tcp_parseopt(npcb);
+#if TCP_CALCULATE_EFF_SEND_MSS
+ npcb->mss = tcp_eff_send_mss(npcb->mss, &(npcb->remote_ip));
+#endif /* TCP_CALCULATE_EFF_SEND_MSS */
+
+ snmp_inc_tcppassiveopens();
+
+ /* Send a SYN|ACK together with the MSS option. */
+ rc = tcp_enqueue(npcb, NULL, 0, TCP_SYN | TCP_ACK, 0, TF_SEG_OPTS_MSS
+#if LWIP_TCP_TIMESTAMPS
+ /* and maybe include the TIMESTAMP option */
+ | (npcb->flags & TF_TIMESTAMP ? TF_SEG_OPTS_TS : 0)
+#endif
+ );
+ if (rc != ERR_OK) {
+ tcp_abandon(npcb, 0);
+ return rc;
+ }
+ return tcp_output(npcb);
+ }
+ return ERR_OK;
+}
+
+/**
+ * Called by tcp_input() when a segment arrives for a connection in
+ * TIME_WAIT.
+ *
+ * @param pcb the tcp_pcb for which a segment arrived
+ *
+ * @note the segment which arrived is saved in global variables, therefore only the pcb
+ * involved is passed as a parameter to this function
+ */
+static err_t
+tcp_timewait_input(struct tcp_pcb *pcb)
+{
+ /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */
+ /* RFC 793 3.9 Event Processing - Segment Arrives:
+ * - first check sequence number - we skip that one in TIME_WAIT (always
+ * acceptable since we only send ACKs)
+ * - second check the RST bit (... return) */
+ if (flags & TCP_RST) {
+ return ERR_OK;
+ }
+ /* - fourth, check the SYN bit, */
+ if (flags & TCP_SYN) {
+ /* If an incoming segment is not acceptable, an acknowledgment
+ should be sent in reply */
+ if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt+pcb->rcv_wnd)) {
+ /* If the SYN is in the window it is an error, send a reset */
+ tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src),
+ tcphdr->dest, tcphdr->src);
+ return ERR_OK;
+ }
+ } else if (flags & TCP_FIN) {
+ /* - eighth, check the FIN bit: Remain in the TIME-WAIT state.
+ Restart the 2 MSL time-wait timeout.*/
+ pcb->tmr = tcp_ticks;
+ }
+
+ if ((tcplen > 0)) {
+ /* Acknowledge data, FIN or out-of-window SYN */
+ pcb->flags |= TF_ACK_NOW;
+ return tcp_output(pcb);
+ }
+ return ERR_OK;
+}
+
+/**
+ * Implements the TCP state machine. Called by tcp_input. In some
+ * states tcp_receive() is called to receive data. The tcp_seg
+ * argument will be freed by the caller (tcp_input()) unless the
+ * recv_data pointer in the pcb is set.
+ *
+ * @param pcb the tcp_pcb for which a segment arrived
+ *
+ * @note the segment which arrived is saved in global variables, therefore only the pcb
+ * involved is passed as a parameter to this function
+ */
+static err_t
+tcp_process(struct tcp_pcb *pcb)
+{
+ struct tcp_seg *rseg;
+ u8_t acceptable = 0;
+ err_t err;
+
+ err = ERR_OK;
+
+ /* Process incoming RST segments. */
+ if (flags & TCP_RST) {
+ /* First, determine if the reset is acceptable. */
+ if (pcb->state == SYN_SENT) {
+ if (ackno == pcb->snd_nxt) {
+ acceptable = 1;
+ }
+ } else {
+ if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,
+ pcb->rcv_nxt+pcb->rcv_wnd)) {
+ acceptable = 1;
+ }
+ }
+
+ if (acceptable) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n"));
+ LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED);
+ recv_flags |= TF_RESET;
+ pcb->flags &= ~TF_ACK_DELAY;
+ return ERR_RST;
+ } else {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n",
+ seqno, pcb->rcv_nxt));
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n",
+ seqno, pcb->rcv_nxt));
+ return ERR_OK;
+ }
+ }
+
+ if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) {
+ /* Cope with new connection attempt after remote end crashed */
+ tcp_ack_now(pcb);
+ return ERR_OK;
+ }
+
+ /* Update the PCB (in)activity timer. */
+ pcb->tmr = tcp_ticks;
+ pcb->keep_cnt_sent = 0;
+
+ tcp_parseopt(pcb);
+
+ /* Do different things depending on the TCP state. */
+ switch (pcb->state) {
+ case SYN_SENT:
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno,
+ pcb->snd_nxt, ntohl(pcb->unacked->tcphdr->seqno)));
+ /* received SYN ACK with expected sequence number? */
+ if ((flags & TCP_ACK) && (flags & TCP_SYN)
+ && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) {
+ pcb->snd_buf++;
+ pcb->rcv_nxt = seqno + 1;
+ pcb->rcv_ann_right_edge = pcb->rcv_nxt;
+ pcb->lastack = ackno;
+ pcb->snd_wnd = tcphdr->wnd;
+ pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */
+ pcb->state = ESTABLISHED;
+
+#if TCP_CALCULATE_EFF_SEND_MSS
+ pcb->mss = tcp_eff_send_mss(pcb->mss, &(pcb->remote_ip));
+#endif /* TCP_CALCULATE_EFF_SEND_MSS */
+
+ /* Set ssthresh again after changing pcb->mss (already set in tcp_connect
+ * but for the default value of pcb->mss) */
+ pcb->ssthresh = pcb->mss * 10;
+
+ pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss);
+ LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0));
+ --pcb->snd_queuelen;
+ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"U16_F"\n", (u16_t)pcb->snd_queuelen));
+ rseg = pcb->unacked;
+ pcb->unacked = rseg->next;
+
+ /* If there's nothing left to acknowledge, stop the retransmit
+ timer, otherwise reset it to start again */
+ if(pcb->unacked == NULL)
+ pcb->rtime = -1;
+ else {
+ pcb->rtime = 0;
+ pcb->nrtx = 0;
+ }
+
+ tcp_seg_free(rseg);
+
+ /* Call the user specified function to call when sucessfully
+ * connected. */
+ TCP_EVENT_CONNECTED(pcb, ERR_OK, err);
+ tcp_ack_now(pcb);
+ }
+ /* received ACK? possibly a half-open connection */
+ else if (flags & TCP_ACK) {
+ /* send a RST to bring the other side in a non-synchronized state. */
+ tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src),
+ tcphdr->dest, tcphdr->src);
+ }
+ break;
+ case SYN_RCVD:
+ if (flags & TCP_ACK) {
+ /* expected ACK number? */
+ if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)) {
+ u16_t old_cwnd;
+ pcb->state = ESTABLISHED;
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP connection established %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
+#if LWIP_CALLBACK_API
+ LWIP_ASSERT("pcb->accept != NULL", pcb->accept != NULL);
+#endif
+ /* Call the accept function. */
+ TCP_EVENT_ACCEPT(pcb, ERR_OK, err);
+ if (err != ERR_OK) {
+ /* If the accept function returns with an error, we abort
+ * the connection. */
+ tcp_abort(pcb);
+ return ERR_ABRT;
+ }
+ old_cwnd = pcb->cwnd;
+ /* If there was any data contained within this ACK,
+ * we'd better pass it on to the application as well. */
+ tcp_receive(pcb);
+
+ /* Prevent ACK for SYN to generate a sent event */
+ if (pcb->acked != 0) {
+ pcb->acked--;
+ }
+
+ pcb->cwnd = ((old_cwnd == 1) ? (pcb->mss * 2) : pcb->mss);
+
+ if (recv_flags & TF_GOT_FIN) {
+ tcp_ack_now(pcb);
+ pcb->state = CLOSE_WAIT;
+ }
+ }
+ /* incorrect ACK number */
+ else {
+ /* send RST */
+ tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src),
+ tcphdr->dest, tcphdr->src);
+ }
+ } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) {
+ /* Looks like another copy of the SYN - retransmit our SYN-ACK */
+ tcp_rexmit(pcb);
+ }
+ break;
+ case CLOSE_WAIT:
+ /* FALLTHROUGH */
+ case ESTABLISHED:
+ tcp_receive(pcb);
+ if (recv_flags & TF_GOT_FIN) { /* passive close */
+ tcp_ack_now(pcb);
+ pcb->state = CLOSE_WAIT;
+ }
+ break;
+ case FIN_WAIT_1:
+ tcp_receive(pcb);
+ if (recv_flags & TF_GOT_FIN) {
+ if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) {
+ LWIP_DEBUGF(TCP_DEBUG,
+ ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
+ tcp_ack_now(pcb);
+ tcp_pcb_purge(pcb);
+ TCP_RMV(&tcp_active_pcbs, pcb);
+ pcb->state = TIME_WAIT;
+ TCP_REG(&tcp_tw_pcbs, pcb);
+ } else {
+ tcp_ack_now(pcb);
+ pcb->state = CLOSING;
+ }
+ } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) {
+ pcb->state = FIN_WAIT_2;
+ }
+ break;
+ case FIN_WAIT_2:
+ tcp_receive(pcb);
+ if (recv_flags & TF_GOT_FIN) {
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
+ tcp_ack_now(pcb);
+ tcp_pcb_purge(pcb);
+ TCP_RMV(&tcp_active_pcbs, pcb);
+ pcb->state = TIME_WAIT;
+ TCP_REG(&tcp_tw_pcbs, pcb);
+ }
+ break;
+ case CLOSING:
+ tcp_receive(pcb);
+ if (flags & TCP_ACK && ackno == pcb->snd_nxt) {
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
+ tcp_pcb_purge(pcb);
+ TCP_RMV(&tcp_active_pcbs, pcb);
+ pcb->state = TIME_WAIT;
+ TCP_REG(&tcp_tw_pcbs, pcb);
+ }
+ break;
+ case LAST_ACK:
+ tcp_receive(pcb);
+ if (flags & TCP_ACK && ackno == pcb->snd_nxt) {
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
+ /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */
+ recv_flags |= TF_CLOSED;
+ }
+ break;
+ default:
+ break;
+ }
+ return ERR_OK;
+}
+
+#if TCP_QUEUE_OOSEQ
+/**
+ * Insert segment into the list (segments covered with new one will be deleted)
+ *
+ * Called from tcp_receive()
+ */
+static void
+tcp_oos_insert_segment(struct tcp_seg *cseg, struct tcp_seg *next)
+{
+ struct tcp_seg *old_seg;
+
+ if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) {
+ /* received segment overlaps all following segments */
+ tcp_segs_free(next);
+ next = NULL;
+ }
+ else {
+ /* delete some following segments
+ oos queue may have segments with FIN flag */
+ while (next &&
+ TCP_SEQ_GEQ((seqno + cseg->len),
+ (next->tcphdr->seqno + next->len))) {
+ /* cseg with FIN already processed */
+ if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) {
+ TCPH_FLAGS_SET(cseg->tcphdr, TCPH_FLAGS(cseg->tcphdr) | TCP_FIN);
+ }
+ old_seg = next;
+ next = next->next;
+ tcp_seg_free(old_seg);
+ }
+ if (next &&
+ TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) {
+ /* We need to trim the incoming segment. */
+ cseg->len = (u16_t)(next->tcphdr->seqno - seqno);
+ pbuf_realloc(cseg->p, cseg->len);
+ }
+ }
+ cseg->next = next;
+}
+#endif
+
+/**
+ * Called by tcp_process. Checks if the given segment is an ACK for outstanding
+ * data, and if so frees the memory of the buffered data. Next, is places the
+ * segment on any of the receive queues (pcb->recved or pcb->ooseq). If the segment
+ * is buffered, the pbuf is referenced by pbuf_ref so that it will not be freed until
+ * i it has been removed from the buffer.
+ *
+ * If the incoming segment constitutes an ACK for a segment that was used for RTT
+ * estimation, the RTT is estimated here as well.
+ *
+ * Called from tcp_process().
+ */
+static void
+tcp_receive(struct tcp_pcb *pcb)
+{
+ struct tcp_seg *next;
+#if TCP_QUEUE_OOSEQ
+ struct tcp_seg *prev, *cseg;
+#endif
+ struct pbuf *p;
+ s32_t off;
+ s16_t m;
+ u32_t right_wnd_edge;
+ u16_t new_tot_len;
+ int found_dupack = 0;
+
+ if (flags & TCP_ACK) {
+ right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2;
+
+ /* Update window. */
+ if (TCP_SEQ_LT(pcb->snd_wl1, seqno) ||
+ (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) ||
+ (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) {
+ pcb->snd_wnd = tcphdr->wnd;
+ pcb->snd_wl1 = seqno;
+ pcb->snd_wl2 = ackno;
+ if (pcb->snd_wnd > 0 && pcb->persist_backoff > 0) {
+ pcb->persist_backoff = 0;
+ }
+ LWIP_DEBUGF(TCP_WND_DEBUG, ("tcp_receive: window update %"U16_F"\n", pcb->snd_wnd));
+#if TCP_WND_DEBUG
+ } else {
+ if (pcb->snd_wnd != tcphdr->wnd) {
+ LWIP_DEBUGF(TCP_WND_DEBUG,
+ ("tcp_receive: no window update lastack %"U32_F" ackno %"
+ U32_F" wl1 %"U32_F" seqno %"U32_F" wl2 %"U32_F"\n",
+ pcb->lastack, ackno, pcb->snd_wl1, seqno, pcb->snd_wl2));
+ }
+#endif /* TCP_WND_DEBUG */
+ }
+
+ /* (From Stevens TCP/IP Illustrated Vol II, p970.) Its only a
+ * duplicate ack if:
+ * 1) It doesn't ACK new data
+ * 2) length of received packet is zero (i.e. no payload)
+ * 3) the advertised window hasn't changed
+ * 4) There is outstanding unacknowledged data (retransmission timer running)
+ * 5) The ACK is == biggest ACK sequence number so far seen (snd_una)
+ *
+ * If it passes all five, should process as a dupack:
+ * a) dupacks < 3: do nothing
+ * b) dupacks == 3: fast retransmit
+ * c) dupacks > 3: increase cwnd
+ *
+ * If it only passes 1-3, should reset dupack counter (and add to
+ * stats, which we don't do in lwIP)
+ *
+ * If it only passes 1, should reset dupack counter
+ *
+ */
+
+ /* Clause 1 */
+ if (TCP_SEQ_LEQ(ackno, pcb->lastack)) {
+ pcb->acked = 0;
+ /* Clause 2 */
+ if (tcplen == 0) {
+ /* Clause 3 */
+ if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){
+ /* Clause 4 */
+ if (pcb->rtime >= 0) {
+ /* Clause 5 */
+ if (pcb->lastack == ackno) {
+ found_dupack = 1;
+ if (pcb->dupacks + 1 > pcb->dupacks)
+ ++pcb->dupacks;
+ if (pcb->dupacks > 3) {
+ /* Inflate the congestion window, but not if it means that
+ the value overflows. */
+ if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) {
+ pcb->cwnd += pcb->mss;
+ }
+ } else if (pcb->dupacks == 3) {
+ /* Do fast retransmit */
+ tcp_rexmit_fast(pcb);
+ }
+ }
+ }
+ }
+ }
+ /* If Clause (1) or more is true, but not a duplicate ack, reset
+ * count of consecutive duplicate acks */
+ if (!found_dupack) {
+ pcb->dupacks = 0;
+ }
+ } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)){
+ /* We come here when the ACK acknowledges new data. */
+
+ /* Reset the "IN Fast Retransmit" flag, since we are no longer
+ in fast retransmit. Also reset the congestion window to the
+ slow start threshold. */
+ if (pcb->flags & TF_INFR) {
+ pcb->flags &= ~TF_INFR;
+ pcb->cwnd = pcb->ssthresh;
+ }
+
+ /* Reset the number of retransmissions. */
+ pcb->nrtx = 0;
+
+ /* Reset the retransmission time-out. */
+ pcb->rto = (pcb->sa >> 3) + pcb->sv;
+
+ /* Update the send buffer space. Diff between the two can never exceed 64K? */
+ pcb->acked = (u16_t)(ackno - pcb->lastack);
+
+ pcb->snd_buf += pcb->acked;
+
+ /* Reset the fast retransmit variables. */
+ pcb->dupacks = 0;
+ pcb->lastack = ackno;
+
+ /* Update the congestion control variables (cwnd and
+ ssthresh). */
+ if (pcb->state >= ESTABLISHED) {
+ if (pcb->cwnd < pcb->ssthresh) {
+ if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) {
+ pcb->cwnd += pcb->mss;
+ }
+ LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: slow start cwnd %"U16_F"\n", pcb->cwnd));
+ } else {
+ u16_t new_cwnd = (pcb->cwnd + pcb->mss * pcb->mss / pcb->cwnd);
+ if (new_cwnd > pcb->cwnd) {
+ pcb->cwnd = new_cwnd;
+ }
+ LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: congestion avoidance cwnd %"U16_F"\n", pcb->cwnd));
+ }
+ }
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: ACK for %"U32_F", unacked->seqno %"U32_F":%"U32_F"\n",
+ ackno,
+ pcb->unacked != NULL?
+ ntohl(pcb->unacked->tcphdr->seqno): 0,
+ pcb->unacked != NULL?
+ ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0));
+
+ /* Remove segment from the unacknowledged list if the incoming
+ ACK acknowlegdes them. */
+ while (pcb->unacked != NULL &&
+ TCP_SEQ_LEQ(ntohl(pcb->unacked->tcphdr->seqno) +
+ TCP_TCPLEN(pcb->unacked), ackno)) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unacked\n",
+ ntohl(pcb->unacked->tcphdr->seqno),
+ ntohl(pcb->unacked->tcphdr->seqno) +
+ TCP_TCPLEN(pcb->unacked)));
+
+ next = pcb->unacked;
+ pcb->unacked = pcb->unacked->next;
+
+ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen));
+ LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p)));
+ /* Prevent ACK for FIN to generate a sent event */
+ if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) {
+ pcb->acked--;
+ }
+
+ pcb->snd_queuelen -= pbuf_clen(next->p);
+ tcp_seg_free(next);
+
+ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unacked)\n", (u16_t)pcb->snd_queuelen));
+ if (pcb->snd_queuelen != 0) {
+ LWIP_ASSERT("tcp_receive: valid queue length", pcb->unacked != NULL ||
+ pcb->unsent != NULL);
+ }
+ }
+
+ /* If there's nothing left to acknowledge, stop the retransmit
+ timer, otherwise reset it to start again */
+ if(pcb->unacked == NULL)
+ pcb->rtime = -1;
+ else
+ pcb->rtime = 0;
+
+ pcb->polltmr = 0;
+ } else {
+ /* Fix bug bug #21582: out of sequence ACK, didn't really ack anything */
+ pcb->acked = 0;
+ }
+
+ /* We go through the ->unsent list to see if any of the segments
+ on the list are acknowledged by the ACK. This may seem
+ strange since an "unsent" segment shouldn't be acked. The
+ rationale is that lwIP puts all outstanding segments on the
+ ->unsent list after a retransmission, so these segments may
+ in fact have been sent once. */
+ while (pcb->unsent != NULL &&
+ TCP_SEQ_BETWEEN(ackno, ntohl(pcb->unsent->tcphdr->seqno) +
+ TCP_TCPLEN(pcb->unsent), pcb->snd_nxt)) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unsent\n",
+ ntohl(pcb->unsent->tcphdr->seqno), ntohl(pcb->unsent->tcphdr->seqno) +
+ TCP_TCPLEN(pcb->unsent)));
+
+ next = pcb->unsent;
+ pcb->unsent = pcb->unsent->next;
+ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen));
+ LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p)));
+ /* Prevent ACK for FIN to generate a sent event */
+ if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) {
+ pcb->acked--;
+ }
+ pcb->snd_queuelen -= pbuf_clen(next->p);
+ tcp_seg_free(next);
+ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unsent)\n", (u16_t)pcb->snd_queuelen));
+ if (pcb->snd_queuelen != 0) {
+ LWIP_ASSERT("tcp_receive: valid queue length",
+ pcb->unacked != NULL || pcb->unsent != NULL);
+ }
+ }
+ /* End of ACK for new data processing. */
+
+ LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: pcb->rttest %"U32_F" rtseq %"U32_F" ackno %"U32_F"\n",
+ pcb->rttest, pcb->rtseq, ackno));
+
+ /* RTT estimation calculations. This is done by checking if the
+ incoming segment acknowledges the segment we use to take a
+ round-trip time measurement. */
+ if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) {
+ /* diff between this shouldn't exceed 32K since this are tcp timer ticks
+ and a round-trip shouldn't be that long... */
+ m = (s16_t)(tcp_ticks - pcb->rttest);
+
+ LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n",
+ m, m * TCP_SLOW_INTERVAL));
+
+ /* This is taken directly from VJs original code in his paper */
+ m = m - (pcb->sa >> 3);
+ pcb->sa += m;
+ if (m < 0) {
+ m = -m;
+ }
+ m = m - (pcb->sv >> 2);
+ pcb->sv += m;
+ pcb->rto = (pcb->sa >> 3) + pcb->sv;
+
+ LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: RTO %"U16_F" (%"U16_F" milliseconds)\n",
+ pcb->rto, pcb->rto * TCP_SLOW_INTERVAL));
+
+ pcb->rttest = 0;
+ }
+ }
+
+ /* If the incoming segment contains data, we must process it
+ further. */
+ if (tcplen > 0) {
+ /* This code basically does three things:
+
+ +) If the incoming segment contains data that is the next
+ in-sequence data, this data is passed to the application. This
+ might involve trimming the first edge of the data. The rcv_nxt
+ variable and the advertised window are adjusted.
+
+ +) If the incoming segment has data that is above the next
+ sequence number expected (->rcv_nxt), the segment is placed on
+ the ->ooseq queue. This is done by finding the appropriate
+ place in the ->ooseq queue (which is ordered by sequence
+ number) and trim the segment in both ends if needed. An
+ immediate ACK is sent to indicate that we received an
+ out-of-sequence segment.
+
+ +) Finally, we check if the first segment on the ->ooseq queue
+ now is in sequence (i.e., if rcv_nxt >= ooseq->seqno). If
+ rcv_nxt > ooseq->seqno, we must trim the first edge of the
+ segment on ->ooseq before we adjust rcv_nxt. The data in the
+ segments that are now on sequence are chained onto the
+ incoming segment so that we only need to call the application
+ once.
+ */
+
+ /* First, we check if we must trim the first edge. We have to do
+ this if the sequence number of the incoming segment is less
+ than rcv_nxt, and the sequence number plus the length of the
+ segment is larger than rcv_nxt. */
+ /* if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){
+ if (TCP_SEQ_LT(pcb->rcv_nxt, seqno + tcplen)) {*/
+ if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)){
+ /* Trimming the first edge is done by pushing the payload
+ pointer in the pbuf downwards. This is somewhat tricky since
+ we do not want to discard the full contents of the pbuf up to
+ the new starting point of the data since we have to keep the
+ TCP header which is present in the first pbuf in the chain.
+
+ What is done is really quite a nasty hack: the first pbuf in
+ the pbuf chain is pointed to by inseg.p. Since we need to be
+ able to deallocate the whole pbuf, we cannot change this
+ inseg.p pointer to point to any of the later pbufs in the
+ chain. Instead, we point the ->payload pointer in the first
+ pbuf to data in one of the later pbufs. We also set the
+ inseg.data pointer to point to the right place. This way, the
+ ->p pointer will still point to the first pbuf, but the
+ ->p->payload pointer will point to data in another pbuf.
+
+ After we are done with adjusting the pbuf pointers we must
+ adjust the ->data pointer in the seg and the segment
+ length.*/
+
+ off = pcb->rcv_nxt - seqno;
+ p = inseg.p;
+ LWIP_ASSERT("inseg.p != NULL", inseg.p);
+ LWIP_ASSERT("insane offset!", (off < 0x7fff));
+ if (inseg.p->len < off) {
+ LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off));
+ new_tot_len = (u16_t)(inseg.p->tot_len - off);
+ while (p->len < off) {
+ off -= p->len;
+ /* KJM following line changed (with addition of new_tot_len var)
+ to fix bug #9076
+ inseg.p->tot_len -= p->len; */
+ p->tot_len = new_tot_len;
+ p->len = 0;
+ p = p->next;
+ }
+ if(pbuf_header(p, (s16_t)-off)) {
+ /* Do we need to cope with this failing? Assert for now */
+ LWIP_ASSERT("pbuf_header failed", 0);
+ }
+ } else {
+ if(pbuf_header(inseg.p, (s16_t)-off)) {
+ /* Do we need to cope with this failing? Assert for now */
+ LWIP_ASSERT("pbuf_header failed", 0);
+ }
+ }
+ /* KJM following line changed to use p->payload rather than inseg->p->payload
+ to fix bug #9076 */
+ inseg.dataptr = p->payload;
+ inseg.len -= (u16_t)(pcb->rcv_nxt - seqno);
+ inseg.tcphdr->seqno = seqno = pcb->rcv_nxt;
+ }
+ else {
+ if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){
+ /* the whole segment is < rcv_nxt */
+ /* must be a duplicate of a packet that has already been correctly handled */
+
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: duplicate seqno %"U32_F"\n", seqno));
+ tcp_ack_now(pcb);
+ }
+ }
+
+ /* The sequence number must be within the window (above rcv_nxt
+ and below rcv_nxt + rcv_wnd) in order to be further
+ processed. */
+ if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,
+ pcb->rcv_nxt + pcb->rcv_wnd - 1)){
+ if (pcb->rcv_nxt == seqno) {
+ /* The incoming segment is the next in sequence. We check if
+ we have to trim the end of the segment and update rcv_nxt
+ and pass the data to the application. */
+ tcplen = TCP_TCPLEN(&inseg);
+
+ if (tcplen > pcb->rcv_wnd) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG,
+ ("tcp_receive: other end overran receive window"
+ "seqno %"U32_F" len %"U32_F" right edge %"U32_F"\n",
+ seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd));
+ if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) {
+ /* Must remove the FIN from the header as we're trimming
+ * that byte of sequence-space from the packet */
+ TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) &~ TCP_FIN);
+ }
+ /* Adjust length of segment to fit in the window. */
+ inseg.len = pcb->rcv_wnd;
+ if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) {
+ inseg.len -= 1;
+ }
+ pbuf_realloc(inseg.p, inseg.len);
+ tcplen = TCP_TCPLEN(&inseg);
+ LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n",
+ (seqno + tcplen) == (pcb->rcv_nxt + pcb->rcv_wnd));
+ }
+#if TCP_QUEUE_OOSEQ
+ if (pcb->ooseq != NULL) {
+ if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG,
+ ("tcp_receive: received in-order FIN, binning ooseq queue\n"));
+ /* Received in-order FIN means anything that was received
+ * out of order must now have been received in-order, so
+ * bin the ooseq queue
+ * rcv_nxt
+ * . |--ooseq--|
+ * .==seg============|FIN
+ */
+ while (pcb->ooseq != NULL) {
+ struct tcp_seg *old_ooseq = pcb->ooseq;
+ pcb->ooseq = pcb->ooseq->next;
+ tcp_seg_free(old_ooseq);
+ }
+ }
+ else {
+ struct tcp_seg* next = pcb->ooseq;
+ struct tcp_seg *old_seg;
+ /* rcv_nxt
+ * . |--ooseq--|
+ * .==seg============|
+ */
+ while (next &&
+ TCP_SEQ_GEQ(seqno + tcplen,
+ next->tcphdr->seqno + next->len)) {
+ /* inseg doesn't have FIN (already processed) */
+ if (TCPH_FLAGS(next->tcphdr) & TCP_FIN &&
+ (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) == 0) {
+ TCPH_FLAGS_SET(inseg.tcphdr,
+ TCPH_FLAGS(inseg.tcphdr) | TCP_FIN);
+ tcplen = TCP_TCPLEN(&inseg);
+ }
+ old_seg = next;
+ next = next->next;
+ tcp_seg_free(old_seg);
+ }
+ /* rcv_nxt
+ * . |--ooseq--|
+ * .==seg============|
+ */
+ if (next &&
+ TCP_SEQ_GT(seqno + tcplen,
+ next->tcphdr->seqno)) {
+ /* FIN in inseg already handled by dropping whole ooseq queue */
+ inseg.len = (u16_t)(pcb->ooseq->tcphdr->seqno - seqno);
+ if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) {
+ inseg.len -= 1;
+ }
+ pbuf_realloc(inseg.p, inseg.len);
+ tcplen = TCP_TCPLEN(&inseg);
+ LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n",
+ (seqno + tcplen) == pcb->ooseq->tcphdr->seqno);
+ }
+ pcb->ooseq = next;
+ }
+ }
+#endif /* TCP_QUEUE_OOSEQ */
+
+ pcb->rcv_nxt = seqno + tcplen;
+
+ /* Update the receiver's (our) window. */
+ LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen);
+ pcb->rcv_wnd -= tcplen;
+
+ tcp_update_rcv_ann_wnd(pcb);
+
+ /* If there is data in the segment, we make preparations to
+ pass this up to the application. The ->recv_data variable
+ is used for holding the pbuf that goes to the
+ application. The code for reassembling out-of-sequence data
+ chains its data on this pbuf as well.
+
+ If the segment was a FIN, we set the TF_GOT_FIN flag that will
+ be used to indicate to the application that the remote side has
+ closed its end of the connection. */
+ if (inseg.p->tot_len > 0) {
+ recv_data = inseg.p;
+ /* Since this pbuf now is the responsibility of the
+ application, we delete our reference to it so that we won't
+ (mistakingly) deallocate it. */
+ inseg.p = NULL;
+ }
+ if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received FIN.\n"));
+ recv_flags |= TF_GOT_FIN;
+ }
+
+#if TCP_QUEUE_OOSEQ
+ /* We now check if we have segments on the ->ooseq queue that
+ is now in sequence. */
+ while (pcb->ooseq != NULL &&
+ pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) {
+
+ cseg = pcb->ooseq;
+ seqno = pcb->ooseq->tcphdr->seqno;
+
+ pcb->rcv_nxt += TCP_TCPLEN(cseg);
+ LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n",
+ pcb->rcv_wnd >= TCP_TCPLEN(cseg));
+ pcb->rcv_wnd -= TCP_TCPLEN(cseg);
+
+ tcp_update_rcv_ann_wnd(pcb);
+
+ if (cseg->p->tot_len > 0) {
+ /* Chain this pbuf onto the pbuf that we will pass to
+ the application. */
+ if (recv_data) {
+ pbuf_cat(recv_data, cseg->p);
+ } else {
+ recv_data = cseg->p;
+ }
+ cseg->p = NULL;
+ }
+ if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: dequeued FIN.\n"));
+ recv_flags |= TF_GOT_FIN;
+ if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */
+ pcb->state = CLOSE_WAIT;
+ }
+ }
+
+ pcb->ooseq = cseg->next;
+ tcp_seg_free(cseg);
+ }
+#endif /* TCP_QUEUE_OOSEQ */
+
+
+ /* Acknowledge the segment(s). */
+ tcp_ack(pcb);
+
+ } else {
+ /* We get here if the incoming segment is out-of-sequence. */
+ tcp_send_empty_ack(pcb);
+#if TCP_QUEUE_OOSEQ
+ /* We queue the segment on the ->ooseq queue. */
+ if (pcb->ooseq == NULL) {
+ pcb->ooseq = tcp_seg_copy(&inseg);
+ } else {
+ /* If the queue is not empty, we walk through the queue and
+ try to find a place where the sequence number of the
+ incoming segment is between the sequence numbers of the
+ previous and the next segment on the ->ooseq queue. That is
+ the place where we put the incoming segment. If needed, we
+ trim the second edges of the previous and the incoming
+ segment so that it will fit into the sequence.
+
+ If the incoming segment has the same sequence number as a
+ segment on the ->ooseq queue, we discard the segment that
+ contains less data. */
+
+ prev = NULL;
+ for(next = pcb->ooseq; next != NULL; next = next->next) {
+ if (seqno == next->tcphdr->seqno) {
+ /* The sequence number of the incoming segment is the
+ same as the sequence number of the segment on
+ ->ooseq. We check the lengths to see which one to
+ discard. */
+ if (inseg.len > next->len) {
+ /* The incoming segment is larger than the old
+ segment. We replace some segments with the new
+ one. */
+ cseg = tcp_seg_copy(&inseg);
+ if (cseg != NULL) {
+ if (prev != NULL) {
+ prev->next = cseg;
+ } else {
+ pcb->ooseq = cseg;
+ }
+ tcp_oos_insert_segment(cseg, next);
+ }
+ break;
+ } else {
+ /* Either the lenghts are the same or the incoming
+ segment was smaller than the old one; in either
+ case, we ditch the incoming segment. */
+ break;
+ }
+ } else {
+ if (prev == NULL) {
+ if (TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {
+ /* The sequence number of the incoming segment is lower
+ than the sequence number of the first segment on the
+ queue. We put the incoming segment first on the
+ queue. */
+ cseg = tcp_seg_copy(&inseg);
+ if (cseg != NULL) {
+ pcb->ooseq = cseg;
+ tcp_oos_insert_segment(cseg, next);
+ }
+ break;
+ }
+ } else {
+ /*if (TCP_SEQ_LT(prev->tcphdr->seqno, seqno) &&
+ TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {*/
+ if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno+1, next->tcphdr->seqno-1)) {
+ /* The sequence number of the incoming segment is in
+ between the sequence numbers of the previous and
+ the next segment on ->ooseq. We trim trim the previous
+ segment, delete next segments that included in received segment
+ and trim received, if needed. */
+ cseg = tcp_seg_copy(&inseg);
+ if (cseg != NULL) {
+ if (TCP_SEQ_GT(prev->tcphdr->seqno + prev->len, seqno)) {
+ /* We need to trim the prev segment. */
+ prev->len = (u16_t)(seqno - prev->tcphdr->seqno);
+ pbuf_realloc(prev->p, prev->len);
+ }
+ prev->next = cseg;
+ tcp_oos_insert_segment(cseg, next);
+ }
+ break;
+ }
+ }
+ /* If the "next" segment is the last segment on the
+ ooseq queue, we add the incoming segment to the end
+ of the list. */
+ if (next->next == NULL &&
+ TCP_SEQ_GT(seqno, next->tcphdr->seqno)) {
+ if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) {
+ /* segment "next" already contains all data */
+ break;
+ }
+ next->next = tcp_seg_copy(&inseg);
+ if (next->next != NULL) {
+ if (TCP_SEQ_GT(next->tcphdr->seqno + next->len, seqno)) {
+ /* We need to trim the last segment. */
+ next->len = (u16_t)(seqno - next->tcphdr->seqno);
+ pbuf_realloc(next->p, next->len);
+ }
+ }
+ break;
+ }
+ }
+ prev = next;
+ }
+ }
+#endif /* TCP_QUEUE_OOSEQ */
+
+ }
+ } else {
+ /* The incoming segment is not withing the window. */
+ tcp_send_empty_ack(pcb);
+ }
+ } else {
+ /* Segments with length 0 is taken care of here. Segments that
+ fall out of the window are ACKed. */
+ /*if (TCP_SEQ_GT(pcb->rcv_nxt, seqno) ||
+ TCP_SEQ_GEQ(seqno, pcb->rcv_nxt + pcb->rcv_wnd)) {*/
+ if(!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd-1)){
+ tcp_ack_now(pcb);
+ }
+ }
+}
+
+/**
+ * Parses the options contained in the incoming segment.
+ *
+ * Called from tcp_listen_input() and tcp_process().
+ * Currently, only the MSS option is supported!
+ *
+ * @param pcb the tcp_pcb for which a segment arrived
+ */
+static void
+tcp_parseopt(struct tcp_pcb *pcb)
+{
+ u16_t c, max_c;
+ u16_t mss;
+ u8_t *opts, opt;
+#if LWIP_TCP_TIMESTAMPS
+ u32_t tsval;
+#endif
+
+ opts = (u8_t *)tcphdr + TCP_HLEN;
+
+ /* Parse the TCP MSS option, if present. */
+ if(TCPH_HDRLEN(tcphdr) > 0x5) {
+ max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2;
+ for (c = 0; c < max_c; ) {
+ opt = opts[c];
+ switch (opt) {
+ case 0x00:
+ /* End of options. */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: EOL\n"));
+ return;
+ case 0x01:
+ /* NOP option. */
+ ++c;
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n"));
+ break;
+ case 0x02:
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MSS\n"));
+ if (opts[c + 1] != 0x04 || c + 0x04 > max_c) {
+ /* Bad length */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n"));
+ return;
+ }
+ /* An MSS option with the right option length. */
+ mss = (opts[c + 2] << 8) | opts[c + 3];
+ /* Limit the mss to the configured TCP_MSS and prevent division by zero */
+ pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss;
+ /* Advance to next option */
+ c += 0x04;
+ break;
+#if LWIP_TCP_TIMESTAMPS
+ case 0x08:
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: TS\n"));
+ if (opts[c + 1] != 0x0A || c + 0x0A > max_c) {
+ /* Bad length */
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n"));
+ return;
+ }
+ /* TCP timestamp option with valid length */
+ tsval = (opts[c+2]) | (opts[c+3] << 8) |
+ (opts[c+4] << 16) | (opts[c+5] << 24);
+ if (flags & TCP_SYN) {
+ pcb->ts_recent = ntohl(tsval);
+ pcb->flags |= TF_TIMESTAMP;
+ } else if (TCP_SEQ_BETWEEN(pcb->ts_lastacksent, seqno, seqno+tcplen)) {
+ pcb->ts_recent = ntohl(tsval);
+ }
+ /* Advance to next option */
+ c += 0x0A;
+ break;
+#endif
+ default:
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n"));
+ if (opts[c + 1] == 0) {
+ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n"));
+ /* If the length field is zero, the options are malformed
+ and we don't process them further. */
+ return;
+ }
+ /* All other options have a length field, so that we easily
+ can skip past them. */
+ c += opts[c + 1];
+ }
+ }
+ }
+}
+
+#endif /* LWIP_TCP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c
new file mode 100644
index 0000000..9605beb
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c
@@ -0,0 +1,1071 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Transmission Control Protocol, outgoing traffic
+ *
+ * The output functions of TCP.
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/tcp.h"
+#include "lwip/def.h"
+#include "lwip/mem.h"
+#include "lwip/memp.h"
+#include "lwip/sys.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/stats.h"
+#include "lwip/snmp.h"
+
+#include <string.h>
+#define _TEST_HD_
+/* Forward declarations.*/
+static void tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb);
+
+static struct tcp_hdr *
+tcp_output_set_header(struct tcp_pcb *pcb, struct pbuf *p, int optlen,
+ u32_t seqno_be /* already in network byte order */)
+{
+ struct tcp_hdr *tcphdr = p->payload;
+ tcphdr->src = htons(pcb->local_port);
+ tcphdr->dest = htons(pcb->remote_port);
+ tcphdr->seqno = seqno_be;
+ tcphdr->ackno = htonl(pcb->rcv_nxt);
+ TCPH_FLAGS_SET(tcphdr, TCP_ACK);
+ tcphdr->wnd = htons(pcb->rcv_ann_wnd);
+ tcphdr->urgp = 0;
+ TCPH_HDRLEN_SET(tcphdr, (5 + optlen / 4));
+ tcphdr->chksum = 0;
+
+ /* If we're sending a packet, update the announced right window edge */
+ pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd;
+
+ return tcphdr;
+}
+
+/**
+ * Called by tcp_close() to send a segment including flags but not data.
+ *
+ * @param pcb the tcp_pcb over which to send a segment
+ * @param flags the flags to set in the segment header
+ * @return ERR_OK if sent, another err_t otherwise
+ */
+err_t
+tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags)
+{
+ /* no data, no length, flags, copy=1, no optdata */
+ return tcp_enqueue(pcb, NULL, 0, flags, TCP_WRITE_FLAG_COPY, 0);
+}
+
+/**
+ * Write data for sending (but does not send it immediately).
+ *
+ * It waits in the expectation of more data being sent soon (as
+ * it can send them more efficiently by combining them together).
+ * To prompt the system to send data now, call tcp_output() after
+ * calling tcp_write().
+ *
+ * @param pcb Protocol control block of the TCP connection to enqueue data for.
+ * @param data pointer to the data to send
+ * @param len length (in bytes) of the data to send
+ * @param apiflags combination of following flags :
+ * - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack
+ * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent,
+ * @return ERR_OK if enqueued, another err_t on error
+ *
+ * @see tcp_write()
+ */
+err_t
+tcp_write(struct tcp_pcb *pcb, const void *data, u16_t len, u8_t apiflags)
+{
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_write(pcb=%p, data=%p, len=%"U16_F", apiflags=%"U16_F")\n", (void *)pcb,
+ data, len, (u16_t)apiflags));
+ /* connection is in valid state for data transmission? */
+ if (pcb->state == ESTABLISHED ||
+ pcb->state == CLOSE_WAIT ||
+ pcb->state == SYN_SENT ||
+ pcb->state == SYN_RCVD) {
+ if (len > 0) {
+#if LWIP_TCP_TIMESTAMPS
+ return tcp_enqueue(pcb, (void *)data, len, 0, apiflags,
+ pcb->flags & TF_TIMESTAMP ? TF_SEG_OPTS_TS : 0);
+#else
+ return tcp_enqueue(pcb, (void *)data, len, 0, apiflags, 0);
+#endif
+ }
+ return ERR_OK;
+ } else {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE, ("tcp_write() called in invalid state\n"));
+ return ERR_CONN;
+ }
+}
+
+/**
+ * Enqueue data and/or TCP options for transmission
+ *
+ * Called by tcp_connect(), tcp_listen_input(), tcp_send_ctrl() and tcp_write().
+ *
+ * @param pcb Protocol control block for the TCP connection to enqueue data for.
+ * @param arg Pointer to the data to be enqueued for sending.
+ * @param len Data length in bytes
+ * @param flags tcp header flags to set in the outgoing segment
+ * @param apiflags combination of following flags :
+ * - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack
+ * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent,
+ * @param optflags options to include in segment later on (see definition of struct tcp_seg)
+ */
+err_t
+tcp_enqueue(struct tcp_pcb *pcb, void *arg, u16_t len,
+ u8_t flags, u8_t apiflags, u8_t optflags)
+{
+ struct pbuf *p;
+ struct tcp_seg *seg, *useg, *queue;
+ u32_t seqno;
+ u16_t left, seglen;
+ void *ptr;
+ u16_t queuelen;
+ u8_t optlen;
+
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG,
+ ("tcp_enqueue(pcb=%p, arg=%p, len=%"U16_F", flags=%"X16_F", apiflags=%"U16_F")\n",
+ (void *)pcb, arg, len, (u16_t)flags, (u16_t)apiflags));
+ LWIP_ERROR("tcp_enqueue: packet needs payload, options, or SYN/FIN (programmer violates API)",
+ ((len != 0) || (optflags != 0) || ((flags & (TCP_SYN | TCP_FIN)) != 0)),
+ return ERR_ARG;);
+ LWIP_ERROR("tcp_enqueue: len != 0 || arg == NULL (programmer violates API)",
+ ((len != 0) || (arg == NULL)), return ERR_ARG;);
+
+ /* fail on too much data */
+ if (len > pcb->snd_buf) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_WARNING,
+ ("tcp_enqueue: too much data (len=%"U16_F" > snd_buf=%"U16_F")\n", len, pcb->snd_buf));
+ pcb->flags |= TF_NAGLEMEMERR;
+ return ERR_MEM;
+ }
+ left = len;
+ ptr = arg;
+
+ optlen = LWIP_TCP_OPT_LENGTH(optflags);
+
+ /* seqno will be the sequence number of the first segment enqueued
+ * by the call to this function. */
+ seqno = pcb->snd_lbb;
+
+ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen));
+
+ /* If total number of pbufs on the unsent/unacked queues exceeds the
+ * configured maximum, return an error */
+ queuelen = pcb->snd_queuelen;
+ /* check for configured max queuelen and possible overflow */
+ if ((queuelen >= TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_WARNING,
+ ("tcp_enqueue: too long queue %"U16_F" (max %"U16_F")\n", queuelen, TCP_SND_QUEUELEN));
+ TCP_STATS_INC(tcp.memerr);
+ pcb->flags |= TF_NAGLEMEMERR;
+ return ERR_MEM;
+ }
+ if (queuelen != 0) {
+ LWIP_ASSERT("tcp_enqueue: pbufs on queue => at least one queue non-empty",
+ pcb->unacked != NULL || pcb->unsent != NULL);
+ } else {
+ LWIP_ASSERT("tcp_enqueue: no pbufs on queue => both queues empty",
+ pcb->unacked == NULL && pcb->unsent == NULL);
+ }
+
+ /* First, break up the data into segments and tuck them together in
+ * the local "queue" variable. */
+ useg = queue = seg = NULL;
+ seglen = 0;
+ while (queue == NULL || left > 0) {
+ /* The segment length (including options) should be at most the MSS */
+ seglen = left > (pcb->mss - optlen) ? (pcb->mss - optlen) : left;
+
+ /* Allocate memory for tcp_seg, and fill in fields. */
+ seg = memp_malloc(MEMP_TCP_SEG);
+ if (seg == NULL) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("tcp_enqueue: could not allocate memory for tcp_seg\n"));
+ goto memerr;
+ }
+ seg->next = NULL;
+ seg->p = NULL;
+
+ /* first segment of to-be-queued data? */
+ if (queue == NULL) {
+ queue = seg;
+ }
+ /* subsequent segments of to-be-queued data */
+ else {
+ /* Attach the segment to the end of the queued segments */
+ LWIP_ASSERT("useg != NULL", useg != NULL);
+ useg->next = seg;
+ }
+ /* remember last segment of to-be-queued data for next iteration */
+ useg = seg;
+
+ /* If copy is set, memory should be allocated
+ * and data copied into pbuf, otherwise data comes from
+ * ROM or other static memory, and need not be copied. */
+ if (apiflags & TCP_WRITE_FLAG_COPY) {
+ if ((seg->p = pbuf_alloc(PBUF_TRANSPORT, seglen + optlen, PBUF_RAM)) == NULL) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("tcp_enqueue : could not allocate memory for pbuf copy size %"U16_F"\n", seglen));
+ goto memerr;
+ }
+ LWIP_ASSERT("check that first pbuf can hold the complete seglen",
+ (seg->p->len >= seglen + optlen));
+ queuelen += pbuf_clen(seg->p);
+ if (arg != NULL) {
+ MEMCPY((char *)seg->p->payload + optlen, ptr, seglen);
+ }
+ seg->dataptr = seg->p->payload;
+ }
+ /* do not copy data */
+ else {
+ /* First, allocate a pbuf for the headers. */
+ if ((seg->p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("tcp_enqueue: could not allocate memory for header pbuf\n"));
+ goto memerr;
+ }
+ queuelen += pbuf_clen(seg->p);
+
+ /* Second, allocate a pbuf for holding the data.
+ * since the referenced data is available at least until it is sent out on the
+ * link (as it has to be ACKed by the remote party) we can safely use PBUF_ROM
+ * instead of PBUF_REF here.
+ */
+ if (left > 0) {
+ if ((p = pbuf_alloc(PBUF_RAW, seglen, PBUF_ROM)) == NULL) {
+ /* If allocation fails, we have to deallocate the header pbuf as well. */
+ pbuf_free(seg->p);
+ seg->p = NULL;
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("tcp_enqueue: could not allocate memory for zero-copy pbuf\n"));
+ goto memerr;
+ }
+ ++queuelen;
+ /* reference the non-volatile payload data */
+ p->payload = ptr;
+ seg->dataptr = ptr;
+
+ /* Concatenate the headers and data pbufs together. */
+ pbuf_cat(seg->p/*header*/, p/*data*/);
+ p = NULL;
+ }
+ }
+
+ /* Now that there are more segments queued, we check again if the
+ length of the queue exceeds the configured maximum or overflows. */
+ if ((queuelen > TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("tcp_enqueue: queue too long %"U16_F" (%"U16_F")\n", queuelen, TCP_SND_QUEUELEN));
+ goto memerr;
+ }
+
+ seg->len = seglen;
+
+ /* build TCP header */
+ if (pbuf_header(seg->p, TCP_HLEN)) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_enqueue: no room for TCP header in pbuf.\n"));
+ TCP_STATS_INC(tcp.err);
+ goto memerr;
+ }
+ seg->tcphdr = seg->p->payload;
+ seg->tcphdr->src = htons(pcb->local_port);
+ seg->tcphdr->dest = htons(pcb->remote_port);
+ seg->tcphdr->seqno = htonl(seqno);
+ seg->tcphdr->urgp = 0;
+ TCPH_FLAGS_SET(seg->tcphdr, flags);
+ /* don't fill in tcphdr->ackno and tcphdr->wnd until later */
+
+ seg->flags = optflags;
+
+ /* Set the length of the header */
+ TCPH_HDRLEN_SET(seg->tcphdr, (5 + optlen / 4));
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_enqueue: queueing %"U32_F":%"U32_F" (0x%"X16_F")\n",
+ ntohl(seg->tcphdr->seqno),
+ ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg),
+ (u16_t)flags));
+
+ left -= seglen;
+ seqno += seglen;
+ ptr = (void *)((u8_t *)ptr + seglen);
+ }
+
+ /* Now that the data to be enqueued has been broken up into TCP
+ segments in the queue variable, we add them to the end of the
+ pcb->unsent queue. */
+ if (pcb->unsent == NULL) {
+ useg = NULL;
+ }
+ else {
+ for (useg = pcb->unsent; useg->next != NULL; useg = useg->next);
+ }
+ /* { useg is last segment on the unsent queue, NULL if list is empty } */
+
+ /* If there is room in the last pbuf on the unsent queue,
+ chain the first pbuf on the queue together with that. */
+ if (useg != NULL &&
+ TCP_TCPLEN(useg) != 0 &&
+ !(TCPH_FLAGS(useg->tcphdr) & (TCP_SYN | TCP_FIN)) &&
+ (!(flags & (TCP_SYN | TCP_FIN)) || (flags == TCP_FIN)) &&
+ /* fit within max seg size */
+ (useg->len + queue->len <= pcb->mss) &&
+ /* only concatenate segments with the same options */
+ (useg->flags == queue->flags) &&
+ /* segments are consecutive */
+ (ntohl(useg->tcphdr->seqno) + useg->len == ntohl(queue->tcphdr->seqno)) ) {
+ /* Remove TCP header from first segment of our to-be-queued list */
+ if(pbuf_header(queue->p, -(TCP_HLEN + optlen))) {
+ /* Can we cope with this failing? Just assert for now */
+ LWIP_ASSERT("pbuf_header failed\n", 0);
+ TCP_STATS_INC(tcp.err);
+ goto memerr;
+ }
+ if (queue->p->len == 0) {
+ /* free the first (header-only) pbuf if it is now empty (contained only headers) */
+ struct pbuf *old_q = queue->p;
+ queue->p = queue->p->next;
+ old_q->next = NULL;
+ queuelen--;
+ pbuf_free(old_q);
+ }
+ if (flags & TCP_FIN) {
+ /* the new segment contains only FIN, no data -> put the FIN into the last segment */
+ LWIP_ASSERT("FIN enqueued together with data", queue->p == NULL && queue->len == 0);
+ TCPH_SET_FLAG(useg->tcphdr, TCP_FIN);
+ } else {
+ LWIP_ASSERT("zero-length pbuf", (queue->p != NULL) && (queue->p->len > 0));
+ pbuf_cat(useg->p, queue->p);
+ useg->len += queue->len;
+ useg->next = queue->next;
+ }
+
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("tcp_enqueue: chaining segments, new len %"U16_F"\n", useg->len));
+ if (seg == queue) {
+ seg = useg;
+ seglen = useg->len;
+ }
+ memp_free(MEMP_TCP_SEG, queue);
+ }
+ else {
+ /* empty list */
+ if (useg == NULL) {
+ /* initialize list with this segment */
+ pcb->unsent = queue;
+ }
+ /* enqueue segment */
+ else {
+ useg->next = queue;
+ }
+ }
+ if ((flags & TCP_SYN) || (flags & TCP_FIN)) {
+ ++len;
+ }
+ if (flags & TCP_FIN) {
+ pcb->flags |= TF_FIN;
+ }
+ pcb->snd_lbb += len;
+
+ pcb->snd_buf -= len;
+
+ /* update number of segments on the queues */
+ pcb->snd_queuelen = queuelen;
+ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: %"S16_F" (after enqueued)\n", pcb->snd_queuelen));
+ if (pcb->snd_queuelen != 0) {
+ LWIP_ASSERT("tcp_enqueue: valid queue length",
+ pcb->unacked != NULL || pcb->unsent != NULL);
+ }
+
+ /* Set the PSH flag in the last segment that we enqueued, but only
+ if the segment has data (indicated by seglen > 0). */
+ if (seg != NULL && seglen > 0 && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE)==0)) {
+ TCPH_SET_FLAG(seg->tcphdr, TCP_PSH);
+ }
+
+ return ERR_OK;
+memerr:
+ pcb->flags |= TF_NAGLEMEMERR;
+ TCP_STATS_INC(tcp.memerr);
+
+ if (queue != NULL) {
+ tcp_segs_free(queue);
+ }
+ if (pcb->snd_queuelen != 0) {
+ LWIP_ASSERT("tcp_enqueue: valid queue length", pcb->unacked != NULL ||
+ pcb->unsent != NULL);
+ }
+ LWIP_DEBUGF(TCP_QLEN_DEBUG | LWIP_DBG_STATE, ("tcp_enqueue: %"S16_F" (with mem err)\n", pcb->snd_queuelen));
+ return ERR_MEM;
+}
+
+
+#if LWIP_TCP_TIMESTAMPS
+/* Build a timestamp option (12 bytes long) at the specified options pointer)
+ *
+ * @param pcb tcp_pcb
+ * @param opts option pointer where to store the timestamp option
+ */
+static void
+tcp_build_timestamp_option(struct tcp_pcb *pcb, u32_t *opts)
+{
+ /* Pad with two NOP options to make everything nicely aligned */
+ opts[0] = htonl(0x0101080A);
+ opts[1] = htonl(sys_now());
+ opts[2] = htonl(pcb->ts_recent);
+}
+#endif
+
+/** Send an ACK without data.
+ *
+ * @param pcb Protocol control block for the TCP connection to send the ACK
+ */
+err_t
+tcp_send_empty_ack(struct tcp_pcb *pcb)
+{
+ struct pbuf *p;
+ struct tcp_hdr *tcphdr;
+ u8_t optlen = 0;
+
+#if LWIP_TCP_TIMESTAMPS
+ if (pcb->flags & TF_TIMESTAMP) {
+ optlen = LWIP_TCP_OPT_LENGTH(TF_SEG_OPTS_TS);
+ }
+#endif
+ p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen, PBUF_RAM);
+ if (p == NULL) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n"));
+ return ERR_BUF;
+ }
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG,
+ ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt));
+ /* remove ACK flags from the PCB, as we send an empty ACK now */
+ pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);
+
+ tcphdr = tcp_output_set_header(pcb, p, optlen, htonl(pcb->snd_nxt));
+
+ /* NB. MSS option is only sent on SYNs, so ignore it here */
+#if LWIP_TCP_TIMESTAMPS
+ pcb->ts_lastacksent = pcb->rcv_nxt;
+
+ if (pcb->flags & TF_TIMESTAMP) {
+ tcp_build_timestamp_option(pcb, (u32_t *)(tcphdr + 1));
+ }
+#endif
+
+#if CHECKSUM_GEN_TCP
+ tcphdr->chksum = inet_chksum_pseudo(p, &(pcb->local_ip), &(pcb->remote_ip),
+ IP_PROTO_TCP, p->tot_len);
+#endif
+#if LWIP_NETIF_HWADDRHINT
+ ip_output_hinted(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,
+ IP_PROTO_TCP, &(pcb->addr_hint));
+#else /* LWIP_NETIF_HWADDRHINT*/
+ ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,
+ IP_PROTO_TCP);
+#endif /* LWIP_NETIF_HWADDRHINT*/
+ pbuf_free(p);
+
+ return ERR_OK;
+}
+
+/**
+ * Find out what we can send and send it
+ *
+ * @param pcb Protocol control block for the TCP connection to send data
+ * @return ERR_OK if data has been sent or nothing to send
+ * another err_t on error
+ */
+err_t
+tcp_output(struct tcp_pcb *pcb)
+{
+ struct tcp_seg *seg, *useg;
+ u32_t wnd, snd_nxt;
+#if TCP_CWND_DEBUG
+ s16_t i = 0;
+#endif /* TCP_CWND_DEBUG */
+
+ /* First, check if we are invoked by the TCP input processing
+ code. If so, we do not output anything. Instead, we rely on the
+ input processing code to call us when input processing is done
+ with. */
+ if (tcp_input_pcb == pcb) {
+ return ERR_OK;
+ }
+
+ wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd);
+
+ seg = pcb->unsent;
+
+ /* If the TF_ACK_NOW flag is set and no data will be sent (either
+ * because the ->unsent queue is empty or because the window does
+ * not allow it), construct an empty ACK segment and send it.
+ *
+ * If data is to be sent, we will just piggyback the ACK (see below).
+ */
+ if (pcb->flags & TF_ACK_NOW &&
+ (seg == NULL ||
+ ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) {
+ return tcp_send_empty_ack(pcb);
+ }
+
+ /* useg should point to last segment on unacked queue */
+ useg = pcb->unacked;
+ if (useg != NULL) {
+ for (; useg->next != NULL; useg = useg->next);
+ }
+
+#if TCP_OUTPUT_DEBUG
+ if (seg == NULL) {
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: nothing to send (%p)\n",
+ (void*)pcb->unsent));
+ }
+#endif /* TCP_OUTPUT_DEBUG */
+#if TCP_CWND_DEBUG
+ if (seg == NULL) {
+ LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F
+ ", cwnd %"U16_F", wnd %"U32_F
+ ", seg == NULL, ack %"U32_F"\n",
+ pcb->snd_wnd, pcb->cwnd, wnd, pcb->lastack));
+ } else {
+ LWIP_DEBUGF(TCP_CWND_DEBUG,
+ ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F
+ ", effwnd %"U32_F", seq %"U32_F", ack %"U32_F"\n",
+ pcb->snd_wnd, pcb->cwnd, wnd,
+ ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len,
+ ntohl(seg->tcphdr->seqno), pcb->lastack));
+ }
+#endif /* TCP_CWND_DEBUG */
+ /* data available and window allows it to be sent? */
+ while (seg != NULL &&
+ ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) {
+ LWIP_ASSERT("RST not expected here!",
+ (TCPH_FLAGS(seg->tcphdr) & TCP_RST) == 0);
+ /* Stop sending if the nagle algorithm would prevent it
+ * Don't stop:
+ * - if tcp_enqueue had a memory error before (prevent delayed ACK timeout) or
+ * - if FIN was already enqueued for this PCB (SYN is always alone in a segment -
+ * either seg->next != NULL or pcb->unacked == NULL;
+ * RST is no sent using tcp_enqueue/tcp_output.
+ */
+ if((tcp_do_output_nagle(pcb) == 0) &&
+ ((pcb->flags & (TF_NAGLEMEMERR | TF_FIN)) == 0)){
+ break;
+ }
+#if TCP_CWND_DEBUG
+ LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F", effwnd %"U32_F", seq %"U32_F", ack %"U32_F", i %"S16_F"\n",
+ pcb->snd_wnd, pcb->cwnd, wnd,
+ ntohl(seg->tcphdr->seqno) + seg->len -
+ pcb->lastack,
+ ntohl(seg->tcphdr->seqno), pcb->lastack, i));
+ ++i;
+#endif /* TCP_CWND_DEBUG */
+
+ pcb->unsent = seg->next;
+
+ if (pcb->state != SYN_SENT) {
+ TCPH_SET_FLAG(seg->tcphdr, TCP_ACK);
+ pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);
+ }
+
+ tcp_output_segment(seg, pcb);
+ snd_nxt = ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg);
+ if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) {
+ pcb->snd_nxt = snd_nxt;
+ }
+ /* put segment on unacknowledged list if length > 0 */
+ if (TCP_TCPLEN(seg) > 0) {
+ seg->next = NULL;
+ /* unacked list is empty? */
+ if (pcb->unacked == NULL) {
+ pcb->unacked = seg;
+ useg = seg;
+ /* unacked list is not empty? */
+ } else {
+ /* In the case of fast retransmit, the packet should not go to the tail
+ * of the unacked queue, but rather somewhere before it. We need to check for
+ * this case. -STJ Jul 27, 2004 */
+ if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))){
+ /* add segment to before tail of unacked list, keeping the list sorted */
+ struct tcp_seg **cur_seg = &(pcb->unacked);
+ while (*cur_seg &&
+ TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) {
+ cur_seg = &((*cur_seg)->next );
+ }
+ seg->next = (*cur_seg);
+ (*cur_seg) = seg;
+ } else {
+ /* add segment to tail of unacked list */
+ useg->next = seg;
+ useg = useg->next;
+ }
+ }
+ /* do not queue empty segments on the unacked list */
+ } else {
+ tcp_seg_free(seg);
+ }
+ seg = pcb->unsent;
+ }
+
+ if (seg != NULL && pcb->persist_backoff == 0 &&
+ ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > pcb->snd_wnd) {
+ /* prepare for persist timer */
+ pcb->persist_cnt = 0;
+ pcb->persist_backoff = 1;
+ }
+
+ pcb->flags &= ~TF_NAGLEMEMERR;
+ return ERR_OK;
+}
+
+/**
+ * Called by tcp_output() to actually send a TCP segment over IP.
+ *
+ * @param seg the tcp_seg to send
+ * @param pcb the tcp_pcb for the TCP connection used to send the segment
+ */
+static void
+tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb)
+{
+ u16_t len;
+ struct netif *netif;
+ u32_t *opts;
+
+ /** @bug Exclude retransmitted segments from this count. */
+ snmp_inc_tcpoutsegs();
+
+ /* The TCP header has already been constructed, but the ackno and
+ wnd fields remain. */
+ seg->tcphdr->ackno = htonl(pcb->rcv_nxt);
+
+ /* advertise our receive window size in this TCP segment */
+ seg->tcphdr->wnd = htons(pcb->rcv_ann_wnd);
+
+ pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd;
+
+ /* Add any requested options. NB MSS option is only set on SYN
+ packets, so ignore it here */
+ opts = (u32_t *)(seg->tcphdr + 1);
+ if (seg->flags & TF_SEG_OPTS_MSS) {
+ TCP_BUILD_MSS_OPTION(*opts);
+ opts += 1;
+ }
+#if LWIP_TCP_TIMESTAMPS
+ pcb->ts_lastacksent = pcb->rcv_nxt;
+
+ if (seg->flags & TF_SEG_OPTS_TS) {
+ tcp_build_timestamp_option(pcb, opts);
+ opts += 3;
+ }
+#endif
+
+#ifdef _TEST_HD_
+ /* ANGR: set rtime this _before_ checking ip_route(). Otherwise TCP_SYN will
+ * not be retransmitted in case the interface was down and tcp_connect()
+ * will not return any error. Since we still want the err_cb() (or maybe
+ * the wifi link comes up), make sure that we fulfill the retransmissions in
+ * tcp_slowtmr()
+ */
+
+ /* Set retransmission timer running if it is not currently enabled */
+ if(pcb->rtime == -1)
+ pcb->rtime = 0;
+#endif
+
+ /* If we don't have a local IP address, we get one by
+ calling ip_route(). */
+ if (ip_addr_isany(&(pcb->local_ip))) {
+ netif = ip_route(&(pcb->remote_ip));
+ if (netif == NULL) {
+ return;
+ }
+ ip_addr_set(&(pcb->local_ip), &(netif->ip_addr));
+ }
+
+#ifndef _TEST_HD_
+ //Set retransmission timer running if it is not currently enabled
+ if(pcb->rtime == -1)
+ pcb->rtime = 0;
+#endif
+
+ if (pcb->rttest == 0) {
+ pcb->rttest = tcp_ticks;
+ pcb->rtseq = ntohl(seg->tcphdr->seqno);
+
+ LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_output_segment: rtseq %"U32_F"\n", pcb->rtseq));
+ }
+ LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n",
+ htonl(seg->tcphdr->seqno), htonl(seg->tcphdr->seqno) +
+ seg->len));
+
+ len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload);
+
+ seg->p->len -= len;
+ seg->p->tot_len -= len;
+
+ seg->p->payload = seg->tcphdr;
+
+ seg->tcphdr->chksum = 0;
+#if CHECKSUM_GEN_TCP
+ seg->tcphdr->chksum = inet_chksum_pseudo(seg->p,
+ &(pcb->local_ip),
+ &(pcb->remote_ip),
+ IP_PROTO_TCP, seg->p->tot_len);
+#endif
+ TCP_STATS_INC(tcp.xmit);
+
+#if LWIP_NETIF_HWADDRHINT
+ ip_output_hinted(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,
+ IP_PROTO_TCP, &(pcb->addr_hint));
+#else /* LWIP_NETIF_HWADDRHINT*/
+ ip_output(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,
+ IP_PROTO_TCP);
+#endif /* LWIP_NETIF_HWADDRHINT*/
+}
+
+/**
+ * Send a TCP RESET packet (empty segment with RST flag set) either to
+ * abort a connection or to show that there is no matching local connection
+ * for a received segment.
+ *
+ * Called by tcp_abort() (to abort a local connection), tcp_input() (if no
+ * matching local pcb was found), tcp_listen_input() (if incoming segment
+ * has ACK flag set) and tcp_process() (received segment in the wrong state)
+ *
+ * Since a RST segment is in most cases not sent for an active connection,
+ * tcp_rst() has a number of arguments that are taken from a tcp_pcb for
+ * most other segment output functions.
+ *
+ * @param seqno the sequence number to use for the outgoing segment
+ * @param ackno the acknowledge number to use for the outgoing segment
+ * @param local_ip the local IP address to send the segment from
+ * @param remote_ip the remote IP address to send the segment to
+ * @param local_port the local TCP port to send the segment from
+ * @param remote_port the remote TCP port to send the segment to
+ */
+void
+tcp_rst(u32_t seqno, u32_t ackno,
+ struct ip_addr *local_ip, struct ip_addr *remote_ip,
+ u16_t local_port, u16_t remote_port)
+{
+ struct pbuf *p;
+ struct tcp_hdr *tcphdr;
+ p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM);
+ if (p == NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_rst: could not allocate memory for pbuf\n"));
+ return;
+ }
+ LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr",
+ (p->len >= sizeof(struct tcp_hdr)));
+
+ tcphdr = p->payload;
+ tcphdr->src = htons(local_port);
+ tcphdr->dest = htons(remote_port);
+ tcphdr->seqno = htonl(seqno);
+ tcphdr->ackno = htonl(ackno);
+ TCPH_FLAGS_SET(tcphdr, TCP_RST | TCP_ACK);
+ tcphdr->wnd = htons(TCP_WND);
+ tcphdr->urgp = 0;
+ TCPH_HDRLEN_SET(tcphdr, 5);
+
+ tcphdr->chksum = 0;
+#if CHECKSUM_GEN_TCP
+ tcphdr->chksum = inet_chksum_pseudo(p, local_ip, remote_ip,
+ IP_PROTO_TCP, p->tot_len);
+#endif
+ TCP_STATS_INC(tcp.xmit);
+ snmp_inc_tcpoutrsts();
+ /* Send output with hardcoded TTL since we have no access to the pcb */
+ ip_output(p, local_ip, remote_ip, TCP_TTL, 0, IP_PROTO_TCP);
+ pbuf_free(p);
+ LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno));
+}
+
+/**
+ * Requeue all unacked segments for retransmission
+ *
+ * Called by tcp_slowtmr() for slow retransmission.
+ *
+ * @param pcb the tcp_pcb for which to re-enqueue all unacked segments
+ */
+void
+tcp_rexmit_rto(struct tcp_pcb *pcb)
+{
+ struct tcp_seg *seg;
+
+ if (pcb->unacked == NULL) {
+ return;
+ }
+
+ /* Move all unacked segments to the head of the unsent queue */
+ for (seg = pcb->unacked; seg->next != NULL; seg = seg->next);
+ /* concatenate unsent queue after unacked queue */
+ seg->next = pcb->unsent;
+ /* unsent queue is the concatenated queue (of unacked, unsent) */
+ pcb->unsent = pcb->unacked;
+ /* unacked queue is now empty */
+ pcb->unacked = NULL;
+
+ /* increment number of retransmissions */
+ ++pcb->nrtx;
+
+ /* Don't take any RTT measurements after retransmitting. */
+ pcb->rttest = 0;
+
+ /* Do the actual retransmission */
+ tcp_output(pcb);
+}
+
+/**
+ * Requeue the first unacked segment for retransmission
+ *
+ * Called by tcp_receive() for fast retramsmit.
+ *
+ * @param pcb the tcp_pcb for which to retransmit the first unacked segment
+ */
+void
+tcp_rexmit(struct tcp_pcb *pcb)
+{
+ struct tcp_seg *seg;
+ struct tcp_seg **cur_seg;
+
+ if (pcb->unacked == NULL) {
+ return;
+ }
+
+ /* Move the first unacked segment to the unsent queue */
+ /* Keep the unsent queue sorted. */
+ seg = pcb->unacked;
+ pcb->unacked = seg->next;
+
+ cur_seg = &(pcb->unsent);
+ while (*cur_seg &&
+ TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) {
+ cur_seg = &((*cur_seg)->next );
+ }
+ seg->next = *cur_seg;
+ *cur_seg = seg;
+
+ ++pcb->nrtx;
+
+ /* Don't take any rtt measurements after retransmitting. */
+ pcb->rttest = 0;
+
+ /* Do the actual retransmission. */
+ snmp_inc_tcpretranssegs();
+ /* No need to call tcp_output: we are always called from tcp_input()
+ and thus tcp_output directly returns. */
+}
+
+
+/**
+ * Handle retransmission after three dupacks received
+ *
+ * @param pcb the tcp_pcb for which to retransmit the first unacked segment
+ */
+void
+tcp_rexmit_fast(struct tcp_pcb *pcb)
+{
+ if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) {
+ /* This is fast retransmit. Retransmit the first unacked segment. */
+ LWIP_DEBUGF(TCP_FR_DEBUG,
+ ("tcp_receive: dupacks %"U16_F" (%"U32_F
+ "), fast retransmit %"U32_F"\n",
+ (u16_t)pcb->dupacks, pcb->lastack,
+ ntohl(pcb->unacked->tcphdr->seqno)));
+ tcp_rexmit(pcb);
+
+ /* Set ssthresh to half of the minimum of the current
+ * cwnd and the advertised window */
+ if (pcb->cwnd > pcb->snd_wnd)
+ pcb->ssthresh = pcb->snd_wnd / 2;
+ else
+ pcb->ssthresh = pcb->cwnd / 2;
+
+ /* The minimum value for ssthresh should be 2 MSS */
+ if (pcb->ssthresh < 2*pcb->mss) {
+ LWIP_DEBUGF(TCP_FR_DEBUG,
+ ("tcp_receive: The minimum value for ssthresh %"U16_F
+ " should be min 2 mss %"U16_F"...\n",
+ pcb->ssthresh, 2*pcb->mss));
+ pcb->ssthresh = 2*pcb->mss;
+ }
+
+ pcb->cwnd = pcb->ssthresh + 3 * pcb->mss;
+ pcb->flags |= TF_INFR;
+ }
+}
+
+
+/**
+ * Send keepalive packets to keep a connection active although
+ * no data is sent over it.
+ *
+ * Called by tcp_slowtmr()
+ *
+ * @param pcb the tcp_pcb for which to send a keepalive packet
+ */
+void
+tcp_keepalive(struct tcp_pcb *pcb)
+{
+ struct pbuf *p;
+ struct tcp_hdr *tcphdr;
+
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: sending KEEPALIVE probe to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
+ ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip),
+ ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip)));
+
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F" pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n",
+ tcp_ticks, pcb->tmr, pcb->keep_cnt_sent));
+
+ p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM);
+
+ if(p == NULL) {
+ LWIP_DEBUGF(TCP_DEBUG,
+ ("tcp_keepalive: could not allocate memory for pbuf\n"));
+ return;
+ }
+ LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr",
+ (p->len >= sizeof(struct tcp_hdr)));
+
+ tcphdr = tcp_output_set_header(pcb, p, 0, htonl(pcb->snd_nxt - 1));
+
+#if CHECKSUM_GEN_TCP
+ tcphdr->chksum = inet_chksum_pseudo(p, &pcb->local_ip, &pcb->remote_ip,
+ IP_PROTO_TCP, p->tot_len);
+#endif
+ TCP_STATS_INC(tcp.xmit);
+
+ /* Send output to IP */
+#if LWIP_NETIF_HWADDRHINT
+ ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP,
+ &(pcb->addr_hint));
+#else /* LWIP_NETIF_HWADDRHINT*/
+ ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP);
+#endif /* LWIP_NETIF_HWADDRHINT*/
+
+ pbuf_free(p);
+
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F".\n",
+ pcb->snd_nxt - 1, pcb->rcv_nxt));
+}
+
+
+/**
+ * Send persist timer zero-window probes to keep a connection active
+ * when a window update is lost.
+ *
+ * Called by tcp_slowtmr()
+ *
+ * @param pcb the tcp_pcb for which to send a zero-window probe packet
+ */
+void
+tcp_zero_window_probe(struct tcp_pcb *pcb)
+{
+ struct pbuf *p;
+ struct tcp_hdr *tcphdr;
+ struct tcp_seg *seg;
+ u16_t len;
+ u8_t is_fin;
+
+ LWIP_DEBUGF(TCP_DEBUG,
+ ("tcp_zero_window_probe: sending ZERO WINDOW probe to %"
+ U16_F".%"U16_F".%"U16_F".%"U16_F"\n",
+ ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip),
+ ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip)));
+
+ LWIP_DEBUGF(TCP_DEBUG,
+ ("tcp_zero_window_probe: tcp_ticks %"U32_F
+ " pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n",
+ tcp_ticks, pcb->tmr, pcb->keep_cnt_sent));
+
+ seg = pcb->unacked;
+
+ if(seg == NULL)
+ seg = pcb->unsent;
+
+ if(seg == NULL)
+ return;
+
+ is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0);
+ len = is_fin ? TCP_HLEN : TCP_HLEN + 1;
+
+ p = pbuf_alloc(PBUF_IP, len, PBUF_RAM);
+ if(p == NULL) {
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n"));
+ return;
+ }
+ LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr",
+ (p->len >= sizeof(struct tcp_hdr)));
+
+ tcphdr = tcp_output_set_header(pcb, p, 0, seg->tcphdr->seqno);
+
+ if (is_fin) {
+ /* FIN segment, no data */
+ TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN);
+ } else {
+ /* Data segment, copy in one byte from the head of the unacked queue */
+ *((char *)p->payload + sizeof(struct tcp_hdr)) = *(char *)seg->dataptr;
+ }
+
+#if CHECKSUM_GEN_TCP
+ tcphdr->chksum = inet_chksum_pseudo(p, &pcb->local_ip, &pcb->remote_ip,
+ IP_PROTO_TCP, p->tot_len);
+#endif
+ TCP_STATS_INC(tcp.xmit);
+
+ /* Send output to IP */
+#if LWIP_NETIF_HWADDRHINT
+ ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP,
+ &(pcb->addr_hint));
+#else /* LWIP_NETIF_HWADDRHINT*/
+ ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP);
+#endif /* LWIP_NETIF_HWADDRHINT*/
+
+ pbuf_free(p);
+
+ LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F
+ " ackno %"U32_F".\n",
+ pcb->snd_nxt - 1, pcb->rcv_nxt));
+}
+#endif /* LWIP_TCP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c
new file mode 100644
index 0000000..697ca7c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c
@@ -0,0 +1,843 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * User Datagram Protocol module
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+
+/* udp.c
+ *
+ * The code for the User Datagram Protocol UDP & UDPLite (RFC 3828).
+ *
+ */
+
+/* @todo Check the use of '(struct udp_pcb).chksum_len_rx'!
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/udp.h"
+#include "lwip/def.h"
+#include "lwip/memp.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/icmp.h"
+#include "lwip/stats.h"
+#include "lwip/snmp.h"
+#include "arch/perf.h"
+#include "lwip/dhcp.h"
+
+#include <string.h>
+
+/* The list of UDP PCBs */
+/* exported in udp.h (was static) */
+struct udp_pcb *udp_pcbs;
+
+/**
+ * Process an incoming UDP datagram.
+ *
+ * Given an incoming UDP datagram (as a chain of pbufs) this function
+ * finds a corresponding UDP PCB and hands over the pbuf to the pcbs
+ * recv function. If no pcb is found or the datagram is incorrect, the
+ * pbuf is freed.
+ *
+ * @param p pbuf to be demultiplexed to a UDP PCB.
+ * @param inp network interface on which the datagram was received.
+ *
+ */
+void
+udp_input(struct pbuf *p, struct netif *inp)
+{
+ struct udp_hdr *udphdr;
+ struct udp_pcb *pcb, *prev;
+ struct udp_pcb *uncon_pcb;
+ struct ip_hdr *iphdr;
+ u16_t src, dest;
+ u8_t local_match;
+ u8_t broadcast;
+
+ PERF_START;
+
+ UDP_STATS_INC(udp.recv);
+
+ iphdr = p->payload;
+
+ /* Check minimum length (IP header + UDP header)
+ * and move payload pointer to UDP header */
+ if (p->tot_len < (IPH_HL(iphdr) * 4 + UDP_HLEN) || pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4))) {
+ /* drop short packets */
+ LWIP_DEBUGF(UDP_DEBUG,
+ ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len));
+ UDP_STATS_INC(udp.lenerr);
+ UDP_STATS_INC(udp.drop);
+ snmp_inc_udpinerrors();
+ pbuf_free(p);
+ goto end;
+ }
+
+ udphdr = (struct udp_hdr *)p->payload;
+
+ /* is broadcast packet ? */
+ broadcast = ip_addr_isbroadcast(&(iphdr->dest), inp);
+
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_input: received datagram of length %"U16_F"\n", p->tot_len));
+
+ /* convert src and dest ports to host byte order */
+ src = ntohs(udphdr->src);
+ dest = ntohs(udphdr->dest);
+
+ udp_debug_print(udphdr);
+
+ /* print the UDP source and destination */
+ LWIP_DEBUGF(UDP_DEBUG,
+ ("udp (%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F") <-- "
+ "(%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F")\n",
+ ip4_addr1(&iphdr->dest), ip4_addr2(&iphdr->dest),
+ ip4_addr3(&iphdr->dest), ip4_addr4(&iphdr->dest), ntohs(udphdr->dest),
+ ip4_addr1(&iphdr->src), ip4_addr2(&iphdr->src),
+ ip4_addr3(&iphdr->src), ip4_addr4(&iphdr->src), ntohs(udphdr->src)));
+
+#if LWIP_DHCP
+ pcb = NULL;
+ /* when LWIP_DHCP is active, packets to DHCP_CLIENT_PORT may only be processed by
+ the dhcp module, no other UDP pcb may use the local UDP port DHCP_CLIENT_PORT */
+ if (dest == DHCP_CLIENT_PORT) {
+ /* all packets for DHCP_CLIENT_PORT not coming from DHCP_SERVER_PORT are dropped! */
+ if (src == DHCP_SERVER_PORT) {
+ if ((inp->dhcp != NULL) && (inp->dhcp->pcb != NULL)) {
+ /* accept the packe if
+ (- broadcast or directed to us) -> DHCP is link-layer-addressed, local ip is always ANY!
+ - inp->dhcp->pcb->remote == ANY or iphdr->src */
+ if ((ip_addr_isany(&inp->dhcp->pcb->remote_ip) ||
+ ip_addr_cmp(&(inp->dhcp->pcb->remote_ip), &(iphdr->src)))) {
+ pcb = inp->dhcp->pcb;
+ }
+ }
+ }
+ } else
+#endif /* LWIP_DHCP */
+ {
+ prev = NULL;
+ local_match = 0;
+ uncon_pcb = NULL;
+ /* Iterate through the UDP pcb list for a matching pcb.
+ * 'Perfect match' pcbs (connected to the remote port & ip address) are
+ * preferred. If no perfect match is found, the first unconnected pcb that
+ * matches the local port and ip address gets the datagram. */
+ for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
+ local_match = 0;
+ /* print the PCB local and remote address */
+ LWIP_DEBUGF(UDP_DEBUG,
+ ("pcb (%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F") --- "
+ "(%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F")\n",
+ ip4_addr1(&pcb->local_ip), ip4_addr2(&pcb->local_ip),
+ ip4_addr3(&pcb->local_ip), ip4_addr4(&pcb->local_ip), pcb->local_port,
+ ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip),
+ ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip), pcb->remote_port));
+
+ /* compare PCB local addr+port to UDP destination addr+port */
+ if ((pcb->local_port == dest) &&
+ ((!broadcast && ip_addr_isany(&pcb->local_ip)) ||
+ ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest)) ||
+#if LWIP_IGMP
+ ip_addr_ismulticast(&(iphdr->dest)) ||
+#endif /* LWIP_IGMP */
+#if IP_SOF_BROADCAST_RECV
+ (broadcast && (pcb->so_options & SOF_BROADCAST)))) {
+#else /* IP_SOF_BROADCAST_RECV */
+ (broadcast))) {
+#endif /* IP_SOF_BROADCAST_RECV */
+ local_match = 1;
+ if ((uncon_pcb == NULL) &&
+ ((pcb->flags & UDP_FLAGS_CONNECTED) == 0)) {
+ /* the first unconnected matching PCB */
+ uncon_pcb = pcb;
+ }
+ }
+ /* compare PCB remote addr+port to UDP source addr+port */
+ if ((local_match != 0) &&
+ (pcb->remote_port == src) &&
+ (ip_addr_isany(&pcb->remote_ip) ||
+ ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)))) {
+ /* the first fully matching PCB */
+ if (prev != NULL) {
+ /* move the pcb to the front of udp_pcbs so that is
+ found faster next time */
+ prev->next = pcb->next;
+ pcb->next = udp_pcbs;
+ udp_pcbs = pcb;
+ } else {
+ UDP_STATS_INC(udp.cachehit);
+ }
+ break;
+ }
+ prev = pcb;
+ }
+ /* no fully matching pcb found? then look for an unconnected pcb */
+ if (pcb == NULL) {
+ pcb = uncon_pcb;
+ }
+ }
+
+ /* Check checksum if this is a match or if it was directed at us. */
+ if (pcb != NULL || ip_addr_cmp(&inp->ip_addr, &iphdr->dest)) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: calculating checksum\n"));
+#if LWIP_UDPLITE
+ if (IPH_PROTO(iphdr) == IP_PROTO_UDPLITE) {
+ /* Do the UDP Lite checksum */
+#if CHECKSUM_CHECK_UDP
+ u16_t chklen = ntohs(udphdr->len);
+ if (chklen < sizeof(struct udp_hdr)) {
+ if (chklen == 0) {
+ /* For UDP-Lite, checksum length of 0 means checksum
+ over the complete packet (See RFC 3828 chap. 3.1) */
+ chklen = p->tot_len;
+ } else {
+ /* At least the UDP-Lite header must be covered by the
+ checksum! (Again, see RFC 3828 chap. 3.1) */
+ UDP_STATS_INC(udp.chkerr);
+ UDP_STATS_INC(udp.drop);
+ snmp_inc_udpinerrors();
+ pbuf_free(p);
+ goto end;
+ }
+ }
+ if (inet_chksum_pseudo_partial(p, (struct ip_addr *)&(iphdr->src),
+ (struct ip_addr *)&(iphdr->dest),
+ IP_PROTO_UDPLITE, p->tot_len, chklen) != 0) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("udp_input: UDP Lite datagram discarded due to failing checksum\n"));
+ UDP_STATS_INC(udp.chkerr);
+ UDP_STATS_INC(udp.drop);
+ snmp_inc_udpinerrors();
+ pbuf_free(p);
+ goto end;
+ }
+#endif /* CHECKSUM_CHECK_UDP */
+ } else
+#endif /* LWIP_UDPLITE */
+ {
+#if CHECKSUM_CHECK_UDP
+ if (udphdr->chksum != 0) {
+ if (inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src),
+ (struct ip_addr *)&(iphdr->dest),
+ IP_PROTO_UDP, p->tot_len) != 0) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("udp_input: UDP datagram discarded due to failing checksum\n"));
+ UDP_STATS_INC(udp.chkerr);
+ UDP_STATS_INC(udp.drop);
+ snmp_inc_udpinerrors();
+ pbuf_free(p);
+ goto end;
+ }
+ }
+#endif /* CHECKSUM_CHECK_UDP */
+ }
+ if(pbuf_header(p, -UDP_HLEN)) {
+ /* Can we cope with this failing? Just assert for now */
+ LWIP_ASSERT("pbuf_header failed\n", 0);
+ UDP_STATS_INC(udp.drop);
+ snmp_inc_udpinerrors();
+ pbuf_free(p);
+ goto end;
+ }
+ if (pcb != NULL) {
+ snmp_inc_udpindatagrams();
+ /* callback */
+ if (pcb->recv != NULL) {
+ /* now the recv function is responsible for freeing p */
+ pcb->recv(pcb->recv_arg, pcb, p, &iphdr->src, src);
+ } else {
+ /* no recv function registered? then we have to free the pbuf! */
+ pbuf_free(p);
+ goto end;
+ }
+ } else {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: not for us.\n"));
+
+#if LWIP_ICMP
+ /* No match was found, send ICMP destination port unreachable unless
+ destination address was broadcast/multicast. */
+ if (!broadcast &&
+ !ip_addr_ismulticast(&iphdr->dest)) {
+ /* move payload pointer back to ip header */
+ pbuf_header(p, (IPH_HL(iphdr) * 4) + UDP_HLEN);
+ LWIP_ASSERT("p->payload == iphdr", (p->payload == iphdr));
+ icmp_dest_unreach(p, ICMP_DUR_PORT);
+ }
+#endif /* LWIP_ICMP */
+ UDP_STATS_INC(udp.proterr);
+ UDP_STATS_INC(udp.drop);
+ snmp_inc_udpnoports();
+ pbuf_free(p);
+ }
+ } else {
+ pbuf_free(p);
+ }
+end:
+ PERF_STOP("udp_input");
+}
+
+/**
+ * Send data using UDP.
+ *
+ * @param pcb UDP PCB used to send the data.
+ * @param p chain of pbuf's to be sent.
+ *
+ * The datagram will be sent to the current remote_ip & remote_port
+ * stored in pcb. If the pcb is not bound to a port, it will
+ * automatically be bound to a random port.
+ *
+ * @return lwIP error code.
+ * - ERR_OK. Successful. No error occured.
+ * - ERR_MEM. Out of memory.
+ * - ERR_RTE. Could not find route to destination address.
+ * - More errors could be returned by lower protocol layers.
+ *
+ * @see udp_disconnect() udp_sendto()
+ */
+err_t
+udp_send(struct udp_pcb *pcb, struct pbuf *p)
+{
+ /* send to the packet using remote ip and port stored in the pcb */
+ return udp_sendto(pcb, p, &pcb->remote_ip, pcb->remote_port);
+}
+
+/**
+ * Send data to a specified address using UDP.
+ *
+ * @param pcb UDP PCB used to send the data.
+ * @param p chain of pbuf's to be sent.
+ * @param dst_ip Destination IP address.
+ * @param dst_port Destination UDP port.
+ *
+ * dst_ip & dst_port are expected to be in the same byte order as in the pcb.
+ *
+ * If the PCB already has a remote address association, it will
+ * be restored after the data is sent.
+ *
+ * @return lwIP error code (@see udp_send for possible error codes)
+ *
+ * @see udp_disconnect() udp_send()
+ */
+err_t
+udp_sendto(struct udp_pcb *pcb, struct pbuf *p,
+ struct ip_addr *dst_ip, u16_t dst_port)
+{
+ struct netif *netif;
+
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send\n"));
+
+ /* find the outgoing network interface for this packet */
+#if LWIP_IGMP
+ netif = ip_route((ip_addr_ismulticast(dst_ip))?(&(pcb->multicast_ip)):(dst_ip));
+#else
+ netif = ip_route(dst_ip);
+#endif /* LWIP_IGMP */
+
+ /* no outgoing network interface could be found? */
+ if (netif == NULL) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: No route to 0x%"X32_F"\n", dst_ip->addr));
+ UDP_STATS_INC(udp.rterr);
+ return ERR_RTE;
+ }
+ return udp_sendto_if(pcb, p, dst_ip, dst_port, netif);
+}
+
+/**
+ * Send data to a specified address using UDP.
+ * The netif used for sending can be specified.
+ *
+ * This function exists mainly for DHCP, to be able to send UDP packets
+ * on a netif that is still down.
+ *
+ * @param pcb UDP PCB used to send the data.
+ * @param p chain of pbuf's to be sent.
+ * @param dst_ip Destination IP address.
+ * @param dst_port Destination UDP port.
+ * @param netif the netif used for sending.
+ *
+ * dst_ip & dst_port are expected to be in the same byte order as in the pcb.
+ *
+ * @return lwIP error code (@see udp_send for possible error codes)
+ *
+ * @see udp_disconnect() udp_send()
+ */
+err_t
+udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p,
+ struct ip_addr *dst_ip, u16_t dst_port, struct netif *netif)
+{
+ struct udp_hdr *udphdr;
+ struct ip_addr *src_ip;
+ err_t err;
+ struct pbuf *q; /* q will be sent down the stack */
+
+#if IP_SOF_BROADCAST
+ /* broadcast filter? */
+ if ( ((pcb->so_options & SOF_BROADCAST) == 0) && ip_addr_isbroadcast(dst_ip, netif) ) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
+ ("udp_sendto_if: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb));
+ return ERR_VAL;
+ }
+#endif /* IP_SOF_BROADCAST */
+
+ /* if the PCB is not yet bound to a port, bind it here */
+ if (pcb->local_port == 0) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n"));
+ err = udp_bind(pcb, &pcb->local_ip, pcb->local_port);
+ if (err != ERR_OK) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: forced port bind failed\n"));
+ return err;
+ }
+ }
+
+ /* not enough space to add an UDP header to first pbuf in given p chain? */
+ if (pbuf_header(p, UDP_HLEN)) {
+ /* allocate header in a separate new pbuf */
+ q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM);
+ /* new header pbuf could not be allocated? */
+ if (q == NULL) {
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n"));
+ return ERR_MEM;
+ }
+ /* chain header q in front of given pbuf p */
+ pbuf_chain(q, p);
+ /* first pbuf q points to header pbuf */
+ LWIP_DEBUGF(UDP_DEBUG,
+ ("udp_send: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p));
+ } else {
+ /* adding space for header within p succeeded */
+ /* first pbuf q equals given pbuf */
+ q = p;
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header in given pbuf %p\n", (void *)p));
+ }
+ LWIP_ASSERT("check that first pbuf can hold struct udp_hdr",
+ (q->len >= sizeof(struct udp_hdr)));
+ /* q now represents the packet to be sent */
+ udphdr = q->payload;
+ udphdr->src = htons(pcb->local_port);
+ udphdr->dest = htons(dst_port);
+ /* in UDP, 0 checksum means 'no checksum' */
+ udphdr->chksum = 0x0000;
+
+ /* PCB local address is IP_ANY_ADDR? */
+ if (ip_addr_isany(&pcb->local_ip)) {
+ /* use outgoing network interface IP address as source address */
+ src_ip = &(netif->ip_addr);
+ } else {
+ /* check if UDP PCB local IP address is correct
+ * this could be an old address if netif->ip_addr has changed */
+ if (!ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))) {
+ /* local_ip doesn't match, drop the packet */
+ if (q != p) {
+ /* free the header pbuf */
+ pbuf_free(q);
+ q = NULL;
+ /* p is still referenced by the caller, and will live on */
+ }
+ return ERR_VAL;
+ }
+ /* use UDP PCB local IP address as source address */
+ src_ip = &(pcb->local_ip);
+ }
+
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: sending datagram of length %"U16_F"\n", q->tot_len));
+
+#if LWIP_UDPLITE
+ /* UDP Lite protocol? */
+ if (pcb->flags & UDP_FLAGS_UDPLITE) {
+ u16_t chklen, chklen_hdr;
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE packet length %"U16_F"\n", q->tot_len));
+ /* set UDP message length in UDP header */
+ chklen_hdr = chklen = pcb->chksum_len_tx;
+ if ((chklen < sizeof(struct udp_hdr)) || (chklen > q->tot_len)) {
+ if (chklen != 0) {
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE pcb->chksum_len is illegal: %"U16_F"\n", chklen));
+ }
+ /* For UDP-Lite, checksum length of 0 means checksum
+ over the complete packet. (See RFC 3828 chap. 3.1)
+ At least the UDP-Lite header must be covered by the
+ checksum, therefore, if chksum_len has an illegal
+ value, we generate the checksum over the complete
+ packet to be safe. */
+ chklen_hdr = 0;
+ chklen = q->tot_len;
+ }
+ udphdr->len = htons(chklen_hdr);
+ /* calculate checksum */
+#if CHECKSUM_GEN_UDP
+ udphdr->chksum = inet_chksum_pseudo_partial(q, src_ip, dst_ip,
+ IP_PROTO_UDPLITE, q->tot_len, chklen);
+ /* chksum zero must become 0xffff, as zero means 'no checksum' */
+ if (udphdr->chksum == 0x0000)
+ udphdr->chksum = 0xffff;
+#endif /* CHECKSUM_CHECK_UDP */
+ /* output to IP */
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,IP_PROTO_UDPLITE,)\n"));
+#if LWIP_NETIF_HWADDRHINT
+ netif->addr_hint = &(pcb->addr_hint);
+#endif /* LWIP_NETIF_HWADDRHINT*/
+ err = ip_output_if(q, src_ip, dst_ip, pcb->ttl, pcb->tos, IP_PROTO_UDPLITE, netif);
+#if LWIP_NETIF_HWADDRHINT
+ netif->addr_hint = NULL;
+#endif /* LWIP_NETIF_HWADDRHINT*/
+ } else
+#endif /* LWIP_UDPLITE */
+ { /* UDP */
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP packet length %"U16_F"\n", q->tot_len));
+ udphdr->len = htons(q->tot_len);
+ /* calculate checksum */
+#if CHECKSUM_GEN_UDP
+ if ((pcb->flags & UDP_FLAGS_NOCHKSUM) == 0) {
+ udphdr->chksum = inet_chksum_pseudo(q, src_ip, dst_ip, IP_PROTO_UDP, q->tot_len);
+ /* chksum zero must become 0xffff, as zero means 'no checksum' */
+ if (udphdr->chksum == 0x0000) udphdr->chksum = 0xffff;
+ }
+#endif /* CHECKSUM_CHECK_UDP */
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP checksum 0x%04"X16_F"\n", udphdr->chksum));
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,IP_PROTO_UDP,)\n"));
+ /* output to IP */
+#if LWIP_NETIF_HWADDRHINT
+ netif->addr_hint = &(pcb->addr_hint);
+#endif /* LWIP_NETIF_HWADDRHINT*/
+ err = ip_output_if(q, src_ip, dst_ip, pcb->ttl, pcb->tos, IP_PROTO_UDP, netif);
+#if LWIP_NETIF_HWADDRHINT
+ netif->addr_hint = NULL;
+#endif /* LWIP_NETIF_HWADDRHINT*/
+ }
+ /* TODO: must this be increased even if error occured? */
+ snmp_inc_udpoutdatagrams();
+
+ /* did we chain a separate header pbuf earlier? */
+ if (q != p) {
+ /* free the header pbuf */
+ pbuf_free(q);
+ q = NULL;
+ /* p is still referenced by the caller, and will live on */
+ }
+
+ UDP_STATS_INC(udp.xmit);
+ return err;
+}
+
+/**
+ * Bind an UDP PCB.
+ *
+ * @param pcb UDP PCB to be bound with a local address ipaddr and port.
+ * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to
+ * bind to all local interfaces.
+ * @param port local UDP port to bind with. Use 0 to automatically bind
+ * to a random port between UDP_LOCAL_PORT_RANGE_START and
+ * UDP_LOCAL_PORT_RANGE_END.
+ *
+ * ipaddr & port are expected to be in the same byte order as in the pcb.
+ *
+ * @return lwIP error code.
+ * - ERR_OK. Successful. No error occured.
+ * - ERR_USE. The specified ipaddr and port are already bound to by
+ * another UDP PCB.
+ *
+ * @see udp_disconnect()
+ */
+err_t
+udp_bind(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
+{
+ struct udp_pcb *ipcb;
+ u8_t rebind;
+
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = "));
+ ip_addr_debug_print(UDP_DEBUG, ipaddr);
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port));
+
+ rebind = 0;
+ /* Check for double bind and rebind of the same pcb */
+ for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
+ /* is this UDP PCB already on active list? */
+ if (pcb == ipcb) {
+ /* pcb may occur at most once in active list */
+ LWIP_ASSERT("rebind == 0", rebind == 0);
+ /* pcb already in list, just rebind */
+ rebind = 1;
+ }
+
+ /* this code does not allow upper layer to share a UDP port for
+ listening to broadcast or multicast traffic (See SO_REUSE_ADDR and
+ SO_REUSE_PORT under *BSD). TODO: See where it fits instead, OR
+ combine with implementation of UDP PCB flags. Leon Woestenberg. */
+#ifdef LWIP_UDP_TODO
+ /* port matches that of PCB in list? */
+ else
+ if ((ipcb->local_port == port) &&
+ /* IP address matches, or one is IP_ADDR_ANY? */
+ (ip_addr_isany(&(ipcb->local_ip)) ||
+ ip_addr_isany(ipaddr) ||
+ ip_addr_cmp(&(ipcb->local_ip), ipaddr))) {
+ /* other PCB already binds to this local IP and port */
+ LWIP_DEBUGF(UDP_DEBUG,
+ ("udp_bind: local port %"U16_F" already bound by another pcb\n", port));
+ return ERR_USE;
+ }
+#endif
+ }
+
+ ip_addr_set(&pcb->local_ip, ipaddr);
+
+ /* no port specified? */
+ if (port == 0) {
+#ifndef UDP_LOCAL_PORT_RANGE_START
+#define UDP_LOCAL_PORT_RANGE_START 4096
+#define UDP_LOCAL_PORT_RANGE_END 0x7fff
+#endif
+ port = UDP_LOCAL_PORT_RANGE_START;
+ ipcb = udp_pcbs;
+ while ((ipcb != NULL) && (port != UDP_LOCAL_PORT_RANGE_END)) {
+ if (ipcb->local_port == port) {
+ /* port is already used by another udp_pcb */
+ port++;
+ /* restart scanning all udp pcbs */
+ ipcb = udp_pcbs;
+ } else
+ /* go on with next udp pcb */
+ ipcb = ipcb->next;
+ }
+ if (ipcb != NULL) {
+ /* no more ports available in local range */
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n"));
+ return ERR_USE;
+ }
+ }
+ pcb->local_port = port;
+ snmp_insert_udpidx_tree(pcb);
+ /* pcb not active yet? */
+ if (rebind == 0) {
+ /* place the PCB on the active list if not already there */
+ pcb->next = udp_pcbs;
+ udp_pcbs = pcb;
+ }
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
+ ("udp_bind: bound to %"U16_F".%"U16_F".%"U16_F".%"U16_F", port %"U16_F"\n",
+ (u16_t)((ntohl(pcb->local_ip.addr) >> 24) & 0xff),
+ (u16_t)((ntohl(pcb->local_ip.addr) >> 16) & 0xff),
+ (u16_t)((ntohl(pcb->local_ip.addr) >> 8) & 0xff),
+ (u16_t)(ntohl(pcb->local_ip.addr) & 0xff), pcb->local_port));
+ return ERR_OK;
+}
+/**
+ * Connect an UDP PCB.
+ *
+ * This will associate the UDP PCB with the remote address.
+ *
+ * @param pcb UDP PCB to be connected with remote address ipaddr and port.
+ * @param ipaddr remote IP address to connect with.
+ * @param port remote UDP port to connect with.
+ *
+ * @return lwIP error code
+ *
+ * ipaddr & port are expected to be in the same byte order as in the pcb.
+ *
+ * The udp pcb is bound to a random local port if not already bound.
+ *
+ * @see udp_disconnect()
+ */
+err_t
+udp_connect(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
+{
+ struct udp_pcb *ipcb;
+
+ if (pcb->local_port == 0) {
+ err_t err = udp_bind(pcb, &pcb->local_ip, pcb->local_port);
+ if (err != ERR_OK)
+ return err;
+ }
+
+ ip_addr_set(&pcb->remote_ip, ipaddr);
+ pcb->remote_port = port;
+ pcb->flags |= UDP_FLAGS_CONNECTED;
+/** TODO: this functionality belongs in upper layers */
+#ifdef LWIP_UDP_TODO
+ /* Nail down local IP for netconn_addr()/getsockname() */
+ if (ip_addr_isany(&pcb->local_ip) && !ip_addr_isany(&pcb->remote_ip)) {
+ struct netif *netif;
+
+ if ((netif = ip_route(&(pcb->remote_ip))) == NULL) {
+ LWIP_DEBUGF(UDP_DEBUG, ("udp_connect: No route to 0x%lx\n", pcb->remote_ip.addr));
+ UDP_STATS_INC(udp.rterr);
+ return ERR_RTE;
+ }
+ /** TODO: this will bind the udp pcb locally, to the interface which
+ is used to route output packets to the remote address. However, we
+ might want to accept incoming packets on any interface! */
+ pcb->local_ip = netif->ip_addr;
+ } else if (ip_addr_isany(&pcb->remote_ip)) {
+ pcb->local_ip.addr = 0;
+ }
+#endif
+ LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,
+ ("udp_connect: connected to %"U16_F".%"U16_F".%"U16_F".%"U16_F",port %"U16_F"\n",
+ (u16_t)((ntohl(pcb->remote_ip.addr) >> 24) & 0xff),
+ (u16_t)((ntohl(pcb->remote_ip.addr) >> 16) & 0xff),
+ (u16_t)((ntohl(pcb->remote_ip.addr) >> 8) & 0xff),
+ (u16_t)(ntohl(pcb->remote_ip.addr) & 0xff), pcb->remote_port));
+
+ /* Insert UDP PCB into the list of active UDP PCBs. */
+ for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
+ if (pcb == ipcb) {
+ /* already on the list, just return */
+ return ERR_OK;
+ }
+ }
+ /* PCB not yet on the list, add PCB now */
+ pcb->next = udp_pcbs;
+ udp_pcbs = pcb;
+ return ERR_OK;
+}
+
+/**
+ * Disconnect a UDP PCB
+ *
+ * @param pcb the udp pcb to disconnect.
+ */
+void
+udp_disconnect(struct udp_pcb *pcb)
+{
+ /* reset remote address association */
+ ip_addr_set(&pcb->remote_ip, IP_ADDR_ANY);
+ pcb->remote_port = 0;
+ /* mark PCB as unconnected */
+ pcb->flags &= ~UDP_FLAGS_CONNECTED;
+}
+
+/**
+ * Set a receive callback for a UDP PCB
+ *
+ * This callback will be called when receiving a datagram for the pcb.
+ *
+ * @param pcb the pcb for wich to set the recv callback
+ * @param recv function pointer of the callback function
+ * @param recv_arg additional argument to pass to the callback function
+ */
+void
+udp_recv(struct udp_pcb *pcb,
+ void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p,
+ struct ip_addr *addr, u16_t port),
+ void *recv_arg)
+{
+ /* remember recv() callback and user data */
+ pcb->recv = recv;
+ pcb->recv_arg = recv_arg;
+}
+
+/**
+ * Remove an UDP PCB.
+ *
+ * @param pcb UDP PCB to be removed. The PCB is removed from the list of
+ * UDP PCB's and the data structure is freed from memory.
+ *
+ * @see udp_new()
+ */
+void
+udp_remove(struct udp_pcb *pcb)
+{
+ struct udp_pcb *pcb2;
+
+ snmp_delete_udpidx_tree(pcb);
+ /* pcb to be removed is first in list? */
+ if (udp_pcbs == pcb) {
+ /* make list start at 2nd pcb */
+ udp_pcbs = udp_pcbs->next;
+ /* pcb not 1st in list */
+ } else
+ for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) {
+ /* find pcb in udp_pcbs list */
+ if (pcb2->next != NULL && pcb2->next == pcb) {
+ /* remove pcb from list */
+ pcb2->next = pcb->next;
+ }
+ }
+ memp_free(MEMP_UDP_PCB, pcb);
+}
+
+/**
+ * Create a UDP PCB.
+ *
+ * @return The UDP PCB which was created. NULL if the PCB data structure
+ * could not be allocated.
+ *
+ * @see udp_remove()
+ */
+struct udp_pcb *
+udp_new(void)
+{
+ struct udp_pcb *pcb;
+ pcb = memp_malloc(MEMP_UDP_PCB);
+ /* could allocate UDP PCB? */
+ if (pcb != NULL) {
+ /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0
+ * which means checksum is generated over the whole datagram per default
+ * (recommended as default by RFC 3828). */
+ /* initialize PCB to all zeroes */
+ memset(pcb, 0, sizeof(struct udp_pcb));
+ pcb->ttl = UDP_TTL;
+ }
+ return pcb;
+}
+
+#if UDP_DEBUG
+/**
+ * Print UDP header information for debug purposes.
+ *
+ * @param udphdr pointer to the udp header in memory.
+ */
+void
+udp_debug_print(struct udp_hdr *udphdr)
+{
+ LWIP_DEBUGF(UDP_DEBUG, ("UDP header:\n"));
+ LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n",
+ ntohs(udphdr->src), ntohs(udphdr->dest)));
+ LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n"));
+ LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | 0x%04"X16_F" | (len, chksum)\n",
+ ntohs(udphdr->len), ntohs(udphdr->chksum)));
+ LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n"));
+}
+#endif /* UDP_DEBUG */
+
+#endif /* LWIP_UDP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h
new file mode 100644
index 0000000..d5464b7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h
@@ -0,0 +1,118 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ *
+ * AutoIP Automatic LinkLocal IP Configuration
+ */
+
+/*
+ *
+ * Copyright (c) 2007 Dominik Spies <kontakt dspies de>
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+ *
+ * Author: Dominik Spies <kontakt dspies de>
+ *
+ * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform
+ * with RFC 3927.
+ *
+ *
+ * Please coordinate changes and requests with Dominik Spies
+ * <kontakt dspies de>
+ */
+
+#ifndef __LWIP_AUTOIP_H__
+#define __LWIP_AUTOIP_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/netif.h"
+#include "lwip/udp.h"
+#include "netif/etharp.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AutoIP Timing */
+#define AUTOIP_TMR_INTERVAL 100
+#define AUTOIP_TICKS_PER_SECOND (1000 / AUTOIP_TMR_INTERVAL)
+
+/* RFC 3927 Constants */
+#define PROBE_WAIT 1 /* second (initial random delay) */
+#define PROBE_MIN 1 /* second (minimum delay till repeated probe) */
+#define PROBE_MAX 2 /* seconds (maximum delay till repeated probe) */
+#define PROBE_NUM 3 /* (number of probe packets) */
+#define ANNOUNCE_NUM 2 /* (number of announcement packets) */
+#define ANNOUNCE_INTERVAL 2 /* seconds (time between announcement packets) */
+#define ANNOUNCE_WAIT 2 /* seconds (delay before announcing) */
+#define MAX_CONFLICTS 10 /* (max conflicts before rate limiting) */
+#define RATE_LIMIT_INTERVAL 60 /* seconds (delay between successive attempts) */
+#define DEFEND_INTERVAL 10 /* seconds (min. wait between defensive ARPs) */
+
+/* AutoIP client states */
+#define AUTOIP_STATE_OFF 0
+#define AUTOIP_STATE_PROBING 1
+#define AUTOIP_STATE_ANNOUNCING 2
+#define AUTOIP_STATE_BOUND 3
+
+struct autoip
+{
+ struct ip_addr llipaddr; /* the currently selected, probed, announced or used LL IP-Address */
+ u8_t state; /* current AutoIP state machine state */
+ u8_t sent_num; /* sent number of probes or announces, dependent on state */
+ u16_t ttw; /* ticks to wait, tick is AUTOIP_TMR_INTERVAL long */
+ u8_t lastconflict; /* ticks until a conflict can be solved by defending */
+ u8_t tried_llipaddr; /* total number of probed/used Link Local IP-Addresses */
+};
+
+
+/** Init srand, has to be called before entering mainloop */
+void autoip_init(void);
+
+/** Start AutoIP client */
+err_t autoip_start(struct netif *netif);
+
+/** Stop AutoIP client */
+err_t autoip_stop(struct netif *netif);
+
+/** Handles every incoming ARP Packet, called by etharp_arp_input */
+void autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr);
+
+/** Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds */
+void autoip_tmr(void);
+
+/** Handle a possible change in the network configuration */
+void autoip_network_changed(struct netif *netif);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_AUTOIP */
+
+#endif /* __LWIP_AUTOIP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h
new file mode 100644
index 0000000..3f917ba
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h
@@ -0,0 +1,113 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_ICMP_H__
+#define __LWIP_ICMP_H__
+
+#include "lwip/opt.h"
+#include "lwip/pbuf.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ICMP_ER 0 /* echo reply */
+#define ICMP_DUR 3 /* destination unreachable */
+#define ICMP_SQ 4 /* source quench */
+#define ICMP_RD 5 /* redirect */
+#define ICMP_ECHO 8 /* echo */
+#define ICMP_TE 11 /* time exceeded */
+#define ICMP_PP 12 /* parameter problem */
+#define ICMP_TS 13 /* timestamp */
+#define ICMP_TSR 14 /* timestamp reply */
+#define ICMP_IRQ 15 /* information request */
+#define ICMP_IR 16 /* information reply */
+
+enum icmp_dur_type {
+ ICMP_DUR_NET = 0, /* net unreachable */
+ ICMP_DUR_HOST = 1, /* host unreachable */
+ ICMP_DUR_PROTO = 2, /* protocol unreachable */
+ ICMP_DUR_PORT = 3, /* port unreachable */
+ ICMP_DUR_FRAG = 4, /* fragmentation needed and DF set */
+ ICMP_DUR_SR = 5 /* source route failed */
+};
+
+enum icmp_te_type {
+ ICMP_TE_TTL = 0, /* time to live exceeded in transit */
+ ICMP_TE_FRAG = 1 /* fragment reassembly time exceeded */
+};
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+/** This is the standard ICMP header only that the u32_t data
+ * is splitted to two u16_t like ICMP echo needs it.
+ * This header is also used for other ICMP types that do not
+ * use the data part.
+ */
+PACK_STRUCT_BEGIN
+struct icmp_echo_hdr {
+ PACK_STRUCT_FIELD(u8_t type);
+ PACK_STRUCT_FIELD(u8_t code);
+ PACK_STRUCT_FIELD(u16_t chksum);
+ PACK_STRUCT_FIELD(u16_t id);
+ PACK_STRUCT_FIELD(u16_t seqno);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define ICMPH_TYPE(hdr) ((hdr)->type)
+#define ICMPH_CODE(hdr) ((hdr)->code)
+
+/** Combines type and code to an u16_t */
+#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t))
+#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c))
+
+
+#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */
+
+void icmp_input(struct pbuf *p, struct netif *inp);
+void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t);
+void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t);
+
+#endif /* LWIP_ICMP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_ICMP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h
new file mode 100644
index 0000000..da67e75
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h
@@ -0,0 +1,164 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2002 CITEL Technologies Ltd.
+ * 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. Neither the name of CITEL Technologies Ltd nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL CITEL TECHNOLOGIES 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.
+ *
+ * This file is a contribution to the lwIP TCP/IP stack.
+ * The Swedish Institute of Computer Science and Adam Dunkels
+ * are specifically granted permission to redistribute this
+ * source code.
+*/
+
+#ifndef __LWIP_IGMP_H__
+#define __LWIP_IGMP_H__
+
+#include "lwip/opt.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/pbuf.h"
+
+#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * IGMP constants
+ */
+#define IP_PROTO_IGMP 2
+#define IGMP_TTL 1
+#define IGMP_MINLEN 8
+#define ROUTER_ALERT 0x9404
+#define ROUTER_ALERTLEN 4
+
+/*
+ * IGMP message types, including version number.
+ */
+#define IGMP_MEMB_QUERY 0x11 /* Membership query */
+#define IGMP_V1_MEMB_REPORT 0x12 /* Ver. 1 membership report */
+#define IGMP_V2_MEMB_REPORT 0x16 /* Ver. 2 membership report */
+#define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */
+
+/* IGMP timer */
+#define IGMP_TMR_INTERVAL 100 /* Milliseconds */
+#define IGMP_V1_DELAYING_MEMBER_TMR (1000/IGMP_TMR_INTERVAL)
+#define IGMP_JOIN_DELAYING_MEMBER_TMR (500 /IGMP_TMR_INTERVAL)
+
+/* MAC Filter Actions */
+#define IGMP_DEL_MAC_FILTER 0
+#define IGMP_ADD_MAC_FILTER 1
+
+/* Group membership states */
+#define IGMP_GROUP_NON_MEMBER 0
+#define IGMP_GROUP_DELAYING_MEMBER 1
+#define IGMP_GROUP_IDLE_MEMBER 2
+
+/*
+ * IGMP packet format.
+ */
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct igmp_msg {
+ PACK_STRUCT_FIELD(u8_t igmp_msgtype);
+ PACK_STRUCT_FIELD(u8_t igmp_maxresp);
+ PACK_STRUCT_FIELD(u16_t igmp_checksum);
+ PACK_STRUCT_FIELD(struct ip_addr igmp_group_address);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+/*
+ * now a group structure - there is
+ * a list of groups for each interface
+ * these should really be linked from the interface, but
+ * if we keep them separate we will not affect the lwip original code
+ * too much
+ *
+ * There will be a group for the all systems group address but this
+ * will not run the state machine as it is used to kick off reports
+ * from all the other groups
+ */
+
+struct igmp_group {
+ struct igmp_group *next;
+ struct netif *interface;
+ struct ip_addr group_address;
+ u8_t last_reporter_flag; /* signifies we were the last person to report */
+ u8_t group_state;
+ u16_t timer;
+ u8_t use; /* counter of simultaneous uses */
+};
+
+
+/* Prototypes */
+void igmp_init(void);
+
+err_t igmp_start( struct netif *netif);
+
+err_t igmp_stop( struct netif *netif);
+
+void igmp_report_groups( struct netif *netif);
+
+struct igmp_group *igmp_lookfor_group( struct netif *ifp, struct ip_addr *addr);
+
+struct igmp_group *igmp_lookup_group( struct netif *ifp, struct ip_addr *addr);
+
+err_t igmp_remove_group( struct igmp_group *group);
+
+void igmp_input( struct pbuf *p, struct netif *inp, struct ip_addr *dest);
+
+err_t igmp_joingroup( struct ip_addr *ifaddr, struct ip_addr *groupaddr);
+
+err_t igmp_leavegroup( struct ip_addr *ifaddr, struct ip_addr *groupaddr);
+
+void igmp_tmr(void);
+
+void igmp_timeout( struct igmp_group *group);
+
+void igmp_start_timer( struct igmp_group *group, u8_t max_time);
+
+void igmp_stop_timer( struct igmp_group *group);
+
+void igmp_delaying_member( struct igmp_group *group, u8_t maxresp);
+
+err_t igmp_ip_output_if( struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t proto, struct netif *netif);
+
+void igmp_send( struct igmp_group *group, u8_t type);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_IGMP */
+
+#endif /* __LWIP_IGMP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h
new file mode 100644
index 0000000..903afdf
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h
@@ -0,0 +1,105 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_INET_H__
+#define __LWIP_INET_H__
+
+#include "lwip/opt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For compatibility with BSD code */
+struct in_addr {
+ u32_t s_addr;
+};
+
+#define INADDR_NONE ((u32_t)0xffffffffUL) /* 255.255.255.255 */
+#define INADDR_LOOPBACK ((u32_t)0x7f000001UL) /* 127.0.0.1 */
+#define INADDR_ANY ((u32_t)0x00000000UL) /* 0.0.0.0 */
+#define INADDR_BROADCAST ((u32_t)0xffffffffUL) /* 255.255.255.255 */
+
+u32_t inet_addr(const char *cp);
+int inet_aton(const char *cp, struct in_addr *addr);
+char *inet_ntoa(struct in_addr addr); /* returns ptr to static buffer; not reentrant! */
+
+#ifdef htons
+#undef htons
+#endif /* htons */
+#ifdef htonl
+#undef htonl
+#endif /* htonl */
+#ifdef ntohs
+#undef ntohs
+#endif /* ntohs */
+#ifdef ntohl
+#undef ntohl
+#endif /* ntohl */
+
+#ifndef LWIP_PLATFORM_BYTESWAP
+#define LWIP_PLATFORM_BYTESWAP 0
+#endif
+
+#if BYTE_ORDER == BIG_ENDIAN
+#define htons(x) (x)
+#define ntohs(x) (x)
+#define htonl(x) (x)
+#define ntohl(x) (x)
+#else /* BYTE_ORDER != BIG_ENDIAN */
+#ifdef LWIP_PREFIX_BYTEORDER_FUNCS
+/* workaround for naming collisions on some platforms */
+#define htons lwip_htons
+#define ntohs lwip_ntohs
+#define htonl lwip_htonl
+#define ntohl lwip_ntohl
+#endif /* LWIP_PREFIX_BYTEORDER_FUNCS */
+#if LWIP_PLATFORM_BYTESWAP
+#define htons(x) LWIP_PLATFORM_HTONS(x)
+#define ntohs(x) LWIP_PLATFORM_HTONS(x)
+#define htonl(x) LWIP_PLATFORM_HTONL(x)
+#define ntohl(x) LWIP_PLATFORM_HTONL(x)
+#else /* LWIP_PLATFORM_BYTESWAP */
+u16_t htons(u16_t x);
+u16_t ntohs(u16_t x);
+u32_t htonl(u32_t x);
+u32_t ntohl(u32_t x);
+#endif /* LWIP_PLATFORM_BYTESWAP */
+
+#endif /* BYTE_ORDER == BIG_ENDIAN */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_INET_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h
new file mode 100644
index 0000000..6f5b1b6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h
@@ -0,0 +1,62 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_INET_CHKSUM_H__
+#define __LWIP_INET_CHKSUM_H__
+
+#include "lwip/opt.h"
+
+#include "lwip/pbuf.h"
+#include "lwip/ip_addr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+u16_t inet_chksum(void *dataptr, u16_t len);
+u16_t inet_chksum_pbuf(struct pbuf *p);
+u16_t inet_chksum_pseudo(struct pbuf *p,
+ struct ip_addr *src, struct ip_addr *dest,
+ u8_t proto, u16_t proto_len);
+#if LWIP_UDPLITE
+u16_t inet_chksum_pseudo_partial(struct pbuf *p,
+ struct ip_addr *src, struct ip_addr *dest,
+ u8_t proto, u16_t proto_len, u16_t chksum_len);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_INET_H__ */
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h
new file mode 100644
index 0000000..6b2cdee
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h
@@ -0,0 +1,200 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_IP_H__
+#define __LWIP_IP_H__
+
+#include "lwip/opt.h"
+
+#include "lwip/def.h"
+#include "lwip/pbuf.h"
+#include "lwip/ip_addr.h"
+#include "lwip/err.h"
+#include "lwip/netif.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Currently, the function ip_output_if_opt() is only used with IGMP */
+#define IP_OPTIONS_SEND LWIP_IGMP
+
+#define IP_HLEN 20
+
+#define IP_PROTO_ICMP 1
+#define IP_PROTO_UDP 17
+#define IP_PROTO_UDPLITE 136
+#define IP_PROTO_TCP 6
+
+/* This is passed as the destination address to ip_output_if (not
+ to ip_output), meaning that an IP header already is constructed
+ in the pbuf. This is used when TCP retransmits. */
+#ifdef IP_HDRINCL
+#undef IP_HDRINCL
+#endif /* IP_HDRINCL */
+#define IP_HDRINCL NULL
+
+#if LWIP_NETIF_HWADDRHINT
+#define IP_PCB_ADDRHINT ;u8_t addr_hint
+#else
+#define IP_PCB_ADDRHINT
+#endif /* LWIP_NETIF_HWADDRHINT */
+
+/* This is the common part of all PCB types. It needs to be at the
+ beginning of a PCB type definition. It is located here so that
+ changes to this common part are made in one location instead of
+ having to change all PCB structs. */
+#define IP_PCB \
+ /* ip addresses in network byte order */ \
+ struct ip_addr local_ip; \
+ struct ip_addr remote_ip; \
+ /* Socket options */ \
+ u16_t so_options; \
+ /* Type Of Service */ \
+ u8_t tos; \
+ /* Time To Live */ \
+ u8_t ttl \
+ /* link layer address resolution hint */ \
+ IP_PCB_ADDRHINT
+
+struct ip_pcb {
+/* Common members of all PCB types */
+ IP_PCB;
+};
+
+/*
+ * Option flags per-socket. These are the same like SO_XXX.
+ */
+#define SOF_DEBUG (u16_t)0x0001U /* turn on debugging info recording */
+#define SOF_ACCEPTCONN (u16_t)0x0002U /* socket has had listen() */
+#define SOF_REUSEADDR (u16_t)0x0004U /* allow local address reuse */
+#define SOF_KEEPALIVE (u16_t)0x0008U /* keep connections alive */
+#define SOF_DONTROUTE (u16_t)0x0010U /* just use interface addresses */
+#define SOF_BROADCAST (u16_t)0x0020U /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */
+#define SOF_USELOOPBACK (u16_t)0x0040U /* bypass hardware when possible */
+#define SOF_LINGER (u16_t)0x0080U /* linger on close if data present */
+#define SOF_OOBINLINE (u16_t)0x0100U /* leave received OOB data in line */
+#define SOF_REUSEPORT (u16_t)0x0200U /* allow local address & port reuse */
+
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct ip_hdr {
+ /* version / header length / type of service */
+ PACK_STRUCT_FIELD(u16_t _v_hl_tos);
+ /* total length */
+ PACK_STRUCT_FIELD(u16_t _len);
+ /* identification */
+ PACK_STRUCT_FIELD(u16_t _id);
+ /* fragment offset field */
+ PACK_STRUCT_FIELD(u16_t _offset);
+#define IP_RF 0x8000 /* reserved fragment flag */
+#define IP_DF 0x4000 /* dont fragment flag */
+#define IP_MF 0x2000 /* more fragments flag */
+#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
+ /* time to live / protocol*/
+ PACK_STRUCT_FIELD(u16_t _ttl_proto);
+ /* checksum */
+ PACK_STRUCT_FIELD(u16_t _chksum);
+ /* source and destination IP addresses */
+ PACK_STRUCT_FIELD(struct ip_addr src);
+ PACK_STRUCT_FIELD(struct ip_addr dest);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define IPH_V(hdr) (ntohs((hdr)->_v_hl_tos) >> 12)
+#define IPH_HL(hdr) ((ntohs((hdr)->_v_hl_tos) >> 8) & 0x0f)
+#define IPH_TOS(hdr) (ntohs((hdr)->_v_hl_tos) & 0xff)
+#define IPH_LEN(hdr) ((hdr)->_len)
+#define IPH_ID(hdr) ((hdr)->_id)
+#define IPH_OFFSET(hdr) ((hdr)->_offset)
+#define IPH_TTL(hdr) (ntohs((hdr)->_ttl_proto) >> 8)
+#define IPH_PROTO(hdr) (ntohs((hdr)->_ttl_proto) & 0xff)
+#define IPH_CHKSUM(hdr) ((hdr)->_chksum)
+
+#define IPH_VHLTOS_SET(hdr, v, hl, tos) (hdr)->_v_hl_tos = (htons(((v) << 12) | ((hl) << 8) | (tos)))
+#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len)
+#define IPH_ID_SET(hdr, id) (hdr)->_id = (id)
+#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off)
+#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl_proto = (htons(IPH_PROTO(hdr) | ((u16_t)(ttl) << 8)))
+#define IPH_PROTO_SET(hdr, proto) (hdr)->_ttl_proto = (htons((proto) | (IPH_TTL(hdr) << 8)))
+#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum)
+
+/** The interface that provided the packet for the current callback invocation. */
+extern struct netif *current_netif;
+/** Header of the input packet currently being processed. */
+extern const struct ip_hdr *current_header;
+
+#define ip_init() /* Compatibility define, not init needed. */
+struct netif *ip_route(struct ip_addr *dest);
+err_t ip_input(struct pbuf *p, struct netif *inp);
+err_t ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos, u8_t proto);
+err_t ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos, u8_t proto,
+ struct netif *netif);
+#if LWIP_NETIF_HWADDRHINT
+err_t ip_output_hinted(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint);
+#endif /* LWIP_NETIF_HWADDRHINT */
+#if IP_OPTIONS_SEND
+err_t ip_output_if_opt(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest,
+ u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options,
+ u16_t optlen);
+#endif /* IP_OPTIONS_SEND */
+/** Get the interface that received the current packet.
+ * This function must only be called from a receive callback (udp_recv,
+ * raw_recv, tcp_accept). It will return NULL otherwise. */
+#define ip_current_netif() (current_netif)
+/** Get the IP header of the current packet.
+ * This function must only be called from a receive callback (udp_recv,
+ * raw_recv, tcp_accept). It will return NULL otherwise. */
+#define ip_current_header() (current_header)
+#if IP_DEBUG
+void ip_debug_print(struct pbuf *p);
+#else
+#define ip_debug_print(p)
+#endif /* IP_DEBUG */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_IP_H__ */
+
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h
new file mode 100644
index 0000000..5fbc44d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h
@@ -0,0 +1,175 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_IP_ADDR_H__
+#define __LWIP_IP_ADDR_H__
+
+#include "lwip/opt.h"
+
+#include "lwip/inet.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct ip_addr {
+ PACK_STRUCT_FIELD(u32_t addr);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+/*
+ * struct ipaddr2 is used in the definition of the ARP packet format in
+ * order to support compilers that don't have structure packing.
+ */
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct ip_addr2 {
+ PACK_STRUCT_FIELD(u16_t addrw[2]);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+struct netif;
+
+extern const struct ip_addr ip_addr_any;
+extern const struct ip_addr ip_addr_broadcast;
+
+/** IP_ADDR_ can be used as a fixed IP address
+ * for the wildcard and the broadcast address
+ */
+#define IP_ADDR_ANY ((struct ip_addr *)&ip_addr_any)
+#define IP_ADDR_BROADCAST ((struct ip_addr *)&ip_addr_broadcast)
+
+/* Definitions of the bits in an Internet address integer.
+
+ On subnets, host and network parts are found according to
+ the subnet mask, not these masks. */
+
+#define IN_CLASSA(a) ((((u32_t)(a)) & 0x80000000UL) == 0)
+#define IN_CLASSA_NET 0xff000000
+#define IN_CLASSA_NSHIFT 24
+#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
+#define IN_CLASSA_MAX 128
+
+#define IN_CLASSB(a) ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL)
+#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB_NSHIFT 16
+#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
+#define IN_CLASSB_MAX 65536
+
+#define IN_CLASSC(a) ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL)
+#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC_NSHIFT 8
+#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
+
+#define IN_CLASSD(a) (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL)
+#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
+#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
+#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
+#define IN_MULTICAST(a) IN_CLASSD(a)
+
+#define IN_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL)
+#define IN_BADCLASS(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL)
+
+#define IN_LOOPBACKNET 127 /* official! */
+
+#define IP4_ADDR(ipaddr, a,b,c,d) \
+ (ipaddr)->addr = htonl(((u32_t)((a) & 0xff) << 24) | \
+ ((u32_t)((b) & 0xff) << 16) | \
+ ((u32_t)((c) & 0xff) << 8) | \
+ (u32_t)((d) & 0xff))
+
+#define ip_addr_set(dest, src) (dest)->addr = \
+ ((src) == NULL? 0:\
+ (src)->addr)
+/**
+ * Determine if two address are on the same network.
+ *
+ * @arg addr1 IP address 1
+ * @arg addr2 IP address 2
+ * @arg mask network identifier mask
+ * @return !0 if the network identifiers of both address match
+ */
+#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \
+ (mask)->addr) == \
+ ((addr2)->addr & \
+ (mask)->addr))
+#define ip_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr)
+
+#define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == 0)
+
+u8_t ip_addr_isbroadcast(struct ip_addr *, struct netif *);
+
+#define ip_addr_ismulticast(addr1) (((addr1)->addr & ntohl(0xf0000000UL)) == ntohl(0xe0000000UL))
+
+#define ip_addr_islinklocal(addr1) (((addr1)->addr & ntohl(0xffff0000UL)) == ntohl(0xa9fe0000UL))
+
+#define ip_addr_debug_print(debug, ipaddr) \
+ LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F, \
+ ipaddr != NULL ? \
+ (u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff : 0, \
+ ipaddr != NULL ? \
+ (u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff : 0, \
+ ipaddr != NULL ? \
+ (u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff : 0, \
+ ipaddr != NULL ? \
+ (u16_t)ntohl((ipaddr)->addr) & 0xff : 0))
+
+/* These are cast to u16_t, with the intent that they are often arguments
+ * to printf using the U16_F format from cc.h. */
+#define ip4_addr1(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff)
+#define ip4_addr2(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff)
+#define ip4_addr3(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff)
+#define ip4_addr4(ipaddr) ((u16_t)(ntohl((ipaddr)->addr)) & 0xff)
+
+/**
+ * Same as inet_ntoa() but takes a struct ip_addr*
+ */
+#define ip_ntoa(addr) ((addr != NULL) ? inet_ntoa(*((struct in_addr*)(addr))) : "NULL")
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_IP_ADDR_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h
new file mode 100644
index 0000000..adc6e91
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h
@@ -0,0 +1,78 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Jani Monoses <jani iv ro>
+ *
+ */
+
+#ifndef __LWIP_IP_FRAG_H__
+#define __LWIP_IP_FRAG_H__
+
+#include "lwip/opt.h"
+#include "lwip/err.h"
+#include "lwip/pbuf.h"
+#include "lwip/netif.h"
+#include "lwip/ip_addr.h"
+#include "lwip/ip.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if IP_REASSEMBLY
+/* The IP reassembly timer interval in milliseconds. */
+#define IP_TMR_INTERVAL 1000
+
+/* IP reassembly helper struct.
+ * This is exported because memp needs to know the size.
+ */
+struct ip_reassdata {
+ struct ip_reassdata *next;
+ struct pbuf *p;
+ struct ip_hdr iphdr;
+ u16_t datagram_len;
+ u8_t flags;
+ u8_t timer;
+};
+
+void ip_reass_init(void);
+void ip_reass_tmr(void);
+struct pbuf * ip_reass(struct pbuf *p);
+#endif /* IP_REASSEMBLY */
+
+#if IP_FRAG
+err_t ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest);
+#endif /* IP_FRAG */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_IP_FRAG_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h
new file mode 100644
index 0000000..7d2c9e6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h
@@ -0,0 +1,224 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_API_H__
+#define __LWIP_API_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
+
+#include <stddef.h> /* for size_t */
+
+#include "lwip/netbuf.h"
+#include "lwip/sys.h"
+#include "lwip/ip_addr.h"
+#include "lwip/err.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Throughout this file, IP addresses and port numbers are expected to be in
+ * the same byte order as in the corresponding pcb.
+ */
+
+/* Flags for netconn_write */
+#define NETCONN_NOFLAG 0x00
+#define NETCONN_NOCOPY 0x00 /* Only for source code compatibility */
+#define NETCONN_COPY 0x01
+#define NETCONN_MORE 0x02
+
+/* Helpers to process several netconn_types by the same code */
+#define NETCONNTYPE_GROUP(t) (t&0xF0)
+#define NETCONNTYPE_DATAGRAM(t) (t&0xE0)
+
+enum netconn_type {
+ NETCONN_INVALID = 0,
+ /* NETCONN_TCP Group */
+ NETCONN_TCP = 0x10,
+ /* NETCONN_UDP Group */
+ NETCONN_UDP = 0x20,
+ NETCONN_UDPLITE = 0x21,
+ NETCONN_UDPNOCHKSUM= 0x22,
+ /* NETCONN_RAW Group */
+ NETCONN_RAW = 0x40
+};
+
+enum netconn_state {
+ NETCONN_NONE,
+ NETCONN_WRITE,
+ NETCONN_LISTEN,
+ NETCONN_CONNECT,
+ NETCONN_CLOSE
+};
+
+enum netconn_evt {
+ NETCONN_EVT_RCVPLUS,
+ NETCONN_EVT_RCVMINUS,
+ NETCONN_EVT_SENDPLUS,
+ NETCONN_EVT_SENDMINUS
+};
+
+#if LWIP_IGMP
+enum netconn_igmp {
+ NETCONN_JOIN,
+ NETCONN_LEAVE
+};
+#endif /* LWIP_IGMP */
+
+/* forward-declare some structs to avoid to include their headers */
+struct ip_pcb;
+struct tcp_pcb;
+struct udp_pcb;
+struct raw_pcb;
+struct netconn;
+
+/** A callback prototype to inform about events for a netconn */
+typedef void (* netconn_callback)(struct netconn *, enum netconn_evt, u16_t len);
+
+/** A netconn descriptor */
+struct netconn {
+ /** type of the netconn (TCP, UDP or RAW) */
+ enum netconn_type type;
+ /** current state of the netconn */
+ enum netconn_state state;
+ /** the lwIP internal protocol control block */
+ union {
+ struct ip_pcb *ip;
+ struct tcp_pcb *tcp;
+ struct udp_pcb *udp;
+ struct raw_pcb *raw;
+ } pcb;
+ /** the last error this netconn had */
+ err_t err;
+ /** sem that is used to synchroneously execute functions in the core context */
+ sys_sem_t op_completed;
+ /** mbox where received packets are stored until they are fetched
+ by the netconn application thread (can grow quite big) */
+ sys_mbox_t recvmbox;
+ /** mbox where new connections are stored until processed
+ by the application thread */
+ sys_mbox_t acceptmbox;
+ /** only used for socket layer */
+ int socket;
+#if LWIP_SO_RCVTIMEO
+ /** timeout to wait for new data to be received
+ (or connections to arrive for listening netconns) */
+ int recv_timeout;
+#endif /* LWIP_SO_RCVTIMEO */
+#if LWIP_SO_RCVBUF
+ /** maximum amount of bytes queued in recvmbox */
+ int recv_bufsize;
+#endif /* LWIP_SO_RCVBUF */
+ s16_t recv_avail;
+#if LWIP_TCP
+ /** TCP: when data passed to netconn_write doesn't fit into the send buffer,
+ this temporarily stores the message. */
+ struct api_msg_msg *write_msg;
+ /** TCP: when data passed to netconn_write doesn't fit into the send buffer,
+ this temporarily stores how much is already sent. */
+ size_t write_offset;
+#if LWIP_TCPIP_CORE_LOCKING
+ /** TCP: when data passed to netconn_write doesn't fit into the send buffer,
+ this temporarily stores whether to wake up the original application task
+ if data couldn't be sent in the first try. */
+ u8_t write_delayed;
+#endif /* LWIP_TCPIP_CORE_LOCKING */
+#endif /* LWIP_TCP */
+ /** A callback function that is informed about events for this netconn */
+ netconn_callback callback;
+};
+
+/* Register an Network connection event */
+#define API_EVENT(c,e,l) if (c->callback) { \
+ (*c->callback)(c, e, l); \
+ }
+
+/* Network connection functions: */
+#define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL)
+#define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c)
+struct
+netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto,
+ netconn_callback callback);
+err_t netconn_delete (struct netconn *conn);
+/** Get the type of a netconn (as enum netconn_type). */
+#define netconn_type(conn) (conn->type)
+
+err_t netconn_getaddr (struct netconn *conn,
+ struct ip_addr *addr,
+ u16_t *port,
+ u8_t local);
+#define netconn_peer(c,i,p) netconn_getaddr(c,i,p,0)
+#define netconn_addr(c,i,p) netconn_getaddr(c,i,p,1)
+
+err_t netconn_bind (struct netconn *conn,
+ struct ip_addr *addr,
+ u16_t port);
+err_t netconn_connect (struct netconn *conn,
+ struct ip_addr *addr,
+ u16_t port);
+err_t netconn_disconnect (struct netconn *conn);
+err_t netconn_listen_with_backlog(struct netconn *conn, u8_t backlog);
+#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG)
+struct netconn * netconn_accept (struct netconn *conn);
+struct netbuf * netconn_recv (struct netconn *conn);
+err_t netconn_sendto (struct netconn *conn,
+ struct netbuf *buf, struct ip_addr *addr, u16_t port);
+err_t netconn_send (struct netconn *conn,
+ struct netbuf *buf);
+err_t netconn_write (struct netconn *conn,
+ const void *dataptr, size_t size,
+ u8_t apiflags);
+err_t netconn_close (struct netconn *conn);
+
+#if LWIP_IGMP
+err_t netconn_join_leave_group (struct netconn *conn,
+ struct ip_addr *multiaddr,
+ struct ip_addr *interface,
+ enum netconn_igmp join_or_leave);
+#endif /* LWIP_IGMP */
+#if LWIP_DNS
+err_t netconn_gethostbyname(const char *name, struct ip_addr *addr);
+#endif /* LWIP_DNS */
+
+#define netconn_err(conn) ((conn)->err)
+#define netconn_recv_bufsize(conn) ((conn)->recv_bufsize)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_NETCONN */
+
+#endif /* __LWIP_API_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h
new file mode 100644
index 0000000..7718d90
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h
@@ -0,0 +1,164 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_API_MSG_H__
+#define __LWIP_API_MSG_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
+
+#include <stddef.h> /* for size_t */
+
+#include "lwip/ip_addr.h"
+#include "lwip/err.h"
+#include "lwip/sys.h"
+#include "lwip/igmp.h"
+#include "lwip/api.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IP addresses and port numbers are expected to be in
+ * the same byte order as in the corresponding pcb.
+ */
+/** This struct includes everything that is necessary to execute a function
+ for a netconn in another thread context (mainly used to process netconns
+ in the tcpip_thread context to be thread safe). */
+struct api_msg_msg {
+ /** The netconn which to process - always needed: it includes the semaphore
+ which is used to block the application thread until the function finished. */
+ struct netconn *conn;
+ /** Depending on the executed function, one of these union members is used */
+ union {
+ /** used for do_send */
+ struct netbuf *b;
+ /** used for do_newconn */
+ struct {
+ u8_t proto;
+ } n;
+ /** used for do_bind and do_connect */
+ struct {
+ struct ip_addr *ipaddr;
+ u16_t port;
+ } bc;
+ /** used for do_getaddr */
+ struct {
+ struct ip_addr *ipaddr;
+ u16_t *port;
+ u8_t local;
+ } ad;
+ /** used for do_write */
+ struct {
+ const void *dataptr;
+ size_t len;
+ u8_t apiflags;
+ } w;
+ /** used for do_recv */
+ struct {
+ u16_t len;
+ } r;
+#if LWIP_IGMP
+ /** used for do_join_leave_group */
+ struct {
+ struct ip_addr *multiaddr;
+ struct ip_addr *interface;
+ enum netconn_igmp join_or_leave;
+ } jl;
+#endif /* LWIP_IGMP */
+#if TCP_LISTEN_BACKLOG
+ struct {
+ u8_t backlog;
+ } lb;
+#endif /* TCP_LISTEN_BACKLOG */
+ } msg;
+};
+
+/** This struct contains a function to execute in another thread context and
+ a struct api_msg_msg that serves as an argument for this function.
+ This is passed to tcpip_apimsg to execute functions in tcpip_thread context. */
+struct api_msg {
+ /** function to execute in tcpip_thread context */
+ void (* function)(struct api_msg_msg *msg);
+ /** arguments for this function */
+ struct api_msg_msg msg;
+};
+
+#if LWIP_DNS
+/** As do_gethostbyname requires more arguments but doesn't require a netconn,
+ it has its own struct (to avoid struct api_msg getting bigger than necessary).
+ do_gethostbyname must be called using tcpip_callback instead of tcpip_apimsg
+ (see netconn_gethostbyname). */
+struct dns_api_msg {
+ /** Hostname to query or dotted IP address string */
+ const char *name;
+ /** Rhe resolved address is stored here */
+ struct ip_addr *addr;
+ /** This semaphore is posted when the name is resolved, the application thread
+ should wait on it. */
+ sys_sem_t sem;
+ /** Errors are given back here */
+ err_t *err;
+};
+#endif /* LWIP_DNS */
+
+void do_newconn ( struct api_msg_msg *msg);
+void do_delconn ( struct api_msg_msg *msg);
+void do_bind ( struct api_msg_msg *msg);
+void do_connect ( struct api_msg_msg *msg);
+void do_disconnect ( struct api_msg_msg *msg);
+void do_listen ( struct api_msg_msg *msg);
+void do_send ( struct api_msg_msg *msg);
+void do_recv ( struct api_msg_msg *msg);
+void do_write ( struct api_msg_msg *msg);
+void do_getaddr ( struct api_msg_msg *msg);
+void do_close ( struct api_msg_msg *msg);
+#if LWIP_IGMP
+void do_join_leave_group( struct api_msg_msg *msg);
+#endif /* LWIP_IGMP */
+
+#if LWIP_DNS
+void do_gethostbyname(void *arg);
+#endif /* LWIP_DNS */
+
+struct netconn* netconn_alloc(enum netconn_type t, netconn_callback callback);
+void netconn_free(struct netconn *conn);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_NETCONN */
+
+#endif /* __LWIP_API_MSG_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h
new file mode 100644
index 0000000..5ab190a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h
@@ -0,0 +1,235 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_ARCH_H__
+#define __LWIP_ARCH_H__
+
+#ifndef LITTLE_ENDIAN
+#define LITTLE_ENDIAN 1234
+#endif
+
+#ifndef BIG_ENDIAN
+#define BIG_ENDIAN 4321
+#endif
+
+#include "arch/cc.h"
+
+/** Temporary: define format string for size_t if not defined in cc.h */
+#ifndef SZT_F
+#define SZT_F U32_F
+#endif /* SZT_F */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef PACK_STRUCT_BEGIN
+#define PACK_STRUCT_BEGIN
+#endif /* PACK_STRUCT_BEGIN */
+
+#ifndef PACK_STRUCT_END
+#define PACK_STRUCT_END
+#endif /* PACK_STRUCT_END */
+
+#ifndef PACK_STRUCT_FIELD
+#define PACK_STRUCT_FIELD(x) x
+#endif /* PACK_STRUCT_FIELD */
+
+
+#ifndef LWIP_UNUSED_ARG
+#define LWIP_UNUSED_ARG(x) (void)x
+#endif /* LWIP_UNUSED_ARG */
+
+
+#ifdef LWIP_PROVIDE_ERRNO
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Arg list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No child processes */
+#define EAGAIN 11 /* Try again */
+#define ENOMEM 12 /* Out of memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* File table overflow */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math argument out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+#define EDEADLK 35 /* Resource deadlock would occur */
+#define ENAMETOOLONG 36 /* File name too long */
+#define ENOLCK 37 /* No record locks available */
+#define ENOSYS 38 /* Function not implemented */
+#define ENOTEMPTY 39 /* Directory not empty */
+#define ELOOP 40 /* Too many symbolic links encountered */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define ENOMSG 42 /* No message of desired type */
+#define EIDRM 43 /* Identifier removed */
+#define ECHRNG 44 /* Channel number out of range */
+#define EL2NSYNC 45 /* Level 2 not synchronized */
+#define EL3HLT 46 /* Level 3 halted */
+#define EL3RST 47 /* Level 3 reset */
+#define ELNRNG 48 /* Link number out of range */
+#define EUNATCH 49 /* Protocol driver not attached */
+#define ENOCSI 50 /* No CSI structure available */
+#define EL2HLT 51 /* Level 2 halted */
+#define EBADE 52 /* Invalid exchange */
+#define EBADR 53 /* Invalid request descriptor */
+#define EXFULL 54 /* Exchange full */
+#define ENOANO 55 /* No anode */
+#define EBADRQC 56 /* Invalid request code */
+#define EBADSLT 57 /* Invalid slot */
+
+#define EDEADLOCK EDEADLK
+
+#define EBFONT 59 /* Bad font file format */
+#define ENOSTR 60 /* Device not a stream */
+#define ENODATA 61 /* No data available */
+#define ETIME 62 /* Timer expired */
+#define ENOSR 63 /* Out of streams resources */
+#define ENONET 64 /* Machine is not on the network */
+#define ENOPKG 65 /* Package not installed */
+#define EREMOTE 66 /* Object is remote */
+#define ENOLINK 67 /* Link has been severed */
+#define EADV 68 /* Advertise error */
+#define ESRMNT 69 /* Srmount error */
+#define ECOMM 70 /* Communication error on send */
+#define EPROTO 71 /* Protocol error */
+#define EMULTIHOP 72 /* Multihop attempted */
+#define EDOTDOT 73 /* RFS specific error */
+#define EBADMSG 74 /* Not a data message */
+#define EOVERFLOW 75 /* Value too large for defined data type */
+#define ENOTUNIQ 76 /* Name not unique on network */
+#define EBADFD 77 /* File descriptor in bad state */
+#define EREMCHG 78 /* Remote address changed */
+#define ELIBACC 79 /* Can not access a needed shared library */
+#define ELIBBAD 80 /* Accessing a corrupted shared library */
+#define ELIBSCN 81 /* .lib section in a.out corrupted */
+#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
+#define ELIBEXEC 83 /* Cannot exec a shared library directly */
+#define EILSEQ 84 /* Illegal byte sequence */
+#define ERESTART 85 /* Interrupted system call should be restarted */
+#define ESTRPIPE 86 /* Streams pipe error */
+#define EUSERS 87 /* Too many users */
+#define ENOTSOCK 88 /* Socket operation on non-socket */
+#define EDESTADDRREQ 89 /* Destination address required */
+#define EMSGSIZE 90 /* Message too long */
+#define EPROTOTYPE 91 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 92 /* Protocol not available */
+#define EPROTONOSUPPORT 93 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
+#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
+#define EPFNOSUPPORT 96 /* Protocol family not supported */
+#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
+#define EADDRINUSE 98 /* Address already in use */
+#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
+#define ENETDOWN 100 /* Network is down */
+#define ENETUNREACH 101 /* Network is unreachable */
+#define ENETRESET 102 /* Network dropped connection because of reset */
+#define ECONNABORTED 103 /* Software caused connection abort */
+#define ECONNRESET 104 /* Connection reset by peer */
+#define ENOBUFS 105 /* No buffer space available */
+#define EISCONN 106 /* Transport endpoint is already connected */
+#define ENOTCONN 107 /* Transport endpoint is not connected */
+#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
+#define ETOOMANYREFS 109 /* Too many references: cannot splice */
+#define ETIMEDOUT 110 /* Connection timed out */
+#define ECONNREFUSED 111 /* Connection refused */
+#define EHOSTDOWN 112 /* Host is down */
+#define EHOSTUNREACH 113 /* No route to host */
+#define EALREADY 114 /* Operation already in progress */
+#define EINPROGRESS 115 /* Operation now in progress */
+#define ESTALE 116 /* Stale NFS file handle */
+#define EUCLEAN 117 /* Structure needs cleaning */
+#define ENOTNAM 118 /* Not a XENIX named type file */
+#define ENAVAIL 119 /* No XENIX semaphores available */
+#define EISNAM 120 /* Is a named type file */
+#define EREMOTEIO 121 /* Remote I/O error */
+#define EDQUOT 122 /* Quota exceeded */
+
+#define ENOMEDIUM 123 /* No medium found */
+#define EMEDIUMTYPE 124 /* Wrong medium type */
+
+
+#define ENSROK 0 /* DNS server returned answer with no data */
+#define ENSRNODATA 160 /* DNS server returned answer with no data */
+#define ENSRFORMERR 161 /* DNS server claims query was misformatted */
+#define ENSRSERVFAIL 162 /* DNS server returned general failure */
+#define ENSRNOTFOUND 163 /* Domain name not found */
+#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */
+#define ENSRREFUSED 165 /* DNS server refused query */
+#define ENSRBADQUERY 166 /* Misformatted DNS query */
+#define ENSRBADNAME 167 /* Misformatted domain name */
+#define ENSRBADFAMILY 168 /* Unsupported address family */
+#define ENSRBADRESP 169 /* Misformatted DNS reply */
+#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */
+#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */
+#define ENSROF 172 /* End of file */
+#define ENSRFILE 173 /* Error reading file */
+#define ENSRNOMEM 174 /* Out of memory */
+#define ENSRDESTRUCTION 175 /* Application terminated lookup */
+#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */
+#define ENSRCNAMELOOP 177 /* Domain name is too long */
+
+#ifndef errno
+extern int errno;
+#endif
+
+#endif /* LWIP_PROVIDE_ERRNO */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_ARCH_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h
new file mode 100644
index 0000000..fb07607
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h
@@ -0,0 +1,100 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_DEBUG_H__
+#define __LWIP_DEBUG_H__
+
+#include "lwip/arch.h"
+
+/** lower two bits indicate debug level
+ * - 0 all
+ * - 1 warning
+ * - 2 serious
+ * - 3 severe
+ */
+#define LWIP_DBG_LEVEL_ALL 0x00
+#define LWIP_DBG_LEVEL_OFF LWIP_DBG_LEVEL_ALL /* compatibility define only */
+#define LWIP_DBG_LEVEL_WARNING 0x01 /* bad checksums, dropped packets, ... */
+#define LWIP_DBG_LEVEL_SERIOUS 0x02 /* memory allocation failures, ... */
+#define LWIP_DBG_LEVEL_SEVERE 0x03
+#define LWIP_DBG_MASK_LEVEL 0x03
+
+/** flag for LWIP_DEBUGF to enable that debug message */
+#define LWIP_DBG_ON 0x80U
+/** flag for LWIP_DEBUGF to disable that debug message */
+#define LWIP_DBG_OFF 0x00U
+
+/** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */
+#define LWIP_DBG_TRACE 0x40U
+/** flag for LWIP_DEBUGF indicating a state debug message (to follow module states) */
+#define LWIP_DBG_STATE 0x20U
+/** flag for LWIP_DEBUGF indicating newly added code, not thoroughly tested yet */
+#define LWIP_DBG_FRESH 0x10U
+/** flag for LWIP_DEBUGF to halt after printing this debug message */
+#define LWIP_DBG_HALT 0x08U
+
+#ifndef LWIP_NOASSERT
+#define LWIP_ASSERT(message, assertion) do { if(!(assertion)) \
+ LWIP_PLATFORM_ASSERT(message); } while(0)
+#else /* LWIP_NOASSERT */
+#define LWIP_ASSERT(message, assertion)
+#endif /* LWIP_NOASSERT */
+
+/** if "expression" isn't true, then print "message" and execute "handler" expression */
+#ifndef LWIP_ERROR
+#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
+ LWIP_PLATFORM_ASSERT(message); handler;}} while(0)
+#endif /* LWIP_ERROR */
+
+#ifdef LWIP_DEBUG
+/** print debug message only if debug message type is enabled...
+ * AND is of correct type AND is at least LWIP_DBG_LEVEL
+ */
+#define LWIP_DEBUGF(debug, message) do { \
+ if ( \
+ ((debug) & LWIP_DBG_ON) && \
+ ((debug) & LWIP_DBG_TYPES_ON) && \
+ ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
+ LWIP_PLATFORM_DIAG(message); \
+ if ((debug) & LWIP_DBG_HALT) { \
+ while(1); \
+ } \
+ } \
+ } while(0)
+
+#else /* LWIP_DEBUG */
+#define LWIP_DEBUGF(debug, message)
+#endif /* LWIP_DEBUG */
+
+#endif /* __LWIP_DEBUG_H__ */
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h
new file mode 100644
index 0000000..c3681ac
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h
@@ -0,0 +1,49 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_DEF_H__
+#define __LWIP_DEF_H__
+
+/* this might define NULL already */
+#include "lwip/arch.h"
+
+#define LWIP_MAX(x , y) (((x) > (y)) ? (x) : (y))
+#define LWIP_MIN(x , y) (((x) < (y)) ? (x) : (y))
+
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
+
+
+#endif /* __LWIP_DEF_H__ */
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h
new file mode 100644
index 0000000..27a0ade
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h
@@ -0,0 +1,248 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/** @file
+ */
+
+#ifndef __LWIP_DHCP_H__
+#define __LWIP_DHCP_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/netif.h"
+#include "lwip/udp.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** period (in seconds) of the application calling dhcp_coarse_tmr() */
+#define DHCP_COARSE_TIMER_SECS 60
+/** period (in milliseconds) of the application calling dhcp_coarse_tmr() */
+#define DHCP_COARSE_TIMER_MSECS (DHCP_COARSE_TIMER_SECS * 1000UL)
+/** period (in milliseconds) of the application calling dhcp_fine_tmr() */
+#define DHCP_FINE_TIMER_MSECS 500
+
+struct dhcp
+{
+ /** transaction identifier of last sent request */
+ u32_t xid;
+ /** our connection to the DHCP server */
+ struct udp_pcb *pcb;
+ /** incoming msg */
+ struct dhcp_msg *msg_in;
+ /** incoming msg options */
+ void *options_in;
+ /** ingoing msg options length */
+ u16_t options_in_len;
+ /** current DHCP state machine state */
+ u8_t state;
+ /** retries of current request */
+ u8_t tries;
+
+ struct pbuf *p_out; /* pbuf of outcoming msg */
+ struct dhcp_msg *msg_out; /* outgoing msg */
+ u16_t options_out_len; /* outgoing msg options length */
+ u16_t request_timeout; /* #ticks with period DHCP_FINE_TIMER_SECS for request timeout */
+ u16_t t1_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for renewal time */
+ u16_t t2_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for rebind time */
+ struct ip_addr server_ip_addr; /* dhcp server address that offered this lease */
+ struct ip_addr offered_ip_addr;
+ struct ip_addr offered_sn_mask;
+ struct ip_addr offered_gw_addr;
+ struct ip_addr offered_bc_addr;
+#define DHCP_MAX_DNS 2
+ u32_t dns_count; /* actual number of DNS servers obtained */
+ struct ip_addr offered_dns_addr[DHCP_MAX_DNS]; /* DNS server addresses */
+
+ u32_t offered_t0_lease; /* lease period (in seconds) */
+ u32_t offered_t1_renew; /* recommended renew time (usually 50% of lease period) */
+ u32_t offered_t2_rebind; /* recommended rebind time (usually 66% of lease period) */
+#if LWIP_DHCP_AUTOIP_COOP
+ u8_t autoip_coop_state;
+#endif
+/** Patch #1308
+ * TODO: See dhcp.c "TODO"s
+ */
+#if 0
+ struct ip_addr offered_si_addr;
+ u8_t *boot_file_name;
+#endif
+};
+
+/* MUST be compiled with "pack structs" or equivalent! */
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+/** minimum set of fields of any DHCP message */
+struct dhcp_msg
+{
+ PACK_STRUCT_FIELD(u8_t op);
+ PACK_STRUCT_FIELD(u8_t htype);
+ PACK_STRUCT_FIELD(u8_t hlen);
+ PACK_STRUCT_FIELD(u8_t hops);
+ PACK_STRUCT_FIELD(u32_t xid);
+ PACK_STRUCT_FIELD(u16_t secs);
+ PACK_STRUCT_FIELD(u16_t flags);
+ PACK_STRUCT_FIELD(struct ip_addr ciaddr);
+ PACK_STRUCT_FIELD(struct ip_addr yiaddr);
+ PACK_STRUCT_FIELD(struct ip_addr siaddr);
+ PACK_STRUCT_FIELD(struct ip_addr giaddr);
+#define DHCP_CHADDR_LEN 16U
+ PACK_STRUCT_FIELD(u8_t chaddr[DHCP_CHADDR_LEN]);
+#define DHCP_SNAME_LEN 64U
+ PACK_STRUCT_FIELD(u8_t sname[DHCP_SNAME_LEN]);
+#define DHCP_FILE_LEN 128U
+ PACK_STRUCT_FIELD(u8_t file[DHCP_FILE_LEN]);
+ PACK_STRUCT_FIELD(u32_t cookie);
+#define DHCP_MIN_OPTIONS_LEN 68U
+/** make sure user does not configure this too small */
+#if ((defined(DHCP_OPTIONS_LEN)) && (DHCP_OPTIONS_LEN < DHCP_MIN_OPTIONS_LEN))
+# undef DHCP_OPTIONS_LEN
+#endif
+/** allow this to be configured in lwipopts.h, but not too small */
+#if (!defined(DHCP_OPTIONS_LEN))
+/** set this to be sufficient for your options in outgoing DHCP msgs */
+# define DHCP_OPTIONS_LEN DHCP_MIN_OPTIONS_LEN
+#endif
+ PACK_STRUCT_FIELD(u8_t options[DHCP_OPTIONS_LEN]);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+/** start DHCP configuration */
+err_t dhcp_start(struct netif *netif);
+/** enforce early lease renewal (not needed normally)*/
+err_t dhcp_renew(struct netif *netif);
+/** release the DHCP lease, usually called before dhcp_stop()*/
+err_t dhcp_release(struct netif *netif);
+/** stop DHCP configuration */
+void dhcp_stop(struct netif *netif);
+/** inform server of our manual IP address */
+void dhcp_inform(struct netif *netif);
+/** Handle a possible change in the network configuration */
+void dhcp_network_changed(struct netif *netif);
+
+/** if enabled, check whether the offered IP address is not in use, using ARP */
+#if DHCP_DOES_ARP_CHECK
+void dhcp_arp_reply(struct netif *netif, struct ip_addr *addr);
+#endif
+
+/** to be called every minute */
+void dhcp_coarse_tmr(void);
+/** to be called every half second */
+void dhcp_fine_tmr(void);
+
+/** DHCP message item offsets and length */
+#define DHCP_MSG_OFS (UDP_DATA_OFS)
+ #define DHCP_OP_OFS (DHCP_MSG_OFS + 0)
+ #define DHCP_HTYPE_OFS (DHCP_MSG_OFS + 1)
+ #define DHCP_HLEN_OFS (DHCP_MSG_OFS + 2)
+ #define DHCP_HOPS_OFS (DHCP_MSG_OFS + 3)
+ #define DHCP_XID_OFS (DHCP_MSG_OFS + 4)
+ #define DHCP_SECS_OFS (DHCP_MSG_OFS + 8)
+ #define DHCP_FLAGS_OFS (DHCP_MSG_OFS + 10)
+ #define DHCP_CIADDR_OFS (DHCP_MSG_OFS + 12)
+ #define DHCP_YIADDR_OFS (DHCP_MSG_OFS + 16)
+ #define DHCP_SIADDR_OFS (DHCP_MSG_OFS + 20)
+ #define DHCP_GIADDR_OFS (DHCP_MSG_OFS + 24)
+ #define DHCP_CHADDR_OFS (DHCP_MSG_OFS + 28)
+ #define DHCP_SNAME_OFS (DHCP_MSG_OFS + 44)
+ #define DHCP_FILE_OFS (DHCP_MSG_OFS + 108)
+#define DHCP_MSG_LEN 236
+
+#define DHCP_COOKIE_OFS (DHCP_MSG_OFS + DHCP_MSG_LEN)
+#define DHCP_OPTIONS_OFS (DHCP_MSG_OFS + DHCP_MSG_LEN + 4)
+
+#define DHCP_CLIENT_PORT 68
+#define DHCP_SERVER_PORT 67
+
+/** DHCP client states */
+#define DHCP_REQUESTING 1
+#define DHCP_INIT 2
+#define DHCP_REBOOTING 3
+#define DHCP_REBINDING 4
+#define DHCP_RENEWING 5
+#define DHCP_SELECTING 6
+#define DHCP_INFORMING 7
+#define DHCP_CHECKING 8
+#define DHCP_PERMANENT 9
+#define DHCP_BOUND 10
+/** not yet implemented #define DHCP_RELEASING 11 */
+#define DHCP_BACKING_OFF 12
+#define DHCP_OFF 13
+
+/** AUTOIP cooperatation flags */
+#define DHCP_AUTOIP_COOP_STATE_OFF 0
+#define DHCP_AUTOIP_COOP_STATE_ON 1
+
+#define DHCP_BOOTREQUEST 1
+#define DHCP_BOOTREPLY 2
+
+#define DHCP_DISCOVER 1
+#define DHCP_OFFER 2
+#define DHCP_REQUEST 3
+#define DHCP_DECLINE 4
+#define DHCP_ACK 5
+#define DHCP_NAK 6
+#define DHCP_RELEASE 7
+#define DHCP_INFORM 8
+
+#define DHCP_HTYPE_ETH 1
+
+#define DHCP_HLEN_ETH 6
+
+#define DHCP_BROADCAST_FLAG 15
+#define DHCP_BROADCAST_MASK (1 << DHCP_FLAG_BROADCAST)
+
+/** BootP options */
+#define DHCP_OPTION_PAD 0
+#define DHCP_OPTION_SUBNET_MASK 1 /* RFC 2132 3.3 */
+#define DHCP_OPTION_ROUTER 3
+#define DHCP_OPTION_DNS_SERVER 6
+#define DHCP_OPTION_HOSTNAME 12
+#define DHCP_OPTION_IP_TTL 23
+#define DHCP_OPTION_MTU 26
+#define DHCP_OPTION_BROADCAST 28
+#define DHCP_OPTION_TCP_TTL 37
+#define DHCP_OPTION_END 255
+
+/** DHCP options */
+#define DHCP_OPTION_REQUESTED_IP 50 /* RFC 2132 9.1, requested IP address */
+#define DHCP_OPTION_LEASE_TIME 51 /* RFC 2132 9.2, time in seconds, in 4 bytes */
+#define DHCP_OPTION_OVERLOAD 52 /* RFC2132 9.3, use file and/or sname field for options */
+
+#define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */
+#define DHCP_OPTION_MESSAGE_TYPE_LEN 1
+
+
+#define DHCP_OPTION_SERVER_ID 54 /* RFC 2132 9.7, server IP address */
+#define DHCP_OPTION_PARAMETER_REQUEST_LIST 55 /* RFC 2132 9.8, requested option types */
+
+#define DHCP_OPTION_MAX_MSG_SIZE 57 /* RFC 2132 9.10, message size accepted >= 576 */
+#define DHCP_OPTION_MAX_MSG_SIZE_LEN 2
+
+#define DHCP_OPTION_T1 58 /* T1 renewal time */
+#define DHCP_OPTION_T2 59 /* T2 rebinding time */
+#define DHCP_OPTION_US 60
+#define DHCP_OPTION_CLIENT_ID 61
+#define DHCP_OPTION_TFTP_SERVERNAME 66
+#define DHCP_OPTION_BOOTFILE 67
+
+/** possible combinations of overloading the file and sname fields with options */
+#define DHCP_OVERLOAD_NONE 0
+#define DHCP_OVERLOAD_FILE 1
+#define DHCP_OVERLOAD_SNAME 2
+#define DHCP_OVERLOAD_SNAME_FILE 3
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_DHCP */
+
+#endif /*__LWIP_DHCP_H__*/
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h
new file mode 100644
index 0000000..c1b8ae0
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h
@@ -0,0 +1,99 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * lwip DNS resolver header file.
+
+ * Author: Jim Pettinato
+ * April 2007
+
+ * ported from uIP resolv.c Copyright (c) 2002-2003, Adam Dunkels.
+ *
+ * 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. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+ */
+
+#ifndef __LWIP_DNS_H__
+#define __LWIP_DNS_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */
+
+/** DNS timer period */
+#define DNS_TMR_INTERVAL 1000
+
+/** DNS field TYPE used for "Resource Records" */
+#define DNS_RRTYPE_A 1 /* a host address */
+#define DNS_RRTYPE_NS 2 /* an authoritative name server */
+#define DNS_RRTYPE_MD 3 /* a mail destination (Obsolete - use MX) */
+#define DNS_RRTYPE_MF 4 /* a mail forwarder (Obsolete - use MX) */
+#define DNS_RRTYPE_CNAME 5 /* the canonical name for an alias */
+#define DNS_RRTYPE_SOA 6 /* marks the start of a zone of authority */
+#define DNS_RRTYPE_MB 7 /* a mailbox domain name (EXPERIMENTAL) */
+#define DNS_RRTYPE_MG 8 /* a mail group member (EXPERIMENTAL) */
+#define DNS_RRTYPE_MR 9 /* a mail rename domain name (EXPERIMENTAL) */
+#define DNS_RRTYPE_NULL 10 /* a null RR (EXPERIMENTAL) */
+#define DNS_RRTYPE_WKS 11 /* a well known service description */
+#define DNS_RRTYPE_PTR 12 /* a domain name pointer */
+#define DNS_RRTYPE_HINFO 13 /* host information */
+#define DNS_RRTYPE_MINFO 14 /* mailbox or mail list information */
+#define DNS_RRTYPE_MX 15 /* mail exchange */
+#define DNS_RRTYPE_TXT 16 /* text strings */
+
+/** DNS field CLASS used for "Resource Records" */
+#define DNS_RRCLASS_IN 1 /* the Internet */
+#define DNS_RRCLASS_CS 2 /* the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */
+#define DNS_RRCLASS_CH 3 /* the CHAOS class */
+#define DNS_RRCLASS_HS 4 /* Hesiod [Dyer 87] */
+#define DNS_RRCLASS_FLUSH 0x800 /* Flush bit */
+
+/** Callback which is invoked when a hostname is found.
+ * A function of this type must be implemented by the application using the DNS resolver.
+ * @param name pointer to the name that was looked up.
+ * @param ipaddr pointer to a struct ip_addr containing the IP address of the hostname,
+ * or NULL if the name could not be found (or on any other error).
+ * @param callback_arg a user-specified callback argument passed to dns_gethostbyname
+*/
+typedef void (*dns_found_callback)(const char *name, struct ip_addr *ipaddr, void *callback_arg);
+
+
+void dns_init(void);
+
+void dns_tmr(void);
+
+void dns_setserver(u8_t numdns, struct ip_addr *dnsserver);
+
+struct ip_addr dns_getserver(u8_t numdns);
+
+err_t dns_gethostbyname(const char *hostname, struct ip_addr *addr,
+ dns_found_callback found, void *callback_arg);
+
+#if DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC
+int dns_local_removehost(const char *hostname, const struct ip_addr *addr);
+err_t dns_local_addhost(const char *hostname, const struct ip_addr *addr);
+#endif /* DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
+
+#endif /* LWIP_DNS */
+
+#endif /* __LWIP_DNS_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h
new file mode 100644
index 0000000..792f276
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h
@@ -0,0 +1,89 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_ERR_H__
+#define __LWIP_ERR_H__
+
+#include "lwip/opt.h"
+#include "lwip/arch.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Define LWIP_ERR_T in cc.h if you want to use
+ * a different type for your platform (must be signed). */
+#ifdef LWIP_ERR_T
+typedef LWIP_ERR_T err_t;
+#else /* LWIP_ERR_T */
+ typedef s8_t err_t;
+#endif /* LWIP_ERR_T*/
+
+/* Definitions for error constants. */
+
+#define ERR_OK 0 /* No error, everything OK. */
+#define ERR_MEM -1 /* Out of memory error. */
+#define ERR_BUF -2 /* Buffer error. */
+#define ERR_TIMEOUT -3 /* Timeout. */
+#define ERR_RTE -4 /* Routing problem. */
+
+#define ERR_IS_FATAL(e) ((e) < ERR_RTE)
+
+#define ERR_ABRT -5 /* Connection aborted. */
+#define ERR_RST -6 /* Connection reset. */
+#define ERR_CLSD -7 /* Connection closed. */
+#define ERR_CONN -8 /* Not connected. */
+
+#define ERR_VAL -9 /* Illegal value. */
+
+#define ERR_ARG -10 /* Illegal argument. */
+
+#define ERR_USE -11 /* Address in use. */
+
+#define ERR_IF -12 /* Low-level netif error */
+#define ERR_ISCONN -13 /* Already connected. */
+
+#define ERR_INPROGRESS -14 /* Operation in progress */
+
+
+#ifdef LWIP_DEBUG
+extern const char *lwip_strerr(err_t err);
+#else
+#define lwip_strerr(x) ""
+#endif /* LWIP_DEBUG */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_ERR_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h
new file mode 100644
index 0000000..a86e0d9
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h
@@ -0,0 +1,74 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_INIT_H__
+#define __LWIP_INIT_H__
+
+#include "lwip/opt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** X.x.x: Major version of the stack */
+#define LWIP_VERSION_MAJOR 1U
+/** x.X.x: Minor version of the stack */
+#define LWIP_VERSION_MINOR 3U
+/** x.x.X: Revision of the stack */
+#define LWIP_VERSION_REVISION 2U
+/** For release candidates, this is set to 1..254
+ * For official releases, this is set to 255 (LWIP_RC_RELEASE)
+ * For development versions (CVS), this is set to 0 (LWIP_RC_DEVELOPMENT) */
+#define LWIP_VERSION_RC 255U
+
+/** LWIP_VERSION_RC is set to LWIP_RC_RELEASE for official releases */
+#define LWIP_RC_RELEASE 255U
+/** LWIP_VERSION_RC is set to LWIP_RC_DEVELOPMENT for CVS versions */
+#define LWIP_RC_DEVELOPMENT 0U
+
+#define LWIP_VERSION_IS_RELEASE (LWIP_VERSION_RC == LWIP_RC_RELEASE)
+#define LWIP_VERSION_IS_DEVELOPMENT (LWIP_VERSION_RC == LWIP_RC_DEVELOPMENT)
+#define LWIP_VERSION_IS_RC ((LWIP_VERSION_RC != LWIP_RC_RELEASE) && (LWIP_VERSION_RC != LWIP_RC_DEVELOPMENT))
+
+/** Provides the version of the stack */
+#define LWIP_VERSION (LWIP_VERSION_MAJOR << 24 | LWIP_VERSION_MINOR << 16 | \
+ LWIP_VERSION_REVISION << 8 | LWIP_VERSION_RC)
+
+/* Modules initialization */
+void lwip_init(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_INIT_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h
new file mode 100644
index 0000000..327229e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h
@@ -0,0 +1,109 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_MEM_H__
+#define __LWIP_MEM_H__
+
+#include "lwip/opt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if MEM_LIBC_MALLOC
+
+#include <stddef.h> /* for size_t */
+
+typedef size_t mem_size_t;
+
+/* aliases for C library malloc() */
+#define mem_init()
+/* in case C library malloc() needs extra protection,
+ * allow these defines to be overridden.
+ */
+#ifndef mem_free
+#define mem_free free
+#endif
+#ifndef mem_malloc
+#define mem_malloc malloc
+#endif
+#ifndef mem_calloc
+#define mem_calloc calloc
+#endif
+#ifndef mem_realloc
+static void *mem_realloc(void *mem, mem_size_t size)
+{
+ LWIP_UNUSED_ARG(size);
+ return mem;
+}
+#endif
+#else /* MEM_LIBC_MALLOC */
+
+/* MEM_SIZE would have to be aligned, but using 64000 here instead of
+ * 65535 leaves some room for alignment...
+ */
+#if MEM_SIZE > 64000l
+typedef u32_t mem_size_t;
+#else
+typedef u16_t mem_size_t;
+#endif /* MEM_SIZE > 64000 */
+
+#if MEM_USE_POOLS
+/** mem_init is not used when using pools instead of a heap */
+#define mem_init()
+/** mem_realloc is not used when using pools instead of a heap:
+ we can't free part of a pool element and don't want to copy the rest */
+#define mem_realloc(mem, size) (mem)
+#else /* MEM_USE_POOLS */
+/* lwIP alternative malloc */
+void mem_init(void);
+void *mem_realloc(void *mem, mem_size_t size);
+#endif /* MEM_USE_POOLS */
+void *mem_malloc(mem_size_t size);
+void *mem_calloc(mem_size_t count, mem_size_t size);
+void mem_free(void *mem);
+#endif /* MEM_LIBC_MALLOC */
+
+#ifndef LWIP_MEM_ALIGN_SIZE
+#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
+#endif
+
+#ifndef LWIP_MEM_ALIGN
+#define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1)))
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_MEM_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h
new file mode 100644
index 0000000..3de7bf9
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h
@@ -0,0 +1,118 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#ifndef __LWIP_MEMP_H__
+#define __LWIP_MEMP_H__
+
+#include "lwip/opt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Create the list of all memory pools managed by memp. MEMP_MAX represents a NULL pool at the end */
+typedef enum {
+#define LWIP_MEMPOOL(name,num,size,desc) MEMP_##name,
+#include "lwip/memp_std.h"
+ MEMP_MAX
+} memp_t;
+
+#if MEM_USE_POOLS
+/* Use a helper type to get the start and end of the user "memory pools" for mem_malloc */
+typedef enum {
+ /* Get the first (via:
+ MEMP_POOL_HELPER_START = ((u8_t) 1*MEMP_POOL_A + 0*MEMP_POOL_B + 0*MEMP_POOL_C + 0)*/
+ MEMP_POOL_HELPER_FIRST = ((u8_t)
+#define LWIP_MEMPOOL(name,num,size,desc)
+#define LWIP_MALLOC_MEMPOOL_START 1
+#define LWIP_MALLOC_MEMPOOL(num, size) * MEMP_POOL_##size + 0
+#define LWIP_MALLOC_MEMPOOL_END
+#include "lwip/memp_std.h"
+ ) ,
+ /* Get the last (via:
+ MEMP_POOL_HELPER_END = ((u8_t) 0 + MEMP_POOL_A*0 + MEMP_POOL_B*0 + MEMP_POOL_C*1) */
+ MEMP_POOL_HELPER_LAST = ((u8_t)
+#define LWIP_MEMPOOL(name,num,size,desc)
+#define LWIP_MALLOC_MEMPOOL_START
+#define LWIP_MALLOC_MEMPOOL(num, size) 0 + MEMP_POOL_##size *
+#define LWIP_MALLOC_MEMPOOL_END 1
+#include "lwip/memp_std.h"
+ )
+} memp_pool_helper_t;
+
+/* The actual start and stop values are here (cast them over)
+ We use this helper type and these defines so we can avoid using const memp_t values */
+#define MEMP_POOL_FIRST ((memp_t) MEMP_POOL_HELPER_FIRST)
+#define MEMP_POOL_LAST ((memp_t) MEMP_POOL_HELPER_LAST)
+#endif /* MEM_USE_POOLS */
+
+#if MEMP_MEM_MALLOC || MEM_USE_POOLS
+extern const u16_t memp_sizes[MEMP_MAX];
+#endif /* MEMP_MEM_MALLOC || MEM_USE_POOLS */
+
+#if MEMP_MEM_MALLOC
+
+#include "mem.h"
+
+#define memp_init()
+#define memp_malloc(type) mem_malloc(memp_sizes[type])
+#define memp_free(type, mem) mem_free(mem)
+
+#else /* MEMP_MEM_MALLOC */
+
+#if MEM_USE_POOLS
+/** This structure is used to save the pool one element came from. */
+struct memp_malloc_helper
+{
+ memp_t poolnr;
+};
+#endif /* MEM_USE_POOLS */
+
+void memp_init(void);
+
+#if MEMP_OVERFLOW_CHECK
+void *memp_malloc_fn(memp_t type, const char* file, const int line);
+#define memp_malloc(t) memp_malloc_fn((t), __FILE__, __LINE__)
+#else
+void *memp_malloc(memp_t type);
+#endif
+void memp_free(memp_t type, void *mem);
+
+#endif /* MEMP_MEM_MALLOC */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_MEMP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h
new file mode 100644
index 0000000..d8d4945
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h
@@ -0,0 +1,104 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * SETUP: Make sure we define everything we will need.
+ *
+ * We have create three types of pools:
+ * 1) MEMPOOL - standard pools
+ * 2) MALLOC_MEMPOOL - to be used by mem_malloc in mem.c
+ * 3) PBUF_MEMPOOL - a mempool of pbuf's, so include space for the pbuf struct
+ *
+ * If the include'r doesn't require any special treatment of each of the types
+ * above, then will declare #2 & #3 to be just standard mempools.
+ */
+#ifndef LWIP_MALLOC_MEMPOOL
+/* This treats "malloc pools" just like any other pool.
+ The pools are a little bigger to provide 'size' as the amount of user data. */
+#define LWIP_MALLOC_MEMPOOL(num, size) LWIP_MEMPOOL(POOL_##size, num, (size + sizeof(struct memp_malloc_helper)), "MALLOC_"#size)
+#define LWIP_MALLOC_MEMPOOL_START
+#define LWIP_MALLOC_MEMPOOL_END
+#endif /* LWIP_MALLOC_MEMPOOL */
+
+#ifndef LWIP_PBUF_MEMPOOL
+/* This treats "pbuf pools" just like any other pool.
+ * Allocates buffers for a pbuf struct AND a payload size */
+#define LWIP_PBUF_MEMPOOL(name, num, payload, desc) LWIP_MEMPOOL(name, num, (MEMP_ALIGN_SIZE(sizeof(struct pbuf)) + MEMP_ALIGN_SIZE(payload)), desc)
+#endif /* LWIP_PBUF_MEMPOOL */
+
+
+/*
+ * A list of internal pools used by LWIP.
+ *
+ * LWIP_MEMPOOL(pool_name, number_elements, element_size, pool_description)
+ * creates a pool name MEMP_pool_name. description is used in stats.c
+ */
+#if LWIP_RAW
+LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB")
+#endif /* LWIP_RAW */
+
+#if LWIP_UDP
+LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB")
+#endif /* LWIP_UDP */
+
+#if LWIP_TCP
+LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB")
+LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN")
+LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG")
+#endif /* LWIP_TCP */
+
+#if IP_REASSEMBLY
+LWIP_MEMPOOL(REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip_reassdata), "REASSDATA")
+#endif /* IP_REASSEMBLY */
+
+#if LWIP_NETCONN
+LWIP_MEMPOOL(NETBUF, MEMP_NUM_NETBUF, sizeof(struct netbuf), "NETBUF")
+LWIP_MEMPOOL(NETCONN, MEMP_NUM_NETCONN, sizeof(struct netconn), "NETCONN")
+#endif /* LWIP_NETCONN */
+
+#if NO_SYS==0
+LWIP_MEMPOOL(TCPIP_MSG_API, MEMP_NUM_TCPIP_MSG_API, sizeof(struct tcpip_msg), "TCPIP_MSG_API")
+LWIP_MEMPOOL(TCPIP_MSG_INPKT,MEMP_NUM_TCPIP_MSG_INPKT, sizeof(struct tcpip_msg), "TCPIP_MSG_INPKT")
+#endif /* NO_SYS==0 */
+
+#if ARP_QUEUEING
+LWIP_MEMPOOL(ARP_QUEUE, MEMP_NUM_ARP_QUEUE, sizeof(struct etharp_q_entry), "ARP_QUEUE")
+#endif /* ARP_QUEUEING */
+
+#if LWIP_IGMP
+LWIP_MEMPOOL(IGMP_GROUP, MEMP_NUM_IGMP_GROUP, sizeof(struct igmp_group), "IGMP_GROUP")
+#endif /* LWIP_IGMP */
+
+#if NO_SYS==0
+LWIP_MEMPOOL(SYS_TIMEOUT, MEMP_NUM_SYS_TIMEOUT, sizeof(struct sys_timeo), "SYS_TIMEOUT")
+#endif /* NO_SYS==0 */
+
+
+/*
+ * A list of pools of pbuf's used by LWIP.
+ *
+ * LWIP_PBUF_MEMPOOL(pool_name, number_elements, pbuf_payload_size, pool_description)
+ * creates a pool name MEMP_pool_name. description is used in stats.c
+ * This allocates enough space for the pbuf struct and a payload.
+ * (Example: pbuf_payload_size=0 allocates only size for the struct)
+ */
+LWIP_PBUF_MEMPOOL(PBUF, MEMP_NUM_PBUF, 0, "PBUF_REF/ROM")
+LWIP_PBUF_MEMPOOL(PBUF_POOL, PBUF_POOL_SIZE, PBUF_POOL_BUFSIZE, "PBUF_POOL")
+
+
+/*
+ * Allow for user-defined pools; this must be explicitly set in lwipopts.h
+ * since the default is to NOT look for lwippools.h
+ */
+#if MEMP_USE_CUSTOM_POOLS
+#include "lwippools.h"
+#endif /* MEMP_USE_CUSTOM_POOLS */
+
+/*
+ * REQUIRED CLEANUP: Clear up so we don't get "multiply defined" error later
+ * (#undef is ignored for something that is not defined)
+ */
+#undef LWIP_MEMPOOL
+#undef LWIP_MALLOC_MEMPOOL
+#undef LWIP_MALLOC_MEMPOOL_START
+#undef LWIP_MALLOC_MEMPOOL_END
+#undef LWIP_PBUF_MEMPOOL
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h
new file mode 100644
index 0000000..ab9ea33
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h
@@ -0,0 +1,88 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_NETBUF_H__
+#define __LWIP_NETBUF_H__
+
+#include "lwip/opt.h"
+#include "lwip/pbuf.h"
+#include "lwip/ip_addr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct netbuf {
+ struct pbuf *p, *ptr;
+ struct ip_addr *addr;
+ u16_t port;
+#if LWIP_NETBUF_RECVINFO
+ struct ip_addr *toaddr;
+ u16_t toport;
+#endif /* LWIP_NETBUF_RECVINFO */
+};
+
+/* Network buffer functions: */
+struct netbuf * netbuf_new (void);
+void netbuf_delete (struct netbuf *buf);
+void * netbuf_alloc (struct netbuf *buf, u16_t size);
+void netbuf_free (struct netbuf *buf);
+err_t netbuf_ref (struct netbuf *buf,
+ const void *dataptr, u16_t size);
+void netbuf_chain (struct netbuf *head,
+ struct netbuf *tail);
+
+u16_t netbuf_len (struct netbuf *buf);
+err_t netbuf_data (struct netbuf *buf,
+ void **dataptr, u16_t *len);
+s8_t netbuf_next (struct netbuf *buf);
+void netbuf_first (struct netbuf *buf);
+
+
+#define netbuf_copy_partial(buf, dataptr, len, offset) \
+ pbuf_copy_partial((buf)->p, (dataptr), (len), (offset))
+#define netbuf_copy(buf,dataptr,len) netbuf_copy_partial(buf, dataptr, len, 0)
+#define netbuf_take(buf, dataptr, len) pbuf_take((buf)->p, dataptr, len)
+#define netbuf_len(buf) ((buf)->p->tot_len)
+#define netbuf_fromaddr(buf) ((buf)->addr)
+#define netbuf_fromport(buf) ((buf)->port)
+#if LWIP_NETBUF_RECVINFO
+#define netbuf_destaddr(buf) ((buf)->toaddr)
+#define netbuf_destport(buf) ((buf)->toport)
+#endif /* LWIP_NETBUF_RECVINFO */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_NETBUF_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h
new file mode 100644
index 0000000..c59c3a4
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h
@@ -0,0 +1,113 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Simon Goldschmidt
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_DNS && LWIP_SOCKET
+
+#include <stddef.h> /* for size_t */
+
+#include "lwip/sockets.h"
+
+/* some rarely used options */
+#ifndef LWIP_DNS_API_DECLARE_H_ERRNO
+#define LWIP_DNS_API_DECLARE_H_ERRNO 1
+#endif
+
+#ifndef LWIP_DNS_API_DEFINE_ERRORS
+#define LWIP_DNS_API_DEFINE_ERRORS 1
+#endif
+
+#ifndef LWIP_DNS_API_DECLARE_STRUCTS
+#define LWIP_DNS_API_DECLARE_STRUCTS 1
+#endif
+
+#if LWIP_DNS_API_DEFINE_ERRORS
+/** Errors used by the DNS API functions, h_errno can be one of them */
+#define EAI_NONAME 200
+#define EAI_SERVICE 201
+#define EAI_FAIL 202
+#define EAI_MEMORY 203
+
+#define HOST_NOT_FOUND 210
+#define NO_DATA 211
+#define NO_RECOVERY 212
+#define TRY_AGAIN 213
+#endif /* LWIP_DNS_API_DEFINE_ERRORS */
+
+#if LWIP_DNS_API_DECLARE_STRUCTS
+struct hostent {
+ char *h_name; /* Official name of the host. */
+ char **h_aliases; /* A pointer to an array of pointers to alternative host names,
+ terminated by a null pointer. */
+ int h_addrtype; /* Address type. */
+ int h_length; /* The length, in bytes, of the address. */
+ char **h_addr_list; /* A pointer to an array of pointers to network addresses (in
+ network byte order) for the host, terminated by a null pointer. */
+#define h_addr h_addr_list[0] /* for backward compatibility */
+};
+
+struct addrinfo {
+ int ai_flags; /* Input flags. */
+ int ai_family; /* Address family of socket. */
+ int ai_socktype; /* Socket type. */
+ int ai_protocol; /* Protocol of socket. */
+ socklen_t ai_addrlen; /* Length of socket address. */
+ struct sockaddr *ai_addr; /* Socket address of socket. */
+ char *ai_canonname; /* Canonical name of service location. */
+ struct addrinfo *ai_next; /* Pointer to next in list. */
+};
+#endif /* LWIP_DNS_API_DECLARE_STRUCTS */
+
+#if LWIP_DNS_API_DECLARE_H_ERRNO
+/* application accessable error code set by the DNS API functions */
+extern int h_errno;
+#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/
+
+struct hostent *lwip_gethostbyname(const char *name);
+int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf,
+ size_t buflen, struct hostent **result, int *h_errnop);
+void lwip_freeaddrinfo(struct addrinfo *ai);
+int lwip_getaddrinfo(const char *nodename,
+ const char *servname,
+ const struct addrinfo *hints,
+ struct addrinfo **res);
+
+#if LWIP_COMPAT_SOCKETS
+#define gethostbyname(name) lwip_gethostbyname(name)
+#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \
+ lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop)
+#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(addrinfo)
+#define getaddrinfo(nodname, servname, hints, res) \
+ lwip_getaddrinfo(nodname, servname, hints, res)
+#endif /* LWIP_COMPAT_SOCKETS */
+
+#endif /* LWIP_DNS && LWIP_SOCKET */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h
new file mode 100644
index 0000000..8e650d7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h
@@ -0,0 +1,265 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_NETIF_H__
+#define __LWIP_NETIF_H__
+
+#include "lwip/opt.h"
+
+#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
+
+#include "lwip/err.h"
+
+#include "lwip/ip_addr.h"
+
+#include "lwip/inet.h"
+#include "lwip/pbuf.h"
+#if LWIP_DHCP
+struct dhcp;
+#endif
+#if LWIP_AUTOIP
+struct autoip;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Throughout this file, IP addresses are expected to be in
+ * the same byte order as in IP_PCB. */
+
+/** must be the maximum of all used hardware address lengths
+ across all types of interfaces in use */
+#define NETIF_MAX_HWADDR_LEN 6U
+
+/** TODO: define the use (where, when, whom) of netif flags */
+
+/** whether the network interface is 'up'. this is
+ * a software flag used to control whether this network
+ * interface is enabled and processes traffic.
+ */
+#define NETIF_FLAG_UP 0x01U
+/** if set, the netif has broadcast capability */
+#define NETIF_FLAG_BROADCAST 0x02U
+/** if set, the netif is one end of a point-to-point connection */
+#define NETIF_FLAG_POINTTOPOINT 0x04U
+/** if set, the interface is configured using DHCP */
+#define NETIF_FLAG_DHCP 0x08U
+/** if set, the interface has an active link
+ * (set by the network interface driver) */
+#define NETIF_FLAG_LINK_UP 0x10U
+/** if set, the netif is an device using ARP */
+#define NETIF_FLAG_ETHARP 0x20U
+/** if set, the netif has IGMP capability */
+#define NETIF_FLAG_IGMP 0x40U
+
+/** Generic data structure used for all lwIP network interfaces.
+ * The following fields should be filled in by the initialization
+ * function for the device driver: hwaddr_len, hwaddr[], mtu, flags */
+
+struct netif {
+ /** pointer to next in linked list */
+ struct netif *next;
+
+ /** IP address configuration in network byte order */
+ struct ip_addr ip_addr;
+ struct ip_addr netmask;
+ struct ip_addr gw;
+
+ /** This function is called by the network device driver
+ * to pass a packet up the TCP/IP stack. */
+ err_t (* input)(struct pbuf *p, struct netif *inp);
+ /** This function is called by the IP module when it wants
+ * to send a packet on the interface. This function typically
+ * first resolves the hardware address, then sends the packet. */
+ err_t (* output)(struct netif *netif, struct pbuf *p,
+ struct ip_addr *ipaddr);
+ /** This function is called by the ARP module when it wants
+ * to send a packet on the interface. This function outputs
+ * the pbuf as-is on the link medium. */
+ err_t (* linkoutput)(struct netif *netif, struct pbuf *p);
+#if LWIP_NETIF_STATUS_CALLBACK
+ /** This function is called when the netif state is set to up or down
+ */
+ void (* status_callback)(struct netif *netif);
+#endif /* LWIP_NETIF_STATUS_CALLBACK */
+#if LWIP_NETIF_LINK_CALLBACK
+ /** This function is called when the netif link is set to up or down
+ */
+ void (* link_callback)(struct netif *netif);
+#endif /* LWIP_NETIF_LINK_CALLBACK */
+ /** This field can be set by the device driver and could point
+ * to state information for the device. */
+ void *state;
+#if LWIP_DHCP
+ /** the DHCP client state information for this netif */
+ struct dhcp *dhcp;
+#endif /* LWIP_DHCP */
+#if LWIP_AUTOIP
+ /** the AutoIP client state information for this netif */
+ struct autoip *autoip;
+#endif
+#if LWIP_NETIF_HOSTNAME
+ /* the hostname for this netif, NULL is a valid value */
+ char* hostname;
+#endif /* LWIP_NETIF_HOSTNAME */
+ /** maximum transfer unit (in bytes) */
+ u16_t mtu;
+ /** number of bytes used in hwaddr */
+ u8_t hwaddr_len;
+ /** link level hardware address of this interface */
+ u8_t hwaddr[NETIF_MAX_HWADDR_LEN];
+ /** flags (see NETIF_FLAG_ above) */
+ u8_t flags;
+ /** descriptive abbreviation */
+ char name[2];
+ /** number of this interface */
+ u8_t num;
+#if LWIP_SNMP
+ /** link type (from "snmp_ifType" enum from snmp.h) */
+ u8_t link_type;
+ /** (estimate) link speed */
+ u32_t link_speed;
+ /** timestamp at last change made (up/down) */
+ u32_t ts;
+ /** counters */
+ u32_t ifinoctets;
+ u32_t ifinucastpkts;
+ u32_t ifinnucastpkts;
+ u32_t ifindiscards;
+ u32_t ifoutoctets;
+ u32_t ifoutucastpkts;
+ u32_t ifoutnucastpkts;
+ u32_t ifoutdiscards;
+#endif /* LWIP_SNMP */
+#if LWIP_IGMP
+ /* This function could be called to add or delete a entry in the multicast filter table of the ethernet MAC.*/
+ err_t (*igmp_mac_filter)( struct netif *netif, struct ip_addr *group, u8_t action);
+#endif /* LWIP_IGMP */
+#if LWIP_NETIF_HWADDRHINT
+ u8_t *addr_hint;
+#endif /* LWIP_NETIF_HWADDRHINT */
+#if ENABLE_LOOPBACK
+ /* List of packets to be queued for ourselves. */
+ struct pbuf *loop_first;
+ struct pbuf *loop_last;
+#if LWIP_LOOPBACK_MAX_PBUFS
+ u16_t loop_cnt_current;
+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
+#endif /* ENABLE_LOOPBACK */
+};
+
+#if LWIP_SNMP
+#define NETIF_INIT_SNMP(netif, type, speed) \
+ /* use "snmp_ifType" enum from snmp.h for "type", snmp_ifType_ethernet_csmacd by example */ \
+ netif->link_type = type; \
+ /* your link speed here (units: bits per second) */ \
+ netif->link_speed = speed; \
+ netif->ts = 0; \
+ netif->ifinoctets = 0; \
+ netif->ifinucastpkts = 0; \
+ netif->ifinnucastpkts = 0; \
+ netif->ifindiscards = 0; \
+ netif->ifoutoctets = 0; \
+ netif->ifoutucastpkts = 0; \
+ netif->ifoutnucastpkts = 0; \
+ netif->ifoutdiscards = 0
+#else /* LWIP_SNMP */
+#define NETIF_INIT_SNMP(netif, type, speed)
+#endif /* LWIP_SNMP */
+
+
+/** The list of network interfaces. */
+extern struct netif *netif_list;
+/** The default network interface. */
+extern struct netif *netif_default;
+
+#define netif_init() /* Compatibility define, not init needed. */
+
+struct netif *netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask,
+ struct ip_addr *gw,
+ void *state,
+ err_t (* init)(struct netif *netif),
+ err_t (* input)(struct pbuf *p, struct netif *netif));
+
+void
+netif_set_addr(struct netif *netif,struct ip_addr *ipaddr, struct ip_addr *netmask,
+ struct ip_addr *gw);
+void netif_remove(struct netif * netif);
+
+/* Returns a network interface given its name. The name is of the form
+ "et0", where the first two letters are the "name" field in the
+ netif structure, and the digit is in the num field in the same
+ structure. */
+struct netif *netif_find(char *name);
+
+void netif_set_default(struct netif *netif);
+
+void netif_set_ipaddr(struct netif *netif, struct ip_addr *ipaddr);
+void netif_set_netmask(struct netif *netif, struct ip_addr *netmask);
+void netif_set_gw(struct netif *netif, struct ip_addr *gw);
+
+void netif_set_up(struct netif *netif);
+void netif_set_down(struct netif *netif);
+u8_t netif_is_up(struct netif *netif);
+
+#if LWIP_NETIF_STATUS_CALLBACK
+/*
+ * Set callback to be called when interface is brought up/down
+ */
+void netif_set_status_callback(struct netif *netif, void (* status_callback)(struct netif *netif));
+#endif /* LWIP_NETIF_STATUS_CALLBACK */
+
+#if LWIP_NETIF_LINK_CALLBACK
+void netif_set_link_up(struct netif *netif);
+void netif_set_link_down(struct netif *netif);
+u8_t netif_is_link_up(struct netif *netif);
+/*
+ * Set callback to be called when link is brought up/down
+ */
+void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif));
+#endif /* LWIP_NETIF_LINK_CALLBACK */
+
+#ifdef __cplusplus
+}
+#endif
+
+#if ENABLE_LOOPBACK
+err_t netif_loop_output(struct netif *netif, struct pbuf *p, struct ip_addr *dest_ip);
+void netif_poll(struct netif *netif);
+#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
+void netif_poll_all(void);
+#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
+#endif /* ENABLE_LOOPBACK */
+
+#endif /* __LWIP_NETIF_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h
new file mode 100644
index 0000000..22d8690
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h
@@ -0,0 +1,107 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ */
+
+#ifndef __LWIP_NETIFAPI_H__
+#define __LWIP_NETIFAPI_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/sys.h"
+#include "lwip/netif.h"
+#include "lwip/dhcp.h"
+#include "lwip/autoip.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct netifapi_msg_msg {
+#if !LWIP_TCPIP_CORE_LOCKING
+ sys_sem_t sem;
+#endif /* !LWIP_TCPIP_CORE_LOCKING */
+ err_t err;
+ struct netif *netif;
+ union {
+ struct {
+ struct ip_addr *ipaddr;
+ struct ip_addr *netmask;
+ struct ip_addr *gw;
+ void *state;
+ err_t (* init) (struct netif *netif);
+ err_t (* input)(struct pbuf *p, struct netif *netif);
+ } add;
+ struct {
+ void (* voidfunc)(struct netif *netif);
+ err_t (* errtfunc)(struct netif *netif);
+ } common;
+ } msg;
+};
+
+struct netifapi_msg {
+ void (* function)(struct netifapi_msg_msg *msg);
+ struct netifapi_msg_msg msg;
+};
+
+
+/* API for application */
+err_t netifapi_netif_add ( struct netif *netif,
+ struct ip_addr *ipaddr,
+ struct ip_addr *netmask,
+ struct ip_addr *gw,
+ void *state,
+ err_t (* init)(struct netif *netif),
+ err_t (* input)(struct pbuf *p, struct netif *netif) );
+
+err_t netifapi_netif_set_addr ( struct netif *netif,
+ struct ip_addr *ipaddr,
+ struct ip_addr *netmask,
+ struct ip_addr *gw );
+
+err_t netifapi_netif_common ( struct netif *netif,
+ void (* voidfunc)(struct netif *netif),
+ err_t (* errtfunc)(struct netif *netif) );
+
+#define netifapi_netif_remove(n) netifapi_netif_common(n, netif_remove, NULL)
+#define netifapi_netif_set_up(n) netifapi_netif_common(n, netif_set_up, NULL)
+#define netifapi_netif_set_down(n) netifapi_netif_common(n, netif_set_down, NULL)
+#define netifapi_netif_set_default(n) netifapi_netif_common(n, netif_set_default, NULL)
+#define netifapi_dhcp_start(n) netifapi_netif_common(n, NULL, dhcp_start)
+#define netifapi_dhcp_stop(n) netifapi_netif_common(n, dhcp_stop, NULL)
+#define netifapi_autoip_start(n) netifapi_netif_common(n, NULL, autoip_start)
+#define netifapi_autoip_stop(n) netifapi_netif_common(n, NULL, autoip_stop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_NETIF_API */
+
+#endif /* __LWIP_NETIFAPI_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h
new file mode 100644
index 0000000..f70f646
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h
@@ -0,0 +1,1842 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ *
+ * lwIP Options Configuration
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_OPT_H__
+#define __LWIP_OPT_H__
+
+/*
+ * Include user defined options first. Anything not defined in these files
+ * will be set to standard values. Override anything you dont like!
+ */
+#include "lwipopts.h"
+#include "lwip/debug.h"
+
+/*
+ -----------------------------------------------
+ ---------- Platform specific locking ----------
+ -----------------------------------------------
+*/
+
+/**
+ * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
+ * critical regions during buffer allocation, deallocation and memory
+ * allocation and deallocation.
+ */
+#ifndef SYS_LIGHTWEIGHT_PROT
+#define SYS_LIGHTWEIGHT_PROT 0
+#endif
+
+/**
+ * NO_SYS==1: Provides VERY minimal functionality. Otherwise,
+ * use lwIP facilities.
+ */
+#ifndef NO_SYS
+#define NO_SYS 0
+#endif
+
+/**
+ * MEMCPY: override this if you have a faster implementation at hand than the
+ * one included in your C library
+ */
+#ifndef MEMCPY
+#define MEMCPY(dst,src,len) memcpy(dst,src,len)
+#endif
+
+/**
+ * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a
+ * call to memcpy() if the length is known at compile time and is small.
+ */
+#ifndef SMEMCPY
+#define SMEMCPY(dst,src,len) memcpy(dst,src,len)
+#endif
+
+/*
+ ------------------------------------
+ ---------- Memory options ----------
+ ------------------------------------
+*/
+/**
+ * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library
+ * instead of the lwip internal allocator. Can save code size if you
+ * already use it.
+ */
+#ifndef MEM_LIBC_MALLOC
+#define MEM_LIBC_MALLOC 0
+#endif
+
+/**
+* MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator.
+* Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution
+* speed and usage from interrupts!
+*/
+#ifndef MEMP_MEM_MALLOC
+#define MEMP_MEM_MALLOC 0
+#endif
+
+/**
+ * MEM_ALIGNMENT: should be set to the alignment of the CPU
+ * 4 byte alignment -> #define MEM_ALIGNMENT 4
+ * 2 byte alignment -> #define MEM_ALIGNMENT 2
+ */
+#ifndef MEM_ALIGNMENT
+#define MEM_ALIGNMENT 1
+#endif
+
+/**
+ * MEM_SIZE: the size of the heap memory. If the application will send
+ * a lot of data that needs to be copied, this should be set high.
+ */
+#ifndef MEM_SIZE
+#define MEM_SIZE 1600
+#endif
+
+/**
+ * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable
+ * amount of bytes before and after each memp element in every pool and fills
+ * it with a prominent default value.
+ * MEMP_OVERFLOW_CHECK == 0 no checking
+ * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed
+ * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time
+ * memp_malloc() or memp_free() is called (useful but slow!)
+ */
+#ifndef MEMP_OVERFLOW_CHECK
+#define MEMP_OVERFLOW_CHECK 0
+#endif
+
+/**
+ * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make
+ * sure that there are no cycles in the linked lists.
+ */
+#ifndef MEMP_SANITY_CHECK
+#define MEMP_SANITY_CHECK 0
+#endif
+
+/**
+ * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set
+ * of memory pools of various sizes. When mem_malloc is called, an element of
+ * the smallest pool that can provide the length needed is returned.
+ * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled.
+ */
+#ifndef MEM_USE_POOLS
+#define MEM_USE_POOLS 0
+#endif
+
+/**
+ * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next
+ * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more
+ * reliable. */
+#ifndef MEM_USE_POOLS_TRY_BIGGER_POOL
+#define MEM_USE_POOLS_TRY_BIGGER_POOL 0
+#endif
+
+/**
+ * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h
+ * that defines additional pools beyond the "standard" ones required
+ * by lwIP. If you set this to 1, you must have lwippools.h in your
+ * inlude path somewhere.
+ */
+#ifndef MEMP_USE_CUSTOM_POOLS
+#define MEMP_USE_CUSTOM_POOLS 0
+#endif
+
+/**
+ * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from
+ * interrupt context (or another context that doesn't allow waiting for a
+ * semaphore).
+ * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT,
+ * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs
+ * with each loop so that mem_free can run.
+ *
+ * ATTENTION: As you can see from the above description, this leads to dis-/
+ * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc
+ * can need longer.
+ *
+ * If you don't want that, at least for NO_SYS=0, you can still use the following
+ * functions to enqueue a deallocation call which then runs in the tcpip_thread
+ * context:
+ * - pbuf_free_callback(p);
+ * - mem_free_callback(m);
+ */
+#ifndef LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
+#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0
+#endif
+
+/*
+ ------------------------------------------------
+ ---------- Internal Memory Pool Sizes ----------
+ ------------------------------------------------
+*/
+/**
+ * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF).
+ * If the application sends a lot of data out of ROM (or other static memory),
+ * this should be set high.
+ */
+#ifndef MEMP_NUM_PBUF
+#define MEMP_NUM_PBUF 16
+#endif
+
+/**
+ * MEMP_NUM_RAW_PCB: Number of raw connection PCBs
+ * (requires the LWIP_RAW option)
+ */
+#ifndef MEMP_NUM_RAW_PCB
+#define MEMP_NUM_RAW_PCB 4
+#endif
+
+/**
+ * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
+ * per active UDP "connection".
+ * (requires the LWIP_UDP option)
+ */
+#ifndef MEMP_NUM_UDP_PCB
+#define MEMP_NUM_UDP_PCB 4
+#endif
+
+/**
+ * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#ifndef MEMP_NUM_TCP_PCB
+#define MEMP_NUM_TCP_PCB 5
+#endif
+
+/**
+ * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#ifndef MEMP_NUM_TCP_PCB_LISTEN
+#define MEMP_NUM_TCP_PCB_LISTEN 8
+#endif
+
+/**
+ * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments.
+ * (requires the LWIP_TCP option)
+ */
+#ifndef MEMP_NUM_TCP_SEG
+#define MEMP_NUM_TCP_SEG 16
+#endif
+
+/**
+ * MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for
+ * reassembly (whole packets, not fragments!)
+ */
+#ifndef MEMP_NUM_REASSDATA
+#define MEMP_NUM_REASSDATA 5
+#endif
+
+/**
+ * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
+ * packets (pbufs) that are waiting for an ARP request (to resolve
+ * their destination address) to finish.
+ * (requires the ARP_QUEUEING option)
+ */
+#ifndef MEMP_NUM_ARP_QUEUE
+#define MEMP_NUM_ARP_QUEUE 30
+#endif
+
+/**
+ * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces
+ * can be members et the same time (one per netif - allsystems group -, plus one
+ * per netif membership).
+ * (requires the LWIP_IGMP option)
+ */
+#ifndef MEMP_NUM_IGMP_GROUP
+#define MEMP_NUM_IGMP_GROUP 8
+#endif
+
+/**
+ * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts.
+ * (requires NO_SYS==0)
+ */
+#ifndef MEMP_NUM_SYS_TIMEOUT
+#define MEMP_NUM_SYS_TIMEOUT 3
+#endif
+
+/**
+ * MEMP_NUM_NETBUF: the number of struct netbufs.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#ifndef MEMP_NUM_NETBUF
+#define MEMP_NUM_NETBUF 2
+#endif
+
+/**
+ * MEMP_NUM_NETCONN: the number of struct netconns.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#ifndef MEMP_NUM_NETCONN
+#define MEMP_NUM_NETCONN 4
+#endif
+
+/**
+ * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used
+ * for callback/timeout API communication.
+ * (only needed if you use tcpip.c)
+ */
+#ifndef MEMP_NUM_TCPIP_MSG_API
+#define MEMP_NUM_TCPIP_MSG_API 8
+#endif
+
+/**
+ * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used
+ * for incoming packets.
+ * (only needed if you use tcpip.c)
+ */
+#ifndef MEMP_NUM_TCPIP_MSG_INPKT
+#define MEMP_NUM_TCPIP_MSG_INPKT 8
+#endif
+
+/**
+ * PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
+ */
+#ifndef PBUF_POOL_SIZE
+#define PBUF_POOL_SIZE 16
+#endif
+
+/*
+ ---------------------------------
+ ---------- ARP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_ARP==1: Enable ARP functionality.
+ */
+#ifndef LWIP_ARP
+#define LWIP_ARP 1
+#endif
+
+/**
+ * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached.
+ */
+#ifndef ARP_TABLE_SIZE
+#define ARP_TABLE_SIZE 10
+#endif
+
+/**
+ * ARP_QUEUEING==1: Outgoing packets are queued during hardware address
+ * resolution.
+ */
+#ifndef ARP_QUEUEING
+#define ARP_QUEUEING 1
+#endif
+
+/**
+ * ETHARP_TRUST_IP_MAC==1: Incoming IP packets cause the ARP table to be
+ * updated with the source MAC and IP addresses supplied in the packet.
+ * You may want to disable this if you do not trust LAN peers to have the
+ * correct addresses, or as a limited approach to attempt to handle
+ * spoofing. If disabled, lwIP will need to make a new ARP request if
+ * the peer is not already in the ARP table, adding a little latency.
+ */
+#ifndef ETHARP_TRUST_IP_MAC
+#define ETHARP_TRUST_IP_MAC 1
+#endif
+
+/**
+ * ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header.
+ * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check.
+ * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted.
+ * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted.
+ */
+#ifndef ETHARP_SUPPORT_VLAN
+#define ETHARP_SUPPORT_VLAN 0
+#endif
+
+/*
+ --------------------------------
+ ---------- IP options ----------
+ --------------------------------
+*/
+/**
+ * IP_FORWARD==1: Enables the ability to forward IP packets across network
+ * interfaces. If you are going to run lwIP on a device with only one network
+ * interface, define this to 0.
+ */
+#ifndef IP_FORWARD
+#define IP_FORWARD 0
+#endif
+
+/**
+ * IP_OPTIONS_ALLOWED: Defines the behavior for IP options.
+ * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped.
+ * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed).
+ */
+#ifndef IP_OPTIONS_ALLOWED
+#define IP_OPTIONS_ALLOWED 1
+#endif
+
+/**
+ * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that
+ * this option does not affect outgoing packet sizes, which can be controlled
+ * via IP_FRAG.
+ */
+#ifndef IP_REASSEMBLY
+#define IP_REASSEMBLY 1
+#endif
+
+/**
+ * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note
+ * that this option does not affect incoming packet sizes, which can be
+ * controlled via IP_REASSEMBLY.
+ */
+#ifndef IP_FRAG
+#define IP_FRAG 1
+#endif
+
+/**
+ * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally)
+ * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived
+ * in this time, the whole packet is discarded.
+ */
+#ifndef IP_REASS_MAXAGE
+#define IP_REASS_MAXAGE 3
+#endif
+
+/**
+ * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled.
+ * Since the received pbufs are enqueued, be sure to configure
+ * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive
+ * packets even if the maximum amount of fragments is enqueued for reassembly!
+ */
+#ifndef IP_REASS_MAX_PBUFS
+#define IP_REASS_MAX_PBUFS 10
+#endif
+
+/**
+ * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP
+ * fragmentation. Otherwise pbufs are allocated and reference the original
+ * packet data to be fragmented.
+ */
+#ifndef IP_FRAG_USES_STATIC_BUF
+#define IP_FRAG_USES_STATIC_BUF 1
+#endif
+
+/**
+ * IP_FRAG_MAX_MTU: Assumed max MTU on any interface for IP frag buffer
+ * (requires IP_FRAG_USES_STATIC_BUF==1)
+ */
+#if IP_FRAG_USES_STATIC_BUF && !defined(IP_FRAG_MAX_MTU)
+#define IP_FRAG_MAX_MTU 1500
+#endif
+
+/**
+ * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers.
+ */
+#ifndef IP_DEFAULT_TTL
+#define IP_DEFAULT_TTL 255
+#endif
+
+/**
+ * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast
+ * filter per pcb on udp and raw send operations. To enable broadcast filter
+ * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1.
+ */
+#ifndef IP_SOF_BROADCAST
+#define IP_SOF_BROADCAST 0
+#endif
+
+/**
+ * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast
+ * filter on recv operations.
+ */
+#ifndef IP_SOF_BROADCAST_RECV
+#define IP_SOF_BROADCAST_RECV 0
+#endif
+
+/*
+ ----------------------------------
+ ---------- ICMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_ICMP==1: Enable ICMP module inside the IP stack.
+ * Be careful, disable that make your product non-compliant to RFC1122
+ */
+#ifndef LWIP_ICMP
+#define LWIP_ICMP 1
+#endif
+
+/**
+ * ICMP_TTL: Default value for Time-To-Live used by ICMP packets.
+ */
+#ifndef ICMP_TTL
+#define ICMP_TTL (IP_DEFAULT_TTL)
+#endif
+
+/**
+ * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only)
+ */
+#ifndef LWIP_BROADCAST_PING
+#define LWIP_BROADCAST_PING 0
+#endif
+
+/**
+ * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only)
+ */
+#ifndef LWIP_MULTICAST_PING
+#define LWIP_MULTICAST_PING 0
+#endif
+
+/*
+ ---------------------------------
+ ---------- RAW options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
+ */
+#ifndef LWIP_RAW
+#define LWIP_RAW 1
+#endif
+
+/**
+ * LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
+ */
+#ifndef RAW_TTL
+#define RAW_TTL (IP_DEFAULT_TTL)
+#endif
+
+/*
+ ----------------------------------
+ ---------- DHCP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_DHCP==1: Enable DHCP module.
+ */
+#ifndef LWIP_DHCP
+#define LWIP_DHCP 0
+#endif
+
+/**
+ * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address.
+ */
+#ifndef DHCP_DOES_ARP_CHECK
+#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP))
+#endif
+
+/*
+ ------------------------------------
+ ---------- AUTOIP options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_AUTOIP==1: Enable AUTOIP module.
+ */
+#ifndef LWIP_AUTOIP
+#define LWIP_AUTOIP 0
+#endif
+
+/**
+ * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on
+ * the same interface at the same time.
+ */
+#ifndef LWIP_DHCP_AUTOIP_COOP
+#define LWIP_DHCP_AUTOIP_COOP 0
+#endif
+
+/**
+ * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes
+ * that should be sent before falling back on AUTOIP. This can be set
+ * as low as 1 to get an AutoIP address very quickly, but you should
+ * be prepared to handle a changing IP address when DHCP overrides
+ * AutoIP.
+ */
+#ifndef LWIP_DHCP_AUTOIP_COOP_TRIES
+#define LWIP_DHCP_AUTOIP_COOP_TRIES 9
+#endif
+
+/*
+ ----------------------------------
+ ---------- SNMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP
+ * transport.
+ */
+#ifndef LWIP_SNMP
+#define LWIP_SNMP 0
+#endif
+
+/**
+ * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will
+ * allow. At least one request buffer is required.
+ */
+#ifndef SNMP_CONCURRENT_REQUESTS
+#define SNMP_CONCURRENT_REQUESTS 1
+#endif
+
+/**
+ * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap
+ * destination is required
+ */
+#ifndef SNMP_TRAP_DESTINATIONS
+#define SNMP_TRAP_DESTINATIONS 1
+#endif
+
+/**
+ * SNMP_PRIVATE_MIB:
+ */
+#ifndef SNMP_PRIVATE_MIB
+#define SNMP_PRIVATE_MIB 0
+#endif
+
+/**
+ * Only allow SNMP write actions that are 'safe' (e.g. disabeling netifs is not
+ * a safe action and disabled when SNMP_SAFE_REQUESTS = 1).
+ * Unsafe requests are disabled by default!
+ */
+#ifndef SNMP_SAFE_REQUESTS
+#define SNMP_SAFE_REQUESTS 1
+#endif
+
+/*
+ ----------------------------------
+ ---------- IGMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_IGMP==1: Turn on IGMP module.
+ */
+#ifndef LWIP_IGMP
+#define LWIP_IGMP 0
+#endif
+
+/*
+ ----------------------------------
+ ---------- DNS options -----------
+ ----------------------------------
+*/
+/**
+ * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS
+ * transport.
+ */
+#ifndef LWIP_DNS
+#define LWIP_DNS 0
+#endif
+
+/** DNS maximum number of entries to maintain locally. */
+#ifndef DNS_TABLE_SIZE
+#define DNS_TABLE_SIZE 4
+#endif
+
+/** DNS maximum host name length supported in the name table. */
+#ifndef DNS_MAX_NAME_LENGTH
+#define DNS_MAX_NAME_LENGTH 256
+#endif
+
+/** The maximum of DNS servers */
+#ifndef DNS_MAX_SERVERS
+#define DNS_MAX_SERVERS 2
+#endif
+
+/** DNS do a name checking between the query and the response. */
+#ifndef DNS_DOES_NAME_CHECK
+#define DNS_DOES_NAME_CHECK 1
+#endif
+
+/** DNS use a local buffer if DNS_USES_STATIC_BUF=0, a static one if
+ DNS_USES_STATIC_BUF=1, or a dynamic one if DNS_USES_STATIC_BUF=2.
+ The buffer will be of size DNS_MSG_SIZE */
+#ifndef DNS_USES_STATIC_BUF
+#define DNS_USES_STATIC_BUF 1
+#endif
+
+/** DNS message max. size. Default value is RFC compliant. */
+#ifndef DNS_MSG_SIZE
+#define DNS_MSG_SIZE 512
+#endif
+
+/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled,
+ * you have to define
+ * #define DNS_LOCAL_HOSTLIST_INIT {{"host1", 0x123}, {"host2", 0x234}}
+ * (an array of structs name/address, where address is an u32_t in network
+ * byte order).
+ *
+ * Instead, you can also use an external function:
+ * #define DNS_LOOKUP_LOCAL_EXTERN(x) extern u32_t my_lookup_function(const char *name)
+ * that returns the IP address or INADDR_NONE if not found.
+ */
+#ifndef DNS_LOCAL_HOSTLIST
+#define DNS_LOCAL_HOSTLIST 0
+#endif /* DNS_LOCAL_HOSTLIST */
+
+/** If this is turned on, the local host-list can be dynamically changed
+ * at runtime. */
+#ifndef DNS_LOCAL_HOSTLIST_IS_DYNAMIC
+#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0
+#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
+
+/*
+ ---------------------------------
+ ---------- UDP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_UDP==1: Turn on UDP.
+ */
+#ifndef LWIP_UDP
+#define LWIP_UDP 1
+#endif
+
+/**
+ * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP)
+ */
+#ifndef LWIP_UDPLITE
+#define LWIP_UDPLITE 0
+#endif
+
+/**
+ * UDP_TTL: Default Time-To-Live value.
+ */
+#ifndef UDP_TTL
+#define UDP_TTL (IP_DEFAULT_TTL)
+#endif
+
+/**
+ * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf.
+ */
+#ifndef LWIP_NETBUF_RECVINFO
+#define LWIP_NETBUF_RECVINFO 0
+#endif
+
+/*
+ ---------------------------------
+ ---------- TCP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_TCP==1: Turn on TCP.
+ */
+#ifndef LWIP_TCP
+#define LWIP_TCP 1
+#endif
+
+/**
+ * TCP_TTL: Default Time-To-Live value.
+ */
+#ifndef TCP_TTL
+#define TCP_TTL (IP_DEFAULT_TTL)
+#endif
+
+/**
+ * TCP_WND: The size of a TCP window. This must be at least
+ * (2 * TCP_MSS) for things to work well
+ */
+#ifndef TCP_WND
+#define TCP_WND (4 * TCP_MSS)
+#endif
+
+/**
+ * TCP_MAXRTX: Maximum number of retransmissions of data segments.
+ */
+#ifndef TCP_MAXRTX
+#define TCP_MAXRTX 12
+#endif
+
+/**
+ * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments.
+ */
+#ifndef TCP_SYNMAXRTX
+#define TCP_SYNMAXRTX 6
+#endif
+
+/**
+ * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order.
+ * Define to 0 if your device is low on memory.
+ */
+#ifndef TCP_QUEUE_OOSEQ
+#define TCP_QUEUE_OOSEQ (LWIP_TCP)
+#endif
+
+/**
+ * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default,
+ * you might want to increase this.)
+ * For the receive side, this MSS is advertised to the remote side
+ * when opening a connection. For the transmit size, this MSS sets
+ * an upper limit on the MSS advertised by the remote host.
+ */
+#ifndef TCP_MSS
+#define TCP_MSS 536
+#endif
+
+/**
+ * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really
+ * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which
+ * reflects the available reassembly buffer size at the remote host) and the
+ * largest size permitted by the IP layer" (RFC 1122)
+ * Setting this to 1 enables code that checks TCP_MSS against the MTU of the
+ * netif used for a connection and limits the MSS if it would be too big otherwise.
+ */
+#ifndef TCP_CALCULATE_EFF_SEND_MSS
+#define TCP_CALCULATE_EFF_SEND_MSS 1
+#endif
+
+
+/**
+ * TCP_SND_BUF: TCP sender buffer space (bytes).
+ */
+#ifndef TCP_SND_BUF
+#define TCP_SND_BUF 256
+#endif
+
+/**
+ * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
+ * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work.
+ */
+#ifndef TCP_SND_QUEUELEN
+#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF)/(TCP_MSS))
+#endif
+
+/**
+ * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than or equal
+ * to TCP_SND_BUF. It is the amount of space which must be available in the
+ * TCP snd_buf for select to return writable.
+ */
+#ifndef TCP_SNDLOWAT
+#define TCP_SNDLOWAT ((TCP_SND_BUF)/2)
+#endif
+
+/**
+ * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb.
+ */
+#ifndef TCP_LISTEN_BACKLOG
+#define TCP_LISTEN_BACKLOG 0
+#endif
+
+/**
+ * The maximum allowed backlog for TCP listen netconns.
+ * This backlog is used unless another is explicitly specified.
+ * 0xff is the maximum (u8_t).
+ */
+#ifndef TCP_DEFAULT_LISTEN_BACKLOG
+#define TCP_DEFAULT_LISTEN_BACKLOG 0xff
+#endif
+
+/**
+ * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option.
+ */
+#ifndef LWIP_TCP_TIMESTAMPS
+#define LWIP_TCP_TIMESTAMPS 0
+#endif
+
+/**
+ * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an
+ * explicit window update
+ */
+#ifndef TCP_WND_UPDATE_THRESHOLD
+#define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4)
+#endif
+
+/**
+ * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1.
+ * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all
+ * events (accept, sent, etc) that happen in the system.
+ * LWIP_CALLBACK_API==1: The PCB callback function is called directly
+ * for the event.
+ */
+#ifndef LWIP_EVENT_API
+#define LWIP_EVENT_API 0
+#define LWIP_CALLBACK_API 1
+#else
+#define LWIP_EVENT_API 1
+#define LWIP_CALLBACK_API 0
+#endif
+
+
+/*
+ ----------------------------------
+ ---------- Pbuf options ----------
+ ----------------------------------
+*/
+/**
+ * PBUF_LINK_HLEN: the number of bytes that should be allocated for a
+ * link level header. The default is 14, the standard value for
+ * Ethernet.
+ */
+#ifndef PBUF_LINK_HLEN
+#define PBUF_LINK_HLEN 14
+#endif
+
+/**
+ * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is
+ * designed to accomodate single full size TCP frame in one pbuf, including
+ * TCP_MSS, IP header, and link header.
+ */
+#ifndef PBUF_POOL_BUFSIZE
+#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN)
+#endif
+
+/*
+ ------------------------------------------------
+ ---------- Network Interfaces options ----------
+ ------------------------------------------------
+*/
+/**
+ * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname
+ * field.
+ */
+#ifndef LWIP_NETIF_HOSTNAME
+#define LWIP_NETIF_HOSTNAME 0
+#endif
+
+/**
+ * LWIP_NETIF_API==1: Support netif api (in netifapi.c)
+ */
+#ifndef LWIP_NETIF_API
+#define LWIP_NETIF_API 0
+#endif
+
+/**
+ * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface
+ * changes its up/down status (i.e., due to DHCP IP acquistion)
+ */
+#ifndef LWIP_NETIF_STATUS_CALLBACK
+#define LWIP_NETIF_STATUS_CALLBACK 0
+#endif
+
+/**
+ * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
+ * whenever the link changes (i.e., link down)
+ */
+#ifndef LWIP_NETIF_LINK_CALLBACK
+#define LWIP_NETIF_LINK_CALLBACK 0
+#endif
+
+/**
+ * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table
+ * indices) in struct netif. TCP and UDP can make use of this to prevent
+ * scanning the ARP table for every sent packet. While this is faster for big
+ * ARP tables or many concurrent connections, it might be counterproductive
+ * if you have a tiny ARP table or if there never are concurrent connections.
+ */
+#ifndef LWIP_NETIF_HWADDRHINT
+#define LWIP_NETIF_HWADDRHINT 0
+#endif
+
+/**
+ * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP
+ * address equal to the netif IP address, looping them back up the stack.
+ */
+#ifndef LWIP_NETIF_LOOPBACK
+#define LWIP_NETIF_LOOPBACK 0
+#endif
+
+/**
+ * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback
+ * sending for each netif (0 = disabled)
+ */
+#ifndef LWIP_LOOPBACK_MAX_PBUFS
+#define LWIP_LOOPBACK_MAX_PBUFS 0
+#endif
+
+/**
+ * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in
+ * the system, as netifs must change how they behave depending on this setting
+ * for the LWIP_NETIF_LOOPBACK option to work.
+ * Setting this is needed to avoid reentering non-reentrant functions like
+ * tcp_input().
+ * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a
+ * multithreaded environment like tcpip.c. In this case, netif->input()
+ * is called directly.
+ * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup.
+ * The packets are put on a list and netif_poll() must be called in
+ * the main application loop.
+ */
+#ifndef LWIP_NETIF_LOOPBACK_MULTITHREADING
+#define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS)
+#endif
+
+/**
+ * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data
+ * to be sent into one single pbuf. This is for compatibility with DMA-enabled
+ * MACs that do not support scatter-gather.
+ * Beware that this might involve CPU-memcpy before transmitting that would not
+ * be needed without this flag! Use this only if you need to!
+ *
+ * @todo: TCP and IP-frag do not work with this, yet:
+ */
+#ifndef LWIP_NETIF_TX_SINGLE_PBUF
+#define LWIP_NETIF_TX_SINGLE_PBUF 0
+#endif /* LWIP_NETIF_TX_SINGLE_PBUF */
+
+/*
+ ------------------------------------
+ ---------- LOOPIF options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c
+ */
+#ifndef LWIP_HAVE_LOOPIF
+#define LWIP_HAVE_LOOPIF 0
+#endif
+
+/*
+ ------------------------------------
+ ---------- SLIPIF options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_HAVE_SLIPIF==1: Support slip interface and slipif.c
+ */
+#ifndef LWIP_HAVE_SLIPIF
+#define LWIP_HAVE_SLIPIF 0
+#endif
+
+/*
+ ------------------------------------
+ ---------- Thread options ----------
+ ------------------------------------
+*/
+/**
+ * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread.
+ */
+#ifndef TCPIP_THREAD_NAME
+#define TCPIP_THREAD_NAME "tcpip_thread"
+#endif
+
+/**
+ * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread.
+ * The stack size value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef TCPIP_THREAD_STACKSIZE
+#define TCPIP_THREAD_STACKSIZE 0
+#endif
+
+/**
+ * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread.
+ * The priority value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef TCPIP_THREAD_PRIO
+#define TCPIP_THREAD_PRIO 1
+#endif
+
+/**
+ * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages
+ * The queue size value itself is platform-dependent, but is passed to
+ * sys_mbox_new() when tcpip_init is called.
+ */
+#ifndef TCPIP_MBOX_SIZE
+#define TCPIP_MBOX_SIZE 0
+#endif
+
+/**
+ * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread.
+ */
+#ifndef SLIPIF_THREAD_NAME
+#define SLIPIF_THREAD_NAME "slipif_loop"
+#endif
+
+/**
+ * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread.
+ * The stack size value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef SLIPIF_THREAD_STACKSIZE
+#define SLIPIF_THREAD_STACKSIZE 0
+#endif
+
+/**
+ * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread.
+ * The priority value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef SLIPIF_THREAD_PRIO
+#define SLIPIF_THREAD_PRIO 1
+#endif
+
+/**
+ * PPP_THREAD_NAME: The name assigned to the pppMain thread.
+ */
+#ifndef PPP_THREAD_NAME
+#define PPP_THREAD_NAME "pppMain"
+#endif
+
+/**
+ * PPP_THREAD_STACKSIZE: The stack size used by the pppMain thread.
+ * The stack size value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef PPP_THREAD_STACKSIZE
+#define PPP_THREAD_STACKSIZE 0
+#endif
+
+/**
+ * PPP_THREAD_PRIO: The priority assigned to the pppMain thread.
+ * The priority value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef PPP_THREAD_PRIO
+#define PPP_THREAD_PRIO 1
+#endif
+
+/**
+ * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread.
+ */
+#ifndef DEFAULT_THREAD_NAME
+#define DEFAULT_THREAD_NAME "lwIP"
+#endif
+
+/**
+ * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread.
+ * The stack size value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef DEFAULT_THREAD_STACKSIZE
+#define DEFAULT_THREAD_STACKSIZE 0
+#endif
+
+/**
+ * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread.
+ * The priority value itself is platform-dependent, but is passed to
+ * sys_thread_new() when the thread is created.
+ */
+#ifndef DEFAULT_THREAD_PRIO
+#define DEFAULT_THREAD_PRIO 1
+#endif
+
+/**
+ * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a
+ * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed
+ * to sys_mbox_new() when the recvmbox is created.
+ */
+#ifndef DEFAULT_RAW_RECVMBOX_SIZE
+#define DEFAULT_RAW_RECVMBOX_SIZE 0
+#endif
+
+/**
+ * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a
+ * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed
+ * to sys_mbox_new() when the recvmbox is created.
+ */
+#ifndef DEFAULT_UDP_RECVMBOX_SIZE
+#define DEFAULT_UDP_RECVMBOX_SIZE 0
+#endif
+
+/**
+ * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a
+ * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed
+ * to sys_mbox_new() when the recvmbox is created.
+ */
+#ifndef DEFAULT_TCP_RECVMBOX_SIZE
+#define DEFAULT_TCP_RECVMBOX_SIZE 0
+#endif
+
+/**
+ * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections.
+ * The queue size value itself is platform-dependent, but is passed to
+ * sys_mbox_new() when the acceptmbox is created.
+ */
+#ifndef DEFAULT_ACCEPTMBOX_SIZE
+#define DEFAULT_ACCEPTMBOX_SIZE 0
+#endif
+
+/*
+ ----------------------------------------------
+ ---------- Sequential layer options ----------
+ ----------------------------------------------
+*/
+/**
+ * LWIP_TCPIP_CORE_LOCKING: (EXPERIMENTAL!)
+ * Don't use it if you're not an active lwIP project member
+ */
+#ifndef LWIP_TCPIP_CORE_LOCKING
+#define LWIP_TCPIP_CORE_LOCKING 0
+#endif
+
+/**
+ * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
+ */
+#ifndef LWIP_NETCONN
+#define LWIP_NETCONN 1
+#endif
+
+/*
+ ------------------------------------
+ ---------- Socket options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
+ */
+#ifndef LWIP_SOCKET
+#define LWIP_SOCKET 1
+#endif
+
+/**
+ * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names.
+ * (only used if you use sockets.c)
+ */
+#ifndef LWIP_COMPAT_SOCKETS
+#define LWIP_COMPAT_SOCKETS 1
+#endif
+
+/**
+ * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names.
+ * Disable this option if you use a POSIX operating system that uses the same
+ * names (read, write & close). (only used if you use sockets.c)
+ */
+#ifndef LWIP_POSIX_SOCKETS_IO_NAMES
+#define LWIP_POSIX_SOCKETS_IO_NAMES 1
+#endif
+
+/**
+ * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT
+ * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set
+ * in seconds. (does not require sockets.c, and will affect tcp.c)
+ */
+#ifndef LWIP_TCP_KEEPALIVE
+#define LWIP_TCP_KEEPALIVE 0
+#endif
+
+/**
+ * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing.
+ */
+#ifndef LWIP_SO_RCVTIMEO
+#define LWIP_SO_RCVTIMEO 0
+#endif
+
+/**
+ * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing.
+ */
+#ifndef LWIP_SO_RCVBUF
+#define LWIP_SO_RCVBUF 0
+#endif
+
+/**
+ * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize.
+ */
+#ifndef RECV_BUFSIZE_DEFAULT
+#define RECV_BUFSIZE_DEFAULT INT_MAX
+#endif
+
+/**
+ * SO_REUSE==1: Enable SO_REUSEADDR and SO_REUSEPORT options. DO NOT USE!
+ */
+#ifndef SO_REUSE
+#define SO_REUSE 0
+#endif
+
+/*
+ ----------------------------------------
+ ---------- Statistics options ----------
+ ----------------------------------------
+*/
+/**
+ * LWIP_STATS==1: Enable statistics collection in lwip_stats.
+ */
+#ifndef LWIP_STATS
+#define LWIP_STATS 1
+#endif
+
+#if LWIP_STATS
+
+/**
+ * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions.
+ */
+#ifndef LWIP_STATS_DISPLAY
+#define LWIP_STATS_DISPLAY 0
+#endif
+
+/**
+ * LINK_STATS==1: Enable link stats.
+ */
+#ifndef LINK_STATS
+#define LINK_STATS 1
+#endif
+
+/**
+ * ETHARP_STATS==1: Enable etharp stats.
+ */
+#ifndef ETHARP_STATS
+#define ETHARP_STATS (LWIP_ARP)
+#endif
+
+/**
+ * IP_STATS==1: Enable IP stats.
+ */
+#ifndef IP_STATS
+#define IP_STATS 1
+#endif
+
+/**
+ * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is
+ * on if using either frag or reass.
+ */
+#ifndef IPFRAG_STATS
+#define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG)
+#endif
+
+/**
+ * ICMP_STATS==1: Enable ICMP stats.
+ */
+#ifndef ICMP_STATS
+#define ICMP_STATS 1
+#endif
+
+/**
+ * IGMP_STATS==1: Enable IGMP stats.
+ */
+#ifndef IGMP_STATS
+#define IGMP_STATS (LWIP_IGMP)
+#endif
+
+/**
+ * UDP_STATS==1: Enable UDP stats. Default is on if
+ * UDP enabled, otherwise off.
+ */
+#ifndef UDP_STATS
+#define UDP_STATS (LWIP_UDP)
+#endif
+
+/**
+ * TCP_STATS==1: Enable TCP stats. Default is on if TCP
+ * enabled, otherwise off.
+ */
+#ifndef TCP_STATS
+#define TCP_STATS (LWIP_TCP)
+#endif
+
+/**
+ * MEM_STATS==1: Enable mem.c stats.
+ */
+#ifndef MEM_STATS
+#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0))
+#endif
+
+/**
+ * MEMP_STATS==1: Enable memp.c pool stats.
+ */
+#ifndef MEMP_STATS
+#define MEMP_STATS (MEMP_MEM_MALLOC == 0)
+#endif
+
+/**
+ * SYS_STATS==1: Enable system stats (sem and mbox counts, etc).
+ */
+#ifndef SYS_STATS
+#define SYS_STATS (NO_SYS == 0)
+#endif
+
+#else
+
+#define LINK_STATS 0
+#define IP_STATS 0
+#define IPFRAG_STATS 0
+#define ICMP_STATS 0
+#define IGMP_STATS 0
+#define UDP_STATS 0
+#define TCP_STATS 0
+#define MEM_STATS 0
+#define MEMP_STATS 0
+#define SYS_STATS 0
+#define LWIP_STATS_DISPLAY 0
+
+#endif /* LWIP_STATS */
+
+/*
+ ---------------------------------
+ ---------- PPP options ----------
+ ---------------------------------
+*/
+/**
+ * PPP_SUPPORT==1: Enable PPP.
+ */
+#ifndef PPP_SUPPORT
+#define PPP_SUPPORT 0
+#endif
+
+/**
+ * PPPOE_SUPPORT==1: Enable PPP Over Ethernet
+ */
+#ifndef PPPOE_SUPPORT
+#define PPPOE_SUPPORT 0
+#endif
+
+/**
+ * PPPOS_SUPPORT==1: Enable PPP Over Serial
+ */
+#ifndef PPPOS_SUPPORT
+#define PPPOS_SUPPORT PPP_SUPPORT
+#endif
+
+#if PPP_SUPPORT
+
+/**
+ * NUM_PPP: Max PPP sessions.
+ */
+#ifndef NUM_PPP
+#define NUM_PPP 1
+#endif
+
+/**
+ * PAP_SUPPORT==1: Support PAP.
+ */
+#ifndef PAP_SUPPORT
+#define PAP_SUPPORT 0
+#endif
+
+/**
+ * CHAP_SUPPORT==1: Support CHAP.
+ */
+#ifndef CHAP_SUPPORT
+#define CHAP_SUPPORT 0
+#endif
+
+/**
+ * MSCHAP_SUPPORT==1: Support MSCHAP. CURRENTLY NOT SUPPORTED! DO NOT SET!
+ */
+#ifndef MSCHAP_SUPPORT
+#define MSCHAP_SUPPORT 0
+#endif
+
+/**
+ * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET!
+ */
+#ifndef CBCP_SUPPORT
+#define CBCP_SUPPORT 0
+#endif
+
+/**
+ * CCP_SUPPORT==1: Support CCP. CURRENTLY NOT SUPPORTED! DO NOT SET!
+ */
+#ifndef CCP_SUPPORT
+#define CCP_SUPPORT 0
+#endif
+
+/**
+ * VJ_SUPPORT==1: Support VJ header compression.
+ */
+#ifndef VJ_SUPPORT
+#define VJ_SUPPORT 0
+#endif
+
+/**
+ * MD5_SUPPORT==1: Support MD5 (see also CHAP).
+ */
+#ifndef MD5_SUPPORT
+#define MD5_SUPPORT 0
+#endif
+
+/*
+ * Timeouts
+ */
+#ifndef FSM_DEFTIMEOUT
+#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */
+#endif
+
+#ifndef FSM_DEFMAXTERMREQS
+#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
+#endif
+
+#ifndef FSM_DEFMAXCONFREQS
+#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
+#endif
+
+#ifndef FSM_DEFMAXNAKLOOPS
+#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
+#endif
+
+#ifndef UPAP_DEFTIMEOUT
+#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */
+#endif
+
+#ifndef UPAP_DEFREQTIME
+#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
+#endif
+
+#ifndef CHAP_DEFTIMEOUT
+#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */
+#endif
+
+#ifndef CHAP_DEFTRANSMITS
+#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */
+#endif
+
+/* Interval in seconds between keepalive echo requests, 0 to disable. */
+#ifndef LCP_ECHOINTERVAL
+#define LCP_ECHOINTERVAL 0
+#endif
+
+/* Number of unanswered echo requests before failure. */
+#ifndef LCP_MAXECHOFAILS
+#define LCP_MAXECHOFAILS 3
+#endif
+
+/* Max Xmit idle time (in jiffies) before resend flag char. */
+#ifndef PPP_MAXIDLEFLAG
+#define PPP_MAXIDLEFLAG 100
+#endif
+
+/*
+ * Packet sizes
+ *
+ * Note - lcp shouldn't be allowed to negotiate stuff outside these
+ * limits. See lcp.h in the pppd directory.
+ * (XXX - these constants should simply be shared by lcp.c instead
+ * of living in lcp.h)
+ */
+#define PPP_MTU 1500 /* Default MTU (size of Info field) */
+#ifndef PPP_MAXMTU
+/* #define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) */
+#define PPP_MAXMTU 1500 /* Largest MTU we allow */
+#endif
+#define PPP_MINMTU 64
+#define PPP_MRU 1500 /* default MRU = max length of info field */
+#define PPP_MAXMRU 1500 /* Largest MRU we allow */
+#ifndef PPP_DEFMRU
+#define PPP_DEFMRU 296 /* Try for this */
+#endif
+#define PPP_MINMRU 128 /* No MRUs below this */
+
+#ifndef MAXNAMELEN
+#define MAXNAMELEN 256 /* max length of hostname or name for auth */
+#endif
+#ifndef MAXSECRETLEN
+#define MAXSECRETLEN 256 /* max length of password or secret */
+#endif
+
+#endif /* PPP_SUPPORT */
+
+/*
+ --------------------------------------
+ ---------- Checksum options ----------
+ --------------------------------------
+*/
+/**
+ * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.
+ */
+#ifndef CHECKSUM_GEN_IP
+#define CHECKSUM_GEN_IP 1
+#endif
+
+/**
+ * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.
+ */
+#ifndef CHECKSUM_GEN_UDP
+#define CHECKSUM_GEN_UDP 1
+#endif
+
+/**
+ * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.
+ */
+#ifndef CHECKSUM_GEN_TCP
+#define CHECKSUM_GEN_TCP 1
+#endif
+
+/**
+ * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.
+ */
+#ifndef CHECKSUM_CHECK_IP
+#define CHECKSUM_CHECK_IP 1
+#endif
+
+/**
+ * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.
+ */
+#ifndef CHECKSUM_CHECK_UDP
+#define CHECKSUM_CHECK_UDP 1
+#endif
+
+/**
+ * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.
+ */
+#ifndef CHECKSUM_CHECK_TCP
+#define CHECKSUM_CHECK_TCP 1
+#endif
+
+/*
+ ---------------------------------------
+ ---------- Debugging options ----------
+ ---------------------------------------
+*/
+/**
+ * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is
+ * compared against this value. If it is smaller, then debugging
+ * messages are written.
+ */
+#ifndef LWIP_DBG_MIN_LEVEL
+#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL
+#endif
+
+/**
+ * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable
+ * debug messages of certain types.
+ */
+#ifndef LWIP_DBG_TYPES_ON
+#define LWIP_DBG_TYPES_ON LWIP_DBG_ON
+#endif
+
+/**
+ * ETHARP_DEBUG: Enable debugging in etharp.c.
+ */
+#ifndef ETHARP_DEBUG
+#define ETHARP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * NETIF_DEBUG: Enable debugging in netif.c.
+ */
+#ifndef NETIF_DEBUG
+#define NETIF_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * PBUF_DEBUG: Enable debugging in pbuf.c.
+ */
+#ifndef PBUF_DEBUG
+#define PBUF_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * API_LIB_DEBUG: Enable debugging in api_lib.c.
+ */
+#ifndef API_LIB_DEBUG
+#define API_LIB_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * API_MSG_DEBUG: Enable debugging in api_msg.c.
+ */
+#ifndef API_MSG_DEBUG
+#define API_MSG_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * SOCKETS_DEBUG: Enable debugging in sockets.c.
+ */
+#ifndef SOCKETS_DEBUG
+#define SOCKETS_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * ICMP_DEBUG: Enable debugging in icmp.c.
+ */
+#ifndef ICMP_DEBUG
+#define ICMP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * IGMP_DEBUG: Enable debugging in igmp.c.
+ */
+#ifndef IGMP_DEBUG
+#define IGMP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * INET_DEBUG: Enable debugging in inet.c.
+ */
+#ifndef INET_DEBUG
+#define INET_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * IP_DEBUG: Enable debugging for IP.
+ */
+#ifndef IP_DEBUG
+#define IP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass.
+ */
+#ifndef IP_REASS_DEBUG
+#define IP_REASS_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * RAW_DEBUG: Enable debugging in raw.c.
+ */
+#ifndef RAW_DEBUG
+#define RAW_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * MEM_DEBUG: Enable debugging in mem.c.
+ */
+#ifndef MEM_DEBUG
+#define MEM_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * MEMP_DEBUG: Enable debugging in memp.c.
+ */
+#ifndef MEMP_DEBUG
+#define MEMP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * SYS_DEBUG: Enable debugging in sys.c.
+ */
+#ifndef SYS_DEBUG
+#define SYS_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_DEBUG: Enable debugging for TCP.
+ */
+#ifndef TCP_DEBUG
+#define TCP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug.
+ */
+#ifndef TCP_INPUT_DEBUG
+#define TCP_INPUT_DEBUG LWIP_DBG_ON
+#endif
+
+/**
+ * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit.
+ */
+#ifndef TCP_FR_DEBUG
+#define TCP_FR_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit
+ * timeout.
+ */
+#ifndef TCP_RTO_DEBUG
+#define TCP_RTO_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_CWND_DEBUG: Enable debugging for TCP congestion window.
+ */
+#ifndef TCP_CWND_DEBUG
+#define TCP_CWND_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating.
+ */
+#ifndef TCP_WND_DEBUG
+#define TCP_WND_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions.
+ */
+#ifndef TCP_OUTPUT_DEBUG
+#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_RST_DEBUG: Enable debugging for TCP with the RST message.
+ */
+#ifndef TCP_RST_DEBUG
+#define TCP_RST_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths.
+ */
+#ifndef TCP_QLEN_DEBUG
+#define TCP_QLEN_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * UDP_DEBUG: Enable debugging in UDP.
+ */
+#ifndef UDP_DEBUG
+#define UDP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * TCPIP_DEBUG: Enable debugging in tcpip.c.
+ */
+#ifndef TCPIP_DEBUG
+#define TCPIP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * PPP_DEBUG: Enable debugging for PPP.
+ */
+#ifndef PPP_DEBUG
+#define PPP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * SLIP_DEBUG: Enable debugging in slipif.c.
+ */
+#ifndef SLIP_DEBUG
+#define SLIP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * DHCP_DEBUG: Enable debugging in dhcp.c.
+ */
+#ifndef DHCP_DEBUG
+#define DHCP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * AUTOIP_DEBUG: Enable debugging in autoip.c.
+ */
+#ifndef AUTOIP_DEBUG
+#define AUTOIP_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * SNMP_MSG_DEBUG: Enable debugging for SNMP messages.
+ */
+#ifndef SNMP_MSG_DEBUG
+#define SNMP_MSG_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs.
+ */
+#ifndef SNMP_MIB_DEBUG
+#define SNMP_MIB_DEBUG LWIP_DBG_OFF
+#endif
+
+/**
+ * DNS_DEBUG: Enable debugging for DNS.
+ */
+#ifndef DNS_DEBUG
+#define DNS_DEBUG LWIP_DBG_OFF
+#endif
+
+#endif /* __LWIP_OPT_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h
new file mode 100644
index 0000000..8ca61b1
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h
@@ -0,0 +1,122 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#ifndef __LWIP_PBUF_H__
+#define __LWIP_PBUF_H__
+
+#include "lwip/opt.h"
+#include "lwip/err.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PBUF_TRANSPORT_HLEN 20
+#define PBUF_IP_HLEN 20
+
+typedef enum {
+ PBUF_TRANSPORT,
+ PBUF_IP,
+ PBUF_LINK,
+ PBUF_RAW
+} pbuf_layer;
+
+typedef enum {
+ PBUF_RAM, /* pbuf data is stored in RAM */
+ PBUF_ROM, /* pbuf data is stored in ROM */
+ PBUF_REF, /* pbuf comes from the pbuf pool */
+ PBUF_POOL /* pbuf payload refers to RAM */
+} pbuf_type;
+
+
+/** indicates this packet's data should be immediately passed to the application */
+#define PBUF_FLAG_PUSH 0x01U
+
+struct pbuf {
+ /** next pbuf in singly linked pbuf chain */
+ struct pbuf *next;
+
+ /** pointer to the actual data in the buffer */
+ void *payload;
+
+ /**
+ * total length of this buffer and all next buffers in chain
+ * belonging to the same packet.
+ *
+ * For non-queue packet chains this is the invariant:
+ * p->tot_len == p->len + (p->next? p->next->tot_len: 0)
+ */
+ u16_t tot_len;
+
+ /** length of this buffer */
+ u16_t len;
+
+ /** pbuf_type as u8_t instead of enum to save space */
+ u8_t /*pbuf_type*/ type;
+
+ /** misc flags */
+ u8_t flags;
+
+ /**
+ * the reference count always equals the number of pointers
+ * that refer to this pbuf. This can be pointers from an application,
+ * the stack itself, or pbuf->next pointers from a chain.
+ */
+ u16_t ref;
+
+};
+
+/* Initializes the pbuf module. This call is empty for now, but may not be in future. */
+#define pbuf_init()
+
+struct pbuf *pbuf_alloc(pbuf_layer l, u16_t size, pbuf_type type);
+void pbuf_realloc(struct pbuf *p, u16_t size);
+u8_t pbuf_header(struct pbuf *p, s16_t header_size);
+void pbuf_ref(struct pbuf *p);
+void pbuf_ref_chain(struct pbuf *p);
+u8_t pbuf_free(struct pbuf *p);
+u8_t pbuf_clen(struct pbuf *p);
+void pbuf_cat(struct pbuf *head, struct pbuf *tail);
+void pbuf_chain(struct pbuf *head, struct pbuf *tail);
+struct pbuf *pbuf_dechain(struct pbuf *p);
+err_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from);
+u16_t pbuf_copy_partial(struct pbuf *p, void *dataptr, u16_t len, u16_t offset);
+err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len);
+struct pbuf *pbuf_coalesce(struct pbuf *p, pbuf_layer layer);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_PBUF_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h
new file mode 100644
index 0000000..545c433
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h
@@ -0,0 +1,99 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_RAW_H__
+#define __LWIP_RAW_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/pbuf.h"
+#include "lwip/inet.h"
+#include "lwip/ip.h"
+#include "lwip/ip_addr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct raw_pcb {
+/* Common members of all PCB types */
+ IP_PCB;
+
+ struct raw_pcb *next;
+
+ u8_t protocol;
+
+ /* receive callback function
+ * @param arg user supplied argument (raw_pcb.recv_arg)
+ * @param pcb the raw_pcb which received data
+ * @param p the packet buffer that was received
+ * @param addr the remote IP address from which the packet was received
+ * @return 1 if the packet was 'eaten' (aka. deleted),
+ * 0 if the packet lives on
+ * If returning 1, the callback is responsible for freeing the pbuf
+ * if it's not used any more.
+ */
+ u8_t (* recv)(void *arg, struct raw_pcb *pcb, struct pbuf *p,
+ struct ip_addr *addr);
+ /* user-supplied argument for the recv callback */
+ void *recv_arg;
+};
+
+/* The following functions is the application layer interface to the
+ RAW code. */
+struct raw_pcb * raw_new (u8_t proto);
+void raw_remove (struct raw_pcb *pcb);
+err_t raw_bind (struct raw_pcb *pcb, struct ip_addr *ipaddr);
+err_t raw_connect (struct raw_pcb *pcb, struct ip_addr *ipaddr);
+
+void raw_recv (struct raw_pcb *pcb,
+ u8_t (* recv)(void *arg, struct raw_pcb *pcb,
+ struct pbuf *p,
+ struct ip_addr *addr),
+ void *recv_arg);
+err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr);
+err_t raw_send (struct raw_pcb *pcb, struct pbuf *p);
+
+/* The following functions are the lower layer interface to RAW. */
+u8_t raw_input (struct pbuf *p, struct netif *inp);
+#define raw_init() /* Compatibility define, not init needed. */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_RAW */
+
+#endif /* __LWIP_RAW_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h
new file mode 100644
index 0000000..10eabcf
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h
@@ -0,0 +1,143 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ */
+
+/*
+ * This is the interface to the platform specific serial IO module
+ * It needs to be implemented by those platforms which need SLIP or PPP
+ */
+
+#ifndef __SIO_H__
+#define __SIO_H__
+
+#include "lwip/arch.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* If you want to define sio_fd_t elsewhere or differently,
+ define this in your cc.h file. */
+#ifndef __sio_fd_t_defined
+typedef void * sio_fd_t;
+#endif
+
+/* The following functions can be defined to something else in your cc.h file
+ or be implemented in your custom sio.c file. */
+
+#ifndef sio_open
+/**
+ * Opens a serial device for communication.
+ *
+ * @param devnum device number
+ * @return handle to serial device if successful, NULL otherwise
+ */
+sio_fd_t sio_open(u8_t devnum);
+#endif
+
+#ifndef sio_send
+/**
+ * Sends a single character to the serial device.
+ *
+ * @param c character to send
+ * @param fd serial device handle
+ *
+ * @note This function will block until the character can be sent.
+ */
+void sio_send(u8_t c, sio_fd_t fd);
+#endif
+
+#ifndef sio_recv
+/**
+ * Receives a single character from the serial device.
+ *
+ * @param fd serial device handle
+ *
+ * @note This function will block until a character is received.
+ */
+u8_t sio_recv(sio_fd_t fd);
+#endif
+
+#ifndef sio_read
+/**
+ * Reads from the serial device.
+ *
+ * @param fd serial device handle
+ * @param data pointer to data buffer for receiving
+ * @param len maximum length (in bytes) of data to receive
+ * @return number of bytes actually received - may be 0 if aborted by sio_read_abort
+ *
+ * @note This function will block until data can be received. The blocking
+ * can be cancelled by calling sio_read_abort().
+ */
+u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len);
+#endif
+
+#ifndef sio_tryread
+/**
+ * Tries to read from the serial device. Same as sio_read but returns
+ * immediately if no data is available and never blocks.
+ *
+ * @param fd serial device handle
+ * @param data pointer to data buffer for receiving
+ * @param len maximum length (in bytes) of data to receive
+ * @return number of bytes actually received
+ */
+u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len);
+#endif
+
+#ifndef sio_write
+/**
+ * Writes to the serial device.
+ *
+ * @param fd serial device handle
+ * @param data pointer to data to send
+ * @param len length (in bytes) of data to send
+ * @return number of bytes actually sent
+ *
+ * @note This function will block until all data can be sent.
+ */
+u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len);
+#endif
+
+#ifndef sio_read_abort
+/**
+ * Aborts a blocking sio_read() call.
+ *
+ * @param fd serial device handle
+ */
+void sio_read_abort(sio_fd_t fd);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SIO_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h
new file mode 100644
index 0000000..b87717f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h
@@ -0,0 +1,366 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001, 2002 Leon Woestenberg <leon woestenberg axon tv>
+ * Copyright (c) 2001, 2002 Axon Digital Design B.V., The Netherlands.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Leon Woestenberg <leon woestenberg axon tv>
+ *
+ */
+#ifndef __LWIP_SNMP_H__
+#define __LWIP_SNMP_H__
+
+#include "lwip/opt.h"
+#include "lwip/netif.h"
+#include "lwip/udp.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @see RFC1213, "MIB-II, 6. Definitions"
+ */
+enum snmp_ifType {
+ snmp_ifType_other=1, /* none of the following */
+ snmp_ifType_regular1822,
+ snmp_ifType_hdh1822,
+ snmp_ifType_ddn_x25,
+ snmp_ifType_rfc877_x25,
+ snmp_ifType_ethernet_csmacd,
+ snmp_ifType_iso88023_csmacd,
+ snmp_ifType_iso88024_tokenBus,
+ snmp_ifType_iso88025_tokenRing,
+ snmp_ifType_iso88026_man,
+ snmp_ifType_starLan,
+ snmp_ifType_proteon_10Mbit,
+ snmp_ifType_proteon_80Mbit,
+ snmp_ifType_hyperchannel,
+ snmp_ifType_fddi,
+ snmp_ifType_lapb,
+ snmp_ifType_sdlc,
+ snmp_ifType_ds1, /* T-1 */
+ snmp_ifType_e1, /* european equiv. of T-1 */
+ snmp_ifType_basicISDN,
+ snmp_ifType_primaryISDN, /* proprietary serial */
+ snmp_ifType_propPointToPointSerial,
+ snmp_ifType_ppp,
+ snmp_ifType_softwareLoopback,
+ snmp_ifType_eon, /* CLNP over IP [11] */
+ snmp_ifType_ethernet_3Mbit,
+ snmp_ifType_nsip, /* XNS over IP */
+ snmp_ifType_slip, /* generic SLIP */
+ snmp_ifType_ultra, /* ULTRA technologies */
+ snmp_ifType_ds3, /* T-3 */
+ snmp_ifType_sip, /* SMDS */
+ snmp_ifType_frame_relay
+};
+
+#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
+
+/** SNMP "sysuptime" Interval */
+#define SNMP_SYSUPTIME_INTERVAL 10
+
+/** fixed maximum length for object identifier type */
+#define LWIP_SNMP_OBJ_ID_LEN 32
+
+/** internal object identifier representation */
+struct snmp_obj_id
+{
+ u8_t len;
+ s32_t id[LWIP_SNMP_OBJ_ID_LEN];
+};
+
+/* system */
+void snmp_set_sysdesr(u8_t* str, u8_t* len);
+void snmp_set_sysobjid(struct snmp_obj_id *oid);
+void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid);
+void snmp_inc_sysuptime(void);
+void snmp_add_sysuptime(u32_t value);
+void snmp_get_sysuptime(u32_t *value);
+void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen);
+void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen);
+void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen);
+
+/* network interface */
+void snmp_add_ifinoctets(struct netif *ni, u32_t value);
+void snmp_inc_ifinucastpkts(struct netif *ni);
+void snmp_inc_ifinnucastpkts(struct netif *ni);
+void snmp_inc_ifindiscards(struct netif *ni);
+void snmp_add_ifoutoctets(struct netif *ni, u32_t value);
+void snmp_inc_ifoutucastpkts(struct netif *ni);
+void snmp_inc_ifoutnucastpkts(struct netif *ni);
+void snmp_inc_ifoutdiscards(struct netif *ni);
+void snmp_inc_iflist(void);
+void snmp_dec_iflist(void);
+
+/* ARP (for atTable and ipNetToMediaTable) */
+void snmp_insert_arpidx_tree(struct netif *ni, struct ip_addr *ip);
+void snmp_delete_arpidx_tree(struct netif *ni, struct ip_addr *ip);
+
+/* IP */
+void snmp_inc_ipinreceives(void);
+void snmp_inc_ipinhdrerrors(void);
+void snmp_inc_ipinaddrerrors(void);
+void snmp_inc_ipforwdatagrams(void);
+void snmp_inc_ipinunknownprotos(void);
+void snmp_inc_ipindiscards(void);
+void snmp_inc_ipindelivers(void);
+void snmp_inc_ipoutrequests(void);
+void snmp_inc_ipoutdiscards(void);
+void snmp_inc_ipoutnoroutes(void);
+void snmp_inc_ipreasmreqds(void);
+void snmp_inc_ipreasmoks(void);
+void snmp_inc_ipreasmfails(void);
+void snmp_inc_ipfragoks(void);
+void snmp_inc_ipfragfails(void);
+void snmp_inc_ipfragcreates(void);
+void snmp_inc_iproutingdiscards(void);
+void snmp_insert_ipaddridx_tree(struct netif *ni);
+void snmp_delete_ipaddridx_tree(struct netif *ni);
+void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni);
+void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni);
+
+/* ICMP */
+void snmp_inc_icmpinmsgs(void);
+void snmp_inc_icmpinerrors(void);
+void snmp_inc_icmpindestunreachs(void);
+void snmp_inc_icmpintimeexcds(void);
+void snmp_inc_icmpinparmprobs(void);
+void snmp_inc_icmpinsrcquenchs(void);
+void snmp_inc_icmpinredirects(void);
+void snmp_inc_icmpinechos(void);
+void snmp_inc_icmpinechoreps(void);
+void snmp_inc_icmpintimestamps(void);
+void snmp_inc_icmpintimestampreps(void);
+void snmp_inc_icmpinaddrmasks(void);
+void snmp_inc_icmpinaddrmaskreps(void);
+void snmp_inc_icmpoutmsgs(void);
+void snmp_inc_icmpouterrors(void);
+void snmp_inc_icmpoutdestunreachs(void);
+void snmp_inc_icmpouttimeexcds(void);
+void snmp_inc_icmpoutparmprobs(void);
+void snmp_inc_icmpoutsrcquenchs(void);
+void snmp_inc_icmpoutredirects(void);
+void snmp_inc_icmpoutechos(void);
+void snmp_inc_icmpoutechoreps(void);
+void snmp_inc_icmpouttimestamps(void);
+void snmp_inc_icmpouttimestampreps(void);
+void snmp_inc_icmpoutaddrmasks(void);
+void snmp_inc_icmpoutaddrmaskreps(void);
+
+/* TCP */
+void snmp_inc_tcpactiveopens(void);
+void snmp_inc_tcppassiveopens(void);
+void snmp_inc_tcpattemptfails(void);
+void snmp_inc_tcpestabresets(void);
+void snmp_inc_tcpinsegs(void);
+void snmp_inc_tcpoutsegs(void);
+void snmp_inc_tcpretranssegs(void);
+void snmp_inc_tcpinerrs(void);
+void snmp_inc_tcpoutrsts(void);
+
+/* UDP */
+void snmp_inc_udpindatagrams(void);
+void snmp_inc_udpnoports(void);
+void snmp_inc_udpinerrors(void);
+void snmp_inc_udpoutdatagrams(void);
+void snmp_insert_udpidx_tree(struct udp_pcb *pcb);
+void snmp_delete_udpidx_tree(struct udp_pcb *pcb);
+
+/* SNMP */
+void snmp_inc_snmpinpkts(void);
+void snmp_inc_snmpoutpkts(void);
+void snmp_inc_snmpinbadversions(void);
+void snmp_inc_snmpinbadcommunitynames(void);
+void snmp_inc_snmpinbadcommunityuses(void);
+void snmp_inc_snmpinasnparseerrs(void);
+void snmp_inc_snmpintoobigs(void);
+void snmp_inc_snmpinnosuchnames(void);
+void snmp_inc_snmpinbadvalues(void);
+void snmp_inc_snmpinreadonlys(void);
+void snmp_inc_snmpingenerrs(void);
+void snmp_add_snmpintotalreqvars(u8_t value);
+void snmp_add_snmpintotalsetvars(u8_t value);
+void snmp_inc_snmpingetrequests(void);
+void snmp_inc_snmpingetnexts(void);
+void snmp_inc_snmpinsetrequests(void);
+void snmp_inc_snmpingetresponses(void);
+void snmp_inc_snmpintraps(void);
+void snmp_inc_snmpouttoobigs(void);
+void snmp_inc_snmpoutnosuchnames(void);
+void snmp_inc_snmpoutbadvalues(void);
+void snmp_inc_snmpoutgenerrs(void);
+void snmp_inc_snmpoutgetrequests(void);
+void snmp_inc_snmpoutgetnexts(void);
+void snmp_inc_snmpoutsetrequests(void);
+void snmp_inc_snmpoutgetresponses(void);
+void snmp_inc_snmpouttraps(void);
+void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid);
+void snmp_set_snmpenableauthentraps(u8_t *value);
+void snmp_get_snmpenableauthentraps(u8_t *value);
+
+/* LWIP_SNMP support not available */
+/* define everything to be empty */
+#else
+
+/* system */
+#define snmp_set_sysdesr(str, len)
+#define snmp_set_sysobjid(oid);
+#define snmp_get_sysobjid_ptr(oid)
+#define snmp_inc_sysuptime()
+#define snmp_add_sysuptime(value)
+#define snmp_get_sysuptime(value)
+#define snmp_set_syscontact(ocstr, ocstrlen);
+#define snmp_set_sysname(ocstr, ocstrlen);
+#define snmp_set_syslocation(ocstr, ocstrlen);
+
+/* network interface */
+#define snmp_add_ifinoctets(ni,value)
+#define snmp_inc_ifinucastpkts(ni)
+#define snmp_inc_ifinnucastpkts(ni)
+#define snmp_inc_ifindiscards(ni)
+#define snmp_add_ifoutoctets(ni,value)
+#define snmp_inc_ifoutucastpkts(ni)
+#define snmp_inc_ifoutnucastpkts(ni)
+#define snmp_inc_ifoutdiscards(ni)
+#define snmp_inc_iflist()
+#define snmp_dec_iflist()
+
+/* ARP */
+#define snmp_insert_arpidx_tree(ni,ip)
+#define snmp_delete_arpidx_tree(ni,ip)
+
+/* IP */
+#define snmp_inc_ipinreceives()
+#define snmp_inc_ipinhdrerrors()
+#define snmp_inc_ipinaddrerrors()
+#define snmp_inc_ipforwdatagrams()
+#define snmp_inc_ipinunknownprotos()
+#define snmp_inc_ipindiscards()
+#define snmp_inc_ipindelivers()
+#define snmp_inc_ipoutrequests()
+#define snmp_inc_ipoutdiscards()
+#define snmp_inc_ipoutnoroutes()
+#define snmp_inc_ipreasmreqds()
+#define snmp_inc_ipreasmoks()
+#define snmp_inc_ipreasmfails()
+#define snmp_inc_ipfragoks()
+#define snmp_inc_ipfragfails()
+#define snmp_inc_ipfragcreates()
+#define snmp_inc_iproutingdiscards()
+#define snmp_insert_ipaddridx_tree(ni)
+#define snmp_delete_ipaddridx_tree(ni)
+#define snmp_insert_iprteidx_tree(dflt, ni)
+#define snmp_delete_iprteidx_tree(dflt, ni)
+
+/* ICMP */
+#define snmp_inc_icmpinmsgs()
+#define snmp_inc_icmpinerrors()
+#define snmp_inc_icmpindestunreachs()
+#define snmp_inc_icmpintimeexcds()
+#define snmp_inc_icmpinparmprobs()
+#define snmp_inc_icmpinsrcquenchs()
+#define snmp_inc_icmpinredirects()
+#define snmp_inc_icmpinechos()
+#define snmp_inc_icmpinechoreps()
+#define snmp_inc_icmpintimestamps()
+#define snmp_inc_icmpintimestampreps()
+#define snmp_inc_icmpinaddrmasks()
+#define snmp_inc_icmpinaddrmaskreps()
+#define snmp_inc_icmpoutmsgs()
+#define snmp_inc_icmpouterrors()
+#define snmp_inc_icmpoutdestunreachs()
+#define snmp_inc_icmpouttimeexcds()
+#define snmp_inc_icmpoutparmprobs()
+#define snmp_inc_icmpoutsrcquenchs()
+#define snmp_inc_icmpoutredirects()
+#define snmp_inc_icmpoutechos()
+#define snmp_inc_icmpoutechoreps()
+#define snmp_inc_icmpouttimestamps()
+#define snmp_inc_icmpouttimestampreps()
+#define snmp_inc_icmpoutaddrmasks()
+#define snmp_inc_icmpoutaddrmaskreps()
+/* TCP */
+#define snmp_inc_tcpactiveopens()
+#define snmp_inc_tcppassiveopens()
+#define snmp_inc_tcpattemptfails()
+#define snmp_inc_tcpestabresets()
+#define snmp_inc_tcpinsegs()
+#define snmp_inc_tcpoutsegs()
+#define snmp_inc_tcpretranssegs()
+#define snmp_inc_tcpinerrs()
+#define snmp_inc_tcpoutrsts()
+
+/* UDP */
+#define snmp_inc_udpindatagrams()
+#define snmp_inc_udpnoports()
+#define snmp_inc_udpinerrors()
+#define snmp_inc_udpoutdatagrams()
+#define snmp_insert_udpidx_tree(pcb)
+#define snmp_delete_udpidx_tree(pcb)
+
+/* SNMP */
+#define snmp_inc_snmpinpkts()
+#define snmp_inc_snmpoutpkts()
+#define snmp_inc_snmpinbadversions()
+#define snmp_inc_snmpinbadcommunitynames()
+#define snmp_inc_snmpinbadcommunityuses()
+#define snmp_inc_snmpinasnparseerrs()
+#define snmp_inc_snmpintoobigs()
+#define snmp_inc_snmpinnosuchnames()
+#define snmp_inc_snmpinbadvalues()
+#define snmp_inc_snmpinreadonlys()
+#define snmp_inc_snmpingenerrs()
+#define snmp_add_snmpintotalreqvars(value)
+#define snmp_add_snmpintotalsetvars(value)
+#define snmp_inc_snmpingetrequests()
+#define snmp_inc_snmpingetnexts()
+#define snmp_inc_snmpinsetrequests()
+#define snmp_inc_snmpingetresponses()
+#define snmp_inc_snmpintraps()
+#define snmp_inc_snmpouttoobigs()
+#define snmp_inc_snmpoutnosuchnames()
+#define snmp_inc_snmpoutbadvalues()
+#define snmp_inc_snmpoutgenerrs()
+#define snmp_inc_snmpoutgetrequests()
+#define snmp_inc_snmpoutgetnexts()
+#define snmp_inc_snmpoutsetrequests()
+#define snmp_inc_snmpoutgetresponses()
+#define snmp_inc_snmpouttraps()
+#define snmp_get_snmpgrpid_ptr(oid)
+#define snmp_set_snmpenableauthentraps(value)
+#define snmp_get_snmpenableauthentraps(value)
+
+#endif /* LWIP_SNMP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_SNMP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h
new file mode 100644
index 0000000..a40d5ef
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h
@@ -0,0 +1,103 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Abstract Syntax Notation One (ISO 8824, 8825) codec.
+ */
+
+/*
+ * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+ *
+ * Author: Christiaan Simons <christiaan simons axon tv>
+ */
+
+#ifndef __LWIP_SNMP_ASN1_H__
+#define __LWIP_SNMP_ASN1_H__
+
+#include "lwip/opt.h"
+#include "lwip/err.h"
+#include "lwip/pbuf.h"
+#include "lwip/snmp.h"
+
+#if LWIP_SNMP
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SNMP_ASN1_UNIV (!0x80 | !0x40)
+#define SNMP_ASN1_APPLIC (!0x80 | 0x40)
+#define SNMP_ASN1_CONTXT ( 0x80 | !0x40)
+
+#define SNMP_ASN1_CONSTR (0x20)
+#define SNMP_ASN1_PRIMIT (!0x20)
+
+/* universal tags */
+#define SNMP_ASN1_INTEG 2
+#define SNMP_ASN1_OC_STR 4
+#define SNMP_ASN1_NUL 5
+#define SNMP_ASN1_OBJ_ID 6
+#define SNMP_ASN1_SEQ 16
+
+/* application specific (SNMP) tags */
+#define SNMP_ASN1_IPADDR 0 /* octet string size(4) */
+#define SNMP_ASN1_COUNTER 1 /* u32_t */
+#define SNMP_ASN1_GAUGE 2 /* u32_t */
+#define SNMP_ASN1_TIMETICKS 3 /* u32_t */
+#define SNMP_ASN1_OPAQUE 4 /* octet string */
+
+/* context specific (SNMP) tags */
+#define SNMP_ASN1_PDU_GET_REQ 0
+#define SNMP_ASN1_PDU_GET_NEXT_REQ 1
+#define SNMP_ASN1_PDU_GET_RESP 2
+#define SNMP_ASN1_PDU_SET_REQ 3
+#define SNMP_ASN1_PDU_TRAP 4
+
+err_t snmp_asn1_dec_type(struct pbuf *p, u16_t ofs, u8_t *type);
+err_t snmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length);
+err_t snmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value);
+err_t snmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value);
+err_t snmp_asn1_dec_oid(struct pbuf *p, u16_t ofs, u16_t len, struct snmp_obj_id *oid);
+err_t snmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw);
+
+void snmp_asn1_enc_length_cnt(u16_t length, u8_t *octets_needed);
+void snmp_asn1_enc_u32t_cnt(u32_t value, u16_t *octets_needed);
+void snmp_asn1_enc_s32t_cnt(s32_t value, u16_t *octets_needed);
+void snmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed);
+err_t snmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type);
+err_t snmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length);
+err_t snmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u8_t octets_needed, u32_t value);
+err_t snmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u8_t octets_needed, s32_t value);
+err_t snmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident);
+err_t snmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u8_t raw_len, u8_t *raw);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_SNMP */
+
+#endif /* __LWIP_SNMP_ASN1_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h
new file mode 100644
index 0000000..6e50a61
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h
@@ -0,0 +1,313 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * SNMP Agent message handling structures.
+ */
+
+/*
+ * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+ *
+ * Author: Christiaan Simons <christiaan simons axon tv>
+ */
+
+#ifndef __LWIP_SNMP_MSG_H__
+#define __LWIP_SNMP_MSG_H__
+
+#include "lwip/opt.h"
+#include "lwip/snmp.h"
+#include "lwip/snmp_structs.h"
+
+#if LWIP_SNMP
+
+#if SNMP_PRIVATE_MIB
+#include "private_mib.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The listen port of the SNMP agent. Clients have to make their requests to
+ this port. Most standard clients won't work if you change this! */
+#ifndef SNMP_IN_PORT
+#define SNMP_IN_PORT 161
+#endif
+/* The remote port the SNMP agent sends traps to. Most standard trap sinks won't
+ work if you change this! */
+#ifndef SNMP_TRAP_PORT
+#define SNMP_TRAP_PORT 162
+#endif
+
+#define SNMP_ES_NOERROR 0
+#define SNMP_ES_TOOBIG 1
+#define SNMP_ES_NOSUCHNAME 2
+#define SNMP_ES_BADVALUE 3
+#define SNMP_ES_READONLY 4
+#define SNMP_ES_GENERROR 5
+
+#define SNMP_GENTRAP_COLDSTART 0
+#define SNMP_GENTRAP_WARMSTART 1
+#define SNMP_GENTRAP_AUTHFAIL 4
+#define SNMP_GENTRAP_ENTERPRISESPC 6
+
+struct snmp_varbind
+{
+ /* next pointer, NULL for last in list */
+ struct snmp_varbind *next;
+ /* previous pointer, NULL for first in list */
+ struct snmp_varbind *prev;
+
+ /* object identifier length (in s32_t) */
+ u8_t ident_len;
+ /* object identifier array */
+ s32_t *ident;
+
+ /* object value ASN1 type */
+ u8_t value_type;
+ /* object value length (in u8_t) */
+ u8_t value_len;
+ /* object value */
+ void *value;
+
+ /* encoding varbind seq length length */
+ u8_t seqlenlen;
+ /* encoding object identifier length length */
+ u8_t olenlen;
+ /* encoding object value length length */
+ u8_t vlenlen;
+ /* encoding varbind seq length */
+ u16_t seqlen;
+ /* encoding object identifier length */
+ u16_t olen;
+ /* encoding object value length */
+ u16_t vlen;
+};
+
+struct snmp_varbind_root
+{
+ struct snmp_varbind *head;
+ struct snmp_varbind *tail;
+ /* number of variable bindings in list */
+ u8_t count;
+ /* encoding varbind-list seq length length */
+ u8_t seqlenlen;
+ /* encoding varbind-list seq length */
+ u16_t seqlen;
+};
+
+/** output response message header length fields */
+struct snmp_resp_header_lengths
+{
+ /* encoding error-index length length */
+ u8_t erridxlenlen;
+ /* encoding error-status length length */
+ u8_t errstatlenlen;
+ /* encoding request id length length */
+ u8_t ridlenlen;
+ /* encoding pdu length length */
+ u8_t pdulenlen;
+ /* encoding community length length */
+ u8_t comlenlen;
+ /* encoding version length length */
+ u8_t verlenlen;
+ /* encoding sequence length length */
+ u8_t seqlenlen;
+
+ /* encoding error-index length */
+ u16_t erridxlen;
+ /* encoding error-status length */
+ u16_t errstatlen;
+ /* encoding request id length */
+ u16_t ridlen;
+ /* encoding pdu length */
+ u16_t pdulen;
+ /* encoding community length */
+ u16_t comlen;
+ /* encoding version length */
+ u16_t verlen;
+ /* encoding sequence length */
+ u16_t seqlen;
+};
+
+/** output response message header length fields */
+struct snmp_trap_header_lengths
+{
+ /* encoding timestamp length length */
+ u8_t tslenlen;
+ /* encoding specific-trap length length */
+ u8_t strplenlen;
+ /* encoding generic-trap length length */
+ u8_t gtrplenlen;
+ /* encoding agent-addr length length */
+ u8_t aaddrlenlen;
+ /* encoding enterprise-id length length */
+ u8_t eidlenlen;
+ /* encoding pdu length length */
+ u8_t pdulenlen;
+ /* encoding community length length */
+ u8_t comlenlen;
+ /* encoding version length length */
+ u8_t verlenlen;
+ /* encoding sequence length length */
+ u8_t seqlenlen;
+
+ /* encoding timestamp length */
+ u16_t tslen;
+ /* encoding specific-trap length */
+ u16_t strplen;
+ /* encoding generic-trap length */
+ u16_t gtrplen;
+ /* encoding agent-addr length */
+ u16_t aaddrlen;
+ /* encoding enterprise-id length */
+ u16_t eidlen;
+ /* encoding pdu length */
+ u16_t pdulen;
+ /* encoding community length */
+ u16_t comlen;
+ /* encoding version length */
+ u16_t verlen;
+ /* encoding sequence length */
+ u16_t seqlen;
+};
+
+/* Accepting new SNMP messages. */
+#define SNMP_MSG_EMPTY 0
+/* Search for matching object for variable binding. */
+#define SNMP_MSG_SEARCH_OBJ 1
+/* Perform SNMP operation on in-memory object.
+ Pass-through states, for symmetry only. */
+#define SNMP_MSG_INTERNAL_GET_OBJDEF 2
+#define SNMP_MSG_INTERNAL_GET_VALUE 3
+#define SNMP_MSG_INTERNAL_SET_TEST 4
+#define SNMP_MSG_INTERNAL_GET_OBJDEF_S 5
+#define SNMP_MSG_INTERNAL_SET_VALUE 6
+/* Perform SNMP operation on object located externally.
+ In theory this could be used for building a proxy agent.
+ Practical use is for an enterprise spc. app. gateway. */
+#define SNMP_MSG_EXTERNAL_GET_OBJDEF 7
+#define SNMP_MSG_EXTERNAL_GET_VALUE 8
+#define SNMP_MSG_EXTERNAL_SET_TEST 9
+#define SNMP_MSG_EXTERNAL_GET_OBJDEF_S 10
+#define SNMP_MSG_EXTERNAL_SET_VALUE 11
+
+#define SNMP_COMMUNITY_STR_LEN 64
+struct snmp_msg_pstat
+{
+ /* lwIP local port (161) binding */
+ struct udp_pcb *pcb;
+ /* source IP address */
+ struct ip_addr sip;
+ /* source UDP port */
+ u16_t sp;
+ /* request type */
+ u8_t rt;
+ /* request ID */
+ s32_t rid;
+ /* error status */
+ s32_t error_status;
+ /* error index */
+ s32_t error_index;
+ /* community name (zero terminated) */
+ u8_t community[SNMP_COMMUNITY_STR_LEN + 1];
+ /* community string length (exclusive zero term) */
+ u8_t com_strlen;
+ /* one out of MSG_EMPTY, MSG_DEMUX, MSG_INTERNAL, MSG_EXTERNAL_x */
+ u8_t state;
+ /* saved arguments for MSG_EXTERNAL_x */
+ struct mib_external_node *ext_mib_node;
+ struct snmp_name_ptr ext_name_ptr;
+ struct obj_def ext_object_def;
+ struct snmp_obj_id ext_oid;
+ /* index into input variable binding list */
+ u8_t vb_idx;
+ /* ptr into input variable binding list */
+ struct snmp_varbind *vb_ptr;
+ /* list of variable bindings from input */
+ struct snmp_varbind_root invb;
+ /* list of variable bindings to output */
+ struct snmp_varbind_root outvb;
+ /* output response lengths used in ASN encoding */
+ struct snmp_resp_header_lengths rhl;
+};
+
+struct snmp_msg_trap
+{
+ /* lwIP local port (161) binding */
+ struct udp_pcb *pcb;
+ /* destination IP address in network order */
+ struct ip_addr dip;
+
+ /* source enterprise ID (sysObjectID) */
+ struct snmp_obj_id *enterprise;
+ /* source IP address, raw network order format */
+ u8_t sip_raw[4];
+ /* generic trap code */
+ u32_t gen_trap;
+ /* specific trap code */
+ u32_t spc_trap;
+ /* timestamp */
+ u32_t ts;
+ /* list of variable bindings to output */
+ struct snmp_varbind_root outvb;
+ /* output trap lengths used in ASN encoding */
+ struct snmp_trap_header_lengths thl;
+};
+
+/** Agent Version constant, 0 = v1 oddity */
+extern const s32_t snmp_version;
+/** Agent default "public" community string */
+extern const char snmp_publiccommunity[7];
+
+extern struct snmp_msg_trap trap_msg;
+
+/** Agent setup, start listening to port 161. */
+void snmp_init(void);
+void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable);
+void snmp_trap_dst_ip_set(u8_t dst_idx, struct ip_addr *dst);
+
+/** Varbind-list functions. */
+struct snmp_varbind* snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len);
+void snmp_varbind_free(struct snmp_varbind *vb);
+void snmp_varbind_list_free(struct snmp_varbind_root *root);
+void snmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb);
+struct snmp_varbind* snmp_varbind_tail_remove(struct snmp_varbind_root *root);
+
+/** Handle an internal (recv) or external (private response) event. */
+void snmp_msg_event(u8_t request_id);
+err_t snmp_send_response(struct snmp_msg_pstat *m_stat);
+err_t snmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap);
+void snmp_coldstart_trap(void);
+void snmp_authfail_trap(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_SNMP */
+
+#endif /* __LWIP_SNMP_MSG_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h
new file mode 100644
index 0000000..93f4ea3
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h
@@ -0,0 +1,264 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Generic MIB tree structures.
+ *
+ * @todo namespace prefixes
+ */
+
+/*
+ * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+ *
+ * Author: Christiaan Simons <christiaan simons axon tv>
+ */
+
+#ifndef __LWIP_SNMP_STRUCTS_H__
+#define __LWIP_SNMP_STRUCTS_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/snmp.h"
+
+#if SNMP_PRIVATE_MIB
+#include "private_mib.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MIB object instance */
+#define MIB_OBJECT_NONE 0
+#define MIB_OBJECT_SCALAR 1
+#define MIB_OBJECT_TAB 2
+
+/* MIB object access */
+#define MIB_OBJECT_READ_ONLY 0
+#define MIB_OBJECT_READ_WRITE 1
+#define MIB_OBJECT_WRITE_ONLY 2
+#define MIB_OBJECT_NOT_ACCESSIBLE 3
+
+/** object definition returned by (get_object_def)() */
+struct obj_def
+{
+ /* MIB_OBJECT_NONE (0), MIB_OBJECT_SCALAR (1), MIB_OBJECT_TAB (2) */
+ u8_t instance;
+ /* 0 read-only, 1 read-write, 2 write-only, 3 not-accessible */
+ u8_t access;
+ /* ASN type for this object */
+ u8_t asn_type;
+ /* value length (host length) */
+ u16_t v_len;
+ /* length of instance part of supplied object identifier */
+ u8_t id_inst_len;
+ /* instance part of supplied object identifier */
+ s32_t *id_inst_ptr;
+};
+
+struct snmp_name_ptr
+{
+ u8_t ident_len;
+ s32_t *ident;
+};
+
+/** MIB const scalar (.0) node */
+#define MIB_NODE_SC 0x01
+/** MIB const array node */
+#define MIB_NODE_AR 0x02
+/** MIB array node (mem_malloced from RAM) */
+#define MIB_NODE_RA 0x03
+/** MIB list root node (mem_malloced from RAM) */
+#define MIB_NODE_LR 0x04
+/** MIB node for external objects */
+#define MIB_NODE_EX 0x05
+
+/** node "base class" layout, the mandatory fields for a node */
+struct mib_node
+{
+ /** returns struct obj_def for the given object identifier */
+ void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
+ /** returns object value for the given object identifier,
+ @note the caller must allocate at least len bytes for the value */
+ void (*get_value)(struct obj_def *od, u16_t len, void *value);
+ /** tests length and/or range BEFORE setting */
+ u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
+ /** sets object value, only to be called when set_test() */
+ void (*set_value)(struct obj_def *od, u16_t len, void *value);
+ /** One out of MIB_NODE_AR, MIB_NODE_LR or MIB_NODE_EX */
+ const u8_t node_type;
+ /* array or max list length */
+ const u16_t maxlength;
+};
+
+/** derived node for scalars .0 index */
+typedef struct mib_node mib_scalar_node;
+
+/** derived node, points to a fixed size const array
+ of sub-identifiers plus a 'child' pointer */
+struct mib_array_node
+{
+ /* inherited "base class" members */
+ void (* const get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
+ void (* const get_value)(struct obj_def *od, u16_t len, void *value);
+ u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
+ void (*set_value)(struct obj_def *od, u16_t len, void *value);
+
+ const u8_t node_type;
+ const u16_t maxlength;
+
+ /* aditional struct members */
+ const s32_t *objid;
+ struct mib_node* const *nptr;
+};
+
+/** derived node, points to a fixed size mem_malloced array
+ of sub-identifiers plus a 'child' pointer */
+struct mib_ram_array_node
+{
+ /* inherited "base class" members */
+ void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
+ void (*get_value)(struct obj_def *od, u16_t len, void *value);
+ u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
+ void (*set_value)(struct obj_def *od, u16_t len, void *value);
+
+ u8_t node_type;
+ u16_t maxlength;
+
+ /* aditional struct members */
+ s32_t *objid;
+ struct mib_node **nptr;
+};
+
+struct mib_list_node
+{
+ struct mib_list_node *prev;
+ struct mib_list_node *next;
+ s32_t objid;
+ struct mib_node *nptr;
+};
+
+/** derived node, points to a doubly linked list
+ of sub-identifiers plus a 'child' pointer */
+struct mib_list_rootnode
+{
+ /* inherited "base class" members */
+ void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
+ void (*get_value)(struct obj_def *od, u16_t len, void *value);
+ u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
+ void (*set_value)(struct obj_def *od, u16_t len, void *value);
+
+ u8_t node_type;
+ u16_t maxlength;
+
+ /* aditional struct members */
+ struct mib_list_node *head;
+ struct mib_list_node *tail;
+ /* counts list nodes in list */
+ u16_t count;
+};
+
+/** derived node, has access functions for mib object in external memory or device
+ using 'tree_level' and 'idx', with a range 0 .. (level_length() - 1) */
+struct mib_external_node
+{
+ /* inherited "base class" members */
+ void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
+ void (*get_value)(struct obj_def *od, u16_t len, void *value);
+ u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
+ void (*set_value)(struct obj_def *od, u16_t len, void *value);
+
+ u8_t node_type;
+ u16_t maxlength;
+
+ /* aditional struct members */
+ /** points to an extenal (in memory) record of some sort of addressing
+ information, passed to and interpreted by the funtions below */
+ void* addr_inf;
+ /** tree levels under this node */
+ u8_t tree_levels;
+ /** number of objects at this level */
+ u16_t (*level_length)(void* addr_inf, u8_t level);
+ /** compares object sub identifier with external id
+ return zero when equal, nonzero when unequal */
+ s32_t (*ident_cmp)(void* addr_inf, u8_t level, u16_t idx, s32_t sub_id);
+ void (*get_objid)(void* addr_inf, u8_t level, u16_t idx, s32_t *sub_id);
+
+ /** async Questions */
+ void (*get_object_def_q)(void* addr_inf, u8_t rid, u8_t ident_len, s32_t *ident);
+ void (*get_value_q)(u8_t rid, struct obj_def *od);
+ void (*set_test_q)(u8_t rid, struct obj_def *od);
+ void (*set_value_q)(u8_t rid, struct obj_def *od, u16_t len, void *value);
+ /** async Answers */
+ void (*get_object_def_a)(u8_t rid, u8_t ident_len, s32_t *ident, struct obj_def *od);
+ void (*get_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value);
+ u8_t (*set_test_a)(u8_t rid, struct obj_def *od, u16_t len, void *value);
+ void (*set_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value);
+ /** async Panic Close (agent returns error reply,
+ e.g. used for external transaction cleanup) */
+ void (*get_object_def_pc)(u8_t rid, u8_t ident_len, s32_t *ident);
+ void (*get_value_pc)(u8_t rid, struct obj_def *od);
+ void (*set_test_pc)(u8_t rid, struct obj_def *od);
+ void (*set_value_pc)(u8_t rid, struct obj_def *od);
+};
+
+/** export MIB tree from mib2.c */
+extern const struct mib_array_node internet;
+
+/** dummy function pointers for non-leaf MIB nodes from mib2.c */
+void noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
+void noleafs_get_value(struct obj_def *od, u16_t len, void *value);
+u8_t noleafs_set_test(struct obj_def *od, u16_t len, void *value);
+void noleafs_set_value(struct obj_def *od, u16_t len, void *value);
+
+void snmp_oidtoip(s32_t *ident, struct ip_addr *ip);
+void snmp_iptooid(struct ip_addr *ip, s32_t *ident);
+void snmp_ifindextonetif(s32_t ifindex, struct netif **netif);
+void snmp_netiftoifindex(struct netif *netif, s32_t *ifidx);
+
+struct mib_list_node* snmp_mib_ln_alloc(s32_t id);
+void snmp_mib_ln_free(struct mib_list_node *ln);
+struct mib_list_rootnode* snmp_mib_lrn_alloc(void);
+void snmp_mib_lrn_free(struct mib_list_rootnode *lrn);
+
+s8_t snmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn);
+s8_t snmp_mib_node_find(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **fn);
+struct mib_list_rootnode *snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n);
+
+struct mib_node* snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np);
+struct mib_node* snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret);
+u8_t snmp_iso_prefix_tst(u8_t ident_len, s32_t *ident);
+u8_t snmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_SNMP */
+
+#endif /* __LWIP_SNMP_STRUCTS_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h
new file mode 100644
index 0000000..675c1f7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h
@@ -0,0 +1,359 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+
+#ifndef __LWIP_SOCKETS_H__
+#define __LWIP_SOCKETS_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
+
+#include <stddef.h> /* for size_t */
+
+#include "lwip/ip_addr.h"
+#include "lwip/inet.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* members are in network byte order */
+struct sockaddr_in {
+ u8_t sin_len;
+ u8_t sin_family;
+ u16_t sin_port;
+ struct in_addr sin_addr;
+ char sin_zero[8];
+};
+
+struct sockaddr {
+ u8_t sa_len;
+ u8_t sa_family;
+ char sa_data[14];
+};
+
+#ifndef socklen_t
+# define socklen_t u32_t
+#endif
+
+/* Socket protocol types (TCP/UDP/RAW) */
+#define SOCK_STREAM 1
+#define SOCK_DGRAM 2
+#define SOCK_RAW 3
+
+/*
+ * Option flags per-socket. These must match the SOF_ flags in ip.h!
+ */
+#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info recording */
+#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
+#define SO_REUSEADDR 0x0004 /* Unimplemented: allow local address reuse */
+#define SO_KEEPALIVE 0x0008 /* keep connections alive */
+#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface addresses */
+#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */
+#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */
+#define SO_LINGER 0x0080 /* linger on close if data present */
+#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data in line */
+#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */
+
+#define SO_DONTLINGER ((int)(~SO_LINGER))
+
+/*
+ * Additional options, not kept in so_options.
+ */
+#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */
+#define SO_RCVBUF 0x1002 /* receive buffer size */
+#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */
+#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */
+#define SO_SNDTIMEO 0x1005 /* Unimplemented: send timeout */
+#define SO_RCVTIMEO 0x1006 /* receive timeout */
+#define SO_ERROR 0x1007 /* get error status and clear */
+#define SO_TYPE 0x1008 /* get socket type */
+#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */
+#define SO_NO_CHECK 0x100a /* don't create UDP checksum */
+
+
+/*
+ * Structure used for manipulating linger option.
+ */
+struct linger {
+ int l_onoff; /* option on/off */
+ int l_linger; /* linger time */
+};
+
+/*
+ * Level number for (get/set)sockopt() to apply to socket itself.
+ */
+#define SOL_SOCKET 0xfff /* options for socket level */
+
+
+#define AF_UNSPEC 0
+#define AF_INET 2
+#define PF_INET AF_INET
+#define PF_UNSPEC AF_UNSPEC
+
+#define IPPROTO_IP 0
+#define IPPROTO_TCP 6
+#define IPPROTO_UDP 17
+#define IPPROTO_UDPLITE 136
+
+/* Flags we can use with send and recv. */
+#define MSG_PEEK 0x01 /* Peeks at an incoming message */
+#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */
+#define MSG_OOB 0x04 /* Unimplemented: Requests out-of-band data. The significance and semantics of out-of-band data are protocol-specific */
+#define MSG_DONTWAIT 0x08 /* Nonblocking i/o for this operation only */
+#define MSG_MORE 0x10 /* Sender will send more */
+
+
+/*
+ * Options for level IPPROTO_IP
+ */
+#define IP_TOS 1
+#define IP_TTL 2
+
+#if LWIP_TCP
+/*
+ * Options for level IPPROTO_TCP
+ */
+#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
+#define TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */
+#define TCP_KEEPIDLE 0x03 /* set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */
+#define TCP_KEEPINTVL 0x04 /* set pcb->keep_intvl - Use seconds for get/setsockopt */
+#define TCP_KEEPCNT 0x05 /* set pcb->keep_cnt - Use number of probes sent for get/setsockopt */
+#endif /* LWIP_TCP */
+
+#if LWIP_UDP && LWIP_UDPLITE
+/*
+ * Options for level IPPROTO_UDPLITE
+ */
+#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */
+#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */
+#endif /* LWIP_UDP && LWIP_UDPLITE*/
+
+
+#if LWIP_IGMP
+/*
+ * Options and types for UDP multicast traffic handling
+ */
+#define IP_ADD_MEMBERSHIP 3
+#define IP_DROP_MEMBERSHIP 4
+#define IP_MULTICAST_TTL 5
+#define IP_MULTICAST_IF 6
+#define IP_MULTICAST_LOOP 7
+
+typedef struct ip_mreq {
+ struct in_addr imr_multiaddr; /* IP multicast address of group */
+ struct in_addr imr_interface; /* local IP address of interface */
+} ip_mreq;
+#endif /* LWIP_IGMP */
+
+/*
+ * The Type of Service provides an indication of the abstract
+ * parameters of the quality of service desired. These parameters are
+ * to be used to guide the selection of the actual service parameters
+ * when transmitting a datagram through a particular network. Several
+ * networks offer service precedence, which somehow treats high
+ * precedence traffic as more important than other traffic (generally
+ * by accepting only traffic above a certain precedence at time of high
+ * load). The major choice is a three way tradeoff between low-delay,
+ * high-reliability, and high-throughput.
+ * The use of the Delay, Throughput, and Reliability indications may
+ * increase the cost (in some sense) of the service. In many networks
+ * better performance for one of these parameters is coupled with worse
+ * performance on another. Except for very unusual cases at most two
+ * of these three indications should be set.
+ */
+#define IPTOS_TOS_MASK 0x1E
+#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK)
+#define IPTOS_LOWDELAY 0x10
+#define IPTOS_THROUGHPUT 0x08
+#define IPTOS_RELIABILITY 0x04
+#define IPTOS_LOWCOST 0x02
+#define IPTOS_MINCOST IPTOS_LOWCOST
+
+/*
+ * The Network Control precedence designation is intended to be used
+ * within a network only. The actual use and control of that
+ * designation is up to each network. The Internetwork Control
+ * designation is intended for use by gateway control originators only.
+ * If the actual use of these precedence designations is of concern to
+ * a particular network, it is the responsibility of that network to
+ * control the access to, and use of, those precedence designations.
+ */
+#define IPTOS_PREC_MASK 0xe0
+#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK)
+#define IPTOS_PREC_NETCONTROL 0xe0
+#define IPTOS_PREC_INTERNETCONTROL 0xc0
+#define IPTOS_PREC_CRITIC_ECP 0xa0
+#define IPTOS_PREC_FLASHOVERRIDE 0x80
+#define IPTOS_PREC_FLASH 0x60
+#define IPTOS_PREC_IMMEDIATE 0x40
+#define IPTOS_PREC_PRIORITY 0x20
+#define IPTOS_PREC_ROUTINE 0x00
+
+
+/*
+ * Commands for ioctlsocket(), taken from the BSD file fcntl.h.
+ * lwip_ioctl only supports FIONREAD and FIONBIO, for now
+ *
+ * Ioctl's have the command encoded in the lower word,
+ * and the size of any in or out parameters in the upper
+ * word. The high 2 bits of the upper word are used
+ * to encode the in/out status of the parameter; for now
+ * we restrict parameters to at most 128 bytes.
+ */
+#if !defined(FIONREAD) || !defined(FIONBIO)
+#define IOCPARM_MASK 0x7fU /* parameters must be < 128 bytes */
+#define IOC_VOID 0x20000000UL /* no parameters */
+#define IOC_OUT 0x40000000UL /* copy out parameters */
+#define IOC_IN 0x80000000UL /* copy in parameters */
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+ /* 0x20000000 distinguishes new &
+ old ioctl's */
+#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
+
+#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#endif /* !defined(FIONREAD) || !defined(FIONBIO) */
+
+#ifndef FIONREAD
+#define FIONREAD _IOR('f', 127, unsigned long) /* get # bytes to read */
+#endif
+#ifndef FIONBIO
+#define FIONBIO _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */
+#endif
+
+/* Socket I/O Controls: unimplemented */
+#ifndef SIOCSHIWAT
+#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */
+#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */
+#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */
+#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */
+#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */
+#endif
+
+/* Socket flags: */
+#ifndef O_NONBLOCK
+#define O_NONBLOCK 04000U
+#endif
+
+/* FD_SET used for lwip_select */
+#ifndef FD_SET
+ #undef FD_SETSIZE
+ /* Make FD_SETSIZE match NUM_SOCKETS in socket.c */
+ #define FD_SETSIZE MEMP_NUM_NETCONN
+ #define FD_SET(n, p) ((p)->fd_bits[(n)/8] |= (1 << ((n) & 7)))
+ #define FD_CLR(n, p) ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7)))
+ #define FD_ISSET(n,p) ((p)->fd_bits[(n)/8] & (1 << ((n) & 7)))
+ #define FD_ZERO(p) memset((void*)(p),0,sizeof(*(p)))
+
+ typedef struct fd_set {
+ unsigned char fd_bits [(FD_SETSIZE+7)/8];
+ } fd_set;
+
+#endif /* FD_SET */
+
+/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided
+ * by your system, set this to 0 and include <sys/time.h> in cc.h */
+#ifndef LWIP_TIMEVAL_PRIVATE
+#define LWIP_TIMEVAL_PRIVATE 1
+#endif
+
+#if LWIP_TIMEVAL_PRIVATE
+struct timeval {
+ long tv_sec; /* seconds */
+ long tv_usec; /* and microseconds */
+};
+#endif /* LWIP_TIMEVAL_PRIVATE */
+
+void lwip_socket_init(void);
+
+int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
+int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen);
+int lwip_shutdown(int s, int how);
+int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen);
+int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen);
+int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);
+int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);
+int lwip_close(int s);
+int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen);
+int lwip_listen(int s, int backlog);
+int lwip_recv(int s, void *mem, size_t len, int flags);
+int lwip_read(int s, void *mem, size_t len);
+int lwip_recvfrom(int s, void *mem, size_t len, int flags,
+ struct sockaddr *from, socklen_t *fromlen);
+int lwip_send(int s, const void *dataptr, size_t size, int flags);
+int lwip_sendto(int s, const void *dataptr, size_t size, int flags,
+ const struct sockaddr *to, socklen_t tolen);
+int lwip_socket(int domain, int type, int protocol);
+int lwip_write(int s, const void *dataptr, size_t size);
+int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
+ struct timeval *timeout);
+int lwip_ioctl(int s, long cmd, void *argp);
+
+#if LWIP_COMPAT_SOCKETS
+#define accept(a,b,c) lwip_accept(a,b,c)
+#define bind(a,b,c) lwip_bind(a,b,c)
+#define shutdown(a,b) lwip_shutdown(a,b)
+#define closesocket(s) lwip_close(s)
+#define connect(a,b,c) lwip_connect(a,b,c)
+#define getsockname(a,b,c) lwip_getsockname(a,b,c)
+#define getpeername(a,b,c) lwip_getpeername(a,b,c)
+#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e)
+#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e)
+#define listen(a,b) lwip_listen(a,b)
+#define recv(a,b,c,d) lwip_recv(a,b,c,d)
+#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f)
+#define send(a,b,c,d) lwip_send(a,b,c,d)
+#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f)
+#define socket(a,b,c) lwip_socket(a,b,c)
+#define select(a,b,c,d,e) lwip_select(a,b,c,d,e)
+#define ioctlsocket(a,b,c) lwip_ioctl(a,b,c)
+
+#if LWIP_POSIX_SOCKETS_IO_NAMES
+#define read(a,b,c) lwip_read(a,b,c)
+#define write(a,b,c) lwip_write(a,b,c)
+#define close(s) lwip_close(s)
+#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */
+
+#endif /* LWIP_COMPAT_SOCKETS */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_SOCKET */
+
+#endif /* __LWIP_SOCKETS_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h
new file mode 100644
index 0000000..4aec5e5
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h
@@ -0,0 +1,285 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_STATS_H__
+#define __LWIP_STATS_H__
+
+#include "lwip/opt.h"
+
+#include "lwip/mem.h"
+#include "lwip/memp.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if LWIP_STATS
+
+#ifndef LWIP_STATS_LARGE
+#define LWIP_STATS_LARGE 0
+#endif
+
+#if LWIP_STATS_LARGE
+#define STAT_COUNTER u32_t
+#define STAT_COUNTER_F U32_F
+#else
+#define STAT_COUNTER u16_t
+#define STAT_COUNTER_F U16_F
+#endif
+
+struct stats_proto {
+ STAT_COUNTER xmit; /* Transmitted packets. */
+ STAT_COUNTER recv; /* Received packets. */
+ STAT_COUNTER fw; /* Forwarded packets. */
+ STAT_COUNTER drop; /* Dropped packets. */
+ STAT_COUNTER chkerr; /* Checksum error. */
+ STAT_COUNTER lenerr; /* Invalid length error. */
+ STAT_COUNTER memerr; /* Out of memory error. */
+ STAT_COUNTER rterr; /* Routing error. */
+ STAT_COUNTER proterr; /* Protocol error. */
+ STAT_COUNTER opterr; /* Error in options. */
+ STAT_COUNTER err; /* Misc error. */
+ STAT_COUNTER cachehit;
+};
+
+struct stats_igmp {
+ STAT_COUNTER lenerr; /* Invalid length error. */
+ STAT_COUNTER chkerr; /* Checksum error. */
+ STAT_COUNTER v1_rxed; /* */
+ STAT_COUNTER join_sent; /* */
+ STAT_COUNTER leave_sent; /* */
+ STAT_COUNTER unicast_query; /* */
+ STAT_COUNTER report_sent; /* */
+ STAT_COUNTER report_rxed; /* */
+ STAT_COUNTER group_query_rxed; /* */
+};
+
+struct stats_mem {
+ mem_size_t avail;
+ mem_size_t used;
+ mem_size_t max;
+ STAT_COUNTER err;
+ STAT_COUNTER illegal;
+};
+
+struct stats_syselem {
+ STAT_COUNTER used;
+ STAT_COUNTER max;
+ STAT_COUNTER err;
+};
+
+struct stats_sys {
+ struct stats_syselem sem;
+ struct stats_syselem mbox;
+};
+
+struct stats_ {
+#if LINK_STATS
+ struct stats_proto link;
+#endif
+#if ETHARP_STATS
+ struct stats_proto etharp;
+#endif
+#if IPFRAG_STATS
+ struct stats_proto ip_frag;
+#endif
+#if IP_STATS
+ struct stats_proto ip;
+#endif
+#if ICMP_STATS
+ struct stats_proto icmp;
+#endif
+#if IGMP_STATS
+ struct stats_igmp igmp;
+#endif
+#if UDP_STATS
+ struct stats_proto udp;
+#endif
+#if TCP_STATS
+ struct stats_proto tcp;
+#endif
+#if MEM_STATS
+ struct stats_mem mem;
+#endif
+#if MEMP_STATS
+ struct stats_mem memp[MEMP_MAX];
+#endif
+#if SYS_STATS
+ struct stats_sys sys;
+#endif
+};
+
+extern struct stats_ lwip_stats;
+
+#define stats_init() /* Compatibility define, not init needed. */
+
+#define STATS_INC(x) ++lwip_stats.x
+#define STATS_DEC(x) --lwip_stats.x
+#else
+#define stats_init()
+#define STATS_INC(x)
+#define STATS_DEC(x)
+#endif /* LWIP_STATS */
+
+#if TCP_STATS
+#define TCP_STATS_INC(x) STATS_INC(x)
+#define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP")
+#else
+#define TCP_STATS_INC(x)
+#define TCP_STATS_DISPLAY()
+#endif
+
+#if UDP_STATS
+#define UDP_STATS_INC(x) STATS_INC(x)
+#define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP")
+#else
+#define UDP_STATS_INC(x)
+#define UDP_STATS_DISPLAY()
+#endif
+
+#if ICMP_STATS
+#define ICMP_STATS_INC(x) STATS_INC(x)
+#define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP")
+#else
+#define ICMP_STATS_INC(x)
+#define ICMP_STATS_DISPLAY()
+#endif
+
+#if IGMP_STATS
+#define IGMP_STATS_INC(x) STATS_INC(x)
+#define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp)
+#else
+#define IGMP_STATS_INC(x)
+#define IGMP_STATS_DISPLAY()
+#endif
+
+#if IP_STATS
+#define IP_STATS_INC(x) STATS_INC(x)
+#define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP")
+#else
+#define IP_STATS_INC(x)
+#define IP_STATS_DISPLAY()
+#endif
+
+#if IPFRAG_STATS
+#define IPFRAG_STATS_INC(x) STATS_INC(x)
+#define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG")
+#else
+#define IPFRAG_STATS_INC(x)
+#define IPFRAG_STATS_DISPLAY()
+#endif
+
+#if ETHARP_STATS
+#define ETHARP_STATS_INC(x) STATS_INC(x)
+#define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP")
+#else
+#define ETHARP_STATS_INC(x)
+#define ETHARP_STATS_DISPLAY()
+#endif
+
+#if LINK_STATS
+#define LINK_STATS_INC(x) STATS_INC(x)
+#define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK")
+#else
+#define LINK_STATS_INC(x)
+#define LINK_STATS_DISPLAY()
+#endif
+
+#if MEM_STATS
+#define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y
+#define MEM_STATS_INC(x) STATS_INC(mem.x)
+#define MEM_STATS_INC_USED(x, y) do { lwip_stats.mem.used += y; \
+ if (lwip_stats.mem.max < lwip_stats.mem.used) { \
+ lwip_stats.mem.max = lwip_stats.mem.used; \
+ } \
+ } while(0)
+#define MEM_STATS_DEC_USED(x, y) lwip_stats.mem.x -= y
+#define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP")
+#else
+#define MEM_STATS_AVAIL(x, y)
+#define MEM_STATS_INC(x)
+#define MEM_STATS_INC_USED(x, y)
+#define MEM_STATS_DEC_USED(x, y)
+#define MEM_STATS_DISPLAY()
+#endif
+
+#if MEMP_STATS
+#define MEMP_STATS_AVAIL(x, i, y) lwip_stats.memp[i].x = y
+#define MEMP_STATS_INC(x, i) STATS_INC(memp[i].x)
+#define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i].x)
+#define MEMP_STATS_INC_USED(x, i) do { ++lwip_stats.memp[i].used; \
+ if (lwip_stats.memp[i].max < lwip_stats.memp[i].used) { \
+ lwip_stats.memp[i].max = lwip_stats.memp[i].used; \
+ } \
+ } while(0)
+#define MEMP_STATS_DISPLAY(i) stats_display_memp(&lwip_stats.memp[i], i)
+#else
+#define MEMP_STATS_AVAIL(x, i, y)
+#define MEMP_STATS_INC(x, i)
+#define MEMP_STATS_DEC(x, i)
+#define MEMP_STATS_INC_USED(x, i)
+#define MEMP_STATS_DISPLAY(i)
+#endif
+
+#if SYS_STATS
+#define SYS_STATS_INC(x) STATS_INC(sys.x)
+#define SYS_STATS_DEC(x) STATS_DEC(sys.x)
+#define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys)
+#else
+#define SYS_STATS_INC(x)
+#define SYS_STATS_DEC(x)
+#define SYS_STATS_DISPLAY()
+#endif
+
+/* Display of statistics */
+#if LWIP_STATS_DISPLAY
+void stats_display(void);
+void stats_display_proto(struct stats_proto *proto, char *name);
+void stats_display_igmp(struct stats_igmp *igmp);
+void stats_display_mem(struct stats_mem *mem, char *name);
+void stats_display_memp(struct stats_mem *mem, int index);
+void stats_display_sys(struct stats_sys *sys);
+#else
+#define stats_display()
+#define stats_display_proto(proto, name)
+#define stats_display_igmp(igmp)
+#define stats_display_mem(mem, name)
+#define stats_display_memp(mem, index)
+#define stats_display_sys(sys)
+#endif /* LWIP_STATS_DISPLAY */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_STATS_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h
new file mode 100644
index 0000000..9a4f02a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h
@@ -0,0 +1,245 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_SYS_H__
+#define __LWIP_SYS_H__
+
+#include "lwip/opt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if NO_SYS
+
+/* For a totally minimal and standalone system, we provide null
+ definitions of the sys_ functions. */
+typedef u8_t sys_sem_t;
+typedef u8_t sys_mbox_t;
+struct sys_timeo {u8_t dummy;};
+
+#define sys_init()
+#define sys_timeout(m,h,a)
+#define sys_untimeout(m,a)
+#define sys_sem_new(c) c
+#define sys_sem_signal(s)
+#define sys_sem_wait(s)
+#define sys_sem_wait_timeout(s,t)
+#define sys_arch_sem_wait(s,t)
+#define sys_sem_free(s)
+#define sys_mbox_new(s) 0
+#define sys_mbox_fetch(m,d)
+#define sys_mbox_tryfetch(m,d)
+#define sys_mbox_post(m,d)
+#define sys_mbox_trypost(m,d)
+#define sys_mbox_free(m)
+
+#define sys_thread_new(n,t,a,s,p)
+
+#else /* NO_SYS */
+
+/** Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait */
+#define SYS_ARCH_TIMEOUT 0xffffffffUL
+
+/* sys_mbox_tryfetch returns SYS_MBOX_EMPTY if appropriate.
+ * For now we use the same magic value, but we allow this to change in future.
+ */
+#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT
+
+#include "lwip/err.h"
+#include "arch/sys_arch.h"
+
+typedef void (* sys_timeout_handler)(void *arg);
+
+struct sys_timeo {
+ struct sys_timeo *next;
+ u32_t time;
+ sys_timeout_handler h;
+ void *arg;
+};
+
+struct sys_timeouts {
+ struct sys_timeo *next;
+};
+
+/* sys_init() must be called before anthing else. */
+void sys_init(void);
+
+/*
+ * sys_timeout():
+ *
+ * Schedule a timeout a specified amount of milliseconds in the
+ * future. When the timeout occurs, the specified timeout handler will
+ * be called. The handler will be passed the "arg" argument when
+ * called.
+ *
+ */
+void sys_timeout(u32_t msecs, sys_timeout_handler h, void *arg);
+void sys_untimeout(sys_timeout_handler h, void *arg);
+struct sys_timeouts *sys_arch_timeouts(void);
+
+/* Semaphore functions. */
+sys_sem_t sys_sem_new(u8_t count);
+void sys_sem_signal(sys_sem_t sem);
+u32_t sys_arch_sem_wait(sys_sem_t sem, u32_t timeout);
+void sys_sem_free(sys_sem_t sem);
+void sys_sem_wait(sys_sem_t sem);
+int sys_sem_wait_timeout(sys_sem_t sem, u32_t timeout);
+
+/* Time functions. */
+#ifndef sys_msleep
+void sys_msleep(u32_t ms); /* only has a (close to) 1 jiffy resolution. */
+#endif
+#ifndef sys_jiffies
+u32_t sys_jiffies(void); /* since power up. */
+#endif
+
+/* Mailbox functions. */
+sys_mbox_t sys_mbox_new(int size);
+void sys_mbox_post(sys_mbox_t mbox, void *msg);
+err_t sys_mbox_trypost(sys_mbox_t mbox, void *msg);
+u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout);
+#ifndef sys_arch_mbox_tryfetch /* Allow port to override with a macro */
+u32_t sys_arch_mbox_tryfetch(sys_mbox_t mbox, void **msg);
+#endif
+/* For now, we map straight to sys_arch implementation. */
+#define sys_mbox_tryfetch(mbox, msg) sys_arch_mbox_tryfetch(mbox, msg)
+void sys_mbox_free(sys_mbox_t mbox);
+void sys_mbox_fetch(sys_mbox_t mbox, void **msg);
+
+/* Thread functions. */
+sys_thread_t sys_thread_new(char *name, void (* thread)(void *arg), void *arg, int stacksize, int prio);
+
+#endif /* NO_SYS */
+
+/** Returns the current time in milliseconds. */
+u32_t sys_now(void);
+
+/* Critical Region Protection */
+/* These functions must be implemented in the sys_arch.c file.
+ In some implementations they can provide a more light-weight protection
+ mechanism than using semaphores. Otherwise semaphores can be used for
+ implementation */
+#ifndef SYS_ARCH_PROTECT
+/** SYS_LIGHTWEIGHT_PROT
+ * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection
+ * for certain critical regions during buffer allocation, deallocation and memory
+ * allocation and deallocation.
+ */
+#if SYS_LIGHTWEIGHT_PROT
+
+/** SYS_ARCH_DECL_PROTECT
+ * declare a protection variable. This macro will default to defining a variable of
+ * type sys_prot_t. If a particular port needs a different implementation, then
+ * this macro may be defined in sys_arch.h.
+ */
+#define SYS_ARCH_DECL_PROTECT(lev) sys_prot_t lev
+/** SYS_ARCH_PROTECT
+ * Perform a "fast" protect. This could be implemented by
+ * disabling interrupts for an embedded system or by using a semaphore or
+ * mutex. The implementation should allow calling SYS_ARCH_PROTECT when
+ * already protected. The old protection level is returned in the variable
+ * "lev". This macro will default to calling the sys_arch_protect() function
+ * which should be implemented in sys_arch.c. If a particular port needs a
+ * different implementation, then this macro may be defined in sys_arch.h
+ */
+#define SYS_ARCH_PROTECT(lev) lev = sys_arch_protect()
+/** SYS_ARCH_UNPROTECT
+ * Perform a "fast" set of the protection level to "lev". This could be
+ * implemented by setting the interrupt level to "lev" within the MACRO or by
+ * using a semaphore or mutex. This macro will default to calling the
+ * sys_arch_unprotect() function which should be implemented in
+ * sys_arch.c. If a particular port needs a different implementation, then
+ * this macro may be defined in sys_arch.h
+ */
+#define SYS_ARCH_UNPROTECT(lev) sys_arch_unprotect(lev)
+sys_prot_t sys_arch_protect(void);
+void sys_arch_unprotect(sys_prot_t pval);
+
+#else
+
+#define SYS_ARCH_DECL_PROTECT(lev)
+#define SYS_ARCH_PROTECT(lev)
+#define SYS_ARCH_UNPROTECT(lev)
+
+#endif /* SYS_LIGHTWEIGHT_PROT */
+
+#endif /* SYS_ARCH_PROTECT */
+
+/*
+ * Macros to set/get and increase/decrease variables in a thread-safe way.
+ * Use these for accessing variable that are used from more than one thread.
+ */
+
+#ifndef SYS_ARCH_INC
+#define SYS_ARCH_INC(var, val) do { \
+ SYS_ARCH_DECL_PROTECT(old_level); \
+ SYS_ARCH_PROTECT(old_level); \
+ var += val; \
+ SYS_ARCH_UNPROTECT(old_level); \
+ } while(0)
+#endif /* SYS_ARCH_INC */
+
+#ifndef SYS_ARCH_DEC
+#define SYS_ARCH_DEC(var, val) do { \
+ SYS_ARCH_DECL_PROTECT(old_level); \
+ SYS_ARCH_PROTECT(old_level); \
+ var -= val; \
+ SYS_ARCH_UNPROTECT(old_level); \
+ } while(0)
+#endif /* SYS_ARCH_DEC */
+
+#ifndef SYS_ARCH_GET
+#define SYS_ARCH_GET(var, ret) do { \
+ SYS_ARCH_DECL_PROTECT(old_level); \
+ SYS_ARCH_PROTECT(old_level); \
+ ret = var; \
+ SYS_ARCH_UNPROTECT(old_level); \
+ } while(0)
+#endif /* SYS_ARCH_GET */
+
+#ifndef SYS_ARCH_SET
+#define SYS_ARCH_SET(var, val) do { \
+ SYS_ARCH_DECL_PROTECT(old_level); \
+ SYS_ARCH_PROTECT(old_level); \
+ var = val; \
+ SYS_ARCH_UNPROTECT(old_level); \
+ } while(0)
+#endif /* SYS_ARCH_SET */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __LWIP_SYS_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h
new file mode 100644
index 0000000..c151574
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h
@@ -0,0 +1,709 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_TCP_H__
+#define __LWIP_TCP_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/sys.h"
+#include "lwip/mem.h"
+#include "lwip/pbuf.h"
+#include "lwip/ip.h"
+#include "lwip/icmp.h"
+#include "lwip/err.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct tcp_pcb;
+
+/* Functions for interfacing with TCP: */
+
+/* Lower layer interface to TCP: */
+#define tcp_init() /* Compatibility define, not init needed. */
+void tcp_tmr (void); /* Must be called every
+ TCP_TMR_INTERVAL
+ ms. (Typically 250 ms). */
+/* Application program's interface: */
+struct tcp_pcb * tcp_new (void);
+struct tcp_pcb * tcp_alloc (u8_t prio);
+
+void tcp_arg (struct tcp_pcb *pcb, void *arg);
+void tcp_accept (struct tcp_pcb *pcb,
+ err_t (* accept)(void *arg, struct tcp_pcb *newpcb,
+ err_t err));
+void tcp_recv (struct tcp_pcb *pcb,
+ err_t (* recv)(void *arg, struct tcp_pcb *tpcb,
+ struct pbuf *p, err_t err));
+void tcp_sent (struct tcp_pcb *pcb,
+ err_t (* sent)(void *arg, struct tcp_pcb *tpcb,
+ u16_t len));
+void tcp_poll (struct tcp_pcb *pcb,
+ err_t (* poll)(void *arg, struct tcp_pcb *tpcb),
+ u8_t interval);
+void tcp_err (struct tcp_pcb *pcb,
+ void (* err)(void *arg, err_t err));
+
+#define tcp_mss(pcb) ((pcb)->mss)
+#define tcp_sndbuf(pcb) ((pcb)->snd_buf)
+#define tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY)
+#define tcp_nagle_enable(pcb) ((pcb)->flags &= ~TF_NODELAY)
+#define tcp_nagle_disabled(pcb) (((pcb)->flags & TF_NODELAY) != 0)
+
+#if TCP_LISTEN_BACKLOG
+#define tcp_accepted(pcb) (((struct tcp_pcb_listen *)(pcb))->accepts_pending--)
+#else /* TCP_LISTEN_BACKLOG */
+#define tcp_accepted(pcb)
+#endif /* TCP_LISTEN_BACKLOG */
+
+void tcp_recved (struct tcp_pcb *pcb, u16_t len);
+err_t tcp_bind (struct tcp_pcb *pcb, struct ip_addr *ipaddr,
+ u16_t port);
+err_t tcp_connect (struct tcp_pcb *pcb, struct ip_addr *ipaddr,
+ u16_t port, err_t (* connected)(void *arg,
+ struct tcp_pcb *tpcb,
+ err_t err));
+
+struct tcp_pcb * tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog);
+#define tcp_listen(pcb) tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG)
+
+void tcp_abandon (struct tcp_pcb *pcb, int reset);
+#define tcp_abort(pcb) tcp_abandon((pcb), 1)
+err_t tcp_close (struct tcp_pcb *pcb);
+
+/* Flags for "apiflags" parameter in tcp_write and tcp_enqueue */
+#define TCP_WRITE_FLAG_COPY 0x01
+#define TCP_WRITE_FLAG_MORE 0x02
+
+err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len,
+ u8_t apiflags);
+
+void tcp_setprio (struct tcp_pcb *pcb, u8_t prio);
+
+#define TCP_PRIO_MIN 1
+#define TCP_PRIO_NORMAL 64
+#define TCP_PRIO_MAX 127
+
+/* It is also possible to call these two functions at the right
+ intervals (instead of calling tcp_tmr()). */
+void tcp_slowtmr (void);
+void tcp_fasttmr (void);
+
+
+/* Only used by IP to pass a TCP segment to TCP: */
+void tcp_input (struct pbuf *p, struct netif *inp);
+/* Used within the TCP code only: */
+err_t tcp_send_empty_ack(struct tcp_pcb *pcb);
+err_t tcp_output (struct tcp_pcb *pcb);
+void tcp_rexmit (struct tcp_pcb *pcb);
+void tcp_rexmit_rto (struct tcp_pcb *pcb);
+void tcp_rexmit_fast (struct tcp_pcb *pcb);
+u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb);
+
+/**
+ * This is the Nagle algorithm: try to combine user data to send as few TCP
+ * segments as possible. Only send if
+ * - no previously transmitted data on the connection remains unacknowledged or
+ * - the TF_NODELAY flag is set (nagle algorithm turned off for this pcb) or
+ * - the only unsent segment is at least pcb->mss bytes long (or there is more
+ * than one unsent segment - with lwIP, this can happen although unsent->len < mss)
+ * - or if we are in fast-retransmit (TF_INFR)
+ */
+#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \
+ ((tpcb)->flags & (TF_NODELAY | TF_INFR)) || \
+ (((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \
+ ((tpcb)->unsent->len >= (tpcb)->mss))) \
+ ) ? 1 : 0)
+#define tcp_output_nagle(tpcb) (tcp_do_output_nagle(tpcb) ? tcp_output(tpcb) : ERR_OK)
+
+
+#define TCP_SEQ_LT(a,b) ((s32_t)((a)-(b)) < 0)
+#define TCP_SEQ_LEQ(a,b) ((s32_t)((a)-(b)) <= 0)
+#define TCP_SEQ_GT(a,b) ((s32_t)((a)-(b)) > 0)
+#define TCP_SEQ_GEQ(a,b) ((s32_t)((a)-(b)) >= 0)
+/* is b<=a<=c? */
+#if 0 /* see bug #10548 */
+#define TCP_SEQ_BETWEEN(a,b,c) ((c)-(b) >= (a)-(b))
+#endif
+#define TCP_SEQ_BETWEEN(a,b,c) (TCP_SEQ_GEQ(a,b) && TCP_SEQ_LEQ(a,c))
+#define TCP_FIN 0x01U
+#define TCP_SYN 0x02U
+#define TCP_RST 0x04U
+#define TCP_PSH 0x08U
+#define TCP_ACK 0x10U
+#define TCP_URG 0x20U
+#define TCP_ECE 0x40U
+#define TCP_CWR 0x80U
+
+#define TCP_FLAGS 0x3fU
+
+/* Length of the TCP header, excluding options. */
+#define TCP_HLEN 20
+
+#ifndef TCP_TMR_INTERVAL
+#define TCP_TMR_INTERVAL 250 /* The TCP timer interval in milliseconds. */
+#endif /* TCP_TMR_INTERVAL */
+
+#ifndef TCP_FAST_INTERVAL
+#define TCP_FAST_INTERVAL TCP_TMR_INTERVAL /* the fine grained timeout in milliseconds */
+#endif /* TCP_FAST_INTERVAL */
+
+#ifndef TCP_SLOW_INTERVAL
+#define TCP_SLOW_INTERVAL (2*TCP_TMR_INTERVAL) /* the coarse grained timeout in milliseconds */
+#endif /* TCP_SLOW_INTERVAL */
+
+#define TCP_FIN_WAIT_TIMEOUT 20000 /* milliseconds */
+#define TCP_SYN_RCVD_TIMEOUT 20000 /* milliseconds */
+
+#define TCP_OOSEQ_TIMEOUT 6U /* x RTO */
+
+#ifndef TCP_MSL
+#define TCP_MSL 60000UL /* The maximum segment lifetime in milliseconds */
+#endif
+
+/* Keepalive values, compliant with RFC 1122. Don't change this unless you know what you're doing */
+#ifndef TCP_KEEPIDLE_DEFAULT
+#define TCP_KEEPIDLE_DEFAULT 7200000UL /* Default KEEPALIVE timer in milliseconds */
+#endif
+
+#ifndef TCP_KEEPINTVL_DEFAULT
+#define TCP_KEEPINTVL_DEFAULT 75000UL /* Default Time between KEEPALIVE probes in milliseconds */
+#endif
+
+#ifndef TCP_KEEPCNT_DEFAULT
+#define TCP_KEEPCNT_DEFAULT 9U /* Default Counter for KEEPALIVE probes */
+#endif
+
+#define TCP_MAXIDLE TCP_KEEPCNT_DEFAULT * TCP_KEEPINTVL_DEFAULT /* Maximum KEEPALIVE probe time */
+
+/* Fields are (of course) in network byte order.
+ * Some fields are converted to host byte order in tcp_input().
+ */
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct tcp_hdr {
+ PACK_STRUCT_FIELD(u16_t src);
+ PACK_STRUCT_FIELD(u16_t dest);
+ PACK_STRUCT_FIELD(u32_t seqno);
+ PACK_STRUCT_FIELD(u32_t ackno);
+ PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags);
+ PACK_STRUCT_FIELD(u16_t wnd);
+ PACK_STRUCT_FIELD(u16_t chksum);
+ PACK_STRUCT_FIELD(u16_t urgp);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define TCPH_OFFSET(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 8)
+#define TCPH_HDRLEN(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 12)
+#define TCPH_FLAGS(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) & TCP_FLAGS)
+
+#define TCPH_OFFSET_SET(phdr, offset) (phdr)->_hdrlen_rsvd_flags = htons(((offset) << 8) | TCPH_FLAGS(phdr))
+#define TCPH_HDRLEN_SET(phdr, len) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | TCPH_FLAGS(phdr))
+#define TCPH_FLAGS_SET(phdr, flags) (phdr)->_hdrlen_rsvd_flags = (((phdr)->_hdrlen_rsvd_flags & htons((u16_t)(~(u16_t)(TCP_FLAGS)))) | htons(flags))
+#define TCPH_SET_FLAG(phdr, flags ) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags | htons(flags))
+#define TCPH_UNSET_FLAG(phdr, flags) (phdr)->_hdrlen_rsvd_flags = htons(ntohs((phdr)->_hdrlen_rsvd_flags) | (TCPH_FLAGS(phdr) & ~(flags)) )
+
+#define TCP_TCPLEN(seg) ((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & (TCP_FIN | TCP_SYN)) != 0))
+
+enum tcp_state {
+ CLOSED = 0,
+ LISTEN = 1,
+ SYN_SENT = 2,
+ SYN_RCVD = 3,
+ ESTABLISHED = 4,
+ FIN_WAIT_1 = 5,
+ FIN_WAIT_2 = 6,
+ CLOSE_WAIT = 7,
+ CLOSING = 8,
+ LAST_ACK = 9,
+ TIME_WAIT = 10
+};
+
+/** Flags used on input processing, not on pcb->flags
+*/
+#define TF_RESET (u8_t)0x08U /* Connection was reset. */
+#define TF_CLOSED (u8_t)0x10U /* Connection was sucessfully closed. */
+#define TF_GOT_FIN (u8_t)0x20U /* Connection was closed by the remote end. */
+
+
+#if LWIP_CALLBACK_API
+ /* Function to call when a listener has been connected.
+ * @param arg user-supplied argument (tcp_pcb.callback_arg)
+ * @param pcb a new tcp_pcb that now is connected
+ * @param err an error argument (TODO: that is current always ERR_OK?)
+ * @return ERR_OK: accept the new connection,
+ * any other err_t abortsthe new connection
+ */
+#define DEF_ACCEPT_CALLBACK err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err)
+#else /* LWIP_CALLBACK_API */
+#define DEF_ACCEPT_CALLBACK
+#endif /* LWIP_CALLBACK_API */
+
+/**
+ * members common to struct tcp_pcb and struct tcp_listen_pcb
+ */
+#define TCP_PCB_COMMON(type) \
+ type *next; /* for the linked list */ \
+ enum tcp_state state; /* TCP state */ \
+ u8_t prio; \
+ void *callback_arg; \
+ /* ports are in host byte order */ \
+ u16_t local_port; \
+ /* the accept callback for listen- and normal pcbs, if LWIP_CALLBACK_API */ \
+ DEF_ACCEPT_CALLBACK
+
+
+/* the TCP protocol control block */
+struct tcp_pcb {
+/** common PCB members */
+ IP_PCB;
+/** protocol specific PCB members */
+ TCP_PCB_COMMON(struct tcp_pcb);
+
+ /* ports are in host byte order */
+ u16_t remote_port;
+
+ u8_t flags;
+#define TF_ACK_DELAY ((u8_t)0x01U) /* Delayed ACK. */
+#define TF_ACK_NOW ((u8_t)0x02U) /* Immediate ACK. */
+#define TF_INFR ((u8_t)0x04U) /* In fast recovery. */
+#define TF_TIMESTAMP ((u8_t)0x08U) /* Timestamp option enabled */
+#define TF_FIN ((u8_t)0x20U) /* Connection was closed locally (FIN segment enqueued). */
+#define TF_NODELAY ((u8_t)0x40U) /* Disable Nagle algorithm */
+#define TF_NAGLEMEMERR ((u8_t)0x80U) /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */
+
+ /* the rest of the fields are in host byte order
+ as we have to do some math with them */
+ /* receiver variables */
+ u32_t rcv_nxt; /* next seqno expected */
+ u16_t rcv_wnd; /* receiver window available */
+ u16_t rcv_ann_wnd; /* receiver window to announce */
+ u32_t rcv_ann_right_edge; /* announced right edge of window */
+
+ /* Timers */
+ u32_t tmr;
+ u8_t polltmr, pollinterval;
+
+ /* Retransmission timer. */
+ s16_t rtime;
+
+ u16_t mss; /* maximum segment size */
+
+ /* RTT (round trip time) estimation variables */
+ u32_t rttest; /* RTT estimate in 500ms ticks */
+ u32_t rtseq; /* sequence number being timed */
+ s16_t sa, sv; /* @todo document this */
+
+ s16_t rto; /* retransmission time-out */
+ u8_t nrtx; /* number of retransmissions */
+
+ /* fast retransmit/recovery */
+ u32_t lastack; /* Highest acknowledged seqno. */
+ u8_t dupacks;
+
+ /* congestion avoidance/control variables */
+ u16_t cwnd;
+ u16_t ssthresh;
+
+ /* sender variables */
+ u32_t snd_nxt; /* next new seqno to be sent */
+ u16_t snd_wnd; /* sender window */
+ u32_t snd_wl1, snd_wl2; /* Sequence and acknowledgement numbers of last
+ window update. */
+ u32_t snd_lbb; /* Sequence number of next byte to be buffered. */
+
+ u16_t acked;
+
+ u16_t snd_buf; /* Available buffer space for sending (in bytes). */
+#define TCP_SNDQUEUELEN_OVERFLOW (0xffff-3)
+ u16_t snd_queuelen; /* Available buffer space for sending (in tcp_segs). */
+
+
+ /* These are ordered by sequence number: */
+ struct tcp_seg *unsent; /* Unsent (queued) segments. */
+ struct tcp_seg *unacked; /* Sent but unacknowledged segments. */
+#if TCP_QUEUE_OOSEQ
+ struct tcp_seg *ooseq; /* Received out of sequence segments. */
+#endif /* TCP_QUEUE_OOSEQ */
+
+ struct pbuf *refused_data; /* Data previously received but not yet taken by upper layer */
+
+#if LWIP_CALLBACK_API
+ /* Function to be called when more send buffer space is available.
+ * @param arg user-supplied argument (tcp_pcb.callback_arg)
+ * @param pcb the tcp_pcb which has send buffer space available
+ * @param space the amount of bytes available
+ * @return ERR_OK: try to send some data by calling tcp_output
+ */
+ err_t (* sent)(void *arg, struct tcp_pcb *pcb, u16_t space);
+
+ /* Function to be called when (in-sequence) data has arrived.
+ * @param arg user-supplied argument (tcp_pcb.callback_arg)
+ * @param pcb the tcp_pcb for which data has arrived
+ * @param p the packet buffer which arrived
+ * @param err an error argument (TODO: that is current always ERR_OK?)
+ * @return ERR_OK: try to send some data by calling tcp_output
+ */
+ err_t (* recv)(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err);
+
+ /* Function to be called when a connection has been set up.
+ * @param arg user-supplied argument (tcp_pcb.callback_arg)
+ * @param pcb the tcp_pcb that now is connected
+ * @param err an error argument (TODO: that is current always ERR_OK?)
+ * @return value is currently ignored
+ */
+ err_t (* connected)(void *arg, struct tcp_pcb *pcb, err_t err);
+
+ /* Function which is called periodically.
+ * The period can be adjusted in multiples of the TCP slow timer interval
+ * by changing tcp_pcb.polltmr.
+ * @param arg user-supplied argument (tcp_pcb.callback_arg)
+ * @param pcb the tcp_pcb to poll for
+ * @return ERR_OK: try to send some data by calling tcp_output
+ */
+ err_t (* poll)(void *arg, struct tcp_pcb *pcb);
+
+ /* Function to be called whenever a fatal error occurs.
+ * There is no pcb parameter since most of the times, the pcb is
+ * already deallocated (or there is no pcb) when this function is called.
+ * @param arg user-supplied argument (tcp_pcb.callback_arg)
+ * @param err an indication why the error callback is called:
+ * ERR_ABRT: aborted through tcp_abort or by a TCP timer
+ * ERR_RST: the connection was reset by the remote host
+ */
+ void (* errf)(void *arg, err_t err);
+#endif /* LWIP_CALLBACK_API */
+
+#if LWIP_TCP_TIMESTAMPS
+ u32_t ts_lastacksent;
+ u32_t ts_recent;
+#endif /* LWIP_TCP_TIMESTAMPS */
+
+ /* idle time before KEEPALIVE is sent */
+ u32_t keep_idle;
+#if LWIP_TCP_KEEPALIVE
+ u32_t keep_intvl;
+ u32_t keep_cnt;
+#endif /* LWIP_TCP_KEEPALIVE */
+
+ /* Persist timer counter */
+ u32_t persist_cnt;
+ /* Persist timer back-off */
+ u8_t persist_backoff;
+
+ /* KEEPALIVE counter */
+ u8_t keep_cnt_sent;
+};
+
+struct tcp_pcb_listen {
+/* Common members of all PCB types */
+ IP_PCB;
+/* Protocol specific PCB members */
+ TCP_PCB_COMMON(struct tcp_pcb_listen);
+
+#if TCP_LISTEN_BACKLOG
+ u8_t backlog;
+ u8_t accepts_pending;
+#endif /* TCP_LISTEN_BACKLOG */
+};
+
+#if LWIP_EVENT_API
+
+enum lwip_event {
+ LWIP_EVENT_ACCEPT,
+ LWIP_EVENT_SENT,
+ LWIP_EVENT_RECV,
+ LWIP_EVENT_CONNECTED,
+ LWIP_EVENT_POLL,
+ LWIP_EVENT_ERR
+};
+
+err_t lwip_tcp_event(void *arg, struct tcp_pcb *pcb,
+ enum lwip_event,
+ struct pbuf *p,
+ u16_t size,
+ err_t err);
+
+#define TCP_EVENT_ACCEPT(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
+ LWIP_EVENT_ACCEPT, NULL, 0, err)
+#define TCP_EVENT_SENT(pcb,space,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
+ LWIP_EVENT_SENT, NULL, space, ERR_OK)
+#define TCP_EVENT_RECV(pcb,p,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
+ LWIP_EVENT_RECV, (p), 0, (err))
+#define TCP_EVENT_CONNECTED(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
+ LWIP_EVENT_CONNECTED, NULL, 0, (err))
+#define TCP_EVENT_POLL(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
+ LWIP_EVENT_POLL, NULL, 0, ERR_OK)
+#define TCP_EVENT_ERR(errf,arg,err) lwip_tcp_event((arg), NULL, \
+ LWIP_EVENT_ERR, NULL, 0, (err))
+#else /* LWIP_EVENT_API */
+
+#define TCP_EVENT_ACCEPT(pcb,err,ret) \
+ do { \
+ if((pcb)->accept != NULL) \
+ (ret) = (pcb)->accept((pcb)->callback_arg,(pcb),(err)); \
+ else (ret) = ERR_OK; \
+ } while (0)
+
+#define TCP_EVENT_SENT(pcb,space,ret) \
+ do { \
+ if((pcb)->sent != NULL) \
+ (ret) = (pcb)->sent((pcb)->callback_arg,(pcb),(space)); \
+ else (ret) = ERR_OK; \
+ } while (0)
+
+#define TCP_EVENT_RECV(pcb,p,err,ret) \
+ do { \
+ if((pcb)->recv != NULL) { \
+ (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err)); \
+ } else { \
+ (ret) = tcp_recv_null(NULL, (pcb), (p), (err)); \
+ } \
+ } while (0)
+
+#define TCP_EVENT_CONNECTED(pcb,err,ret) \
+ do { \
+ if((pcb)->connected != NULL) \
+ (ret) = (pcb)->connected((pcb)->callback_arg,(pcb),(err)); \
+ else (ret) = ERR_OK; \
+ } while (0)
+
+#define TCP_EVENT_POLL(pcb,ret) \
+ do { \
+ if((pcb)->poll != NULL) \
+ (ret) = (pcb)->poll((pcb)->callback_arg,(pcb)); \
+ else (ret) = ERR_OK; \
+ } while (0)
+
+#define TCP_EVENT_ERR(errf,arg,err) \
+ do { \
+ if((errf) != NULL) \
+ (errf)((arg),(err)); \
+ } while (0)
+
+#endif /* LWIP_EVENT_API */
+
+/* This structure represents a TCP segment on the unsent and unacked queues */
+struct tcp_seg {
+ struct tcp_seg *next; /* used when putting segements on a queue */
+ struct pbuf *p; /* buffer containing data + TCP header */
+ void *dataptr; /* pointer to the TCP data in the pbuf */
+ u16_t len; /* the TCP length of this segment */
+ u8_t flags;
+#define TF_SEG_OPTS_MSS (u8_t)0x01U /* Include MSS option. */
+#define TF_SEG_OPTS_TS (u8_t)0x02U /* Include timestamp option. */
+ struct tcp_hdr *tcphdr; /* the TCP header */
+};
+
+#define LWIP_TCP_OPT_LENGTH(flags) \
+ (flags & TF_SEG_OPTS_MSS ? 4 : 0) + \
+ (flags & TF_SEG_OPTS_TS ? 12 : 0)
+
+/** This returns a TCP header option for MSS in an u32_t */
+#define TCP_BUILD_MSS_OPTION(x) (x) = htonl(((u32_t)2 << 24) | \
+ ((u32_t)4 << 16) | \
+ (((u32_t)TCP_MSS / 256) << 8) | \
+ (TCP_MSS & 255))
+
+/* Internal functions and global variables: */
+struct tcp_pcb *tcp_pcb_copy(struct tcp_pcb *pcb);
+void tcp_pcb_purge(struct tcp_pcb *pcb);
+void tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb);
+
+u8_t tcp_segs_free(struct tcp_seg *seg);
+u8_t tcp_seg_free(struct tcp_seg *seg);
+struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg);
+
+#define tcp_ack(pcb) \
+ do { \
+ if((pcb)->flags & TF_ACK_DELAY) { \
+ (pcb)->flags &= ~TF_ACK_DELAY; \
+ (pcb)->flags |= TF_ACK_NOW; \
+ tcp_output(pcb); \
+ } \
+ else { \
+ (pcb)->flags |= TF_ACK_DELAY; \
+ } \
+ } while (0)
+
+#define tcp_ack_now(pcb) \
+ do { \
+ (pcb)->flags |= TF_ACK_NOW; \
+ tcp_output(pcb); \
+ } while (0)
+
+err_t tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags);
+err_t tcp_enqueue(struct tcp_pcb *pcb, void *dataptr, u16_t len,
+ u8_t flags, u8_t apiflags, u8_t optflags);
+
+void tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg);
+
+void tcp_rst(u32_t seqno, u32_t ackno,
+ struct ip_addr *local_ip, struct ip_addr *remote_ip,
+ u16_t local_port, u16_t remote_port);
+
+u32_t tcp_next_iss(void);
+
+void tcp_keepalive(struct tcp_pcb *pcb);
+void tcp_zero_window_probe(struct tcp_pcb *pcb);
+
+#if TCP_CALCULATE_EFF_SEND_MSS
+u16_t tcp_eff_send_mss(u16_t sendmss, struct ip_addr *addr);
+#endif /* TCP_CALCULATE_EFF_SEND_MSS */
+
+#if LWIP_CALLBACK_API
+err_t tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err);
+#endif /* LWIP_CALLBACK_API */
+
+extern struct tcp_pcb *tcp_input_pcb;
+extern u32_t tcp_ticks;
+
+const char* tcp_debug_state_str(enum tcp_state s);
+#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG
+void tcp_debug_print(struct tcp_hdr *tcphdr);
+void tcp_debug_print_flags(u8_t flags);
+void tcp_debug_print_state(enum tcp_state s);
+void tcp_debug_print_pcbs(void);
+s16_t tcp_pcbs_sane(void);
+#else
+# define tcp_debug_print(tcphdr)
+# define tcp_debug_print_flags(flags)
+# define tcp_debug_print_state(s)
+# define tcp_debug_print_pcbs()
+# define tcp_pcbs_sane() 1
+#endif /* TCP_DEBUG */
+
+#if NO_SYS
+#define tcp_timer_needed()
+#else
+void tcp_timer_needed(void);
+#endif
+
+/* The TCP PCB lists. */
+union tcp_listen_pcbs_t { /* List of all TCP PCBs in LISTEN state. */
+ struct tcp_pcb_listen *listen_pcbs;
+ struct tcp_pcb *pcbs;
+};
+extern union tcp_listen_pcbs_t tcp_listen_pcbs;
+extern struct tcp_pcb *tcp_active_pcbs; /* List of all TCP PCBs that are in a
+ state in which they accept or send
+ data. */
+extern struct tcp_pcb *tcp_tw_pcbs; /* List of all TCP PCBs in TIME-WAIT. */
+
+extern struct tcp_pcb *tcp_tmp_pcb; /* Only used for temporary storage. */
+
+/* Axioms about the above lists:
+ 1) Every TCP PCB that is not CLOSED is in one of the lists.
+ 2) A PCB is only in one of the lists.
+ 3) All PCBs in the tcp_listen_pcbs list is in LISTEN state.
+ 4) All PCBs in the tcp_tw_pcbs list is in TIME-WAIT state.
+*/
+
+/* Define two macros, TCP_REG and TCP_RMV that registers a TCP PCB
+ with a PCB list or removes a PCB from a list, respectively. */
+#if 0
+#define TCP_REG(pcbs, npcb) do {\
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP_REG %p local port %d\n", npcb, npcb->local_port)); \
+ for(tcp_tmp_pcb = *pcbs; \
+ tcp_tmp_pcb != NULL; \
+ tcp_tmp_pcb = tcp_tmp_pcb->next) { \
+ LWIP_ASSERT("TCP_REG: already registered\n", tcp_tmp_pcb != npcb); \
+ } \
+ LWIP_ASSERT("TCP_REG: pcb->state != CLOSED", npcb->state != CLOSED); \
+ npcb->next = *pcbs; \
+ LWIP_ASSERT("TCP_REG: npcb->next != npcb", npcb->next != npcb); \
+ *(pcbs) = npcb; \
+ LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \
+ tcp_timer_needed(); \
+ } while(0)
+#define TCP_RMV(pcbs, npcb) do { \
+ LWIP_ASSERT("TCP_RMV: pcbs != NULL", *pcbs != NULL); \
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removing %p from %p\n", npcb, *pcbs)); \
+ if(*pcbs == npcb) { \
+ *pcbs = (*pcbs)->next; \
+ } else for(tcp_tmp_pcb = *pcbs; tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \
+ if(tcp_tmp_pcb->next == npcb) { \
+ tcp_tmp_pcb->next = npcb->next; \
+ break; \
+ } \
+ } \
+ npcb->next = NULL; \
+ LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \
+ LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removed %p from %p\n", npcb, *pcbs)); \
+ } while(0)
+
+#else /* LWIP_DEBUG */
+
+#define TCP_REG(pcbs, npcb) \
+ do { \
+ npcb->next = *pcbs; \
+ *(pcbs) = npcb; \
+ tcp_timer_needed(); \
+ } while (0)
+
+#define TCP_RMV(pcbs, npcb) \
+ do { \
+ if(*(pcbs) == npcb) { \
+ (*(pcbs)) = (*pcbs)->next; \
+ } \
+ else { \
+ for(tcp_tmp_pcb = *pcbs; \
+ tcp_tmp_pcb != NULL; \
+ tcp_tmp_pcb = tcp_tmp_pcb->next) { \
+ if(tcp_tmp_pcb->next == npcb) { \
+ tcp_tmp_pcb->next = npcb->next; \
+ break; \
+ } \
+ } \
+ } \
+ npcb->next = NULL; \
+ } while(0)
+
+#endif /* LWIP_DEBUG */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_TCP */
+
+#endif /* __LWIP_TCP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h
new file mode 100644
index 0000000..00a3ec5
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h
@@ -0,0 +1,143 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_TCPIP_H__
+#define __LWIP_TCPIP_H__
+
+#include "lwip/opt.h"
+
+#if !NO_SYS /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/api_msg.h"
+#include "lwip/netifapi.h"
+#include "lwip/pbuf.h"
+#include "lwip/api.h"
+#include "lwip/sys.h"
+#include "lwip/netif.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if LWIP_TCPIP_CORE_LOCKING
+/** The global semaphore to lock the stack. */
+extern sys_sem_t lock_tcpip_core;
+#define LOCK_TCPIP_CORE() sys_sem_wait(lock_tcpip_core)
+#define UNLOCK_TCPIP_CORE() sys_sem_signal(lock_tcpip_core)
+#define TCPIP_APIMSG(m) tcpip_apimsg_lock(m)
+#define TCPIP_APIMSG_ACK(m)
+#define TCPIP_NETIFAPI(m) tcpip_netifapi_lock(m)
+#define TCPIP_NETIFAPI_ACK(m)
+#else
+#define LOCK_TCPIP_CORE()
+#define UNLOCK_TCPIP_CORE()
+#define TCPIP_APIMSG(m) tcpip_apimsg(m)
+#define TCPIP_APIMSG_ACK(m) sys_sem_signal(m->conn->op_completed)
+#define TCPIP_NETIFAPI(m) tcpip_netifapi(m)
+#define TCPIP_NETIFAPI_ACK(m) sys_sem_signal(m->sem)
+#endif /* LWIP_TCPIP_CORE_LOCKING */
+
+void tcpip_init(void (* tcpip_init_done)(void *), void *arg);
+
+#if LWIP_NETCONN
+err_t tcpip_apimsg(struct api_msg *apimsg);
+#if LWIP_TCPIP_CORE_LOCKING
+err_t tcpip_apimsg_lock(struct api_msg *apimsg);
+#endif /* LWIP_TCPIP_CORE_LOCKING */
+#endif /* LWIP_NETCONN */
+
+err_t tcpip_input(struct pbuf *p, struct netif *inp);
+
+#if LWIP_NETIF_API
+err_t tcpip_netifapi(struct netifapi_msg *netifapimsg);
+#if LWIP_TCPIP_CORE_LOCKING
+err_t tcpip_netifapi_lock(struct netifapi_msg *netifapimsg);
+#endif /* LWIP_TCPIP_CORE_LOCKING */
+#endif /* LWIP_NETIF_API */
+
+err_t tcpip_callback_with_block(void (*f)(void *ctx), void *ctx, u8_t block);
+#define tcpip_callback(f, ctx) tcpip_callback_with_block(f, ctx, 1)
+
+/* free pbufs or heap memory from another context without blocking */
+err_t pbuf_free_callback(struct pbuf *p);
+err_t mem_free_callback(void *m);
+
+err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg);
+err_t tcpip_untimeout(sys_timeout_handler h, void *arg);
+
+enum tcpip_msg_type {
+#if LWIP_NETCONN
+ TCPIP_MSG_API,
+#endif /* LWIP_NETCONN */
+ TCPIP_MSG_INPKT,
+#if LWIP_NETIF_API
+ TCPIP_MSG_NETIFAPI,
+#endif /* LWIP_NETIF_API */
+ TCPIP_MSG_CALLBACK,
+ TCPIP_MSG_TIMEOUT,
+ TCPIP_MSG_UNTIMEOUT
+};
+
+struct tcpip_msg {
+ enum tcpip_msg_type type;
+ sys_sem_t *sem;
+ union {
+#if LWIP_NETCONN
+ struct api_msg *apimsg;
+#endif /* LWIP_NETCONN */
+#if LWIP_NETIF_API
+ struct netifapi_msg *netifapimsg;
+#endif /* LWIP_NETIF_API */
+ struct {
+ struct pbuf *p;
+ struct netif *netif;
+ } inp;
+ struct {
+ void (*f)(void *ctx);
+ void *ctx;
+ } cb;
+ struct {
+ u32_t msecs;
+ sys_timeout_handler h;
+ void *arg;
+ } tmo;
+ } msg;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !NO_SYS */
+
+#endif /* __LWIP_TCPIP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h
new file mode 100644
index 0000000..1269ee1
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h
@@ -0,0 +1,155 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIP_UDP_H__
+#define __LWIP_UDP_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/pbuf.h"
+#include "lwip/netif.h"
+#include "lwip/ip_addr.h"
+#include "lwip/ip.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UDP_HLEN 8
+
+/* Fields are (of course) in network byte order. */
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct udp_hdr {
+ PACK_STRUCT_FIELD(u16_t src);
+ PACK_STRUCT_FIELD(u16_t dest); /* src/dest UDP ports */
+ PACK_STRUCT_FIELD(u16_t len);
+ PACK_STRUCT_FIELD(u16_t chksum);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define UDP_FLAGS_NOCHKSUM 0x01U
+#define UDP_FLAGS_UDPLITE 0x02U
+#define UDP_FLAGS_CONNECTED 0x04U
+
+struct udp_pcb {
+/* Common members of all PCB types */
+ IP_PCB;
+
+/* Protocol specific PCB members */
+
+ struct udp_pcb *next;
+
+ u8_t flags;
+ /* ports are in host byte order */
+ u16_t local_port, remote_port;
+
+#if LWIP_IGMP
+ /* outgoing network interface for multicast packets */
+ struct ip_addr multicast_ip;
+#endif /* LWIP_IGMP */
+
+#if LWIP_UDPLITE
+ /* used for UDP_LITE only */
+ u16_t chksum_len_rx, chksum_len_tx;
+#endif /* LWIP_UDPLITE */
+
+ /* receive callback function
+ * addr and port are in same byte order as in the pcb
+ * The callback is responsible for freeing the pbuf
+ * if it's not used any more.
+ *
+ * ATTENTION: Be aware that 'addr' points into the pbuf 'p' so freeing this pbuf
+ * makes 'addr' invalid, too.
+ *
+ * @param arg user supplied argument (udp_pcb.recv_arg)
+ * @param pcb the udp_pcb which received data
+ * @param p the packet buffer that was received
+ * @param addr the remote IP address from which the packet was received
+ * @param port the remote port from which the packet was received
+ */
+ void (* recv)(void *arg, struct udp_pcb *pcb, struct pbuf *p,
+ struct ip_addr *addr, u16_t port);
+ /* user-supplied argument for the recv callback */
+ void *recv_arg;
+};
+/* udp_pcbs export for exernal reference (e.g. SNMP agent) */
+extern struct udp_pcb *udp_pcbs;
+
+/* The following functions is the application layer interface to the
+ UDP code. */
+struct udp_pcb * udp_new (void);
+void udp_remove (struct udp_pcb *pcb);
+err_t udp_bind (struct udp_pcb *pcb, struct ip_addr *ipaddr,
+ u16_t port);
+err_t udp_connect (struct udp_pcb *pcb, struct ip_addr *ipaddr,
+ u16_t port);
+void udp_disconnect (struct udp_pcb *pcb);
+void udp_recv (struct udp_pcb *pcb,
+ void (* recv)(void *arg, struct udp_pcb *upcb,
+ struct pbuf *p,
+ struct ip_addr *addr,
+ u16_t port),
+ void *recv_arg);
+err_t udp_sendto_if (struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *dst_ip, u16_t dst_port, struct netif *netif);
+err_t udp_sendto (struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *dst_ip, u16_t dst_port);
+err_t udp_send (struct udp_pcb *pcb, struct pbuf *p);
+
+#define udp_flags(pcb) ((pcb)->flags)
+#define udp_setflags(pcb, f) ((pcb)->flags = (f))
+
+/* The following functions are the lower layer interface to UDP. */
+void udp_input (struct pbuf *p, struct netif *inp);
+
+#define udp_init() /* Compatibility define, not init needed. */
+
+#if UDP_DEBUG
+void udp_debug_print(struct udp_hdr *udphdr);
+#else
+#define udp_debug_print(udphdr)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_UDP */
+
+#endif /* __LWIP_UDP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h
new file mode 100644
index 0000000..fb1542a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h
@@ -0,0 +1,194 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
+ * Copyright (c) 2003-2004 Leon Woestenberg <leon woestenberg axon tv>
+ * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+
+#ifndef __NETIF_ETHARP_H__
+#define __NETIF_ETHARP_H__
+
+#include "lwip/opt.h"
+
+#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/pbuf.h"
+#include "lwip/ip_addr.h"
+#include "lwip/netif.h"
+#include "lwip/ip.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef ETH_PAD_SIZE
+#define ETH_PAD_SIZE 0
+#endif
+
+#ifndef ETHARP_HWADDR_LEN
+#define ETHARP_HWADDR_LEN 6
+#endif
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct eth_addr {
+ PACK_STRUCT_FIELD(u8_t addr[ETHARP_HWADDR_LEN]);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct eth_hdr {
+#if ETH_PAD_SIZE
+ PACK_STRUCT_FIELD(u8_t padding[ETH_PAD_SIZE]);
+#endif
+ PACK_STRUCT_FIELD(struct eth_addr dest);
+ PACK_STRUCT_FIELD(struct eth_addr src);
+ PACK_STRUCT_FIELD(u16_t type);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE)
+
+#if ETHARP_SUPPORT_VLAN
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct eth_vlan_hdr {
+ PACK_STRUCT_FIELD(u16_t tpid);
+ PACK_STRUCT_FIELD(u16_t prio_vid);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define SIZEOF_VLAN_HDR 4
+#define VLAN_ID(vlan_hdr) (htons((vlan_hdr)->prio_vid) & 0xFFF)
+
+#endif /* ETHARP_SUPPORT_VLAN */
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+/** the ARP message */
+struct etharp_hdr {
+ PACK_STRUCT_FIELD(u16_t hwtype);
+ PACK_STRUCT_FIELD(u16_t proto);
+ PACK_STRUCT_FIELD(u16_t _hwlen_protolen);
+ PACK_STRUCT_FIELD(u16_t opcode);
+ PACK_STRUCT_FIELD(struct eth_addr shwaddr);
+ PACK_STRUCT_FIELD(struct ip_addr2 sipaddr);
+ PACK_STRUCT_FIELD(struct eth_addr dhwaddr);
+ PACK_STRUCT_FIELD(struct ip_addr2 dipaddr);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#define SIZEOF_ETHARP_HDR 28
+#define SIZEOF_ETHARP_PACKET (SIZEOF_ETH_HDR + SIZEOF_ETHARP_HDR)
+
+/** 5 seconds period */
+#define ARP_TMR_INTERVAL 5000
+
+#define ETHTYPE_ARP 0x0806
+#define ETHTYPE_IP 0x0800
+#define ETHTYPE_VLAN 0x8100
+#define ETHTYPE_PPPOEDISC 0x8863 /* PPP Over Ethernet Discovery Stage */
+#define ETHTYPE_PPPOE 0x8864 /* PPP Over Ethernet Session Stage */
+
+/** ARP message types (opcodes) */
+#define ARP_REQUEST 1
+#define ARP_REPLY 2
+
+#if ARP_QUEUEING
+/** struct for queueing outgoing packets for unknown address
+ * defined here to be accessed by memp.h
+ */
+struct etharp_q_entry {
+ struct etharp_q_entry *next;
+ struct pbuf *p;
+};
+#endif /* ARP_QUEUEING */
+
+#define etharp_init() /* Compatibility define, not init needed. */
+void etharp_tmr(void);
+s8_t etharp_find_addr(struct netif *netif, struct ip_addr *ipaddr,
+ struct eth_addr **eth_ret, struct ip_addr **ip_ret);
+void etharp_ip_input(struct netif *netif, struct pbuf *p);
+void etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr,
+ struct pbuf *p);
+err_t etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr);
+err_t etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q);
+err_t etharp_request(struct netif *netif, struct ip_addr *ipaddr);
+/** For Ethernet network interfaces, we might want to send "gratuitous ARP";
+ * this is an ARP packet sent by a node in order to spontaneously cause other
+ * nodes to update an entry in their ARP cache.
+ * From RFC 3220 "IP Mobility Support for IPv4" section 4.6. */
+#define etharp_gratuitous(netif) etharp_request((netif), &(netif)->ip_addr)
+
+err_t ethernet_input(struct pbuf *p, struct netif *netif);
+
+#if LWIP_AUTOIP
+err_t etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr,
+ const struct eth_addr *ethdst_addr,
+ const struct eth_addr *hwsrc_addr, const struct ip_addr *ipsrc_addr,
+ const struct eth_addr *hwdst_addr, const struct ip_addr *ipdst_addr,
+ const u16_t opcode);
+#endif /* LWIP_AUTOIP */
+
+#define eth_addr_cmp(addr1, addr2) (memcmp((addr1)->addr, (addr2)->addr, ETHARP_HWADDR_LEN) == 0)
+
+extern const struct eth_addr ethbroadcast, ethzero;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LWIP_ARP */
+
+#endif /* __NETIF_ARP_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h
new file mode 100644
index 0000000..3f4fa62
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h
@@ -0,0 +1,55 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __NETIF_LOOPIF_H__
+#define __NETIF_LOOPIF_H__
+
+#include "lwip/opt.h"
+#include "lwip/netif.h"
+#include "lwip/err.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
+#define loopif_poll netif_poll
+#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
+
+err_t loopif_init(struct netif *netif);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NETIF_LOOPIF_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h
new file mode 100644
index 0000000..fac0a78
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h
@@ -0,0 +1,163 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*****************************************************************************
+* ppp_oe.h - PPP Over Ethernet implementation for lwIP.
+*
+* Copyright (c) 2006 by Marc Boucher, Services Informatiques (MBSI) inc.
+*
+* The authors hereby grant permission to use, copy, modify, distribute,
+* and license this software and its documentation for any purpose, provided
+* that existing copyright notices are retained in all copies and that this
+* notice and the following disclaimer are included verbatim in any
+* distributions. No written agreement, license, or royalty fee is required
+* for any of the authorized uses.
+*
+* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR
+* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL THE 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.
+*
+******************************************************************************
+* REVISION HISTORY
+*
+* 06-01-01 Marc Boucher <marc mbsi ca>
+* Ported to lwIP.
+*****************************************************************************/
+
+
+
+/* based on NetBSD: if_pppoe.c,v 1.64 2006/01/31 23:50:15 martin Exp */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Martin Husemann <martin NetBSD org>.
+ *
+ * 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 acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION 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.
+ */
+#ifndef PPP_OE_H
+#define PPP_OE_H
+
+#include "lwip/opt.h"
+
+#if PPPOE_SUPPORT > 0
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct pppoehdr {
+ PACK_STRUCT_FIELD(u8_t vertype);
+ PACK_STRUCT_FIELD(u8_t code);
+ PACK_STRUCT_FIELD(u16_t session);
+ PACK_STRUCT_FIELD(u16_t plen);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/bpstruct.h"
+#endif
+PACK_STRUCT_BEGIN
+struct pppoetag {
+ PACK_STRUCT_FIELD(u16_t tag);
+ PACK_STRUCT_FIELD(u16_t len);
+} PACK_STRUCT_STRUCT;
+PACK_STRUCT_END
+#ifdef PACK_STRUCT_USE_INCLUDES
+# include "arch/epstruct.h"
+#endif
+
+
+#define PPPOE_STATE_INITIAL 0
+#define PPPOE_STATE_PADI_SENT 1
+#define PPPOE_STATE_PADR_SENT 2
+#define PPPOE_STATE_SESSION 3
+#define PPPOE_STATE_CLOSING 4
+/* passive */
+#define PPPOE_STATE_PADO_SENT 1
+
+#define PPPOE_HEADERLEN sizeof(struct pppoehdr)
+#define PPPOE_VERTYPE 0x11 /* VER=1, TYPE = 1 */
+
+#define PPPOE_TAG_EOL 0x0000 /* end of list */
+#define PPPOE_TAG_SNAME 0x0101 /* service name */
+#define PPPOE_TAG_ACNAME 0x0102 /* access concentrator name */
+#define PPPOE_TAG_HUNIQUE 0x0103 /* host unique */
+#define PPPOE_TAG_ACCOOKIE 0x0104 /* AC cookie */
+#define PPPOE_TAG_VENDOR 0x0105 /* vendor specific */
+#define PPPOE_TAG_RELAYSID 0x0110 /* relay session id */
+#define PPPOE_TAG_SNAME_ERR 0x0201 /* service name error */
+#define PPPOE_TAG_ACSYS_ERR 0x0202 /* AC system error */
+#define PPPOE_TAG_GENERIC_ERR 0x0203 /* gerneric error */
+
+#define PPPOE_CODE_PADI 0x09 /* Active Discovery Initiation */
+#define PPPOE_CODE_PADO 0x07 /* Active Discovery Offer */
+#define PPPOE_CODE_PADR 0x19 /* Active Discovery Request */
+#define PPPOE_CODE_PADS 0x65 /* Active Discovery Session confirmation */
+#define PPPOE_CODE_PADT 0xA7 /* Active Discovery Terminate */
+
+#ifndef ETHERMTU
+#define ETHERMTU 1500
+#endif
+
+/* two byte PPP protocol discriminator, then IP data */
+#define PPPOE_MAXMTU (ETHERMTU-PPPOE_HEADERLEN-2)
+
+struct pppoe_softc;
+
+
+void pppoe_init(void);
+
+err_t pppoe_create(struct netif *ethif, int pd, void (*linkStatusCB)(int pd, int up), struct pppoe_softc **scptr);
+err_t pppoe_destroy(struct netif *ifp);
+
+int pppoe_connect(struct pppoe_softc *sc);
+void pppoe_disconnect(struct pppoe_softc *sc);
+
+void pppoe_disc_input(struct netif *netif, struct pbuf *p);
+void pppoe_data_input(struct netif *netif, struct pbuf *p);
+
+err_t pppoe_xmit(struct pppoe_softc *sc, struct pbuf *pb);
+
+extern int pppoe_hdrlen;
+
+#endif /* PPPOE_SUPPORT */
+
+#endif /* PPP_OE_H */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h
new file mode 100644
index 0000000..ddc2dfa
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h
@@ -0,0 +1,53 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * 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. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE 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.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __NETIF_SLIPIF_H__
+#define __NETIF_SLIPIF_H__
+
+#include "lwip/netif.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+err_t slipif_init(struct netif * netif);
+void slipif_poll(struct netif *netif);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c
new file mode 100644
index 0000000..1a5d134
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c
@@ -0,0 +1,1224 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Address Resolution Protocol module for IP over Ethernet
+ *
+ * Functionally, ARP is divided into two parts. The first maps an IP address
+ * to a physical address when sending a packet, and the second part answers
+ * requests from other machines for our physical address.
+ *
+ * This implementation complies with RFC 826 (Ethernet ARP). It supports
+ * Gratuitious ARP from RFC3220 (IP Mobility Support for IPv4) section 4.6
+ * if an interface calls etharp_gratuitous(our_netif) upon address change.
+ */
+
+/*
+ * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
+ * Copyright (c) 2003-2004 Leon Woestenberg <leon woestenberg axon tv>
+ * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ */
+
+#include "lwip/opt.h"
+
+#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */
+
+#include "lwip/inet.h"
+#include "lwip/ip.h"
+#include "lwip/stats.h"
+#include "lwip/snmp.h"
+#include "lwip/dhcp.h"
+#include "lwip/autoip.h"
+#include "netif/etharp.h"
+
+#if PPPOE_SUPPORT
+#include "netif/ppp_oe.h"
+#endif /* PPPOE_SUPPORT */
+
+#include <string.h>
+
+/** the time an ARP entry stays valid after its last update,
+ * for ARP_TMR_INTERVAL = 5000, this is
+ * (240 * 5) seconds = 20 minutes.
+ */
+#define ARP_MAXAGE 240
+/** the time an ARP entry stays pending after first request,
+ * for ARP_TMR_INTERVAL = 5000, this is
+ * (2 * 5) seconds = 10 seconds.
+ *
+ * @internal Keep this number at least 2, otherwise it might
+ * run out instantly if the timeout occurs directly after a request.
+ */
+#define ARP_MAXPENDING 2
+
+#define HWTYPE_ETHERNET 1
+
+#define ARPH_HWLEN(hdr) (ntohs((hdr)->_hwlen_protolen) >> 8)
+#define ARPH_PROTOLEN(hdr) (ntohs((hdr)->_hwlen_protolen) & 0xff)
+
+#define ARPH_HWLEN_SET(hdr, len) (hdr)->_hwlen_protolen = htons(ARPH_PROTOLEN(hdr) | ((len) << 8))
+#define ARPH_PROTOLEN_SET(hdr, len) (hdr)->_hwlen_protolen = htons((len) | (ARPH_HWLEN(hdr) << 8))
+
+enum etharp_state {
+ ETHARP_STATE_EMPTY = 0,
+ ETHARP_STATE_PENDING,
+ ETHARP_STATE_STABLE
+};
+
+struct etharp_entry {
+#if ARP_QUEUEING
+ /**
+ * Pointer to queue of pending outgoing packets on this ARP entry.
+ */
+ struct etharp_q_entry *q;
+#endif
+ struct ip_addr ipaddr;
+ struct eth_addr ethaddr;
+ enum etharp_state state;
+ u8_t ctime;
+ struct netif *netif;
+};
+
+const struct eth_addr ethbroadcast = {{0xff,0xff,0xff,0xff,0xff,0xff}};
+const struct eth_addr ethzero = {{0,0,0,0,0,0}};
+static struct etharp_entry arp_table[ARP_TABLE_SIZE];
+#if !LWIP_NETIF_HWADDRHINT
+static u8_t etharp_cached_entry;
+#endif
+
+/**
+ * Try hard to create a new entry - we want the IP address to appear in
+ * the cache (even if this means removing an active entry or so). */
+#define ETHARP_TRY_HARD 1
+#define ETHARP_FIND_ONLY 2
+
+#if LWIP_NETIF_HWADDRHINT
+#define NETIF_SET_HINT(netif, hint) if (((netif) != NULL) && ((netif)->addr_hint != NULL)) \
+ *((netif)->addr_hint) = (hint);
+static s8_t find_entry(struct ip_addr *ipaddr, u8_t flags, struct netif *netif);
+#else /* LWIP_NETIF_HWADDRHINT */
+static s8_t find_entry(struct ip_addr *ipaddr, u8_t flags);
+#endif /* LWIP_NETIF_HWADDRHINT */
+
+static err_t update_arp_entry(struct netif *netif, struct ip_addr *ipaddr, struct eth_addr *ethaddr, u8_t flags);
+
+
+/* Some checks, instead of etharp_init(): */
+#if (LWIP_ARP && (ARP_TABLE_SIZE > 0x7f))
+ #error "If you want to use ARP, ARP_TABLE_SIZE must fit in an s8_t, so, you have to reduce it in your lwipopts.h"
+#endif
+
+
+#if ARP_QUEUEING
+/**
+ * Free a complete queue of etharp entries
+ *
+ * @param q a qeueue of etharp_q_entry's to free
+ */
+static void
+free_etharp_q(struct etharp_q_entry *q)
+{
+ struct etharp_q_entry *r;
+ LWIP_ASSERT("q != NULL", q != NULL);
+ LWIP_ASSERT("q->p != NULL", q->p != NULL);
+ while (q) {
+ r = q;
+ q = q->next;
+ LWIP_ASSERT("r->p != NULL", (r->p != NULL));
+ pbuf_free(r->p);
+ memp_free(MEMP_ARP_QUEUE, r);
+ }
+}
+#endif
+
+/**
+ * Clears expired entries in the ARP table.
+ *
+ * This function should be called every ETHARP_TMR_INTERVAL microseconds (5 seconds),
+ * in order to expire entries in the ARP table.
+ */
+void
+etharp_tmr(void)
+{
+ u8_t i;
+
+ LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n"));
+ /* remove expired entries from the ARP table */
+ for (i = 0; i < ARP_TABLE_SIZE; ++i) {
+ arp_table[i].ctime++;
+ if (((arp_table[i].state == ETHARP_STATE_STABLE) &&
+ (arp_table[i].ctime >= ARP_MAXAGE)) ||
+ ((arp_table[i].state == ETHARP_STATE_PENDING) &&
+ (arp_table[i].ctime >= ARP_MAXPENDING))) {
+ /* pending or stable entry has become old! */
+ LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired %s entry %"U16_F".\n",
+ arp_table[i].state == ETHARP_STATE_STABLE ? "stable" : "pending", (u16_t)i));
+ /* clean up entries that have just been expired */
+ /* remove from SNMP ARP index tree */
+ snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr);
+#if ARP_QUEUEING
+ /* and empty packet queue */
+ if (arp_table[i].q != NULL) {
+ /* remove all queued packets */
+ LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q)));
+ free_etharp_q(arp_table[i].q);
+ arp_table[i].q = NULL;
+ }
+#endif
+ /* recycle entry for re-use */
+ arp_table[i].state = ETHARP_STATE_EMPTY;
+ }
+#if ARP_QUEUEING
+ /* still pending entry? (not expired) */
+ if (arp_table[i].state == ETHARP_STATE_PENDING) {
+ /* resend an ARP query here? */
+ }
+#endif
+ }
+}
+
+/**
+ * Search the ARP table for a matching or new entry.
+ *
+ * If an IP address is given, return a pending or stable ARP entry that matches
+ * the address. If no match is found, create a new entry with this address set,
+ * but in state ETHARP_EMPTY. The caller must check and possibly change the
+ * state of the returned entry.
+ *
+ * If ipaddr is NULL, return a initialized new entry in state ETHARP_EMPTY.
+ *
+ * In all cases, attempt to create new entries from an empty entry. If no
+ * empty entries are available and ETHARP_TRY_HARD flag is set, recycle
+ * old entries. Heuristic choose the least important entry for recycling.
+ *
+ * @param ipaddr IP address to find in ARP cache, or to add if not found.
+ * @param flags
+ * - ETHARP_TRY_HARD: Try hard to create a entry by allowing recycling of
+ * active (stable or pending) entries.
+ *
+ * @return The ARP entry index that matched or is created, ERR_MEM if no
+ * entry is found or could be recycled.
+ */
+static s8_t
+#if LWIP_NETIF_HWADDRHINT
+find_entry(struct ip_addr *ipaddr, u8_t flags, struct netif *netif)
+#else /* LWIP_NETIF_HWADDRHINT */
+find_entry(struct ip_addr *ipaddr, u8_t flags)
+#endif /* LWIP_NETIF_HWADDRHINT */
+{
+ s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE;
+ s8_t empty = ARP_TABLE_SIZE;
+ u8_t i = 0, age_pending = 0, age_stable = 0;
+#if ARP_QUEUEING
+ /* oldest entry with packets on queue */
+ s8_t old_queue = ARP_TABLE_SIZE;
+ /* its age */
+ u8_t age_queue = 0;
+#endif
+
+ /* First, test if the last call to this function asked for the
+ * same address. If so, we're really fast! */
+ if (ipaddr) {
+ /* ipaddr to search for was given */
+#if LWIP_NETIF_HWADDRHINT
+ if ((netif != NULL) && (netif->addr_hint != NULL)) {
+ /* per-pcb cached entry was given */
+ u8_t per_pcb_cache = *(netif->addr_hint);
+ if ((per_pcb_cache < ARP_TABLE_SIZE) && arp_table[per_pcb_cache].state == ETHARP_STATE_STABLE) {
+ /* the per-pcb-cached entry is stable */
+ if (ip_addr_cmp(ipaddr, &arp_table[per_pcb_cache].ipaddr)) {
+ /* per-pcb cached entry was the right one! */
+ ETHARP_STATS_INC(etharp.cachehit);
+ return per_pcb_cache;
+ }
+ }
+ }
+#else /* #if LWIP_NETIF_HWADDRHINT */
+ if (arp_table[etharp_cached_entry].state == ETHARP_STATE_STABLE) {
+ /* the cached entry is stable */
+ if (ip_addr_cmp(ipaddr, &arp_table[etharp_cached_entry].ipaddr)) {
+ /* cached entry was the right one! */
+ ETHARP_STATS_INC(etharp.cachehit);
+ return etharp_cached_entry;
+ }
+ }
+#endif /* #if LWIP_NETIF_HWADDRHINT */
+ }
+
+ /**
+ * a) do a search through the cache, remember candidates
+ * b) select candidate entry
+ * c) create new entry
+ */
+
+ /* a) in a single search sweep, do all of this
+ * 1) remember the first empty entry (if any)
+ * 2) remember the oldest stable entry (if any)
+ * 3) remember the oldest pending entry without queued packets (if any)
+ * 4) remember the oldest pending entry with queued packets (if any)
+ * 5) search for a matching IP entry, either pending or stable
+ * until 5 matches, or all entries are searched for.
+ */
+
+ for (i = 0; i < ARP_TABLE_SIZE; ++i) {
+ /* no empty entry found yet and now we do find one? */
+ if ((empty == ARP_TABLE_SIZE) && (arp_table[i].state == ETHARP_STATE_EMPTY)) {
+ LWIP_DEBUGF(ETHARP_DEBUG, ("find_entry: found empty entry %"U16_F"\n", (u16_t)i));
+ /* remember first empty entry */
+ empty = i;
+ }
+ /* pending entry? */
+ else if (arp_table[i].state == ETHARP_STATE_PENDING) {
+ /* if given, does IP address match IP address in ARP entry? */
+ if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: found matching pending entry %"U16_F"\n", (u16_t)i));
+ /* found exact IP address match, simply bail out */
+#if LWIP_NETIF_HWADDRHINT
+ NETIF_SET_HINT(netif, i);
+#else /* #if LWIP_NETIF_HWADDRHINT */
+ etharp_cached_entry = i;
+#endif /* #if LWIP_NETIF_HWADDRHINT */
+ return i;
+#if ARP_QUEUEING
+ /* pending with queued packets? */
+ } else if (arp_table[i].q != NULL) {
+ if (arp_table[i].ctime >= age_queue) {
+ old_queue = i;
+ age_queue = arp_table[i].ctime;
+ }
+#endif
+ /* pending without queued packets? */
+ } else {
+ if (arp_table[i].ctime >= age_pending) {
+ old_pending = i;
+ age_pending = arp_table[i].ctime;
+ }
+ }
+ }
+ /* stable entry? */
+ else if (arp_table[i].state == ETHARP_STATE_STABLE) {
+ /* if given, does IP address match IP address in ARP entry? */
+ if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: found matching stable entry %"U16_F"\n", (u16_t)i));
+ /* found exact IP address match, simply bail out */
+#if LWIP_NETIF_HWADDRHINT
+ NETIF_SET_HINT(netif, i);
+#else /* #if LWIP_NETIF_HWADDRHINT */
+ etharp_cached_entry = i;
+#endif /* #if LWIP_NETIF_HWADDRHINT */
+ return i;
+ /* remember entry with oldest stable entry in oldest, its age in maxtime */
+ } else if (arp_table[i].ctime >= age_stable) {
+ old_stable = i;
+ age_stable = arp_table[i].ctime;
+ }
+ }
+ }
+ /* { we have no match } => try to create a new entry */
+
+ /* no empty entry found and not allowed to recycle? */
+ if (((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_TRY_HARD) == 0))
+ /* or don't create new entry, only search? */
+ || ((flags & ETHARP_FIND_ONLY) != 0)) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: no empty entry found and not allowed to recycle\n"));
+ return (s8_t)ERR_MEM;
+ }
+
+ /* b) choose the least destructive entry to recycle:
+ * 1) empty entry
+ * 2) oldest stable entry
+ * 3) oldest pending entry without queued packets
+ * 4) oldest pending entry with queued packets
+ *
+ * { ETHARP_TRY_HARD is set at this point }
+ */
+
+ /* 1) empty entry available? */
+ if (empty < ARP_TABLE_SIZE) {
+ i = empty;
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting empty entry %"U16_F"\n", (u16_t)i));
+ }
+ /* 2) found recyclable stable entry? */
+ else if (old_stable < ARP_TABLE_SIZE) {
+ /* recycle oldest stable*/
+ i = old_stable;
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest stable entry %"U16_F"\n", (u16_t)i));
+#if ARP_QUEUEING
+ /* no queued packets should exist on stable entries */
+ LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL);
+#endif
+ /* 3) found recyclable pending entry without queued packets? */
+ } else if (old_pending < ARP_TABLE_SIZE) {
+ /* recycle oldest pending */
+ i = old_pending;
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest pending entry %"U16_F" (without queue)\n", (u16_t)i));
+#if ARP_QUEUEING
+ /* 4) found recyclable pending entry with queued packets? */
+ } else if (old_queue < ARP_TABLE_SIZE) {
+ /* recycle oldest pending */
+ i = old_queue;
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest pending entry %"U16_F", freeing packet queue %p\n", (u16_t)i, (void *)(arp_table[i].q)));
+ free_etharp_q(arp_table[i].q);
+ arp_table[i].q = NULL;
+#endif
+ /* no empty or recyclable entries found */
+ } else {
+ return (s8_t)ERR_MEM;
+ }
+
+ /* { empty or recyclable entry found } */
+ LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE);
+
+ if (arp_table[i].state != ETHARP_STATE_EMPTY)
+ {
+ snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr);
+ }
+ /* recycle entry (no-op for an already empty entry) */
+ arp_table[i].state = ETHARP_STATE_EMPTY;
+
+ /* IP address given? */
+ if (ipaddr != NULL) {
+ /* set IP address */
+ ip_addr_set(&arp_table[i].ipaddr, ipaddr);
+ }
+ arp_table[i].ctime = 0;
+#if LWIP_NETIF_HWADDRHINT
+ NETIF_SET_HINT(netif, i);
+#else /* #if LWIP_NETIF_HWADDRHINT */
+ etharp_cached_entry = i;
+#endif /* #if LWIP_NETIF_HWADDRHINT */
+ return (err_t)i;
+}
+
+/**
+ * Send an IP packet on the network using netif->linkoutput
+ * The ethernet header is filled in before sending.
+ *
+ * @params netif the lwIP network interface on which to send the packet
+ * @params p the packet to send, p->payload pointing to the (uninitialized) ethernet header
+ * @params src the source MAC address to be copied into the ethernet header
+ * @params dst the destination MAC address to be copied into the ethernet header
+ * @return ERR_OK if the packet was sent, any other err_t on failure
+ */
+static err_t
+etharp_send_ip(struct netif *netif, struct pbuf *p, struct eth_addr *src, struct eth_addr *dst)
+{
+ struct eth_hdr *ethhdr = p->payload;
+ u8_t k;
+
+ LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!",
+ (netif->hwaddr_len == ETHARP_HWADDR_LEN));
+ k = ETHARP_HWADDR_LEN;
+ while(k > 0) {
+ k--;
+ ethhdr->dest.addr[k] = dst->addr[k];
+ ethhdr->src.addr[k] = src->addr[k];
+ }
+ ethhdr->type = htons(ETHTYPE_IP);
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_send_ip: sending packet %p\n", (void *)p));
+ /* send the packet */
+ return netif->linkoutput(netif, p);
+}
+
+/**
+ * Update (or insert) a IP/MAC address pair in the ARP cache.
+ *
+ * If a pending entry is resolved, any queued packets will be sent
+ * at this point.
+ *
+ * @param ipaddr IP address of the inserted ARP entry.
+ * @param ethaddr Ethernet address of the inserted ARP entry.
+ * @param flags Defines behaviour:
+ * - ETHARP_TRY_HARD Allows ARP to insert this as a new item. If not specified,
+ * only existing ARP entries will be updated.
+ *
+ * @return
+ * - ERR_OK Succesfully updated ARP cache.
+ * - ERR_MEM If we could not add a new ARP entry when ETHARP_TRY_HARD was set.
+ * - ERR_ARG Non-unicast address given, those will not appear in ARP cache.
+ *
+ * @see pbuf_free()
+ */
+static err_t
+update_arp_entry(struct netif *netif, struct ip_addr *ipaddr, struct eth_addr *ethaddr, u8_t flags)
+{
+ s8_t i;
+ u8_t k;
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry()\n"));
+ LWIP_ASSERT("netif->hwaddr_len == ETHARP_HWADDR_LEN", netif->hwaddr_len == ETHARP_HWADDR_LEN);
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n",
+ ip4_addr1(ipaddr), ip4_addr2(ipaddr), ip4_addr3(ipaddr), ip4_addr4(ipaddr),
+ ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2],
+ ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5]));
+ /* non-unicast address? */
+ if (ip_addr_isany(ipaddr) ||
+ ip_addr_isbroadcast(ipaddr, netif) ||
+ ip_addr_ismulticast(ipaddr)) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: will not add non-unicast IP address to ARP cache\n"));
+ return ERR_ARG;
+ }
+ /* find or create ARP entry */
+#if LWIP_NETIF_HWADDRHINT
+ i = find_entry(ipaddr, flags, netif);
+#else /* LWIP_NETIF_HWADDRHINT */
+ i = find_entry(ipaddr, flags);
+#endif /* LWIP_NETIF_HWADDRHINT */
+ /* bail out if no entry could be found */
+ if (i < 0)
+ return (err_t)i;
+
+ /* mark it stable */
+ arp_table[i].state = ETHARP_STATE_STABLE;
+ /* record network interface */
+ arp_table[i].netif = netif;
+
+ /* insert in SNMP ARP index tree */
+ snmp_insert_arpidx_tree(netif, &arp_table[i].ipaddr);
+
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: updating stable entry %"S16_F"\n", (s16_t)i));
+ /* update address */
+ k = ETHARP_HWADDR_LEN;
+ while (k > 0) {
+ k--;
+ arp_table[i].ethaddr.addr[k] = ethaddr->addr[k];
+ }
+ /* reset time stamp */
+ arp_table[i].ctime = 0;
+#if ARP_QUEUEING
+ /* this is where we will send out queued packets! */
+ while (arp_table[i].q != NULL) {
+ struct pbuf *p;
+ /* remember remainder of queue */
+ struct etharp_q_entry *q = arp_table[i].q;
+ /* pop first item off the queue */
+ arp_table[i].q = q->next;
+ /* get the packet pointer */
+ p = q->p;
+ /* now queue entry can be freed */
+ memp_free(MEMP_ARP_QUEUE, q);
+ /* send the queued IP packet */
+ etharp_send_ip(netif, p, (struct eth_addr*)(netif->hwaddr), ethaddr);
+ /* free the queued IP packet */
+ pbuf_free(p);
+ }
+#endif
+ return ERR_OK;
+}
+
+/**
+ * Finds (stable) ethernet/IP address pair from ARP table
+ * using interface and IP address index.
+ * @note the addresses in the ARP table are in network order!
+ *
+ * @param netif points to interface index
+ * @param ipaddr points to the (network order) IP address index
+ * @param eth_ret points to return pointer
+ * @param ip_ret points to return pointer
+ * @return table index if found, -1 otherwise
+ */
+s8_t
+etharp_find_addr(struct netif *netif, struct ip_addr *ipaddr,
+ struct eth_addr **eth_ret, struct ip_addr **ip_ret)
+{
+ s8_t i;
+
+ LWIP_UNUSED_ARG(netif);
+
+#if LWIP_NETIF_HWADDRHINT
+ i = find_entry(ipaddr, ETHARP_FIND_ONLY, NULL);
+#else /* LWIP_NETIF_HWADDRHINT */
+ i = find_entry(ipaddr, ETHARP_FIND_ONLY);
+#endif /* LWIP_NETIF_HWADDRHINT */
+ if((i >= 0) && arp_table[i].state == ETHARP_STATE_STABLE) {
+ *eth_ret = &arp_table[i].ethaddr;
+ *ip_ret = &arp_table[i].ipaddr;
+ return i;
+ }
+ return -1;
+}
+
+/**
+ * Updates the ARP table using the given IP packet.
+ *
+ * Uses the incoming IP packet's source address to update the
+ * ARP cache for the local network. The function does not alter
+ * or free the packet. This function must be called before the
+ * packet p is passed to the IP layer.
+ *
+ * @param netif The lwIP network interface on which the IP packet pbuf arrived.
+ * @param p The IP packet that arrived on netif.
+ *
+ * @return NULL
+ *
+ * @see pbuf_free()
+ */
+void
+etharp_ip_input(struct netif *netif, struct pbuf *p)
+{
+ struct eth_hdr *ethhdr;
+ struct ip_hdr *iphdr;
+ LWIP_ERROR("netif != NULL", (netif != NULL), return;);
+ /* Only insert an entry if the source IP address of the
+ incoming IP packet comes from a host on the local network. */
+ ethhdr = p->payload;
+ iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR);
+#if ETHARP_SUPPORT_VLAN
+ if (ethhdr->type == ETHTYPE_VLAN) {
+ iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR);
+ }
+#endif /* ETHARP_SUPPORT_VLAN */
+
+ /* source is not on the local network? */
+ if (!ip_addr_netcmp(&(iphdr->src), &(netif->ip_addr), &(netif->netmask))) {
+ /* do nothing */
+ return;
+ }
+
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_ip_input: updating ETHARP table.\n"));
+ /* update ARP table */
+ /* @todo We could use ETHARP_TRY_HARD if we think we are going to talk
+ * back soon (for example, if the destination IP address is ours. */
+ update_arp_entry(netif, &(iphdr->src), &(ethhdr->src), 0);
+}
+
+
+/**
+ * Responds to ARP requests to us. Upon ARP replies to us, add entry to cache
+ * send out queued IP packets. Updates cache with snooped address pairs.
+ *
+ * Should be called for incoming ARP packets. The pbuf in the argument
+ * is freed by this function.
+ *
+ * @param netif The lwIP network interface on which the ARP packet pbuf arrived.
+ * @param ethaddr Ethernet address of netif.
+ * @param p The ARP packet that arrived on netif. Is freed by this function.
+ *
+ * @return NULL
+ *
+ * @see pbuf_free()
+ */
+void
+etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p)
+{
+ struct etharp_hdr *hdr;
+ struct eth_hdr *ethhdr;
+ /* these are aligned properly, whereas the ARP header fields might not be */
+ struct ip_addr sipaddr, dipaddr;
+ u8_t i;
+ u8_t for_us;
+#if LWIP_AUTOIP
+ const u8_t * ethdst_hwaddr;
+#endif /* LWIP_AUTOIP */
+
+ LWIP_ERROR("netif != NULL", (netif != NULL), return;);
+
+ /* drop short ARP packets: we have to check for p->len instead of p->tot_len here
+ since a struct etharp_hdr is pointed to p->payload, so it musn't be chained! */
+ if (p->len < SIZEOF_ETHARP_PACKET) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING,
+ ("etharp_arp_input: packet dropped, too short (%"S16_F"/%"S16_F")\n", p->tot_len,
+ (s16_t)SIZEOF_ETHARP_PACKET));
+ ETHARP_STATS_INC(etharp.lenerr);
+ ETHARP_STATS_INC(etharp.drop);
+ pbuf_free(p);
+ return;
+ }
+
+ ethhdr = p->payload;
+ hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR);
+#if ETHARP_SUPPORT_VLAN
+ if (ethhdr->type == ETHTYPE_VLAN) {
+ hdr = (struct etharp_hdr *)(((u8_t*)ethhdr) + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR);
+ }
+#endif /* ETHARP_SUPPORT_VLAN */
+
+ /* RFC 826 "Packet Reception": */
+ if ((hdr->hwtype != htons(HWTYPE_ETHERNET)) ||
+ (hdr->_hwlen_protolen != htons((ETHARP_HWADDR_LEN << 8) | sizeof(struct ip_addr))) ||
+ (hdr->proto != htons(ETHTYPE_IP)) ||
+ (ethhdr->type != htons(ETHTYPE_ARP))) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING,
+ ("etharp_arp_input: packet dropped, wrong hw type, hwlen, proto, protolen or ethernet type (%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F")\n",
+ hdr->hwtype, ARPH_HWLEN(hdr), hdr->proto, ARPH_PROTOLEN(hdr), ethhdr->type));
+ ETHARP_STATS_INC(etharp.proterr);
+ ETHARP_STATS_INC(etharp.drop);
+ pbuf_free(p);
+ return;
+ }
+ ETHARP_STATS_INC(etharp.recv);
+
+#if LWIP_AUTOIP
+ /* We have to check if a host already has configured our random
+ * created link local address and continously check if there is
+ * a host with this IP-address so we can detect collisions */
+ autoip_arp_reply(netif, hdr);
+#endif /* LWIP_AUTOIP */
+
+ /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without
+ * structure packing (not using structure copy which breaks strict-aliasing rules). */
+ SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr));
+ SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr));
+
+ /* this interface is not configured? */
+ if (netif->ip_addr.addr == 0) {
+ for_us = 0;
+ } else {
+ /* ARP packet directed to us? */
+ for_us = ip_addr_cmp(&dipaddr, &(netif->ip_addr));
+ }
+
+ /* ARP message directed to us? */
+ if (for_us) {
+ /* add IP address in ARP cache; assume requester wants to talk to us.
+ * can result in directly sending the queued packets for this host. */
+ update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), ETHARP_TRY_HARD);
+ /* ARP message not directed to us? */
+ } else {
+ /* update the source IP address in the cache, if present */
+ update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), 0);
+ }
+
+ /* now act on the message itself */
+ switch (htons(hdr->opcode)) {
+ /* ARP request? */
+ case ARP_REQUEST:
+ /* ARP request. If it asked for our address, we send out a
+ * reply. In any case, we time-stamp any existing ARP entry,
+ * and possiby send out an IP packet that was queued on it. */
+
+ LWIP_DEBUGF (ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP request\n"));
+ /* ARP request for our address? */
+ if (for_us) {
+
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: replying to ARP request for our IP address\n"));
+ /* Re-use pbuf to send ARP reply.
+ Since we are re-using an existing pbuf, we can't call etharp_raw since
+ that would allocate a new pbuf. */
+ hdr->opcode = htons(ARP_REPLY);
+
+ hdr->dipaddr = hdr->sipaddr;
+ SMEMCPY(&hdr->sipaddr, &netif->ip_addr, sizeof(hdr->sipaddr));
+
+ LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!",
+ (netif->hwaddr_len == ETHARP_HWADDR_LEN));
+ i = ETHARP_HWADDR_LEN;
+#if LWIP_AUTOIP
+ /* If we are using Link-Local, ARP packets must be broadcast on the
+ * link layer. (See RFC3927 Section 2.5) */
+ ethdst_hwaddr = ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) ? (u8_t*)(ethbroadcast.addr) : hdr->shwaddr.addr;
+#endif /* LWIP_AUTOIP */
+
+ while(i > 0) {
+ i--;
+ hdr->dhwaddr.addr[i] = hdr->shwaddr.addr[i];
+#if LWIP_AUTOIP
+ ethhdr->dest.addr[i] = ethdst_hwaddr[i];
+#else /* LWIP_AUTOIP */
+ ethhdr->dest.addr[i] = hdr->shwaddr.addr[i];
+#endif /* LWIP_AUTOIP */
+ hdr->shwaddr.addr[i] = ethaddr->addr[i];
+ ethhdr->src.addr[i] = ethaddr->addr[i];
+ }
+
+ /* hwtype, hwaddr_len, proto, protolen and the type in the ethernet header
+ are already correct, we tested that before */
+
+ /* return ARP reply */
+ netif->linkoutput(netif, p);
+ /* we are not configured? */
+ } else if (netif->ip_addr.addr == 0) {
+ /* { for_us == 0 and netif->ip_addr.addr == 0 } */
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: we are unconfigured, ARP request ignored.\n"));
+ /* request was not directed to us */
+ } else {
+ /* { for_us == 0 and netif->ip_addr.addr != 0 } */
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP request was not for us.\n"));
+ }
+ break;
+ case ARP_REPLY:
+ /* ARP reply. We already updated the ARP cache earlier. */
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP reply\n"));
+#if (LWIP_DHCP && DHCP_DOES_ARP_CHECK)
+ /* DHCP wants to know about ARP replies from any host with an
+ * IP address also offered to us by the DHCP server. We do not
+ * want to take a duplicate IP address on a single network.
+ * @todo How should we handle redundant (fail-over) interfaces? */
+ dhcp_arp_reply(netif, &sipaddr);
+#endif
+ break;
+ default:
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP unknown opcode type %"S16_F"\n", htons(hdr->opcode)));
+ ETHARP_STATS_INC(etharp.err);
+ break;
+ }
+ /* free ARP packet */
+ pbuf_free(p);
+}
+
+/**
+ * Resolve and fill-in Ethernet address header for outgoing IP packet.
+ *
+ * For IP multicast and broadcast, corresponding Ethernet addresses
+ * are selected and the packet is transmitted on the link.
+ *
+ * For unicast addresses, the packet is submitted to etharp_query(). In
+ * case the IP address is outside the local network, the IP address of
+ * the gateway is used.
+ *
+ * @param netif The lwIP network interface which the IP packet will be sent on.
+ * @param q The pbuf(s) containing the IP packet to be sent.
+ * @param ipaddr The IP address of the packet destination.
+ *
+ * @return
+ * - ERR_RTE No route to destination (no gateway to external networks),
+ * or the return type of either etharp_query() or etharp_send_ip().
+ */
+err_t
+etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr)
+{
+ struct eth_addr *dest, mcastaddr;
+
+ /* make room for Ethernet header - should not fail */
+ if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) {
+ /* bail out */
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
+ ("etharp_output: could not allocate room for header.\n"));
+ LINK_STATS_INC(link.lenerr);
+ return ERR_BUF;
+ }
+
+ /* assume unresolved Ethernet address */
+ dest = NULL;
+ /* Determine on destination hardware address. Broadcasts and multicasts
+ * are special, other IP addresses are looked up in the ARP table. */
+
+ /* broadcast destination IP address? */
+ if (ip_addr_isbroadcast(ipaddr, netif)) {
+ /* broadcast on Ethernet also */
+ dest = (struct eth_addr *)ðbroadcast;
+ /* multicast destination IP address? */
+ } else if (ip_addr_ismulticast(ipaddr)) {
+ /* Hash IP multicast address to MAC address.*/
+ mcastaddr.addr[0] = 0x01;
+ mcastaddr.addr[1] = 0x00;
+ mcastaddr.addr[2] = 0x5e;
+ mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f;
+ mcastaddr.addr[4] = ip4_addr3(ipaddr);
+ mcastaddr.addr[5] = ip4_addr4(ipaddr);
+ /* destination Ethernet address is multicast */
+ dest = &mcastaddr;
+ /* unicast destination IP address? */
+ } else {
+ /* outside local network? */
+ if (!ip_addr_netcmp(ipaddr, &(netif->ip_addr), &(netif->netmask))) {
+ /* interface has default gateway? */
+ if (netif->gw.addr != 0) {
+ /* send to hardware address of default gateway IP address */
+ ipaddr = &(netif->gw);
+ /* no default gateway available */
+ } else {
+ /* no route to destination error (default gateway missing) */
+ return ERR_RTE;
+ }
+ }
+ /* queue on destination Ethernet address belonging to ipaddr */
+ return etharp_query(netif, ipaddr, q);
+ }
+
+ /* continuation for multicast/broadcast destinations */
+ /* obtain source Ethernet address of the given interface */
+ /* send packet directly on the link */
+ return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), dest);
+}
+
+/**
+ * Send an ARP request for the given IP address and/or queue a packet.
+ *
+ * If the IP address was not yet in the cache, a pending ARP cache entry
+ * is added and an ARP request is sent for the given address. The packet
+ * is queued on this entry.
+ *
+ * If the IP address was already pending in the cache, a new ARP request
+ * is sent for the given address. The packet is queued on this entry.
+ *
+ * If the IP address was already stable in the cache, and a packet is
+ * given, it is directly sent and no ARP request is sent out.
+ *
+ * If the IP address was already stable in the cache, and no packet is
+ * given, an ARP request is sent out.
+ *
+ * @param netif The lwIP network interface on which ipaddr
+ * must be queried for.
+ * @param ipaddr The IP address to be resolved.
+ * @param q If non-NULL, a pbuf that must be delivered to the IP address.
+ * q is not freed by this function.
+ *
+ * @note q must only be ONE packet, not a packet queue!
+ *
+ * @return
+ * - ERR_BUF Could not make room for Ethernet header.
+ * - ERR_MEM Hardware address unknown, and no more ARP entries available
+ * to query for address or queue the packet.
+ * - ERR_MEM Could not queue packet due to memory shortage.
+ * - ERR_RTE No route to destination (no gateway to external networks).
+ * - ERR_ARG Non-unicast address given, those will not appear in ARP cache.
+ *
+ */
+err_t
+etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q)
+{
+ struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr;
+ err_t result = ERR_MEM;
+ s8_t i; /* ARP entry index */
+
+ /* non-unicast address? */
+ if (ip_addr_isbroadcast(ipaddr, netif) ||
+ ip_addr_ismulticast(ipaddr) ||
+ ip_addr_isany(ipaddr)) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n"));
+ return ERR_ARG;
+ }
+
+ /* find entry in ARP cache, ask to create entry if queueing packet */
+#if LWIP_NETIF_HWADDRHINT
+ i = find_entry(ipaddr, ETHARP_TRY_HARD, netif);
+#else /* LWIP_NETIF_HWADDRHINT */
+ i = find_entry(ipaddr, ETHARP_TRY_HARD);
+#endif /* LWIP_NETIF_HWADDRHINT */
+
+ /* could not find or create entry? */
+ if (i < 0) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not create ARP entry\n"));
+ if (q) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: packet dropped\n"));
+ ETHARP_STATS_INC(etharp.memerr);
+ }
+ return (err_t)i;
+ }
+
+ /* mark a fresh entry as pending (we just sent a request) */
+ if (arp_table[i].state == ETHARP_STATE_EMPTY) {
+ arp_table[i].state = ETHARP_STATE_PENDING;
+ }
+
+ /* { i is either a STABLE or (new or existing) PENDING entry } */
+ LWIP_ASSERT("arp_table[i].state == PENDING or STABLE",
+ ((arp_table[i].state == ETHARP_STATE_PENDING) ||
+ (arp_table[i].state == ETHARP_STATE_STABLE)));
+
+ /* do we have a pending entry? or an implicit query request? */
+ if ((arp_table[i].state == ETHARP_STATE_PENDING) || (q == NULL)) {
+ /* try to resolve it; send out ARP request */
+ result = etharp_request(netif, ipaddr);
+ if (result != ERR_OK) {
+ /* ARP request couldn't be sent */
+ /* We don't re-send arp request in etharp_tmr, but we still queue packets,
+ since this failure could be temporary, and the next packet calling
+ etharp_query again could lead to sending the queued packets. */
+ }
+ }
+
+ /* packet given? */
+ if (q != NULL) {
+ /* stable entry? */
+ if (arp_table[i].state == ETHARP_STATE_STABLE) {
+ /* we have a valid IP->Ethernet address mapping */
+ /* send the packet */
+ result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr));
+ /* pending entry? (either just created or already pending */
+ } else if (arp_table[i].state == ETHARP_STATE_PENDING) {
+#if ARP_QUEUEING /* queue the given q packet */
+ struct pbuf *p;
+ int copy_needed = 0;
+ /* IF q includes a PBUF_REF, PBUF_POOL or PBUF_RAM, we have no choice but
+ * to copy the whole queue into a new PBUF_RAM (see bug #11400)
+ * PBUF_ROMs can be left as they are, since ROM must not get changed. */
+ p = q;
+ while (p) {
+ LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0));
+ if(p->type != PBUF_ROM) {
+ copy_needed = 1;
+ break;
+ }
+ p = p->next;
+ }
+ if(copy_needed) {
+ /* copy the whole packet into new pbufs */
+ p = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM);
+ if(p != NULL) {
+ if (pbuf_copy(p, q) != ERR_OK) {
+ pbuf_free(p);
+ p = NULL;
+ }
+ }
+ } else {
+ /* referencing the old pbuf is enough */
+ p = q;
+ pbuf_ref(p);
+ }
+ /* packet could be taken over? */
+ if (p != NULL) {
+ /* queue packet ... */
+ struct etharp_q_entry *new_entry;
+ /* allocate a new arp queue entry */
+ new_entry = memp_malloc(MEMP_ARP_QUEUE);
+ if (new_entry != NULL) {
+ new_entry->next = 0;
+ new_entry->p = p;
+ if(arp_table[i].q != NULL) {
+ /* queue was already existent, append the new entry to the end */
+ struct etharp_q_entry *r;
+ r = arp_table[i].q;
+ while (r->next != NULL) {
+ r = r->next;
+ }
+ r->next = new_entry;
+ } else {
+ /* queue did not exist, first item in queue */
+ arp_table[i].q = new_entry;
+ }
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"S16_F"\n", (void *)q, (s16_t)i));
+ result = ERR_OK;
+ } else {
+ /* the pool MEMP_ARP_QUEUE is empty */
+ pbuf_free(p);
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q));
+ /* { result == ERR_MEM } through initialization */
+ }
+ } else {
+ ETHARP_STATS_INC(etharp.memerr);
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q));
+ /* { result == ERR_MEM } through initialization */
+ }
+#else /* ARP_QUEUEING == 0 */
+ /* q && state == PENDING && ARP_QUEUEING == 0 => result = ERR_MEM */
+ /* { result == ERR_MEM } through initialization */
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: Ethernet destination address unknown, queueing disabled, packet %p dropped\n", (void *)q));
+#endif
+ }
+ }
+ return result;
+}
+
+/**
+ * Send a raw ARP packet (opcode and all addresses can be modified)
+ *
+ * @param netif the lwip network interface on which to send the ARP packet
+ * @param ethsrc_addr the source MAC address for the ethernet header
+ * @param ethdst_addr the destination MAC address for the ethernet header
+ * @param hwsrc_addr the source MAC address for the ARP protocol header
+ * @param ipsrc_addr the source IP address for the ARP protocol header
+ * @param hwdst_addr the destination MAC address for the ARP protocol header
+ * @param ipdst_addr the destination IP address for the ARP protocol header
+ * @param opcode the type of the ARP packet
+ * @return ERR_OK if the ARP packet has been sent
+ * ERR_MEM if the ARP packet couldn't be allocated
+ * any other err_t on failure
+ */
+#if !LWIP_AUTOIP
+static
+#endif /* LWIP_AUTOIP */
+err_t
+etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr,
+ const struct eth_addr *ethdst_addr,
+ const struct eth_addr *hwsrc_addr, const struct ip_addr *ipsrc_addr,
+ const struct eth_addr *hwdst_addr, const struct ip_addr *ipdst_addr,
+ const u16_t opcode)
+{
+ struct pbuf *p;
+ err_t result = ERR_OK;
+ u8_t k; /* ARP entry index */
+ struct eth_hdr *ethhdr;
+ struct etharp_hdr *hdr;
+#if LWIP_AUTOIP
+ const u8_t * ethdst_hwaddr;
+#endif /* LWIP_AUTOIP */
+
+ /* allocate a pbuf for the outgoing ARP request packet */
+ p = pbuf_alloc(PBUF_RAW, SIZEOF_ETHARP_PACKET, PBUF_RAM);
+ /* could allocate a pbuf for an ARP request? */
+ if (p == NULL) {
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
+ ("etharp_raw: could not allocate pbuf for ARP request.\n"));
+ ETHARP_STATS_INC(etharp.memerr);
+ return ERR_MEM;
+ }
+ LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr",
+ (p->len >= SIZEOF_ETHARP_PACKET));
+
+ ethhdr = p->payload;
+ hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR);
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n"));
+ hdr->opcode = htons(opcode);
+
+ LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!",
+ (netif->hwaddr_len == ETHARP_HWADDR_LEN));
+ k = ETHARP_HWADDR_LEN;
+#if LWIP_AUTOIP
+ /* If we are using Link-Local, ARP packets must be broadcast on the
+ * link layer. (See RFC3927 Section 2.5) */
+ ethdst_hwaddr = ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) ? (u8_t*)(ethbroadcast.addr) : ethdst_addr->addr;
+#endif /* LWIP_AUTOIP */
+ /* Write MAC-Addresses (combined loop for both headers) */
+ while(k > 0) {
+ k--;
+ /* Write the ARP MAC-Addresses */
+ hdr->shwaddr.addr[k] = hwsrc_addr->addr[k];
+ hdr->dhwaddr.addr[k] = hwdst_addr->addr[k];
+ /* Write the Ethernet MAC-Addresses */
+#if LWIP_AUTOIP
+ ethhdr->dest.addr[k] = ethdst_hwaddr[k];
+#else /* LWIP_AUTOIP */
+ ethhdr->dest.addr[k] = ethdst_addr->addr[k];
+#endif /* LWIP_AUTOIP */
+ ethhdr->src.addr[k] = ethsrc_addr->addr[k];
+ }
+ hdr->sipaddr = *(struct ip_addr2 *)ipsrc_addr;
+ hdr->dipaddr = *(struct ip_addr2 *)ipdst_addr;
+
+ hdr->hwtype = htons(HWTYPE_ETHERNET);
+ hdr->proto = htons(ETHTYPE_IP);
+ /* set hwlen and protolen together */
+ hdr->_hwlen_protolen = htons((ETHARP_HWADDR_LEN << 8) | sizeof(struct ip_addr));
+
+ ethhdr->type = htons(ETHTYPE_ARP);
+ /* send ARP query */
+ result = netif->linkoutput(netif, p);
+ ETHARP_STATS_INC(etharp.xmit);
+ /* free ARP query packet */
+ pbuf_free(p);
+ p = NULL;
+ /* could not allocate pbuf for ARP request */
+
+ return result;
+}
+
+/**
+ * Send an ARP request packet asking for ipaddr.
+ *
+ * @param netif the lwip network interface on which to send the request
+ * @param ipaddr the IP address for which to ask
+ * @return ERR_OK if the request has been sent
+ * ERR_MEM if the ARP packet couldn't be allocated
+ * any other err_t on failure
+ */
+err_t
+etharp_request(struct netif *netif, struct ip_addr *ipaddr)
+{
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n"));
+ return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast,
+ (struct eth_addr *)netif->hwaddr, &netif->ip_addr, ðzero,
+ ipaddr, ARP_REQUEST);
+}
+
+/**
+ * Process received ethernet frames. Using this function instead of directly
+ * calling ip_input and passing ARP frames through etharp in ethernetif_input,
+ * the ARP cache is protected from concurrent access.
+ *
+ * @param p the recevied packet, p->payload pointing to the ethernet header
+ * @param netif the network interface on which the packet was received
+ */
+err_t
+ethernet_input(struct pbuf *p, struct netif *netif)
+{
+ struct eth_hdr* ethhdr;
+ u16_t type;
+
+ /* points to packet payload, which starts with an Ethernet header */
+ ethhdr = p->payload;
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE,
+ ("ethernet_input: dest:%02x:%02x:%02x:%02x:%02x:%02x, src:%02x:%02x:%02x:%02x:%02x:%02x, type:%2hx\n",
+ (unsigned)ethhdr->dest.addr[0], (unsigned)ethhdr->dest.addr[1], (unsigned)ethhdr->dest.addr[2],
+ (unsigned)ethhdr->dest.addr[3], (unsigned)ethhdr->dest.addr[4], (unsigned)ethhdr->dest.addr[5],
+ (unsigned)ethhdr->src.addr[0], (unsigned)ethhdr->src.addr[1], (unsigned)ethhdr->src.addr[2],
+ (unsigned)ethhdr->src.addr[3], (unsigned)ethhdr->src.addr[4], (unsigned)ethhdr->src.addr[5],
+ (unsigned)htons(ethhdr->type)));
+
+ type = htons(ethhdr->type);
+#if ETHARP_SUPPORT_VLAN
+ if (type == ETHTYPE_VLAN) {
+ struct eth_vlan_hdr *vlan = (struct eth_vlan_hdr*)(((char*)ethhdr) + SIZEOF_ETH_HDR);
+#ifdef ETHARP_VLAN_CHECK /* if not, allow all VLANs */
+ if (VLAN_ID(vlan) != ETHARP_VLAN_CHECK) {
+ /* silently ignore this packet: not for our VLAN */
+ pbuf_free(p);
+ return ERR_OK;
+ }
+#endif /* ETHARP_VLAN_CHECK */
+ type = htons(vlan->tpid);
+ }
+#endif /* ETHARP_SUPPORT_VLAN */
+
+ switch (type) {
+ /* IP packet? */
+ case ETHTYPE_IP:
+#if ETHARP_TRUST_IP_MAC
+ /* update ARP table */
+ etharp_ip_input(netif, p);
+#endif /* ETHARP_TRUST_IP_MAC */
+ /* skip Ethernet header */
+ if(pbuf_header(p, -(s16_t)SIZEOF_ETH_HDR)) {
+ LWIP_ASSERT("Can't move over header in packet", 0);
+ pbuf_free(p);
+ p = NULL;
+ } else {
+ /* pass to IP layer */
+ ip_input(p, netif);
+ }
+ break;
+
+ case ETHTYPE_ARP:
+ /* pass p to ARP module */
+ etharp_arp_input(netif, (struct eth_addr*)(netif->hwaddr), p);
+ break;
+
+#if PPPOE_SUPPORT
+ case ETHTYPE_PPPOEDISC: /* PPP Over Ethernet Discovery Stage */
+ pppoe_disc_input(netif, p);
+ break;
+
+ case ETHTYPE_PPPOE: /* PPP Over Ethernet Session Stage */
+ pppoe_data_input(netif, p);
+ break;
+#endif /* PPPOE_SUPPORT */
+
+ default:
+ ETHARP_STATS_INC(etharp.proterr);
+ ETHARP_STATS_INC(etharp.drop);
+ pbuf_free(p);
+ p = NULL;
+ break;
+ }
+
+ /* This means the pbuf is freed or consumed,
+ so the caller doesn't have to free it again */
+ return ERR_OK;
+}
+#endif /* LWIP_ARP */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c
new file mode 100644
index 0000000..b7d6632
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c
@@ -0,0 +1,68 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ * Loop Interface
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#include "lwip/opt.h"
+
+#if LWIP_HAVE_LOOPIF
+
+#include "netif/loopif.h"
+#include "lwip/snmp.h"
+
+/**
+ * Initialize a lwip network interface structure for a loopback interface
+ *
+ * @param netif the lwip network interface structure for this loopif
+ * @return ERR_OK if the loopif is initialized
+ * ERR_MEM if private data couldn't be allocated
+ */
+err_t
+loopif_init(struct netif *netif)
+{
+ /* initialize the snmp variables and counters inside the struct netif
+ * ifSpeed: no assumption can be made!
+ */
+ NETIF_INIT_SNMP(netif, snmp_ifType_softwareLoopback, 0);
+
+ netif->name[0] = 'l';
+ netif->name[1] = 'o';
+ netif->output = netif_loop_output;
+ return ERR_OK;
+}
+
+#endif /* LWIP_HAVE_LOOPIF */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h
new file mode 100644
index 0000000..fc9c07d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __ARCH_CC_H__
+#define __ARCH_CC_H__
+
+/* Define platform endianness */
+#ifndef BYTE_ORDER
+#define BYTE_ORDER BIG_ENDIAN
+#endif /* BYTE_ORDER */
+
+/* Define generic types used in lwIP */
+typedef unsigned char u8_t;
+typedef signed char s8_t;
+typedef unsigned short u16_t;
+typedef signed short s16_t;
+typedef unsigned long u32_t;
+typedef signed long s32_t;
+
+typedef u32_t mem_ptr_t;
+
+/* Define (sn)printf formatters for these lwIP types */
+#define U16_F "u"
+#define S16_F "d"
+#define X16_F "x"
+#define U32_F "u"
+#define S32_F "d"
+#define X32_F "x"
+
+/* Compiler hints for packing structures */
+#define PACK_STRUCT_FIELD(x) x
+#define PACK_STRUCT_STRUCT __attribute__((packed))
+#define PACK_STRUCT_BEGIN
+#define PACK_STRUCT_END
+
+/* Plaform specific diagnostic output */
+#ifdef CONFIG_OWL
+# include <owl/core/owl_debug.h>
+# define LWIP_PLATFORM_DIAG(x) owl_printf x
+# define LWIP_PLATFORM_ASSERT(x) owl_assert(x)
+#else
+# include <printf-stdarg.h>
+# define LWIP_PLATFORM_DIAG(x) do { printk x; } while(0)
+# define LWIP_PLATFORM_ASSERT(x) do { \
+ printk("Assertion \"%s\" failed at line " \
+ "%d in %s\n", \
+ x, __LINE__, __FILE__); while(1); \
+ } while(0)
+#endif
+
+#endif /* __ARCH_CC_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h
new file mode 100644
index 0000000..4991787
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h
@@ -0,0 +1,7 @@
+#ifndef __PERF_H__
+#define __PERF_H__
+
+#define PERF_START /* null definition */
+#define PERF_STOP(x) /* null definition */
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h
new file mode 100644
index 0000000..ae4df23
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h
@@ -0,0 +1,426 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ *
+ * lwIP Options Configuration
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIPOPTS_H__
+#define __LWIPOPTS_H__
+
+#include "wl_api.h"
+
+/*
+ -----------------------------------------------
+ ---------- Platform specific locking ----------
+ -----------------------------------------------
+*/
+
+/**
+ * NO_SYS==1: Provides VERY minimal functionality. Otherwise,
+ * use lwIP facilities.
+ */
+#define NO_SYS 1
+
+
+/*
+ ------------------------------------
+ ---------- Memory options ----------
+ ------------------------------------
+*/
+/**
+ * MEM_ALIGNMENT: should be set to the alignment of the CPU
+ * 4 byte alignment -> #define MEM_ALIGNMENT 4
+ * 2 byte alignment -> #define MEM_ALIGNMENT 2
+ */
+#define MEM_ALIGNMENT 4
+
+/**
+ * MEM_SIZE: the size of the heap memory. If the application will send
+ * a lot of data that needs to be copied, this should be set high.
+ */
+#define MEM_SIZE 16000
+
+
+/*
+ ------------------------------------------------
+ ---------- Internal Memory Pool Sizes ----------
+ ------------------------------------------------
+*/
+/**
+ * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF).
+ * If the application sends a lot of data out of ROM (or other static memory),
+ * this should be set high.
+ */
+#define MEMP_NUM_PBUF 30
+
+/**
+ * MEMP_NUM_RAW_PCB: Number of raw connection PCBs
+ * (requires the LWIP_RAW option)
+ */
+#define MEMP_NUM_RAW_PCB 4
+
+/**
+ * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
+ * per active UDP "connection".
+ * (requires the LWIP_UDP option)
+ */
+#define MEMP_NUM_UDP_PCB 4
+
+/**
+ * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_PCB 2
+
+/**
+ * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_PCB_LISTEN 2
+
+/**
+ * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_SEG 32
+
+/**
+ * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
+ * packets (pbufs) that are waiting for an ARP request (to resolve
+ * their destination address) to finish.
+ * (requires the ARP_QUEUEING option)
+ */
+#define MEMP_NUM_ARP_QUEUE 2
+
+/**
+ * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts.
+ * (requires NO_SYS==0)
+ */
+#define MEMP_NUM_SYS_TIMEOUT 0
+
+/**
+ * MEMP_NUM_NETBUF: the number of struct netbufs.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#define MEMP_NUM_NETBUF 0
+
+/**
+ * MEMP_NUM_NETCONN: the number of struct netconns.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#define MEMP_NUM_NETCONN 0
+
+/**
+ * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used
+ * for callback/timeout API communication.
+ * (only needed if you use tcpip.c)
+ */
+#define MEMP_NUM_TCPIP_MSG_API 0
+
+/**
+ * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used
+ * for incoming packets.
+ * (only needed if you use tcpip.c)
+ */
+#define MEMP_NUM_TCPIP_MSG_INPKT 0
+
+/**
+ * PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
+ */
+#define PBUF_POOL_SIZE 32
+
+/*
+ ---------------------------------
+ ---------- ARP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_ARP==1: Enable ARP functionality.
+ */
+#define LWIP_ARP 1
+
+/*
+ --------------------------------
+ ---------- IP options ----------
+ --------------------------------
+*/
+/**
+ * IP_FORWARD==1: Enables the ability to forward IP packets across network
+ * interfaces. If you are going to run lwIP on a device with only one network
+ * interface, define this to 0.
+ */
+#define IP_FORWARD 0
+
+/**
+ * IP_OPTIONS: Defines the behavior for IP options.
+ * IP_OPTIONS==0_ALLOWED: All packets with IP options are dropped.
+ * IP_OPTIONS==1_ALLOWED: IP options are allowed (but not parsed).
+ */
+#define IP_OPTIONS_ALLOWED 1
+
+/**
+ * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that
+ * this option does not affect outgoing packet sizes, which can be controlled
+ * via IP_FRAG.
+ */
+#define IP_REASSEMBLY 1
+
+/**
+ * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note
+ * that this option does not affect incoming packet sizes, which can be
+ * controlled via IP_REASSEMBLY.
+ */
+#define IP_FRAG 1
+
+/**
+ * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally)
+ * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived
+ * in this time, the whole packet is discarded.
+ */
+#define IP_REASS_MAXAGE 3
+
+/**
+ * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled.
+ * Since the received pbufs are enqueued, be sure to configure
+ * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive
+ * packets even if the maximum amount of fragments is enqueued for reassembly!
+ */
+#define IP_REASS_MAX_PBUFS 10
+
+/**
+ * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP
+ * fragmentation. Otherwise pbufs are allocated and reference the original
+ * packet data to be fragmented.
+ */
+#define IP_FRAG_USES_STATIC_BUF 0
+
+/**
+ * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers.
+ */
+#define IP_DEFAULT_TTL 255
+
+/*
+ ----------------------------------
+ ---------- ICMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_ICMP==1: Enable ICMP module inside the IP stack.
+ * Be careful, disable that make your product non-compliant to RFC1122
+ */
+#define LWIP_ICMP 1
+
+/**
+ * ICMP_TTL: Default value for Time-To-Live used by ICMP packets.
+ */
+#define ICMP_TTL (IP_DEFAULT_TTL)
+
+/*
+ ---------------------------------
+ ---------- RAW options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
+ */
+#define LWIP_RAW 1
+
+/*
+ ----------------------------------
+ ---------- DHCP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_DHCP==1: Enable DHCP module.
+ */
+#define LWIP_DHCP 1
+
+/*
+ ------------------------------------
+ ---------- AUTOIP options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_AUTOIP==1: Enable AUTOIP module.
+ */
+#define LWIP_AUTOIP 0
+
+/*
+ ----------------------------------
+ ---------- SNMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP
+ * transport.
+ */
+#define LWIP_SNMP 0
+#define SNMP_PRIVATE_MIB 0
+
+/*
+ ----------------------------------
+ ---------- IGMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_IGMP==1: Turn on IGMP module.
+ */
+#define LWIP_IGMP 1
+
+/*
+ ----------------------------------
+ ---------- DNS options -----------
+ ----------------------------------
+*/
+/**
+ * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS
+ * transport.
+ */
+#define LWIP_DNS 1
+
+/*
+ ---------------------------------
+ ---------- UDP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_UDP==1: Turn on UDP.
+ */
+#define LWIP_UDP 1
+
+/**
+ * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP)
+ */
+#define LWIP_UDPLITE 0
+
+/**
+ * UDP_TTL: Default Time-To-Live value.
+ */
+#define UDP_TTL (IP_DEFAULT_TTL)
+
+/*
+ ---------------------------------
+ ---------- TCP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_TCP==1: Turn on TCP.
+ */
+#define LWIP_TCP 1
+
+/*
+ ----------------------------------
+ ---------- Pbuf options ----------
+ ----------------------------------
+*/
+/**
+ * PBUF_LINK_HLEN: the number of bytes that should be allocated for a
+ * link level header. The default is 14, the standard value for
+ * Ethernet.
+ */
+#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE)
+
+/*
+ ------------------------------------
+ ---------- LOOPIF options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c
+ */
+#define LWIP_HAVE_LOOPIF 1
+#define LWIP_LOOPIF_MULTITHREADING 0
+
+/*
+ ----------------------------------------------
+ ---------- Sequential layer options ----------
+ ----------------------------------------------
+*/
+
+/**
+ * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
+ */
+#define LWIP_NETCONN 0
+
+/*
+ ------------------------------------
+ ---------- Socket options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
+ */
+#define LWIP_SOCKET 0
+
+/*
+ ----------------------------------------
+ ---------- Statistics options ----------
+ ----------------------------------------
+*/
+/**
+ * LWIP_STATS==1: Enable statistics collection in lwip_stats.
+ */
+#define LWIP_STATS 1
+#define LINK_STATS 1
+
+/* Misc */
+#define LWIP_NETIF_LINK_CALLBACK 1
+#define LWIP_NETIF_STATUS_CALLBACK 1
+#define LWIP_TIMEVAL_PRIVATE 0
+
+#undef DHCP_DOES_ARP_CHECK
+
+#if 0
+#define LWIP_DEBUG 1
+//#define NETIF_DEBUG LWIP_DBG_ON
+#define DHCP_DEBUG LWIP_DBG_ON
+//#define ICMP_DEBUG LWIP_DBG_ON
+//#define TCP_DEBUG LWIP_DBG_ON
+//#define TCP_RTO_DEBUG LWIP_DBG_ON
+//#define IP_DEBUG LWIP_DBG_ON
+//#define TCP_CWND_DEBUG LWIP_DBG_ON
+//#define ETHARP_DEBUG LWIP_DBG_ON
+//#define PBUF_DEBUG LWIP_DBG_ON
+#define TCP_INPUT_DEBUG LWIP_DBG_ON
+#define TCP_OUTPUT_DEBUG LWIP_DBG_ON
+#endif
+
+#define ETH_PAD_SIZE WL_HEADER_SIZE /* size of wifiengine header */
+#define MEM_LIBC_MALLOC 1
+
+#define TCP_MSS 512
+#define TCP_SND_BUF 4096
+#endif /* __LWIPOPTS_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h
new file mode 100644
index 0000000..6354e1c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h
@@ -0,0 +1,10 @@
+#ifndef __NETIF_NRWLANIF_H__
+#define __NETIF_NRWLANIF_H__
+
+#include "lwip/netif.h"
+#include "lwip/err.h"
+
+err_t wlif_init(struct netif *netif);
+void wlif_poll(struct netif *netif);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c
new file mode 100644
index 0000000..55d5b6a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c
@@ -0,0 +1,386 @@
+#include "lwip/opt.h"
+#include "lwip/def.h"
+#include "lwip/mem.h"
+#include "lwip/pbuf.h"
+#include "lwip/stats.h"
+#include "lwip/sys.h"
+#include "netif/etharp.h"
+#include "netif/wlif.h"
+#include <wl_api.h>
+#include <wlap_api.h>
+
+#define IFNAME0 'w'
+#define IFNAME1 'l'
+
+/* the queue size will affect the tx performance when using power save.
+ * A small queue will quickly become filled up if we have to wake the device
+ * before the actual transmission can occur. When the queue is filled up, the
+ * packets will be discarded and retransmission will be handled by the upper
+ * layers. In case of TCP, the retransmission time might be quite long.
+ *
+ * If the packets can be put in the pqueue instead, all the packets
+ * (if possible) will be transmitted when the device wakes up, so we don't have
+ * to wait for retransmission from upper layers.
+ */
+#define PQUEUE_SIZE 8
+
+struct wlif_t {
+ volatile uint8_t rx_pending;
+
+ struct {
+ struct pbuf* buf[PQUEUE_SIZE];
+ uint8_t first;
+ uint8_t last;
+ } pqueue;
+};
+
+#define PQUEUE_EMPTY(q) (q.last == q.first)
+#define PQUEUE_FULL(q) ((q.last + 1) % PQUEUE_SIZE == q.first)
+#define PQUEUE_FIRST(q) (q.buf[q.first])
+#define PQUEUE_DEQUEUE(q) \
+ ({ \
+ struct pbuf* __p = PQUEUE_FIRST(q); \
+ q.first = (q.first + 1) % PQUEUE_SIZE; \
+ __p; \
+ })
+#define PQUEUE_ENQUEUE(q, p) \
+ ({ \
+ q.buf[q.last] = p; \
+ q.last = (q.last + 1) % PQUEUE_SIZE; \
+ })
+
+
+static err_t process_pqueue(struct netif* netif)
+{
+ struct pbuf *p;
+ struct pbuf *q;
+ int status;
+ struct wlif_t *priv = (struct wlif_t*) netif->state;
+
+ /* queue empty? finished */
+ if (PQUEUE_EMPTY(priv->pqueue))
+ return ERR_OK;
+
+ /* get first packet in queue */
+ p = PQUEUE_FIRST(priv->pqueue);
+
+ status = wl_process_tx(
+ p->payload + WL_HEADER_SIZE, /* ptr to eth hdr */
+ p->len - WL_HEADER_SIZE, /* input buffer len */
+ p->tot_len - WL_HEADER_SIZE, /* pkt len */
+ p->payload, /* ptr to WE hdr */
+ 0, /* prio */
+ p); /* pkt handle */
+
+ /* if we fail due to power save mode, leave packet in queue and
+ * try again when target is awake again (upon WL_RX_EVENT_WAKEUP).
+ */
+ if (status == WL_RESOURCES)
+ return ERR_IF;
+
+ /* if we fail for another reason, just discard the packet */
+ if (status != WL_SUCCESS) {
+ PQUEUE_DEQUEUE(priv->pqueue);
+ pbuf_free(p);
+ return ERR_IF;
+ }
+
+ /* Send the data from the pbuf to the interface, one pbuf at a
+ * time. The size of the data in each pbuf is kept in the ->len
+ * variable.
+ */
+ for (q = p; q != NULL; q = q->next)
+ wl_tx(q->payload, q->len);
+
+ /* remove packet from queue and dec refcnt */
+ PQUEUE_DEQUEUE(priv->pqueue);
+ pbuf_free(p);
+
+ LINK_STATS_INC(link.xmit);
+
+ /* tell caller to process next packet */
+ return ERR_INPROGRESS;
+}
+
+
+/**
+ * Called in interrupt context when we can read more data from the mac.
+ *
+ */
+static void
+rx_isr(void* ctx)
+{
+ struct netif *netif = ctx;
+ struct wlif_t *priv = (struct wlif_t*) netif->state;
+ priv->rx_pending = 1;
+}
+
+
+/**
+ * In this function, the hardware should be initialized.
+ * Called from wlif_init().
+ *
+ * @param netif the already initialized lwip network interface structure
+ * for this ethernetif
+ */
+static err_t
+low_level_init(struct netif *netif)
+{
+ /* device capabilities */
+ netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP |
+ NETIF_FLAG_IGMP;
+
+ /* NETIF_FLAG_LINK_UP must be set only when we have an wlan assoc */
+
+ /* set MAC hardware address length */
+ netif->hwaddr_len = ETHARP_HWADDR_LEN;
+
+ if (wl_get_mac_addr(netif->hwaddr) != WL_SUCCESS)
+ return ERR_IF;
+
+ /* maximum transfer unit */
+ netif->mtu = 1500;
+
+ return ERR_OK;
+}
+
+
+/**
+ * This function should do the actual transmission of the packet. The packet is
+ * contained in the pbuf that is passed to the function. This pbuf
+ * might be chained.
+ *
+ * @param netif the lwip network interface structure for this ethernetif
+ * @param p the MAC packet to send (e.g. IP packet including MAC addresses and
+ * type)
+ * @return ERR_OK if the packet could be sent
+ * an err_t value if the packet couldn't be sent
+ *
+ * @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to
+ * strange results. You might consider waiting for space in the DMA queue
+ * to become availale since the stack doesn't retry to send a packet
+ * dropped because of memory failure (except for the TCP timers).
+ */
+static err_t
+low_level_output(struct netif *netif, struct pbuf *p)
+{
+ struct wlif_t* priv = (struct wlif_t*) netif->state;
+
+ /* must have a linear buffer containing up to and including
+ * the ethernet header
+ */
+ if (p->len < sizeof(struct eth_hdr))
+ return ERR_IF;
+
+ /* queue full? drop packet */
+ if (PQUEUE_FULL(priv->pqueue))
+ return ERR_INPROGRESS; /* no one seems to check this anyway */
+
+ /* queue packet */
+ PQUEUE_ENQUEUE(priv->pqueue, p);
+ pbuf_ref(p);
+ while (process_pqueue(netif) == ERR_INPROGRESS);
+ return ERR_OK; /* no one seems to check this anyway */
+}
+
+/**
+ * Should allocate a pbuf and transfer the bytes of the incoming
+ * packet from the interface into the pbuf.
+ *
+ * @param netif the lwip network interface structure for this ethernetif
+ * @return a pbuf filled with the received packet (including MAC header)
+ * NULL on memory error
+ */
+static struct pbuf *
+low_level_input(struct netif *netif)
+{
+ struct pbuf *p;
+ struct wlif_t *priv = (struct wlif_t*) netif->state;
+
+ char *stripped_pkt;
+ size_t stripped_pkt_len;
+ u16_t vlan;
+ u8_t rx_hdr_size;
+ int status;
+ u16_t len;
+
+ /* maximum packet length from wl_rx() */
+ len = WL_MAX_PKT_LEN;
+
+ /* We allocate a continous pbuf */
+ p = pbuf_alloc(PBUF_RAW, len, PBUF_RAM);
+ if (p == NULL) {
+ LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: fail to alloc "
+ "pbuf of len:%"S32_F"\n", len));
+ return NULL;
+ }
+
+ /* Read the entire msg */
+ priv->rx_pending = 0;
+ wl_rx(p->payload, &len);
+ if (len == 0) {
+ LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: len was 0"));
+ return NULL;
+ }
+
+ status = wl_process_rx(
+ p->payload, /* input buf */
+ len, /* input buf length */
+ &stripped_pkt,
+ &stripped_pkt_len,
+ &vlan);
+
+ if (status == WL_ABSORBED) {
+ LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: absorbed"));
+ pbuf_free(p);
+ return NULL;
+ }
+
+ /* Data packet, remove padding */
+ rx_hdr_size = stripped_pkt - (char*) p->payload;
+ pbuf_realloc(p, stripped_pkt_len + rx_hdr_size);
+
+ LINK_STATS_INC(link.recv);
+ return p;
+}
+
+
+/**
+ * This function will be called by wlif_poll() when a packet has been received
+ * from the mac. Then the type of the received packet is determined and
+ * the appropriate input function is called.
+ *
+ * @param netif the lwip network interface structure for this ethernetif
+ */
+static void
+wlif_input(struct netif *netif)
+{
+ struct eth_hdr *ethhdr;
+ struct pbuf *p;
+
+ /* move received packet into a new pbuf */
+ p = low_level_input(netif);
+
+ /* no packet could be read, silently ignore this */
+ if (p == NULL)
+ return;
+
+ /* points to packet payload, which starts with an Ethernet header */
+ ethhdr = p->payload;
+ switch (htons(ethhdr->type)) {
+ /* IP or ARP packet? */
+ case ETHTYPE_IP:
+ case ETHTYPE_ARP:
+#if PPPOE_SUPPORT
+ /* PPPoE packet? */
+ case ETHTYPE_PPPOEDISC:
+ case ETHTYPE_PPPOE:
+#endif /* PPPOE_SUPPORT */
+ /* full packet send to tcpip_thread to process */
+ if (netif->input(p, netif) != ERR_OK) {
+ LWIP_DEBUGF(NETIF_DEBUG,
+ ("wlif_input: IP input error\n"));
+ pbuf_free(p);
+ p = NULL;
+ }
+ break;
+
+ default:
+ pbuf_free(p);
+ p = NULL;
+ break;
+ }
+}
+
+static ssize_t pkt_read_cb(char *dst,
+ void *src_handle,
+ size_t read_len,
+ int offset) {
+ ssize_t rc;
+
+ rc = pbuf_copy_partial((struct pbuf *)src_handle,
+ dst,
+ read_len,
+ offset + WL_HEADER_SIZE);
+ if ( 0 == rc ) {
+ return -1;
+ }
+
+ return rc;
+}
+
+/**
+ * Should be called at the beginning of the program to set up the
+ * network interface. It calls the function low_level_init() to do the
+ * actual setup of the hardware.
+ *
+ * This function should be passed as a parameter to netif_add().
+ *
+ * @param netif the lwip network interface structure for this ethernetif
+ * @return ERR_OK if the loopif is initialized
+ * ERR_MEM if private data couldn't be allocated
+ * any other err_t on error
+ */
+err_t
+wlif_init(struct netif *netif)
+{
+ static struct wlif_t wlif;
+
+ LWIP_ASSERT("netif != NULL", (netif != NULL));
+
+#if LWIP_NETIF_HOSTNAME
+ /* Initialize interface hostname */
+ if ( NULL == netif->hostname ) {
+ netif->hostname = "wlif";
+ }
+#endif /* LWIP_NETIF_HOSTNAME */
+
+ netif->state = &wlif;
+ netif->name[0] = IFNAME0;
+ netif->name[1] = IFNAME1;
+
+ /* We directly use etharp_output() here to save a function call.
+ * You can instead declare your own function an call etharp_output()
+ * from it if you have to do some checks before sending (e.g. if link
+ * is available...) */
+ netif->output = etharp_output;
+ netif->linkoutput = low_level_output;
+
+ wl_register_rx_isr(rx_isr, netif);
+ wl_register_pkt_read_cb(pkt_read_cb);
+
+ /* initialize the hardware */
+ return low_level_init(netif);
+}
+
+
+/**
+ *
+ */
+void
+wlif_poll(struct netif* netif)
+{
+ struct wlif_t* priv = NULL;
+
+ /* wl api forward progress */
+ wl_poll();
+
+ if (netif)
+ priv = (struct wlif_t*) netif->state;
+
+ /* wlif_init() not called yet? */
+ if (priv == NULL)
+ return;
+
+ /* no packets pending? */
+ if (!priv->rx_pending)
+ return;
+
+ /* read the pending packet */
+ wlif_input(netif);
+
+ /* send any packets that was queued due to filled up target queue
+ * or power save mode.
+ */
+ process_pqueue(netif);
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt
new file mode 100644
index 0000000..c95f30e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt
@@ -0,0 +1 @@
+This directory is specific to the WIFI H&D SPB104 components (\COMPONENTS\WIFI\HD_SPB104).
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c
new file mode 100644
index 0000000..09790c2
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c
@@ -0,0 +1,571 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Abstraction layer for memory interfaces.
+ *
+ * This module contains the interfaces:
+ * - MEM <-> USB;
+ * - MEM <-> RAM;
+ * - MEM <-> MEM.
+ *
+ * This module may be configured and expanded to support the following features:
+ * - write-protected globals;
+ * - password-protected data;
+ * - specific features;
+ * - etc.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+//_____ I N C L U D E S ____________________________________________________
+
+#include "compiler.h"
+#include "preprocessor.h"
+#ifdef FREERTOS_USED
+#include "FreeRTOS.h"
+#include "semphr.h"
+#endif
+#include "ctrl_access.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+#ifdef FREERTOS_USED
+
+/*! \name LUN Access Protection Macros
+ */
+//! @{
+
+/*! \brief Locks accesses to LUNs.
+ *
+ * \return \c TRUE if the access was successfully locked, else \c FALSE.
+ */
+#define Ctrl_access_lock() ctrl_access_lock()
+
+/*! \brief Unlocks accesses to LUNs.
+ */
+#define Ctrl_access_unlock() xSemaphoreGive(ctrl_access_semphr)
+
+//! @}
+
+//! Handle to the semaphore protecting accesses to LUNs.
+static xSemaphoreHandle ctrl_access_semphr = NULL;
+
+#else
+
+/*! \name LUN Access Protection Macros
+ */
+//! @{
+
+/*! \brief Locks accesses to LUNs.
+ *
+ * \return \c TRUE if the access was successfully locked, else \c FALSE.
+ */
+#define Ctrl_access_lock() TRUE
+
+/*! \brief Unlocks accesses to LUNs.
+ */
+#define Ctrl_access_unlock()
+
+//! @}
+
+#endif // FREERTOS_USED
+
+
+#if MAX_LUN
+
+/*! \brief Initializes an entry of the LUN descriptor table.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return LUN descriptor table entry initializer.
+ */
+#if ACCESS_USB == ENABLED && ACCESS_MEM_TO_RAM == ENABLED
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(Lun_, lun, _usb_read_10),\
+ TPASTE3(Lun_, lun, _usb_write_10),\
+ TPASTE3(Lun_, lun, _mem_2_ram),\
+ TPASTE3(Lun_, lun, _ram_2_mem),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#elif ACCESS_USB == ENABLED
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(Lun_, lun, _usb_read_10),\
+ TPASTE3(Lun_, lun, _usb_write_10),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#elif ACCESS_MEM_TO_RAM == ENABLED
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(Lun_, lun, _mem_2_ram),\
+ TPASTE3(Lun_, lun, _ram_2_mem),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#else
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#endif
+
+//! LUN descriptor table.
+static const struct
+{
+ Ctrl_status (*test_unit_ready)(void);
+ Ctrl_status (*read_capacity)(U32 *);
+ Bool (*wr_protect)(void);
+ Bool (*removal)(void);
+#if ACCESS_USB == ENABLED
+ Ctrl_status (*usb_read_10)(U32, U16);
+ Ctrl_status (*usb_write_10)(U32, U16);
+#endif
+#if ACCESS_MEM_TO_RAM == ENABLED
+ Ctrl_status (*mem_2_ram)(U32, void *);
+ Ctrl_status (*ram_2_mem)(U32, const void *);
+#endif
+ const char *name;
+} lun_desc[MAX_LUN] =
+{
+#if LUN_0 == ENABLE
+ Lun_desc_entry(0),
+#endif
+#if LUN_1 == ENABLE
+ Lun_desc_entry(1),
+#endif
+#if LUN_2 == ENABLE
+ Lun_desc_entry(2),
+#endif
+#if LUN_3 == ENABLE
+ Lun_desc_entry(3),
+#endif
+#if LUN_4 == ENABLE
+ Lun_desc_entry(4),
+#endif
+#if LUN_5 == ENABLE
+ Lun_desc_entry(5),
+#endif
+#if LUN_6 == ENABLE
+ Lun_desc_entry(6),
+#endif
+#if LUN_7 == ENABLE
+ Lun_desc_entry(7)
+#endif
+};
+
+#endif
+
+
+#if GLOBAL_WR_PROTECT == ENABLED
+Bool g_wr_protect;
+#endif
+
+
+/*! \name Control Interface
+ */
+//! @{
+
+
+#ifdef FREERTOS_USED
+
+Bool ctrl_access_init(void)
+{
+ // If the handle to the protecting semaphore is not valid,
+ if (!ctrl_access_semphr)
+ {
+ // try to create the semaphore.
+ vSemaphoreCreateBinary(ctrl_access_semphr);
+
+ // If the semaphore could not be created, there is no backup solution.
+ if (!ctrl_access_semphr) return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/*! \brief Locks accesses to LUNs.
+ *
+ * \return \c TRUE if the access was successfully locked, else \c FALSE.
+ */
+static Bool ctrl_access_lock(void)
+{
+ // If the semaphore could not be created, there is no backup solution.
+ if (!ctrl_access_semphr) return FALSE;
+
+ // Wait for the semaphore.
+ while (!xSemaphoreTake(ctrl_access_semphr, portMAX_DELAY));
+
+ return TRUE;
+}
+
+#endif // FREERTOS_USED
+
+
+U8 get_nb_lun(void)
+{
+#if MEM_USB == ENABLE
+ U8 nb_lun;
+
+ if (!Ctrl_access_lock()) return MAX_LUN;
+
+ nb_lun = MAX_LUN + host_get_lun();
+
+ Ctrl_access_unlock();
+
+ return nb_lun;
+#else
+ return MAX_LUN;
+#endif
+}
+
+
+U8 get_cur_lun(void)
+{
+ return LUN_ID_0;
+}
+
+
+Ctrl_status mem_test_unit_ready(U8 lun)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].test_unit_ready() :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_test_unit_ready(lun - LUN_ID_USB);
+#else
+ CTRL_FAIL;
+#endif
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].read_capacity(u32_nb_sector) :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_read_capacity(lun - LUN_ID_USB, u32_nb_sector);
+#else
+ CTRL_FAIL;
+#endif
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+U8 mem_sector_size(U8 lun)
+{
+ U8 sector_size;
+
+ if (!Ctrl_access_lock()) return 0;
+
+ sector_size =
+#if MAX_LUN
+ (lun < MAX_LUN) ? 1 :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_read_sector_size(lun - LUN_ID_USB);
+#else
+ 0;
+#endif
+
+ Ctrl_access_unlock();
+
+ return sector_size;
+}
+
+
+Bool mem_wr_protect(U8 lun)
+{
+ Bool wr_protect;
+
+ if (!Ctrl_access_lock()) return TRUE;
+
+ wr_protect =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].wr_protect() :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_wr_protect(lun - LUN_ID_USB);
+#else
+ TRUE;
+#endif
+
+ Ctrl_access_unlock();
+
+ return wr_protect;
+}
+
+
+Bool mem_removal(U8 lun)
+{
+ Bool removal;
+
+ if (!Ctrl_access_lock()) return TRUE;
+
+ removal =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].removal() :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_removal();
+#else
+ TRUE;
+#endif
+
+ Ctrl_access_unlock();
+
+ return removal;
+}
+
+
+const char *mem_name(U8 lun)
+{
+ return
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].name :
+#endif
+#if LUN_USB == ENABLE
+ LUN_USB_NAME;
+#else
+ NULL;
+#endif
+}
+
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+
+Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_read_action(nb_sector);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].usb_read_10(addr, nb_sector) :
+#endif
+ CTRL_FAIL;
+ memory_stop_read_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_write_action(nb_sector);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].usb_write_10(addr, nb_sector) :
+#endif
+ CTRL_FAIL;
+ memory_stop_write_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+//! @}
+
+#endif // ACCESS_USB == ENABLED
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+
+Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_read_action(1);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].mem_2_ram(addr, ram) :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_mem_2_ram(addr, ram);
+#else
+ CTRL_FAIL;
+#endif
+ memory_stop_read_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_write_action(1);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].ram_2_mem(addr, ram) :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_ram_2_mem(addr, ram);
+#else
+ CTRL_FAIL;
+#endif
+ memory_stop_write_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+//! @}
+
+#endif // ACCESS_MEM_TO_RAM == ENABLED
+
+
+#if ACCESS_STREAM == ENABLED
+
+/*! \name Streaming MEM <-> MEM Interface
+ */
+//! @{
+
+
+ #if ACCESS_MEM_TO_MEM == ENABLED
+
+#include "fat.h"
+
+Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector)
+{
+#if (defined __GNUC__) && (defined __AVR32__)
+ __attribute__((__aligned__(4)))
+#elif (defined __ICCAVR32__)
+ #pragma data_alignment = 4
+#endif
+ static U8 sector_buf[FS_512B];
+ Ctrl_status status = CTRL_GOOD;
+
+ while (nb_sector--)
+ {
+ if ((status = memory_2_ram(src_lun, src_addr++, sector_buf)) != CTRL_GOOD) break;
+ if ((status = ram_2_memory(dest_lun, dest_addr++, sector_buf)) != CTRL_GOOD) break;
+ }
+
+ return status;
+}
+
+ #endif // ACCESS_MEM_TO_MEM == ENABLED
+
+
+Ctrl_status stream_state(U8 id)
+{
+ return CTRL_GOOD;
+}
+
+
+U16 stream_stop(U8 id)
+{
+ return 0;
+}
+
+
+//! @}
+
+#endif // ACCESS_STREAM == ENABLED
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h
new file mode 100644
index 0000000..358bf65
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h
@@ -0,0 +1,369 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Abstraction layer for memory interfaces.
+ *
+ * This module contains the interfaces:
+ * - MEM <-> USB;
+ * - MEM <-> RAM;
+ * - MEM <-> MEM.
+ *
+ * This module may be configured and expanded to support the following features:
+ * - write-protected globals;
+ * - password-protected data;
+ * - specific features;
+ * - etc.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CTRL_ACCESS_H_
+#define _CTRL_ACCESS_H_
+
+#include "compiler.h"
+#include "conf_access.h"
+
+
+//! Status returned by CTRL_ACCESS interfaces.
+typedef enum
+{
+ CTRL_GOOD = PASS, //!< Success, memory ready.
+ CTRL_FAIL = FAIL, //!< An error occurred.
+ CTRL_NO_PRESENT = FAIL + 1, //!< Memory unplugged.
+ CTRL_BUSY = FAIL + 2 //!< Memory not initialized or changed.
+} Ctrl_status;
+
+
+// FYI: Each Logical Unit Number (LUN) corresponds to a memory.
+
+// Check LUN defines.
+#ifndef LUN_0
+ #error LUN_0 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_1
+ #error LUN_1 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_2
+ #error LUN_2 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_3
+ #error LUN_3 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_4
+ #error LUN_4 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_5
+ #error LUN_5 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_6
+ #error LUN_6 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_7
+ #error LUN_7 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_USB
+ #error LUN_USB must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+
+/*! \name LUN IDs
+ */
+//! @{
+#define LUN_ID_0 (0) //!< First static LUN.
+#define LUN_ID_1 (LUN_ID_0 + LUN_0)
+#define LUN_ID_2 (LUN_ID_1 + LUN_1)
+#define LUN_ID_3 (LUN_ID_2 + LUN_2)
+#define LUN_ID_4 (LUN_ID_3 + LUN_3)
+#define LUN_ID_5 (LUN_ID_4 + LUN_4)
+#define LUN_ID_6 (LUN_ID_5 + LUN_5)
+#define LUN_ID_7 (LUN_ID_6 + LUN_6)
+#define MAX_LUN (LUN_ID_7 + LUN_7) //!< Number of static LUNs.
+#define LUN_ID_USB (MAX_LUN) //!< First dynamic LUN (USB host mass storage).
+//! @}
+
+
+// Include LUN header files.
+#if LUN_0 == ENABLE
+ #include LUN_0_INCLUDE
+#endif
+#if LUN_1 == ENABLE
+ #include LUN_1_INCLUDE
+#endif
+#if LUN_2 == ENABLE
+ #include LUN_2_INCLUDE
+#endif
+#if LUN_3 == ENABLE
+ #include LUN_3_INCLUDE
+#endif
+#if LUN_4 == ENABLE
+ #include LUN_4_INCLUDE
+#endif
+#if LUN_5 == ENABLE
+ #include LUN_5_INCLUDE
+#endif
+#if LUN_6 == ENABLE
+ #include LUN_6_INCLUDE
+#endif
+#if LUN_7 == ENABLE
+ #include LUN_7_INCLUDE
+#endif
+#if LUN_USB == ENABLE
+ #include LUN_USB_INCLUDE
+#endif
+
+
+// Check the configuration of write protection in conf_access.h.
+#ifndef GLOBAL_WR_PROTECT
+ #error GLOBAL_WR_PROTECT must be defined as ENABLED or DISABLED in conf_access.h
+#endif
+
+
+#if GLOBAL_WR_PROTECT == ENABLED
+
+//! Write protect.
+extern Bool g_wr_protect;
+
+#endif
+
+
+/*! \name Control Interface
+ */
+//! @{
+
+#ifdef FREERTOS_USED
+
+/*! \brief Initializes the LUN access locker.
+ *
+ * \return \c TRUE if the locker was successfully initialized, else \c FALSE.
+ */
+extern Bool ctrl_access_init(void);
+
+#endif // FREERTOS_USED
+
+/*! \brief Returns the number of LUNs.
+ *
+ * \return Number of LUNs in the system.
+ */
+extern U8 get_nb_lun(void);
+
+/*! \brief Returns the current LUN.
+ *
+ * \return Current LUN.
+ *
+ * \todo Implement.
+ */
+extern U8 get_cur_lun(void);
+
+/*! \brief Tests the memory state and initializes the memory if required.
+ *
+ * The TEST UNIT READY SCSI primary command allows an application client to poll
+ * a LUN until it is ready without having to allocate memory for returned data.
+ *
+ * This command may be used to check the media status of LUNs with removable
+ * media.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return Status.
+ */
+extern Ctrl_status mem_test_unit_ready(U8 lun);
+
+/*! \brief Returns the address of the last valid sector (512 bytes) in the
+ * memory.
+ *
+ * \param lun Logical Unit Number.
+ * \param u32_nb_sector Pointer to the address of the last valid sector.
+ *
+ * \return Status.
+ */
+extern Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector);
+
+/*! \brief Returns the size of the physical sector.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return Sector size (unit: 512 bytes).
+ */
+extern U8 mem_sector_size(U8 lun);
+
+/*! \brief Returns the write-protection state of the memory.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return \c TRUE if the memory is write-protected, else \c FALSE.
+ *
+ * \note Only used by removable memories with hardware-specific write
+ * protection.
+ */
+extern Bool mem_wr_protect(U8 lun);
+
+/*! \brief Tells whether the memory is removable.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return \c TRUE if the memory is removable, else \c FALSE.
+ */
+extern Bool mem_removal(U8 lun);
+
+/*! \brief Returns a pointer to the LUN name.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return Pointer to the LUN name string.
+ */
+extern const char *mem_name(U8 lun);
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+/*! \brief Tranfers data from the memory to USB.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to read.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector);
+
+/*! \brief Tranfers data from USB to the memory.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to write.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector);
+
+//! @}
+
+#endif // ACCESS_USB == ENABLED
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+/*! \brief Copies 1 data sector from the memory to RAM.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to read.
+ * \param ram Pointer to RAM buffer to write.
+ *
+ * \return Status.
+ */
+extern Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram);
+
+/*! \brief Copies 1 data sector from RAM to the memory.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to write.
+ * \param ram Pointer to RAM buffer to read.
+ *
+ * \return Status.
+ */
+extern Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram);
+
+//! @}
+
+#endif // ACCESS_MEM_TO_RAM == ENABLED
+
+
+#if ACCESS_STREAM == ENABLED
+
+/*! \name Streaming MEM <-> MEM Interface
+ */
+//! @{
+
+//! Erroneous streaming data transfer ID.
+#define ID_STREAM_ERR 0xFF
+
+ #if ACCESS_MEM_TO_MEM == ENABLED
+
+/*! \brief Copies data from one memory to another.
+ *
+ * \param src_lun Source Logical Unit Number.
+ * \param src_addr Source address of first memory sector to read.
+ * \param dest_lun Destination Logical Unit Number.
+ * \param dest_addr Destination address of first memory sector to write.
+ * \param nb_sector Number of sectors to copy.
+ *
+ * \return Status.
+ */
+extern Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector);
+
+ #endif // ACCESS_MEM_TO_MEM == ENABLED
+
+/*! \brief Returns the state of a streaming data transfer.
+ *
+ * \param id Transfer ID.
+ *
+ * \return Status.
+ *
+ * \todo Implement.
+ */
+extern Ctrl_status stream_state(U8 id);
+
+/*! \brief Stops a streaming data transfer.
+ *
+ * \param id Transfer ID.
+ *
+ * \return Number of remaining sectors.
+ *
+ * \todo Implement.
+ */
+extern U16 stream_stop(U8 id);
+
+//! @}
+
+#endif // ACCESS_STREAM == ENABLED
+
+
+#endif // _CTRL_ACCESS_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c
new file mode 100644
index 0000000..c7c0a03
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c
@@ -0,0 +1,119 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Macros and functions dedicated to debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "debug.h"
+
+
+#if (defined __GNUC__)
+# include "malloc.h"
+
+U32 get_heap_curr_used_size( void )
+{
+ struct mallinfo my_info=mallinfo();
+ return my_info.uordblks;
+}
+
+U32 get_heap_total_used_size( void )
+{
+ struct mallinfo my_info=mallinfo();
+ return my_info.arena;
+}
+#endif
+
+U32 get_heap_free_size( void )
+{
+ U32 high_mark= AVR32_SRAM_SIZE;
+ U32 low_mark = 0;
+ U32 size ;
+ void* p_mem;
+
+ size = (high_mark + low_mark)/2;
+
+ do
+ {
+ p_mem = malloc(size);
+ if( p_mem != NULL)
+ { // Can allocate memory
+ free(p_mem);
+ low_mark = size;
+ }
+ else
+ { // Can not allocate memory
+ high_mark = size;
+ }
+
+ size = (high_mark + low_mark)/2;
+ }
+ while( (high_mark-low_mark) >1 );
+
+ return size;
+}
+
+static void* round_trace_pbuf;
+static U32 round_trace_size;
+
+void uc3_round_trace_init(void* buf, U32 size)
+{
+ round_trace_pbuf = buf;
+ (*(U32*)round_trace_pbuf)=(U32)buf+4;
+ round_trace_size = size;
+}
+
+void uc3_round_trace(U32 val)
+{
+ //Disable_global_interrupt();
+
+ U32* p_wr = (U32*)(*(U32*)round_trace_pbuf);
+ *p_wr = val;
+ p_wr++;
+ if( ((U32)p_wr % round_trace_size) ==0 )
+ p_wr= (U32*)round_trace_pbuf+1;
+ *p_wr = 0xdeadbeef;
+ *(U32*)round_trace_pbuf = (U32)p_wr;
+
+ //Enable_global_interrupt();
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h
new file mode 100644
index 0000000..a832d7c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h
@@ -0,0 +1,116 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Macros and functions dedicated to debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _DEBUG_H_
+#define _DEBUG_H_
+
+#include "stringz.h"
+
+/*! \brief These macros are used to add traces memory.
+ *
+ * First, initialise the trace with Uc3_trace_init(pointer), giving the start address
+ * of the memory location where will be stored the trace.
+ * Use Uc3_trace(something) to store "something" into the memory. The end of the trace
+ * is signaled by the "0xdeadbeef" pattern.
+ */
+#define Uc3_trace_init(debug_addr) \
+ *(U32*)(debug_addr)=debug_addr+4
+
+#define Uc3_trace(debug_addr, x) \
+ *(U32*)(*(U32*)(debug_addr) ) = (U32)(x) ;\
+ *(U32*)(*(U32*)(debug_addr)+4) = 0xdeadbeef ;\
+ *(U32*)(debug_addr ) = *(U32*)(debug_addr)+4
+
+/*! \brief This macro is used to insert labels into assembly output.
+ *
+ */
+#define Insert_label(name) \
+ __asm__ __volatile__ (STRINGZ(name)":");
+
+#if (defined __GNUC__)
+/*! \brief Returns the number of total of used bytes allocated from the HEAP.
+ *
+ * \retval total number of used bytes.
+ */
+U32 get_heap_total_used_size( void );
+
+/*! \brief Returns the number of bytes currently used from the HEAP.
+ *
+ * \retval total number of used bytes.
+ */
+U32 get_heap_curr_used_size( void );
+#endif
+
+/*! \brief Returns the number of free bytes in the HEAP.
+ *
+ * This funtion tries to allocate the maximum number of bytes by dichotomical method.
+ *
+ * \retval number of free bytes.
+ */
+extern U32 get_heap_free_size( void );
+
+/*! \name Traces function using a round buffer
+ */
+//! @{
+
+/*! \brief Initialize the trace using a round buffer.
+ *
+ * \param buf Base address of the buffer used for the trace.
+ * \param size Size of the round buffer. Must be a power of 2.
+ */
+void uc3_round_trace_init(void* buf, U32 size);
+
+/*! \brief Trace a data in the round buffer.
+ *
+ * The end of the trace is signaled by the "0xdeadbeef" pattern.
+ * \param val Data to trace;
+ */
+void uc3_round_trace(U32 val);
+
+//! @}
+
+
+#endif // _DEBUG_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c
new file mode 100644
index 0000000..99e9274
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c
@@ -0,0 +1,215 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Strings and integers print module for debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "gpio.h"
+#include "usart.h"
+#include "print_funcs.h"
+
+
+//! ASCII representation of hexadecimal digits.
+static const char HEX_DIGITS[16] = "0123456789ABCDEF";
+
+
+void init_dbg_rs232(long pba_hz)
+{
+ init_dbg_rs232_ex(DBG_USART_BAUDRATE, pba_hz);
+}
+
+
+void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz)
+{
+ static const gpio_map_t DBG_USART_GPIO_MAP =
+ {
+ {DBG_USART_RX_PIN, DBG_USART_RX_FUNCTION},
+ {DBG_USART_TX_PIN, DBG_USART_TX_FUNCTION}
+ };
+
+ // Options for debug USART.
+ usart_options_t dbg_usart_options =
+ {
+ .baudrate = baudrate,
+ .charlength = 8,
+ .paritytype = USART_NO_PARITY,
+ .stopbits = USART_1_STOPBIT,
+ .channelmode = USART_NORMAL_CHMODE
+ };
+
+ // Setup GPIO for debug USART.
+ gpio_enable_module(DBG_USART_GPIO_MAP,
+ sizeof(DBG_USART_GPIO_MAP) / sizeof(DBG_USART_GPIO_MAP[0]));
+
+ // Initialize it in RS232 mode.
+ usart_init_rs232(DBG_USART, &dbg_usart_options, pba_hz);
+}
+
+
+void print_dbg(const char *str)
+{
+ // Redirection to the debug USART.
+ print(DBG_USART, str);
+}
+
+
+void print_dbg_char(int c)
+{
+ // Redirection to the debug USART.
+ print_char(DBG_USART, c);
+}
+
+
+void print_dbg_ulong(unsigned long n)
+{
+ // Redirection to the debug USART.
+ print_ulong(DBG_USART, n);
+}
+
+
+void print_dbg_char_hex(unsigned char n)
+{
+ // Redirection to the debug USART.
+ print_char_hex(DBG_USART, n);
+}
+
+
+void print_dbg_short_hex(unsigned short n)
+{
+ // Redirection to the debug USART.
+ print_short_hex(DBG_USART, n);
+}
+
+
+void print_dbg_hex(unsigned long n)
+{
+ // Redirection to the debug USART.
+ print_hex(DBG_USART, n);
+}
+
+
+void print(volatile avr32_usart_t *usart, const char *str)
+{
+ // Invoke the USART driver to transmit the input string with the given USART.
+ usart_write_line(usart, str);
+}
+
+
+void print_char(volatile avr32_usart_t *usart, int c)
+{
+ // Invoke the USART driver to transmit the input character with the given USART.
+ usart_putchar(usart, c);
+}
+
+
+void print_ulong(volatile avr32_usart_t *usart, unsigned long n)
+{
+ char tmp[11];
+ int i = sizeof(tmp) - 1;
+
+ // Convert the given number to an ASCII decimal representation.
+ tmp[i] = '\0';
+ do
+ {
+ tmp[--i] = '0' + n % 10;
+ n /= 10;
+ } while (n);
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp + i);
+}
+
+
+void print_char_hex(volatile avr32_usart_t *usart, unsigned char n)
+{
+ char tmp[3];
+ int i;
+
+ // Convert the given number to an ASCII hexadecimal representation.
+ tmp[2] = '\0';
+ for (i = 1; i >= 0; i--)
+ {
+ tmp[i] = HEX_DIGITS[n & 0xF];
+ n >>= 4;
+ }
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp);
+}
+
+
+void print_short_hex(volatile avr32_usart_t *usart, unsigned short n)
+{
+ char tmp[5];
+ int i;
+
+ // Convert the given number to an ASCII hexadecimal representation.
+ tmp[4] = '\0';
+ for (i = 3; i >= 0; i--)
+ {
+ tmp[i] = HEX_DIGITS[n & 0xF];
+ n >>= 4;
+ }
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp);
+}
+
+
+void print_hex(volatile avr32_usart_t *usart, unsigned long n)
+{
+ char tmp[9];
+ int i;
+
+ // Convert the given number to an ASCII hexadecimal representation.
+ tmp[8] = '\0';
+ for (i = 7; i >= 0; i--)
+ {
+ tmp[i] = HEX_DIGITS[n & 0xF];
+ n >>= 4;
+ }
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp);
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h
new file mode 100644
index 0000000..38f931d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h
@@ -0,0 +1,294 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Strings and integers print module for debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _PRINT_FUNCS_H_
+#define _PRINT_FUNCS_H_
+
+#include <avr32/io.h>
+#include "board.h"
+
+
+/*! \name USART Settings for the Debug Module
+ */
+//! @{
+#if BOARD == EVK1100
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == EVK1101
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == UC3C_EK
+# define DBG_USART (&AVR32_USART2)
+# define DBG_USART_RX_PIN AVR32_USART2_RXD_0_1_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART2_RXD_0_1_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART2_TXD_0_1_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART2_TXD_0_1_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == EVK1104
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == EVK1105
+# define DBG_USART (&AVR32_USART0)
+# define DBG_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == STK1000
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION
+# define DBG_USART_BAUDRATE 115200
+#elif BOARD == NGW100
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION
+# define DBG_USART_BAUDRATE 115200
+#elif BOARD == STK600_RCUC3L0
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_1_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_1_FUNCTION
+// For the RX pin, connect STK600.PORTE.PE3 to STK600.RS232 SPARE.RXD
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_1_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_1_FUNCTION
+// For the TX pin, connect STK600.PORTE.PE2 to STK600.RS232 SPARE.TXD
+# define DBG_USART_BAUDRATE 57600
+# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
+#elif BOARD == UC3L_EK
+# define DBG_USART (&AVR32_USART3)
+# define DBG_USART_RX_PIN AVR32_USART3_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART3_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART3_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART3_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+# define DBG_USART_CLOCK_MASK AVR32_USART3_CLK_PBA
+#elif BOARD == ARDUINO
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
+#endif
+
+#if !defined(DBG_USART) || \
+ !defined(DBG_USART_RX_PIN) || \
+ !defined(DBG_USART_RX_FUNCTION) || \
+ !defined(DBG_USART_TX_PIN) || \
+ !defined(DBG_USART_TX_FUNCTION) || \
+ !defined(DBG_USART_BAUDRATE)
+# error The USART configuration to use for debug on your board is missing
+#endif
+//! @}
+
+/*! \name VT100 Common Commands
+ */
+//! @{
+#define CLEARSCR "\x1B[2J\x1B[;H" //!< Clear screen.
+#define CLEAREOL "\x1B[K" //!< Clear end of line.
+#define CLEAREOS "\x1B[J" //!< Clear end of screen.
+#define CLEARLCR "\x1B[0K" //!< Clear line cursor right.
+#define CLEARLCL "\x1B[1K" //!< Clear line cursor left.
+#define CLEARELN "\x1B[2K" //!< Clear entire line.
+#define CLEARCDW "\x1B[0J" //!< Clear cursor down.
+#define CLEARCUP "\x1B[1J" //!< Clear cursor up.
+#define GOTOYX "\x1B[%.2d;%.2dH" //!< Set cursor to (y, x).
+#define INSERTMOD "\x1B[4h" //!< Insert mode.
+#define OVERWRITEMOD "\x1B[4l" //!< Overwrite mode.
+#define DELAFCURSOR "\x1B[K" //!< Erase from cursor to end of line.
+#define CRLF "\r\n" //!< Carriage Return + Line Feed.
+//! @}
+
+/*! \name VT100 Cursor Commands
+ */
+//! @{
+#define CURSON "\x1B[?25h" //!< Show cursor.
+#define CURSOFF "\x1B[?25l" //!< Hide cursor.
+//! @}
+
+/*! \name VT100 Character Commands
+ */
+//! @{
+#define NORMAL "\x1B[0m" //!< Normal.
+#define BOLD "\x1B[1m" //!< Bold.
+#define UNDERLINE "\x1B[4m" //!< Underline.
+#define BLINKING "\x1B[5m" //!< Blink.
+#define INVVIDEO "\x1B[7m" //!< Inverse video.
+//! @}
+
+/*! \name VT100 Color Commands
+ */
+//! @{
+#define CL_BLACK "\033[22;30m" //!< Black.
+#define CL_RED "\033[22;31m" //!< Red.
+#define CL_GREEN "\033[22;32m" //!< Green.
+#define CL_BROWN "\033[22;33m" //!< Brown.
+#define CL_BLUE "\033[22;34m" //!< Blue.
+#define CL_MAGENTA "\033[22;35m" //!< Magenta.
+#define CL_CYAN "\033[22;36m" //!< Cyan.
+#define CL_GRAY "\033[22;37m" //!< Gray.
+#define CL_DARKGRAY "\033[01;30m" //!< Dark gray.
+#define CL_LIGHTRED "\033[01;31m" //!< Light red.
+#define CL_LIGHTGREEN "\033[01;32m" //!< Light green.
+#define CL_YELLOW "\033[01;33m" //!< Yellow.
+#define CL_LIGHTBLUE "\033[01;34m" //!< Light blue.
+#define CL_LIGHTMAGENTA "\033[01;35m" //!< Light magenta.
+#define CL_LIGHTCYAN "\033[01;36m" //!< Light cyan.
+#define CL_WHITE "\033[01;37m" //!< White.
+//! @}
+
+
+/*! \brief Sets up DBG_USART with 8N1 at DBG_USART_BAUDRATE.
+ *
+ * \param pba_hz PBA clock frequency (Hz).
+ */
+extern void init_dbg_rs232(long pba_hz);
+
+/*! \brief Sets up DBG_USART with 8N1 at a given baud rate.
+ *
+ * \param baudrate Baud rate to set DBG_USART to.
+ * \param pba_hz PBA clock frequency (Hz).
+ */
+extern void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz);
+
+/*! \brief Prints a string of characters to DBG_USART.
+ *
+ * \param str The string of characters to print.
+ */
+extern void print_dbg(const char *str);
+
+/*! \brief Prints a character to DBG_USART.
+ *
+ * \param c The character to print.
+ */
+extern void print_dbg_char(int c);
+
+/*! \brief Prints an integer to DBG_USART in a decimal representation.
+ *
+ * \param n The integer to print.
+ */
+extern void print_dbg_ulong(unsigned long n);
+
+/*! \brief Prints a char to DBG_USART in an hexadecimal representation.
+ *
+ * \param n The char to print.
+ */
+extern void print_dbg_char_hex(unsigned char n);
+
+/*! \brief Prints a short integer to DBG_USART in an hexadecimal representation.
+ *
+ * \param n The short integer to print.
+ */
+extern void print_dbg_short_hex(unsigned short n);
+
+/*! \brief Prints an integer to DBG_USART in an hexadecimal representation.
+ *
+ * \param n The integer to print.
+ */
+extern void print_dbg_hex(unsigned long n);
+
+/*! \brief Prints a string of characters to a given USART.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param str The string of characters to print.
+ */
+extern void print(volatile avr32_usart_t *usart, const char *str);
+
+/*! \brief Prints a character to a given USART.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param c The character to print.
+ */
+extern void print_char(volatile avr32_usart_t *usart, int c);
+
+/*! \brief Prints an integer to a given USART in a decimal representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The integer to print.
+ */
+extern void print_ulong(volatile avr32_usart_t *usart, unsigned long n);
+
+/*! \brief Prints a char to a given USART in an hexadecimal representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The char to print.
+ */
+extern void print_char_hex(volatile avr32_usart_t *usart, unsigned char n);
+
+/*! \brief Prints a short integer to a given USART in an hexadecimal
+ * representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The short integer to print.
+ */
+extern void print_short_hex(volatile avr32_usart_t *usart, unsigned short n);
+
+/*! \brief Prints an integer to a given USART in an hexadecimal representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The integer to print.
+ */
+extern void print_hex(volatile avr32_usart_t *usart, unsigned long n);
+
+
+#endif // _PRINT_FUNCS_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h
new file mode 100644
index 0000000..e3ebea7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h
@@ -0,0 +1,63 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS CPU include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_CPU_H__
+#define __AVR32_NEWLIB_ADDONS_CPU_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+#define CPU_HZ get_cpu_hz()
+
+void udelay(unsigned long usec);
+void set_cpu_hz(unsigned int clk_hz);
+unsigned int get_cpu_hz();
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h
new file mode 100644
index 0000000..31caf13
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h
@@ -0,0 +1,120 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS exceptions include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__
+#define __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+/*
+ Exception vector offsets
+*/
+#define EVBA_UNRECOVERABLE 0x000
+#define EVBA_TLB_MULTIPLE 0x004
+#define EVBA_BUS_ERROR_DATA 0x008
+#define EVBA_BUS_ERROR_INSTR 0x00C
+#define EVBA_NMI 0x010
+#define EVBA_INSTR_ADDR 0x014
+#define EVBA_ITLB_MISS 0x050
+#define EVBA_ITLB_PROT 0x018
+#define EVBA_BREAKPOINT 0x01C
+#define EVBA_ILLEGAL_OPCODE 0x020
+#define EVBA_UNIMPLEMENTED 0x024
+#define EVBA_PRIVILEGE_VIOL 0x028
+#define EVBA_FLOATING_POINT 0x02C
+#define EVBA_COP_ABSENT 0x030
+#define EVBA_SCALL 0x100
+#define EVBA_DATA_ADDR_R 0x034
+#define EVBA_DATA_ADDR_W 0x038
+#define EVBA_DTLB_MISS_R 0x060
+#define EVBA_DTLB_MISS_W 0x070
+#define EVBA_DTLB_PROT_R 0x03C
+#define EVBA_DTLB_PROT_W 0x040
+#define EVBA_DTLB_MODIFIED 0x044
+
+
+/*
+ Define the form of the function used when registering exceptions.
+ The function should return the address which the exception should
+ return to after the exception processing.
+*/
+
+typedef unsigned int (*__exception_handler)(int /*evba_offset*/, int /*return address*/);
+
+/*
+ Define the form of the function used when registering a scall handler.
+*/
+
+typedef void (*__scall_handler)(int /*code*/, int /*p1*/, int /*p2*/
+ , int /*p3*/, int /*p4*/);
+
+/*
+ Function for registering an exception handler for the exception with
+ offset given by evba_offset.
+*/
+void _register_exception_handler(__exception_handler handler, int evba_offset);
+
+/*
+ Function for registering a scall handler which can be a arbirary
+ function which uses r8-r12 for parameters.
+*/
+void _register_scall_handler(__scall_handler handler);
+
+/*
+ Initialize exceptions. Must be called before registering exception handlers
+ and needed to enable exceptions. 'evba' is the pointer to the exception
+ vector. 'handler_table' is a pointer to an array where the pointers to
+ the exception handlers are stored. This array must be at least 0x104 bytes
+ and word aligned.
+*/
+void init_exceptions(void *evba, void *handler_table);
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h
new file mode 100644
index 0000000..76d81f7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h
@@ -0,0 +1,82 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS interrupts include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__
+#define __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+#define INT_GRPS 64
+#define INT_LINES 32
+#define INTPR_BASE (__intc_base__ + 0x0000)
+#define INTREQ_BASE (__intc_base__ + 64*4)
+#define INTCAUSE_BASE (__intc_base__ + 2*64*4)
+
+//Register offsets
+#define INTLEVEL 30
+#define AUTOVECTOR 0
+#define AUTOVECTOR_BITS 14
+
+//Priorities
+#define INT0 0
+#define INT1 1
+#define INT2 2
+#define INT3 3
+
+
+typedef void (*__newlib_int_handler)(int /* int_grp*/, void */*user_handle*/);
+
+__newlib_int_handler register_interrupt(__newlib_int_handler handler, int int_grp, int line, int priority,
+ .../* void *user_handle*/);
+void init_interrupts();
+void set_interrupts_base(void *base);
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h
new file mode 100644
index 0000000..a725769
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h
@@ -0,0 +1,174 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS miscellaneous macros include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_IO_H__
+#define __AVR32_NEWLIB_ADDONS_IO_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+typedef char u8;
+typedef unsigned int u32;
+
+#define __raw_writeb(v,a) (*(volatile unsigned char *)(a) = (v))
+#define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v))
+#define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v))
+
+#define __raw_readb(a) (*(volatile unsigned char *)(a))
+#define __raw_readw(a) (*(volatile unsigned short *)(a))
+#define __raw_readl(a) (*(volatile unsigned int *)(a))
+
+/* As long as I/O is only performed in P4 (or possibly P3), we're safe */
+#define writeb(v,a) __raw_writeb(v,a)
+#define writew(v,a) __raw_writew(v,a)
+#define writel(v,a) __raw_writel(v,a)
+
+#define readb(a) __raw_readb(a)
+#define readw(a) __raw_readw(a)
+#define readl(a) __raw_readl(a)
+
+/* Memory segments when segmentation is enabled */
+#define P0SEG 0x00000000
+#define P1SEG 0x80000000
+#define P2SEG 0xa0000000
+#define P3SEG 0xc0000000
+#define P4SEG 0xe0000000
+
+/* Returns the privileged segment base of a given address */
+#define PXSEG(a) (((unsigned long)(a)) & 0xe0000000)
+
+/* Returns the physical address of a PnSEG (n=1,2) address */
+#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff)
+
+/*
+ * Map an address to a certain privileged segment
+ */
+#define P1SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P1SEG))
+#define P2SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P2SEG))
+#define P3SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG))
+#define P4SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG))
+
+
+#define cached(addr) P1SEGADDR(addr)
+#define uncached(addr) P2SEGADDR(addr)
+#define physaddr(addr) PHYSADDR(addr)
+
+#define BF(field, value) \
+ ({ union { \
+ struct { \
+ unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long __val: field ## _SIZE ; \
+ }; \
+ unsigned long __ul; \
+ } __tmp; \
+ __tmp.__ul = 0; \
+ __tmp.__val = value; \
+ __tmp.__ul;})
+
+#define BF_D(field, value) \
+ ({ union { \
+ struct { \
+ unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long long __val: field ## _SIZE ; \
+ }; \
+ unsigned long long __ul; \
+ } __tmp; \
+ __tmp.__ul = 0; \
+ __tmp.__val = value; \
+ __tmp.__ul;})
+
+#define BFINS(var, field, value) \
+ { union {\
+ struct { \
+ unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long __val: field ## _SIZE ; \
+ }; \
+ unsigned long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val = value; \
+ var = __tmp.__ul;}
+
+#define BFEXT(var, field) \
+ ({ union {\
+ struct { \
+ unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long __val: field ## _SIZE ; \
+ }; \
+ unsigned long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val; })
+
+#define BFINS_D(var, field, value) \
+ { union {\
+ struct { \
+ unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long long __val: field ## _SIZE ; \
+ }; \
+ unsigned long long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val = value; \
+ var = __tmp.__ul;}
+
+#define BFEXT_D(var, field) \
+ ({ union {\
+ struct { \
+ unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long long __val: field ## _SIZE ; \
+ }; \
+ unsigned long long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val; })
+
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h
new file mode 100644
index 0000000..6c4697d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h
@@ -0,0 +1,208 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS USART include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_USART_H__
+#define __AVR32_NEWLIB_ADDONS_USART_H__
+
+#include <_ansi.h>
+
+#include "nlao_io.h"
+
+_BEGIN_STD_C
+
+struct usart3 {
+ volatile u32 us_cr;
+ volatile u32 us_mr;
+ volatile u32 us_ier;
+ volatile u32 us_idr;
+ volatile u32 us_imr;
+ volatile u32 us_csr;
+ volatile u32 us_rhr;
+ volatile u32 us_thr;
+ volatile u32 us_brgr;
+ volatile u32 us_rtor;
+ volatile u32 us_ttgr;
+ volatile u32 us_reserved[5];
+ volatile u32 us_fidi;
+ volatile u32 us_ner;
+ volatile u32 us_xxr;
+ volatile u32 us_if;
+};
+
+/* Register offsets */
+#define US_CR 0x0000
+#define US_MR 0x0004
+#define US_IER 0x0008
+#define US_IDR 0x000c
+#define US_IMR 0x0010
+#define US_CSR 0x0014
+#define US_RHR 0x0018
+#define US_THR 0x001c
+#define US_BRGR 0x0020
+#define US_RTOR 0x0024
+#define US_TTGR 0x0028
+
+#define US_FIDI 0x0040
+#define US_NER 0x0044
+#define US_XXR 0x0048
+#define US_IF 0x004c
+
+#define US_RPR 0x0100
+#define US_RCR 0x0104
+#define US_TPR 0x0108
+#define US_TCR 0x010c
+#define US_RNPR 0x0110
+#define US_RNCR 0x0114
+#define US_TNPR 0x0118
+#define US_TNCR 0x011c
+#define US_PTCR 0x0120
+#define US_PTSR 0x0124
+
+
+
+
+/* USART3 Control Register */
+#define US_CR_RSTRX (1 << 2)
+#define US_CR_RSTTX (1 << 3)
+#define US_CR_RXEN (1 << 4)
+#define US_CR_RXDIS (1 << 5)
+#define US_CR_TXEN (1 << 6)
+#define US_CR_TXDIS (1 << 7)
+#define US_CR_RSTSTA (1 << 8)
+#define US_CR_STTBRK (1 << 9)
+#define US_CR_STPBRK (1 << 10)
+
+#define US_CR_DTREN (1 << 16)
+#define US_CR_DTRDIS (1 << 17)
+#define US_CR_RTSEN (1 << 18)
+#define US_CR_RTSDIS (1 << 19)
+
+/* USART3 Mode Register */
+#define US_MR_MODE (15 << 0)
+#define US_MR_MODE_NORMAL ( 0 << 0)
+#define US_MR_MODE_HWFLOW ( 2 << 0)
+#define US_MR_CLKS ( 3 << 4)
+#define US_MR_CLKS_CLOCK ( 0 << 4)
+#define US_MR_CLKS_FDIV1 ( 1 << 4)
+#define US_MR_CLKS_SLOW ( 2 << 4)
+#define US_MR_CLKS_EXT ( 3 << 4)
+#define US_MR_CHRL_5BITS ( 0 << 6)
+#define US_MR_CHRL_6BITS ( 1 << 6)
+#define US_MR_CHRL_7BITS ( 2 << 6)
+#define US_MR_CHRL_8BITS ( 3 << 6)
+#define US_MR_SYNC ( 1 << 8)
+#define US_MR_PAR_EVEN ( 0 << 9)
+#define US_MR_PAR_ODD ( 1 << 9)
+#define US_MR_PAR_SPACE ( 2 << 9)
+#define US_MR_PAR_MARK ( 3 << 9)
+#define US_MR_PAR_NONE ( 4 << 9)
+#define US_MR_PAR_MDROP ( 6 << 9)
+#define US_MR_NBSTOP_1BIT ( 0 << 12)
+#define US_MR_NBSTOP_1_5BIT ( 1 << 12)
+#define US_MR_NBSTOP_2BITS ( 2 << 12)
+#define US_MR_OVER ( 1 << 19)
+#define US_MR_OVER_X16 ( 0 << 19)
+#define US_MR_OVER_X8 ( 1 << 19)
+
+/* USART3 Channel Status Register */
+#define US_CSR_RXRDY (1 << 0)
+#define US_CSR_TXRDY (1 << 1)
+#define US_CSR_RXBRK (1 << 2)
+#define US_CSR_ENDRX (1 << 3)
+#define US_CSR_ENDTX (1 << 4)
+
+
+#define US_CSR_OVRE (1 << 5)
+#define US_CSR_FRAME (1 << 6)
+#define US_CSR_PARE (1 << 7)
+
+#define US_CSR_TXEMPTY (1 << 9)
+
+#define US_CSR_TXBUFE (1 << 11)
+#define US_CSR_RXBUFF (1 << 12)
+#define US_CSR_RIIC (1 << 16)
+#define US_CSR_DSRIC (1 << 17)
+#define US_CSR_DCDIC (1 << 18)
+#define US_CSR_CTSIC (1 << 19)
+#define US_CSR_RI (1 << 20)
+#define US_CSR_DSR (1 << 21)
+#define US_CSR_DCD (1 << 22)
+#define US_CSR_CTS (1 << 23)
+
+/* USART3 Baud Rate Generator Register */
+#define US_BRGR_CD_OFFSET 0
+#define US_BRGR_FP_OFFSET 16
+
+#define US_BRGR_CD_SIZE 16
+#define US_BRGR_FP_SIZE 3
+
+#define US_BRGR_CD (0xFFFF << 0)
+#define US_BRGR_FP ( 7 << 16)
+
+/*USART3 PDC Transfer Control Register */
+#define US_PTCR_RXTEN (1 << 0)
+#define US_PTCR_RXTDIS (1 << 1)
+#define US_PTCR_TXTEN (1 << 8)
+#define US_PTCR_TXTDIS (1 << 9)
+
+/*USART3 PDC Transfer Status Register */
+#define US_PTSR_RXTEN (1 << 0)
+#define US_PTSR_TXTEN (1 << 8)
+
+
+int usart_init(int baudrate);
+void usart_putc(char c);
+void usart_puts(const char *s);
+int usart_getc(void);
+int usart_tstc(void);
+void usart_setbrg(int baudrate, int cpu_clock);
+void set_usart_base(void *usart_base);
+
+
+_END_STD_C
+
+#endif /* MERLIN_USART3_H */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a
new file mode 100644
index 0000000..aa673ec
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds
new file mode 100644
index 0000000..59152ac
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds
@@ -0,0 +1,266 @@
+/******************************************************************************
+ * AVR32 AT32UC3A0512 GNU LD script file.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: AVR32 AT32UC3A0512
+ *
+ * - author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
+
+OUTPUT_ARCH(avr32:uc)
+
+ENTRY(_start)
+
+MEMORY
+{
+ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00080000
+ INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC
+ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200
+}
+
+PHDRS
+{
+ FLASH PT_LOAD;
+ INTRAM_ALIGN PT_NULL;
+ INTRAM_AT_FLASH PT_LOAD;
+ INTRAM PT_NULL;
+ USERPAGE PT_LOAD;
+}
+
+SECTIONS
+{
+ /* If this heap size is selected, all the INTRAM space from the end of the
+ data area to the beginning of the stack will be allocated for the heap. */
+ __max_heap_size__ = -1;
+
+ /* Use a default heap size if heap size was not defined. */
+ __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__;
+
+ /* Use a default stack size if stack size was not defined. */
+ __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K;
+
+ /* Read-only sections, merged into text segment: */
+ PROVIDE (__executable_start = 0x80000000); . = 0x80000000;
+ .interp : { *(.interp) } >FLASH AT>FLASH :FLASH
+ .reset : { *(.reset) } >FLASH AT>FLASH :FLASH
+ .hash : { *(.hash) } >FLASH AT>FLASH :FLASH
+ .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH
+ .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH
+ .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH
+ .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH
+ .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH
+ .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH
+ .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH
+ .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH
+ .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH
+ .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH
+ .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH
+ .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH
+ .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH
+ .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH
+ .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH
+ .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH
+ .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH
+ .init :
+ {
+ KEEP (*(.init))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .plt : { *(.plt) } >FLASH AT>FLASH :FLASH
+ .text :
+ {
+ *(.text .stub .text.* .gnu.linkonce.t.*)
+ KEEP (*(.text.*personality*))
+ /* .gnu.warning sections are handled specially by elf32.em. */
+ *(.gnu.warning)
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .fini :
+ {
+ KEEP (*(.fini))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ PROVIDE (__etext = .);
+ PROVIDE (_etext = .);
+ PROVIDE (etext = .);
+ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH
+ .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH
+ .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH
+ .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH
+ .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH
+ . = ORIGIN(INTRAM);
+ .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN
+ /* Exception handling */
+ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Thread Local Storage sections */
+ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Ensure the __preinit_array_start label is properly aligned. We
+ could instead move the label definition inside the section, but
+ the linker would then create the section even if it turns out to
+ be empty, which isn't pretty. */
+ PROVIDE (__preinit_array_start = ALIGN(32 / 8));
+ .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__preinit_array_end = .);
+ PROVIDE (__init_array_start = .);
+ .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__init_array_end = .);
+ PROVIDE (__fini_array_start = .);
+ .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__fini_array_end = .);
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+ KEEP (*crtbegin*.o(.ctors))
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dtors :
+ {
+ KEEP (*crtbegin*.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data :
+ {
+ *(.data .data.* .gnu.linkonce.d.*)
+ KEEP (*(.gnu.linkonce.d.*personality*))
+ SORT(CONSTRUCTORS)
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (edata = .);
+ __bss_start = .;
+ .bss :
+ {
+ *(.dynbss)
+ *(.bss .bss.* .gnu.linkonce.b.*)
+ *(COMMON)
+ /* Align here to ensure that the .bss section occupies space up to
+ _end. Align after .bss to ensure correct alignment even if the
+ .bss section disappears because there are no input sections. */
+ . = ALIGN(8);
+ } >INTRAM AT>INTRAM :INTRAM
+ . = ALIGN(8);
+ _end = .;
+ PROVIDE (end = .);
+ __heap_start__ = ALIGN(8);
+ .heap :
+ {
+ *(.heap)
+ . = (__heap_size__ == __max_heap_size__) ?
+ ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) :
+ __heap_size__;
+ } >INTRAM AT>INTRAM :INTRAM
+ __heap_end__ = .;
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to the beginning
+ of the section so we begin them at 0. */
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+ .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ :
+ {
+ _stack = .;
+ *(.stack)
+ . = __stack_size__;
+ _estack = .;
+ } >INTRAM AT>INTRAM :INTRAM
+ .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE
+ /DISCARD/ : { *(.note.GNU-stack) }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds
new file mode 100644
index 0000000..a5926d8
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds
@@ -0,0 +1,266 @@
+/******************************************************************************
+ * AVR32 AT32UC3A1256 GNU LD script file.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: AVR32 AT32UC3A1256
+ *
+ * - author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
+
+OUTPUT_ARCH(avr32:uc)
+
+ENTRY(_start)
+
+MEMORY
+{
+ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00040000
+ INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC
+ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200
+}
+
+PHDRS
+{
+ FLASH PT_LOAD;
+ INTRAM_ALIGN PT_NULL;
+ INTRAM_AT_FLASH PT_LOAD;
+ INTRAM PT_NULL;
+ USERPAGE PT_LOAD;
+}
+
+SECTIONS
+{
+ /* If this heap size is selected, all the INTRAM space from the end of the
+ data area to the beginning of the stack will be allocated for the heap. */
+ __max_heap_size__ = -1;
+
+ /* Use a default heap size if heap size was not defined. */
+ __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__;
+
+ /* Use a default stack size if stack size was not defined. */
+ __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K;
+
+ /* Read-only sections, merged into text segment: */
+ PROVIDE (__executable_start = 0x80000000); . = 0x80000000;
+ .interp : { *(.interp) } >FLASH AT>FLASH :FLASH
+ .reset : { *(.reset) } >FLASH AT>FLASH :FLASH
+ .hash : { *(.hash) } >FLASH AT>FLASH :FLASH
+ .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH
+ .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH
+ .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH
+ .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH
+ .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH
+ .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH
+ .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH
+ .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH
+ .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH
+ .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH
+ .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH
+ .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH
+ .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH
+ .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH
+ .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH
+ .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH
+ .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH
+ .init :
+ {
+ KEEP (*(.init))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .plt : { *(.plt) } >FLASH AT>FLASH :FLASH
+ .text :
+ {
+ *(.text .stub .text.* .gnu.linkonce.t.*)
+ KEEP (*(.text.*personality*))
+ /* .gnu.warning sections are handled specially by elf32.em. */
+ *(.gnu.warning)
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .fini :
+ {
+ KEEP (*(.fini))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ PROVIDE (__etext = .);
+ PROVIDE (_etext = .);
+ PROVIDE (etext = .);
+ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH
+ .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH
+ .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH
+ .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH
+ .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH
+ . = ORIGIN(INTRAM);
+ .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN
+ /* Exception handling */
+ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Thread Local Storage sections */
+ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Ensure the __preinit_array_start label is properly aligned. We
+ could instead move the label definition inside the section, but
+ the linker would then create the section even if it turns out to
+ be empty, which isn't pretty. */
+ PROVIDE (__preinit_array_start = ALIGN(32 / 8));
+ .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__preinit_array_end = .);
+ PROVIDE (__init_array_start = .);
+ .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__init_array_end = .);
+ PROVIDE (__fini_array_start = .);
+ .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__fini_array_end = .);
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+ KEEP (*crtbegin*.o(.ctors))
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dtors :
+ {
+ KEEP (*crtbegin*.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data :
+ {
+ *(.data .data.* .gnu.linkonce.d.*)
+ KEEP (*(.gnu.linkonce.d.*personality*))
+ SORT(CONSTRUCTORS)
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (edata = .);
+ __bss_start = .;
+ .bss :
+ {
+ *(.dynbss)
+ *(.bss .bss.* .gnu.linkonce.b.*)
+ *(COMMON)
+ /* Align here to ensure that the .bss section occupies space up to
+ _end. Align after .bss to ensure correct alignment even if the
+ .bss section disappears because there are no input sections. */
+ . = ALIGN(8);
+ } >INTRAM AT>INTRAM :INTRAM
+ . = ALIGN(8);
+ _end = .;
+ PROVIDE (end = .);
+ __heap_start__ = ALIGN(8);
+ .heap :
+ {
+ *(.heap)
+ . = (__heap_size__ == __max_heap_size__) ?
+ ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) :
+ __heap_size__;
+ } >INTRAM AT>INTRAM :INTRAM
+ __heap_end__ = .;
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to the beginning
+ of the section so we begin them at 0. */
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+ .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ :
+ {
+ _stack = .;
+ *(.stack)
+ . = __stack_size__;
+ _estack = .;
+ } >INTRAM AT>INTRAM :INTRAM
+ .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE
+ /DISCARD/ : { *(.note.GNU-stack) }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h
new file mode 100644
index 0000000..41163b6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h
@@ -0,0 +1,328 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor macro repeating utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _MREPEAT_H_
+#define _MREPEAT_H_
+
+#include "preprocessor.h"
+
+
+//! Maximal number of repetitions supported by MREPEAT.
+#define MREPEAT_LIMIT 256
+
+/*! \brief Macro repeat.
+ *
+ * This macro represents a horizontal repetition construct.
+ *
+ * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT.
+ * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with
+ * the current repetition number and the auxiliary data argument.
+ * \param data Auxiliary data passed to macro.
+ *
+ * \return <tt>macro(0, data) macro(1, data) ... macro(count - 1, data)</tt>
+ */
+#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data)
+
+#define MREPEAT0( macro, data)
+#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data)
+#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data)
+#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data)
+#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data)
+#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data)
+#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data)
+#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data)
+#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data)
+#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data)
+#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data)
+#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data)
+#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data)
+#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data)
+#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data)
+#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data)
+#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data)
+#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data)
+#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data)
+#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data)
+#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data)
+#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data)
+#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data)
+#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data)
+#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data)
+#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data)
+#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data)
+#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data)
+#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data)
+#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data)
+#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data)
+#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data)
+#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data)
+#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data)
+#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data)
+#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data)
+#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data)
+#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data)
+#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data)
+#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data)
+#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data)
+#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data)
+#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data)
+#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data)
+#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data)
+#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data)
+#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data)
+#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data)
+#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data)
+#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data)
+#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data)
+#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data)
+#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data)
+#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data)
+#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data)
+#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data)
+#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data)
+#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data)
+#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data)
+#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data)
+#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data)
+#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data)
+#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data)
+#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data)
+#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data)
+#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data)
+#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data)
+#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data)
+#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data)
+#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data)
+#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data)
+#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data)
+#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data)
+#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data)
+#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data)
+#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data)
+#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data)
+#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data)
+#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data)
+#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data)
+#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data)
+#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data)
+#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data)
+#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data)
+#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data)
+#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data)
+#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data)
+#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data)
+#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data)
+#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data)
+#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data)
+#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data)
+#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data)
+#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data)
+#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data)
+#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data)
+#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data)
+#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data)
+#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data)
+#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data)
+#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data)
+#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data)
+#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data)
+#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data)
+#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data)
+#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data)
+#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data)
+#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data)
+#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data)
+#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data)
+#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data)
+#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data)
+#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data)
+#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data)
+#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data)
+#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data)
+#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data)
+#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data)
+#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data)
+#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data)
+#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data)
+#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data)
+#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data)
+#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data)
+#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data)
+#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data)
+#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data)
+#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data)
+#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data)
+#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data)
+#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data)
+#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data)
+#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data)
+#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data)
+#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data)
+#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data)
+#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data)
+#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data)
+#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data)
+#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data)
+#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data)
+#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data)
+#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data)
+#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data)
+#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data)
+#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data)
+#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data)
+#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data)
+#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data)
+#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data)
+#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data)
+#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data)
+#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data)
+#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data)
+#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data)
+#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data)
+#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data)
+#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data)
+#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data)
+#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data)
+#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data)
+#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data)
+#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data)
+#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data)
+#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data)
+#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data)
+#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data)
+#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data)
+#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data)
+#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data)
+#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data)
+#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data)
+#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data)
+#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data)
+#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data)
+#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data)
+#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data)
+#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data)
+#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data)
+#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data)
+#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data)
+#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data)
+#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data)
+#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data)
+#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data)
+#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data)
+#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data)
+#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data)
+#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data)
+#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data)
+#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data)
+#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data)
+#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data)
+#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data)
+#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data)
+#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data)
+#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data)
+#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data)
+#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data)
+#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data)
+#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data)
+#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data)
+#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data)
+#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data)
+#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data)
+#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data)
+#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data)
+#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data)
+#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data)
+#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data)
+#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data)
+#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data)
+#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data)
+#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data)
+#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data)
+#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data)
+#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data)
+#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data)
+#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data)
+#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data)
+#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data)
+#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data)
+#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data)
+#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data)
+#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data)
+#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data)
+#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data)
+#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data)
+#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data)
+#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data)
+#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data)
+#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data)
+#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data)
+#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data)
+#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data)
+#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data)
+#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data)
+#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data)
+#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data)
+#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data)
+#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data)
+#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data)
+#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data)
+#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data)
+#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data)
+#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data)
+#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data)
+#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data)
+#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data)
+#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data)
+#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data)
+#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data)
+#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data)
+#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data)
+#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data)
+#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data)
+#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data)
+
+
+#endif // _MREPEAT_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h
new file mode 100644
index 0000000..5b996ba
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h
@@ -0,0 +1,55 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _PREPROCESSOR_H_
+#define _PREPROCESSOR_H_
+
+#include "tpaste.h"
+#include "stringz.h"
+#include "mrepeat.h"
+
+
+#endif // _PREPROCESSOR_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h
new file mode 100644
index 0000000..3528ea0
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h
@@ -0,0 +1,75 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor stringizing utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _STRINGZ_H_
+#define _STRINGZ_H_
+
+
+/*! \brief Stringize.
+ *
+ * Stringize a preprocessing token, this token being allowed to be \#defined.
+ *
+ * May be used only within macros with the token passed as an argument if the token is \#defined.
+ *
+ * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN)
+ * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to
+ * writing "A0".
+ */
+#define STRINGZ(x) #x
+
+/*! \brief Absolute stringize.
+ *
+ * Stringize a preprocessing token, this token being allowed to be \#defined.
+ *
+ * No restriction of use if the token is \#defined.
+ *
+ * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is
+ * equivalent to writing "A0".
+ */
+#define ASTRINGZ(x) STRINGZ(x)
+
+
+#endif // _STRINGZ_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h
new file mode 100644
index 0000000..a5d7bee
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h
@@ -0,0 +1,95 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor token pasting utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _TPASTE_H_
+#define _TPASTE_H_
+
+
+/*! \name Token Paste
+ *
+ * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
+ *
+ * May be used only within macros with the tokens passed as arguments if the tokens are \#defined.
+ *
+ * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by
+ * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is
+ * equivalent to writing U32.
+ */
+//! @{
+#define TPASTE2( a, b) a##b
+#define TPASTE3( a, b, c) a##b##c
+#define TPASTE4( a, b, c, d) a##b##c##d
+#define TPASTE5( a, b, c, d, e) a##b##c##d##e
+#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f
+#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g
+#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h
+#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i
+#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j
+//! @}
+
+/*! \name Absolute Token Paste
+ *
+ * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
+ *
+ * No restriction of use if the tokens are \#defined.
+ *
+ * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined
+ * as 32 is equivalent to writing U32.
+ */
+//! @{
+#define ATPASTE2( a, b) TPASTE2( a, b)
+#define ATPASTE3( a, b, c) TPASTE3( a, b, c)
+#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d)
+#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e)
+#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f)
+#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g)
+#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h)
+#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i)
+#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j)
+//! @}
+
+
+#endif // _TPASTE_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x
new file mode 100644
index 0000000..23b658b
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x
@@ -0,0 +1,121 @@
+/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AVR32UC C runtime startup file.
+ *
+ * This file has been built from the Newlib crt0.S.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32UC devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+
+
+//! @{
+//! \verbatim
+
+
+ // This must be linked @ 0x80000000 if it is to be run upon reset.
+ .section .reset, "ax", @progbits
+
+
+ .global _start
+ .type _start, @function
+_start:
+ // Jump to the C runtime startup routine.
+ lda.w pc, _stext
+
+
+ // _stext is placed outside the .reset section so that the program entry point
+ // can be changed without affecting the C runtime startup.
+ .section .text._stext, "ax", @progbits
+
+
+ .global _stext
+ .type _stext, @function
+_stext:
+ // Set initial stack pointer.
+ lda.w sp, _estack
+
+ // Set up EVBA so interrupts can be enabled.
+ lda.w r0, _evba
+ mtsr AVR32_EVBA, r0
+
+ // Enable the exception processing.
+ csrf AVR32_SR_EM_OFFSET
+
+ // Load initialized data having a global lifetime from the data LMA.
+ lda.w r0, _data
+ lda.w r1, _edata
+ cp r0, r1
+ brhs idata_load_loop_end
+ lda.w r2, _data_lma
+idata_load_loop:
+ ld.d r4, r2++
+ st.d r0++, r4
+ cp r0, r1
+ brlo idata_load_loop
+idata_load_loop_end:
+
+ // Clear uninitialized data having a global lifetime in the blank static storage section.
+ lda.w r0, __bss_start
+ lda.w r1, _end
+ cp r0, r1
+ brhs udata_clear_loop_end
+ mov r2, 0
+ mov r3, 0
+udata_clear_loop:
+ st.d r0++, r2
+ cp r0, r1
+ brlo udata_clear_loop
+udata_clear_loop_end:
+
+#ifdef CONFIG_FRAME_POINTER
+ // Safety: Set the default "return" @ to the exit routine address.
+ lda.w lr, exit
+#endif
+
+ // Start the show.
+ lda.w pc, main
+
+
+//! \endverbatim
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h
new file mode 100644
index 0000000..885be7f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h
@@ -0,0 +1,1145 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Compiler file for AVR32.
+ *
+ * This file defines commonly used types and macros.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _COMPILER_H_
+#define _COMPILER_H_
+
+#if ((defined __GNUC__) && (defined __AVR32__)) || (defined __ICCAVR32__ || defined __AAVR32__)
+# include <avr32/io.h>
+#endif
+#if (defined __ICCAVR32__)
+# include <intrinsics.h>
+#endif
+#include "preprocessor.h"
+
+#include "parts.h"
+
+
+//_____ D E C L A R A T I O N S ____________________________________________
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+#include <stddef.h>
+#include <stdlib.h>
+
+
+#if (defined __ICCAVR32__)
+
+/*! \name Compiler Keywords
+ *
+ * Port of some keywords from GNU GCC for AVR32 to IAR Embedded Workbench for Atmel AVR32.
+ */
+//! @{
+#define __asm__ asm
+#define __inline__ inline
+#define __volatile__
+//! @}
+
+#endif
+
+
+/*! \name Usual Types
+ */
+//! @{
+typedef unsigned char Bool; //!< Boolean.
+#ifndef __cplusplus
+#if !defined(__bool_true_false_are_defined)
+typedef unsigned char bool; //!< Boolean.
+#endif
+#endif
+typedef signed char S8 ; //!< 8-bit signed integer.
+typedef unsigned char U8 ; //!< 8-bit unsigned integer.
+typedef signed short int S16; //!< 16-bit signed integer.
+typedef unsigned short int U16; //!< 16-bit unsigned integer.
+typedef signed long int S32; //!< 32-bit signed integer.
+typedef unsigned long int U32; //!< 32-bit unsigned integer.
+typedef signed long long int S64; //!< 64-bit signed integer.
+typedef unsigned long long int U64; //!< 64-bit unsigned integer.
+typedef float F32; //!< 32-bit floating-point number.
+typedef double F64; //!< 64-bit floating-point number.
+//! @}
+
+
+/*! \name Status Types
+ */
+//! @{
+typedef Bool Status_bool_t; //!< Boolean status.
+typedef U8 Status_t; //!< 8-bit-coded status.
+//! @}
+
+
+/*! \name Aliasing Aggregate Types
+ */
+//! @{
+
+//! 16-bit union.
+typedef union
+{
+ S16 s16 ;
+ U16 u16 ;
+ S8 s8 [2];
+ U8 u8 [2];
+} Union16;
+
+//! 32-bit union.
+typedef union
+{
+ S32 s32 ;
+ U32 u32 ;
+ S16 s16[2];
+ U16 u16[2];
+ S8 s8 [4];
+ U8 u8 [4];
+} Union32;
+
+//! 64-bit union.
+typedef union
+{
+ S64 s64 ;
+ U64 u64 ;
+ S32 s32[2];
+ U32 u32[2];
+ S16 s16[4];
+ U16 u16[4];
+ S8 s8 [8];
+ U8 u8 [8];
+} Union64;
+
+//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ S64 *s64ptr;
+ U64 *u64ptr;
+ S32 *s32ptr;
+ U32 *u32ptr;
+ S16 *s16ptr;
+ U16 *u16ptr;
+ S8 *s8ptr ;
+ U8 *u8ptr ;
+} UnionPtr;
+
+//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ volatile S64 *s64ptr;
+ volatile U64 *u64ptr;
+ volatile S32 *s32ptr;
+ volatile U32 *u32ptr;
+ volatile S16 *s16ptr;
+ volatile U16 *u16ptr;
+ volatile S8 *s8ptr ;
+ volatile U8 *u8ptr ;
+} UnionVPtr;
+
+//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ const S64 *s64ptr;
+ const U64 *u64ptr;
+ const S32 *s32ptr;
+ const U32 *u32ptr;
+ const S16 *s16ptr;
+ const U16 *u16ptr;
+ const S8 *s8ptr ;
+ const U8 *u8ptr ;
+} UnionCPtr;
+
+//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ const volatile S64 *s64ptr;
+ const volatile U64 *u64ptr;
+ const volatile S32 *s32ptr;
+ const volatile U32 *u32ptr;
+ const volatile S16 *s16ptr;
+ const volatile U16 *u16ptr;
+ const volatile S8 *s8ptr ;
+ const volatile U8 *u8ptr ;
+} UnionCVPtr;
+
+//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ S64 *s64ptr;
+ U64 *u64ptr;
+ S32 *s32ptr;
+ U32 *u32ptr;
+ S16 *s16ptr;
+ U16 *u16ptr;
+ S8 *s8ptr ;
+ U8 *u8ptr ;
+} StructPtr;
+
+//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ volatile S64 *s64ptr;
+ volatile U64 *u64ptr;
+ volatile S32 *s32ptr;
+ volatile U32 *u32ptr;
+ volatile S16 *s16ptr;
+ volatile U16 *u16ptr;
+ volatile S8 *s8ptr ;
+ volatile U8 *u8ptr ;
+} StructVPtr;
+
+//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ const S64 *s64ptr;
+ const U64 *u64ptr;
+ const S32 *s32ptr;
+ const U32 *u32ptr;
+ const S16 *s16ptr;
+ const U16 *u16ptr;
+ const S8 *s8ptr ;
+ const U8 *u8ptr ;
+} StructCPtr;
+
+//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ const volatile S64 *s64ptr;
+ const volatile U64 *u64ptr;
+ const volatile S32 *s32ptr;
+ const volatile U32 *u32ptr;
+ const volatile S16 *s16ptr;
+ const volatile U16 *u16ptr;
+ const volatile S8 *s8ptr ;
+ const volatile U8 *u8ptr ;
+} StructCVPtr;
+
+//! @}
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+//_____ M A C R O S ________________________________________________________
+
+/*! \name Usual Constants
+ */
+//! @{
+#define DISABLE 0
+#define ENABLE 1
+#define DISABLED 0
+#define ENABLED 1
+#define OFF 0
+#define ON 1
+#define FALSE 0
+#define TRUE 1
+#ifndef __cplusplus
+#if !defined(__bool_true_false_are_defined)
+#define false FALSE
+#define true TRUE
+#endif
+#endif
+#define KO 0
+#define OK 1
+#define PASS 0
+#define FAIL 1
+#define LOW 0
+#define HIGH 1
+#define CLR 0
+#define SET 1
+//! @}
+
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+/*! \name Bit-Field Handling
+ */
+//! @{
+
+/*! \brief Reads the bits of a value specified by a given bit-mask.
+ *
+ * \param value Value to read bits from.
+ * \param mask Bit-mask indicating bits to read.
+ *
+ * \return Read bits.
+ */
+#define Rd_bits( value, mask) ((value) & (mask))
+
+/*! \brief Writes the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue to write bits to.
+ * \param mask Bit-mask indicating bits to write.
+ * \param bits Bits to write.
+ *
+ * \return Resulting value with written bits.
+ */
+#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\
+ ((bits ) & (mask)))
+
+/*! \brief Tests the bits of a value specified by a given bit-mask.
+ *
+ * \param value Value of which to test bits.
+ * \param mask Bit-mask indicating bits to test.
+ *
+ * \return \c 1 if at least one of the tested bits is set, else \c 0.
+ */
+#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0)
+
+/*! \brief Clears the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue of which to clear bits.
+ * \param mask Bit-mask indicating bits to clear.
+ *
+ * \return Resulting value with cleared bits.
+ */
+#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask))
+
+/*! \brief Sets the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue of which to set bits.
+ * \param mask Bit-mask indicating bits to set.
+ *
+ * \return Resulting value with set bits.
+ */
+#define Set_bits(lvalue, mask) ((lvalue) |= (mask))
+
+/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue of which to toggle bits.
+ * \param mask Bit-mask indicating bits to toggle.
+ *
+ * \return Resulting value with toggled bits.
+ */
+#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask))
+
+/*! \brief Reads the bit-field of a value specified by a given bit-mask.
+ *
+ * \param value Value to read a bit-field from.
+ * \param mask Bit-mask indicating the bit-field to read.
+ *
+ * \return Read bit-field.
+ */
+#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask))
+
+/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue to write a bit-field to.
+ * \param mask Bit-mask indicating the bit-field to write.
+ * \param bitfield Bit-field to write.
+ *
+ * \return Resulting value with written bit-field.
+ */
+#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask)))
+
+//! @}
+
+
+/*! \brief This macro is used to test fatal errors.
+ *
+ * The macro tests if the expression is FALSE. If it is, a fatal error is
+ * detected and the application hangs up.
+ *
+ * \param expr Expression to evaluate and supposed to be nonzero.
+ */
+#ifdef _ASSERT_ENABLE_
+ #define Assert(expr) \
+ {\
+ if (!(expr)) while (TRUE);\
+ }
+#else
+ #define Assert(expr)
+#endif
+
+
+/*! \name Zero-Bit Counting
+ *
+ * Under AVR32-GCC, __builtin_clz and __builtin_ctz behave like macros when
+ * applied to constant expressions (values known at compile time), so they are
+ * more optimized than the use of the corresponding assembly instructions and
+ * they can be used as constant expressions e.g. to initialize objects having
+ * static storage duration, and like the corresponding assembly instructions
+ * when applied to non-constant expressions (values unknown at compile time), so
+ * they are more optimized than an assembly periphrasis. Hence, clz and ctz
+ * ensure a possible and optimized behavior for both constant and non-constant
+ * expressions.
+ */
+//! @{
+
+/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer.
+ *
+ * \param u Value of which to count the leading zero bits.
+ *
+ * \return The count of leading zero bits in \a u.
+ */
+#if (defined __GNUC__)
+ #define clz(u) __builtin_clz(u)
+#elif (defined __ICCAVR32__)
+ #define clz(u) __count_leading_zeros(u)
+#endif
+
+/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer.
+ *
+ * \param u Value of which to count the trailing zero bits.
+ *
+ * \return The count of trailing zero bits in \a u.
+ */
+#if (defined __GNUC__)
+ #define ctz(u) __builtin_ctz(u)
+#elif (defined __ICCAVR32__)
+ #define ctz(u) __count_trailing_zeros(u)
+#endif
+
+//! @}
+
+
+/*! \name Bit Reversing
+ */
+//! @{
+
+/*! \brief Reverses the bits of \a u8.
+ *
+ * \param u8 U8 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u8 with reversed bits.
+ */
+#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24))
+
+/*! \brief Reverses the bits of \a u16.
+ *
+ * \param u16 U16 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u16 with reversed bits.
+ */
+#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16))
+
+/*! \brief Reverses the bits of \a u32.
+ *
+ * \param u32 U32 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u32 with reversed bits.
+ */
+#if (defined __GNUC__)
+ #define bit_reverse32(u32) \
+ (\
+ {\
+ unsigned int __value = (U32)(u32);\
+ __asm__ ("brev\t%0" : "+r" (__value) : : "cc");\
+ (U32)__value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define bit_reverse32(u32) ((U32)__bit_reverse((U32)(u32)))
+#endif
+
+/*! \brief Reverses the bits of \a u64.
+ *
+ * \param u64 U64 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u64 with reversed bits.
+ */
+#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\
+ ((U64)bit_reverse32((U64)(u64)) << 32)))
+
+//! @}
+
+
+/*! \name Alignment
+ */
+//! @{
+
+/*! \brief Tests alignment of the number \a val with the \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0.
+ */
+#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) )
+
+/*! \brief Gets alignment of the number \a val with respect to the \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return Alignment of the number \a val with respect to the \a n boundary.
+ */
+#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) )
+
+/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary.
+ *
+ * \param lval Input/output lvalue.
+ * \param n Boundary.
+ * \param alg Alignment.
+ *
+ * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary.
+ */
+#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) )
+
+/*! \brief Aligns the number \a val with the upper \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return Value resulting from the number \a val aligned with the upper \a n boundary.
+ */
+#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1))
+
+/*! \brief Aligns the number \a val with the lower \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return Value resulting from the number \a val aligned with the lower \a n boundary.
+ */
+#define Align_down(val, n ) ( (val) & ~((n) - 1))
+
+//! @}
+
+
+/*! \name Mathematics
+ *
+ * The same considerations as for clz and ctz apply here but AVR32-GCC does not
+ * provide built-in functions to access the assembly instructions abs, min and
+ * max and it does not produce them by itself in most cases, so two sets of
+ * macros are defined here:
+ * - Abs, Min and Max to apply to constant expressions (values known at
+ * compile time);
+ * - abs, min and max to apply to non-constant expressions (values unknown at
+ * compile time).
+ */
+//! @{
+
+/*! \brief Takes the absolute value of \a a.
+ *
+ * \param a Input value.
+ *
+ * \return Absolute value of \a a.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Abs(a) (((a) < 0 ) ? -(a) : (a))
+
+/*! \brief Takes the minimal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Minimal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Min(a, b) (((a) < (b)) ? (a) : (b))
+
+/*! \brief Takes the maximal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Maximal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Max(a, b) (((a) > (b)) ? (a) : (b))
+
+/*! \brief Takes the absolute value of \a a.
+ *
+ * \param a Input value.
+ *
+ * \return Absolute value of \a a.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define abs(a) \
+ (\
+ {\
+ int __value = (a);\
+ __asm__ ("abs\t%0" : "+r" (__value) : : "cc");\
+ __value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define abs(a) Abs(a)
+#endif
+
+/*! \brief Takes the minimal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Minimal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define min(a, b) \
+ (\
+ {\
+ int __value, __arg_a = (a), __arg_b = (b);\
+ __asm__ ("min\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\
+ __value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define min(a, b) __min(a, b)
+#endif
+
+/*! \brief Takes the maximal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Maximal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define max(a, b) \
+ (\
+ {\
+ int __value, __arg_a = (a), __arg_b = (b);\
+ __asm__ ("max\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\
+ __value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define max(a, b) __max(a, b)
+#endif
+
+//! @}
+
+
+/*! \brief Calls the routine at address \a addr.
+ *
+ * It generates a long call opcode.
+ *
+ * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if
+ * it is invoked from the CPU supervisor mode.
+ *
+ * \param addr Address of the routine to call.
+ *
+ * \note It may be used as a long jump opcode in some special cases.
+ */
+#define Long_call(addr) ((*(void (*)(void))(addr))())
+
+/*! \brief Resets the CPU by software.
+ *
+ * \warning It shall not be called from the CPU application mode.
+ */
+#if (defined __GNUC__)
+ #define Reset_CPU() \
+ (\
+ {\
+ __asm__ __volatile__ (\
+ "lddpc r9, 3f\n\t"\
+ "mfsr r8, %[SR]\n\t"\
+ "bfextu r8, r8, %[SR_M_OFFSET], %[SR_M_SIZE]\n\t"\
+ "cp.w r8, 0b001\n\t"\
+ "breq 0f\n\t"\
+ "sub r8, pc, $ - 1f\n\t"\
+ "pushm r8-r9\n\t"\
+ "rete\n"\
+ "0:\n\t"\
+ "mtsr %[SR], r9\n"\
+ "1:\n\t"\
+ "mov r0, 0\n\t"\
+ "mov r1, 0\n\t"\
+ "mov r2, 0\n\t"\
+ "mov r3, 0\n\t"\
+ "mov r4, 0\n\t"\
+ "mov r5, 0\n\t"\
+ "mov r6, 0\n\t"\
+ "mov r7, 0\n\t"\
+ "mov r8, 0\n\t"\
+ "mov r9, 0\n\t"\
+ "mov r10, 0\n\t"\
+ "mov r11, 0\n\t"\
+ "mov r12, 0\n\t"\
+ "mov sp, 0\n\t"\
+ "stdsp sp[0], sp\n\t"\
+ "ldmts sp, sp\n\t"\
+ "mov lr, 0\n\t"\
+ "lddpc pc, 2f\n\t"\
+ ".balign 4\n"\
+ "2:\n\t"\
+ ".word _start\n"\
+ "3:\n\t"\
+ ".word %[RESET_SR]"\
+ :\
+ : [SR] "i" (AVR32_SR),\
+ [SR_M_OFFSET] "i" (AVR32_SR_M_OFFSET),\
+ [SR_M_SIZE] "i" (AVR32_SR_M_SIZE),\
+ [RESET_SR] "i" (AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))\
+ );\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define Reset_CPU() \
+ {\
+ extern void *volatile __program_start;\
+ __asm__ __volatile__ (\
+ "mov r7, LWRD(__program_start)\n\t"\
+ "orh r7, HWRD(__program_start)\n\t"\
+ "mov r9, LWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\
+ "orh r9, HWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\
+ "mfsr r8, "ASTRINGZ(AVR32_SR)"\n\t"\
+ "bfextu r8, r8, "ASTRINGZ(AVR32_SR_M_OFFSET)", "ASTRINGZ(AVR32_SR_M_SIZE)"\n\t"\
+ "cp.w r8, 001b\n\t"\
+ "breq $ + 10\n\t"\
+ "sub r8, pc, -12\n\t"\
+ "pushm r8-r9\n\t"\
+ "rete\n\t"\
+ "mtsr "ASTRINGZ(AVR32_SR)", r9\n\t"\
+ "mov r0, 0\n\t"\
+ "mov r1, 0\n\t"\
+ "mov r2, 0\n\t"\
+ "mov r3, 0\n\t"\
+ "mov r4, 0\n\t"\
+ "mov r5, 0\n\t"\
+ "mov r6, 0\n\t"\
+ "st.w r0[4], r7\n\t"\
+ "mov r7, 0\n\t"\
+ "mov r8, 0\n\t"\
+ "mov r9, 0\n\t"\
+ "mov r10, 0\n\t"\
+ "mov r11, 0\n\t"\
+ "mov r12, 0\n\t"\
+ "mov sp, 0\n\t"\
+ "stdsp sp[0], sp\n\t"\
+ "ldmts sp, sp\n\t"\
+ "mov lr, 0\n\t"\
+ "ld.w pc, lr[4]"\
+ );\
+ __program_start;\
+ }
+#endif
+
+
+/*! \name System Register Access
+ */
+//! @{
+
+/*! \brief Gets the value of the \a sysreg system register.
+ *
+ * \param sysreg Address of the system register of which to get the value.
+ *
+ * \return Value of the \a sysreg system register.
+ */
+#if (defined __GNUC__)
+ #define Get_system_register(sysreg) __builtin_mfsr(sysreg)
+#elif (defined __ICCAVR32__)
+ #define Get_system_register(sysreg) __get_system_register(sysreg)
+#endif
+
+/*! \brief Sets the value of the \a sysreg system register to \a value.
+ *
+ * \param sysreg Address of the system register of which to set the value.
+ * \param value Value to set the \a sysreg system register to.
+ */
+#if (defined __GNUC__)
+ #define Set_system_register(sysreg, value) __builtin_mtsr(sysreg, value)
+#elif (defined __ICCAVR32__)
+ #define Set_system_register(sysreg, value) __set_system_register(sysreg, value)
+#endif
+
+//! @}
+
+
+/*! \name CPU Status Register Access
+ */
+//! @{
+
+/*! \brief Tells whether exceptions are globally enabled.
+ *
+ * \return \c 1 if exceptions are globally enabled, else \c 0.
+ */
+#define Is_global_exception_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_EM_MASK))
+
+/*! \brief Disables exceptions globally.
+ */
+#if (defined __GNUC__)
+ #define Disable_global_exception() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Disable_global_exception() (__set_status_flag(AVR32_SR_EM_OFFSET))
+#endif
+
+/*! \brief Enables exceptions globally.
+ */
+#if (defined __GNUC__)
+ #define Enable_global_exception() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Enable_global_exception() (__clear_status_flag(AVR32_SR_EM_OFFSET))
+#endif
+
+/*! \brief Tells whether interrupts are globally enabled.
+ *
+ * \return \c 1 if interrupts are globally enabled, else \c 0.
+ */
+#define Is_global_interrupt_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_GM_MASK))
+
+/*! \brief Disables interrupts globally.
+ */
+#if (defined __GNUC__)
+ #define Disable_global_interrupt() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Disable_global_interrupt() (__disable_interrupt())
+#endif
+
+/*! \brief Enables interrupts globally.
+ */
+#if (defined __GNUC__)
+ #define Enable_global_interrupt() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Enable_global_interrupt() (__enable_interrupt())
+#endif
+
+/*! \brief Tells whether interrupt level \a int_level is enabled.
+ *
+ * \param int_level Interrupt level (0 to 3).
+ *
+ * \return \c 1 if interrupt level \a int_level is enabled, else \c 0.
+ */
+#define Is_interrupt_level_enabled(int_level) (!Tst_bits(Get_system_register(AVR32_SR), TPASTE3(AVR32_SR_I, int_level, M_MASK)))
+
+/*! \brief Disables interrupt level \a int_level.
+ *
+ * \param int_level Interrupt level to disable (0 to 3).
+ */
+#if (defined __GNUC__)
+ #define Disable_interrupt_level(int_level) ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));})
+#elif (defined __ICCAVR32__)
+ #define Disable_interrupt_level(int_level) (__set_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET)))
+#endif
+
+/*! \brief Enables interrupt level \a int_level.
+ *
+ * \param int_level Interrupt level to enable (0 to 3).
+ */
+#if (defined __GNUC__)
+ #define Enable_interrupt_level(int_level) ({__asm__ __volatile__ ("csrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));})
+#elif (defined __ICCAVR32__)
+ #define Enable_interrupt_level(int_level) (__clear_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET)))
+#endif
+
+/*! \brief Protects subsequent code from interrupts.
+ */
+#define AVR32_ENTER_CRITICAL_REGION( ) \
+ { \
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \
+ Disable_global_interrupt(); // Disable the appropriate interrupts.
+
+/*! \brief This macro must always be used in conjunction with AVR32_ENTER_CRITICAL_REGION
+ * so that interrupts are enabled again.
+ */
+#define AVR32_LEAVE_CRITICAL_REGION( ) \
+ if (global_interrupt_enabled) Enable_global_interrupt(); \
+ }
+
+//! @}
+
+
+/*! \name Debug Register Access
+ */
+//! @{
+
+/*! \brief Gets the value of the \a dbgreg debug register.
+ *
+ * \param dbgreg Address of the debug register of which to get the value.
+ *
+ * \return Value of the \a dbgreg debug register.
+ */
+#if (defined __GNUC__)
+ #define Get_debug_register(dbgreg) __builtin_mfdr(dbgreg)
+#elif (defined __ICCAVR32__)
+ #define Get_debug_register(dbgreg) __get_debug_register(dbgreg)
+#endif
+
+/*! \brief Sets the value of the \a dbgreg debug register to \a value.
+ *
+ * \param dbgreg Address of the debug register of which to set the value.
+ * \param value Value to set the \a dbgreg debug register to.
+ */
+#if (defined __GNUC__)
+ #define Set_debug_register(dbgreg, value) __builtin_mtdr(dbgreg, value)
+#elif (defined __ICCAVR32__)
+ #define Set_debug_register(dbgreg, value) __set_debug_register(dbgreg, value)
+#endif
+
+//! @}
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+//! Boolean evaluating MCU little endianism.
+#if ((defined __GNUC__) && (defined __AVR32__)) || ((defined __ICCAVR32__) || (defined __AAVR32__))
+ #define LITTLE_ENDIAN_MCU FALSE
+#else
+ #error If you are here, you should check what is exactly the processor you are using...
+ #define LITTLE_ENDIAN_MCU FALSE
+#endif
+
+// Check that MCU endianism is correctly defined.
+#ifndef LITTLE_ENDIAN_MCU
+ #error YOU MUST define the MCU endianism with LITTLE_ENDIAN_MCU: either FALSE or TRUE
+#endif
+
+//! Boolean evaluating MCU big endianism.
+#define BIG_ENDIAN_MCU (!LITTLE_ENDIAN_MCU)
+
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+/*! \name MCU Endianism Handling
+ */
+//! @{
+
+#if (LITTLE_ENDIAN_MCU==TRUE)
+ #define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16.
+ #define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16.
+
+ #define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32.
+ #define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32.
+ #define LSB0W(u32) (((U8 *)&(u32))[0]) //!< Least significant byte of 1st rank of \a u32.
+ #define LSB1W(u32) (((U8 *)&(u32))[1]) //!< Least significant byte of 2nd rank of \a u32.
+ #define LSB2W(u32) (((U8 *)&(u32))[2]) //!< Least significant byte of 3rd rank of \a u32.
+ #define LSB3W(u32) (((U8 *)&(u32))[3]) //!< Least significant byte of 4th rank of \a u32.
+ #define MSB3W(u32) LSB0W(u32) //!< Most significant byte of 4th rank of \a u32.
+ #define MSB2W(u32) LSB1W(u32) //!< Most significant byte of 3rd rank of \a u32.
+ #define MSB1W(u32) LSB2W(u32) //!< Most significant byte of 2nd rank of \a u32.
+ #define MSB0W(u32) LSB3W(u32) //!< Most significant byte of 1st rank of \a u32.
+
+ #define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64.
+ #define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64.
+ #define LSH0(u64) (((U16 *)&(u64))[0]) //!< Least significant half-word of 1st rank of \a u64.
+ #define LSH1(u64) (((U16 *)&(u64))[1]) //!< Least significant half-word of 2nd rank of \a u64.
+ #define LSH2(u64) (((U16 *)&(u64))[2]) //!< Least significant half-word of 3rd rank of \a u64.
+ #define LSH3(u64) (((U16 *)&(u64))[3]) //!< Least significant half-word of 4th rank of \a u64.
+ #define MSH3(u64) LSH0(u64) //!< Most significant half-word of 4th rank of \a u64.
+ #define MSH2(u64) LSH1(u64) //!< Most significant half-word of 3rd rank of \a u64.
+ #define MSH1(u64) LSH2(u64) //!< Most significant half-word of 2nd rank of \a u64.
+ #define MSH0(u64) LSH3(u64) //!< Most significant half-word of 1st rank of \a u64.
+ #define LSB0D(u64) (((U8 *)&(u64))[0]) //!< Least significant byte of 1st rank of \a u64.
+ #define LSB1D(u64) (((U8 *)&(u64))[1]) //!< Least significant byte of 2nd rank of \a u64.
+ #define LSB2D(u64) (((U8 *)&(u64))[2]) //!< Least significant byte of 3rd rank of \a u64.
+ #define LSB3D(u64) (((U8 *)&(u64))[3]) //!< Least significant byte of 4th rank of \a u64.
+ #define LSB4D(u64) (((U8 *)&(u64))[4]) //!< Least significant byte of 5th rank of \a u64.
+ #define LSB5D(u64) (((U8 *)&(u64))[5]) //!< Least significant byte of 6th rank of \a u64.
+ #define LSB6D(u64) (((U8 *)&(u64))[6]) //!< Least significant byte of 7th rank of \a u64.
+ #define LSB7D(u64) (((U8 *)&(u64))[7]) //!< Least significant byte of 8th rank of \a u64.
+ #define MSB7D(u64) LSB0D(u64) //!< Most significant byte of 8th rank of \a u64.
+ #define MSB6D(u64) LSB1D(u64) //!< Most significant byte of 7th rank of \a u64.
+ #define MSB5D(u64) LSB2D(u64) //!< Most significant byte of 6th rank of \a u64.
+ #define MSB4D(u64) LSB3D(u64) //!< Most significant byte of 5th rank of \a u64.
+ #define MSB3D(u64) LSB4D(u64) //!< Most significant byte of 4th rank of \a u64.
+ #define MSB2D(u64) LSB5D(u64) //!< Most significant byte of 3rd rank of \a u64.
+ #define MSB1D(u64) LSB6D(u64) //!< Most significant byte of 2nd rank of \a u64.
+ #define MSB0D(u64) LSB7D(u64) //!< Most significant byte of 1st rank of \a u64.
+
+#elif (BIG_ENDIAN_MCU==TRUE)
+ #define MSB(u16) (((U8 *)&(u16))[0]) //!< Most significant byte of \a u16.
+ #define LSB(u16) (((U8 *)&(u16))[1]) //!< Least significant byte of \a u16.
+
+ #define MSH(u32) (((U16 *)&(u32))[0]) //!< Most significant half-word of \a u32.
+ #define LSH(u32) (((U16 *)&(u32))[1]) //!< Least significant half-word of \a u32.
+ #define MSB0W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 1st rank of \a u32.
+ #define MSB1W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 2nd rank of \a u32.
+ #define MSB2W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 3rd rank of \a u32.
+ #define MSB3W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 4th rank of \a u32.
+ #define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32.
+ #define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32.
+ #define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32.
+ #define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32.
+
+ #define MSW(u64) (((U32 *)&(u64))[0]) //!< Most significant word of \a u64.
+ #define LSW(u64) (((U32 *)&(u64))[1]) //!< Least significant word of \a u64.
+ #define MSH0(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 1st rank of \a u64.
+ #define MSH1(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 2nd rank of \a u64.
+ #define MSH2(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 3rd rank of \a u64.
+ #define MSH3(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 4th rank of \a u64.
+ #define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64.
+ #define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64.
+ #define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64.
+ #define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64.
+ #define MSB0D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 1st rank of \a u64.
+ #define MSB1D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 2nd rank of \a u64.
+ #define MSB2D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 3rd rank of \a u64.
+ #define MSB3D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 4th rank of \a u64.
+ #define MSB4D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 5th rank of \a u64.
+ #define MSB5D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 6th rank of \a u64.
+ #define MSB6D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 7th rank of \a u64.
+ #define MSB7D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 8th rank of \a u64.
+ #define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64.
+ #define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64.
+ #define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64.
+ #define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64.
+ #define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64.
+ #define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64.
+ #define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64.
+ #define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64.
+
+#else
+ #error Unknown endianism.
+#endif
+
+//! @}
+
+
+/*! \name Endianism Conversion
+ *
+ * The same considerations as for clz and ctz apply here but AVR32-GCC's
+ * __builtin_bswap_16 and __builtin_bswap_32 do not behave like macros when
+ * applied to constant expressions, so two sets of macros are defined here:
+ * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known
+ * at compile time);
+ * - swap16, swap32 and swap64 to apply to non-constant expressions (values
+ * unknown at compile time).
+ */
+//! @{
+
+/*! \brief Toggles the endianism of \a u16 (by swapping its bytes).
+ *
+ * \param u16 U16 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u16 with toggled endianism.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\
+ ((U16)(u16) << 8)))
+
+/*! \brief Toggles the endianism of \a u32 (by swapping its bytes).
+ *
+ * \param u32 U32 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u32 with toggled endianism.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\
+ ((U32)Swap16((U32)(u32)) << 16)))
+
+/*! \brief Toggles the endianism of \a u64 (by swapping its bytes).
+ *
+ * \param u64 U64 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u64 with toggled endianism.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\
+ ((U64)Swap32((U64)(u64)) << 32)))
+
+/*! \brief Toggles the endianism of \a u16 (by swapping its bytes).
+ *
+ * \param u16 U16 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u16 with toggled endianism.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define swap16(u16) ((U16)__builtin_bswap_16((U16)(u16)))
+#elif (defined __ICCAVR32__)
+ #define swap16(u16) ((U16)__swap_bytes_in_halfwords((U16)(u16)))
+#endif
+
+/*! \brief Toggles the endianism of \a u32 (by swapping its bytes).
+ *
+ * \param u32 U32 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u32 with toggled endianism.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define swap32(u32) ((U32)__builtin_bswap_32((U32)(u32)))
+#elif (defined __ICCAVR32__)
+ #define swap32(u32) ((U32)__swap_bytes((U32)(u32)))
+#endif
+
+/*! \brief Toggles the endianism of \a u64 (by swapping its bytes).
+ *
+ * \param u64 U64 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u64 with toggled endianism.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\
+ ((U64)swap32((U64)(u64)) << 32)))
+
+//! @}
+
+
+/*! \name Target Abstraction
+ */
+//! @{
+
+#define _GLOBEXT_ extern //!< extern storage-class specifier.
+#define _CONST_TYPE_ const //!< const type qualifier.
+#define _MEM_TYPE_SLOW_ //!< Slow memory type.
+#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type.
+#define _MEM_TYPE_FAST_ //!< Fast memory type.
+
+typedef U8 Byte; //!< 8-bit unsigned integer.
+
+#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM.
+#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM.
+#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM.
+#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM.
+
+#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32.
+#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32.
+#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32.
+#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32.
+#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32.
+#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32.
+#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32.
+#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32.
+
+//! @}
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+#endif // _COMPILER_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h
new file mode 100644
index 0000000..ca516ee
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h
@@ -0,0 +1,136 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file ******************************************************************
+ *
+ * \brief ISP configuration file.
+ *
+ * This file contains the possible external configuration of the ISP.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USB module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ***************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_ISP_H_
+#define _CONF_ISP_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+#define PRODUCT_MANUFACTURER_ID 0x58
+#define PRODUCT_FAMILY_ID 0x20
+
+#define ISP_VERSION 0x10
+#define ISP_ID0 0x00
+#define ISP_ID1 0x00
+
+#define ISP_CFG1 (*(volatile U32 *)ISP_CFG1_ADDRESS)
+#define ISP_CFG1_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG1_OFFSET)
+#define ISP_CFG1_OFFSET 0x000001FC
+#define ISP_CFG1_SIZE 4
+
+#define ISP_CFG1_BOOT_KEY1 16
+#define ISP_CFG1_BOOT_KEY1_MASK 0xFFFF0000
+#define ISP_CFG1_BOOT_KEY1_OFFSET 16
+#define ISP_CFG1_BOOT_KEY1_SIZE 16
+#define ISP_CFG1_BOOT_KEY1_VALUE 0xE11E
+
+#define ISP_CFG1_FORCE 9
+#define ISP_CFG1_FORCE_MASK 0x00000200
+#define ISP_CFG1_FORCE_OFFSET 9
+#define ISP_CFG1_FORCE_SIZE 1
+
+#define ISP_CFG1_IO_COND_EN 8
+#define ISP_CFG1_IO_COND_EN_MASK 0x00000100
+#define ISP_CFG1_IO_COND_EN_OFFSET 8
+#define ISP_CFG1_IO_COND_EN_SIZE 1
+
+#define ISP_CFG1_CRC8 0
+#define ISP_CFG1_CRC8_MASK 0x000000FF
+#define ISP_CFG1_CRC8_OFFSET 0
+#define ISP_CFG1_CRC8_SIZE 8
+#define ISP_CFG1_CRC8_POLYNOMIAL 0x107
+
+#define ISP_CFG2 (*(volatile U32 *)ISP_CFG2_ADDRESS)
+#define ISP_CFG2_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG2_OFFSET)
+#define ISP_CFG2_OFFSET 0x000001F8
+#define ISP_CFG2_SIZE 4
+
+#define ISP_CFG2_BOOT_KEY 17
+#define ISP_CFG2_BOOT_KEY_MASK 0xFFFE0000
+#define ISP_CFG2_BOOT_KEY_OFFSET 17
+#define ISP_CFG2_BOOT_KEY_SIZE 15
+#define ISP_CFG2_BOOT_KEY_VALUE 0x494F
+
+#define ISP_CFG2_IO_COND_LEVEL 16
+#define ISP_CFG2_IO_COND_LEVEL_MASK 0x00010000
+#define ISP_CFG2_IO_COND_LEVEL_OFFSET 16
+#define ISP_CFG2_IO_COND_LEVEL_SIZE 1
+
+#define ISP_CFG2_IO_COND_PIN 8
+#define ISP_CFG2_IO_COND_PIN_MASK 0x0000FF00
+#define ISP_CFG2_IO_COND_PIN_OFFSET 8
+#define ISP_CFG2_IO_COND_PIN_SIZE 8
+
+#define ISP_CFG2_CRC8 0
+#define ISP_CFG2_CRC8_MASK 0x000000FF
+#define ISP_CFG2_CRC8_OFFSET 0
+#define ISP_CFG2_CRC8_SIZE 8
+#define ISP_CFG2_CRC8_POLYNOMIAL 0x107
+
+#define ISP_KEY (*(volatile U32 *)ISP_KEY_ADDRESS)
+#define ISP_KEY_ADDRESS (AVR32_SRAM_ADDRESS + ISP_KEY_OFFSET)
+#define ISP_KEY_OFFSET 0x00000000
+#define ISP_KEY_SIZE 4
+#define ISP_KEY_VALUE ('I' << 24 | 'S' << 16 | 'P' << 8 | 'K')
+
+#ifndef ISP_OSC
+ #define ISP_OSC 0
+#endif
+
+#define DFU_FRAME_LENGTH 2048
+
+#define PROGRAM_START_ADDRESS (AVR32_FLASH_ADDRESS + PROGRAM_START_OFFSET)
+#define PROGRAM_START_OFFSET 0x00002000
+
+
+#endif // _CONF_ISP_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h
new file mode 100644
index 0000000..6637b2f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h
@@ -0,0 +1,203 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Arch file for AVR32.
+ *
+ * This file defines common AVR32 UC3 series.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _ARCH_H_
+#define _ARCH_H_
+
+// UC3 A Series
+#define UC3A0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3A0128__) || \
+ defined (__AVR32_UC3A0256__) || \
+ defined (__AVR32_UC3A0512__) || \
+ defined (__AVR32_UC3A0512ES__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3A0128__) || \
+ defined (__AT32UC3A0256__) || \
+ defined (__AT32UC3A0512__) || \
+ defined (__AT32UC3A0512ES__)))
+
+#define UC3A1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3A1128__) || \
+ defined (__AVR32_UC3A1256__) || \
+ defined (__AVR32_UC3A1512__) || \
+ defined (__AVR32_UC3A1512ES__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3A1128__) || \
+ defined (__AT32UC3A1256__) || \
+ defined (__AT32UC3A1512__) || \
+ defined (__AT32UC3A1512ES__)))
+
+#define UC3A3 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3A364__) || \
+ defined (__AVR32_UC3A364S__) || \
+ defined (__AVR32_UC3A3128__) || \
+ defined (__AVR32_UC3A3128S__) || \
+ defined (__AVR32_UC3A3256__) || \
+ defined (__AVR32_UC3A3256S__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3A364__) || \
+ defined (__AT32UC3A364S__) || \
+ defined (__AT32UC3A3128__) || \
+ defined (__AT32UC3A3128S__) || \
+ defined (__AT32UC3A3256__) || \
+ defined (__AT32UC3A3256S__)))
+
+#define UC3A (UC3A0 || UC3A1 || UC3A3)
+
+// UC3 B Series
+#define UC3B0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3B064__) || \
+ defined (__AVR32_UC3B0128__) || \
+ defined (__AVR32_UC3B0256__) || \
+ defined (__AVR32_UC3B0256ES__) || \
+ defined (__AVR32_UC3B0512__) || \
+ defined (__AVR32_UC3B0512REVC_))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3B064__) || \
+ defined (__AT32UC3B0128__) || \
+ defined (__AT32UC3B0256__) || \
+ defined (__AT32UC3B0256ES__) || \
+ defined (__AT32UC3B0512__) || \
+ defined (__AT32UC3B0512REVC__)))
+
+#define UC3B1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3B164__) || \
+ defined (__AVR32_UC3B1128__) || \
+ defined (__AVR32_UC3B1256__) || \
+ defined (__AVR32_UC3B1256ES__) || \
+ defined (__AVR32_UC3B1512__) || \
+ defined (__AVR32_UC3B1512ES__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3B164__) || \
+ defined (__AT32UC3B1128__) || \
+ defined (__AT32UC3B1256__) || \
+ defined (__AT32UC3B1256ES__) || \
+ defined (__AT32UC3B1512__) || \
+ defined (__AT32UC3B1512REVC__)))
+
+#define UC3B (UC3B0 || UC3B1 )
+
+// UC3 C Series
+#define UC3C0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3C064C__) || \
+ defined (__AVR32_UC3C0128C__) || \
+ defined (__AVR32_UC3C0256C__) || \
+ defined (__AVR32_UC3C0512CREVC__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3C064C__) || \
+ defined (__AT32UC3C0128C__) || \
+ defined (__AT32UC3C0256C__) || \
+ defined (__AT32UC3C0512C__)))
+
+#define UC3C1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3C164C__) || \
+ defined (__AVR32_UC3C1128C__) || \
+ defined (__AVR32_UC3C1256C__) || \
+ defined (__AVR32_UC3C1512CREVC__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3C164C__) || \
+ defined (__AT32UC3C1128C__) || \
+ defined (__AT32UC3C1256C__) || \
+ defined (__AT32UC3C1512C__)))
+
+#define UC3C2 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3C264C__) || \
+ defined (__AVR32_UC3C2128C__) || \
+ defined (__AVR32_UC3C2256C__) || \
+ defined (__AVR32_UC3C2512CREVC__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3C264C__) || \
+ defined (__AT32UC3C2128C__) || \
+ defined (__AT32UC3C2256C__) || \
+ defined (__AT32UC3C2512C__)))
+
+#define UC3C (UC3C0 || UC3C1 || UC3C2)
+
+// UC3 L Device series
+#define UC3L0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L016__) || \
+ defined (__AVR32_UC3L032__) || \
+ defined (__AVR32_UC3L064__) || \
+ defined (__AVR32_UC3L064REVB__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L016__) || \
+ defined (__AT32UC3L032__) || \
+ defined (__AT32UC3L064__) || \
+ defined (__AT32UC3L064REVB__)))
+
+#define UC3L1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L116__) || \
+ defined (__AVR32_UC3L132__) || \
+ defined (__AVR32_UC3L164__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L116__) || \
+ defined (__AT32UC3L132__) || \
+ defined (__AT32UC3L164__)))
+
+#define UC3L2 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L216__) || \
+ defined (__AVR32_UC3L232__) || \
+ defined (__AVR32_UC3L264__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L216__) || \
+ defined (__AT32UC3L232__) || \
+ defined (__AT32UC3L264__)))
+
+#define UC3L3 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L316__) || \
+ defined (__AVR32_UC3L332__) || \
+ defined (__AVR32_UC3L364__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L316__) || \
+ defined (__AT32UC3L332__) || \
+ defined (__AT32UC3L364__)))
+
+#define UC3L (UC3L0 || UC3L1 || UC3L2 || UC3L3)
+
+#endif // _ARCH_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_spi.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_spi.c
new file mode 100644
index 0000000..a5ef895
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_spi.c
@@ -0,0 +1,1750 @@
+/*
+ * ard_spi.c
+ *
+ * Created on: May 27, 2010
+ * Author: mlf by Metodo2 srl
+ */
+
+//#define _APP_DEBUG_
+
+#include <avr32/io.h>
+#include "board.h"
+#include "gpio.h"
+#include "usart.h"
+#include "ard_spi.h"
+#include "ard_tcp.h"
+#include "wifi_spi.h"
+#include "wl_cm.h"
+#include "ard_utils.h"
+#include "intc.h"
+#include "spi.h"
+#include "debug.h"
+#include "delay.h"
+#include "eic.h"
+#include "timer.h"
+#include "lwip/dns.h"
+#include <board_init.h>
+
+extern const char* fwVersion;
+
+/*! \name USART Settings
+ */
+//! @{
+#if BOARD == EVK1105
+# define ARD_USART_SPI (&AVR32_USART1)
+# define ARD_USART_SPI_SCK_PIN AVR32_USART1_CLK_0_PIN
+# define ARD_USART_SPI_SCK_FUNCTION AVR32_USART1_CLK_0_FUNCTION
+# define ARD_USART_SPI_MISO_PIN AVR32_USART1_TXD_0_0_PIN
+# define ARD_USART_SPI_MISO_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define ARD_USART_SPI_MOSI_PIN AVR32_USART1_RXD_0_0_PIN
+# define ARD_USART_SPI_MOSI_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define ARD_USART_SPI_NSS_PIN AVR32_USART1_CTS_0_0_PIN
+# define ARD_USART_SPI_NSS_FUNCTION AVR32_USART1_CTS_0_0_FUNCTION
+# define ARD_USART_SPI_IRQ AVR32_USART1_IRQ
+#endif
+#if BOARD == ARDUINO
+# define ARD_SPI (&AVR32_SPI0)
+#define EXT_INT_PIN_LINE1 AVR32_EIC_EXTINT_5_PIN
+#define EXT_INT_FUNCTION_LINE1 AVR32_EIC_EXTINT_5_FUNCTION
+#define EXT_INT_LINE1 EXT_INT5
+#define EXT_INT_IRQ_LINE1 AVR32_EIC_IRQ_5
+#define EXT_INT_NB_LINES 1
+#endif
+
+/* These defines should be adjusted to match the application */
+/*! \brief CPU core speed in Hz */
+#define CPUHZ 60000000
+/*! \brief Number of bytes in the receive buffer when operating in slave mode */
+#define BUFFERSIZE 64
+/*! \brief A adjustable delay avoiding multiple requests on the switches */
+//#define TIMEOUT 150000
+#define TIMEOUT CPUHZ/200
+/*! \brief Number of bits in each SPI package*/
+#define SPI_BITS 8
+/*! \brief SPI slave speed in Hz */
+#define SPI_SLAVE_SPEED 1000000
+
+
+#ifndef CMD_MAX_LEN
+#define CMD_MAX_LEN 1024
+#endif
+#ifndef REPLY_MAX_LEN
+#define REPLY_MAX_LEN 1024
+#endif
+
+#define _BUFFERSIZE 100
+
+extern void tcp_debug_print_pcbs(void);
+extern bool ifStatus;
+extern bool scanNetCompleted;
+
+static char buf[CMD_MAX_LEN];
+static char reply[REPLY_MAX_LEN];
+static uint16_t cmdCorr = 0;
+static uint16_t count = 0;
+static uint16_t replyCount = 0;
+static cmd_spi_state_t state = SPI_CMD_IDLE;
+int receivedChars = 0;
+static uint8_t _receiveBuffer[_BUFFERSIZE];
+bool startReply = false;
+bool end_write = false; //TODO only for debug
+
+// Signal indicating a new command is coming from SPI interface
+static volatile Bool startRecvCmdSignal = FALSE;
+
+#define MAX_CMD_NUM 30
+typedef struct sCmd_spi_list{
+ cmd_spi_cb_t cb;
+ char cmd_id;
+ cmd_spi_rcb_t reply_cb;
+ void* ctx;
+ char flags;
+}tCmd_spi_list;
+
+static tCmd_spi_list cmd_spi_list[MAX_CMD_NUM] = { {0} };
+
+#ifdef _SPI_STATS_
+typedef struct sStatSpi
+{
+ int timeoutIntErr;
+ int timeoutErr;
+ int txErr;
+ int rxErr;
+ int wrongFrame;
+ int frameDisalign;
+ int overrideFrame;
+ int lastCmd;
+ int lastError;
+ unsigned long status;
+}tStatSpi;
+
+tStatSpi statSpi = {0};
+
+void initStatSpi()
+{
+ statSpi.lastCmd = 0;
+ statSpi.lastError = 0;
+ statSpi.status= 0;
+ statSpi.txErr = 0;
+ statSpi.rxErr = 0;
+ statSpi.timeoutErr= 0;
+ statSpi.timeoutIntErr= 0;
+ statSpi.wrongFrame = 0;
+ statSpi.frameDisalign = 0;
+ statSpi.overrideFrame = 0;
+}
+
+void printStatSpi()
+{
+ printk("lastCmd \t: 0x%x\n", statSpi.lastCmd);
+ printk("lastErr \t: 0x%x\n", statSpi.lastError);
+ printk("spiStatus\t: 0x%X\n", statSpi.status);
+ printk("spiTxErr \t: 0x%x\n", statSpi.txErr);
+ printk("spiRxErr \t: 0x%x\n", statSpi.rxErr);
+ printk("spiTmoErr\t: 0x%x\n", statSpi.timeoutErr);
+ printk("spiTmoIntErr\t: 0x%x\n", statSpi.timeoutIntErr);
+ printk("wrongFrame\t: 0x%x\n", statSpi.wrongFrame);
+ printk("disalFrame\t: 0x%x\n", statSpi.frameDisalign);
+ printk("overrideFrame\t: 0x%x\n", statSpi.overrideFrame);
+}
+
+cmd_state_t
+cmd_statSpi(int argc, char* argv[], void* ctx)
+{
+ printStatSpi();
+ return CMD_DONE;
+}
+
+cmd_state_t
+cmd_resetStatSpi(int argc, char* argv[], void* ctx)
+{
+ initStatSpi();
+ return CMD_DONE;
+}
+#endif
+
+#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
+#define RETURN_ERR(e) return (e==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR;
+#define RESET_USART_CSR(usart) usart->cr = AVR32_USART_CR_RSTSTA_MASK;
+
+int result = WL_CONNECT_FAILED; //Store the result of the last operation
+
+void* mapSockTCP[MAX_SOCK_NUM];
+
+struct netif* ard_netif = NULL;
+
+// Network list retrived in the last scanNetwork
+static struct wl_network_list_t network_list = { 0 };
+
+struct ip_addr _hostIpAddr;
+
+static bool hostIpAddrFound = false;
+
+void* getTTCP(uint8_t sock)
+{
+ if (sock < MAX_SOCK_NUM)
+ return mapSockTCP[sock];
+ return NULL;
+}
+
+int getSock(void * _ttcp)
+{
+ if (_ttcp != NULL)
+ {
+ int i = 0;
+ for (; i<MAX_SOCK_NUM; i++)
+ {
+ if (_ttcp == mapSockTCP[i])
+ return i;
+ }
+ }
+ return -1;
+}
+
+void setMapSock(uint8_t sock, void* _ttcp)
+{
+ if (sock < MAX_SOCK_NUM)
+ mapSockTCP[sock]=_ttcp;
+ INFO_TCP("Map [%d, %p]\n", sock, _ttcp);
+}
+
+void clearMapSockTcp(uint8_t sock)
+{
+ if (sock < MAX_SOCK_NUM)
+ {
+ //printk("UnMap [%d, %p]\n", sock, mapSockTCP[sock]);
+ mapSockTCP[sock] = NULL;
+ }
+
+}
+
+void initMapSockTcp()
+{
+ memset(mapSockTCP, 0, sizeof(mapSockTCP));
+}
+
+/**
+ * Calculate bitrate based on number of bytes transmitted and elapsed time
+ */
+static void ard_tcp_print_stats(struct ttcp *ttcp) {
+ uint32_t ms = timer_get_ms() - ttcp->start_time;
+ uint32_t bytes = ttcp->mode == TTCP_MODE_TRANSMIT ? ttcp->nbuf
+ * ttcp->buflen : ttcp->recved;
+
+ if (ttcp->verbose)
+ printk("\n");
+
+ printk("TTCP [%p]: %d bytes processed, %d.%d KB/s (%s/%s)\n", ttcp, bytes,
+ bytes / ms, bytes % ms, ttcp->udp ? "udp" : "tcp", ttcp->mode
+ == TTCP_MODE_TRANSMIT ? "tx" : "rx");
+}
+
+
+void showTTCPstatus()
+{
+ printk("IF status: %s\n", (ifStatus) ? "UP":"DOWN");
+ printk("CONN status: %s\n", (_connected) ? "UP":"DOWN");
+
+ int i = 0;
+ for (; i<MAX_SOCK_NUM; i++)
+ {
+ void* p = getTTCP(i);
+ if (p)
+ {
+ ttcp_t* _ttcp = (ttcp_t* )p;
+ printk("Socket n.:%d addr:0x%x port:%d\n", i, _ttcp->addr, _ttcp->port);
+ if (_ttcp->tpcb){
+ printk("[tpcp-%p]-Status:%d\n", _ttcp->tpcb, _ttcp->tpcb->state);
+ }
+ if (_ttcp->lpcb){
+ printk("[tlcp-%p]-Status:%d\n", _ttcp->lpcb, _ttcp->lpcb->state);
+ }
+ ard_tcp_print_stats(_ttcp);
+ }
+ }
+
+ tcp_debug_print_pcbs();
+}
+
+int write_stream(volatile avr32_spi_t *spi, const char *stream, uint16_t len)
+{
+ uint16_t _len = 0;
+ unsigned short dummy=0;
+ bool streamExit = false;
+
+ do {
+ if (*stream == END_CMD)
+ streamExit = true;
+
+ //SIGN1_DN();
+ if (spi_write(spi, *stream) == SPI_ERROR_TIMEOUT)
+ {
+#ifdef _SPI_STATS_
+ statSpi.timeoutErr++;
+ statSpi.txErr++;
+ statSpi.lastError = SPI_ERROR_TIMEOUT;
+ statSpi.status = spi_getStatus(spi);
+#endif
+ return SPI_ERROR_TIMEOUT;
+ }
+ else
+ {
+ stream++;
+ _len++;
+ spi_read(spi,&dummy);
+ }
+ //SIGN1_UP();
+ }while ((!streamExit)&&(_len <= len));
+
+ if (!streamExit)
+ {
+#ifdef _SPI_STATS_
+ statSpi.wrongFrame++;
+ statSpi.lastError = SPI_ERROR_ARGUMENT;
+#endif
+ return SPI_ERROR_ARGUMENT;
+ }
+ return SPI_OK;
+}
+
+void sendError()
+{
+ AVAIL_FOR_SPI();
+ if (spi_write(&AVR32_SPI, ERR_CMD) != SPI_ERROR_TIMEOUT)
+ {
+ //Wait to empty the buffer
+ while(!spi_writeRegisterEmptyCheck(&AVR32_SPI));
+ }
+ BUSY_FOR_SPI();
+ WARN("Send SPI error!\n");
+}
+
+#define ENABLE_SPI_INT() do { \
+ volatile avr32_spi_t *spi = ARD_SPI; \
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \
+ if (global_interrupt_enabled) Disable_global_interrupt(); \
+ spi->IER.rdrf = 1; \
+ spi->IER.rxbuff = 1; spi->IER.endrx = 1; \
+ if (global_interrupt_enabled) Enable_global_interrupt(); \
+}while(0);
+
+#define DISABLE_SPI_INT() do { \
+ volatile avr32_spi_t *spi = ARD_SPI; \
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \
+ if (global_interrupt_enabled) Disable_global_interrupt(); \
+ spi->IDR.rdrf = 1; spi->IDR.rxbuff = 1; spi->IDR.endrx = 1; \
+ if (global_interrupt_enabled) Enable_global_interrupt(); \
+}while(0);
+
+#define CLEAR_SPI_INT() do { \
+ eic_clear_interrupt_line(&AVR32_EIC, AVR32_SPI0_IRQ); \
+ }while(0);
+
+void dump(char* _buf, uint16_t _count) {
+
+ int i;
+ for (i = 0; i < _count; ++i)
+ printk("0x%x ", _buf[i]);
+ printk("\n");
+}
+#ifdef _APP_DEBUG_
+#define DUMP dump
+#endif
+
+#ifdef _APP_DEBUG_
+#define DUMP_SPI_DATA(BUF, COUNT) do { \
+ if (verboseDebug & INFO_SPI_FLAG) { \
+ int i = 0; \
+ for (; i < COUNT; ++i) \
+ { \
+ printk("0x%x ", BUF[i]); \
+ if (i % 20 == 0) \
+ printk("\n"); \
+ } \
+ printk("\n"); \
+ } \
+}while(0);
+#else
+#define DUMP_SPI_DATA(BUF, COUNT) do {}while(0);
+#endif
+
+
+#ifdef _APP_DEBUG_
+#define DUMP_SPI_CMD(BUF) do { \
+ if (verboseDebug & INFO_SPI_FLAG) { \
+ int i = 0; \
+ for (; i < CMD_MAX_LEN; ++i) \
+ { \
+ printk("0x%x ", BUF[i]); \
+ if (BUF[i] == END_CMD) \
+ break; \
+ } \
+ printk("\n"); \
+ } \
+}while(0);
+#else
+#define DUMP_SPI_CMD(BUF) do {}while(0);
+#endif
+
+
+
+int spi_add_cmd(char _cmd_id, cmd_spi_cb_t cb, cmd_spi_rcb_t rcb, void* ctx,
+ char flag) {
+ U32 i;
+ for (i = 0; i < ARRAY_SIZE(cmd_spi_list); i++)
+ if (!cmd_spi_list[i].cb)
+ break;
+
+ if (i == ARRAY_SIZE(cmd_spi_list))
+ {
+ printk("List Commands full!\n");
+ return -1;
+ }
+ cmd_spi_list[i].cmd_id = _cmd_id;
+ cmd_spi_list[i].cb = cb;
+ cmd_spi_list[i].reply_cb = rcb;
+ cmd_spi_list[i].ctx = ctx;
+ cmd_spi_list[i].flags = flag;
+ return 0;
+}
+
+int set_net_cmd_cb(int numParam, char* buf, void* ctx) {
+ struct wl_ssid_t ssid;
+ wl_err_t err = WL_FAILURE;
+ tParam* param = (tParam*) buf;
+
+ if (param->paramLen < WL_SSID_MAX_LENGTH) {
+ memcpy(ssid.ssid, ¶m->param, param->paramLen);
+ ssid.len = param->paramLen;
+ ssid.ssid[ssid.len] = 0;
+ INFO_SPI("SSID:%s\n", ssid.ssid);
+ //dump(ssid.ssid, ssid.len);
+ err = wl_cm_set_network(&ssid, NULL);
+ if (err != 1)
+ WARN("err=%d\n", err);
+ } else {
+ WARN("SSID len out of range");
+ }
+ return err;
+}
+
+extern uint8_t ascii_to_key(char *outp, const char *inp);
+
+int set_key_cmd_cb(int numParam, char* buf, void* ctx) {
+ struct wl_ssid_t ssid;
+ struct wl_mac_addr_t bssid;
+ uint8_t idx=0, len=0;
+ char key[13], key_hex[27];
+ char keyIdx[2];
+ wl_err_t err = WL_SUCCESS;
+ tParam* params = (tParam*) buf;
+
+ INFO_SPI("%s params=%d\n", __FUNCTION__, numParam);
+
+ // SSID
+ memset(&ssid, 0, sizeof ssid);
+
+ if (params->paramLen < WL_SSID_MAX_LENGTH) {
+ memcpy(ssid.ssid, ¶ms->param, params->paramLen);
+ ssid.len = params->paramLen;
+ INFO_SPI("%s\n", ssid.ssid);
+ } else {
+ //printk("SSID len out of range");
+ RETURN_ERR(WL_FAILURE)
+ }
+
+ params = (tParam*)((char*)buf+PARAM_LEN_SIZE+params->paramLen);
+ strncpy(keyIdx, (const char*)¶ms->param, params->paramLen);
+ keyIdx[(uint8_t)params->paramLen]='\0';
+
+ idx = (uint8_t)atoi(keyIdx);
+ // KEY IDX
+ if ((params->paramLen != 1)||(idx < 0)||(idx > 3)){
+ //printk("KEY IDX out of range %d\n", idx);
+ RETURN_ERR(WL_FAILURE)
+ }
+
+ params = (tParam*)((char*)params+PARAM_LEN_SIZE+params->paramLen);
+ strncpy(key_hex, (const char*)¶ms->param, params->paramLen);
+ key_hex[(uint8_t)params->paramLen]='\0';
+ len = ascii_to_key(key, key_hex);
+ // KEY
+ if (( len != 5)&&(len != 13))
+ {
+ //printk("KEY len out of range %d", len);
+ RETURN_ERR(WL_FAILURE)
+ }
+#if 0
+ printk("KEY IDX = %d\n", idx);
+ dump(key, len);
+ printk("KEY len %d\n", len);
+#endif
+ memset(&bssid.octet, 0xff, sizeof bssid.octet);
+
+ wl_add_wep_key(idx, len, key, &bssid);
+ //wl_set_auth_mode(AUTH_MODE_SHARED_KEY);
+ wl_set_default_wep_key(idx);
+
+ //Connect
+ err = wl_cm_set_network(&ssid, NULL);
+ if (err != 1)
+ WARN("err=%d\n", err);
+ RETURN_ERR(err)
+}
+
+int set_passphrase_cmd_cb(int numParam, char* buf, void* ctx) {
+ struct wl_network_t net;
+ char pass[64];
+ wl_err_t err = WL_SUCCESS;
+ tParam* params = (tParam*) buf;
+
+ INFO_SPI("%s params=%d\n", __FUNCTION__, numParam);
+
+ memset(&net, 0, sizeof net);
+ memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet);
+
+ net.enc_type = ENC_TYPE_AUTO;
+
+ // SSID
+ if (params->paramLen < WL_SSID_MAX_LENGTH) {
+ memcpy(net.ssid.ssid, ¶ms->param, params->paramLen);
+ net.ssid.len = params->paramLen;
+ INFO_SPI("%s %d\n", net.ssid.ssid, net.ssid.len);
+ } else {
+ //printk("SSID len out of range");
+ RETURN_ERR(WL_FAILURE)
+ }
+ params = (tParam*)((char*)buf+PARAM_LEN_SIZE+params->paramLen);
+ // PASSPHRASE
+
+ strncpy(pass, (const char*)¶ms->param, params->paramLen);
+ pass[(uint8_t)params->paramLen]='\0';
+ INFO_SPI("Pass: %s %d\n", pass, params->paramLen);
+
+ if (wl_set_passphrase(&net,
+ pass,
+ params->paramLen,
+ ENC_TYPE_AUTO,
+ AUTH_MODE_AUTO)
+ != WL_SUCCESS) {
+ WARN("%s : Failed to add passphrase\n", __func__);
+
+ RETURN_ERR(WL_FAILURE)
+ }
+ printk("Connect to network...");
+ //Connect
+ err = wl_cm_set_network(&net.ssid, NULL);
+ if (err != 1)
+ printk("err=%d\n", err);
+ else
+ printk("OK\n");
+ RETURN_ERR(err)
+}
+
+void set_result(wl_status_t _status)
+{
+ result = _status;
+}
+
+
+void set_result_cmd(int err)
+{
+ wl_err_t _err = (wl_err_t)err;
+ switch (_err)
+ {
+ case WL_SUCCESS:
+ set_result(WL_CONNECTED);
+ ERROR_LED_OFF();
+ break;
+ default:
+ case WL_OOM:
+ case WL_INVALID_LENGTH:
+ case WL_NOT_SUPPORTED:
+ case WL_ABSORBED:
+ case WL_RESOURCES:
+ case WL_BUSY:
+ case WL_RETRY:
+ case WL_FAILURE:
+ set_result(WL_CONNECT_FAILED);
+ ERROR_LED_ON();
+ break;
+ }
+ INFO_SPI("%s %d\n", __FUNCTION__, result);
+}
+
+
+
+extern int ttcp_start(struct ip_addr addr, uint16_t port, void *opaque,
+ void *done_cb, int mode, uint16_t nbuf, uint16_t buflen, int udp, int verbose);
+
+
+int start_server_tcp(uint16_t port, uint8_t sock)
+{
+ struct ip_addr addr = { 0 };
+ uint16_t buflen = 1024;
+ uint16_t nbuf = 1024;
+ wl_err_t err = WL_FAILURE;
+
+#ifdef _APP_DEBUG_
+ int verbose = 1;
+#else
+ int verbose = 0;
+#endif
+ int udp = 0;
+ int mode = 1; //RECEIVE
+ void* _ttcp = NULL;
+
+ if (sock >= MAX_SOCK_NUM)
+ return WIFI_SPI_ERR;
+
+ if (_connected)
+ {
+ WARN("Still connected...wait\n");
+ return WIFI_SPI_ERR;
+ }
+
+ if (!ifStatus)
+ {
+ WARN("IF down...wait\n");
+ return WIFI_SPI_ERR;
+ }
+
+
+ if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0)
+ {
+ INFO_SPI("Start Server [%d, %d] OK!\n", port, sock);
+ setMapSock(sock, _ttcp);
+ err = WL_SUCCESS;
+ }else{
+
+ WARN("Start Server [%d, %d] FAILED!\n", port, sock);
+ clearMapSockTcp(sock);
+ }
+ return err;
+}
+
+
+int start_server_tcp_cmd_cb(int numParam, char* buf, void* ctx) {
+ wl_err_t err = WL_FAILURE;
+ tParam* params = (tParam*) buf;
+ if (numParam == 2)
+ {
+ GET_PARAM_NEXT(INT, params, port);
+ GET_PARAM_NEXT(BYTE, params, sock);
+ err = start_server_tcp(port, sock);
+ }
+ return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR;
+}
+
+int start_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) {
+ wl_err_t err = WL_FAILURE;
+ tParam* params = (tParam*) buf;
+ if (numParam == 3)
+ {
+ GET_PARAM_NEXT(LONG, params, _addr);
+ GET_PARAM_NEXT(INT, params, port);
+ GET_PARAM_NEXT(BYTE, params, sock);
+
+ INFO_SPI("Addr:0x%x, port:%d, sock:%d\n", _addr, port, sock);
+
+ uint16_t buflen = 1024;
+ uint16_t nbuf = 1024;
+ struct ip_addr addr = { .addr = _addr};
+#ifdef _APP_DEBUG_
+ int verbose = 1;
+#else
+ int verbose = 0;
+#endif
+ int udp = 0;
+ int mode = 0; //TRANSMIT
+ void* _ttcp = NULL;
+
+ if (sock >= MAX_SOCK_NUM)
+ return WIFI_SPI_ERR;
+
+ // Check previous connection
+ _ttcp = getTTCP(sock);
+ if (_ttcp != NULL)
+ {
+ WARN("Previous client %p not stopped !\n", _ttcp);
+ ard_tcp_stop(_ttcp);
+ clearMapSockTcp(sock);
+ }
+
+ if (ard_tcp_start((struct ip_addr)addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0)
+ {
+ INFO_SPI("Start Client [0x%x, %d, %d] OK!\n", addr, port, sock);
+ setMapSock(sock, _ttcp);
+ err = WL_SUCCESS;
+ }else{
+ INFO_SPI("Start Client [0x%x, %d, %d] FAILED!\n", addr, port, sock);
+ clearMapSockTcp(sock);
+ }
+ }
+ return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR;
+}
+
+int stop_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) {
+ wl_err_t err = WL_FAILURE;
+ tParam* params = (tParam*) buf;
+ void* _ttcp = NULL;
+
+ if (numParam == 1)
+ {
+ GET_PARAM_NEXT(BYTE, params, sock);
+
+ INFO_SPI("Stop client sock:%d\n", sock);
+
+ if (sock < MAX_SOCK_NUM)
+ {
+ _ttcp = getTTCP(sock);
+ ard_tcp_stop(_ttcp);
+ err = WL_SUCCESS;
+ }
+ }
+ return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR;
+}
+
+int send_data_tcp_cmd_cb(int numParam, char* buf, void* ctx) {
+ wl_err_t err = WL_FAILURE;
+ DATA_LED_ON();
+ tDataParam* msg = (tDataParam*) buf;
+ if ((numParam == 2)&&(msg->dataLen == 1))
+ {
+ GET_DATA_BYTE(sock, buf+2);
+ GET_DATA_INT(len, buf+3);
+ //printk("tcp:%p buf:%p len:%d\n", getTTCP(sock), (uint8_t*)(buf+5), len);
+ err = sendTcpData(getTTCP(sock), (uint8_t*)(buf+5), len);
+ }
+ DATA_LED_OFF();
+ return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR;
+}
+
+int ack_cmd_cb(int numParam, char* buf, void* ctx) {
+ return WIFI_SPI_ACK;
+}
+
+int get_result_cmd_cb(int numParam, char* buf, void* ctx) {
+ INFO_SPI("ifStatus:%d result:%d\n", ifStatus, result);
+ *buf=(ifStatus)?WL_CONNECTED:result;
+ return WIFI_SPI_ACK;
+}
+
+int disconnect_cmd_cb(int numParam, char* buf, void* ctx)
+{
+ return ((wl_disconnect()==WL_SUCCESS)? WIFI_SPI_ACK : WIFI_SPI_ERR);
+}
+
+
+cmd_spi_state_t get_reply_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+
+ reply[3] = 1; // paramLen
+ if (ctx != NULL) {
+ reply[4] = (*(uint8_t*)ctx); //param
+ } else {
+ reply[4] = result; //param
+ }
+
+ END_HEADER_REPLY(reply, 5, *count);
+
+ //INFO_SPI("result:%d\n", result);
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t ack_reply_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+
+ reply[3] = 1; // paramLen
+ if (ctx != NULL) {
+ reply[4] = (*(uint8_t*) ctx != 1) ? WIFI_SPI_ERR : WIFI_SPI_ACK; //param
+ } else {
+ reply[4] = WIFI_SPI_ACK; //param
+ }
+
+ END_HEADER_REPLY(reply, 5, *count);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_reply_ipaddr_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, 3);
+
+ PUT_LONG_IN_BYTE_NO(ard_netif->ip_addr.addr, reply, 3);
+ PUT_LONG_IN_BYTE_NO(ard_netif->netmask.addr, reply, 8);
+ PUT_LONG_IN_BYTE_NO(ard_netif->gw.addr, reply, 13);
+
+ END_HEADER_REPLY(reply, 18, *count);
+
+ return SPI_CMD_DONE;
+}
+
+void foundHostByName(const char *name, struct ip_addr *ipaddr, void *callback_arg)
+{
+ _hostIpAddr.addr = (ipaddr)?ipaddr->addr:0xffffffff;
+ INFO_SPI("foundHostByName: Found Host: name=%s ip=0x%x\n", name, _hostIpAddr.addr);
+ hostIpAddrFound = true;
+}
+
+int req_reply_host_by_name_cb(int numParam, char* buf, void* ctx) {
+
+ char hostName[DNS_MAX_NAME_LENGTH];
+ tParam* params = (tParam*) buf;
+
+ // HostName
+ if (params->paramLen < DNS_MAX_NAME_LENGTH) {
+ memcpy(hostName, ¶ms->param, params->paramLen);
+ hostName[params->paramLen]='\0';
+ } else {
+ RETURN_ERR(WL_FAILURE)
+ }
+
+ INFO_SPI("Looking for Host: name=%s\n", hostName);
+ _hostIpAddr.addr = 0;
+ hostIpAddrFound = false;
+ err_t err = dns_gethostbyname(hostName, &_hostIpAddr, foundHostByName, NULL);
+ if (err == ERR_OK)
+ {
+ INFO_SPI("Found Host: name=%s ip=0x%x\n", hostName, _hostIpAddr.addr);
+ hostIpAddrFound = true;
+ RETURN_ERR(WL_SUCCESS)
+ }
+ RETURN_ERR(WL_FAILURE)
+}
+
+cmd_spi_state_t get_reply_host_by_name_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ u32_t addr = (hostIpAddrFound)?_hostIpAddr.addr : 0xffffffff;
+ INFO_SPI("Searching for Host: ip=0x%x found=%d\n", addr, hostIpAddrFound);
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+
+ PUT_LONG_IN_BYTE_NO(addr, reply, 3);
+
+ END_HEADER_REPLY(reply, 8, *count);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_reply_mac_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+
+ reply[3] = WL_MAC_ADDR_LENGTH;
+ uint8_t mac[WL_MAC_ADDR_LENGTH];
+ if (wl_get_mac_addr(mac) != WL_SUCCESS) {
+ RETURN_ERR_REPLY(recv, reply, count);
+ }
+ //rotate the byte order
+ reply[4]=mac[5];
+ reply[5]=mac[4];
+ reply[6]=mac[3];
+ reply[7]=mac[2];
+ reply[8]=mac[1];
+ reply[9]=mac[0];
+ END_HEADER_REPLY(reply, 10, *count);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_reply_curr_net_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ uint32_t type = (uint32_t)ctx;
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+
+ struct wl_network_t* net = wl_get_current_network();
+ uint8_t len = 0;
+ if (net != NULL)
+ {
+ switch (type)
+ {
+ default:
+ case GET_CURR_SSID_CMD:
+ {
+ len = net->ssid.len;
+ PUT_BUFDATA_BYTE(net->ssid.ssid, len, reply, 3);
+ break;
+ }
+ case GET_CURR_BSSID_CMD:
+ {
+ len = WL_MAC_ADDR_LENGTH; ;
+ PUT_BUFDATA_BYTE_REV(net->bssid.octet, len, reply, 3);
+ break;
+ }
+ case GET_CURR_RSSI_CMD:
+ {
+ len=sizeof(net->rssi);
+ PUT_LONG_IN_BYTE_HO(net->rssi, reply, 3);
+ //printk("RSSI:%d", net->rssi);
+ break;
+ }
+ case GET_CURR_ENCT_CMD:
+ {
+ len = sizeof(net->enc_type);
+ PUT_DATA_BYTE(net->enc_type, reply, 3);
+ //printk("ENCT:%d", net->enc_type);
+ break;
+ }
+ }
+ }else{
+ PUT_DATA_BYTE(0, reply, 3);
+ }
+
+ END_HEADER_REPLY(reply, 3+len+1, *count);
+
+ //dump(reply, *count);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_reply_idx_net_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ uint32_t type = (uint32_t)ctx;
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+
+ DUMP_SPI_CMD(recv);
+
+ GET_DATA_BYTE(idx, recv+4);
+
+ if (idx >= WL_NETWORKS_LIST_MAXNUM)
+ {
+ WARN("Index out of range: %d\n", idx);
+ return SPI_CMD_DONE;
+ }
+ uint8_t len = 0;
+ switch (type)
+ {
+ default:
+ case GET_IDX_SSID_CMD:
+ {
+ len = network_list.net[idx]->ssid.len;
+ PUT_BUFDATA_BYTE(network_list.net[idx]->ssid.ssid, len, reply, 3);
+ INFO_UTIL("SSID:%s\n", network_list.net[idx]->ssid.ssid);
+ break;
+ }
+ case GET_IDX_RSSI_CMD:
+ {
+ len = 4;
+ PUT_LONG_IN_BYTE_HO(network_list.net[idx]->rssi, reply, 3);
+ INFO_UTIL("RSSI:%d\n", network_list.net[idx]->rssi);
+ break;
+ }
+ case GET_IDX_ENCT_CMD:
+ {
+ len = 1;
+ PUT_DATA_BYTE(network_list.net[idx]->enc_type, reply, 3);
+ INFO_UTIL("ENCT:%d\n", network_list.net[idx]->enc_type);
+ break;
+ }
+ }
+
+
+ END_HEADER_REPLY(reply, 3+len+1, *count);
+
+ DUMP(reply, *count);
+
+ return SPI_CMD_DONE;
+}
+
+static void copy_network_list(struct wl_network_list_t *dst,
+ struct wl_network_list_t *src)
+{
+ int i;
+ for (i = 0; i < dst->cnt; i++)
+ free(dst->net[i]);
+ free(dst->net);
+
+ dst->cnt = 0;
+
+ if (src->cnt == 0)
+ return;
+ dst->net = calloc(1, src->cnt * sizeof(struct wl_network_t *));
+ if (dst->net == NULL) {
+ printk("could not allocate all gui net array\n");
+ return;
+ }
+
+ for (i = 0; i < src->cnt; i++) {
+ struct wl_network_t *net = src->net[i];
+ dst->net[i] = malloc(sizeof(*net));
+ if (dst->net[i] == NULL) {
+ printk("could not allocate all gui nets\n");
+ return;
+ }
+
+ memcpy(dst->net[i], net, sizeof(*net));
+ dst->cnt++;
+ }
+}
+
+int start_scan_net_cmd_cb(int numParam, char* buf, void* ctx) {
+ wl_err_t err = WL_FAILURE;
+
+ INFO_SPI("Start Network Scan %d\n", numParam);
+ if (scanNetCompleted){
+ scanNetCompleted = false;
+ err = wl_scan();
+ if (err != WL_SUCCESS)
+ {
+ // May be busy scanning already, no fatal error
+ WARN("err=%d\n", err);
+ err = WL_SUCCESS;
+ }
+ }
+ return err;
+}
+
+cmd_spi_state_t get_reply_scan_networks_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ const int8_t SCAN_NOT_YET_COMPLETED = 0;
+
+ if (!scanNetCompleted)
+ {
+ //return empty list with an error to retry
+ CREATE_HEADER_REPLY(reply, recv, SCAN_NOT_YET_COMPLETED);
+ END_HEADER_REPLY(reply, 3, *count);
+ INFO_SPI("Scan not completed!\n");
+ return SPI_CMD_DONE;
+ }
+
+ int network_cnt = 0;
+ struct wl_network_list_t* wl_network_list;
+
+ wl_get_network_list(&wl_network_list);
+ if (wl_network_list->cnt == 0)
+ {
+ CREATE_HEADER_REPLY(reply, recv, 0);
+ END_HEADER_REPLY(reply, 3, *count);
+ INFO_SPI("Networks not found!\n");
+ return SPI_CMD_DONE;
+ }
+
+ if (wl_network_list->cnt > WL_NETWORKS_LIST_MAXNUM)
+ {
+ network_cnt = WL_NETWORKS_LIST_MAXNUM ;
+ }
+ else{
+ network_cnt = wl_network_list->cnt ;
+ }
+
+ copy_network_list(&network_list, wl_network_list);
+ CREATE_HEADER_REPLY(reply, recv, network_cnt);
+
+ uint8_t start = 3;
+ int ii = 0;
+ for (; ii < network_cnt; ii++)
+ {
+ uint8_t len = network_list.net[ii]->ssid.len+1;
+ network_list.net[ii]->ssid.ssid[network_list.net[ii]->ssid.len]=0;
+ PUT_BUFDATA_BYTE(network_list.net[ii]->ssid.ssid, len, reply, start);
+ start += len+1;
+ INFO_SPI("%d - %s [%d]- %d - %d - 0x%x\n",ii, network_list.net[ii]->ssid.ssid,
+ len, network_list.net[ii]->enc_type,
+ network_list.net[ii]->rssi, network_list.net[ii]->bssid);
+ }
+
+ END_HEADER_REPLY(reply, start, *count);
+ //DUMP(reply, *count);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_state_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1);
+
+ uint8_t _state = CLOSED;
+ if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
+ {
+ _state = getStateTcp(getTTCP((uint8_t)recv[4]), 0);
+ }
+ PUT_DATA_BYTE(_state, reply, 3);
+ END_HEADER_REPLY(reply, 5, *count);
+ INFO_SPI("state:%d\n", _state);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_client_state_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1);
+
+ uint8_t _state = CLOSED;
+ if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
+ {
+ void * p= getTTCP((uint8_t)recv[4]);
+ if (p!=NULL)
+ {
+ // get if we are in server or Transmit mode (0)
+ if (getModeTcp(p) == TTCP_MODE_TRANSMIT)
+ {
+
+ _state = getStateTcp(p, 1);
+ INFO_SPI_VER("CLI> p=%p _ttcp=%p state(tpcb):%d state:%d\n",
+ p, ((struct ttcp*) p)->tpcb,
+ ((struct ttcp*) p)->tpcb->state,
+ _state);
+ }else {
+ _state = getStateTcp(p, 1);
+ INFO_SPI_VER("SER> p=%p _ttcp=%p state(tpcb):%d state(lpcb):%d state:%d\n",
+ p, ((struct ttcp*) p)->tpcb,
+ ((struct ttcp*) p)->tpcb->state,
+ ((struct ttcp*) p)->lpcb->state,
+ _state);
+ }
+ }
+ }
+ PUT_DATA_BYTE(_state, reply, 3);
+ END_HEADER_REPLY(reply, 5, *count);
+ INFO_SPI("state:%d\n", _state);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t avail_data_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1);
+ uint8_t dataAvail = 0;
+ if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
+ {
+ dataAvail = isAvailTcpDataByte((uint8_t)recv[4]) ? 1 : 0;
+ }
+ PUT_DATA_BYTE(dataAvail, reply, 3);
+ END_HEADER_REPLY(reply, 5, *count);
+
+ INFO_SPI("dataAvail:%d\n", dataAvail);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t test_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ static int counter = 0;
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1);
+ PUT_DATA_BYTE(++counter, reply, 3);
+ END_HEADER_REPLY(reply, 5, *count);
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t data_sent_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CHECK_ARD_NETIF(recv, reply, count);
+ SIGN2_DN();
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1);
+ uint8_t dataSent = 0;
+ if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
+ {
+ dataSent = isDataSent(getTTCP((uint8_t)recv[4]));
+ }
+ PUT_DATA_BYTE(dataSent, reply, 3);
+ END_HEADER_REPLY(reply, 5, *count);
+ SIGN2_UP();
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_data_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ uint8_t data;
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ tParam* params = (tParam*)&recv[3];
+
+ GET_PARAM_NEXT(BYTE, params, _sock);
+ GET_PARAM_NEXT(INT, params, _peek);
+
+ if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
+ {
+ SIGN2_DN();
+
+ if (getTcpDataByte((uint8_t)recv[4], &data, _peek))
+ {
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1);
+ PUT_DATA_BYTE(data, reply, 3);
+ END_HEADER_REPLY(reply, 5, *count);
+ }else{
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_0);
+ END_HEADER_REPLY(reply, 3, *count);
+ }
+ SIGN2_UP();
+ }
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_databuf_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ uint8_t* data;
+ uint16_t len;
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<MAX_SOCK_NUM))
+ {
+ if (getTcpData((uint8_t)recv[4], (void**)&data, &len))
+ {
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1);
+ PUT_BUFDATA_INT(data, len, reply, 3);
+ END_HEADER_REPLY(reply, 3+len+2+1, *count);
+ freeTcpData((uint8_t)recv[4]);
+ }else{
+ CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_0);
+ END_HEADER_REPLY(reply, 3, *count);
+ }
+ }
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_firmware_version_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+
+ uint8_t len = strlen(fwVersion);
+
+ PUT_BUFDATA_BYTE(fwVersion, len, reply, 3);
+
+ END_HEADER_REPLY(reply, 3+len+1, *count);
+
+ return SPI_CMD_DONE;
+}
+
+cmd_spi_state_t get_test_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) {
+
+ uint8_t buffer[255] = {0};
+
+ CHECK_ARD_NETIF(recv, reply, count);
+
+ CREATE_HEADER_REPLY(reply, recv, 1);
+ uint8_t len = 0;
+ if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]<0xFF))
+ {
+ len = recv[4];
+ int i= 0;
+ for (; i<len; ++i) buffer[i]=i;
+ PUT_BUFDATA_BYTE(buffer, len, reply, 3);
+ }else{
+ len = strlen(fwVersion);
+ PUT_BUFDATA_BYTE(fwVersion, len, reply, 3);
+ }
+ END_HEADER_REPLY(reply, 3+len+1, *count);
+
+ return SPI_CMD_DONE;
+}
+
+int sendReply(int cmdIdx, char* recv, char* reply, void* resultCmd)
+{
+ uint16_t _count = 0;
+ int _result = SPI_OK;
+
+ cmd_spi_list[cmdIdx].reply_cb(recv, reply, resultCmd, &_count);
+ state = SPI_CMD_REPLING;
+
+ AVAIL_FOR_SPI();
+ _result = write_stream(ARD_SPI, &reply[0], _count);
+#ifdef _SPI_STATS_
+ if ( result != SPI_OK)
+ {
+ statSpi.lastCmd = cmd_spi_list[cmdIdx].cmd_id;
+ }
+#endif
+ BUSY_FOR_SPI();
+
+ //unsigned char status = spi_getStatus(ARD_SPI);
+ //INFO_SPI("Status after write: 0x%x\n",status);
+
+ replyCount = _count;
+ return _result;
+}
+
+unsigned char* getStartCmdSeq(unsigned char* _recv, int len, int *offset)
+{
+ int i = 0;
+ *offset = 0;
+ DEB_PIN_UP();
+ for (; i<len; ++i)
+ {
+ if (_recv[i]==START_CMD)
+ {
+ if (i!=0)
+ {
+ DEB_PIN_DN();
+ WARN("%d] Disall. %d/%d cmd:%d\n", cmdCorr, i, len,_recv[i+1]);
+ }
+ *offset = i;
+ return &_recv[i];
+ }
+ }
+ DEB_PIN_DN();
+ WARN("%d] Disall. %d\n", cmdCorr, i);
+
+ return NULL;
+}
+
+inline bool spiMsg8(uint8_t cmd)
+{
+ return ((cmd & DATA_FLAG)==0);
+}
+
+int call_reply_cb(char* recv, char* reply) {
+
+// // check the start of message
+// //TODO CHECK if also the ,en must be resize
+// //char* recv = (char*)getStartCmdSeq((unsigned char*)_recv, &count);
+// char* recv = (char*)getStartCmdSeq((unsigned char*)_recv, count);
+// if (recv == NULL)
+// return REPLY_ERR_MSG;
+
+ unsigned char cmdId = (unsigned char) recv[1];
+ uint8_t _result = REPLY_NO_ERR;
+ U32 i;
+ for (i = 0; i < ARRAY_SIZE(cmd_spi_list); i++) {
+ if (cmd_spi_list[i].cmd_id == cmdId) {
+
+ if (cmd_spi_list[i].flags == CMD_SET_FLAG) {
+ //Send Reply for SET commands
+ if (sendReply(i, recv, reply, cmd_spi_list[i].ctx) != SPI_OK)
+ return REPLY_ERR_SET;
+ if (spiMsg8(cmdId))
+ {
+ tSpiMsg* spiMsg = (tSpiMsg*) recv;
+ _result = cmd_spi_list[i].cb(spiMsg->nParam,
+ (char*) &(spiMsg->params[0]), NULL);
+ }else
+ {
+ tSpiMsgData* spiMsg = (tSpiMsgData*) recv;
+ _result = cmd_spi_list[i].cb(spiMsg->nParam,
+ (char*) &(spiMsg->params[0]), NULL);
+ }
+
+ if (_result != WIFI_SPI_ACK)
+ return REPLY_ERR_CMD;
+ else
+ return REPLY_NO_ERR;
+ }else{
+ if (spiMsg8(cmdId))
+ {
+ tSpiMsg* spiMsg = (tSpiMsg*) recv;
+ _result = cmd_spi_list[i].cb(spiMsg->nParam,
+ (char*) &(spiMsg->params[0]), NULL);
+ }else{
+ tSpiMsgData* spiMsg = (tSpiMsgData*) recv;
+ _result = cmd_spi_list[i].cb(spiMsg->nParam,
+ (char*) &(spiMsg->params[0]), NULL);
+ }
+ //Send Reply for GET commands or Immediate SET apply
+ if (cmd_spi_list[i].flags == CMD_GET_FLAG) {
+ if (sendReply(i, recv, reply, cmd_spi_list[i].ctx) != SPI_OK)
+ return REPLY_ERR_GET;
+ else
+ return REPLY_NO_ERR;
+ }else if (cmd_spi_list[i].flags == CMD_IMM_SET_FLAG)
+ {
+ if (sendReply(i, recv, reply, &_result) != SPI_OK)
+ return REPLY_ERR_GET;
+ else
+ return REPLY_NO_ERR;
+
+ }
+ }
+ }
+ }
+ // Command not found
+ if (i==ARRAY_SIZE(cmd_spi_list))
+ {
+ WARN("Unknown cmd 0x%x\n", cmdId);
+ DUMP(recv, count);
+ return REPLY_ERR_CMD;
+ }
+ return REPLY_NO_ERR;
+}
+
+void init_spi_cmds() {
+ spi_add_cmd(SET_NET_CMD, set_net_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(SET_PASSPHRASE_CMD, set_passphrase_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(SET_KEY_CMD, set_key_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(GET_CONN_STATUS_CMD, get_result_cmd_cb, get_reply_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_IPADDR_CMD, ack_cmd_cb, get_reply_ipaddr_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_MACADDR_CMD, ack_cmd_cb, get_reply_mac_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_CURR_SSID_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_SSID_CMD, CMD_GET_FLAG);
+ spi_add_cmd(GET_CURR_BSSID_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_BSSID_CMD, CMD_GET_FLAG);
+ spi_add_cmd(GET_CURR_RSSI_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_RSSI_CMD, CMD_GET_FLAG);
+ spi_add_cmd(GET_CURR_ENCT_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_ENCT_CMD, CMD_GET_FLAG);
+ spi_add_cmd(START_SCAN_NETWORKS, start_scan_net_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(SCAN_NETWORKS, ack_cmd_cb, get_reply_scan_networks_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(DISCONNECT_CMD, disconnect_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(GET_IDX_ENCT_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_ENCT_CMD, CMD_GET_FLAG);
+ spi_add_cmd(GET_IDX_SSID_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_SSID_CMD, CMD_GET_FLAG);
+ spi_add_cmd(GET_IDX_RSSI_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_RSSI_CMD, CMD_GET_FLAG);
+ spi_add_cmd(REQ_HOST_BY_NAME_CMD, req_reply_host_by_name_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(GET_HOST_BY_NAME_CMD, ack_cmd_cb, get_reply_host_by_name_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(START_SERVER_TCP_CMD, start_server_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(START_CLIENT_TCP_CMD, start_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(STOP_CLIENT_TCP_CMD, stop_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG);
+ spi_add_cmd(GET_STATE_TCP_CMD, ack_cmd_cb, get_state_tcp_cmd_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_DATA_TCP_CMD, ack_cmd_cb, get_data_tcp_cmd_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(AVAIL_DATA_TCP_CMD, ack_cmd_cb, avail_data_tcp_cmd_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(SEND_DATA_TCP_CMD, send_data_tcp_cmd_cb, ack_reply_cb, NULL, CMD_IMM_SET_FLAG);
+ spi_add_cmd(DATA_SENT_TCP_CMD, ack_cmd_cb, data_sent_tcp_cmd_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_DATABUF_TCP_CMD, ack_cmd_cb, get_databuf_tcp_cmd_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_CLIENT_STATE_TCP_CMD, ack_cmd_cb, get_client_state_tcp_cmd_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_FW_VERSION_CMD, ack_cmd_cb, get_firmware_version_cmd_cb, NULL, CMD_GET_FLAG);
+ spi_add_cmd(GET_TEST_CMD, ack_cmd_cb, get_test_cmd_cb, NULL, CMD_GET_FLAG);
+}
+
+
+int checkMsgParam8(unsigned char* buf)
+{
+ int paramLenTot=0;
+ tSpiMsg* spiMsg = (tSpiMsg*)buf;
+ tParam *param = spiMsg->params;
+ int i=0;
+ for (; i<spiMsg->nParam; ++i)
+ {
+ uint8_t _len = param->paramLen;
+ paramLenTot+= _len+1;
+ //printk("%d) len:0x%x\n", i, _len);
+ param = (tParam*)((char*)(param)+_len+1);
+ }
+ return paramLenTot;
+}
+
+int checkMsgParam16(unsigned char* buf)
+{
+ int paramLenTot=0;
+ tSpiMsgData* spiMsg = (tSpiMsgData*)buf;
+ tDataParam* param = (tDataParam*)spiMsg->params;
+ int i=0;
+ for (; i<spiMsg->nParam; ++i)
+ {
+ uint16_t _len = param->dataLen;
+ paramLenTot+= _len+sizeof(param->dataLen);
+ //printk("%d) len:0x%x\n", i, _len);
+ param = (tDataParam*)((char*)(param)+_len+sizeof(param->dataLen));
+ }
+ return paramLenTot;
+}
+
+bool checkMsgFormat(uint8_t* _recv, int len, int* offset)
+{
+
+ unsigned char* recv = getStartCmdSeq(_recv, len, offset);
+ if ((recv == NULL)||(recv!=_recv))
+ {
+ if ((enableDebug & INFO_WARN_FLAG)&&(len < 20)) //TODO stamp only short messages wrong
+ dump((char*)_recv, len);
+
+ STATSPI_DISALIGN_ERROR();
+
+ if (recv == NULL)
+ return false;
+ }
+ tSpiMsg* spiMsg = (tSpiMsg*) recv;
+ if ((spiMsg->cmd == START_CMD)&&((spiMsg->tcmd & REPLY_FLAG) == 0))
+ {
+ int paramLenTot = 0;
+ if (spiMsg8(spiMsg->tcmd))
+ paramLenTot = checkMsgParam8(recv);
+ else
+ {
+ DUMP_SPI_DATA(_recv, len);
+ paramLenTot = checkMsgParam16(recv);
+ }
+
+ //INFO_SPI("cmd:0x%x TotLen:%d\n", spiMsg->tcmd, paramLenTot);
+ char* p = (char*)recv + paramLenTot + sizeof(tSpiHdr);
+ if (*p == END_CMD)
+ {
+ return true;
+ }else{
+ WARN("%d] Not found end cmd: 0x%x\n", cmdCorr, *p);
+ }
+ }
+ return false;
+}
+
+//#define AVR32_USART_CSR_ITERATION_MASK (UNDERRUN) 0x00000400
+//#define AVR32_USART_CSR_OVRE_MASK 0x00000020
+//#define AVR32_USART_CSR_RXRDY_MASK 0x00000001
+
+
+void spi_poll(struct netif* netif) {
+
+ ard_netif = netif;
+
+ if (startReply)
+ {
+ startReply = false;
+ int offset = 0;
+ DISABLE_SPI_INT();
+ if (checkMsgFormat(_receiveBuffer, receivedChars, &offset))
+ {
+ state = SPI_CMD_INPROGRESS;
+ count = receivedChars-offset;
+ if (count >= CMD_MAX_LEN)
+ count = CMD_MAX_LEN;
+ memcpy(buf, &_receiveBuffer[offset], count);
+
+ //mark as buffer used
+ _receiveBuffer[0] = 0;
+
+ int err = call_reply_cb(buf, &reply[0]);
+ if (err != REPLY_NO_ERR)
+ {
+ DUMP_SPI_DATA(buf, count);
+ DUMP_SPI_DATA(reply, replyCount);
+ }
+ receivedChars = 0;
+ count = 0;
+ state = SPI_CMD_IDLE;
+ }
+ else
+ {
+ sendError();
+ WARN("%d] Check format msg failed!\n", cmdCorr);
+ if (enableDebug & INFO_WARN_FLAG)
+ dump((char*)_receiveBuffer, receivedChars);
+ state = SPI_CMD_IDLE;
+ count=0;
+ //mark as buffer used
+ _receiveBuffer[0] = 0;
+ }
+ CLEAR_SPI_INT();
+ //Enable Spi int to receive a new command
+ ENABLE_SPI_INT();
+ //Available for receiving a new spi data
+ AVAIL_FOR_SPI();
+ }
+
+#ifdef _SPI_STATS_
+ if (statSpi.lastError != 0)
+ {
+ WARN("%d] Errot=0x%x spiStatus:0x%x\n", cmdCorr, statSpi.lastError, statSpi.status);
+ statSpi.lastError = 0;
+ }
+#endif
+}
+
+inline int spi_slaveReceiveInt(volatile avr32_spi_t *spi)
+{
+ receivedChars=0;
+ int index = 0;
+ int err = SPI_OK;
+ state = SPI_CMD_INPUT;
+
+ if (_receiveBuffer[0] != 0)
+ {
+ STATSPI_OVERRIDE_ERROR();
+ }
+
+ do {
+ unsigned int timeout = SPI_TIMEOUT;
+ err = SPI_OK;
+
+ while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=
+ (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) {
+ if ((timeout--)==0) {
+ err=SPI_ERROR_TIMEOUT;
+ break;
+ }
+ }
+ _receiveBuffer[index] = (spi->rdr >> AVR32_SPI_RDR_RD_OFFSET) & 0x00ff;
+ if (err == SPI_OK) {
+ ++index;
+ ++receivedChars;
+ }else{
+#ifdef _SPI_STATS_
+ STATSPI_TIMEOUT_ERROR();
+#endif
+ break;
+ }
+
+ /* break on buffer overflow */
+ if (receivedChars >= _BUFFERSIZE) {
+ err = SPI_ERROR_OVERRUN_AND_MODE_FAULT;
+ break;
+ }
+ } while (_receiveBuffer[index - 1] != END_CMD);
+ return err;
+}
+
+#if defined (__GNUC__)
+__attribute__((__interrupt__))
+#elif defined (__ICCAVR32__)
+__interrupt
+#endif
+static void spi_int_handler(void)
+{
+ volatile avr32_spi_t *spi = ARD_SPI;
+ //DEB_PIN_DN();
+ //AVAIL_FOR_SPI();
+ DISABLE_SPI_INT();
+
+ if ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0)
+ {
+ int err = spi_slaveReceiveInt(ARD_SPI);
+ if (err == SPI_OK)
+ {
+ BUSY_FOR_SPI();
+ startReply=true;
+ ++cmdCorr;
+ //maintain disable interrupt to send the reply command
+ //DEB_PIN_UP();
+ return;
+ }
+ }
+ ENABLE_SPI_INT();
+ //DEB_PIN_UP();
+}
+
+inline spi_status_t spi_read8(volatile avr32_spi_t *spi, unsigned char *data)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=
+ (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ *data = (spi->rdr >> AVR32_SPI_RDR_RD_OFFSET) & 0x00ff;
+
+ return SPI_OK;
+}
+
+
+/*!
+ * \brief Interrupt handler of the External interrupt line "1".
+ */
+#if __GNUC__
+__attribute__((__interrupt__))
+#elif __ICCAVR32__
+__interrupt
+#endif
+static void eic_int_handler1(void)
+{
+ eic_clear_interrupt_line(&AVR32_EIC, EXT_INT_LINE1);
+ startRecvCmdSignal = TRUE;
+}
+
+//! Structure holding the configuration parameters of the EIC module.
+eic_options_t eic_options[EXT_INT_NB_LINES];
+
+void initExtInt()
+{
+ // Enable edge-triggered interrupt.
+ eic_options[0].eic_mode = EIC_MODE_EDGE_TRIGGERED;
+ // Interrupt will trigger on falling edge.
+ eic_options[0].eic_edge = EIC_EDGE_FALLING_EDGE;
+ // Initialize in synchronous mode : interrupt is synchronized to the clock
+ eic_options[0].eic_async = EIC_SYNCH_MODE;
+ // Set the interrupt line number.
+ eic_options[0].eic_line = EXT_INT_LINE1;
+
+ // Disable all interrupts.
+ Disable_global_interrupt();
+
+ INTC_register_interrupt(&eic_int_handler1, EXT_INT_IRQ_LINE1, AVR32_INTC_INT0);
+
+ // Map the interrupt lines to the GPIO pins with the right peripheral functions.
+ gpio_enable_module_pin(EXT_INT_PIN_LINE1,EXT_INT_FUNCTION_LINE1);
+
+ // Init the EIC controller with the options
+ eic_init(&AVR32_EIC, eic_options, EXT_INT_NB_LINES);
+
+ // Enable the chosen lines and their corresponding interrupt feature.
+ eic_enable_line(&AVR32_EIC, eic_options[0].eic_line);
+ eic_enable_interrupt_line(&AVR32_EIC, eic_options[0].eic_line);
+
+ // Enable all interrupts.
+ Enable_global_interrupt();
+}
+
+int initSpi()
+{
+ volatile avr32_spi_t *spi = &AVR32_SPI0;
+ gpio_map_t spi_piomap = { \
+ {AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION}, \
+ {AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION}, \
+ {AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION}, \
+ {AVR32_SPI0_NPCS_0_0_PIN, AVR32_SPI0_NPCS_0_0_FUNCTION}, \
+ };
+
+ INFO_INIT("SPI init...\n");
+
+ /* Init PIO */
+ gpio_enable_module(spi_piomap, ARRAY_SIZE(spi_piomap));
+
+ spi_options_t spiOptions;
+
+ spiOptions.reg = 0;
+ spiOptions.baudrate = SPI_SLAVE_SPEED;
+ spiOptions.bits = SPI_BITS;
+ spiOptions.spck_delay = 0;
+ spiOptions.trans_delay = 4;
+ spiOptions.stay_act = 0;
+ spiOptions.spi_mode = 0;
+ spiOptions.modfdis = 0;
+
+ /* Initialize as slave; bits, spi_mode */
+ if (spi_initSlave(spi, spiOptions.bits, spiOptions.spi_mode) != SPI_OK)
+ {
+ INFO_SPI("SPI initialization failed!");
+ return 1;
+ }
+
+ spi_status_t status = spi_setupChipReg(spi, &spiOptions, FPBA_HZ);
+ if (status == SPI_ERROR_ARGUMENT)
+ WARN("Error configuring SPI\n");
+
+ // Disable all interrupts.
+ Disable_global_interrupt();
+
+ // Register the SPI interrupt handler to the interrupt controller.
+ INTC_register_interrupt((__int_handler)(&spi_int_handler), AVR32_SPI0_IRQ, AVR32_INTC_INT0);
+
+ // Enable all interrupts.
+ Enable_global_interrupt();
+
+ ENABLE_SPI_INT();
+
+ spi_enable(spi);
+#ifdef _SPI_STATS_
+ initStatSpi();
+#endif
+ init_spi_cmds();
+
+ memset(_receiveBuffer, 0, sizeof(_receiveBuffer));
+ memset(buf, 0, sizeof(buf));
+ memset(reply, 0, sizeof(reply));
+
+ initMapSockTcp();
+ set_result(WL_IDLE_STATUS);
+
+ init_pBuf();
+
+ return 0;
+}
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_spi.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_spi.h
new file mode 100644
index 0000000..628f115
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_spi.h
@@ -0,0 +1,70 @@
+/*
+ * ard_spi.h
+ *
+ * Created on: May 27, 2010
+ * Author: mlf by Metodo2 srl
+ */
+
+#ifndef ARD_SPI_H_
+#define ARD_SPI_H_
+
+#include "lwip/netif.h"
+#include "console.h"
+#include "wl_definitions.h"
+
+
+typedef enum {
+ SPI_CMD_IDLE,
+ SPI_CMD_INPUT,
+ SPI_CMD_DONE,
+ SPI_CMD_INPROGRESS,
+ SPI_CMD_REPLING,
+ SPI_CMD_FAIL,
+} cmd_spi_state_t;
+
+typedef enum {
+ REPLY_ERR_GET,
+ REPLY_ERR_SET,
+ REPLY_ERR_CMD,
+ REPLY_ERR_MSG,
+ REPLY_NO_ERR,
+} reply_err_t;
+
+
+typedef enum {
+ CMD_GET_FLAG = 0x01,
+ CMD_SET_FLAG = 0x02,
+ CMD_IMM_SET_FLAG = 0x04,
+}cmd_flags;
+
+#define TIMEOUT_SPI 200
+#define SPI_ALIGN_ERROR 0xF0
+#define SPI_OVERRIDE_ERROR 0xF1
+#define DUMMY_DATA 0xFF
+
+typedef int (*cmd_spi_cb_t)(int numParam, char* buf, void* ctx);
+typedef cmd_spi_state_t (*cmd_spi_rcb_t)(char* recv, char* reply, void* ctx, uint16_t* _count);
+
+void set_result_cmd(int err) ;
+
+void set_result(wl_status_t _status);
+
+int initSpi(void);
+
+void initExtInt();
+
+void spi_poll(struct netif* netif);
+
+int spi_slaveReceive(volatile avr32_spi_t *spi);
+
+void showTTCPstatus();
+
+int getSock(void * _ttcp);
+
+void* getTTCP(uint8_t sock);
+
+void clearMapSockTcp(uint8_t sock);
+
+int start_server_tcp(uint16_t port, uint8_t sock);
+
+#endif /* ARD_SPI_H_ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_tcp.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_tcp.c
new file mode 100644
index 0000000..b70549a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_tcp.c
@@ -0,0 +1,905 @@
+/*
+ * ard_tcp.c
+ *
+ * Created on: May 27, 2010
+ * Author: mlf by Metodo2 srl
+ */
+
+//#define _APP_DEBUG_
+#include "lwip/opt.h"
+
+#include "lwip/mem.h"
+#include "lwip/raw.h"
+#include "lwip/icmp.h"
+#include "lwip/netif.h"
+#include "lwip/sys.h"
+#include "lwip/sockets.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+#include "lwip/tcp.h"
+#include "lwip/udp.h"
+
+#include "ard_tcp.h"
+#include "ard_spi.h"
+#include "timer.h"
+#include "util.h"
+
+#include "getopt.h"
+#include "ard_utils.h"
+#include "debug.h"
+
+unsigned int startTime = 0;
+extern bool ifStatus;
+static uint8_t tcp_poll_retries = 0;
+static int isDataSentCount = 0;
+
+bool pending_close = false;
+bool pending_accept = false;
+
+static err_t tcp_data_sent(void *arg, struct tcp_pcb *pcb, u16_t len);
+
+static void atcp_init_pend_flags()
+{
+ pending_close = false;
+ pending_accept = false;
+}
+
+/**
+ * Clean up and free the ttcp structure
+ */
+static void ard_tcp_destroy(struct ttcp* ttcp) {
+ err_t err = ERR_OK;
+ DUMP_TCP_STATE(ttcp);
+
+ if (getSock(ttcp)==-1)
+ WARN("ttcp already deallocated!\n");
+
+ if (ttcp->tpcb) {
+ tcp_arg(ttcp->tpcb, NULL);
+ tcp_sent(ttcp->tpcb, NULL);
+ tcp_recv(ttcp->tpcb, NULL);
+ tcp_err(ttcp->tpcb, NULL);
+ //TEMPORAQARY
+ //err = tcp_close(ttcp->tpcb);
+ INFO_TCP("Closing tpcb: state:0x%x err:%d\n", ttcp->tpcb->state, err);
+ }
+
+ if (ttcp->lpcb) {
+ tcp_arg(ttcp->lpcb, NULL);
+ tcp_accept(ttcp->lpcb, NULL);
+ err = tcp_close(ttcp->lpcb);
+ INFO_TCP("Closing lpcb: state:0x%x err:%d\n", ttcp->lpcb->state, err);
+ }
+
+ if (ttcp->upcb) {
+ udp_disconnect(ttcp->upcb);
+ udp_remove(ttcp->upcb);
+ }
+
+ if (ttcp->payload)
+ free(ttcp->payload);
+
+ free(ttcp);
+}
+
+/**
+ * Clean up and free the ttcp structure
+ */
+static void ard_tcp_abort(struct ttcp* ttcp) {
+
+ INFO_TCP("Abort ttcb:%p tpcb:%p lpcb:%p\n", ttcp, ttcp->tpcb, ttcp->lpcb);
+ if (ttcp->tpcb) {
+ tcp_arg(ttcp->tpcb, NULL);
+ tcp_sent(ttcp->tpcb, NULL);
+ tcp_recv(ttcp->tpcb, NULL);
+ tcp_err(ttcp->tpcb, NULL);
+ tcp_abort(ttcp->tpcb);
+ }
+
+ if (ttcp->lpcb) {
+ tcp_arg(ttcp->lpcb, NULL);
+ tcp_accept(ttcp->lpcb, NULL);
+ tcp_abort(ttcp->lpcb);
+ }
+
+ if (ttcp->upcb) {
+ udp_disconnect(ttcp->upcb);
+ udp_remove(ttcp->upcb);
+ }
+
+ if (ttcp->payload)
+ free(ttcp->payload);
+
+ free(ttcp);
+}
+
+
+/**
+ * Invoked when transfer is done or aborted (non-zero result).
+ */
+static void ard_tcp_done(struct ttcp* ttcp, int result) {
+// if (result == 0)
+// ard_tcp_print_stats(ttcp);
+
+ if (ttcp->done_cb)
+ ttcp->done_cb(ttcp->opaque, result);
+
+ ard_tcp_destroy(ttcp);
+ clearMapSockTcp(getSock(ttcp));
+}
+
+static void
+tcp_timeout_cb(void *ctx);
+
+/**
+ * Only used in TCP mode.
+ * Will transmit a maximum of pbuf->tot_len bytes.
+ * Called upon connect and when there's space available in the TCP send window
+ *
+ */
+static void tcp_send_data(struct ttcp *ttcp) {
+ err_t err = ERR_OK;
+ uint32_t len, orig_len;
+
+ len = ttcp->left;
+ ttcp->buff_sent = 0;
+ INFO_TCP_VER("left=%d len:%d tcp_sndbuf:%d\n", ttcp->left, len, tcp_sndbuf(ttcp->tpcb));
+
+
+ /* don't send more than we have in the payload */
+ if (len > ttcp->buflen)
+ len = ttcp->buflen;
+
+ /* We cannot send more data than space available in the send
+ buffer. */
+ if (len > tcp_sndbuf(ttcp->tpcb))
+ len = tcp_sndbuf(ttcp->tpcb);
+
+ orig_len = len;
+ uint8_t count = 0;
+ do {
+ startTime = timer_get_ms();
+ err = tcp_write(ttcp->tpcb, ttcp->payload, len, TCP_WRITE_FLAG_COPY);
+ INFO_TCP_VER("%d) tcp_write %p state:%d len:%d err:%d\n", count++, ttcp->tpcb, ttcp->tpcb->state, len, err);
+ if (err == ERR_MEM)
+ {
+ len /= 2;
+ ttcp->buff_sent = 0;
+ }else if (err == ERR_OK){
+ ttcp->buff_sent = 1;
+ isDataSentCount = 0;
+ }
+ } while (err == ERR_MEM && len > 1);
+
+ if (err == ERR_OK){
+ //tcp_output(ttcp->tpcb);
+ INFO_TCP_VER("tcp_output: left=%d new left:%d\n",
+ ttcp->left, ttcp->left-len);
+ ttcp->left -= len;
+ }
+ else
+ WARN("TTCP [%p-%p]: tcp_write failed err:%d origLen:%d len:%d\n",
+ ttcp, ttcp->tpcb, err, orig_len, len);
+ //
+ // ttcp->tid = timer_sched_timeout_cb(0, TIMEOUT_ONESHOT,
+ // tcp_timeout_cb, ttcp);
+}
+
+/**
+ * Only used in TCP mode.
+ */
+static err_t tcp_connect_cb(void *arg, struct tcp_pcb *tpcb, err_t err) {
+ struct ttcp* ttcp = arg;
+
+ INFO_TCP("TTCP [%p-%p]: connect %d %d\n", ttcp, tpcb, err, ttcp->tpcb->state);
+
+ _connected = ( ttcp->tpcb->state == ESTABLISHED) ? 1 : 0;
+ tcp_poll_retries = 0;
+
+ ttcp->start_time = timer_get_ms();
+
+ return ERR_OK;
+}
+
+static void cleanSockState_cb(void *ctx) {
+ struct ttcp* ttcp = ctx;
+
+ int sock = getSock(ttcp);
+ if (sock != -1)
+ clearMapSockTcp(sock);
+ INFO_TCP("TTCP [%p]: cleanSockState_cb %d\n", ttcp, sock);
+ _connected = false;
+}
+
+static void cleanSockStateDelayed(void * arg)
+{
+ INFO_TCP("arg %p\n", arg);
+ timer_sched_timeout_cb(1000, TIMEOUT_ONESHOT,
+ cleanSockState_cb, arg);
+}
+
+/**
+ * Only used in TCP mode.
+ */
+static void atcp_conn_err_cb(void *arg, err_t err) {
+ struct ttcp* _ttcp = arg;
+
+ WARN("TTCP [%p]: connection error: %d arg:%p\n",
+ _ttcp, err, arg);
+
+ if (ifStatus == false)
+ printk("Abort connection\n");
+ cleanSockState_cb(_ttcp);
+
+ atcp_init_pend_flags();
+}
+
+static void atcp_conn_cli_err_cb(void *arg, err_t err) {
+ struct ttcp* _ttcp = arg;
+
+ WARN("TTCP [%p]: connection error: %d arg:%p\n",
+ _ttcp, err, arg);
+
+ if (ifStatus == false)
+ printk("Abort connection\n");
+
+ if ((_ttcp)&&(err == ERR_ABRT))
+ {
+ WARN("TTCP [%p]: free memory\n", _ttcp);
+ tcp_poll_retries = 0;
+ cleanSockState_cb(_ttcp);
+ if (_ttcp->payload)
+ free(_ttcp->payload);
+ free(_ttcp);
+ }
+
+ atcp_init_pend_flags();
+}
+
+
+static void close_conn(struct ttcp *_ttcp) {
+ tcp_arg(_ttcp->tpcb, NULL);
+ tcp_sent(_ttcp->tpcb, NULL);
+ tcp_recv(_ttcp->tpcb, NULL);
+ err_t err = tcp_close(_ttcp->tpcb);
+ INFO_TCP("Closing tpcb[%p]: state:0x%x err:%d\n",_ttcp->tpcb, _ttcp->tpcb->state, err);
+
+ if (err == ERR_MEM)
+ pending_close = true;
+ else{
+ atcp_init_pend_flags();
+ WARN("----------------------\n");
+ }
+}
+
+void closeConnections()
+{
+ int i = 0;
+ for (; i<MAX_SOCK_NUM; i++)
+ {
+ void* p = getTTCP(i);
+ if (p)
+ {
+ ttcp_t* _ttcp = (ttcp_t* )p;
+
+ INFO_TCP("Closing connections tpcb[%p] state:0x%x - lpcb[%p] state: 0x%x\n",
+ _ttcp->tpcb, _ttcp->tpcb->state, _ttcp->lpcb, _ttcp->lpcb->state);
+ //tcp_close(_ttcp->tpcb);
+ ard_tcp_destroy(_ttcp);
+ clearMapSockTcp(getSock(_ttcp));
+ }
+ }
+}
+
+/**
+ * Only used in TCP mode.
+ */
+static err_t atcp_recv_cb(void *arg, struct tcp_pcb *pcb, struct pbuf *p,
+ err_t err) {
+ struct ttcp* ttcp = arg;
+
+ if (err == ERR_OK && p != NULL) {
+ INFO_TCP("pcb:%p pbuf: %p err:%d len:%d\n", pcb, p, err, p->tot_len);
+ DATA_LED_ON();
+ /* for print_stats() */
+ ttcp->recved += p->tot_len;
+
+ if ((ttcp->verbose)||(verboseDebug & INFO_TCP_FLAG)) {
+ INFO_TCP("len:%d\n",p->tot_len);
+ DUMP_TCP(p->payload, p->tot_len);
+ ttcp->print_cnt++;
+ }
+
+ insert_pBuf(p, ttcp->sock, (void*) pcb);
+ tcp_recved(pcb, p->tot_len);
+ pbuf_free(p);
+ DATA_LED_OFF();
+ }
+
+ /* p will be NULL when remote end is done */
+ if (err == ERR_OK && p == NULL) {
+ INFO_TCP("atcp_recv_cb p=NULL\n");
+ close_conn(ttcp);
+ }
+
+ if (err!=ERR_OK)
+ WARN("err=%d p=%p\n", err, p);
+ return ERR_OK;
+}
+
+void ack_recved(void* pcb, int len) {
+ // Comment the call because it is activated on atcp_recv_cb
+ //tcp_recved(pcb, len);
+}
+
+static err_t atcp_poll(void *arg, struct tcp_pcb *pcb) {
+ struct ttcp* _ttcp = arg;
+ if ((_ttcp) && (_ttcp->left>0))
+ ++tcp_poll_retries;
+
+ if (tcp_poll_retries > 4) {
+ WARN("ARD TCP [%p] arg=%p retries=%d\n",
+ pcb, arg, tcp_poll_retries);
+ tcp_poll_retries = 0;
+ tcp_abort(pcb);
+ atcp_init_pend_flags();
+ return ERR_ABRT;
+ }
+
+ WARN("ARD TCP [%p-%p] arg=%p retries=%d pend.close:%d\n", (_ttcp)?_ttcp->tpcb:0, pcb, arg,
+ tcp_poll_retries, pending_close);
+ if (_ttcp) tcp_send_data(_ttcp);
+
+ if (pending_close)
+ {
+ err_t err = tcp_close(pcb);
+ if (err == ERR_MEM)
+ {
+ pending_close = true;
+ }
+ else
+ {
+ atcp_init_pend_flags();
+ }
+
+ INFO_TCP("ARD TCP [%p-%p] try to close pending:%d\n", pcb, (_ttcp)?_ttcp->tpcb:0, pending_close);
+ }
+ return ERR_OK;
+}
+
+static err_t atcp_poll_conn(void *arg, struct tcp_pcb *pcb) {
+ struct ttcp* _ttcp = arg;
+ ++tcp_poll_retries;
+
+ if (tcp_poll_retries > 8) {
+ WARN("ARD TCP [%p-%p] arg=%p retries=%d\n",
+ pcb, _ttcp->tpcb, arg, tcp_poll_retries);
+ tcp_poll_retries = 0;
+ tcp_abort(pcb);
+ return ERR_ABRT;
+ }
+
+ WARN("ARD TCP [%p-%p] arg=%p retries=%d pend.close:%d conn:%d\n", (_ttcp)?_ttcp->tpcb:0, pcb, arg,
+ tcp_poll_retries, pending_close, _connected);
+
+ if ((_ttcp)&&(_connected)) tcp_send_data(_ttcp);
+
+ if (pending_close)
+ {
+ err_t err = tcp_close(pcb);
+ if (err == ERR_MEM)
+ {
+ pending_close = true;
+ }
+ else
+ {
+ cleanSockState_cb(_ttcp);
+ if (_ttcp->payload)
+ free(_ttcp->payload);
+ free(_ttcp);
+ pending_close = false;
+
+ }
+
+ INFO_TCP("ARD TCP [%p-%p] try to close pending:%d\n", pcb, (_ttcp)?_ttcp->tpcb:0, pending_close);
+ }
+ return ERR_OK;
+}
+
+
+/**
+ * Only used in TCP mode.
+ */
+static err_t atcp_accept_cb(void *arg, struct tcp_pcb *newpcb, err_t err) {
+ struct ttcp* ttcp = arg;
+
+ INFO_TCP("ARD TCP [%p]: accept new [%p]\n", ttcp, newpcb);
+ INFO_TCP("local:%d remote:%d state:%d\n", newpcb->local_port, newpcb->remote_port, newpcb->state);
+
+ if (pending_accept)
+ {
+ WARN("Accepting another connection: %p-%p\n", ttcp->tpcb, newpcb);
+ return ERR_OK;
+ }
+ pending_accept = true;
+ tcp_setprio(newpcb, TCP_PRIO_MIN);
+ tcp_poll_retries = 0;
+ ttcp->tpcb = newpcb;
+ tcp_recv(ttcp->tpcb, atcp_recv_cb);
+ tcp_err(ttcp->tpcb, atcp_conn_err_cb);
+ tcp_poll(ttcp->tpcb, atcp_poll, 4);
+
+ ttcp->start_time = timer_get_ms();
+ return ERR_OK;
+}
+
+/**
+ * Start TCP transfer.
+ */
+static int atcp_start(struct ttcp* ttcp) {
+ err_t err = ERR_OK;
+
+ ttcp->tpcb = tcp_new();
+ if (ttcp->tpcb == NULL) {
+ WARN("TTCP [%p]: could not allocate pcb\n", ttcp);
+ return -1;
+ }
+
+ ttcp->payload = malloc(ttcp->buflen);
+ if (ttcp->payload == NULL) {
+ WARN("TTCP [%p]: could not allocate payload\n", ttcp);
+ return -1;
+ }
+
+ tcp_arg(ttcp->tpcb, ttcp);
+ atcp_init_pend_flags();
+
+ if (ttcp->mode == TTCP_MODE_TRANSMIT) {
+ tcp_err(ttcp->tpcb, atcp_conn_cli_err_cb);
+ tcp_recv(ttcp->tpcb, atcp_recv_cb);
+ tcp_sent(ttcp->tpcb, tcp_data_sent);
+ tcp_poll(ttcp->tpcb, atcp_poll_conn, 4);
+ _connected = false;
+ INFO_TCP("[tpcb]-%p payload:%p\n", ttcp->tpcb, ttcp->payload);
+ DUMP_TCP_STATE(ttcp);
+ if (tcp_connect(ttcp->tpcb, &ttcp->addr, ttcp->port, tcp_connect_cb)
+ != ERR_OK) {
+ WARN("TTCP [%p]: tcp connect failed\n", ttcp);
+ return -1;
+ }
+
+ } else {
+ INFO_TCP("BEFORE BIND ttcp:%p lpcb:%p pcb:%p\n", ttcp, ttcp->lpcb, ttcp->tpcb);
+ INFO_TCP("[tpcb]-local:%d remote:%d state:%d\n", ttcp->tpcb->local_port,
+ ttcp->tpcb->remote_port, ttcp->tpcb->state);
+
+ err = tcp_bind(ttcp->tpcb, IP_ADDR_ANY, ttcp->port);
+ if (err != ERR_OK){
+ WARN("TTCP [%p]: bind failed err=%d Port already used\n", ttcp, err);
+ return -1;
+ }
+
+ ttcp->lpcb = tcp_listen(ttcp->tpcb);
+ if (ttcp->lpcb == NULL) {
+ WARN("TTCP [%p]: listen failed\n", ttcp);
+ return -1;
+ }
+ if (ttcp->lpcb == ttcp->tpcb ) {
+ WARN("TTCP [%p]: listen failed tpcb [%p] in listen mode\n", ttcp, ttcp->tpcb);
+ return -1;
+ }
+
+ DUMP_TCP_STATE(ttcp);
+ tcp_accept(ttcp->lpcb, atcp_accept_cb);
+ }
+
+ return 0;
+}
+
+static void
+udp_send_data(struct ttcp* ttcp);
+
+/**
+ * Only used in UDP mode. Scheduled after data has been sent in udp_send_data()
+ * if we have more data to send.
+ */
+static void udp_timeout_cb(void *ctx) {
+ struct ttcp* ttcp = ctx;
+ udp_send_data(ttcp);
+}
+
+static int udp_send_bytes(struct ttcp* ttcp, uint32_t len) {
+ struct pbuf* p = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM);
+ if (p == NULL) {
+ WARN("TTCP [%p]: could not allocate pbuf\n", ttcp);
+ return -1;
+ }
+
+ if (udp_send(ttcp->upcb, p) != ERR_OK) {
+ WARN("TTCP [%p]: udp_send() failed\n", ttcp);
+ pbuf_free(p);
+ return -1;
+ }
+
+ pbuf_free(p);
+ return 0;
+}
+
+/**
+ * Only used in UDP mode. First call will send the start marker. When all
+ * ttcp data has been sent, a number of end markers will be sent. After
+ * end marker transmission, this function will complete the ttcp process.
+ */
+static void udp_send_data(struct ttcp* ttcp) {
+ /* send start marker first time */
+ if (!ttcp->udp_started) {
+ if (udp_send_bytes(ttcp, 4) == 0) {
+ ttcp->udp_started = 1;
+ ttcp->start_time = timer_get_ms();
+ }
+ }
+
+ /* normal case */
+ else if (ttcp->left) {
+ /* send data */
+ if (udp_send_bytes(ttcp, ttcp->buflen) == 0)
+ ttcp->left -= ttcp->buflen;
+ }
+
+ /* end marker? */
+ else if (ttcp->left == 0 && ttcp->udp_end_marker_left) {
+ if (udp_send_bytes(ttcp, 4) == 0)
+ ttcp->udp_end_marker_left--;
+ }
+
+ /* all end markers sent */
+ else if (ttcp->left == 0) {
+ ard_tcp_done(ttcp, 0);
+ return;
+ }
+
+ ttcp->tid
+ = timer_sched_timeout_cb(0, TIMEOUT_ONESHOT, udp_timeout_cb, ttcp);
+}
+
+/**
+ * Only used in UDP mode. Will finalize the ttcp process when an end marker
+ * is seen.
+ */
+static void udp_recv_cb(void *arg, struct udp_pcb *upcb, struct pbuf *p,
+ struct ip_addr *addr, u16_t port) {
+ struct ttcp* ttcp = arg;
+
+ /* got start marker? we might lose this so if we get it just reset
+ * the timer
+ */
+ if (!ttcp->udp_started && p->tot_len <= 4) {
+ ttcp->start_time = timer_get_ms();
+ ttcp->udp_started = 1;
+ goto out;
+ }
+
+ /* after receiving at least 1 byte, check end marker
+ * don't check udp_started since we might have lost the start marker
+ */
+ if (ttcp->recved && p->tot_len <= 4) {
+ ard_tcp_done(ttcp, 0);
+ goto out;
+ }
+
+ /* for print_stats() */
+ ttcp->recved += p->tot_len;
+ if (ttcp->verbose) {
+ printk(".");
+ if (ttcp->print_cnt % 80 == 0)
+ printk("\n");
+ ttcp->print_cnt++;
+ }
+
+ out: pbuf_free(p);
+}
+
+/**
+ * Start UDP transfer.
+ */
+static int udp_start(struct ttcp* ttcp) {
+ ttcp->udp_end_marker_left = 5;
+ ttcp->upcb = udp_new();
+ if (ttcp->upcb == NULL) {
+ printk("TTCP [%p]: could not allocate pcb\n", ttcp);
+ return -1;
+ }
+
+ if (ttcp->mode == TTCP_MODE_TRANSMIT) {
+ if (udp_connect(ttcp->upcb, &ttcp->addr, ttcp->port) != ERR_OK) {
+ printk("TTCP [%p]: udp connect failed\n", ttcp);
+ return -1;
+ }
+ udp_send_data(ttcp);
+ } else {
+ udp_recv(ttcp->upcb, udp_recv_cb, ttcp);
+ }
+
+ return 0;
+}
+
+/**
+ * Start a new ttcp transfer. It should be possible to call this function
+ * multiple times in order to get multiple ttcp streams. done_cb() will be
+ * invoked upon completion.
+ *
+ */
+int ard_tcp_start(struct ip_addr addr, uint16_t port, void *opaque,
+ ard_tcp_done_cb_t *done_cb, int mode, uint16_t nbuf, uint16_t buflen,
+ int udp, int verbose, uint8_t sock, void** _ttcp) {
+ struct ttcp* ttcp;
+ int status;
+
+ if (mode != TTCP_MODE_TRANSMIT && mode != TTCP_MODE_RECEIVE) {
+ WARN("TTCP [-]: invalid mode\n");
+ return -1;
+ }
+
+ if (nbuf == 0) {
+ WARN("TTCP [-]: invalid nbuf\n");
+ return -1;
+ }
+
+ if (buflen == 0) {
+ WARN("TTCP [-]: invalid buflen\n");
+ return -1;
+ }
+
+ ttcp = calloc(1, sizeof(struct ttcp));
+ if (ttcp == NULL) {
+ WARN("TTCP [-]: could not allocate memory for ttcp\n");
+ return -1;
+ }
+
+ ttcp->addr = addr;
+ ttcp->port = port;
+ ttcp->nbuf = nbuf;
+ ttcp->mode = mode;
+ ttcp->left = nbuf * buflen;
+ ttcp->done_cb = done_cb;
+ ttcp->opaque = opaque;
+ ttcp->udp = udp;
+ ttcp->verbose = verbose;
+ ttcp->buflen = buflen;
+
+ if (ttcp->udp)
+ status = udp_start(ttcp);
+ else
+ status = atcp_start(ttcp);
+
+ if (status) {
+ WARN("Start server FAILED!\n");
+ goto fail;
+ }
+ INFO_TCP("TTCP [%p-%p]: nbuf=%d, buflen=%d, port=%d (%s/%s)\n", ttcp,
+ ttcp->tpcb, ttcp->nbuf, ttcp->buflen, ttcp->port, ttcp->udp ? "udp"
+ : "tcp", ttcp->mode == TTCP_MODE_TRANSMIT ? "tx" : "rx");
+
+ *_ttcp = (void*) ttcp;
+ ttcp->sock = sock;
+ ttcp->buff_sent = 1;
+
+ return 0;
+
+ //fail: ard_tcp_abort(ttcp);
+ fail: ard_tcp_destroy(ttcp);
+ return -1;
+}
+
+void ard_tcp_stop(void* ttcp) {
+ struct ttcp* _ttcp = (struct ttcp*) ttcp;
+ if (_ttcp == NULL)
+ {
+ WARN("ttcp = NULL!\n");
+ return;
+ }
+ if (_ttcp->mode == TTCP_MODE_TRANSMIT) {
+ INFO_TCP("Destroy TCP connection...state:%d\n", _ttcp->tpcb->state);
+ ard_tcp_destroy(_ttcp);
+ clearMapSockTcp(getSock(_ttcp));
+ tcp_poll_retries = 0;
+ }else{
+ INFO_TCP("Closing connection...state:%d\n", _ttcp->tpcb->state);
+ DUMP_TCP_STATE(_ttcp);
+ if ((_ttcp)&&(_ttcp->tpcb)&&(_ttcp->tpcb->state!=LAST_ACK)&&(_ttcp->tpcb->state!=CLOSED))
+ {
+ close_conn(_ttcp);
+ }
+ pending_accept = false;
+ }
+}
+
+uint8_t getStateTcp(void* p, bool client) {
+ struct ttcp* _ttcp = (struct ttcp*) p;
+
+ if (ifStatus == false)
+ return CLOSED;
+ if ((_ttcp != NULL) && (_ttcp->tpcb != NULL)) {
+ //DUMP_TCP_STATE(_ttcp);
+ if (client)
+ return _ttcp->tpcb->state;
+ else
+ return _ttcp->lpcb->state;
+ } else {
+ INFO_TCP_VER("TCP not initialized ttcp:%p tpcb:%p lpcb:%p\n",
+ _ttcp, ((_ttcp)?_ttcp->tpcb:0), ((_ttcp)?_ttcp->lpcb:0));
+ }
+ return CLOSED;
+}
+
+uint8_t getModeTcp(void* p) {
+ struct ttcp* _ttcp = (struct ttcp*) p;
+
+ if (_ttcp != NULL)
+ return _ttcp->mode;
+ return 0;
+}
+
+uint8_t isDataSent(void* p) {
+ struct ttcp *_ttcp = (struct ttcp *)p;
+
+ if ((_ttcp)&&(!_ttcp->buff_sent))
+ {
+ INFO_TCP_VER("%d) Wait to send data\n", ++isDataSentCount);
+ return 0;
+ }
+
+ return 1;
+}
+
+static err_t tcp_data_sent(void *arg, struct tcp_pcb *pcb, u16_t len) {
+ struct ttcp *_ttcp;
+
+ LWIP_UNUSED_ARG(len);
+
+ _ttcp = arg;
+
+ tcp_poll_retries = 0;
+ if (_ttcp) _ttcp->buff_sent = 1;
+
+
+ INFO_TCP("Packet sent pcb:%p len:%d dur:%d left:%d count:%d\n", pcb, len, timer_get_ms() - startTime,
+ (_ttcp)?(_ttcp->left):0, isDataSentCount);
+
+ isDataSentCount = 0;
+
+ if ((_ttcp)&&(_ttcp->left > 0)) {
+ tcp_send_data(_ttcp);
+ }
+
+ return ERR_OK;
+}
+
+int sendTcpData(void* p, uint8_t* buf, uint16_t len) {
+ INFO_TCP("buf:%p len:%d\n", buf, len);
+ DUMP_TCP(buf,len);
+
+ struct ttcp* _ttcp = (struct ttcp*) p;
+
+ if (_ttcp==NULL)
+ {
+ WARN("ttcp == NULL!\n");
+ return WL_FAILURE;
+ }
+
+ INFO_TCP_VER("CLI> p=%p _ttcp=%p state(tpcb):%d state(lpcb):%d\n",
+ p, ((struct ttcp*) p)->tpcb,
+ ((struct ttcp*) p)->tpcb->state,
+ ((struct ttcp*) p)->lpcb->state);
+
+ if ((_ttcp != NULL) && (_ttcp->tpcb != NULL) &&
+ (buf != NULL) && (len != 0) && (_ttcp->payload != NULL)) {
+ if (_ttcp->tpcb->state == ESTABLISHED ||
+ _ttcp->tpcb->state == CLOSE_WAIT ||
+ _ttcp->tpcb->state == SYN_SENT ||
+ _ttcp->tpcb->state == SYN_RCVD) {
+
+ memcpy(_ttcp->payload, buf, len);
+ _ttcp->payload[len]='\0';
+ INFO_TCP_VER("%s\n", _ttcp->payload);
+ _ttcp->left = len;
+ tcp_sent(_ttcp->tpcb, tcp_data_sent);
+ tcp_send_data(_ttcp);
+
+ return WL_SUCCESS;
+ }
+ }
+ //printk("Write failure _ttcp=%p _ttcp->tpcb=%p buf=%p len=%d\n", _ttcp, _ttcp->tpcb, buf, len);
+ return WL_FAILURE;
+}
+
+char
+ usage[] =
+ "Usage: ttcp -t/-r [-options] host\n\
+ -l length of bufs written to network (default 1024)\n\
+ -n number of bufs written to network (default 1024)\n\
+ -p port number to send to (default 2000)\n\
+ -u udp\n\
+ -v verbose\n";
+
+/**
+ *
+ */
+cmd_state_t cmd_ttcp(int argc, char* argv[], void* ctx) {
+
+ int c;
+ int mode = TTCP_MODE_TRANSMIT;
+ int verbose = 0;
+ uint16_t buflen = 1024;
+ uint16_t nbuf = 1024;
+ uint16_t port = 2000;
+ int udp = 0;
+ struct ip_addr addr = { 0 };
+
+ optind = 1;
+ while ((c = getopt(argc, argv, "utrl:n:p:v")) != -1) {
+ switch (c) {
+ case 't':
+ mode = TTCP_MODE_TRANSMIT;
+ break;
+ case 'r':
+ mode = TTCP_MODE_RECEIVE;
+ break;
+ case 'l':
+ buflen = atoi(optarg);
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case 'n':
+ nbuf = atoi(optarg);
+ break;
+ case 'u':
+ udp = 1;
+ break;
+ case 'p':
+ port = atoi(optarg);
+ break;
+ }
+ }
+
+ if (mode == TTCP_MODE_TRANSMIT) {
+ if (optind >= argc) {
+ printk("%s", usage);
+ return CMD_DONE;
+ }
+
+ addr = str2ip(argv[optind]);
+ if (!addr.addr) {
+ printk("%s", usage);
+ return CMD_DONE;
+ }
+ }
+ void* _ttcp = NULL;
+ if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose,
+ 0, &_ttcp))
+ return CMD_DONE;
+
+ return CMD_DONE;
+}
+
+
+#if 0
+#include "lwip/sockets.h"
+
+void testlwip()
+{
+ int Sock;
+ fd_set fdsetR;
+ FD_ZERO(&fdsetR);
+ FD_SET(Sock, &fdsetR);
+ fd_set fdsetE = fdsetR;
+
+ int rc;
+ const int cMillies = 10000;
+ struct timeval timeout;
+ timeout.tv_sec = cMillies / 1000;
+ timeout.tv_usec = (cMillies % 1000) * 1000;
+ //rc = lwip_select(Sock + 1, &fdsetR, NULL, &fdsetE, &timeout);
+}
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_tcp.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_tcp.h
new file mode 100644
index 0000000..010b976
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_tcp.h
@@ -0,0 +1,71 @@
+/*
+ * ard_tcp.h
+ *
+ * Created on: May 27, 2010
+ * Author: mlf by Metodo2 srl
+ */
+
+#ifndef ARD_TCP_H
+#define ARD_TCP_H
+
+#include "console.h"
+#include "lwip/tcp.h"
+
+typedef void (ard_tcp_done_cb_t)(void *opaque, int result);
+
+#define TTCP_MODE_TRANSMIT 0
+#define TTCP_MODE_RECEIVE 1
+
+typedef struct ttcp {
+
+ /* options */
+ struct ip_addr addr; /* host */
+ uint16_t port; /* -p */
+ uint16_t nbuf; /* -n */
+ int mode; /* -t */
+ int verbose; /* -v */
+ int udp; /* -u */
+ uint8_t sock;
+ uint8_t buff_sent;
+
+ /* common */
+ uint16_t print_cnt;
+ uint32_t start_time;
+ uint32_t left;
+ uint32_t recved;
+ ard_tcp_done_cb_t* done_cb;
+ void* opaque;
+ uint32_t buflen; /* -l */
+ uint32_t tid;
+
+ /* TCP specific */
+ struct tcp_pcb* tpcb;
+ struct tcp_pcb* lpcb;
+ char* payload;
+
+ /* UDP specific */
+ int udp_started;
+ uint16_t udp_end_marker_left;
+ struct udp_pcb* upcb;
+}ttcp_t;
+
+bool _connected;
+
+int ard_tcp_start(struct ip_addr addr, uint16_t port, void *opaque,
+ ard_tcp_done_cb_t *done_cb, int mode, uint16_t nbuf, uint16_t buflen, int udp, int verbose, uint8_t sock, void** _ttcp);
+
+void ard_tcp_stop(void* ttcp);
+
+uint8_t getStateTcp(void* p, bool client );
+
+uint8_t getModeTcp(void* p);
+
+int sendTcpData(void* p, uint8_t* buf, uint16_t len);
+
+uint8_t isDataSent(void* p );
+
+cmd_state_t cmd_ttcp(int argc, char* argv[], void* ctx);
+
+void closeConnections();
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_utils.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_utils.c
new file mode 100644
index 0000000..9c31f40
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_utils.c
@@ -0,0 +1,196 @@
+/*
+ * ard_utils.c
+ *
+ * Created on: Jul 4, 2010
+ * Author: mlf by Metodo2 srl
+ */
+#undef _APP_DEBUG_
+
+#include "lwip/pbuf.h"
+#include "wifi_spi.h"
+#include "ard_utils.h"
+#include "debug.h"
+
+#define MAX_PBUF_STORED 30
+
+tData pBufStore[MAX_PBUF_STORED][MAX_SOCK_NUM];
+
+unsigned char headBuf = 0;
+unsigned char tailBuf = 0;
+
+#define IS_BUF_AVAIL() (tailBuf!=headBuf)
+#define IS_BUF_EMPTY() ((tailBuf == 0) && (headBuf == 0))
+
+void init_pBuf()
+{
+ memset(pBufStore, 0, sizeof(pBufStore));
+}
+
+void insert_pBuf(struct pbuf* q, uint8_t sock, void* _pcb)
+{
+ if (q == NULL)
+ return;
+
+ if (pBufStore[headBuf][sock].data != NULL)
+ {
+ WARN("Overwriting buffer %p idx:%d!\n", pBufStore[headBuf][sock].data, headBuf);
+ // to avoid memory leak free the oldest buffer
+ freetDataIdx(headBuf, sock);
+ }
+
+ u8_t* p = (u8_t*)calloc(q->tot_len,sizeof(u8_t));
+ if(p != NULL) {
+ if (pbuf_copy_partial(q, p, q->tot_len,0) != q->tot_len) {
+ WARN("pbuf_copy_partial failed: src:%p, dst:%p, len:%d\n", q, p, q->tot_len);
+ free(p);
+ p = NULL;
+ return;
+ }
+
+ pBufStore[headBuf][sock].data = p;
+ pBufStore[headBuf][sock].len = q->tot_len;
+ pBufStore[headBuf][sock].idx = 0;
+ pBufStore[headBuf][sock].pcb = _pcb;
+ headBuf++;
+
+ if (headBuf == MAX_PBUF_STORED)
+ headBuf = 0;
+ if (headBuf == tailBuf)
+ WARN("Overwriting data [%d-%d]!\n", headBuf, tailBuf);
+ INFO_UTIL("Insert: %p:%d-%d [%d,%d]\n", p, q->tot_len, p[0], headBuf, tailBuf);
+ }
+}
+
+tData* get_pBuf(uint8_t sock)
+{
+ if (IS_BUF_EMPTY())
+ return NULL;
+
+ if (IS_BUF_AVAIL())
+ {
+ tData* p = &(pBufStore[tailBuf][sock]);
+ INFO_UTIL_VER("%p [%d,%d]\n", p, headBuf, tailBuf);
+ return p;
+ }
+ return NULL;
+}
+
+void freetData(void * buf, uint8_t sock)
+{
+ if (buf==NULL)
+ {
+ WARN("Buf == NULL!");
+ return;
+ }
+
+ pBufStore[tailBuf][sock].data = NULL;
+ pBufStore[tailBuf][sock].len = 0;
+ pBufStore[tailBuf][sock].idx = 0;
+ pBufStore[tailBuf][sock].pcb = 0;
+
+ if (++tailBuf == MAX_PBUF_STORED)
+ tailBuf = 0;
+ INFO_UTIL("%p [%d,%d]\n", buf, headBuf, tailBuf);
+ free(buf);
+}
+
+void freetDataIdx(uint8_t idxBuf, uint8_t sock)
+{
+ if (idxBuf >=MAX_PBUF_STORED)
+ {
+ WARN("idxBuf out of range: %d\n", idxBuf);
+ return;
+ }
+
+ void * buf = pBufStore[idxBuf][sock].data;
+
+ INFO_UTIL("%p idx:%d\n", buf, idxBuf);
+
+ free(buf);
+
+ pBufStore[idxBuf][sock].data = 0;
+ pBufStore[idxBuf][sock].len = 0;
+ pBufStore[idxBuf][sock].idx = 0;
+ pBufStore[idxBuf][sock].pcb = 0;
+}
+
+
+void ack_recved(void* pcb, int len);
+
+bool isAvailTcpDataByte(uint8_t sock)
+{
+ tData* p = get_pBuf(sock);
+
+ if (p != NULL)
+ {
+ INFO_UTIL_VER("check:%d %d %p\n",p->idx, p->len, p->data);
+ if (p->idx == p->len)
+ {
+ freetData(p->data, sock);
+ ack_recved(p->pcb, p->len);
+ INFO_UTIL("Free %p other buf %d tail:%d head:%d\n",
+ p->data, IS_BUF_AVAIL(), tailBuf, headBuf);
+ return (IS_BUF_AVAIL());
+ }else{
+ return true;
+ }
+ }
+ return false;
+}
+
+
+
+bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek)
+{
+ // ref field in struct pbuf has been used as index pointer for byte data
+ tData* p = get_pBuf(sock);
+
+ if (p != NULL)
+ {
+ if (p->idx < p->len)
+ {
+ uint8_t* buf = (uint8_t*)p->data;
+ if (peek)
+ *payload = buf[p->idx];
+ else
+ *payload = buf[p->idx++];
+ INFO_UTIL_VER("get:%d %p %d\n",p->idx, p->data, *payload);
+ return true;
+ }else{
+ //dealloc current buffer
+ INFO_UTIL("Free %p\n", p->data);
+ freetData(p->data, sock);
+ ack_recved(p->pcb, p->len);
+ }
+ }
+ return false;
+}
+
+bool getTcpData(uint8_t sock, void** payload, uint16_t* len)
+{
+ tData* p = NULL;
+ p = get_pBuf(sock);
+ if (p != NULL)
+ {
+ *payload = p->data;
+ *len = p->len;
+ return true;
+ }
+ return false;
+}
+
+bool freeTcpData(uint8_t sock)
+{
+ tData* p = NULL;
+ p = get_pBuf(sock);
+ if (p != NULL)
+ {
+ freetData(p->data, sock);
+ ack_recved(p->pcb, p->len);
+ return true;
+ }
+ return false;
+}
+
+
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_utils.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_utils.h
new file mode 100644
index 0000000..4b31c46
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ard_utils.h
@@ -0,0 +1,267 @@
+/*
+ * ard_utils.h
+ *
+ * Created on: Jul 4, 2010
+ * Author: mlf by Metodo2 srl
+ */
+
+#ifndef ARD_UTILS_H_
+#define ARD_UTILS_H_
+
+#include "gpio.h"
+#include "debug.h"
+#include "ARDUINO/arduino.h"
+#define INIT_SIGNAL_FOR_SPI() gpio_disable_pin_pull_up(ARDUINO_HANDSHAKE_PIN);
+#define BUSY_FOR_SPI() gpio_set_gpio_pin(ARDUINO_HANDSHAKE_PIN)
+#define AVAIL_FOR_SPI() gpio_clr_gpio_pin(ARDUINO_HANDSHAKE_PIN)
+
+#define LED0_UP() gpio_set_gpio_pin(LED0_GPIO)
+#define LED0_DN() gpio_clr_gpio_pin(LED0_GPIO)
+#define LED0_TL() gpio_tgl_gpio_pin(LED0_GPIO)
+#define LED1_UP() gpio_set_gpio_pin(LED1_GPIO)
+#define LED1_DN() gpio_clr_gpio_pin(LED1_GPIO)
+#define LED1_TL() gpio_tgl_gpio_pin(LED1_GPIO)
+#define LED2_UP() gpio_set_gpio_pin(LED2_GPIO)
+#define LED2_DN() gpio_clr_gpio_pin(LED2_GPIO)
+#define LED2_TL() gpio_tgl_gpio_pin(LED2_GPIO)
+
+#ifdef _DEBUG_
+#define SIGN0_UP LED0_UP
+#define SIGN0_DN LED0_DN
+#define SIGN0_TL LED0_TL
+#define SIGN1_UP LED1_UP
+#define SIGN1_DN LED1_DN
+#define SIGN1_TL LED1_TL
+#define SIGN2_UP LED2_UP
+#define SIGN2_DN LED2_DN
+#define SIGN2_TL LED2_TL
+
+#define DEB_PIN_UP() gpio_set_gpio_pin(DEB_PIN_GPIO)
+#define DEB_PIN_DN() gpio_clr_gpio_pin(DEB_PIN_GPIO)
+#define DEB_PIN_ENA() gpio_enable_gpio_pin(DEB_PIN_GPIO);
+
+#else
+#define SIGN0_UP()
+#define SIGN0_DN()
+#define SIGN0_TL()
+#define SIGN1_UP()
+#define SIGN1_DN()
+#define SIGN1_TL()
+#define SIGN2_UP()
+#define SIGN2_DN()
+#define SIGN2_TL()
+
+#define DEB_PIN_UP()
+#define DEB_PIN_DN()
+#define DEB_PIN_ENA()
+
+//#define TOGGLE_SIG0
+#endif
+
+#define DELAY_450NS asm volatile("nop")
+#define DELAY_1uS DELAY_450NS; DELAY_450NS;
+#define TOGGLE_SIG0() SIGN0_UP(); DELAY_450NS;SIGN0_DN();
+
+
+#define LINK_LED_OFF LED0_UP
+#define ERROR_LED_OFF LED1_UP
+#define DATA_LED_OFF LED2_UP
+
+#define LINK_LED_ON LED0_DN
+#define ERROR_LED_ON LED1_DN
+#define DATA_LED_ON LED2_DN
+
+#define LINK_LED_BL LED0_TL
+#define ERROR_LED_BL LED1_TL
+#define DATA_LED_BL LED2_TL
+
+
+#define CREATE_HEADER_REPLY(REPLY, RECV, NUM_PARAMS)\
+ REPLY[0] = RECV[0]; \
+ REPLY[1] = RECV[1] | REPLY_FLAG; \
+ REPLY[2] = NUM_PARAMS;
+
+#define CREATE_HEADER_REPLY_WAIT(REPLY, RECV, NUM_PARAMS)\
+ REPLY[0] = RECV[0]; \
+ REPLY[1] = RECV[1] | WAIT_FLAG; \
+ REPLY[2] = NUM_PARAMS;
+
+
+#define END_HEADER_REPLY(REPLY, TOT_LEN, COUNT)\
+ REPLY[TOT_LEN] = END_CMD; \
+ REPLY[TOT_LEN+1] = 0; \
+ COUNT=TOT_LEN+1;
+
+#define RETURN_ERR_REPLY(RECV,REPLY,COUNT) \
+ {uint8_t err = 0; return ack_reply_cb(RECV,REPLY,&err,COUNT);}
+
+#define CHECK_ARD_NETIF(RECV,REPLY,COUNT) \
+ if (ard_netif == NULL) \
+ { uint8_t err = 0; return ack_reply_cb(RECV,REPLY,&err,COUNT); }
+
+#define PUT_LONG_IN_BYTE_HO(LONG, BYTE, IDX) { \
+ uint32_t _long = LONG; \
+ BYTE[IDX] = 4; \
+ BYTE[IDX+1] = (uint8_t)(_long & 0xff); \
+ BYTE[IDX+2] = (uint8_t)((_long & 0xff00)>>8); \
+ BYTE[IDX+3] = (uint8_t)((_long & 0xff0000)>>16); \
+ BYTE[IDX+4] = (uint8_t)((_long & 0xff000000)>>24); \
+}
+
+#define PUT_LONG_IN_BYTE_NO(LONG, BYTE, IDX) { \
+ uint32_t _long = LONG; \
+ BYTE[IDX] = 4; \
+ BYTE[IDX+4] = (uint8_t)(_long & 0xff); \
+ BYTE[IDX+3] = (uint8_t)((_long & 0xff00)>>8); \
+ BYTE[IDX+2] = (uint8_t)((_long & 0xff0000)>>16); \
+ BYTE[IDX+1] = (uint8_t)((_long & 0xff000000)>>24); \
+}
+
+
+#define PUT_DATA_INT(INT, BYTE, IDX) { \
+ uint16_t _int = INT; \
+ BYTE[IDX] = (uint8_t)((_int & 0xff00)>>8); \
+ BYTE[IDX+1] = (uint8_t)(_int & 0xff); \
+}
+
+#define PUT_DATA_BYTE(DATA, BYTE, IDX) { \
+ BYTE[IDX] = 1; \
+ BYTE[IDX+1] = (uint8_t)DATA; \
+}
+
+#define PUT_BUFDATA_BYTE(BUF, BUFLEN, BYTE, IDX) { \
+ BYTE[IDX] = (uint8_t)(BUFLEN & 0xff); \
+ uint16_t i = 0; \
+ for (; i<BUFLEN; ++i) \
+ BYTE[IDX+1+i]=BUF[i]; \
+}
+
+#define PUT_BUFDATA_INT(BUF, BUFLEN, BYTE, IDX) { \
+ BYTE[IDX] = (uint8_t)((BUFLEN & 0xff00)>>8); \
+ BYTE[IDX+1] = (uint8_t)(BUFLEN & 0xff); \
+ uint16_t i = 0; \
+ for (; i<BUFLEN; ++i) \
+ BYTE[IDX+2+i]=BUF[i]; \
+}
+
+
+#define PUT_BUFDATA_BYTE_REV(BUF, BUFLEN, BYTE, IDX) { \
+ BYTE[IDX] = (uint8_t)(BUFLEN & 0xff); \
+ uint16_t i = 0; \
+ for (; i<BUFLEN; ++i) \
+ BYTE[IDX+1+i]=BUF[BUFLEN-i-1]; \
+}
+
+#define GET_DATA_LONG(INT32, BUF) \
+ uint32_t INT32 = ((*(BUF))<<24) + ((*(BUF+1))<<16) + ((*(BUF+2))<<8) + (*(BUF+3));
+
+#define GET_DATA_INT(INT16, BUF) \
+ uint16_t INT16 = ((*(BUF))<<8) + (*(BUF+1));
+
+#define GET_DATA_BYTE(BYTE, BUF) \
+ uint8_t BYTE = (*(BUF));
+
+#define CHECK_PARAM_LEN(PARAM, LEN) ((PARAM!=NULL)&&(PARAM->paramLen == LEN))
+
+#define NEXT_PARAM(PARAM) \
+ do { \
+ if (PARAM!=NULL){ \
+ PARAM=(tParam*)((uint8_t*)PARAM+PARAM->paramLen+1); \
+ GET_PARAM_BYTE(PARAM, end) \
+ if (end == END_CMD) WARN("End of cmd params", PARAM); \
+ } \
+ }while(0);
+
+#define GET_PARAM_LONG(PARAM, LONG) \
+ uint32_t LONG = 0; \
+ if CHECK_PARAM_LEN(PARAM, 4) { \
+ tLongParam* s = (tLongParam*)PARAM; \
+ LONG = s->param; \
+ }
+
+#define GET_PARAM_INT(PARAM, INT) \
+ uint16_t INT = 0; \
+ if CHECK_PARAM_LEN(PARAM, 2) { \
+ tIntParam* s = (tIntParam*)PARAM; \
+ INT = s->param; \
+ }
+
+#define GET_PARAM_BYTE(PARAM, BYTE) \
+ uint8_t BYTE = 0; \
+ if CHECK_PARAM_LEN(PARAM, 1) { \
+ tByteParam* s = (tByteParam*)PARAM; \
+ BYTE = s->param; \
+ }
+
+#define GET_PARAM_NEXT(TYPE, PARAM, DATA) \
+ GET_PARAM_##TYPE(PARAM, DATA) \
+ NEXT_PARAM(PARAM)
+
+#ifdef _SPI_STATS_
+#define STATSPI_TIMEOUT_ERROR() \
+ statSpi.timeoutIntErr++; \
+ statSpi.rxErr++; \
+ statSpi.lastError = err; \
+ statSpi.status = spi_getStatus(ARD_SPI);
+
+#define STATSPI_DISALIGN_ERROR() \
+ statSpi.frameDisalign++; \
+ statSpi.rxErr++; \
+ statSpi.lastError = SPI_ALIGN_ERROR; \
+ statSpi.status = spi_getStatus(ARD_SPI);
+
+#define STATSPI_OVERRIDE_ERROR() \
+ statSpi.overrideFrame++; \
+ statSpi.rxErr++; \
+ statSpi.lastError = SPI_OVERRIDE_ERROR; \
+ statSpi.status = spi_getStatus(ARD_SPI);
+
+#define STATSPI_TX_TIMEOUT_ERROR() \
+ statSpi.timeoutErr++; \
+ statSpi.txErr++; \
+ statSpi.lastError = SPI_ERROR_TIMEOUT; \
+ statSpi.status = spi_getStatus(ARD_SPI);
+#else
+#define STATSPI_TIMEOUT_ERROR()
+#define STATSPI_TX_TIMEOUT_ERROR()
+#define STATSPI_DISALIGN_ERROR()
+#define STATSPI_OVERRIDE_ERROR()
+#endif
+
+#define DUMP_TCP_STATE(TTCP) \
+ INFO_TCP("ttcp:%p tpcb:%p state:%d lpcb:%p state:%d\n", \
+ TTCP, TTCP->tpcb, (TTCP->tpcb)?TTCP->tpcb->state:0, \
+ TTCP->lpcb, (TTCP->lpcb)?TTCP->lpcb->state:0);
+
+
+typedef struct sData
+{
+ uint8_t* data;
+ uint16_t len;
+ uint16_t idx;
+ void* pcb;
+}tData;
+
+struct pbuf;
+
+void init_pBuf();
+
+void insert_pBuf(struct pbuf* q, uint8_t sock, void* _pcb);
+
+tData* get_pBuf(uint8_t sock);
+
+void freetData(void * buf, uint8_t sock);
+
+void freetDataIdx(uint8_t idxBuf, uint8_t sock);
+
+bool isBufAvail();
+
+bool getTcpData(uint8_t sock, void** payload, uint16_t* len);
+
+bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek);
+
+bool isAvailTcpDataByte(uint8_t sock);
+
+uint8_t freeTcpData(uint8_t sock);
+
+#endif /* ARD_UTILS_H_ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/avr32_spi.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/avr32_spi.c
new file mode 100644
index 0000000..739fb28
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/avr32_spi.c
@@ -0,0 +1,394 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include <gpio.h>
+#include <intc.h>
+#include <string.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <wl_spi.h>
+#include <printf-stdarg.h>
+#include <board_init.h>
+
+#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
+
+__attribute__((__interrupt__)) void avr32_irq_handler(void);
+void owl_spi_mdelay(uint32_t ms);
+
+int owl_spi_init(U8 *flags)
+{
+#ifdef _ASSERT_ENABLE_ /* To silence warning if Assert() macro is empty */
+ volatile avr32_pm_t *pm = &AVR32_PM;
+#endif
+
+ volatile avr32_spi_t *spi = &WL_SPI;
+#if WL_SPI_CS == 1
+ volatile avr32_spi_csr1_t* CSR = &spi->CSR1;
+#elif WL_SPI_CS == 2
+ volatile avr32_spi_csr2_t* CSR = &spi->CSR2;
+#elif WL_SPI_CS == 3
+ volatile avr32_spi_csr3_t* CSR = &spi->CSR3;
+#elif SPI_CS == 0
+ volatile avr32_spi_csr0_t* CSR = &spi->CSR0;
+#endif
+
+#ifndef WITH_NO_DMA
+ volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0];
+ volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1];
+#endif
+
+#ifndef WL_IRQ_PIN
+ *flags = SPI_FLAG_POLL;
+#else
+ *flags = 0;
+#endif
+
+
+#ifdef WL_IRQ_PIN
+ /* input, irq */
+ gpio_enable_gpio_pin(WL_IRQ_PIN);
+ gpio_enable_pin_pull_up(WL_IRQ_PIN);
+#endif
+
+//#ifdef WL_RESET_PIN
+// /* reset pin */
+// gpio_enable_gpio_pin(WL_RESET_PIN);
+// gpio_set_gpio_pin(WL_RESET_PIN);
+//#endif
+
+
+#ifdef WL_POWER_PIN
+ /* power off the device */
+ gpio_enable_gpio_pin(WL_POWER_PIN);
+ gpio_set_gpio_pin(WL_POWER_PIN);
+#endif
+
+#ifdef WL_SHUTDOWN_PIN
+ gpio_enable_gpio_pin(WL_SHUTDOWN_PIN);
+
+#ifdef WL_NO_INTERNAL_RESET /* never defined for SPB104/SPB105 */
+ gpio_clr_gpio_pin(WL_SHUTDOWN_PIN);
+#endif
+
+#ifdef WL_EXTERNAL_RESET
+ gpio_enable_gpio_pin(WL_RESET_PIN);
+#endif
+
+#endif /* WL_SHUTDOWN_PIN */
+
+#ifdef WL_POWER_PIN
+ /* power on the device */
+ gpio_clr_gpio_pin(WL_POWER_PIN);
+#endif
+
+#ifdef WL_SHUTDOWN_PIN
+
+#ifdef WL_NO_INTERNAL_RESET /* never defined for SPB104/SPB105 */
+ owl_spi_mdelay(5);
+ gpio_set_gpio_pin(WL_SHUTDOWN_PIN);
+
+#elif WL_EXTERNAL_RESET
+ owl_spi_mdelay(5);
+ gpio_set_gpio_pin(WL_SHUTDOWN_PIN);
+
+ owl_spi_mdelay(20);
+ //delay_ms(10); //2ms
+
+ /* reset pin */
+ gpio_set_gpio_pin(WL_RESET_PIN);
+
+#else
+
+ /* The shutdown pin will go high once the device is powered */
+ {
+#define SHUTDOWN_TIMEOUT 350
+ uint32_t shutdown_timer = 0;
+ while (gpio_get_pin_value(WL_SHUTDOWN_PIN) == 0) {
+ if (shutdown_timer > SHUTDOWN_TIMEOUT)
+ {
+ printk("Timeout WL Shutdown\n");
+ return -1;
+ }
+ owl_spi_mdelay(5);
+ shutdown_timer += 5;
+ }
+ }
+#endif /* WL_NO_INTERNAL_RESET */
+
+#else
+ /* We need to make a guess about the time needed to power the device,
+ * this will depend on the hardware design.
+ */
+ owl_spi_mdelay(5);
+#endif /* WL_SHUTDOWN_PIN */
+
+ /* Note: SPI0 clock enabled at reset in pm->pbamask (see 13.6.3) */
+ Assert(pm->pbamask & (1 << 5));
+
+ /* Note: GPIO clock enabled at reset in pm->pbamask (see 13.6.3) */
+ Assert(pm->pbamask & (1 << 1));
+#ifdef WL_IRQ_PIN
+ /* 22.4.7: "In every port there are four interrupt lines
+ * connected to the interrupt controller. Every eigth
+ * interrupts in the port are ored together to form an
+ * interrupt line."
+ *
+ * WL_IRQ_# = (WL_IRQ_PIN / 32) * 4 + (WL_IRQ_PIN / 8) % 4
+ * 62 => 1 * 4 + 3 = 7
+ */
+ INTC_register_interrupt(&avr32_irq_handler, WL_IRQ, AVR32_INTC_INT0);
+#endif
+
+#ifndef WITH_NO_DMA
+ INTC_register_interrupt(&avr32_irq_handler, AVR32_PDCA_IRQ_0,
+ AVR32_INTC_INT0);
+ INTC_register_interrupt(&avr32_irq_handler, AVR32_PDCA_IRQ_1,
+ AVR32_INTC_INT0);
+ pdca_tx->IER.terr = 1;
+ pdca_rx->IER.terr = 1;
+#endif
+
+#ifdef WL_SPI_CLOCK_DIVIDER
+ CSR->scbr = WL_SPI_CLOCK_DIVIDER;
+#else
+ CSR->scbr = 2;
+#endif
+
+ /* Use max width of TDR register, 16 bit transfers */
+ CSR->bits = 0x8;
+
+ /* Make sure that we can hold CS low until transfer is completed, e.g
+ * LASTXFER is set in TDR.
+ */
+ CSR->csaat = 1;
+
+ /* NRG component requires clock polarity high */
+ CSR->cpol = 1;
+
+
+#ifdef WL_IRQ_PIN
+ /* make sure to clear any pending bits in ifr here. */
+ gpio_clear_pin_interrupt_flag(WL_IRQ_PIN);
+#endif
+
+ return 0;
+}
+
+#ifndef WITH_NO_DMA
+static void dma_txrx(const U8* in, U8* out, U16 len)
+{
+ volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0];
+ volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1];
+
+ /* setup tx */
+ pdca_tx->mar = (U32) in;
+ pdca_tx->PSR.pid = WL_PDCA_PID_TX;
+ pdca_tx->tcr = len / 2;
+ pdca_tx->MR.size = 1; /* 2-byte */
+ pdca_tx->IER.trc = 1;
+
+ /* setup rx */
+ pdca_rx->mar = (U32) out;
+ pdca_rx->PSR.pid = WL_PDCA_PID_RX;
+ pdca_rx->tcr = len / 2;
+ pdca_rx->MR.size = 1; /* 2-byte */
+ pdca_rx->IER.trc = 1;
+
+ /* start dma's. for some reason rx must be started prior to tx */
+ pdca_rx->CR.ten = 1;
+ pdca_tx->CR.ten = 1;
+
+ /* blocking wait until transfer is completed */
+ while (!(pdca_tx->ISR.trc && pdca_rx->ISR.trc));
+}
+#endif
+
+/* access data using byte pointers since we might get unaligned
+ * data from lwip. The cpu will issue a data abort if we try
+ * to access data which is not properly aligned. See data sheet.
+ *
+ * Note that fifo_txrx() doesn't handle the case where len is not a
+ * multiple of two bytes properly.
+ *
+ * However, there is no actual case where len is odd at the same time
+ * as the "out" pointer is non-NULL; therefore I think that in practice,
+ * we'll not write beyond the end of the "out" array.
+ *
+ * The extra unknown byte fetched from the in pointer will be discarded
+ * by the device since a length field included in the packet header will inform
+ * the device of the actual number of valid bytes (this implementation is
+ * kind of hidden inside the library).
+ */
+static void fifo_txrx(const U8 *in, U8* out, U16 len)
+{
+ volatile avr32_spi_t *spi = &WL_SPI;
+ UnionCPtr in_ptr;
+ UnionPtr out_ptr;
+ U32 sr;
+
+ Assert(len);
+
+ in_ptr.u8ptr = in;
+ out_ptr.u8ptr = out;
+
+ while (len) {
+ U16 rdr;
+ union {
+ avr32_spi_tdr_t TDR;
+ U32 tdr;
+ } reg = { { 0 } };
+
+ while (!spi->SR.tdre);
+ while (!spi->SR.txempty);
+
+ /* prepare tx data register contents */
+ if (in_ptr.u8ptr) {
+ reg.TDR.td |= (in_ptr.u8ptr[0] << 8) | in_ptr.u8ptr[1];
+ in_ptr.u16ptr++;
+ }
+ else
+ reg.TDR.td |= 0xffff;
+
+ /* perform tx */
+ spi->tdr = reg.tdr;
+
+ /* wait until rx is ready */
+ while (!spi->SR.rdrf);
+
+ /* fetch rx data */
+ rdr = spi->RDR.rd;
+ if (out_ptr.u8ptr) {
+ out_ptr.u8ptr[0] = (rdr >> 8) & 0xff;
+ out_ptr.u8ptr[1] = rdr & 0xff;
+ out_ptr.u16ptr++;
+ }
+
+ if (len >= 2)
+ len -= 2;
+ else
+ len = 0;
+ }
+
+ sr = spi->sr;
+ Assert(!(sr & AVR32_SPI_SR_OVRES_MASK));
+ Assert(!(sr & AVR32_SPI_SR_MODF_MASK));
+}
+
+void owl_spi_txrx(const U8 *in, U8* out, U16 len)
+{
+#ifndef WITH_NO_DMA
+ static uint8_t buf[MAX_BLOCK_LEN];
+
+ /* unaligned data or odd number of bytes, then skip dma */
+ if ((U32) in % 4 || (U32) out % 4 || len % 2) {
+ fifo_txrx(in, out, len);
+ } else {
+ if (in == NULL) {
+ memset(buf, 0xff, len);
+ in = buf;
+ } else if (out == NULL) {
+ out = buf;
+ }
+ dma_txrx(in, out, len);
+ }
+#else
+ fifo_txrx(in, out, len);
+#endif
+}
+
+void owl_spi_irq(U8 enable)
+{
+#ifdef WL_IRQ_PIN
+
+ if (enable)
+ gpio_enable_pin_interrupt(WL_IRQ_PIN, GPIO_PIN_CHANGE);
+ else
+ gpio_disable_pin_interrupt(WL_IRQ_PIN);
+#endif
+}
+
+void owl_spi_cs(U8 enable)
+{
+ volatile avr32_spi_t *spi = &WL_SPI;
+
+ /*
+ * PCS = xxx0 => NPCS[3:0] = 1110
+ * PCS = xx01 => NPCS[3:0] = 1101
+ * PCS = x011 => NPCS[3:0] = 1011
+ * PCS = 0111 => NPCS[3:0] = 0111
+ * PCS = 1111 => forbidden (no peripheral is selected)
+ */
+
+ if (enable)
+#if WL_SPI_CS == 2
+ spi->MR.pcs = 0x3; /* cs2 */
+#elif WL_SPI_CS == 1
+ spi->MR.pcs = 0x1; /* cs1 */
+#elif WL_SPI_CS == 3
+ spi->MR.pcs = 0x7; /* cs3 */
+#elif WL_SPI_CS == 0
+ spi->MR.pcs = 0x0; /* cs0 */
+#endif
+ else
+ spi->MR.pcs = 0xf;
+}
+
+void owl_spi_mdelay(uint32_t ms)
+{
+ volatile int a = 0;
+ int i;
+ for (i = 0; i < ms * 5000; i++)
+ a++;
+}
+
+__attribute__((__interrupt__)) void avr32_irq_handler(void)
+{
+#ifndef WITH_NO_DMA
+ volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0];
+ volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1];
+
+ /* tx xfer complete */
+ if (pdca_tx->IMR.trc && pdca_tx->ISR.trc) {
+ pdca_tx->IDR.trc = 1;
+ pdca_tx->CR.tdis = 1; /* disable tx xfer */
+ }
+
+ /* rx xfer complete */
+ if (pdca_rx->IMR.trc && pdca_rx->ISR.trc) {
+ pdca_rx->IDR.trc = 1;
+ pdca_rx->CR.tdis = 1; /* disable rx xfer */
+ }
+#endif
+
+#ifdef WL_IRQ_PIN
+ if (gpio_get_pin_interrupt_flag(WL_IRQ_PIN)) {
+ gpio_clear_pin_interrupt_flag(WL_IRQ_PIN);
+ wl_spi_irq();
+ }
+#endif
+
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/board_init.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/board_init.c
new file mode 100644
index 0000000..a2a191e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/board_init.c
@@ -0,0 +1,297 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+#include <pm.h>
+#include <flashc.h>
+#include <intc.h>
+#include <board.h>
+#include <gpio.h>
+#ifdef WITH_SDRAM
+ #include <sdramc.h>
+#endif
+#include <board_init.h>
+#include <spi.h>
+
+#ifndef NO_SERIAL /* The bootloader does not want serial port
+ * code */
+#include <usart.h>
+
+int board_putchar(char c)
+{
+ int timeout = USART_DEFAULT_TIMEOUT;
+ if (c == '\n') {
+ do {
+ if (!timeout--)
+ return USART_FAILURE;
+ } while (usart_write_char(&CONFIG_CONSOLE_PORT, '\r') !=
+ USART_SUCCESS);
+
+ timeout = USART_DEFAULT_TIMEOUT;
+ }
+
+ do {
+ if (!timeout--)
+ return USART_FAILURE;
+ } while (usart_write_char(&CONFIG_CONSOLE_PORT, c) != USART_SUCCESS);
+
+ return USART_SUCCESS;
+}
+#endif /* NO_SERIAL */
+/**
+ * Initializes the MCU system clocks.
+ */
+static void
+init_sys_clocks(void)
+{
+
+ /* if we don't run on OSC0 don't switch to it since we don't know
+ * what kind of oscillator we have here
+ */
+
+#if OSC == 0
+ /* switch to OSC0 to speed up the booting */
+ pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
+#endif
+
+
+#ifndef USE_PLL
+ return;
+#endif
+
+ /* For audio, ee have to use OSC1 on to generate the correct clockrate
+ * for the SSC
+ */
+#if OSC == 1
+ /* start oscillator1 */
+ pm_enable_osc1_crystal(&AVR32_PM, FOSC1);
+ pm_enable_clk1(&AVR32_PM, OSC1_STARTUP);
+#endif
+
+ /* configure pll multipliers */
+ pm_pll_setup(&AVR32_PM,
+ 0, /* pll */
+ PLL_MUL, /* mul */
+ 1, /* div */
+ OSC, /* osc */
+ 16); /* lockcount */
+
+ /* set PLL operating range and divider (fpll = fvco/2)
+ * this gives PLL output = 66 MHz (62.0928 MHz for EVK1105/OSC1)
+ */
+ pm_pll_set_option(&AVR32_PM,
+ 0, /* pll */
+ 1, /* pll_freq */
+ 1, /* pll_div2 */
+ 0); /* pll_wbwdisable. */
+
+
+ /* start PLL0 and wait for the lock */
+ pm_pll_enable(&AVR32_PM, 0);
+ pm_wait_for_pll0_locked(&AVR32_PM);
+
+ /* Set all peripheral clocks torun at master clock rate */
+ pm_cksel(&AVR32_PM,
+ 0, /* pbadiv */
+ 0, /* pbasel */
+ 0, /* pbbdiv */
+ 0, /* pbbsel */
+ 0, /* hsbdiv */
+ 0); /* hsbsel */
+
+ /* Set one waitstate for the flash */
+ flashc_set_wait_state(1);
+
+ /* Switch to PLL0 as the master clock */
+ pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0);
+}
+
+static void init_exceptions(void)
+{
+ extern void _evba;
+ Set_system_register(AVR32_EVBA, (int)&_evba);
+ Enable_global_exception();
+}
+
+static void init_hmatrix(void)
+{
+ union {
+ unsigned long scfg;
+ avr32_hmatrix_scfg_t SCFG;
+ } u_avr32_hmatrix_scfg = {
+ AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH]
+ };
+ u_avr32_hmatrix_scfg.SCFG.defmstr_type =
+ AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT;
+ AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] =
+ u_avr32_hmatrix_scfg.scfg;
+}
+
+static void init_interrupts(void)
+{
+ INTC_init_interrupts();
+ Enable_global_interrupt();
+}
+
+static void init_spi(void)
+{
+#if defined(WL_SPI)
+ int i;
+#endif
+
+
+#if defined(AT45DBX_SPI)
+ static const gpio_map_t AT45DBX_SPI_GPIO_MAP = {
+ { AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION },
+ { AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION },
+ { AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION },
+ { AT45DBX_SPI_NPCS2_PIN, AT45DBX_SPI_NPCS2_FUNCTION },
+ };
+#endif
+
+
+#if defined(WL_SPI)
+ const gpio_map_t WL_SPI_GPIO_MAP = {
+#if defined(WL_SPI_NPCS0)
+ WL_SPI_NPCS0,
+#endif
+ WL_SPI_NPCS, WL_SPI_MISO, WL_SPI_MOSI, WL_SPI_SCK
+ };
+#endif
+
+#if defined(WL_SPI) || defined(AT45DBX_SPI)
+ spi_options_t spiOptions = {
+ .modfdis = 1 /* only param used by spi_initMaster() */
+ };
+#endif
+
+#if defined(AT45DBX_SPI)
+ gpio_enable_module(AT45DBX_SPI_GPIO_MAP,
+ sizeof(AT45DBX_SPI_GPIO_MAP) /
+ sizeof(AT45DBX_SPI_GPIO_MAP[0]));
+ spi_initMaster(AT45DBX_SPI, &spiOptions);
+ spi_selectionMode(AT45DBX_SPI, 0, 0, 0);
+#endif
+
+#if defined(WL_SPI)
+ /* same pins might be initialized twice here */
+ gpio_enable_module(WL_SPI_GPIO_MAP,
+ sizeof(WL_SPI_GPIO_MAP) /
+ sizeof(WL_SPI_GPIO_MAP[0]));
+ for (i = 0; i < sizeof(WL_SPI_GPIO_MAP)/sizeof(WL_SPI_GPIO_MAP[0]); i++)
+ gpio_enable_pin_pull_up(WL_SPI_GPIO_MAP[i].pin);
+
+ /* same SPI controller might be initialized again */
+ spi_initMaster(&WL_SPI, &spiOptions);
+ spi_selectionMode(&WL_SPI, 0, 0, 0);
+#endif
+
+#if defined(AT45DBX_SPI)
+ spi_enable(AT45DBX_SPI);
+
+ /* put up flash reset pin */
+ gpio_set_gpio_pin(AT45DBX_CHIP_RESET);
+#endif
+
+#if defined(WL_SPI)
+ spi_enable(&WL_SPI);
+#endif
+}
+
+
+static void init_rs232(void)
+{
+#ifndef NO_SERIAL
+#if defined(BOARD_RS232_0)
+ const gpio_map_t BOARD_RS232_0_GPIO_MAP = {
+ BOARD_RS232_0_TX,
+ BOARD_RS232_0_RX,
+#if defined(BOARD_RS232_0_RTS) && defined (BOARD_RS232_0_CTS)
+ BOARD_RS232_0_RTS,
+ BOARD_RS232_0_CTS
+#endif
+
+ };
+#endif
+
+#if defined(BOARD_RS232_1)
+ const gpio_map_t BOARD_RS232_1_GPIO_MAP = {
+ BOARD_RS232_1_TX,
+ BOARD_RS232_1_RX
+#if defined(BOARD_RS232_1_RTS) && defined (BOARD_RS232_1_CTS)
+ BOARD_RS232_1_RTS,
+ BOARD_RS232_1_CTS
+#endif
+ };
+#endif
+
+#if defined(BOARD_RS232_0)
+ gpio_enable_module(BOARD_RS232_0_GPIO_MAP,
+ sizeof(BOARD_RS232_0_GPIO_MAP) /
+ sizeof(BOARD_RS232_0_GPIO_MAP[0]));
+#endif
+
+#if defined(BOARD_RS232_1)
+ gpio_enable_module(BOARD_RS232_1_GPIO_MAP,
+ sizeof(BOARD_RS232_1_GPIO_MAP) /
+ sizeof(BOARD_RS232_1_GPIO_MAP[0]));
+#endif
+#endif /* NO_SERIAL */
+}
+
+static void init_printk(void)
+{
+#ifndef NO_SERIAL
+#if defined(CONFIG_CONSOLE_PORT)
+ const usart_options_t usart_options = {
+ .baudrate = 57600,
+ .charlength = 8,
+ .paritytype = USART_NO_PARITY,
+ .stopbits = USART_1_STOPBIT,
+ .channelmode = USART_NORMAL_CHMODE
+ };
+ usart_init_rs232(&CONFIG_CONSOLE_PORT, &usart_options, FPBA_HZ);
+#endif
+#endif /* NO_SERIAL */
+}
+
+void board_init(void)
+{
+
+ init_exceptions();
+ init_hmatrix();
+ init_sys_clocks();
+ init_interrupts();
+
+ init_rs232();
+ init_printk();
+
+#ifdef WITH_SDRAM
+ sdramc_init(FHSB_HZ);
+#endif
+ init_spi();
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/board_init.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/board_init.h
new file mode 100644
index 0000000..05a6609
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/board_init.h
@@ -0,0 +1,313 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef STARTUP_H
+#define STARTUP_H
+
+#include <board.h>
+#include <wl_api.h> /* defines SPB104, SPB105 */
+
+void board_init(void);
+
+
+
+/*
+ *
+ * EVK1100
+ * ---------------------------------------------------------------------------
+ *
+ */
+#if BOARD == EVK1100
+
+/* USART0 physical assignment */
+#define BOARD_RS232_0 AVR32_USART1
+#define BOARD_RS232_0_TX \
+ { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION }
+#define BOARD_RS232_0_RX \
+ { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION }
+
+/* USART1 physical assignment */
+#define BOARD_RS232_1 AVR32_USART0
+#define BOARD_RS232_1_TX \
+ { AVR32_USART0_TXD_0_0_PIN, AVR32_USART0_TXD_0_0_FUNCTION }
+#define BOARD_RS232_1_RX \
+ { AVR32_USART0_RXD_0_0_PIN, AVR32_USART0_RXD_0_0_FUNCTION },
+
+/* Clocks */
+#define USE_PLL
+#define OSC 0
+#define PLL_MUL 10
+
+/* Wifi (SPB104 only) */
+#if defined(EXT_BOARD)
+#if EXT_BOARD == SPB104
+#define WL_SPI AVR32_SPI1 /* Pin 8 NC, so no irq support if using SD-slot */
+#define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */
+#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX
+#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX
+#define WL_SPI_CS 1
+#define WL_SPI_NPCS0 { AVR32_SPI1_NPCS_0_0_PIN, AVR32_SPI1_NPCS_0_0_FUNCTION }
+#define WL_SPI_NPCS { AVR32_SPI1_NPCS_1_0_PIN, AVR32_SPI1_NPCS_1_0_FUNCTION }
+#define WL_SPI_MISO { AVR32_SPI1_MISO_0_0_PIN, AVR32_SPI1_MISO_0_0_FUNCTION }
+#define WL_SPI_MOSI { AVR32_SPI1_MOSI_0_0_PIN, AVR32_SPI1_MOSI_0_0_FUNCTION }
+#define WL_SPI_SCK { AVR32_SPI1_SCK_0_0_PIN, AVR32_SPI1_SCK_0_0_FUNCTION }
+#endif
+#endif /* EXT_BOARD */
+
+
+
+
+
+
+/*
+ *
+ * EVK1101
+ * ---------------------------------------------------------------------------
+ *
+ */
+#elif BOARD == EVK1101
+
+/* USART0 physical assignment */
+#define BOARD_RS232_0 AVR32_USART1
+#define BOARD_RS232_0_TX \
+ { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION }
+#define BOARD_RS232_0_RX \
+ { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION }
+
+/* Clocks */
+#define USE_PLL
+#define OSC 0
+#define PLL_MUL 9
+
+/* Wifi (SPB104 only) */
+#if defined(EXT_BOARD)
+#if EXT_BOARD == SPB104 /* Pin 8 NC, so no irq support if using SD-slot */
+#define WL_SPI AVR32_SPI
+#define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */
+#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI_TX
+#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI_RX
+#define WL_SPI_CS 1
+#if EXT_BOARD == SPB105
+ #define WL_SHUTDOWN_PIN AVR32_PIN_PA06
+ #define WL_POWER_PIN AVR32_PIN_PA30
+#endif
+#define WL_SPI_NPCS0 { AVR32_SPI_NPCS_0_0_PIN, AVR32_SPI_NPCS_0_0_FUNCTION }
+#define WL_SPI_NPCS { AVR32_SPI_NPCS_1_0_PIN, AVR32_SPI_NPCS_1_0_FUNCTION }
+#define WL_SPI_MISO { AVR32_SPI_MISO_0_0_PIN, AVR32_SPI_MISO_0_0_FUNCTION }
+#define WL_SPI_MOSI { AVR32_SPI_MOSI_0_0_PIN, AVR32_SPI_MOSI_0_0_FUNCTION }
+#define WL_SPI_SCK { AVR32_SPI_SCK_0_0_PIN, AVR32_SPI_SCK_0_0_FUNCTION }
+#endif
+#endif /* EXT_BOARD */
+
+
+
+
+
+
+
+/*
+ *
+ * EVK1104
+ * ---------------------------------------------------------------------------
+ *
+ */
+#elif BOARD == EVK1104 /* EVK1104 */
+
+/* USART0 physical assignment */
+#define BOARD_RS232_0 AVR32_USART1
+#define BOARD_RS232_0_TX \
+ { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION }
+#define BOARD_RS232_0_RX \
+ { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION }
+
+/* Clocks */
+#define USE_PLL
+#define OSC 0
+#define PLL_MUL 9 /* for some reason we cant use 66 MHz */
+
+/* Wifi (SDIO: SPB104 only; SPI: SPB105 only) */
+#if defined(EXT_BOARD)
+#if EXT_BOARD == SPB105
+ #define WL_SPI AVR32_SPI0
+ #define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI0_TX
+ #define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI0_RX
+ #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */
+ #define WL_SHUTDOWN_PIN AVR32_PIN_PA17 /* Pin 8 on RF-head -> Pin 4 on wifi */
+ #define WL_IRQ_PIN AVR32_PIN_PA18 /* Pin 6 on RF-head -> Pin 3 on wifi */
+ #define WL_IRQ AVR32_GPIO_IRQ_2
+ #define WL_SPI_CS 3
+ #define WL_SPI_NPCS { AVR32_SPI0_NPCS_3_1_PIN, AVR32_SPI0_NPCS_3_1_FUNCTION }
+ #define WL_SPI_MISO { AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION }
+ #define WL_SPI_MOSI { AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION }
+ #define WL_SPI_SCK { AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION }
+#elif EXT_BOARD == SPB104
+ #ifdef SDIO_SLOT_A
+ #define WL_SDIO_CLK { AVR32_MCI_CLK_0_PIN, AVR32_MCI_CLK_0_FUNCTION }
+ #define WL_SDIO_CMD { AVR32_MCI_CMD_0_PIN, AVR32_MCI_CMD_0_FUNCTION }
+ #define WL_SDIO_DAT0 { AVR32_MCI_DATA_0_PIN, AVR32_MCI_DATA_0_FUNCTION }
+ #define WL_SDIO_DAT1 { AVR32_MCI_DATA_1_PIN, AVR32_MCI_DATA_1_FUNCTION }
+ #define WL_SDIO_DAT2 { AVR32_MCI_DATA_2_PIN, AVR32_MCI_DATA_2_FUNCTION }
+ #define WL_SDIO_DAT3 { AVR32_MCI_DATA_3_PIN, AVR32_MCI_DATA_3_FUNCTION }
+ #else
+ #define WL_SDIO_CLK { AVR32_MCI_CLK_0_PIN, AVR32_MCI_CLK_0_FUNCTION }
+ #define WL_SDIO_CMD { AVR32_MCI_CMD_1_0_PIN, AVR32_MCI_CMD_1_0_FUNCTION }
+ #define WL_SDIO_DAT0 { AVR32_MCI_DATA_8_0_PIN, AVR32_MCI_DATA_8_0_FUNCTION }
+ #define WL_SDIO_DAT1 { AVR32_MCI_DATA_9_0_PIN, AVR32_MCI_DATA_9_0_FUNCTION }
+ #define WL_SDIO_DAT2 { AVR32_MCI_DATA_10_0_PIN, AVR32_MCI_DATA_10_0_FUNCTION }
+ #define WL_SDIO_DAT3 { AVR32_MCI_DATA_11_0_PIN, AVR32_MCI_DATA_11_0_FUNCTION }
+ #endif
+#endif
+#endif /* EXT_BOARD */
+
+
+
+
+
+
+
+/*
+ *
+ * EVK1105
+ * ---------------------------------------------------------------------------
+ *
+ */
+#elif BOARD == EVK1105 /* EVK1105 */
+
+
+/* USART0 physical assignment */
+#define BOARD_RS232_0 AVR32_USART0
+#define BOARD_RS232_0_TX \
+ { AVR32_USART0_TXD_0_0_PIN, AVR32_USART0_TXD_0_0_FUNCTION }
+#define BOARD_RS232_0_RX \
+ { AVR32_USART0_RXD_0_0_PIN, AVR32_USART0_RXD_0_0_FUNCTION }
+
+/* Clocks */
+#define USE_PLL
+#define OSC 1
+#define PLL_MUL 10
+
+/* Wifi SPB104/SPB105 */
+#if defined(EXT_BOARD)
+ #define WL_SPI AVR32_SPI0
+ #define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI0_TX
+ #define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI0_RX
+ #if EXT_BOARD == SPB105
+ #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */
+ #define WL_SHUTDOWN_PIN AVR32_PIN_PB31 /* Pin 8 on RF-head -> Pin 4 on wifi */
+ #define WL_IRQ_PIN AVR32_PIN_PB30 /* Pin 6 on RF-head -> Pin 3 on wifi */
+ #define WL_IRQ AVR32_GPIO_IRQ_7
+ #define WL_SPI_CS 2
+ #elif EXT_BOARD == SPB104
+ #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */
+ #define WL_SPI_CS 1
+ #endif
+ #define WL_SPI_NPCS0 { AVR32_SPI0_NPCS_0_0_PIN, AVR32_SPI0_NPCS_0_0_FUNCTION }
+ #if WL_SPI_CS == 1
+ #define WL_SPI_NPCS { AVR32_SPI0_NPCS_1_0_PIN, AVR32_SPI0_NPCS_1_0_FUNCTION }
+ #elif WL_SPI_CS == 2
+ #define WL_SPI_NPCS { AVR32_SPI0_NPCS_2_0_PIN, AVR32_SPI0_NPCS_2_0_FUNCTION }
+ #endif
+ #define WL_SPI_MISO { AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION }
+ #define WL_SPI_MOSI { AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION }
+ #define WL_SPI_SCK { AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION }
+#endif /* EXT_BOARD */
+
+/*
+ *
+ * ARDUINO
+ * ---------------------------------------------------------------------------
+ *
+ */
+#elif BOARD == ARDUINO /* ARDUINO */
+
+
+/* USART0 physical assignment */
+#define BOARD_RS232_1 AVR32_USART1
+#define BOARD_RS232_1_TX \
+ { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION }
+#define BOARD_RS232_1_RX \
+ { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION }
+
+/* Clocks */
+#define USE_PLL
+#define OSC 0
+#define PLL_MUL 8
+
+#define WL_SPI AVR32_SPI1
+#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX
+#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX
+
+#define WL_SHUTDOWN_PIN AVR32_PIN_PA09
+#define WL_IRQ_PIN AVR32_PIN_PA03
+/*
+* WL_IRQ_# = (WL_IRQ_PIN / 32) * 4 + (WL_IRQ_PIN / 8) % 4
+ * 3 => 0 * 4 + 0 = 0
+*/
+#define WL_IRQ AVR32_GPIO_IRQ_0
+#define WL_SPI_CS 0
+#define WL_RESET_PIN AVR32_PIN_PA07
+#define WL_EXTERNAL_RESET 1
+
+
+#define WL_SPI_NPCS { AVR32_SPI1_NPCS_0_0_PIN, AVR32_SPI1_NPCS_0_0_FUNCTION }
+#define WL_SPI_MISO { AVR32_SPI1_MISO_0_0_PIN, AVR32_SPI1_MISO_0_0_FUNCTION }
+#define WL_SPI_MOSI { AVR32_SPI1_MOSI_0_0_PIN, AVR32_SPI1_MOSI_0_0_FUNCTION }
+#define WL_SPI_SCK { AVR32_SPI1_SCK_0_0_PIN, AVR32_SPI1_SCK_0_0_FUNCTION }
+
+#endif /* EVKxxxx */
+
+
+
+
+
+
+
+
+
+#if OSC == 0
+# define FOSC FOSC0 /* 12 MHz */
+#else
+# define FOSC FOSC1 /* 11.2896 MHz */
+#endif
+
+#ifdef USE_PLL
+# define FMCK_HZ ((FOSC * (PLL_MUL + 1)) / 2)
+#else
+# define FMCK_HZ FOSC
+#endif
+
+#define FCPU_HZ FMCK_HZ
+#define FHSB_HZ FCPU_HZ
+#define FPBB_HZ FMCK_HZ
+#define FPBA_HZ FMCK_HZ
+
+
+#ifndef CONFIG_CONSOLE_PORT
+#define CONFIG_CONSOLE_PORT BOARD_RS232_1
+#endif
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/cmd_wl.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/cmd_wl.c
new file mode 100644
index 0000000..61634ef
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/cmd_wl.c
@@ -0,0 +1,635 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include <top_defs.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <cmd_wl.h>
+
+#include <wl_cm.h>
+#include <console.h>
+#include <util.h>
+#include <lwip_setup.h>
+
+#include "lwip/netif.h"
+#include "lwip/dns.h"
+#include "debug.h"
+#include "ard_spi.h"
+
+extern void showTTCPstatus();
+
+#define ENABLE_DEBUG_LEVEL 1
+#define VERBOSE_DEBUG_LEVEL 2
+
+#define CHECK_ENA_DEBUG(LEVEL, FLAG) \
+ do{ \
+ if (LEVEL >= ENABLE_DEBUG_LEVEL) enableDebug |= FLAG; \
+ else enableDebug &= ~FLAG; \
+ }while(0);
+
+#define CHECK_VERB_DEBUG(LEVEL, FLAG) \
+ do{ \
+ if (LEVEL >= VERBOSE_DEBUG_LEVEL) verboseDebug |= FLAG; \
+ else verboseDebug &= ~FLAG; \
+ }while(0);
+
+#define _DNS_CMD_
+
+/**
+ *
+ */
+cmd_state_t
+cmd_scan(int argc, char* argv[], void* ctx)
+{
+ /* Note that the scan results presented will
+ * be from the last scan, not this one.
+ */
+ wl_scan();
+ print_network_list();
+ return CMD_DONE;
+}
+
+cmd_state_t
+cmd_debug_toggle(int argc, char* argv[], void* ctx)
+{
+ extern uint8_t tr_data_trace;
+ if ( argc != 2 ) {
+ printk("usage: dt <1|0>\n");
+ return CMD_DONE;
+ }
+ if ( '0' == argv[1][0] ) {
+ tr_data_trace = 0;
+ }
+ if ( '1' == argv[1][0] ) {
+ tr_data_trace = 1;
+ }
+ return CMD_DONE;
+}
+
+/**
+ *
+ */
+cmd_state_t
+cmd_connect(int argc, char* argv[], void* ctx)
+{
+ struct wl_ssid_t ssid;
+ char desired_ssid[WL_SSID_MAX_LENGTH];
+ int len = 0;
+
+ if (argc < 2) {
+ printk("usage: connect <ssid>\n");
+ return CMD_DONE;
+ }
+
+ len = join_argv(desired_ssid, sizeof desired_ssid, argc - 1, argv + 1);
+ if (0 == len) {
+ return CMD_DONE;
+ }
+
+ memcpy(ssid.ssid, desired_ssid, len);
+ ssid.len = len;
+ /* Start connection manager */
+ wl_cm_set_network(&ssid, NULL);
+ wl_cm_start();
+ return CMD_DONE;
+}
+
+#ifdef WFE_6_12
+cmd_state_t
+cmd_ibss(int argc, char* argv[], void* ctx)
+{
+ struct wl_ssid_t ssid;
+ char desired_ssid[WL_SSID_MAX_LENGTH];
+ uint8_t channel;
+ enum wl_auth_mode amode;
+ int len = 0;
+ wl_err_t ret;
+
+ if ( 2 == argc && ! strncmp(argv[1], "none", 4) ) {
+ printk("Disconnecting\n");
+ wl_disconnect();
+ wl_cm_stop();
+ return CMD_DONE;
+ }
+ if (argc < 4) {
+ printk("usage: ibss <ssid> <channel (1-14)> <wep_enable (1|0)>\n");
+ printk(" ibss none\n");
+ return CMD_DONE;
+ }
+
+ channel = atoi(argv[argc - 2]);
+ if ( *argv[argc - 1] == '0' ) {
+ amode = AUTH_MODE_OPEN_SYSTEM;
+ } else {
+ amode = AUTH_MODE_SHARED_KEY;
+ }
+ len = join_argv(desired_ssid, sizeof desired_ssid, argc - 3, argv + 1);
+ if (0 == len) {
+ return CMD_DONE;
+ }
+ if ( channel > 14 ) {
+ printk("Invalid channel %d\n", (int)channel);
+ return CMD_DONE;
+ }
+ printk("%s : Start with ssid \"%s\", channel %d\n", __func__,
+ desired_ssid, channel);
+ memcpy(ssid.ssid, desired_ssid, len);
+ ssid.len = len;
+ /* Stop the connection manager */
+ wl_cm_stop();
+
+ ret = wl_start_adhoc_net(ssid, channel, amode);
+ switch (ret) {
+ case WL_BUSY:
+ printk("Driver is busy. Already connected?\n");
+ break;
+ case WL_RETRY:
+ printk("Driver is busy. Retry operation\n");
+ break;
+ case WL_OOM:
+ printk("Out of memory\n");
+ break;
+ case WL_INVALID_ARGS:
+ printk("Invalid argument\n");
+ break;
+ case WL_SUCCESS:
+ break;
+ default:
+ printk("Unknown error %d\n", ret);
+ break;
+ }
+ return CMD_DONE;
+}
+#endif
+/**
+ *
+ */
+cmd_state_t
+cmd_set_ip(int argc, char* argv[], void* ctx)
+{
+ struct net_cfg *ncfg = ctx;
+ struct ip_addr lwip_addr;
+ struct netif *nif = ncfg->netif;
+
+ if (argc == 2 &&
+ (strncmp(argv[1], "none", 4) == 0)) {
+ ncfg->dhcp_enabled = 1;
+
+ return CMD_DONE;
+ }
+ else if (argc != 4 ) {
+ printk("usage: ip <ip> <netmask> <gateway-ip>\n");
+ printk(" or : ip none (to enable DHCP)\n");
+ return CMD_DONE;
+ }
+ /* IP address */
+ lwip_addr = str2ip(argv[1]);
+ netif_set_ipaddr(nif, &lwip_addr);
+ /* Netmask */
+ lwip_addr = str2ip(argv[2]);
+ netif_set_netmask(nif, &lwip_addr);
+ /* Default Gateway address */
+ lwip_addr = str2ip(argv[3]);
+ netif_set_gw(nif, &lwip_addr);
+ /* Disable DHCP */
+ ncfg->dhcp_enabled = 0;
+
+ return CMD_DONE;
+}
+
+#ifdef WITH_WPA
+
+/**
+ *
+ */
+cmd_state_t
+cmd_delpass(int argc, char* argv[], void* ctx)
+{
+ const char *usage = "usage: dpass <ssid>\n";
+ struct wl_network_t net;
+ char desired_ssid[WL_SSID_MAX_LENGTH];
+ int len = 0;
+
+ if (argc != 2) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ memset(&net, 0, sizeof net);
+ memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet);
+
+ len = join_argv(desired_ssid, sizeof desired_ssid, argc - 1, argv + 1);
+ if (0 == len) {
+ return CMD_DONE;
+ }
+ memcpy(net.ssid.ssid, desired_ssid, len);
+ net.ssid.len = len;
+ net.enc_type = ENC_TYPE_AUTO;
+ if (wl_clear_passphrase(&net) != WL_SUCCESS) {
+ printk("%s : Failed to delete passphrase\n", __func__);
+ }
+
+ return CMD_DONE;
+}
+
+
+/**
+ *
+ */
+cmd_state_t
+cmd_setpass(int argc, char* argv[], void* ctx)
+{
+ const char *usage = "usage: wpass <ssid> <passphrase>\n";
+ struct wl_network_t net;
+ char desired_ssid[WL_SSID_MAX_LENGTH];
+ int len = 0;
+
+ if (argc < 3) {
+ printk(usage);
+ return CMD_DONE;
+ }
+ /* Not really kosher, an ssid may legally contain 0-bytes but
+ * the console interface does not deal with that.
+ */
+ memset(&net, 0, sizeof net);
+ memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet);
+
+ len = join_argv(desired_ssid, sizeof desired_ssid, argc - 2, argv + 1);
+ if (0 == len) {
+ return CMD_DONE;
+ }
+
+ memcpy(net.ssid.ssid, desired_ssid, len);
+ net.ssid.len = len;
+ net.enc_type = ENC_TYPE_AUTO;
+ if (wl_set_passphrase(&net,
+ argv[argc - 1],
+ strlen(argv[argc - 1]),
+ ENC_TYPE_AUTO,
+ AUTH_MODE_AUTO)
+ != WL_SUCCESS) {
+ printk("%s : Failed to add passphrase\n", __func__);
+ }
+
+ return CMD_DONE;
+}
+#endif
+
+#ifdef _DNS_CMD_
+void foundHost(const char *name, struct ip_addr *ipaddr, void *callback_arg)
+{
+ printk("Found Host: name=%s ip=0x%x\n", name, ipaddr->addr);
+}
+
+/**
+ *
+ */
+cmd_state_t
+cmd_gethostbyname(int argc, char* argv[], void* ctx)
+{
+ const char *usage = "usage: getHost <hostname>\n";
+ char hostname[DNS_MAX_NAME_LENGTH];
+ struct ip_addr _addr;
+ int len = 0;
+
+ if (argc < 2) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ len = join_argv(hostname, sizeof hostname, argc - 1, argv + 1);
+ if (0 == len) {
+ return CMD_DONE;
+ }
+ err_t err = dns_gethostbyname(hostname, &_addr, foundHost, NULL);
+ if (err == ERR_OK)
+ {
+ printk("Found Host: name=%s ip=0x%x\n", hostname, _addr.addr);
+ }
+
+ return CMD_DONE;
+}
+
+/**
+ *
+ */
+cmd_state_t
+cmd_setDnsServer(int argc, char* argv[], void* ctx)
+{
+ const char *usage = "usage: setdns [1-2] aaa.bbb.ccc.ddd\n";
+ struct ip_addr dnsIp;
+ int dnsIdx = 0;
+
+ if (argc < 3) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ /* DNS IDX */
+ dnsIdx = atoi(argv[1])-1;
+ /* IP address */
+ dnsIp = str2ip(argv[2]);
+
+ printk("Set DNS server %d to %s\n", dnsIdx, ip2str(dnsIp));
+ dns_setserver(dnsIdx, &dnsIp);
+ struct ip_addr addr1 = dns_getserver(0);
+ struct ip_addr addr2 = dns_getserver(1);
+
+ printk("==> DNS1: %s\n", ip2str(addr1), addr1);
+ printk("==> DNS2: %s\n", ip2str(addr2), addr2);
+
+ return CMD_DONE;
+}
+
+/**
+ *
+ */
+cmd_state_t
+cmd_startTcpSrv(int argc, char* argv[], void* ctx)
+{
+ const char *usage = "usage: startTcpSrv <port> <sock>\n";
+
+ int port = 0;
+ int sock = 0;
+
+ if (argc < 3) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ /* TCP port */
+ port = atoi(argv[1]);
+ /* socket index */
+ sock = atoi(argv[2]);
+
+ printk("Start TCP server on port %d sock %d\n", port, sock);
+ if (start_server_tcp(port, sock) != -1)
+ {
+ printk("Start TCP server on port %d sock %d FAILED\n", port, sock);
+ }
+ return CMD_DONE;
+}
+
+
+#endif
+
+
+/**
+ *
+ */
+cmd_state_t
+cmd_status(int argc, char* argv[], void* ctx)
+{
+ struct net_cfg *ncfg = ctx;
+ struct wl_network_t* net;
+ uint8_t mac[WL_MAC_ADDR_LENGTH];
+
+ printk("wl_api version " WL_API_RELEASE_NAME "\n");
+ /* print mac address */
+ if (wl_get_mac_addr(mac) != WL_SUCCESS) {
+ printk("failed to get mac address\n");
+ }else{
+ printk("hw addr: %s\n", mac2str(mac));
+ }
+
+ /* print network info */
+ net = wl_get_current_network();
+ printk("link status: ");
+ if (!net) {
+ printk("down\n");
+
+ }else{
+ print_network(net);
+ }
+
+ /* print ip address */
+ if (netif_is_up(netif_default))
+ printk("ip addr: %s\n", ip2str(netif_default->ip_addr));
+ else
+ printk("ip interface is down\n");
+ printk("dhcp : ");
+ if (ncfg->dhcp_enabled) {
+ printk("enabled\n");
+ }
+ else {
+ printk("disabled\n");
+ }
+ struct ip_addr addr1 = dns_getserver(0);
+ struct ip_addr addr2 = dns_getserver(1);
+
+ printk("==> DNS1: %s\n", ip2str(addr1), addr1);
+ printk("==> DNS2: %s\n", ip2str(addr2), addr2);
+
+ showTTCPstatus();
+ return CMD_DONE;
+}
+
+#ifdef ADD_CMDS
+/**
+ *
+ */
+cmd_state_t
+cmd_power(int argc, char* argv[], void* ctx)
+{
+ const char *usage = "usage: powersave <on|off>\n";
+
+ if (argc < 2) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ if (!strcmp(argv[1], "on")) {
+ if (wl_enable_ps() != WL_SUCCESS) {
+ printk("could not enable power save\n");
+ return CMD_DONE;
+ }
+ return CMD_DONE;
+ }
+ else if(!strcmp(argv[1], "off")) {
+ if (wl_disable_ps() != WL_SUCCESS) {
+ printk("could not disable power save\n");
+ return CMD_DONE;
+ }
+ return CMD_DONE;
+ }
+
+ printk(usage);
+ return CMD_DONE;
+}
+#endif
+
+#ifdef ADD_CMDS
+/**
+ *
+ */
+cmd_state_t
+cmd_psconf(int argc, char* argv[], void* ctx)
+{
+ const char *usage =
+ "usage: psconf <use_ps_poll> (0/1 default 0)\n" \
+ " <traffic_timeout> ([ms] default 10)\n" \
+ " <ps_delay> ([ms] default 5000)\n"\
+ " <rx_all_dtim> (0/1 default 1)\n"\
+ " <listen_interval> ([beacons] default 20)\n";
+
+ uint8_t use_ps_poll;
+ uint32_t traffic_timeout;
+ uint32_t ps_delay;
+ uint8_t rx_all_dtim;
+ uint16_t listen_interval;
+
+ if (argc < 6) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ use_ps_poll = atoi(argv[1]);
+ traffic_timeout = atoi(argv[2]);
+ ps_delay = atoi(argv[3]);
+ rx_all_dtim = atoi(argv[4]);
+ listen_interval = atoi(argv[5]);
+
+ if (use_ps_poll > 1) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ if (rx_all_dtim > 1) {
+ printk(usage);
+ return CMD_DONE;
+ }
+
+ if (wl_conf_ps(use_ps_poll, traffic_timeout, ps_delay,
+ rx_all_dtim, listen_interval) != WL_SUCCESS)
+ printk("configuration failed\n");
+
+ return CMD_DONE;
+}
+#endif
+
+/**
+ *
+ */
+cmd_state_t
+cmd_setkey(int argc, char* argv[], void* ctx)
+{
+ int idx, len;
+ char key[13];
+ struct wl_mac_addr_t bssid;
+ const char *usage = "usage: setkey <key_idx (0-3)> <key in hex>\n\t "\
+ "or: setkey none\n";
+
+ memset(&bssid.octet, 0xff, sizeof bssid.octet);
+ if (argc == 2 && strcmp(argv[1], "none") == 0) {
+ printk("Deleting WEP keys\n");
+ wl_delete_wep_key(0, &bssid);
+ wl_delete_wep_key(1, &bssid);
+ wl_delete_wep_key(2, &bssid);
+ wl_delete_wep_key(3, &bssid);
+ return CMD_DONE;
+ }
+ if (argc < 3) {
+ printk(usage);
+ return CMD_DONE;
+ }
+ idx = atoi(argv[1]);
+ len = strlen(argv[2]);
+ /* Pass phrase? */
+ if ( 5 == len || 13 == len ) {
+ strncpy(key, argv[2], len);
+ }
+ /* Otherwise it's a hex string */
+ else {
+ len = ascii_to_key(key, argv[2]);
+ if (0 == len || idx > 3 || idx < 0 || (idx == 0 && *argv[1] != '0')) {
+ printk(usage);
+ return CMD_DONE;
+ }
+ if (len != 5 && len != 13) {
+ printk(" WEP key must be 10 (WEP-40) or 26 (WEP-104) digits\n");
+ return CMD_DONE;
+ }
+ }
+ wl_add_wep_key(idx, len, key, &bssid);
+ wl_set_default_wep_key(idx);
+
+ return CMD_DONE;
+}
+
+cmd_state_t
+cmd_debug(int argc, char* argv[], void* ctx)
+{
+ int level;
+ const char *usage = "usage: debug <section> <level>\n\t"\
+ "section: init, cm, spi, tcp , util, warn\n\t"
+ "level : 0 (off), 1 (on), 2 (verbose)\n\t"
+ "or: debug print/on/off\n";
+
+ if (argc == 2 && strcmp(argv[1], "off") == 0) {
+ printk("Debug OFF\n");
+ enableDebug = DEFAULT_INFO_FLAG;
+ verboseDebug = 0;
+ return CMD_DONE;
+ }else if (argc == 2 && strcmp(argv[1], "print") == 0) {
+ printk("Debug enabled: 0x%x\n", enableDebug);
+ printk("Verbose enabled: 0x%x\n", verboseDebug);
+ return CMD_DONE;
+ }else if (argc == 2 && strcmp(argv[1], "on") == 0) {
+ printk("Debug ON\n");
+ enableDebug = 0xff;
+ return CMD_DONE;
+ }
+ if (argc < 3) {
+ printk(usage);
+ return CMD_DONE;
+ }
+ level = atoi(argv[2]);
+ if (argc == 3 && strcmp(argv[1], "init") == 0) {
+ CHECK_ENA_DEBUG(level, INFO_INIT_FLAG);
+ CHECK_VERB_DEBUG(level, INFO_INIT_FLAG);
+ }else if (argc == 3 && strcmp(argv[1], "spi") == 0) {
+ CHECK_ENA_DEBUG(level, INFO_SPI_FLAG);
+ CHECK_VERB_DEBUG(level, INFO_SPI_FLAG);
+ }else if (argc == 3 && strcmp(argv[1], "tcp") == 0) {
+ CHECK_ENA_DEBUG(level, INFO_TCP_FLAG);
+ CHECK_VERB_DEBUG(level, INFO_TCP_FLAG);
+ }else if (argc == 3 && strcmp(argv[1], "cm") == 0) {
+ CHECK_ENA_DEBUG(level, INFO_CM_FLAG);
+ CHECK_VERB_DEBUG(level, INFO_CM_FLAG);
+ }else if (argc == 3 && strcmp(argv[1], "util") == 0) {
+ CHECK_ENA_DEBUG(level, INFO_UTIL_FLAG);
+ CHECK_VERB_DEBUG(level, INFO_UTIL_FLAG);
+ }else if (argc == 3 && strcmp(argv[1], "warn") == 0) {
+ CHECK_ENA_DEBUG(level, INFO_WARN_FLAG);
+ CHECK_VERB_DEBUG(level, INFO_WARN_FLAG);
+ }
+ return CMD_DONE;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/cmd_wl.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/cmd_wl.h
new file mode 100644
index 0000000..3953b95
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/cmd_wl.h
@@ -0,0 +1,63 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef CMD_CM_H
+#define CMD_CM_H
+
+#include <console.h>
+#include "netif/wlif.h"
+
+/*! A pointer to a struct of type "struct net_cfg" should be passed as
+ * the ctx pointer in the callbacks below. The struct must have a
+ * single instance per netif.
+ */
+#define _DNS_CMD_
+
+cmd_state_t cmd_scan(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_connect(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_set_ip(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_setkey(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_status(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_power(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_psconf(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_setpass(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_delpass(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_debug(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_debug_toggle(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_statSpi(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_resetStatSpi(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_gethostbyname(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_setDnsServer(int argc, char* argv[], void* ctx);
+cmd_state_t cmd_startTcpSrv(int argc, char* argv[], void* ctx);
+#ifdef WFE_6_12
+cmd_state_t cmd_ibss(int argc, char* argv[], void* ctx);
+#endif
+
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/console.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/console.c
new file mode 100644
index 0000000..5ead91e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/console.c
@@ -0,0 +1,212 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+#include <top_defs.h>
+#include <string.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <printf-stdarg.h>
+#include <console.h>
+#include <board_init.h>
+#include <usart.h>
+
+#define MAX_CMD_CONSOLE_NUM 12
+struct {
+ cmd_cb_t cb;
+ const char* str;
+ void* ctx;
+} cmd_list[MAX_CMD_CONSOLE_NUM] = { { 0 } };
+
+#ifndef CMD_MAX_LEN
+#define CMD_MAX_LEN 80
+#endif
+extern int board_putchar(char c);
+int io_getc(char *c)
+{
+ int ci;
+ int status;
+ status = usart_read_char(&CONFIG_CONSOLE_PORT, &ci);
+ if (status == USART_RX_EMPTY)
+ return 1;
+
+ if (status == USART_RX_ERROR) {
+ CONFIG_CONSOLE_PORT.cr = AVR32_USART_CR_RSTSTA_MASK;
+ return 1;
+ }
+
+ if (ci == '\r') {
+ board_putchar('\n');
+ /* Echo char. */
+ } else if (ci == '\b') {
+ board_putchar(ci);
+ board_putchar(' ');
+ board_putchar(ci);
+ } else
+ board_putchar(ci);
+
+
+ *c = ci;
+ return 0;
+}
+
+static uint8_t is_initialized = 0;
+
+char* console_gets()
+{
+ static char buf[CMD_MAX_LEN];
+ static int pos = 0;
+ char c;
+
+ for (;;) {
+ if (io_getc(&c))
+ return NULL;
+
+ if (c == '\r' || c == '\n') {
+ buf[pos] = 0;
+ pos = 0;
+ return buf;
+ }
+ if (c == '\b') {
+ pos -= 1;
+ if (pos < 0) pos = 0;
+ buf[pos] = 0;
+ }
+ else
+ buf[pos++] = c;
+ if (pos == sizeof(buf))
+ pos = 0;
+ }
+ return NULL;
+}
+
+int console_add_cmd(const char* str, cmd_cb_t cb, void* ctx)
+{
+ uint32_t i;
+ for (i = 0; i < ARRAY_SIZE(cmd_list); i++)
+ if (!cmd_list[i].cb)
+ break;
+
+ if (i == ARRAY_SIZE(cmd_list))
+ return -1;
+
+ cmd_list[i].str = str;
+ cmd_list[i].cb = cb;
+ cmd_list[i].ctx = ctx;
+ return 0;
+}
+
+void console_init(void)
+{
+ printk("\n$ ");
+ is_initialized = 1;
+}
+
+void console_init_silent(void) {
+ is_initialized = 1;
+}
+
+int console_schedule_cmd(char *cmd, int interactive) {
+#define MAX_ARGS 16
+ static int argc, i;
+ static char* argv[MAX_ARGS];
+ static char *buf;
+ static enum { INPUT, RUN } state = INPUT;
+
+ switch (state) {
+ case INPUT: {
+ char* token;
+ if (NULL == cmd) {
+ return 0;
+ }
+ buf = strdup(cmd);
+ if (!buf)
+ return 0;
+ if (!strlen(buf)) {
+ interactive ? printk("$ ") : 0;
+ free(buf);
+ return 0;
+ }
+#ifdef WIFI_DEBUG_ON
+ printk("%s : Scheduling command \"%s\"\n",
+ __func__,
+ buf);
+#endif
+ for (i = 0; i < ARRAY_SIZE(cmd_list); i++)
+ if(cmd_list[i].str && !strncmp(cmd_list[i].str, buf, min(strlen(cmd_list[i].str), strlen(buf))))
+ break;
+
+ if (ARRAY_SIZE(cmd_list) == 0) {
+ printk("No commands available. Is the WiFi card responding?\n");
+ }
+ if (i == ARRAY_SIZE(cmd_list)) {
+ if (interactive) {
+ printk("available commands:\n");
+ for (i = 0; i < ARRAY_SIZE(cmd_list); i++)
+ if (cmd_list[i].cb)
+ printk(" %s\n", cmd_list[i].str);
+ printk("$ ");
+ }
+ free(buf);
+ return 0;
+ }
+
+ for (token = strtok(buf, " "); token != NULL;
+ token = strtok(NULL, " ")) {
+ argv[argc] = token;
+ argc++;
+ if (argc == MAX_ARGS)
+ break;
+ }
+
+ state = RUN;
+ } /* fall through */
+
+ case RUN: {
+ cmd_state_t s = cmd_list[i].cb(argc, argv, cmd_list[i].ctx);
+ if (s == CMD_INPROGRESS)
+ return 1;
+
+ interactive ? printk("$ ") : 0;
+
+ argc = 0;
+ memset(argv, 0, sizeof argv);
+ free(buf);
+ state = INPUT;
+ }
+ }
+
+ return 1;
+}
+
+
+void console_poll(void)
+{
+ char *buf;
+ buf = console_gets();
+ console_schedule_cmd(buf, 1);
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/console.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/console.h
new file mode 100644
index 0000000..79bfedb
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/console.h
@@ -0,0 +1,46 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef CONSOLE_H
+#define CONSOLE_H
+
+
+typedef enum {
+ CMD_DONE,
+ CMD_INPROGRESS
+} cmd_state_t;
+
+typedef cmd_state_t (*cmd_cb_t)(int argc, char* argv[], void* ctx);
+
+void console_init(void);
+void console_init_silent(void);
+char* console_gets(void);
+int console_add_cmd(const char* str, cmd_cb_t cb, void* ctx);
+int console_schedule_cmd(char *cmd, int interactive);
+void console_poll(void);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/debug.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/debug.h
new file mode 100644
index 0000000..18608ff
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/debug.h
@@ -0,0 +1,109 @@
+//*********************************************/
+//
+// File: debug.h
+//
+// Author: Domenico La Fauci
+//
+//********************************************/
+
+
+#ifndef Debug_H
+#define Debug_H
+
+#include <stdio.h>
+#include <string.h>
+
+#define INFO_INIT_FLAG 1
+#define INFO_TCP_FLAG 2
+#define INFO_SPI_FLAG 4
+#define INFO_CM_FLAG 8
+#define INFO_UTIL_FLAG 16
+#define INFO_5 32
+#define INFO_D (1<<0xD) // Debug
+#define INFO_E (1<<0xE) // Error
+#define INFO_WARN_FLAG (1<<0xF) // Warning
+#define DEFAULT_INFO_FLAG 0 //INFO_WARN_FLAG
+
+extern uint16_t enableDebug;
+extern uint16_t verboseDebug;
+
+#ifdef _INFO_DEBUG_
+#define INFO_INIT(msg, args...) do { \
+if (enableDebug & INFO_INIT_FLAG) printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+#define INFO_TCP(msg, args...) do { \
+if (enableDebug & INFO_TCP_FLAG) printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+#define INFO_TCP_VER(msg, args...) do { \
+if ((enableDebug & INFO_TCP_FLAG)&&(verboseDebug & INFO_TCP_FLAG)) \
+ printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+
+#define INFO_SPI(msg, args...) do { \
+if (enableDebug & INFO_SPI_FLAG) printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+#define INFO_SPI_VER(msg, args...) do { \
+if ((enableDebug & INFO_SPI_FLAG)&&(verboseDebug & INFO_SPI_FLAG)) \
+ printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+
+#define INFO_UTIL(msg, args...) do { \
+if (enableDebug & INFO_UTIL_FLAG) printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+#define INFO_UTIL_VER(msg, args...) do { \
+if ((enableDebug & INFO_UTIL_FLAG)&&(verboseDebug & INFO_UTIL_FLAG)) \
+ printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+
+#else
+#define INFO_INIT(msg, args...) do {}while(0);
+#define INFO_TCP(msg, args...) do {}while(0);
+#define INFO_TCP_VER(msg, args...) do { }while(0);
+#define INFO_SPI(msg, args...) do {}while(0);
+#define INFO_SPI_VER(msg, args...) do { }while(0);
+#define INFO_UTIL(msg, args...) do {}while(0);
+#define INFO_UTIL_VER(msg, args...) do { }while(0);
+#endif
+
+#ifdef _APP_DEBUG_
+#define INFO(msg, args...) do { \
+printk("I-[%s] " msg , __func__ , ##args ); \
+} while (0)
+
+#else /* !defined(_DEBUG_) */
+//#define INFO(msg, args...) do {} while (0)
+#endif /* !defined(_DEBUG_) */
+
+#if 1
+#define WARN(msg, args...) do { \
+ if (enableDebug & INFO_WARN_FLAG) printk("W-[%s] " msg , __func__ , ##args ); \
+ } while (0)
+#else
+#define WARN(msg, args...) do { } while (0)
+#endif
+
+extern void dump(char* _buf, uint16_t _count);
+
+#ifdef _APP_DEBUG_
+#define DUMP(BUF, COUNT) do { \
+ printk("[%s]\n", __func__); \
+ dump((char*)BUF, COUNT); \
+ } while (0)
+#else
+#define DUMP(BUF, COUNT) do {} while (0)
+#endif
+#endif
+
+#define DUMP_TCP(BUF, COUNT) do { \
+ if (verboseDebug & INFO_TCP_FLAG) { \
+ printk("[%s]\n", __func__); \
+ dump((char*)BUF, COUNT); \
+ }} while (0)
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/fw_download.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/fw_download.h
new file mode 100644
index 0000000..e36214f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/fw_download.h
@@ -0,0 +1,38 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef FW_DOWNLOAD_H
+#define FW_DOWNLOAD_H
+
+#include <stdint.h>
+#include <stdio.h>
+
+int fw_download_init(void);
+size_t fw_read_cb(void *ctx, const uint8_t** buf, size_t offset, size_t len);
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/fw_download_extflash.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/fw_download_extflash.c
new file mode 100644
index 0000000..d679271
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/fw_download_extflash.c
@@ -0,0 +1,82 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include <top_defs.h>
+#include <wl_api.h>
+#include <fw_download.h>
+#include <nvram.h>
+#include <printf-stdarg.h>
+
+int fw_download_init(void)
+{
+ nvram_init();
+ return 0;
+}
+
+#define BUF_SIZE 512
+
+
+size_t fw_read_cb(void* ctx,
+ const uint8_t** buf,
+ size_t offset,
+ size_t len)
+{
+ static uint8_t* fw_buf = NULL;
+ size_t rlen;
+ /* when firmware download is completed, this function will be
+ * invoked one additional time with buf set to NULL. we can
+ * free the firmware buffer at this time since it's no longer
+ * needed.
+ */
+ if (NULL == buf) {
+ if (fw_buf) {
+ free(fw_buf);
+ fw_buf = NULL;
+ }
+ return 0;
+ }
+
+ /* first call? then initialize flash and allocate a buffer to hold
+ * firmware data.
+ */
+ if (fw_buf == NULL) {
+ fw_buf = malloc(BUF_SIZE);
+
+ if (fw_buf == NULL) {
+ printk("could not allocate firmware buffer\n");
+ return 0;
+ }
+ }
+ /* read at most a full buffer */
+ rlen = len > BUF_SIZE ? BUF_SIZE : len;
+
+ /* read data and update output parameters */
+ nvram_read(offset, fw_buf, rlen);
+ *buf = fw_buf;
+
+ return rlen;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/license.txt b/hardware/arduino/firmwares/wifishield/wifiHD/src/license.txt
new file mode 100644
index 0000000..e57439f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/license.txt
@@ -0,0 +1,42 @@
+ Copyright (C) 2009, H&D Wireless AB All rights reserved.
+
+ The license to use this software in whole and in part and to
+ redistribute it in any form follows with the WiFi HW module from H&D
+ Wireless and is granted under the following restrictions:
+
+ 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. The name of H&D Wireless AB may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ 4. The software may only be used together with hardware from H&D
+ Wireless all other use is prohibited.
+
+ 5. The license to use and redistribute the software is granted
+ together with the purchase of a hardware platform on a one to one
+ basis
+
+ 6. The binary code may not be reversed engineered or by other means
+ copied to circumvent this license.
+
+ THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT
+ SHALL HD WIRELESS AB 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.
+
+ For more information regarding this software license Contact H&D
+ Wireless AB (support hd-wireless se).
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/lwip_setup.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/lwip_setup.c
new file mode 100644
index 0000000..bfa8c09
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/lwip_setup.c
@@ -0,0 +1,145 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+/*!
+ * \file lwIP setup code
+ *
+ * \brief Collects the lwIP setup code that an application has to
+ * execute in a standalone environment.
+ *
+ * \author H&D Wireless AB \n
+ *
+ */
+
+#include <lwip/init.h>
+#include <lwip/dhcp.h>
+#include <lwip/tcp.h>
+#include <ipv4/lwip/ip_frag.h>
+#include <netif/etharp.h>
+#include <netif/wlif.h>
+#include <timer.h>
+
+#include "lwip_setup.h"
+#include "lwip/dns.h"
+
+
+/**
+ *
+ */
+static void
+tcp_tmr_cb(void *ctx)
+{
+ tcp_tmr();
+}
+
+/**
+ *
+ */
+static void
+ip_tmr_cb(void *ctx)
+{
+ ip_reass_tmr();
+}
+
+/**
+ *
+ */
+static void
+dns_tmr_cb(void *ctx)
+{
+ dns_tmr();
+}
+
+/**
+ *
+ */
+static void
+etharp_tmr_cb(void *ctx)
+{
+ etharp_tmr();
+}
+
+
+/**
+ *
+ */
+static void
+dhcp_fine_tmr_cb(void *ctx)
+{
+ dhcp_fine_tmr();
+}
+
+/**
+ *
+ */
+static void
+dhcp_coarse_tmr_cb(void *ctx)
+{
+ dhcp_coarse_tmr();
+}
+
+int start_ip_stack(struct net_cfg *cfg,
+ struct ip_addr ipaddr,
+ struct ip_addr netmask,
+ struct ip_addr gw) {
+
+ if (cfg->dhcp_enabled) {
+ IP4_ADDR(&gw, 0,0,0,0);
+ IP4_ADDR(&ipaddr, 0,0,0,0);
+ IP4_ADDR(&netmask, 0,0,0,0);
+ }
+
+ /* add wl to lwip interface list and set as default */
+ cfg->netif = netif_add(cfg->netif,
+ &ipaddr,
+ &netmask,
+ &gw,
+ NULL,
+ wlif_init, /* init */
+ ethernet_input /* handles ARP and IP packets */);
+
+ if (cfg->netif == NULL)
+ return -1;
+ netif_set_default(cfg->netif);
+
+ /* register lwip timer callbacks for tcp, arp and dhcp protocols */
+ timer_sched_timeout_cb(5000, TIMEOUT_PERIODIC,
+ etharp_tmr_cb, NULL);
+ timer_sched_timeout_cb(TCP_TMR_INTERVAL, TIMEOUT_PERIODIC,
+ tcp_tmr_cb, NULL);
+ timer_sched_timeout_cb(DHCP_FINE_TIMER_MSECS, TIMEOUT_PERIODIC,
+ dhcp_fine_tmr_cb, NULL);
+ timer_sched_timeout_cb(DHCP_COARSE_TIMER_MSECS, TIMEOUT_PERIODIC,
+ dhcp_coarse_tmr_cb, NULL);
+ timer_sched_timeout_cb(IP_TMR_INTERVAL, TIMEOUT_PERIODIC,
+ ip_tmr_cb, NULL);
+ timer_sched_timeout_cb(DNS_TMR_INTERVAL, TIMEOUT_PERIODIC,
+ dns_tmr_cb, NULL);
+
+ return 1;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/lwip_setup.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/lwip_setup.h
new file mode 100644
index 0000000..7a3ec6f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/lwip_setup.h
@@ -0,0 +1,21 @@
+#ifndef _LWIP_SETUP_H
+#define _LWIP_SETUP_H
+
+struct net_cfg {
+ struct netif *netif; /* lwip network interface */
+ uint8_t dhcp_enabled;
+ uint8_t dhcp_running;
+};
+
+/*! Start the IP stack.
+ * If cfg->netif must have been allocated and lwip_init()
+ * must have been called before this function is called
+ * (since the IP stack may have to be polled before this
+ * function can be called).
+ */
+int start_ip_stack(struct net_cfg *cfg,
+ struct ip_addr ipaddr,
+ struct ip_addr netmask,
+ struct ip_addr gw);
+
+#endif /* _LWIP_SETUP_H */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/lwipopts.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/lwipopts.h
new file mode 100644
index 0000000..64965bf
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/lwipopts.h
@@ -0,0 +1,450 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/**
+ * @file
+ *
+ * lwIP Options Configuration
+ */
+
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam sics se>
+ *
+ */
+#ifndef __LWIPOPTS_H__
+#define __LWIPOPTS_H__
+
+#include "wl_api.h"
+#include <board.h>
+
+#ifndef BOARD
+#error "BOARD must be defined"
+#endif
+
+/*
+ -----------------------------------------------
+ ---------- Platform specific locking ----------
+ -----------------------------------------------
+*/
+
+/**
+ * NO_SYS==1: Provides VERY minimal functionality. Otherwise,
+ * use lwIP facilities.
+ */
+#define NO_SYS 1
+
+
+/*
+ ------------------------------------
+ ---------- Memory options ----------
+ ------------------------------------
+*/
+/**
+ * MEM_ALIGNMENT: should be set to the alignment of the CPU
+ * 4 byte alignment -> #define MEM_ALIGNMENT 4
+ * 2 byte alignment -> #define MEM_ALIGNMENT 2
+ */
+#define MEM_ALIGNMENT 4
+
+/**
+ * MEM_SIZE: the size of the heap memory. If the application will send
+ * a lot of data that needs to be copied, this should be set high.
+ */
+#define MEM_SIZE 16000
+
+
+/*
+ ------------------------------------------------
+ ---------- Internal Memory Pool Sizes ----------
+ ------------------------------------------------
+*/
+/**
+ * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF).
+ * If the application sends a lot of data out of ROM (or other static memory),
+ * this should be set high.
+ */
+#if BOARD == EVK1101 /* Reduced RAM */
+ #define MEMP_NUM_PBUF 4
+#else
+ #define MEMP_NUM_PBUF 30
+#endif
+/**
+ * MEMP_NUM_RAW_PCB: Number of raw connection PCBs
+ * (requires the LWIP_RAW option)
+ */
+#define MEMP_NUM_RAW_PCB 4
+
+/**
+ * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
+ * per active UDP "connection".
+ * (requires the LWIP_UDP option)
+ */
+#define MEMP_NUM_UDP_PCB 4
+
+/**
+ * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_PCB 2
+
+/**
+ * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections.
+ * (requires the LWIP_TCP option)
+ */
+#define MEMP_NUM_TCP_PCB_LISTEN 2
+
+/**
+ * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments.
+ * (requires the LWIP_TCP option)
+ */
+#if BOARD == EVK1101 /* Reduced RAM */
+ #define MEMP_NUM_TCP_SEG 2
+#else
+ #define MEMP_NUM_TCP_SEG 32
+#endif
+
+/**
+ * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
+ * packets (pbufs) that are waiting for an ARP request (to resolve
+ * their destination address) to finish.
+ * (requires the ARP_QUEUEING option)
+ */
+#define MEMP_NUM_ARP_QUEUE 2
+
+/**
+ * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts.
+ * (requires NO_SYS==0)
+ */
+#define MEMP_NUM_SYS_TIMEOUT 0
+
+/**
+ * MEMP_NUM_NETBUF: the number of struct netbufs.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#define MEMP_NUM_NETBUF 0
+
+/**
+ * MEMP_NUM_NETCONN: the number of struct netconns.
+ * (only needed if you use the sequential API, like api_lib.c)
+ */
+#define MEMP_NUM_NETCONN 0
+
+/**
+ * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used
+ * for callback/timeout API communication.
+ * (only needed if you use tcpip.c)
+ */
+#define MEMP_NUM_TCPIP_MSG_API 0
+
+/**
+ * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used
+ * for incoming packets.
+ * (only needed if you use tcpip.c)
+ */
+#define MEMP_NUM_TCPIP_MSG_INPKT 0
+
+/**
+ * PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
+ */
+#if BOARD == EVK1101 /* Reduced RAM */
+ #define PBUF_POOL_SIZE 2
+#else
+ #define PBUF_POOL_SIZE 32
+#endif
+/*
+ ---------------------------------
+ ---------- ARP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_ARP==1: Enable ARP functionality.
+ */
+#define LWIP_ARP 1
+
+/*
+ --------------------------------
+ ---------- IP options ----------
+ --------------------------------
+*/
+/**
+ * IP_FORWARD==1: Enables the ability to forward IP packets across network
+ * interfaces. If you are going to run lwIP on a device with only one network
+ * interface, define this to 0.
+ */
+#define IP_FORWARD 0
+
+/**
+ * IP_OPTIONS: Defines the behavior for IP options.
+ * IP_OPTIONS==0_ALLOWED: All packets with IP options are dropped.
+ * IP_OPTIONS==1_ALLOWED: IP options are allowed (but not parsed).
+ */
+#define IP_OPTIONS_ALLOWED 1
+
+/**
+ * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that
+ * this option does not affect outgoing packet sizes, which can be controlled
+ * via IP_FRAG.
+ */
+#define IP_REASSEMBLY 1
+
+/**
+ * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note
+ * that this option does not affect incoming packet sizes, which can be
+ * controlled via IP_REASSEMBLY.
+ */
+#define IP_FRAG 1
+
+/**
+ * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally)
+ * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived
+ * in this time, the whole packet is discarded.
+ */
+#define IP_REASS_MAXAGE 3
+
+/**
+ * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled.
+ * Since the received pbufs are enqueued, be sure to configure
+ * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive
+ * packets even if the maximum amount of fragments is enqueued for reassembly!
+ */
+#if BOARD == EVK1101 /* Reduced RAM */
+ #define IP_REASS_MAX_PBUFS PBUF_POOL_SIZE
+ #define MEMP_NUM_REASSDATA PBUF_POOL_SIZE-1
+#else
+ #define IP_REASS_MAX_PBUFS 10
+#endif
+
+/**
+ * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP
+ * fragmentation. Otherwise pbufs are allocated and reference the original
+ * packet data to be fragmented.
+ */
+#define IP_FRAG_USES_STATIC_BUF 0
+
+/**
+ * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers.
+ */
+#define IP_DEFAULT_TTL 255
+
+/*
+ ----------------------------------
+ ---------- ICMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_ICMP==1: Enable ICMP module inside the IP stack.
+ * Be careful, disable that make your product non-compliant to RFC1122
+ */
+#define LWIP_ICMP 1
+
+/**
+ * ICMP_TTL: Default value for Time-To-Live used by ICMP packets.
+ */
+#define ICMP_TTL (IP_DEFAULT_TTL)
+
+/*
+ ---------------------------------
+ ---------- RAW options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
+ */
+#define LWIP_RAW 1
+
+/*
+ ----------------------------------
+ ---------- DHCP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_DHCP==1: Enable DHCP module.
+ */
+#define LWIP_DHCP 1
+
+/*
+ ------------------------------------
+ ---------- AUTOIP options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_AUTOIP==1: Enable AUTOIP module.
+ */
+#define LWIP_AUTOIP 0
+
+/*
+ ----------------------------------
+ ---------- SNMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP
+ * transport.
+ */
+#define LWIP_SNMP 0
+#define SNMP_PRIVATE_MIB 0
+
+/*
+ ----------------------------------
+ ---------- IGMP options ----------
+ ----------------------------------
+*/
+/**
+ * LWIP_IGMP==1: Turn on IGMP module.
+ */
+#define LWIP_IGMP 0
+
+/*
+ ----------------------------------
+ ---------- DNS options -----------
+ ----------------------------------
+*/
+/**
+ * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS
+ * transport.
+ */
+#define LWIP_DNS 1
+
+/*
+ ---------------------------------
+ ---------- UDP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_UDP==1: Turn on UDP.
+ */
+#define LWIP_UDP 1
+
+/**
+ * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP)
+ */
+#define LWIP_UDPLITE 0
+
+/**
+ * UDP_TTL: Default Time-To-Live value.
+ */
+#define UDP_TTL (IP_DEFAULT_TTL)
+
+/*
+ ---------------------------------
+ ---------- TCP options ----------
+ ---------------------------------
+*/
+/**
+ * LWIP_TCP==1: Turn on TCP.
+ */
+#define LWIP_TCP 1
+
+/*
+ ----------------------------------
+ ---------- Pbuf options ----------
+ ----------------------------------
+*/
+/**
+ * PBUF_LINK_HLEN: the number of bytes that should be allocated for a
+ * link level header. The default is 14, the standard value for
+ * Ethernet.
+ */
+#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE)
+
+/*
+ ------------------------------------
+ ---------- LOOPIF options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c
+ */
+#define LWIP_HAVE_LOOPIF 1
+#define LWIP_LOOPIF_MULTITHREADING 0
+
+/*
+ ----------------------------------------------
+ ---------- Sequential layer options ----------
+ ----------------------------------------------
+*/
+
+/**
+ * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
+ */
+#define LWIP_NETCONN 0
+
+/*
+ ------------------------------------
+ ---------- Socket options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
+ */
+#define LWIP_SOCKET 0
+
+/*
+ ----------------------------------------
+ ---------- Statistics options ----------
+ ----------------------------------------
+*/
+/**
+ * LWIP_STATS==1: Enable statistics collection in lwip_stats.
+ */
+#define LWIP_STATS 1
+#define LINK_STATS 1
+
+/* Misc */
+#define LWIP_NETIF_LINK_CALLBACK 1
+#define LWIP_NETIF_STATUS_CALLBACK 1
+#define LWIP_TIMEVAL_PRIVATE 0
+
+#undef DHCP_DOES_ARP_CHECK
+
+#if 0
+#define LWIP_DEBUG 1
+//#define NETIF_DEBUG LWIP_DBG_ON
+//#define DHCP_DEBUG LWIP_DBG_ON
+//#define ICMP_DEBUG LWIP_DBG_ON
+//#define TCP_DEBUG LWIP_DBG_ON
+//#define TCP_RTO_DEBUG LWIP_DBG_ON
+//#define IP_DEBUG LWIP_DBG_ON
+//#define TCP_CWND_DEBUG LWIP_DBG_ON
+//#define ETHARP_DEBUG LWIP_DBG_ON
+#define PBUF_DEBUG LWIP_DBG_ON
+//#define TCP_INPUT_DEBUG LWIP_DBG_ON
+//#define TCP_OUTPUT_DEBUG LWIP_DBG_ON
+#endif
+
+#define ETH_PAD_SIZE WL_HEADER_SIZE /* size of wifiengine header */
+#define MEM_LIBC_MALLOC 1
+
+#define TCP_MSS 512
+#if BOARD == EVK1101 /* Reduced RAM */
+ #define TCP_SND_BUF (1460*1) /* MTU (1500) - IP - TCP hdrs == 1460 */
+#else
+ #define TCP_SND_BUF 4096
+#endif
+#endif /* __LWIPOPTS_H__ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/main.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/main.c
new file mode 100644
index 0000000..8961e35
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/main.c
@@ -0,0 +1,455 @@
+/*
+ * main.c
+ *
+ * Created on: May 27, 2010
+ * Author: mlf by Metodo2 srl
+ */
+
+//#define _TEST_SPI_
+
+#include <compiler.h>
+#include "board.h"
+#include "gpio.h"
+
+#include <stdint.h>
+#include "wl_api.h"
+#include "wl_cm.h"
+
+#include "lwip/init.h"
+#include "lwip/dhcp.h"
+#include "lwip/dns.h"
+#include "lwip/tcp.h"
+#include "netif/etharp.h"
+#include "netif/wlif.h"
+
+#include "board_init.h"
+#include "trace.h"
+
+#include "timer.h"
+#include "util.h"
+#include "cmd_wl.h"
+#include "ping.h"
+#include "ard_tcp.h"
+#include "spi.h"
+#include "ard_spi.h"
+#include "delay.h"
+#include "tc.h"
+#include "debug.h"
+#include "ard_utils.h"
+#include <lwip_setup.h>
+
+/* FIRMWARE version */
+const char* fwVersion = "1.0.0";
+
+#if BOARD == ARDUINO
+#if !defined(DATAFLASH)
+#include "wl_fw.h"
+
+int fw_download_init(void) { return 0;}
+void fw_download_cb(void* ctx, uint8_t** buf, uint32_t* len)
+{
+ //printk("Fw download not available!\n");
+ /* remember accross different calls */
+ static uint8_t* _fw_buf = (uint8_t*)&fw_buf[0];
+ static uint32_t offset = 0;
+
+ /* when firmware download is completed, this function will be invoked
+ * on additional time with the input value of len set to 0. we can free
+ * the firmware buffer at this time since it's no longer needed.
+ */
+ if (*len == 0) {
+ return;
+ }
+
+ /* decide how much to read. we know *len bytes remains, but we only have
+ * room for SECTOR_SIEZ bytes in our buffer (fw_buf)
+ */
+ uint32_t fw_len = *len;
+
+ *buf = (_fw_buf+offset);
+ *len = fw_len;
+
+ /* we need to know where to start reading upon next call */
+ offset += fw_len;
+
+}
+#else
+#include "fw_download.h"
+#endif
+#endif
+
+struct ctx_server {
+ struct net_cfg net_cfg;
+ uint8_t wl_init_complete;
+};
+
+bool ifStatus = false;
+bool scanNetCompleted = false;
+
+static bool initSpiComplete = false;
+
+// variable used as enable flag for debug prints
+#ifdef _DEBUG_
+uint16_t enableDebug = DEFAULT_INFO_FLAG | INFO_WARN_FLAG;// | INFO_SPI_FLAG;
+uint16_t verboseDebug = 0;
+#else
+uint16_t enableDebug = DEFAULT_INFO_FLAG;
+uint16_t verboseDebug = 0;
+#endif
+
+
+/**
+ *
+ */
+static void
+wl_cm_scan_cb(void* ctx)
+{
+ INFO_INIT("Scan Completed!\n");
+ scanNetCompleted=true;
+}
+
+/**
+ *
+ */
+static void
+wl_cm_conn_cb(struct wl_network_t* net, void* ctx)
+{
+ struct ctx_server* hs = ctx;
+
+ LINK_LED_ON();
+
+ INFO_INIT("Connection cb...\n");
+
+ printk("link up, connected to \"%s\"\n", ssid2str(&net->ssid));
+ if ( hs->net_cfg.dhcp_enabled ) {
+ INFO_INIT("Start DHCP...\n");
+ printk("requesting dhcp ... ");
+ int8_t result = dhcp_start(hs->net_cfg.netif);
+ printk((result==ERR_OK)?"OK\n":"FAILED\n");
+ hs->net_cfg.dhcp_running = 1;
+ }
+ else {
+ netif_set_up(hs->net_cfg.netif);
+ }
+
+ INFO_INIT("Start DNS...\n");
+ dns_init();
+}
+
+
+/**
+ *
+ */
+static void
+wl_cm_disconn_cb(void* ctx)
+{
+ struct ctx_server* hs = ctx;
+
+ LINK_LED_OFF();
+ INFO_INIT("Disconnection cb...\n");
+
+ if (hs->net_cfg.dhcp_running) {
+ printk("link down, release dhcp\n");
+ dhcp_release(hs->net_cfg.netif);
+ dhcp_stop(hs->net_cfg.netif);
+ hs->net_cfg.dhcp_running = 0;
+ } else {
+ printk("link down\n");
+ netif_set_down(hs->net_cfg.netif);
+ }
+
+ set_result_cmd(WL_FAILURE);
+}
+
+#if 0
+static void wl_cm_err_cb(void* ctx)
+{
+ int err = *(int*)ctx;
+ WARN("Error: %d\n", err);
+ set_result_cmd(err);
+}
+#endif
+
+/**
+ *
+ */
+static void
+ip_status_cb(struct netif* netif)
+{
+ INFO_INIT("IP status cb...\n");
+ if (netif_is_up(netif)) {
+ set_result_cmd(WL_SUCCESS);
+ printk("bound to %s\n", ip2str(netif->ip_addr));
+ ifStatus = true;
+ }else{
+ ifStatus = false;
+ closeConnections();
+ WARN("Interface not up!\n");
+ }
+}
+
+
+/**
+ *
+ */
+void
+led_init(void)
+{
+ gpio_enable_gpio_pin(LED0_GPIO);
+ gpio_enable_gpio_pin(LED1_GPIO);
+ gpio_enable_gpio_pin(LED2_GPIO);
+ LINK_LED_OFF();
+ ERROR_LED_OFF();
+ DATA_LED_OFF();
+}
+
+
+void tc_init(void)
+{
+ // The timer/counter instance and channel number are used in several functions.
+ // It's defined as local variable for ease-of-use causes and readability.
+ volatile avr32_tc_t *tc = WIFI_TC;
+
+ // Options for waveform genration.
+ tc_waveform_opt_t waveform_opt =
+ {
+ .channel = WIFI_TC_CHANNEL_ID, // Channel selection.
+
+ .bswtrg = TC_EVT_EFFECT_NOOP, // Software trigger effect on TIOB.
+ .beevt = TC_EVT_EFFECT_NOOP, // External event effect on TIOB.
+ .bcpc = TC_EVT_EFFECT_NOOP, // RC compare effect on TIOB.
+ .bcpb = TC_EVT_EFFECT_NOOP, // RB compare effect on TIOB.
+
+ .aswtrg = TC_EVT_EFFECT_NOOP, // Software trigger effect on TIOA.
+ .aeevt = TC_EVT_EFFECT_NOOP, // External event effect on TIOA.
+ .acpc = TC_EVT_EFFECT_TOGGLE, // RC compare effect on TIOA: toggle.
+ .acpa = TC_EVT_EFFECT_TOGGLE, // RA compare effect on TIOA: toggle (other possibilities are none, set and clear).
+
+ .wavsel = TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER,// Waveform selection: Up mode with automatic trigger(reset) on RC compare.
+ .enetrg = FALSE, // External event trigger enable.
+ .eevt = TC_EXT_EVENT_SEL_TIOB_INPUT, // External event selection.
+ .eevtedg = TC_SEL_NO_EDGE, // External event edge selection.
+ .cpcdis = FALSE, // Counter disable when RC compare.
+ .cpcstop = FALSE, // Counter clock stopped with RC compare.
+
+ .burst = TC_BURST_NOT_GATED, // Burst signal selection.
+ .clki = TC_CLOCK_RISING_EDGE, // Clock inversion.
+ .tcclks = TC_CLOCK_SOURCE_TC2 // Internal source clock 3, connected to fPBA / 2.
+ };
+
+ // Assign I/O to timer/counter channel pin & function.
+ gpio_enable_module_pin(WIFI_TC_CHANNEL_PIN, WIFI_TC_CHANNEL_FUNCTION);
+
+ // Initialize the timer/counter.
+ tc_init_waveform(tc, &waveform_opt); // Initialize the timer/counter waveform.
+
+ // Set the compare triggers.
+ tc_write_ra(tc, WIFI_TC_CHANNEL_ID, 0x01A4); // Set RA value.
+ tc_write_rc(tc, WIFI_TC_CHANNEL_ID, 0x0348); // Set RC value.
+
+ // Start the timer/counter.
+ tc_start(tc, WIFI_TC_CHANNEL_ID);
+
+}
+
+/**
+ *
+ */
+void
+poll(struct ctx_server* hs)
+{
+ /* this will trigger any scheduled timer callbacks */
+ timer_poll();
+
+ /* handle console input */
+ console_poll();
+
+ /* wl api 'tick' */
+ wl_tick(timer_get_ms());
+
+ /* lwip driver poll */
+ wlif_poll(hs->net_cfg.netif);
+
+ if (initSpiComplete) spi_poll(hs->net_cfg.netif);
+
+#ifdef WITH_GUI
+ gui_exec(timer_get_ms());
+#endif
+}
+
+void initShell()
+{
+ /* initialize shell */
+ INFO_INIT("Shell init...\n");
+ console_init();
+ console_add_cmd("scan", cmd_scan, NULL);
+ console_add_cmd("connect", cmd_connect, NULL);
+ console_add_cmd("setkey", cmd_setkey, NULL);
+ console_add_cmd("status", cmd_status, NULL);
+ console_add_cmd("debug", cmd_debug, NULL);
+
+#ifdef ADD_CMDS
+ console_add_cmd("powersave", cmd_power, NULL);
+ console_add_cmd("psconf", cmd_psconf, NULL);
+#endif
+#ifdef PING_CMD
+ console_add_cmd("ping", cmd_ping, NULL);
+#endif
+ console_add_cmd("ttcp", cmd_ttcp, NULL);
+#ifdef WITH_WPA
+ console_add_cmd("wpass", cmd_setpass, NULL);
+ console_add_cmd("dpass", cmd_delpass, NULL);
+#endif
+#ifdef _SPI_STATS_
+ console_add_cmd("spiStat", cmd_statSpi, NULL);
+ console_add_cmd("resetSpiStat", cmd_resetStatSpi, NULL);
+#endif
+#ifdef _DNS_CMD_
+ console_add_cmd("getHost", cmd_gethostbyname, NULL);
+ console_add_cmd("setDNS", cmd_setDnsServer, NULL);
+ console_add_cmd("startTcpSrv", cmd_startTcpSrv, NULL);
+#endif
+}
+
+/**
+ *
+ */
+void
+wl_init_complete_cb(void* ctx)
+{
+ struct ctx_server *hs = ctx;
+ struct ip_addr ipaddr, netmask, gw;
+ wl_err_t wl_status;
+
+ IP4_ADDR(&gw, 0,0,0,0);
+ IP4_ADDR(&ipaddr, 0,0,0,0);
+ IP4_ADDR(&netmask, 0,0,0,0);
+
+ /* default is dhcp enabled */
+ hs->net_cfg.dhcp_enabled = 1;
+ start_ip_stack(&hs->net_cfg,
+ ipaddr,
+ netmask,
+ gw);
+ netif_set_status_callback(hs->net_cfg.netif, ip_status_cb);
+
+ INFO_INIT("Starting CM...\n");
+ /* start connection manager */
+ wl_status = wl_cm_init(wl_cm_scan_cb, wl_cm_conn_cb, wl_cm_disconn_cb, hs);
+ ASSERT(wl_status == WL_SUCCESS, "failed to init wl conn mgr");
+ wl_cm_start();
+
+ wl_scan();
+
+ if (initSpi()){
+ WARN("Spi not initialized\n");
+ }else
+ {
+ initSpiComplete = true;
+ AVAIL_FOR_SPI();
+ }
+
+ hs->wl_init_complete = 1;
+}
+
+void startup_init(void)
+{
+ INIT_SIGNAL_FOR_SPI();
+ BUSY_FOR_SPI();
+
+ // if DEBUG enabled use DEB_PIN_GPIO for debug purposes
+ DEB_PIN_ENA();
+ DEB_PIN_UP();
+}
+
+/**
+ *
+ */
+int
+main(void)
+{
+ wl_err_t wl_status;
+ int status;
+ struct ctx_server *hs;
+ enum wl_host_attention_mode mode;
+
+ startup_init();
+
+ board_init();
+
+ led_init();
+
+ tc_init();
+
+ initShell();
+
+ delay_init(FOSC0);
+
+#ifdef _TEST_SPI_
+ for (;;)
+ {
+ /* handle console input */
+
+ console_poll();
+
+ spi_poll(NULL);
+
+ }
+#else
+ printk("Arduino Wifi Startup... [%s]\n", __TIMESTAMP__);
+
+ size_t size_ctx_server = sizeof(struct ctx_server);
+ hs = calloc(1, size_ctx_server);
+ ASSERT(hs, "out of memory");
+
+ size_t size_netif = sizeof(struct netif);
+ hs->net_cfg.netif = calloc(1, size_netif);
+ ASSERT(hs->net_cfg.netif, "out of memory");
+
+ INFO_INIT("hs:%p size:0x%x netif:%p size:0x%x\n", hs, size_ctx_server,
+ hs->net_cfg.netif, size_netif);
+
+ timer_init(NULL, NULL);
+ lwip_init();
+
+ status = fw_download_init();
+ ASSERT(status == 0, "failed to prepare for firmware download\n");
+
+ wl_status = wl_transport_init(fw_read_cb, hs, &mode);
+ if (wl_status != WL_SUCCESS)
+ goto err;
+ INFO_INIT("Mode: 0x%x\n", mode);
+ wl_status = wl_init(hs, wl_init_complete_cb, mode);
+ if (wl_status != WL_SUCCESS)
+ goto err;
+
+ /* start main loop */
+ for (;;)
+ poll(hs);
+
+
+err:
+ /* show error message on console and display if wlan initialization fails */
+
+#define WL_CARD_FAILURE_STR "Could not detect wl device, aborting\n"
+#define WL_FIRMWARE_INVALID_STR "Invalid firmware data, aborting\n"
+#define WL_OTHER_FAILURE_STR "Failed to start wl initialization\n"
+
+ switch (wl_status) {
+ case WL_CARD_FAILURE:
+ printk(WL_CARD_FAILURE_STR);
+ break;
+
+ case WL_FIRMWARE_INVALID:
+ printk(WL_FIRMWARE_INVALID_STR);
+ break;
+
+ default:
+ printk(WL_OTHER_FAILURE_STR);
+ break;
+ }
+ for (;;) {
+ timer_poll();
+ }
+#endif
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/nvram.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/nvram.c
new file mode 100644
index 0000000..2c61c5f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/nvram.c
@@ -0,0 +1,153 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include <string.h>
+
+#include "compiler.h"
+#include "preprocessor.h"
+#include "board.h"
+#include "power_clocks_lib.h"
+#include "gpio.h"
+#include "spi.h"
+#include "conf_at45dbx.h"
+#include "at45dbx.h"
+#include <board_init.h>
+#include <nvram.h>
+
+
+static struct nvram {
+ uint8_t read;
+ void *data;
+ uint32_t len;
+ uint16_t off;
+} PRIV;
+
+int nvram_init(void)
+{
+ spi_options_t spiOptions = {
+ .reg = AT45DBX_SPI_FIRST_NPCS,
+ .baudrate = AT45DBX_SPI_MASTER_SPEED,
+ .bits = AT45DBX_SPI_BITS,
+ .spck_delay = 0,
+ .trans_delay = 0,
+ .stay_act = 1,
+ .spi_mode = 0,
+ .modfdis = 1
+ };
+
+ at45dbx_init(spiOptions, FPBA_HZ);
+ return 0;
+}
+
+
+/**
+ * Invoked by at45dbx driver
+ *
+ */
+void at45dbx_read_multiple_sector_callback(const void *psector)
+{
+ struct nvram *priv = &PRIV;
+ const uint8_t *buf = psector;
+
+ if (!priv->read)
+ return;
+
+ memcpy(priv->data, buf + priv->off, priv->len);
+}
+
+
+/**
+ * Invoked by at45dbx driver
+ *
+ */
+void at45dbx_write_multiple_sector_callback(void *psector)
+{
+ struct nvram *priv = &PRIV;
+ uint8_t *buf = psector;
+ memcpy(buf + priv->off, priv->data, priv->len);
+}
+
+
+/**
+ * Write/read any number bytes into any offset of nor flash by taking care
+ * of cases where the length is not aligned to the sector size or where
+ * the addr is not aligned to the sector offsets.
+ *
+ */
+static int nvram_rw(uint32_t addr, void *data, uint16_t len, int write)
+{
+ struct nvram *priv = &PRIV;
+ priv->read = write ? 0 : 1;
+
+ while (len) {
+ uint32_t sector = addr / AT45DBX_SECTOR_SIZE;
+ priv->data = data;
+ priv->off = addr % AT45DBX_SECTOR_SIZE;
+ priv->len = AT45DBX_SECTOR_SIZE;
+
+ if (len < AT45DBX_SECTOR_SIZE)
+ priv->len = len;
+
+ if (priv->len > AT45DBX_SECTOR_SIZE - priv->off)
+ priv->len = AT45DBX_SECTOR_SIZE - priv->off;
+
+ at45dbx_read_open(sector);
+ at45dbx_read_multiple_sector(1);
+ at45dbx_read_close();
+
+ if (write) {
+ at45dbx_write_open(sector);
+ at45dbx_write_multiple_sector(1);
+ at45dbx_write_close();
+ }
+
+ data += priv->len;
+ len -= priv->len;
+ addr += priv->len;
+ }
+
+ return 0;
+}
+
+/**
+ * Write any number bytes into any offset of nor flash.
+ *
+ */
+int nvram_write(uint32_t addr, const void *data, uint32_t len)
+{
+ return nvram_rw(addr, (void *) data, len, 1);
+}
+
+
+/**
+ * Read any number bytes into any offset of nor flash.
+ *
+ */
+int nvram_read(uint32_t addr, void *data, uint32_t len)
+{
+ return nvram_rw(addr, data, len, 0);
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/nvram.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/nvram.h
new file mode 100644
index 0000000..8882749
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/nvram.h
@@ -0,0 +1,10 @@
+#ifndef NVRAM_H
+#define NVRAM_H
+
+#include <stdint.h>
+
+int nvram_init(void);
+int nvram_read(uint32_t addr, void *data, uint32_t len);
+int nvram_write(uint32_t addr, const void *data, uint32_t len);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/owl_os.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/owl_os.c
new file mode 100644
index 0000000..d17d8ce
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/owl_os.c
@@ -0,0 +1,140 @@
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <wl_os.h>
+
+void *owl_os_alloc(size_t size)
+{
+ return malloc(size);
+}
+
+void *owl_os_realloc(void *ptr, size_t size)
+{
+ return realloc(ptr, size);
+}
+
+void owl_os_free(void *p)
+{
+ free(p);
+}
+
+void *owl_os_memcpy(void *dst, const void *src, size_t n)
+{
+ return memcpy(dst, src, n);
+}
+
+void *owl_os_memset(void *s, int c, size_t n)
+{
+ return memset(s, c, n);
+}
+
+void *owl_os_memmove(void *dst, const void *src, size_t n)
+{
+ return memmove(dst, src, n);
+}
+
+size_t owl_os_strlen(char *s)
+{
+ return strlen(s);
+}
+
+char *owl_os_strncpy(char *dst, const char *src, size_t n)
+{
+ return strncpy(dst, src, n);
+}
+
+int owl_os_strncmp(const char *s1, const char *s2, size_t n)
+{
+ return strncmp(s1, s2, n);
+}
+
+int owl_os_strcmp(const char *s1, const char *s2)
+{
+ return strcmp(s1, s2);
+}
+
+char *owl_os_strcpy(char *dst, const char *src)
+{
+ return strcpy(dst, src);
+}
+
+char *owl_os_strdup(const char *s)
+{
+ return strdup(s);
+}
+
+char *owl_os_strndup(const char *s, size_t n)
+{
+ return strndup(s, n);
+}
+
+int owl_os_memcmp(const void *s1, const void *s2, size_t n)
+{
+ return memcmp(s1, s2, n);
+}
+
+long int owl_os_strtol(const char *nptr, char **endptr, int base)
+{
+ return strtol(nptr, endptr, base);
+}
+
+char *owl_os_strchr(const char *s, int c)
+{
+ return strchr(s, c);
+}
+
+char *owl_os_strrchr(const char *s, int c)
+{
+ return strrchr(s, c);
+}
+
+int owl_os_strcasecmp(const char *s1, const char *s2)
+{
+ return strcasecmp(s1, s2);
+}
+
+char *owl_os_strstr(const char *haystack, const char *needle)
+{
+ return strstr(haystack, needle);
+}
+
+int owl_os_snprintf(char *str, size_t size, const char *format, ...)
+{
+ int ret;
+ va_list ap;
+ va_start(ap, format);
+ ret = vsniprintf(str, size, format, ap);
+ va_end(ap);
+ return ret;
+}
+
+/* for debugging only, never called if wl_api was built without debug */
+#ifdef CONFIG_OWL
+#include "owl_env.h"
+int owl_os_printf(const char *fmt, ...)
+{
+ char *str = NULL;
+ va_list args;
+ int len;
+ char *iter;
+
+ va_start(args, fmt);
+
+ if ((str = malloc(160)) == NULL)
+ return -1;
+
+ if ((len = vsniprintf(str, 160, fmt, args)) < 0) {
+ free(str);
+ return -1;
+ }
+
+ iter = str;
+ while (*iter)
+ owl_putc(*iter++);
+
+ free(str);
+ return len;
+}
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ping.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/ping.c
new file mode 100644
index 0000000..aba97db
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ping.c
@@ -0,0 +1,340 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is derived from a part of the lwIP TCP/IP stack.
+ *
+ */
+#ifdef PING_CMD
+#include "lwip/opt.h"
+
+#include "lwip/mem.h"
+#include "lwip/raw.h"
+#include "lwip/icmp.h"
+#include "lwip/netif.h"
+#include "lwip/sys.h"
+#include "lwip/sockets.h"
+#include "lwip/inet.h"
+#include "lwip/inet_chksum.h"
+
+#include "ping.h"
+#include "timer.h"
+#include "util.h"
+
+#include "getopt.h"
+
+#define PING_ID 0xAFAF
+
+struct ping_info_t {
+ struct ip_addr destination;
+ uint32_t deadline; /* -w (in seconds) */
+ uint32_t interval; /* -i (in ms) */
+ uint32_t timeout; /* ms */
+ uint32_t data_size; /* -s */
+ uint32_t count; /* -c, 0 means continous ping */
+ uint32_t size;
+ uint32_t first_tx_tm;
+ uint32_t last_tx_tm;
+ uint32_t last_rx_tm;
+ uint32_t num_tx;
+ uint32_t num_rx;
+ uint32_t flags;
+ uint16_t seq_num;
+ Bool quiet; /* -q */
+ ping_complete_cb_t complete_cb;
+ void *ctx;
+#define PING_REPLY (1 << 0)
+};
+
+static struct ping_info_t INFO;
+
+/** Prepare a echo ICMP request */
+static void ping_prepare_echo(struct icmp_echo_hdr *iecho,
+ struct ping_info_t* ping_info)
+{
+ int i;
+
+ ICMPH_TYPE_SET(iecho,ICMP_ECHO);
+ ICMPH_CODE_SET(iecho, 0);
+ iecho->chksum = 0;
+ iecho->id = PING_ID;
+ iecho->seqno = htons(++ping_info->seq_num);
+ iecho->chksum = 0;
+
+ /* fill the additional data buffer with some data */
+ for(i = 0; i < ping_info->data_size; i++) {
+ ((char*)iecho)[sizeof(struct icmp_echo_hdr) + i] = i;
+ }
+
+ iecho->chksum = inet_chksum(iecho, ping_info->size);
+}
+
+/* Ping using the raw ip */
+static u8_t ping_recv(void *arg, struct raw_pcb *pcb, struct pbuf *p,
+ struct ip_addr *addr)
+{
+ struct icmp_echo_hdr *iecho;
+ struct ip_hdr *ip = p->payload;
+ struct ping_info_t* ping_info = (struct ping_info_t*) arg;
+ uint32_t us;
+
+ if (pbuf_header( p, -PBUF_IP_HLEN)==0) {
+ iecho = p->payload;
+
+ if ((iecho->id == PING_ID) &&
+ (iecho->seqno == htons(ping_info->seq_num))) {
+ ping_info->last_rx_tm = timer_get_ms();
+ ping_info->num_rx++;
+ us = 1000 *
+ (ping_info->last_rx_tm - ping_info->last_tx_tm);
+
+ if (!ping_info->quiet)
+ printk("%d bytes from %s: icmp_seq=%d ttl=%d " \
+ "time=%d.%03d ms\n",
+ p->tot_len, ip2str(ip->src),
+ iecho->seqno,
+ IPH_TTL(ip),
+ us / 1000, us % 1000);
+
+ /* do some ping result processing */
+ ping_info->flags |= PING_REPLY;
+ }
+ }
+
+ pbuf_free(p);
+ return 1; /* eat the event */
+}
+
+static void ping_send(struct raw_pcb *raw, struct ping_info_t* ping_info)
+{
+ struct pbuf *p;
+ struct icmp_echo_hdr *iecho;
+
+ if (!(p = pbuf_alloc(PBUF_IP, ping_info->size, PBUF_RAM))) {
+ return;
+ }
+ if ((p->len == p->tot_len) && (p->next == NULL)) {
+ iecho = p->payload;
+
+ ping_prepare_echo(iecho, ping_info);
+ raw_sendto(raw, p, &ping_info->destination);
+
+ if (!ping_info->first_tx_tm)
+ ping_info->first_tx_tm = timer_get_ms();
+ ping_info->last_tx_tm = timer_get_ms();
+ ping_info->num_tx++;
+ }
+ pbuf_free(p);
+}
+
+void ping_set_callback(ping_complete_cb_t cb, void *ctx) {
+ INFO.complete_cb = cb;
+ INFO.ctx = ctx;
+}
+
+void ping_stop(uint32_t *tx_cnt, uint32_t *rx_cnt) {
+ struct ping_info_t *ping_info = &INFO;
+
+ *tx_cnt = ping_info->num_tx;
+ *rx_cnt = ping_info->num_rx;
+ ping_info->count = ping_info->num_tx;
+ if ( 0 == ping_info->count ) {
+ ping_info->count = 1;
+ }
+}
+
+static int init_ping_info(int argc, char* argv[], struct ping_info_t* ping_info)
+{
+ int c;
+ ping_complete_cb_t cb;
+ void *ctx;
+
+ cb = ping_info->complete_cb;
+ ctx = ping_info->ctx;
+ memset(ping_info, 0, sizeof(struct ping_info_t));
+ ping_info->complete_cb = cb;
+ ping_info->ctx = ctx;
+
+ ping_info->deadline = 0;
+ ping_info->interval = 1000;
+ ping_info->timeout = 3000;
+ ping_info->data_size = 32;
+ ping_info->count = 3;
+ ping_info->destination =
+ netif_default ? netif_default->gw : ip_addr_any;
+
+ optind = 1;
+ while ((c = getopt(argc, argv, "c:i:s:w:q")) != -1) {
+ switch (c) {
+ case 'c':
+ ping_info->count = atoi(optarg);
+ break;
+
+ case 'i':
+ ping_info->interval = atoi(optarg);
+ break;
+
+ case 's':
+ ping_info->data_size = atoi(optarg);
+ break;
+
+ case 'q':
+ ping_info->quiet = TRUE;
+ break;
+
+ case 'w':
+ ping_info->deadline = atoi(optarg);
+ break;
+ }
+ }
+
+ ping_info->size = sizeof(struct icmp_echo_hdr) + ping_info->data_size;
+
+ if (optind >= argc)
+ return -1;
+
+ ping_info->destination = str2ip(argv[optind]);
+ if (!ping_info->destination.addr)
+ return -1;
+
+
+ ping_info->last_rx_tm = timer_get_ms();
+
+ return 0;
+}
+
+static void print_stats(struct ping_info_t* ping_info)
+{
+ printk("\n--- %s ping statistics ---\n",
+ ip2str(ping_info->destination));
+ printk("%d packets transmitted, %d received, %d%% packet loss, "\
+ "time %dms\n\n",
+ ping_info->num_tx, ping_info->num_rx,
+ 100 * (ping_info->num_tx - ping_info->num_rx) /
+ ping_info->num_tx,
+ timer_get_ms() - ping_info->first_tx_tm);
+}
+
+static void ping_finalize(struct ping_info_t* ping_info) {
+ print_stats(ping_info);
+ if (ping_info->complete_cb) {
+ ping_info->complete_cb(ping_info->num_tx, ping_info->num_rx, ping_info->ctx);
+ }
+}
+
+cmd_state_t cmd_ping(int argc, char* argv[], void* ctx)
+{
+ static enum {
+ INIT,
+ PING,
+ WAIT_REPLY
+ } state = INIT;
+
+ struct ping_info_t *ping_info = &INFO;
+ static struct raw_pcb *pcb;
+
+ switch (state) {
+ case INIT:
+ if (init_ping_info(argc, argv, ping_info) != 0) {
+ printk("Usage: ping [-c count] [-i interval] " \
+ "[-s packetsize]\n " \
+ "[-w deadline] [-q] destination\n");
+ return CMD_DONE;
+ }
+
+ if (!(pcb = raw_new(IP_PROTO_ICMP))) {
+ printk("could not allocate pcb\n");
+ state = INIT;
+ return CMD_DONE;
+ }
+ raw_recv(pcb, ping_recv, ping_info);
+ raw_bind(pcb, IP_ADDR_ANY);
+
+ printk("PING %s %d(%d) bytes of data\n",
+ ip2str(ping_info->destination),
+ ping_info->data_size,
+ ping_info->size);
+ state = PING;
+ /* fall through */
+
+ case PING:
+ if (!netif_is_up(netif_default)) {
+ printk("netif is down\n");
+ raw_remove(pcb);
+ state = INIT;
+ return CMD_DONE;
+ }
+
+ if (ping_info->count && ping_info->num_tx == ping_info->count) {
+ ping_finalize(ping_info);
+ raw_remove(pcb);
+ state = INIT;
+ return CMD_DONE;
+ }
+
+
+ if (timer_get_ms() < ping_info->last_rx_tm + ping_info->interval) {
+ return CMD_INPROGRESS;
+ }
+ ping_send(pcb, ping_info);
+
+ state = WAIT_REPLY;
+ return CMD_INPROGRESS;
+
+ case WAIT_REPLY:
+ if (ping_info->flags & PING_REPLY) {
+ ping_info->flags &= (~PING_REPLY);
+ state = PING;
+ return CMD_INPROGRESS;
+ }
+
+ if (timer_get_ms() >
+ ping_info->last_tx_tm + ping_info->timeout) {
+ if (!ping_info->quiet)
+ printk("timeout from %s\n",
+ ip2str(ping_info->destination));
+ state = PING;
+ return CMD_INPROGRESS;
+ }
+
+ if (ping_info->deadline &&
+ timer_get_ms() >
+ ping_info->first_tx_tm + ping_info->deadline * 1000) {
+ ping_finalize(ping_info);
+ raw_remove(pcb);
+ state = INIT;
+ return CMD_DONE;
+ }
+
+ return CMD_INPROGRESS;
+ }
+
+ /* unreachable */
+ Assert(0);
+ return CMD_DONE;
+}
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/ping.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/ping.h
new file mode 100644
index 0000000..47d409d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/ping.h
@@ -0,0 +1,45 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*
+ * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 file is derived from a part of the lwIP TCP/IP stack.
+ *
+ */
+#ifndef PING_H
+#define PING_H
+
+#include "console.h"
+
+typedef void (*ping_complete_cb_t)(uint32_t tx_pkt_cnt, uint32_t rx_pkt_cnt, void *ctx);
+
+void ping_set_callback(ping_complete_cb_t cb, void *ctx);
+
+void ping_stop(uint32_t *tx_cnt, uint32_t *rx_cnt);
+
+cmd_state_t cmd_ping(int argc, char* argv[], void* ctx);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/printf-stdarg.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/printf-stdarg.c
new file mode 100644
index 0000000..92eb217
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/printf-stdarg.c
@@ -0,0 +1,323 @@
+/* This source file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief sprintf functions to replace newlib for AVR32 UC3.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (C) 2006-2008, Atmel Corporation 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. The name of ATMEL may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+/*
+ Copyright 2001, 2002 Georges Menie (www.menie.org)
+ stdarg version contributed by Christian Ettinger
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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
+*/
+
+/*
+ putchar is the only external dependency for this file,
+ if you have a working putchar, leave it commented out.
+ If not, uncomment the define below and
+ replace outbyte(c) by your own function call.
+
+*/
+
+
+#include <stdarg.h>
+
+static void printchar(char **str, int c)
+{
+ extern int board_putchar(char c);
+
+ if (str) {
+ **str = c;
+ ++(*str);
+ }
+ else (void) board_putchar(c);
+}
+
+#define PAD_RIGHT 1
+#define PAD_ZERO 2
+
+static int prints(char **out, const char *string, int width, int pad)
+{
+ register int pc = 0, padchar = ' ';
+
+ if (width > 0) {
+ register int len = 0;
+ register const char *ptr;
+ for (ptr = string; *ptr; ++ptr) ++len;
+ if (len >= width) width = 0;
+ else width -= len;
+ if (pad & PAD_ZERO) padchar = '0';
+ }
+ if (!(pad & PAD_RIGHT)) {
+ for ( ; width > 0; --width) {
+ printchar (out, padchar);
+ ++pc;
+ }
+ }
+ for ( ; *string ; ++string) {
+ printchar (out, *string);
+ ++pc;
+ }
+ for ( ; width > 0; --width) {
+ printchar (out, padchar);
+ ++pc;
+ }
+
+ return pc;
+}
+
+/* the following should be enough for 32 bit int */
+#define PRINT_BUF_LEN 12
+
+static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)
+{
+ char print_buf[PRINT_BUF_LEN];
+ register char *s;
+ register int t, neg = 0, pc = 0;
+ register unsigned int u = i;
+
+ if (i == 0) {
+ print_buf[0] = '0';
+ print_buf[1] = '\0';
+ return prints (out, print_buf, width, pad);
+ }
+
+ if (sg && b == 10 && i < 0) {
+ neg = 1;
+ u = -i;
+ }
+
+ s = print_buf + PRINT_BUF_LEN-1;
+ *s = '\0';
+
+ while (u) {
+ t = u % b;
+ if( t >= 10 )
+ t += letbase - '0' - 10;
+ *--s = t + '0';
+ u /= b;
+ }
+
+ if (neg) {
+ if( width && (pad & PAD_ZERO) ) {
+ printchar (out, '-');
+ ++pc;
+ --width;
+ }
+ else {
+ *--s = '-';
+ }
+ }
+
+ return pc + prints (out, s, width, pad);
+}
+
+#if 0
+int fprintf(__FILE *stream, const char *format, ...)
+{
+return 0;
+}
+#endif
+
+int printk_va(char **out, const char *format, va_list args )
+{
+ register int width, pad;
+ register int pc = 0;
+ char scr[2];
+
+ for (; *format != 0; ++format) {
+ if (*format == '%') {
+ ++format;
+ width = pad = 0;
+ if (*format == '\0') break;
+ if (*format == '%') goto out;
+ if (*format == '-') {
+ ++format;
+ pad = PAD_RIGHT;
+ }
+ while (*format == '0') {
+ ++format;
+ pad |= PAD_ZERO;
+ }
+ for ( ; *format >= '0' && *format <= '9'; ++format) {
+ width *= 10;
+ width += *format - '0';
+ }
+ if( *format == 's' ) {
+ register char *s = (char *)va_arg( args, int );
+ pc += prints (out, s?s:"(null)", width, pad);
+ continue;
+ }
+ if( *format == 'd' ) {
+ pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'p' ) {
+ pad = 8;
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'x' ) {
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'X' ) {
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
+ continue;
+ }
+ if( *format == 'u' ) {
+ pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'c' ) {
+ /* char are converted to int then pushed on the stack */
+ scr[0] = (char)va_arg( args, int );
+ scr[1] = '\0';
+ pc += prints (out, scr, width, pad);
+ continue;
+ }
+ }
+ else {
+ out:
+ printchar (out, *format);
+ ++pc;
+ }
+ }
+ if (out) **out = '\0';
+ va_end( args );
+ return pc;
+}
+
+int printk(const char *format, ...)
+{
+ va_list args;
+
+ va_start( args, format );
+ return printk_va( 0, format, args );
+}
+
+#ifndef __ARM__
+int sprintf(char *out, const char *format, ...)
+{
+ va_list args;
+
+ va_start( args, format );
+ return printk_va( &out, format, args );
+}
+#endif
+
+#ifdef TEST_PRINTF
+int main(void)
+{
+ char *ptr = "Hello world!";
+ char *np = 0;
+ int i = 5;
+ unsigned int bs = sizeof(int)*8;
+ int mi;
+ char buf[80];
+
+ mi = (1 << (bs-1)) + 1;
+ printf("%s\n", ptr);
+ printf("printf test\n");
+ printf("%s is null pointer\n", np);
+ printf("%d = 5\n", i);
+ printf("%d = - max int\n", mi);
+ printf("char %c = 'a'\n", 'a');
+ printf("hex %x = ff\n", 0xff);
+ printf("hex %02x = 00\n", 0);
+ printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);
+ printf("%d %s(s)%", 0, "message");
+ printf("\n");
+ printf("%d %s(s) with %%\n", 0, "message");
+ sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);
+ sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);
+ sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);
+ sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);
+ sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);
+ sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);
+ sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);
+ sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);
+
+ return 0;
+}
+
+/*
+ * if you compile this file with
+ * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c
+ * you will get a normal warning:
+ * printf.c:214: warning: spurious trailing `%' in format
+ * this line is testing an invalid % at the end of the format string.
+ *
+ * this should display (on 32bit int machine) :
+ *
+ * Hello world!
+ * printf test
+ * (null) is null pointer
+ * 5 = 5
+ * -2147483647 = - max int
+ * char a = 'a'
+ * hex ff = ff
+ * hex 00 = 00
+ * signed -3 = unsigned 4294967293 = hex fffffffd
+ * 0 message(s)
+ * 0 message(s) with %
+ * justif: "left "
+ * justif: " right"
+ * 3: 0003 zero padded
+ * 3: 3 left justif.
+ * 3: 3 right justif.
+ * -3: -003 zero padded
+ * -3: -3 left justif.
+ * -3: -3 right justif.
+ */
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/printf-stdarg.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/printf-stdarg.h
new file mode 100644
index 0000000..bce38b6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/printf-stdarg.h
@@ -0,0 +1,34 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef PRINTF_STDARG_H
+#define PRINTF_STDARG_H
+#include <stdarg.h>
+
+int printk(const char *format, ...);
+int printk_va(char **out, const char *format, va_list args );
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/timer.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/timer.c
new file mode 100644
index 0000000..6ffba63
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/timer.c
@@ -0,0 +1,232 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+#include <stdint.h>
+#include <rtc.h>
+#include <intc.h>
+#include <timer.h>
+#ifdef FREERTOS_USED
+#include "FreeRTOS.h"
+#include "task.h"
+#endif
+
+#define TIMER_HZ 4
+
+
+struct timeout_t {
+ U32 tick;
+ U32 expire_at_tick;
+ Bool expired;
+ U8 type;
+ void (*cb)(void* ctx);
+ void* ctx;
+};
+
+struct timer_t {
+ volatile U32 tick;
+ struct timeout_t timeout[10];
+ void (*tick_isr) (void* ctx);
+ const U32 MS_PER_TICK;
+ void *ctx;
+};
+
+#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
+
+
+static struct timer_t TIMER = {
+ .tick = 0,
+#ifdef FREERTOS_USED
+ .MS_PER_TICK = 1 / portTICK_RATE_MS,
+#else
+ .MS_PER_TICK = TIMER_HZ,
+#endif
+ .timeout = { { 0 } },
+};
+
+#ifdef FREERTOS_USED /* Use TICK-hook */
+
+void vApplicationTickHook( void ) {
+ struct timer_t* priv = &TIMER;
+ priv->tick++;
+ if(priv->tick_isr) {
+ priv->tick_isr(priv->ctx);
+ }
+}
+
+#else /* Use interrupt directly */
+
+static __attribute__((__interrupt__)) void irq_handler(void)
+{
+ volatile avr32_rtc_t *rtc = &AVR32_RTC;
+ struct timer_t* priv = &TIMER;
+ priv->tick++;
+
+ if(priv->tick_isr)
+ priv->tick_isr(priv->ctx);
+
+ rtc->icr = AVR32_RTC_ICR_TOPI_MASK;
+ rtc->isr;
+}
+
+#endif
+
+void timer_init(void (*tick_isr) (void* ctx), void* ctx)
+{
+ struct timer_t* priv = &TIMER;
+ uint8_t id;
+
+#ifndef FREERTOS_USED
+ INTC_register_interrupt(&irq_handler, AVR32_RTC_IRQ, AVR32_INTC_INT0);
+ if (!rtc_init(&AVR32_RTC, RTC_OSC_RC, 0))
+ Assert(0);
+
+ rtc_set_top_value(&AVR32_RTC, 115 * priv->MS_PER_TICK / 2);
+ rtc_enable_interrupt(&AVR32_RTC);
+ rtc_enable(&AVR32_RTC);
+#else
+ /* With FreeRTOS we use the OS tick instead */
+#endif
+ priv->tick_isr = tick_isr;
+ priv->ctx = ctx;
+
+ for (id = 0; id < ARRAY_SIZE(priv->timeout); id++)
+ priv->timeout[id].expired = TRUE;
+}
+
+
+U32 timer_get_ms(void)
+{
+ struct timer_t* priv = &TIMER;
+ return priv->tick * priv->MS_PER_TICK;
+}
+
+void timer_delay(U32 ms)
+{
+ struct timer_t* priv = &TIMER;
+ U32 expire_at_tick = priv->tick + ms / priv->MS_PER_TICK;
+ while (priv->tick < expire_at_tick);
+}
+
+/**
+ * Called from application main loop to invoke any scheduled timeout cbs.
+ * This function might be called as often as possible rather than at each tick
+ * to support the timeout value '0', e.g a timeout within less than one tick.
+ *
+ */
+void timer_poll(void)
+{
+ struct timer_t* priv = &TIMER;
+ U8 i;
+
+ for (i = 0; i < ARRAY_SIZE(priv->timeout); i++) {
+ struct timeout_t* tmo = &priv->timeout[i];
+ if (tmo->expired)
+ continue;
+
+ if (tmo->expire_at_tick > priv->tick)
+ continue;
+
+ if (tmo->cb)
+ tmo->cb(tmo->ctx);
+
+ if (tmo->type == TIMEOUT_PERIODIC)
+ tmo->expire_at_tick = priv->tick + tmo->tick;
+ else
+ tmo->expired = TRUE;
+ }
+}
+
+static U32 timer_sched_timeout(U32 ms, U8 type)
+{
+ struct timer_t* priv = &TIMER;
+ struct timeout_t* tmo;
+ U8 id;
+
+ Assert(type == TIMEOUT_ONESHOT || type == TIMEOUT_PERIODIC);
+
+ for (id = 0; id < ARRAY_SIZE(priv->timeout); id++) {
+ tmo = &priv->timeout[id];
+ if (tmo->expired)
+ break;
+ }
+
+ Assert(id != ARRAY_SIZE(priv->timeout));
+
+ tmo->tick = ms / priv->MS_PER_TICK;
+ tmo->expire_at_tick = priv->tick + tmo->tick;
+ tmo->type = type;
+ tmo->expired = FALSE;
+ return id;
+}
+
+U32 timer_sched_timeout_cb(U32 ms, U8 type, void (*cb)(void *ctx), void* ctx)
+{
+ struct timer_t* priv = &TIMER;
+ struct timeout_t* tmo;
+ U8 id;
+
+ Assert(cb);
+ id = timer_sched_timeout(ms, type);
+ tmo = &priv->timeout[id];
+
+ tmo->cb = cb;
+ tmo->ctx = ctx;
+ return id;
+}
+
+
+U32 timer_mod(U32 id, U32 ms, U8 type, void (*cb)(void *ctx), void* ctx)
+{
+ struct timer_t* priv = &TIMER;
+
+ if (id != INVALID_TIMER_ID && !priv->timeout[id].expired)
+ timer_cancel_timeout(id);
+
+ return timer_sched_timeout_cb(ms, type, cb, ctx);
+}
+
+void timer_cancel_timeout(U32 id)
+{
+ struct timer_t* priv = &TIMER;
+ struct timeout_t* tmo;
+
+ tmo = &priv->timeout[id];
+ tmo->expired = TRUE;
+}
+
+int timer_interval_passed(U32 old, U32 new, U32 diff) {
+ /* New did not wrap */
+ if (new > old && new - old > diff) {
+ return 1;
+ }
+ /* New did wrap */
+ else if (new < old && ( ( (U32)(-1) - old ) + new ) > diff ) {
+ return 1;
+ }
+ return 0;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/timer.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/timer.h
new file mode 100644
index 0000000..6614fbc
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/timer.h
@@ -0,0 +1,51 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef TIMER_H
+#define TIMER_H
+#include <stdint.h>
+
+enum {
+ TIMEOUT_ONESHOT,
+ TIMEOUT_PERIODIC
+};
+
+#define INVALID_TIMER_ID 0xFFFFFFFF
+
+/* Handle timer overflows. Return 1 if the interval has passed. */
+int timer_interval_passed(uint32_t old, uint32_t new, uint32_t diff);
+
+void timer_tick();
+void timer_init(void (*tick_isr) (void* ctx), void* ctx);
+void timer_poll(void);
+void timer_delay(uint32_t ms);
+uint32_t timer_sched_timeout_cb(uint32_t ms, uint8_t type, void (*cb)(void *ctx), void* ctx);
+uint32_t timer_mod(uint32_t id, uint32_t ms, uint8_t type, void (*cb)(void *ctx), void* ctx);
+void timer_cancel_timeout(uint32_t id);
+uint32_t timer_get_ms(void);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/top_defs.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/top_defs.h
new file mode 100644
index 0000000..09f7c3e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/top_defs.h
@@ -0,0 +1,120 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef _TOP_DEFS_H
+#define _TOP_DEFS_H
+
+#include <stdlib.h>
+#include <stdint.h>
+
+#define ARRAY_SIZE(a) sizeof(a) / sizeof((a)[0])
+
+#ifndef UNREF
+#define UNREF(x) x = x
+#endif
+
+#if __GNUC__
+#ifdef __KERNEL__
+#define WEAK_DECL
+#else
+#define WEAK_DECL __attribute__ ((__weak__))
+#endif
+#define PACKED __attribute__ ((__packed__))
+#define USED __attribute__ ((__used__))
+#else
+ #error "Unsupported compiler"
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+
+#if 0
+#include <stdio.h>
+/*
+ * These functions should _NOT_ be used, call iprintf, sniprintf, iscanf, siscanf etc
+ * instead. Those functions do not have support for floating point formats.
+ * Not using these functions saves 27kB of code.
+ */
+extern int printf(const char *format, ...) __attribute__ ((deprecated));
+extern int sprintf(char *str, const char *format, ...) __attribute__ ((deprecated));
+extern int snprintf(char *str, size_t size, const char *format, ...) __attribute__ ((deprecated));
+
+int vprintf(const char *format, va_list ap) __attribute__ ((deprecated));
+int vfprintf(FILE *stream, const char *format, va_list ap) __attribute__ ((deprecated));
+int vsprintf(char *str, const char *format, va_list ap) __attribute__ ((deprecated));
+int vsnprintf(char *str, size_t size, const char *format, va_list ap) __attribute__ ((deprecated));
+
+int scanf(const char *format, ...) __attribute__ ((deprecated));
+int fscanf(FILE *stream, const char *format, ...) __attribute__ ((deprecated));
+int sscanf(const char *str, const char *format, ...) __attribute__ ((deprecated));
+
+int vscanf(const char *format, va_list ap) __attribute__ ((deprecated));
+int vsscanf(const char *str, const char *format, va_list ap) __attribute__ ((deprecated));
+int vfscanf(FILE *stream, const char *format, va_list ap) __attribute__ ((deprecated));
+#endif
+
+#endif
+
+
+
+#if defined(__linux__) || defined(__APPLE__)
+ #include <stdint.h>
+ #include <assert.h>
+ #define sniprintf snprintf
+ #define asiprintf asprintf
+ #define printk printf
+ #define siscanf sscanf
+
+ #define WL_ASSERT(x) assert(x)
+ #define WL_DEBUG(args...) printf(args)
+
+ #ifdef NO_LWIP
+ /* IP address representation from lwIP */
+ struct ip_addr {
+ uint32_t addr;
+ } PACKED;
+ #endif
+
+ #define FEAT_SOCKETS
+
+#else
+ #define WL_ASSERT(cond) do { \
+ if (!(cond)) { \
+ printk("%s:%d\n", __FILE__, __LINE__); \
+ for(;;); \
+ } \
+ } while(0)
+ #define WL_DEBUG(args...) printk(args)
+
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/trace.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/trace.h
new file mode 100644
index 0000000..984262a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/trace.h
@@ -0,0 +1,44 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef TRACE_H
+#define TRACE_H
+
+#include <compiler.h>
+#include "printf-stdarg.h"
+
+#define ASSERT(cond, str) do { \
+ if (!(cond)) { \
+ printk("%s\n", str); \
+ Assert(0); \
+ } \
+ } while(0)
+
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/util.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/util.c
new file mode 100644
index 0000000..c01edeb
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/util.c
@@ -0,0 +1,260 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include <top_defs.h>
+#include <util.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <wl_api.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <errno.h>
+#include <string.h>
+#include <printf-stdarg.h>
+
+const char* ip2str(struct ip_addr addr)
+{
+ static char buf[16];
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+ sniprintf(buf, sizeof(buf), "%lu.%lu.%lu.%lu",
+ addr.addr & 0xff,
+ (addr.addr >> 8) & 0xff,
+ (addr.addr >> 16) & 0xff,
+ (addr.addr >> 24) & 0xff);
+ return buf;
+#else
+ sniprintf(buf, sizeof(buf), "%lu.%lu.%lu.%lu",
+ (addr.addr >> 24) & 0xff,
+ (addr.addr >> 16) & 0xff,
+ (addr.addr >> 8) & 0xff,
+ (addr.addr) & 0xff);
+ return buf;
+#endif
+}
+
+struct ip_addr str2ip(const char* str)
+{
+ int a,b,c,d;
+ uint32_t ip = 0;
+ struct ip_addr addr;
+
+ if (siscanf(str,"%d.%d.%d.%d",&a,&b,&c,&d) != 4)
+ goto out;
+
+ if (a < 0 || a > 255 || b < 0 || b > 255 ||
+ c < 0 || c > 255 || d < 0 || d > 255) {
+ goto out;
+ }
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+ ip = (d << 24) | (c << 16) | (b << 8) | a;
+#else
+ ip = (a << 24) | (b << 16) | (c << 8) | d;
+#endif
+
+ out:
+ addr.addr = ip;
+ return addr;
+}
+
+uint8_t ascii_to_key(char *outp, const char *inp) {
+ char buf[3];
+ int len;
+ buf[2] = '\0';
+ len = strlen(inp);
+ if (len % 2) {
+ printk("Invalid length\n");
+ }
+ len = 0;
+ while (*inp) {
+ if (! isxdigit(*inp) || ! isxdigit(*(inp+1)) ||
+ len > WL_MAX_PASS_LEN) {
+ return 0;
+ }
+ buf[0] = *inp++;
+ buf[1] = *inp++;
+ *outp++ = strtol(buf, NULL, 16);
+ len++;
+ }
+ return len;
+}
+
+
+
+void printbuf(const char *prefix, const void *data, size_t len)
+{
+ const unsigned char *s = data;
+ int i, j;
+
+ for (i = 0; i < len; i += 16)
+ {
+ printk("%s ", prefix);
+ for(j = 0; j < 16; j++) {
+ if(i + j >= len)
+ printk(" ");
+ else
+ printk("%02X ", (uint16_t)s[i + j]);
+ }
+ printk(": ");
+ for(j = 0; j < 16; j++) {
+ if(i + j >= len)
+ break;
+ if(s[i+j] >= 32 && s[i+j] < 127)
+ printk("%c", s[i + j]);
+ else
+ printk(".");
+ }
+ printk("\n");
+ }
+}
+
+
+void print_network(struct wl_network_t* wl_network)
+{
+ printk("%s ", mac2str(wl_network->bssid.octet));
+ printk("\"%s\"", ssid2str(&wl_network->ssid));
+ printk(" RSSI %d dBm ", wl_network->rssi);
+ switch(wl_network->net_type) {
+ case WL_CONN_TYPE_ADHOC:
+ printk(" Ad-Hoc ");
+ break;
+ default :
+ break;
+ }
+ switch (wl_network->enc_type) {
+ case ENC_TYPE_WEP :
+ printk(" (WEP encryption)");
+ break;
+ case ENC_TYPE_TKIP :
+ printk(" (TKIP encryption)");
+ break;
+ case ENC_TYPE_CCMP :
+ printk(" (CCMP encryption)");
+ break;
+ case ENC_TYPE_NONE :
+ break;
+ }
+ printk("\n");
+
+}
+
+void print_network_list(void)
+{
+ struct wl_network_list_t* wl_network_list;
+ uint8_t i;
+
+ wl_get_network_list(&wl_network_list);
+
+ if (wl_network_list->cnt == 0)
+ printk("no nets found\n");
+
+ for (i = 0; i < wl_network_list->cnt; i++)
+ print_network(wl_network_list->net[i]);
+}
+
+int join_argv(char *dst, size_t dst_len, int argc, char* argv[]) {
+ char *p = dst;
+ int i;
+ int len = 0;
+
+ /* Not really kosher, an ssid may legally contain 0-bytes but
+ * the console interface does not deal with that.
+ */
+ for (i = 0; i < argc; i++) {
+ len += strlen(argv[i]);
+ if (len > dst_len) {
+ printk("ssid too long (max %d)\n", (int) dst_len);
+ return 0;
+ }
+ p += sniprintf(p,
+ dst_len - (p - dst),
+ "%s ",
+ argv[i]);
+ }
+ if (p == dst) {
+ return 0;
+ }
+ p--;
+ *p = '\0'; /* Delete last space */
+
+ return p - dst;
+}
+
+const char* ssid2str(struct wl_ssid_t *ssid) {
+ static char buf[WL_SSID_MAX_LENGTH + 1];
+
+ memset(buf, 0, sizeof buf);
+ memcpy(buf, ssid->ssid, ssid->len);
+
+ return buf;
+}
+
+
+const char* mac2str(uint8_t* mac)
+{
+ static char buf[18];
+ sniprintf(buf, sizeof(buf), "%02x-%02x-%02x-%02x-%02x-%02x",
+ mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+ return buf;
+}
+
+
+char* enc_type2str(enum wl_enc_type enc_type)
+{
+ switch(enc_type) {
+ case ENC_TYPE_WEP:
+ return "WEP";
+ case ENC_TYPE_CCMP:
+ return "CCMP";
+ case ENC_TYPE_TKIP:
+ return "TKIP";
+ default:
+ return "";
+ };
+}
+
+int equal_ssid(const struct wl_ssid_t* ssid1,
+ const struct wl_ssid_t* ssid2) {
+ if (ssid1->len == ssid2->len &&
+ (memcmp(ssid1->ssid, ssid2->ssid, ssid1->len) == 0)) {
+ return 1;
+ }
+ return 0;
+}
+
+int equal_bssid(const struct wl_mac_addr_t* bssid1,
+ const struct wl_mac_addr_t* bssid2) {
+ if (memcmp(bssid1, bssid2, sizeof *bssid1) == 0) {
+ return 1;
+ }
+ return 0;
+}
+
+
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/util.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/util.h
new file mode 100644
index 0000000..2b3f74f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/util.h
@@ -0,0 +1,71 @@
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef _UTIL_H
+#define _UTIL_H
+#include <stdint.h>
+#include <stdlib.h>
+#include <wl_api.h>
+#include "lwip/ip.h"
+#include <console.h>
+
+const char* ip2str(struct ip_addr addr);
+
+struct ip_addr str2ip(const char* str);
+
+uint8_t ascii_to_key(char *outp, const char *inp);
+
+void print_network(struct wl_network_t* wl_network);
+
+void print_network_list(void);
+
+int join_argv(char *dst, size_t dst_len, int argc, char* argv[]);
+
+void printbuf(const char *prefix, const void *data, size_t len);
+
+const char* ssid2str(struct wl_ssid_t *ssid);
+
+const char* mac2str(uint8_t mac[6]);
+
+char* enc_type2str(enum wl_enc_type enc_type);
+
+int equal_ssid(const struct wl_ssid_t* ssid1,
+ const struct wl_ssid_t* ssid2);
+
+int equal_bssid(const struct wl_mac_addr_t* bssid1,
+ const struct wl_mac_addr_t* bssid2);
+
+#define NET_SET_SSID(net, xssid, ssid_len) do { \
+ DE_MEMCPY((net)->ssid.ssid, (xssid), (ssid_len)); \
+ (net)->ssid.len = (ssid_len); \
+ } while (0)
+
+#define NET_SET_BSSID(net, xbssid) do { \
+ DE_MEMCPY(&(net)->bssid, &(xbssid), sizeof (xbssid)); \
+ } while (0)
+
+#endif /* _UTIL_H */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/wifi_spi.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/wifi_spi.h
new file mode 100644
index 0000000..6e6b4bb
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/wifi_spi.h
@@ -0,0 +1,152 @@
+/*
+ * wifi_spi.h
+ *
+ * Created on: Jul 4, 2010
+ * Author: mlf by Metodo2 srl
+ */
+#ifndef WiFi_Spi_h
+#define WiFi_Spi_h
+
+#include "wl_definitions.h"
+
+#define CMD_FLAG 0
+#define REPLY_FLAG 1<<7
+#define DATA_FLAG 0x40
+
+#define WIFI_SPI_ACK 1
+#define WIFI_SPI_ERR 0xFF
+
+#define TIMEOUT_CHAR 1000
+
+//#define MAX_SOCK_NUM 4 /**< Maxmium number of socket */
+#define NO_SOCKET_AVAIL 255
+
+#define START_CMD 0xE0
+#define END_CMD 0xEE
+#define ERR_CMD 0xEF
+
+enum {
+ SET_NET_CMD = 0x10,
+ SET_PASSPHRASE_CMD = 0x11,
+ SET_KEY_CMD = 0x12,
+ TEST_CMD = 0x13,
+
+ GET_CONN_STATUS_CMD = 0x20,
+ GET_IPADDR_CMD = 0x21,
+ GET_MACADDR_CMD = 0x22,
+ GET_CURR_SSID_CMD = 0x23,
+ GET_CURR_BSSID_CMD = 0x24,
+ GET_CURR_RSSI_CMD = 0x25,
+ GET_CURR_ENCT_CMD = 0x26,
+ SCAN_NETWORKS = 0x27,
+ START_SERVER_TCP_CMD= 0x28,
+ GET_STATE_TCP_CMD = 0x29,
+ DATA_SENT_TCP_CMD = 0x2A,
+ AVAIL_DATA_TCP_CMD = 0x2B,
+ GET_DATA_TCP_CMD = 0x2C,
+ START_CLIENT_TCP_CMD= 0x2D,
+ STOP_CLIENT_TCP_CMD = 0x2E,
+ GET_CLIENT_STATE_TCP_CMD = 0x2F,
+ DISCONNECT_CMD = 0x30,
+ GET_IDX_SSID_CMD = 0x31,
+ GET_IDX_RSSI_CMD = 0x32,
+ GET_IDX_ENCT_CMD = 0x33,
+ REQ_HOST_BY_NAME_CMD= 0x34,
+ GET_HOST_BY_NAME_CMD= 0x35,
+ START_SCAN_NETWORKS = 0x36,
+ GET_FW_VERSION_CMD = 0x37,
+ GET_TEST_CMD = 0x38,
+
+ // All command with DATA_FLAG 0x40 send a 16bit Len
+
+ SEND_DATA_TCP_CMD = 0x44,
+ GET_DATABUF_TCP_CMD = 0x45,
+
+};
+
+#if 0
+enum wl_tcp_state {
+ CLOSED = 0,
+ LISTEN = 1,
+ SYN_SENT = 2,
+ SYN_RCVD = 3,
+ ESTABLISHED = 4,
+ FIN_WAIT_1 = 5,
+ FIN_WAIT_2 = 6,
+ CLOSE_WAIT = 7,
+ CLOSING = 8,
+ LAST_ACK = 9,
+ TIME_WAIT = 10
+};
+#endif
+
+enum numParams{
+ PARAM_NUMS_0,
+ PARAM_NUMS_1,
+ PARAM_NUMS_2,
+ PARAM_NUMS_3,
+ PARAM_NUMS_4,
+ PARAM_NUMS_5,
+ MAX_PARAM_NUMS
+};
+
+#define MAX_PARAMS MAX_PARAM_NUMS-1
+#define PARAM_LEN_SIZE 1
+
+typedef struct __attribute__((__packed__))
+{
+ uint8_t paramLen;
+ char* param;
+}tParam;
+
+typedef struct __attribute__((__packed__))
+{
+ uint16_t dataLen;
+ char* data;
+}tDataParam;
+
+
+typedef struct __attribute__((__packed__))
+{
+ unsigned char cmd;
+ unsigned char tcmd;
+ unsigned char nParam;
+ tParam params[MAX_PARAMS];
+}tSpiMsg;
+
+typedef struct __attribute__((__packed__))
+{
+ unsigned char cmd;
+ unsigned char tcmd;
+ unsigned char nParam;
+ tDataParam params[MAX_PARAMS];
+}tSpiMsgData;
+
+
+typedef struct __attribute__((__packed__))
+{
+ unsigned char cmd;
+ unsigned char tcmd;
+ //unsigned char totLen;
+ unsigned char nParam;
+}tSpiHdr;
+
+typedef struct __attribute__((__packed__))
+{
+ uint8_t paramLen;
+ uint32_t param;
+}tLongParam;
+
+typedef struct __attribute__((__packed__))
+{
+ uint8_t paramLen;
+ uint16_t param;
+}tIntParam;
+
+typedef struct __attribute__((__packed__))
+{
+ uint8_t paramLen;
+ uint8_t param;
+}tByteParam;
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_cm.c b/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_cm.c
new file mode 100644
index 0000000..bef1afc
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_cm.c
@@ -0,0 +1,437 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include "wl_cm.h"
+#include "util.h"
+#include <string.h>
+#include "debug.h"
+
+/** Roaming configuration parameters **/
+
+/*! The ROAMING_RSSI_THRESHOLD setting defines how bad the current
+ * signal strength should be before we'll consider roaming to an AP
+ * with better signal strength. The objective is to stay on the
+ * current AP as long as the RSSI is decent, even if there are other
+ * APs in the same BSS with better RSSI available.
+ * If ROAMING_RSSI_THRESHOLD is too high we might roam unecessarily.
+ * If ROAMING_RSSI_THRESHOLD is too low we might not roam in time to
+ * avoid packet loss. This also impacts power consumption, staying
+ * too long with an AP with poor RSSI will consume more power.
+ * Unit is dBm.
+ */
+#define ROAMING_RSSI_THRESHOLD -65
+
+/*! The ROAMING_RSSI_DIFF setting defines how much better
+ * than the currently associated AP a new AP must be before
+ * we'll attempt to roam over to the new AP.
+ * If ROAMING_RSSI_DIFF is too high it might be too hard
+ * to roam (important if the STA is expected to move
+ * quickly through different AP coverage areas).
+ * If ROAMING_RSSI_DIFF is too low we might bounce between
+ * two APs with similar signal strengths.
+ * Unit is dBm.
+ */
+#define ROAMING_RSSI_DIFF 10
+
+
+#if 1
+# include "printf-stdarg.h"
+#include "ard_utils.h"
+# define CM_DPRINTF(fmt...) if (enableDebug & INFO_CM_FLAG) printk(fmt)
+#else
+# define CM_DPRINTF(fmt...)
+#endif
+
+
+/** \defgroup wl_cm Connection Manager
+ *
+ * These functions are used to configure and control the WiFi connetion
+ * manager.
+ *
+ *
+ * @{
+ */
+
+struct cm_candidate {
+ struct wl_ssid_t ssid;
+ struct wl_mac_addr_t bssid;
+};
+
+struct cm {
+ cm_scan_cb_t *scan_cb;
+ cm_conn_cb_t *conn_cb;
+ cm_disconn_cb_t *disconn_cb;
+ void* ctx;
+ uint8_t enabled;
+ struct cm_candidate candidate;
+};
+
+
+/**
+ * This function can be modified to pick a network based on
+ * application specific criteria.
+ *
+ * If the SSID can not be found in the scan list it will be
+ * assumed to be a hidden SSID and the wl_connect() command
+ * will be called to attempt to probe for the network and
+ * connect to it.
+ */
+static struct wl_network_t*
+find_best_candidate(struct cm* cm)
+{
+ struct wl_network_list_t* netlist;
+ struct wl_network_t *best_net = NULL;
+ uint8_t i;
+
+ if (wl_get_network_list(&netlist) != WL_SUCCESS)
+ return NULL;
+
+ if (netlist->cnt == 0)
+ return NULL;
+
+ for (i = 0; i < netlist->cnt; i++) {
+ /* match on ssid */
+ if (cm->candidate.ssid.len)
+ if (!equal_ssid(&cm->candidate.ssid,
+ &netlist->net[i]->ssid))
+ continue;
+
+ /* match bssid */
+ if (strncmp((char*) cm->candidate.bssid.octet,
+ "\xff\xff\xff\xff\xff\xff", 6))
+ if (!equal_bssid(&cm->candidate.bssid,
+ &netlist->net[i]->bssid))
+ continue;
+ /* check for best rssi. */
+ if ( best_net &&
+ ( best_net->rssi > netlist->net[i]->rssi) ) {
+ continue;
+ }
+ best_net = netlist->net[i];
+ }
+
+ return best_net;
+}
+
+
+/**
+ *
+ */
+static void
+select_net(struct cm* cm)
+{
+ struct wl_network_t *candidate_net;
+ struct wl_network_t *current_net;
+ struct wl_ssid_t *ssid_p;
+
+ int ret;
+
+ /* Nothing to do */
+ if (0 == cm->candidate.ssid.len) {
+ return;
+ }
+
+ current_net = wl_get_current_network();
+ candidate_net = find_best_candidate(cm);
+
+ /* Connected to the candidate? ... */
+ if ( current_net == candidate_net ) {
+ if ( current_net ) {
+ /* ...yes, dont change. */
+
+ return;
+ }
+ }
+
+ /* Roaming checks */
+ if (current_net && candidate_net) {
+ /* Are we changing BSSs? */
+ if ( equal_ssid(&candidate_net->ssid,
+ ¤t_net->ssid)) {
+
+ /* ...no. Does the currently connected
+ * net have a decent RSSI?...*/
+ if ( current_net->rssi > ROAMING_RSSI_THRESHOLD ) {
+ /* ...yes, stay with it. */
+ return;
+ }
+ /* ...no. Does the candidate have
+ * sufficiently better RSSI to
+ * motivate a switch to it? */
+ if ( candidate_net->rssi < current_net->rssi +
+ ROAMING_RSSI_DIFF) {
+ return;
+ }
+ /* ...yes, try to roam to candidate_net */
+ CM_DPRINTF("CM: Roaming from rssi %d to %d\n",
+ current_net->rssi,
+ candidate_net->rssi);
+ }
+ }
+ /* a candidate is found */
+ if (candidate_net) {
+ /* We connect to a specific bssid here because
+ * find_best_candidate() might have picked a
+ * particulare AP among many with the same SSID.
+ * wl_connect() would pick one of them at random.
+ */
+ ret = wl_connect_bssid(candidate_net->bssid);
+ }
+ /* no candidate found */
+ else {
+ CM_DPRINTF("CM: No candidate found for ssid \"%s\"\n",
+ ssid2str(&cm->candidate.ssid));
+ /* Might be a hidden SSID so we try to connect to it.
+ * wl_connect() will trigger a directed scan
+ * for the SSID in this case.
+ */
+ ssid_p = &cm->candidate.ssid;
+ ret = wl_connect(ssid_p->ssid, ssid_p->len);
+ }
+ switch (ret) {
+ case WL_SUCCESS :
+ return;
+ case WL_BUSY:
+ wl_disconnect();
+ return;
+ case WL_RETRY:
+ break;
+ default :
+ CM_DPRINTF("CM: failed to connect\n");
+ break;
+ }
+
+ /* some operation failed or no candidate found */
+ if (wl_scan() != WL_SUCCESS)
+ CM_DPRINTF("CM: failed to scan\n");
+}
+
+
+/**
+ *
+ */
+static void
+wl_scan_complete_cb(void* ctx)
+{
+ struct cm *cm = ctx;
+
+ CM_DPRINTF("CM: scan completed\n");
+
+ if (cm->scan_cb)
+ cm->scan_cb(cm->ctx);
+
+ if ( 0 == cm->enabled ) {
+ return;
+ }
+ select_net(cm);
+}
+
+/**
+ *
+ */
+static void
+wl_media_connected_cb(void* ctx)
+{
+ struct cm *cm = ctx;
+ struct wl_network_t *net = wl_get_current_network();
+ CM_DPRINTF("CM: connected to %s\n", ssid2str(&net->ssid));
+ LINK_LED_ON();
+ ERROR_LED_OFF();
+ if (cm->conn_cb)
+ cm->conn_cb(net, cm->ctx);
+}
+
+
+/**
+ *
+ */
+static void
+wl_conn_failure_cb(void* ctx)
+{
+ struct cm *cm = ctx;
+ CM_DPRINTF("CM: connect failed, scanning\n");
+ ERROR_LED_ON();
+ LINK_LED_OFF();
+
+ if ( 0 == cm->enabled ) {
+ return;
+ }
+ if (wl_scan() != WL_SUCCESS)
+ /* should never happen */
+ CM_DPRINTF("CM: could not start scan after connect fail!\n");
+}
+
+
+/**
+ *
+ */
+static void
+wl_conn_lost_cb(void* ctx)
+{
+ struct cm *cm = ctx;
+ CM_DPRINTF("CM: connection lost, scanning\n");
+ LINK_LED_OFF();
+ if (cm->disconn_cb)
+ cm->disconn_cb(cm->ctx);
+
+ if ( 0 == cm->enabled ) {
+ return;
+ }
+ if (wl_scan() != WL_SUCCESS)
+ /* should never happen */
+ CM_DPRINTF("CM: could not start scan after connect lost!\n");
+}
+
+
+/**
+ *
+ */
+static void
+wl_event_cb(struct wl_event_t event, void* ctx)
+{
+ struct cm *cm = ctx;
+
+ switch (event.id) {
+ case WL_EVENT_MEDIA_CONNECTED:
+ wl_media_connected_cb(cm);
+ break;
+
+ case WL_EVENT_CONN_FAILURE:
+ wl_conn_failure_cb(cm);
+ break;
+
+ case WL_EVENT_MEDIA_DISCONNECTED:
+ CM_DPRINTF("CM: disconnected\n");
+ wl_conn_lost_cb(cm);
+ break;
+
+ case WL_EVENT_SCAN_COMPLETE:
+ wl_scan_complete_cb(cm);
+ break;
+
+ default:
+ CM_DPRINTF("CM: unhandled event\n");
+ };
+}
+
+static struct cm *cm = NULL;
+
+
+/**
+ * Doesn't actually start the CM, just initializing. CM will run whenever
+ * an valid ssid is set through wl_cm_set_network() and wl_cm_start()
+ * has been called.
+ */
+wl_err_t
+wl_cm_init(cm_scan_cb_t scan_cb,
+ cm_conn_cb_t conn_cb,
+ cm_disconn_cb_t disconn_cb,
+ void* ctx)
+{
+ if (cm != NULL)
+ return WL_FAILURE;
+
+ cm = calloc(1, sizeof(struct cm));
+ if (cm == NULL) {
+ CM_DPRINTF("CM: out of memory\n");
+ return WL_FAILURE;
+ }
+
+ if (wl_register_event_cb(wl_event_cb, cm) != WL_SUCCESS) {
+ CM_DPRINTF("CM: could not register event cb\n");
+ return WL_FAILURE;
+ }
+
+ cm->scan_cb = scan_cb;
+ cm->conn_cb = conn_cb;
+ cm->disconn_cb = disconn_cb;
+ cm->enabled = 0;
+ cm->ctx = ctx;
+
+ CM_DPRINTF("CM: initialized\n");
+ return WL_SUCCESS;
+}
+
+wl_err_t
+wl_cm_start(void) {
+ if (NULL == cm)
+ return WL_FAILURE;
+
+ cm->enabled = 1;
+ return WL_SUCCESS;
+}
+
+wl_err_t
+wl_cm_stop(void) {
+ if (NULL == cm)
+ return WL_FAILURE;
+
+ cm->enabled = 0;
+ return WL_SUCCESS;
+}
+
+
+/**
+ * Set the desired network which the connection manager should try to
+ * connect to.
+ *
+ * The ssid and bssid of the desired network should be specified. The ssid and
+ * bssid will be matched against the networks found during scan. If any
+ * parameter is null, it will always match. If both parameters are null,
+ * the first found network will be chosen.
+ *
+ * @param ssid The ssid of the desired network. If null, any ssid will match.
+ * @param bssid The bssid of the desired network. If null, any bssid will match.
+ *
+ */
+wl_err_t
+wl_cm_set_network(struct wl_ssid_t *ssid, struct wl_mac_addr_t *bssid)
+{
+ if (cm == NULL)
+ return WL_FAILURE;
+
+ if (ssid)
+ memcpy(&cm->candidate.ssid, ssid, sizeof(cm->candidate.ssid));
+ else
+ cm->candidate.ssid.len = 0;
+
+ if (bssid)
+ memcpy(&cm->candidate.bssid, bssid,
+ sizeof(cm->candidate.bssid));
+ else
+ memset(&cm->candidate.bssid, 0xff, sizeof(cm->candidate.bssid));
+
+ if (cm->candidate.ssid.len)
+ wl_scan();
+
+ return WL_SUCCESS;
+}
+/*
+ * @}
+ */
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_cm.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_cm.h
new file mode 100644
index 0000000..bbb65d9
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_cm.h
@@ -0,0 +1,51 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef WL_CM_H
+#define WL_CM_H
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <wl_api.h>
+
+typedef void (cm_scan_cb_t)(void* ctx);
+typedef void (cm_conn_cb_t)(struct wl_network_t *net, void* ctx);
+typedef void (cm_disconn_cb_t)(void* ctx);
+
+wl_err_t wl_cm_set_network(struct wl_ssid_t *ssid, struct wl_mac_addr_t *bssid);
+
+wl_err_t wl_cm_init(cm_scan_cb_t scan_cb,
+ cm_conn_cb_t conn_cb,
+ cm_disconn_cb_t disconn_cb,
+ void* ctx);
+
+wl_err_t wl_cm_start(void);
+wl_err_t wl_cm_stop(void);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_definitions.h b/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_definitions.h
new file mode 100644
index 0000000..b07c203
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifiHD/src/wl_definitions.h
@@ -0,0 +1,39 @@
+/*
+ * wl_definitions.h
+ *
+ * Created on: Mar 6, 2011
+ * Author: mlf by Metodo2 srl
+ */
+
+#ifndef WL_DEFINITIONS_H_
+#define WL_DEFINITIONS_H_
+
+// Maximum size of a SSID
+#define WL_SSID_MAX_LENGTH 32
+// Length of passphrase. Valid lengths are 8-63.
+#define WL_WPA_KEY_MAX_LENGTH 63
+// Length of key in bytes. Valid values are 5 and 13.
+#define WL_WEP_KEY_MAX_LENGTH 13
+// Size of a MAC-address or BSSID
+#define WL_MAC_ADDR_LENGTH 6
+// Size of a MAC-address or BSSID
+#define WL_IPV4_LENGTH 4
+// Maximum size of a SSID list
+#define WL_NETWORKS_LIST_MAXNUM 10
+// Maxmium number of socket
+#define MAX_SOCK_NUM 4
+//Maximum number of attempts to establish wifi connection
+#define WL_MAX_ATTEMPT_CONNECTION 10
+
+typedef enum {
+ WL_IDLE_STATUS,
+ WL_NO_SSID_AVAIL,
+ WL_SCAN_COMPLETED,
+ WL_CONNECTED,
+ WL_CONNECT_FAILED,
+ WL_CONNECTION_LOST,
+ WL_DISCONNECTED
+} wl_status_t;
+
+
+#endif /* WL_DEFINITIONS_H_ */
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/.cproject b/hardware/arduino/firmwares/wifishield/wifi_dnld/.cproject
new file mode 100644
index 0000000..286dad7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/.cproject
@@ -0,0 +1,1281 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="avr32.managedbuild.config.gnu.exe.debug.618344773">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="avr32.managedbuild.config.gnu.exe.debug.618344773" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+<extension id="com.atmel.avr.toolchain.avr32gcc.elf32-avr32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="wifi_dnld" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="AVR32 Standalone debug configuration" id="avr32.managedbuild.config.gnu.exe.debug.618344773" name="Debug" parent="avr32.managedbuild.config.gnu.exe.debug">
+<folderInfo id="avr32.managedbuild.config.gnu.exe.debug.618344773." name="/" resourcePath="">
+<toolChain id="avr32.managedbuild.toolchain.gnu.exe.debug.874656193" name="32-bit AVR/GNU C/C++ Toolchain" superClass="avr32.managedbuild.toolchain.gnu.exe.debug">
+<targetPlatform id="avr32.managedbuild.target.gnu.platform.exe.debug.909801431" name="%PlatformName.Dbg" superClass="avr32.managedbuild.target.gnu.platform.exe.debug"/>
+<builder buildPath="${workspace_loc:/wifi_dnld/Debug}" id="avr32.managedbuild.target.gnu.builder.exe.debug.1715478179" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="avr32.managedbuild.target.gnu.builder.exe.debug"/>
+<tool id="avr32.managedbuild.tool.gnu.archiver.exe.debug.382668879" name="32-bit AVR/GNU Archiver" superClass="avr32.managedbuild.tool.gnu.archiver.exe.debug"/>
+<tool id="avr32.managedbuild.tool.gnu.cpp.compiler.exe.debug.1606873657" name="32-bit AVR/GNU C++ Compiler" superClass="avr32.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+<option id="gnu.cpp.compiler.option.optimization.level.181942560" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.option.debugging.level.333188277" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.cpp.compiler.option.mcu.853647015" name="Microcontroller Unit" superClass="avr32.cpp.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.compiler.option.include.paths.1415771519" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+</option>
+<option id="avr32.cpp.compiler.option.flashvault.1838882229" name="Enable FlashVault support" superClass="avr32.cpp.compiler.option.flashvault" value="false" valueType="boolean"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.compiler.exe.debug.468457615" name="32-bit AVR/GNU C Compiler" superClass="avr32.managedbuild.tool.gnu.c.compiler.exe.debug">
+<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.26008628" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+<option id="gnu.c.compiler.option.debugging.level.259665554" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.c.compiler.option.mcu.1201151349" name="Microcontroller Unit" superClass="avr32.c.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.compiler.option.optimization.flags.686407260" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-fdata-sections" valueType="string"/>
+<option id="gnu.c.compiler.option.preprocessor.def.symbols.2029598871" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+<listOptionValue builtIn="false" value="BOARD=ARDUINO"/>
+</option>
+<option id="gnu.c.compiler.option.include.paths.1842586158" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src"/>
+</option>
+<option id="avr32.c.compiler.option.flashvault.1772536800" name="Enable FlashVault support" superClass="avr32.c.compiler.option.flashvault" value="false" valueType="boolean"/>
+<inputType id="avr32.managedbuild.tool.gnu.c.compiler.input.1816670662" superClass="avr32.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.linker.exe.debug.681608330" name="32-bit AVR/GNU C Linker" superClass="avr32.managedbuild.tool.gnu.c.linker.exe.debug">
+<option id="avr32.c.linker.option.mcu.406721254" name="Microcontroller Unit" superClass="avr32.c.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.link.option.nostart.834549918" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" value="true" valueType="boolean"/>
+<option id="gnu.c.link.option.ldflags.1902664612" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,--gc-sections -Wl,-e,_trampoline -T../src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds" valueType="string"/>
+<option id="gnu.c.link.option.paths.450454804" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<option id="gnu.c.link.option.libs.767799431" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1957795482" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.cpp.linker.exe.debug.2130683587" name="32-bit AVR/GNU C++ Linker" superClass="avr32.managedbuild.tool.gnu.cpp.linker.exe.debug">
+<option id="avr32.cpp.linker.option.mcu.1314062001" name="Microcontroller Unit" superClass="avr32.cpp.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.link.option.libs.418456932" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<option id="gnu.cpp.link.option.paths.2113734099" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.assembler.exe.debug.1502006803" name="32-bit AVR/GNU Assembler" superClass="avr32.managedbuild.tool.gnu.assembler.exe.debug">
+<option id="avr32.both.asm.option.debugging.level.612232148" name="Debug Level" superClass="avr32.both.asm.option.debugging.level" value="avr32.both.asm.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.both.asm.option.mcu.211813638" name="Microcontroller Unit" superClass="avr32.both.asm.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.both.asm.option.include.paths.1549891082" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.preprocessor.exe.debug.1062481241" name="32-bit AVR/GNU Preprocessing Assembler" superClass="avr32.managedbuild.tool.gnu.preprocessor.exe.debug">
+<option id="avr32.both.preprocessor.option.debugging.level.863609472" name="Debug Level" superClass="avr32.both.preprocessor.option.debugging.level" value="avr32.both.preprocessor.debugging.level.max" valueType="enumerated"/>
+<option id="avr32.both.preprocessor.option.mcu.565918885" name="Microcontroller Unit" superClass="avr32.both.preprocessor.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="avr32.both.preprocessor.option.flags.1172892380" name="Assembler flags" superClass="avr32.both.preprocessor.option.flags" value="-Wa,-g" valueType="string"/>
+<option id="avr32.both.preprocessor.option.paths.320260505" name="Include paths (-I)" superClass="avr32.both.preprocessor.option.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<inputType id="avr32.managedbuild.tool.gnu.preprocessor.input.609982404" superClass="avr32.managedbuild.tool.gnu.preprocessor.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry excluding="SOFTWARE_FRAMEWORK/BOARDS/EVK1105" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.657878227;avr32.managedbuild.config.gnu.exe.release.657878227.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1756143675;avr32.managedbuild.tool.gnu.c.compiler.input.1828784431">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.618344773;avr32.managedbuild.config.gnu.exe.debug.618344773.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.468457615;avr32.managedbuild.tool.gnu.c.compiler.input.1816670662">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cconfiguration>
+<cconfiguration id="avr32.managedbuild.config.gnu.exe.release.657878227">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="avr32.managedbuild.config.gnu.exe.release.657878227" moduleId="org.eclipse.cdt.core.settings" name="Release">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
+<extension id="com.atmel.avr.toolchain.avr32gcc.elf32-avr32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="wifi_dnld" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="AVR32 Standalone release configuration" id="avr32.managedbuild.config.gnu.exe.release.657878227" name="Release" parent="avr32.managedbuild.config.gnu.exe.release">
+<folderInfo id="avr32.managedbuild.config.gnu.exe.release.657878227." name="/" resourcePath="">
+<toolChain id="avr32.managedbuild.toolchain.gnu.exe.release.722848766" name="32-bit AVR/GNU C/C++ Toolchain" superClass="avr32.managedbuild.toolchain.gnu.exe.release">
+<targetPlatform id="avr32.managedbuild.target.gnu.platform.exe.release.787333741" name="%PlatformName.Dbg" superClass="avr32.managedbuild.target.gnu.platform.exe.release"/>
+<builder buildPath="${workspace_loc:/wifi_dnld/Release}" id="avr32.managedbuild.target.gnu.builder.exe.release.1399107203" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="avr32.managedbuild.target.gnu.builder.exe.release"/>
+<tool id="avr32.managedbuild.tool.gnu.archiver.exe.release.1720225360" name="32-bit AVR/GNU Archiver" superClass="avr32.managedbuild.tool.gnu.archiver.exe.release"/>
+<tool id="avr32.managedbuild.tool.gnu.cpp.compiler.exe.release.875278510" name="32-bit AVR/GNU C++ Compiler" superClass="avr32.managedbuild.tool.gnu.cpp.compiler.exe.release">
+<option id="gnu.cpp.compiler.option.optimization.level.183875732" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.option.debugging.level.2087046952" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+<option defaultValue="gnu.c.optimization.level.most" id="avr32.cpp.compiler.option.optimization.level.release.1669925035" name="Optimization Level" superClass="avr32.cpp.compiler.option.optimization.level.release" valueType="enumerated"/>
+<option id="avr32.cpp.compiler.option.mcu.245744969" name="Microcontroller Unit" superClass="avr32.cpp.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.compiler.option.include.paths.2014943719" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+</option>
+<option id="avr32.cpp.compiler.option.flashvault.275481591" name="Enable FlashVault support" superClass="avr32.cpp.compiler.option.flashvault" value="false" valueType="boolean"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.compiler.exe.release.1756143675" name="32-bit AVR/GNU C Compiler" superClass="avr32.managedbuild.tool.gnu.c.compiler.exe.release">
+<option defaultValue="gnu.c.optimization.level.most" id="avr32.c.compiler.option.optimization.level.release.1026762119" name="Optimization Level" superClass="avr32.c.compiler.option.optimization.level.release" valueType="enumerated"/>
+<option id="gnu.c.compiler.option.debugging.level.1638027682" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.c.compiler.option.mcu.1551179967" name="Microcontroller Unit" superClass="avr32.c.compiler.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.compiler.option.optimization.flags.1564845329" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags" value="-fdata-sections" valueType="string"/>
+<option id="gnu.c.compiler.option.preprocessor.def.symbols.687766725" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+<listOptionValue builtIn="false" value="BOARD=ARDUINO"/>
+</option>
+<option id="gnu.c.compiler.option.include.paths.1279594844" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+<listOptionValue builtIn="false" value="../src"/>
+</option>
+<option id="avr32.c.compiler.option.flashvault.1560264128" name="Enable FlashVault support" superClass="avr32.c.compiler.option.flashvault" value="false" valueType="boolean"/>
+<inputType id="avr32.managedbuild.tool.gnu.c.compiler.input.1828784431" superClass="avr32.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.c.linker.exe.release.1281932637" name="32-bit AVR/GNU C Linker" superClass="avr32.managedbuild.tool.gnu.c.linker.exe.release">
+<option id="avr32.c.linker.option.mcu.1595174478" name="Microcontroller Unit" superClass="avr32.c.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.c.link.option.nostart.901647440" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" value="true" valueType="boolean"/>
+<option id="gnu.c.link.option.ldflags.183335601" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-Wl,--gc-sections -Wl,-e,_trampoline -T../src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds" valueType="string"/>
+<option id="gnu.c.link.option.paths.583164556" name="Library search path (-L)" superClass="gnu.c.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<option id="gnu.c.link.option.libs.217934189" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.900000786" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.cpp.linker.exe.release.1544350382" name="32-bit AVR/GNU C++ Linker" superClass="avr32.managedbuild.tool.gnu.cpp.linker.exe.release">
+<option id="avr32.cpp.linker.option.mcu.2135785353" name="Microcontroller Unit" superClass="avr32.cpp.linker.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.cpp.link.option.libs.1394437968" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+<listOptionValue builtIn="false" value="newlib_addons-at32ucr2-speed_opt"/>
+</option>
+<option id="gnu.cpp.link.option.paths.1503002133" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.assembler.exe.release.2145926358" name="32-bit AVR/GNU Assembler" superClass="avr32.managedbuild.tool.gnu.assembler.exe.release">
+<option id="avr32.both.asm.option.debugging.level.1675736685" name="Debug Level" superClass="avr32.both.asm.option.debugging.level" value="avr32.both.asm.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.both.asm.option.mcu.1210222151" name="Microcontroller Unit" superClass="avr32.both.asm.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="gnu.both.asm.option.include.paths.1743520043" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+</tool>
+<tool id="avr32.managedbuild.tool.gnu.preprocessor.exe.release.420525713" name="32-bit AVR/GNU Preprocessing Assembler" superClass="avr32.managedbuild.tool.gnu.preprocessor.exe.release">
+<option id="avr32.both.preprocessor.option.debugging.level.1011519699" name="Debug Level" superClass="avr32.both.preprocessor.option.debugging.level" value="avr32.both.preprocessor.debugging.level.none" valueType="enumerated"/>
+<option id="avr32.both.preprocessor.option.mcu.612156450" name="Microcontroller Unit" superClass="avr32.both.preprocessor.option.mcu" value="-mpart=uc3a1256" valueType="string"/>
+<option id="avr32.both.preprocessor.option.flags.1159687922" name="Assembler flags" superClass="avr32.both.preprocessor.option.flags" value="-Wa,-g" valueType="string"/>
+<option id="avr32.both.preprocessor.option.paths.1457315047" name="Include paths (-I)" superClass="avr32.both.preprocessor.option.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS"/>
+<listOptionValue builtIn="false" value="../src/CONFIG"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/USART"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/PM"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/UTILS"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC"/>
+<listOptionValue builtIn="false" value="../src/SOFTWARE_FRAMEWORK/BOARDS"/>
+</option>
+<inputType id="avr32.managedbuild.tool.gnu.preprocessor.input.2082742376" superClass="avr32.managedbuild.tool.gnu.preprocessor.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry excluding="SOFTWARE_FRAMEWORK/BOARDS/EVK1105" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.release.657878227;avr32.managedbuild.config.gnu.exe.release.657878227.;avr32.managedbuild.tool.gnu.c.compiler.exe.release.1756143675;avr32.managedbuild.tool.gnu.c.compiler.input.1828784431">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="avr32.managedbuild.config.gnu.exe.debug.618344773;avr32.managedbuild.config.gnu.exe.debug.618344773.;avr32.managedbuild.tool.gnu.c.compiler.exe.debug.468457615;avr32.managedbuild.tool.gnu.c.compiler.input.1816670662">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC"/>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32ManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32StandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="com.atmel.avr32.debug.AVR32LinuxStandardMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-mpart=${part} -E -P -v -dD ${plugin_state_location}/${specs_file}" command="avr32-linux-g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/${specs_file}"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD "${plugin_state_location}/specs.cpp"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD "${plugin_state_location}/specs.c"'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="wifi_dnld.avr32.managedbuild.target.gnu.exe_2.0.1.570559459" name="32-bit AVR/GNU Executable" projectType="avr32.managedbuild.target.gnu.exe_2.0.1"/>
+</storageModule>
+</cproject>
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/.project b/hardware/arduino/firmwares/wifishield/wifi_dnld/.project
new file mode 100644
index 0000000..aa3047b
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/.project
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>wifi_dnld</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>make</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildLocation</key>
+ <value>${workspace_loc:/wifi_dnld/Debug}</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.atmel.avr32.core.nature</nature>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ </natures>
+</projectDescription>
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/Release/wifi_dnld.elf b/hardware/arduino/firmwares/wifishield/wifi_dnld/Release/wifi_dnld.elf
new file mode 100644
index 0000000..11ec3dd
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifi_dnld/Release/wifi_dnld.elf differ
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_access.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_access.h
new file mode 100644
index 0000000..23e9b34
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_access.h
@@ -0,0 +1,170 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Memory access control configuration file.
+ *
+ * This file contains the possible external configuration of the memory access
+ * control.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_ACCESS_H_
+#define _CONF_ACCESS_H_
+
+#include "compiler.h"
+#include "board.h"
+
+
+/*! \name Activation of Logical Unit Numbers
+ */
+//! @{
+#define LUN_0 DISABLE //!< On-Chip Virtual Memory.
+#define LUN_1 ENABLE //!< AT45DBX Data Flash.
+#define LUN_2 DISABLE //!< SD/MMC Card over SPI.
+#define LUN_3 DISABLE
+#define LUN_4 DISABLE
+#define LUN_5 DISABLE
+#define LUN_6 DISABLE
+#define LUN_7 DISABLE
+#define LUN_USB DISABLE //!< Host Mass-Storage Memory.
+//! @}
+
+/*! \name LUN 0 Definitions
+ */
+//! @{
+#define VIRTUAL_MEM LUN_0
+#define LUN_ID_VIRTUAL_MEM LUN_ID_0
+#define LUN_0_INCLUDE "virtual_mem.h"
+#define Lun_0_test_unit_ready virtual_test_unit_ready
+#define Lun_0_read_capacity virtual_read_capacity
+#define Lun_0_wr_protect virtual_wr_protect
+#define Lun_0_removal virtual_removal
+#define Lun_0_usb_read_10 virtual_usb_read_10
+#define Lun_0_usb_write_10 virtual_usb_write_10
+#define Lun_0_mem_2_ram virtual_mem_2_ram
+#define Lun_0_ram_2_mem virtual_ram_2_mem
+#define LUN_0_NAME "\"On-Chip Virtual Memory\""
+//! @}
+
+/*! \name LUN 1 Definitions
+ */
+//! @{
+#define AT45DBX_MEM LUN_1
+#define LUN_ID_AT45DBX_MEM LUN_ID_1
+#define LUN_1_INCLUDE "at45dbx_mem.h"
+#define Lun_1_test_unit_ready at45dbx_test_unit_ready
+#define Lun_1_read_capacity at45dbx_read_capacity
+#define Lun_1_wr_protect at45dbx_wr_protect
+#define Lun_1_removal at45dbx_removal
+#define Lun_1_usb_read_10 at45dbx_usb_read_10
+#define Lun_1_usb_write_10 at45dbx_usb_write_10
+#define Lun_1_mem_2_ram at45dbx_df_2_ram
+#define Lun_1_ram_2_mem at45dbx_ram_2_df
+#define LUN_1_NAME "\"AT45DBX Data Flash\""
+//! @}
+
+/*! \name LUN 2 Definitions
+ */
+//! @{
+#define SD_MMC_SPI_MEM LUN_2
+#define LUN_ID_SD_MMC_SPI_MEM LUN_ID_2
+#define LUN_2_INCLUDE "sd_mmc_spi_mem.h"
+#define Lun_2_test_unit_ready sd_mmc_spi_test_unit_ready
+#define Lun_2_read_capacity sd_mmc_spi_read_capacity
+#define Lun_2_wr_protect sd_mmc_spi_wr_protect
+#define Lun_2_removal sd_mmc_spi_removal
+#define Lun_2_usb_read_10 sd_mmc_spi_usb_read_10
+#define Lun_2_usb_write_10 sd_mmc_spi_usb_write_10
+#define Lun_2_mem_2_ram sd_mmc_spi_mem_2_ram
+#define Lun_2_ram_2_mem sd_mmc_spi_ram_2_mem
+#define LUN_2_NAME "\"SD/MMC Card over SPI\""
+//! @}
+
+/*! \name USB LUNs Definitions
+ */
+//! @{
+#define MEM_USB LUN_USB
+#define LUN_ID_MEM_USB LUN_ID_USB
+#define LUN_USB_INCLUDE "host_mem.h"
+#define Lun_usb_test_unit_ready(lun) host_test_unit_ready(lun)
+#define Lun_usb_read_capacity(lun, nb_sect) host_read_capacity(lun, nb_sect)
+#define Lun_usb_read_sector_size(lun) host_read_sector_size(lun)
+#define Lun_usb_wr_protect(lun) host_wr_protect(lun)
+#define Lun_usb_removal() host_removal()
+#define Lun_usb_mem_2_ram(addr, ram) host_read_10_ram(addr, ram)
+#define Lun_usb_ram_2_mem(addr, ram) host_write_10_ram(addr, ram)
+#define LUN_USB_NAME "\"Host Mass-Storage Memory\""
+//! @}
+
+/*! \name Actions Associated with Memory Accesses
+ *
+ * Write here the action to associate with each memory access.
+ *
+ * \warning Be careful not to waste time in order not to disturb the functions.
+ */
+//! @{
+#define memory_start_read_action(nb_sectors)
+#define memory_stop_read_action()
+#define memory_start_write_action(nb_sectors)
+#define memory_stop_write_action()
+//! @}
+
+/*! \name Activation of Interface Features
+ */
+//! @{
+#define ACCESS_USB DISABLED //!< MEM <-> USB interface.
+#define ACCESS_MEM_TO_RAM ENABLED //!< MEM <-> RAM interface.
+#define ACCESS_STREAM DISABLED //!< Streaming MEM <-> MEM interface.
+#define ACCESS_STREAM_RECORD DISABLED //!< Streaming MEM <-> MEM interface in record mode.
+#define ACCESS_MEM_TO_MEM DISABLED //!< MEM <-> MEM interface.
+#define ACCESS_CODEC DISABLED //!< Codec interface.
+//! @}
+
+/*! \name Specific Options for Access Control
+ */
+//! @{
+#define GLOBAL_WR_PROTECT DISABLED //!< Management of a global write protection.
+//! @}
+
+
+#endif // _CONF_ACCESS_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h
new file mode 100644
index 0000000..3280e4f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h
@@ -0,0 +1,83 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT45DBX configuration file.
+ *
+ * This file contains the possible external configuration of the AT45DBX.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_AT45DBX_H_
+#define _CONF_AT45DBX_H_
+
+
+#include "conf_access.h"
+
+#if AT45DBX_MEM == DISABLE
+ #error conf_at45dbx.h is #included although AT45DBX_MEM is disabled
+#endif
+
+
+#include "at45dbx.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+//! Size of AT45DBX data flash memories to manage.
+#define AT45DBX_MEM_SIZE AT45DBX_1MB
+
+//! Number of AT45DBX components to manage.
+#define AT45DBX_MEM_CNT 1
+
+//! First chip select used by AT45DBX components on the SPI module instance.
+//! AT45DBX_SPI_NPCS0_PIN always corresponds to this first NPCS, whatever it is.
+#define AT45DBX_SPI_FIRST_NPCS AT45DBX_SPI_NPCS
+
+//! SPI master speed in Hz.
+#define AT45DBX_SPI_MASTER_SPEED 12000000
+
+//! Number of bits in each SPI transfer.
+#define AT45DBX_SPI_BITS 8
+
+
+#endif // _CONF_AT45DBX_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/Doc/SPB104 product brief.pdf b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/Doc/SPB104 product brief.pdf
new file mode 100644
index 0000000..8705cb1
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/Doc/SPB104 product brief.pdf differ
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/Doc/gettingstarted.pdf b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/Doc/gettingstarted.pdf
new file mode 100644
index 0000000..7c37693
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/Doc/gettingstarted.pdf differ
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x
new file mode 100644
index 0000000..c127121
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x
@@ -0,0 +1,74 @@
+/* This file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AVR32 UC3 ISP trampoline.
+ *
+ * In order to be able to program a project with both BatchISP and JTAGICE mkII
+ * without having to take the general-purpose fuses into consideration, add this
+ * file to the project and change the program entry point to _trampoline.
+ *
+ * The pre-programmed ISP will be erased if JTAGICE mkII is used.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32UC devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (C) 2006-2008, Atmel Corporation 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. The name of ATMEL may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+
+#include "conf_isp.h"
+
+
+//! @{
+//! \verbatim
+
+
+ // This must be linked @ 0x80000000 if it is to be run upon reset.
+ .section .reset, "ax", @progbits
+
+
+ .global _trampoline
+ .type _trampoline, @function
+_trampoline:
+ // Jump to program start.
+ rjmp program_start
+
+ .org PROGRAM_START_OFFSET
+program_start:
+ // Jump to the C runtime startup routine.
+ lda.w pc, _stext
+
+
+//! \endverbatim
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h
new file mode 100644
index 0000000..fbdd466
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h
@@ -0,0 +1,234 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1100 board header file.
+ *
+ * This file contains definitions and services related to the features of the
+ * EVK1100 board rev. B and C.
+ *
+ * To use this board, define BOARD=EVK1100.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _ARDUINO_H_
+#define _ARDUINO_H_
+
+#include "compiler.h"
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+# include "led.h"
+#endif // __AVR32_ABI_COMPILER__
+
+
+/*! \name Oscillator Definitions
+ */
+//! @{
+
+// RCOsc has no custom calibration by default. Set the following definition to
+// the appropriate value if a custom RCOsc calibration has been applied to your
+// part.
+//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz.
+
+#define FOSC32 32768 //!< Osc32 frequency: Hz.
+#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods.
+
+#define FOSC0 12000000 //!< Osc0 frequency: Hz.
+#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods.
+
+// Osc1 crystal is not mounted by default. Set the following definitions to the
+// appropriate values if a custom Osc1 crystal is mounted on your board.
+//#define FOSC1 12000000 //!< Osc1 frequency: Hz.
+//#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods.
+
+//! @}
+
+
+//! Number of LEDs.
+#define LED_COUNT 3
+
+/*! \name GPIO Connections of LEDs
+ */
+//! @{
+#define LED0_GPIO AVR32_PIN_PB19
+#define LED1_GPIO AVR32_PIN_PB20
+#define LED2_GPIO AVR32_PIN_PB21
+//! @}
+
+/*! \name PWM Channels of LEDs
+ */
+//! @{
+#define LED0_PWM 0
+#define LED1_PWM 1
+#define LED2_PWM 2
+//! @}
+
+/*! \name PWM Functions of LEDs
+ */
+//! @{
+#define LED0_PWM_FUNCTION AVR32_PWM_0_FUNCTION
+#define LED1_PWM_FUNCTION AVR32_PWM_1_FUNCTION
+#define LED2_PWM_FUNCTION AVR32_PWM_2_FUNCTION
+//! @}
+
+/*! \name Color Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED_MONO0_GREEN LED0
+#define LED_MONO1_GREEN LED1
+#define LED_MONO2_GREEN LED2
+//! @}
+
+#if 0
+/*! \name SPI Connections of the DIP204 LCD
+ */
+//! @{
+#define DIP204_SPI (&AVR32_SPI1)
+#define DIP204_SPI_NPCS 2
+#define DIP204_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN
+#define DIP204_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION
+#define DIP204_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN
+#define DIP204_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION
+#define DIP204_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN
+#define DIP204_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION
+#define DIP204_SPI_NPCS_PIN AVR32_SPI1_NPCS_2_0_PIN
+#define DIP204_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION
+//! @}
+
+/*! \name GPIO and PWM Connections of the DIP204 LCD Backlight
+ */
+//! @{
+#define DIP204_BACKLIGHT_PIN AVR32_PIN_PB18
+#define DIP204_PWM_CHANNEL 6
+#define DIP204_PWM_PIN AVR32_PWM_6_PIN
+#define DIP204_PWM_FUNCTION AVR32_PWM_6_FUNCTION
+//! @}
+#endif
+
+/*! \name SPI Connections of the AT45DBX Data Flash Memory
+ */
+//! @{
+#define AT45DBX_SPI (&AVR32_SPI1)
+#define AT45DBX_SPI_NPCS 2
+#define AT45DBX_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN
+#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION
+#define AT45DBX_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN
+#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION
+#define AT45DBX_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN
+#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION
+#define AT45DBX_SPI_NPCS2_PIN AVR32_SPI1_NPCS_2_0_PIN
+#define AT45DBX_SPI_NPCS2_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION
+#define AT45DBX_CHIP_RESET AVR32_PIN_PA02
+//! @}
+
+
+/*! \name GPIO and SPI Connections of the SD/MMC Connector
+ */
+//! @{
+//#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02
+//#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA07
+#define SD_MMC_SPI (&AVR32_SPI1)
+#define SD_MMC_SPI_NPCS 1
+#define SD_MMC_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN
+#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION
+#define SD_MMC_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN
+#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION
+#define SD_MMC_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN
+#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION
+#define SD_MMC_SPI_NPCS_PIN AVR32_SPI1_NPCS_1_0_PIN
+#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_1_0_FUNCTION
+//! @}
+
+/* Timer Counter to generate clock for WiFi chip*/
+# define WIFI_TC (&AVR32_TC)
+# define WIFI_TC_CHANNEL_ID 0
+# define WIFI_TC_CHANNEL_PIN AVR32_TC_A0_0_0_PIN
+# define WIFI_TC_CHANNEL_FUNCTION AVR32_TC_A0_0_0_FUNCTION
+// Note that TC_A0_0_0 pin is pin 6 (PB23) on AT32UC3A1512 QFP100.
+
+/* Pin related to WiFi chip communication */
+#ifndef USE_POLL
+ #define USE_POLL
+#endif
+ #define SPI_CS 0
+ #define AVR32_SPI AVR32_SPI1
+ #define GPIO_IRQ_PIN AVR32_PIN_PA03
+ #define GPIO_IRQ AVR32_GPIO_IRQ_7
+ #define GPIO_W_RESET_PIN AVR32_PIN_PA07
+ #define GPIO_W_SHUTDOWN_PIN AVR32_PIN_PA09
+
+/* Pin related to shield communication */
+ #define ARDUINO_HANDSHAKE_PIN AVR32_PIN_PA25
+
+ #define AVR32_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX
+ #define AVR32_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX
+
+
+#if 0
+/*! \name TWI Connections of the Spare TWI Connector
+ */
+//! @{
+#define SPARE_TWI (&AVR32_TWI)
+#define SPARE_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define SPARE_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define SPARE_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define SPARE_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+//! @}
+
+
+/*! \name SPI Connections of the Spare SPI Connector
+ */
+//! @{
+#define SPARE_SPI (&AVR32_SPI0)
+#define SPARE_SPI_NPCS 0
+#define SPARE_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define SPARE_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define SPARE_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define SPARE_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define SPARE_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define SPARE_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define SPARE_SPI_NPCS_PIN AVR32_SPI0_NPCS_0_0_PIN
+#define SPARE_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION
+//! @}
+#endif
+
+#endif // _ARDUINO_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c
new file mode 100644
index 0000000..d7cd439
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c
@@ -0,0 +1,346 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1100 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1100 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "preprocessor.h"
+#include "compiler.h"
+#include "arduino.h"
+#include "led.h"
+
+
+//! Structure describing LED hardware connections.
+typedef const struct
+{
+ struct
+ {
+ U32 PORT; //!< LED GPIO port.
+ U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port.
+ } GPIO; //!< LED GPIO descriptor.
+ struct
+ {
+ S32 CHANNEL; //!< LED PWM channel (< 0 if N/A).
+ S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A).
+ } PWM; //!< LED PWM descriptor.
+} tLED_DESCRIPTOR;
+
+
+//! Hardware descriptors of all LEDs.
+static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] =
+{
+#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \
+ { \
+ {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\
+ {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \
+ },
+ MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~)
+#undef INSERT_LED_DESCRIPTOR
+};
+
+
+//! Saved state of all LEDs.
+static volatile U32 LED_State = (1 << LED_COUNT) - 1;
+
+
+U32 LED_Read_Display(void)
+{
+ return LED_State;
+}
+
+
+void LED_Display(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor;
+ volatile avr32_gpio_port_t *led_gpio_port;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ LED_State = leds;
+
+ // For all LEDs...
+ for (led_descriptor = &LED_DESCRIPTOR[0];
+ led_descriptor < LED_DESCRIPTOR + LED_COUNT;
+ led_descriptor++)
+ {
+ // Set the LED to the requested state.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ }
+}
+
+
+U32 LED_Read_Display_Mask(U32 mask)
+{
+ return Rd_bits(LED_State, mask);
+}
+
+
+void LED_Display_Mask(U32 mask, U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ mask &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Wr_bits(LED_State, mask, leds);
+
+ // While there are specified LEDs left to manage...
+ while (mask)
+ {
+ // Select the next specified LED and set it to the requested state.
+ led_shift = 1 + ctz(mask);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ leds >>= led_shift - 1;
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ mask >>= led_shift;
+ }
+}
+
+
+Bool LED_Test(U32 leds)
+{
+ return Tst_bits(LED_State, leds);
+}
+
+
+void LED_Off(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Clr_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it off.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_On(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Set_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it on.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_Toggle(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Tgl_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and toggle it.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+U32 LED_Read_Display_Field(U32 field)
+{
+ return Rd_bitfield(LED_State, field);
+}
+
+
+void LED_Display_Field(U32 field, U32 leds)
+{
+ // Move the bit-field to the appropriate position for the bit-mask.
+ LED_Display_Mask(field, leds << ctz(field));
+}
+
+
+U8 LED_Get_Intensity(U32 led)
+{
+ tLED_DESCRIPTOR *led_descriptor;
+
+ // Check that the argument value is valid.
+ led = ctz(led);
+ led_descriptor = &LED_DESCRIPTOR[led];
+ if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0;
+
+ // Return the duty cycle value if the LED PWM channel is enabled, else 0.
+ return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ?
+ AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0;
+}
+
+
+void LED_Set_Intensity(U32 leds, U8 intensity)
+{
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_pwm_channel_t *led_pwm_channel;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // For each specified LED...
+ for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift)
+ {
+ // Select the next specified LED and check that it has a PWM channel.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ if (led_descriptor->PWM.CHANNEL < 0) continue;
+
+ // Initialize or update the LED PWM channel.
+ led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL];
+ if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)))
+ {
+ led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) &
+ ~(AVR32_PWM_CALG_MASK |
+ AVR32_PWM_CPOL_MASK |
+ AVR32_PWM_CPD_MASK);
+ led_pwm_channel->cprd = 0x000000FF;
+ led_pwm_channel->cdty = intensity;
+ AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL;
+ }
+ else
+ {
+ AVR32_PWM.isr;
+ while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL)));
+ led_pwm_channel->cupd = intensity;
+ }
+
+ // Switch the LED pin to its PWM function.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (led_descriptor->PWM.FUNCTION & 0x1)
+ {
+ led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK;
+ }
+ if (led_descriptor->PWM.FUNCTION & 0x2)
+ {
+ led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK;
+ }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h
new file mode 100644
index 0000000..a577124
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h
@@ -0,0 +1,191 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1100 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1100 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _LED_H_
+#define _LED_H_
+
+#include "compiler.h"
+
+
+/*! \name Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED0 0x01
+#define LED1 0x02
+#define LED2 0x04
+#define LED3 0x08
+#define LED4 0x10
+#define LED5 0x20
+#define LED6 0x40
+#define LED7 0x80
+//! @}
+
+
+/*! \brief Gets the last state of all LEDs set through the LED API.
+ *
+ * \return State of all LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display(void);
+
+/*! \brief Sets the state of all LEDs.
+ *
+ * \param leds New state of all LEDs (1 bit per LED).
+ *
+ * \note The pins of all LEDs are set to GPIO output mode.
+ */
+extern void LED_Display(U32 leds);
+
+/*! \brief Gets the last state of the specified LEDs set through the LED API.
+ *
+ * \param mask LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Mask(U32 mask);
+
+/*! \brief Sets the state of the specified LEDs.
+ *
+ * \param mask LEDs of which to set the state (1 bit per LED).
+ *
+ * \param leds New state of the specified LEDs (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Mask(U32 mask, U32 leds);
+
+/*! \brief Tests the last state of the specified LEDs set through the LED API.
+ *
+ * \param leds LEDs of which to test the state (1 bit per LED).
+ *
+ * \return \c TRUE if at least one of the specified LEDs has a state on, else
+ * \c FALSE.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern Bool LED_Test(U32 leds);
+
+/*! \brief Turns off the specified LEDs.
+ *
+ * \param leds LEDs to turn off (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Off(U32 leds);
+
+/*! \brief Turns on the specified LEDs.
+ *
+ * \param leds LEDs to turn on (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_On(U32 leds);
+
+/*! \brief Toggles the specified LEDs.
+ *
+ * \param leds LEDs to toggle (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Toggle(U32 leds);
+
+/*! \brief Gets as a bit-field the last state of the specified LEDs set through
+ * the LED API.
+ *
+ * \param field LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED, beginning with the first
+ * specified LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Field(U32 field);
+
+/*! \brief Sets as a bit-field the state of the specified LEDs.
+ *
+ * \param field LEDs of which to set the state (1 bit per LED).
+ * \param leds New state of the specified LEDs (1 bit per LED, beginning with
+ * the first specified LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Field(U32 field, U32 leds);
+
+/*! \brief Gets the intensity of the specified LED.
+ *
+ * \param led LED of which to get the intensity (1 bit per LED; only the least
+ * significant set bit is used).
+ *
+ * \return Intensity of the specified LED (0x00 to 0xFF).
+ *
+ * \warning The PWM channel of the specified LED is supposed to be used only by
+ * this module.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U8 LED_Get_Intensity(U32 led);
+
+/*! \brief Sets the intensity of the specified LEDs.
+ *
+ * \param leds LEDs of which to set the intensity (1 bit per LED).
+ * \param intensity New intensity of the specified LEDs (0x00 to 0xFF).
+ *
+ * \warning The PWM channels of the specified LEDs are supposed to be used only
+ * by this module.
+ *
+ * \note The pins of the specified LEDs are set to PWM output mode.
+ */
+extern void LED_Set_Intensity(U32 leds, U8 intensity);
+
+
+#endif // _LED_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h
new file mode 100644
index 0000000..edda44c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h
@@ -0,0 +1,433 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1105 board header file.
+ *
+ * This file contains definitions and services related to the features of the
+ * EVK1105 board rev. B.
+ *
+ * To use this board, define BOARD=EVK1105.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _EVK1105_H_
+#define _EVK1105_H_
+
+#ifdef EVK1105_REV3
+# include "evk1105_rev3.h"
+#else
+
+#include "compiler.h"
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+# include "led.h"
+#endif // __AVR32_ABI_COMPILER__
+
+
+/*! \name Oscillator Definitions
+ */
+//! @{
+
+// RCOsc has no custom calibration by default. Set the following definition to
+// the appropriate value if a custom RCOsc calibration has been applied to your
+// part.
+//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz.
+
+#define FOSC32 32768 //!< Osc32 frequency: Hz.
+#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods.
+
+#define FOSC0 12000000 //!< Osc0 frequency: Hz.
+#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods.
+
+#define FOSC1 11289600 //!< Osc1 frequency: Hz
+#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods.
+
+
+//! @}
+
+
+/*! \name SDRAM Definitions
+ */
+//! @{
+
+//! Part header file of used SDRAM(s).
+#define SDRAM_PART_HDR "MT48LC16M16A2TG7E/mt48lc16m16a2tg7e.h"
+
+//! Data bus width to use the SDRAM(s) with (16 or 32 bits; always 16 bits on
+//! UC3).
+#define SDRAM_DBW 16
+//! @}
+
+
+/*! \name USB Definitions
+ */
+//! @{
+//! Multiplexed pin used for USB_ID: AVR32_USBB_USB_ID_x_x.
+//! To be selected according to the AVR32_USBB_USB_ID_x_x_PIN and
+//! AVR32_USBB_USB_ID_x_x_FUNCTION definitions from <avr32/uc3axxxx.h>.
+#define AVR32_USBB_USB_ID_0_2_PIN 21
+#define AVR32_USBB_USB_ID_0_2_FUNCTION 2
+#define USB_ID AVR32_USBB_USB_ID_0_2
+
+//! Multiplexed pin used for USB_VBOF: AVR32_USBB_USB_VBOF_x_x.
+//! To be selected according to the AVR32_USBB_USB_VBOF_x_x_PIN and
+//! AVR32_USBB_USB_VBOF_x_x_FUNCTION definitions from <avr32/uc3axxxx.h>.
+# define USB_VBOF AVR32_USBB_USB_VBOF_0_1
+
+
+//! Active level of the USB_VBOF output pin.
+# define USB_VBOF_ACTIVE_LEVEL LOW
+
+//! USB overcurrent detection pin.
+# define USB_OVERCURRENT_DETECT_PIN AVR32_PIN_PX15
+
+//! @}
+
+
+//! GPIO connection of the MAC PHY PWR_DOWN/INT signal.
+# define MACB_INTERRUPT_PIN AVR32_PIN_PA26
+
+
+
+//! Number of LEDs.
+#define LED_COUNT 4
+
+/*! \name GPIO Connections of LEDs
+ */
+//! @{
+# define LED0_GPIO AVR32_PIN_PB27
+# define LED1_GPIO AVR32_PIN_PB28
+# define LED2_GPIO AVR32_PIN_PA05
+# define LED3_GPIO AVR32_PIN_PA06
+//! @}
+
+/*! \name Color Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED_MONO0_GREEN LED0
+#define LED_MONO1_GREEN LED1
+#define LED_MONO2_GREEN LED2
+#define LED_MONO3_GREEN LED3
+//! @}
+
+/*! \name PWM Channels of LEDs
+ */
+//! @{
+#define LED0_PWM 4
+#define LED1_PWM 5
+#define LED2_PWM (-1)
+#define LED3_PWM (-1)
+//! @}
+
+/*! \name PWM Functions of LEDs
+ */
+//! @{
+/* TODO: Implement PWM functionality */
+#define LED0_PWM_FUNCTION (-1)//AVR32_PWM_0_FUNCTION
+#define LED1_PWM_FUNCTION (-1)//AVR32_PWM_1_FUNCTION
+#define LED2_PWM_FUNCTION (-1)
+#define LED3_PWM_FUNCTION (-1)
+//! @}
+
+//! External interrupt connection of touch sensor.
+#define QT1081_EIC_EXTINT_PIN AVR32_EIC_EXTINT_1_PIN
+#define QT1081_EIC_EXTINT_FUNCTION AVR32_EIC_EXTINT_1_FUNCTION
+#define QT1081_EIC_EXTINT_IRQ AVR32_EIC_IRQ_1
+#define QT1081_EIC_EXTINT_INT AVR32_EIC_INT1
+/*! \name Touch sensor low power mode select
+ */
+#define QT1081_LP_MODE AVR32_PIN_PB29
+
+/*! \name GPIO Connections of touch buttons
+ */
+//! @{
+#define QT1081_TOUCH_SENSOR_0 AVR32_PIN_PB22
+#define QT1081_TOUCH_SENSOR_0_PRESSED 1
+#define QT1081_TOUCH_SENSOR_1 AVR32_PIN_PB23
+#define QT1081_TOUCH_SENSOR_1_PRESSED 1
+#define QT1081_TOUCH_SENSOR_2 AVR32_PIN_PB24
+#define QT1081_TOUCH_SENSOR_2_PRESSED 1
+#define QT1081_TOUCH_SENSOR_3 AVR32_PIN_PB25
+#define QT1081_TOUCH_SENSOR_3_PRESSED 1
+#define QT1081_TOUCH_SENSOR_4 AVR32_PIN_PB26
+#define QT1081_TOUCH_SENSOR_4_PRESSED 1
+
+#define QT1081_TOUCH_SENSOR_ENTER QT1081_TOUCH_SENSOR_4
+#define QT1081_TOUCH_SENSOR_ENTER_PRESSED QT1081_TOUCH_SENSOR_4_PRESSED
+#define QT1081_TOUCH_SENSOR_LEFT QT1081_TOUCH_SENSOR_3
+#define QT1081_TOUCH_SENSOR_LEFT_PRESSED QT1081_TOUCH_SENSOR_3_PRESSED
+#define QT1081_TOUCH_SENSOR_RIGHT QT1081_TOUCH_SENSOR_2
+#define QT1081_TOUCH_SENSOR_RIGHT_PRESSED QT1081_TOUCH_SENSOR_2_PRESSED
+#define QT1081_TOUCH_SENSOR_UP QT1081_TOUCH_SENSOR_0
+#define QT1081_TOUCH_SENSOR_UP_PRESSED QT1081_TOUCH_SENSOR_0_PRESSED
+#define QT1081_TOUCH_SENSOR_DOWN QT1081_TOUCH_SENSOR_1
+#define QT1081_TOUCH_SENSOR_DOWN_PRESSED QT1081_TOUCH_SENSOR_1_PRESSED
+//! @}
+
+/*! \name SPI Connections of the AT45DBX Data Flash Memory
+ */
+//! @{
+#define AT45DBX_SPI (&AVR32_SPI0)
+#define AT45DBX_SPI_NPCS 0
+#define AT45DBX_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define AT45DBX_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define AT45DBX_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define AT45DBX_SPI_NPCS0_PIN AVR32_SPI0_NPCS_0_0_PIN
+#define AT45DBX_SPI_NPCS0_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION
+//! @}
+
+/*! \name GPIO and SPI Connections of the SD/MMC Connector
+ */
+//! @{
+#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02
+#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA18
+#define SD_MMC_SPI (&AVR32_SPI0)
+#define SD_MMC_SPI_NPCS 1
+#define SD_MMC_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define SD_MMC_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define SD_MMC_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define SD_MMC_SPI_NPCS_PIN AVR32_SPI0_NPCS_1_0_PIN
+#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_1_0_FUNCTION
+//! @}
+
+
+/*! \name TWI expansion
+ */
+//! @{
+#define EXPANSION_TWI (&AVR32_TWI)
+#define EXPANSION_RESET AVR32_PIN_PX16
+#define EXPANSION_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define EXPANSION_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define EXPANSION_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define EXPANSION_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+//! @}
+
+/*! \name Wireless expansion
+ */
+
+#define WEXPANSION_EXTINT_PIN AVR32_EIC_EXTINT_8_PIN
+#define WEXPANSION_EXTINT_FUNCTION AVR32_EIC_EXTINT_8_FUNCTION
+#define WEXPANSION_GPIO1 AVR32_PIN_PB30
+#define WEXPANSION_GPIO2 AVR32_PIN_PB31
+
+#define WEXPANSION_SPI (&AVR32_SPI0)
+#define WEXPANSION_SPI_NPCS 2
+#define WEXPANSION_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define WEXPANSION_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define WEXPANSION_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define WEXPANSION_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define WEXPANSION_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define WEXPANSION_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define WEXPANSION_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN
+#define WEXPANSION_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION
+
+//! @}
+
+/*! \name ET024006DHU TFT display
+ */
+//! @{
+
+#define ET024006DHU_TE_PIN AVR32_PIN_PX19
+#define ET024006DHU_RESET_PIN AVR32_PIN_PX22
+#define ET024006DHU_BL_PIN AVR32_PWM_6_PIN
+#define ET024006DHU_BL_FUNCTION AVR32_PWM_6_FUNCTION
+#define ET024006DHU_DNC_PIN AVR32_EBI_ADDR_21_1_PIN
+#define ET024006DHU_DNC_FUNCTION AVR32_EBI_ADDR_21_1_FUNCTION
+#define ET024006DHU_EBI_NCS_PIN AVR32_EBI_NCS_0_1_PIN
+#define ET024006DHU_EBI_NCS_FUNCTION AVR32_EBI_NCS_0_1_FUNCTION
+
+//! @}
+/*! \name Optional SPI connection to the TFT
+ */
+//! @{
+
+#define ET024006DHU_SPI (&AVR32_SPI0)
+#define ET024006DHU_SPI_NPCS 3
+#define ET024006DHU_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define ET024006DHU_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define ET024006DHU_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define ET024006DHU_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define ET024006DHU_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define ET024006DHU_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define ET024006DHU_SPI_NPCS_PIN AVR32_SPI1_NPCS_3_0_PIN
+#define ET024006DHU_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_3_0_FUNCTION
+
+//! @}
+
+
+/*! \name Audio amplifier connection to the DAC
+ */
+//! @{
+
+#define TPA6130_ABDAC (&AVR32_ABDAC)
+
+#define TPA6130_DATA0_PIN AVR32_ABDAC_DATA_0_1_PIN
+#define TPA6130_DATA0_FUNCTION AVR32_ABDAC_DATA_0_1_FUNCTION
+#define TPA6130_DATAN0_PIN AVR32_ABDAC_DATAN_0_1_PIN
+#define TPA6130_DATAN0_FUNCTION AVR32_ABDAC_DATAN_0_1_FUNCTION
+#define TPA6130_DATA1_PIN AVR32_ABDAC_DATA_1_1_PIN
+#define TPA6130_DATA1_FUNCTION AVR32_ABDAC_DATA_1_1_FUNCTION
+#define TPA6130_DATAN1_PIN AVR32_ABDAC_DATAN_1_1_PIN
+#define TPA6130_DATAN1_FUNCTION AVR32_ABDAC_DATAN_1_1_FUNCTION
+
+#define TPA6130_ABDAC_PDCA_PID AVR32_PDCA_PID_ABDAC_TX
+#define TPA6130_ABDAC_PDCA_CHANNEL 0
+#define TPA6130_ABDAC_PDCA_IRQ AVR32_PDCA_IRQ_0
+#define TPA6130_ABDAC_PDCA_INT_LEVEL AVR32_INTC_INT3
+
+#define TPA6130_TWI (&AVR32_TWI)
+#define TPA6130_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define TPA6130_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define TPA6130_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define TPA6130_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+
+//! }@
+/*! \name TI TLV320AIC23B sound chip
+ */
+//! @{
+#define TLV320_SSC (&AVR32_SSC)
+#define TLV320_SSC_TX_CLOCK_PIN AVR32_SSC_TX_CLOCK_0_PIN
+#define TLV320_SSC_TX_CLOCK_FUNCTION AVR32_SSC_TX_CLOCK_0_FUNCTION
+#define TLV320_SSC_TX_DATA_PIN AVR32_SSC_TX_DATA_0_PIN
+#define TLV320_SSC_TX_DATA_FUNCTION AVR32_SSC_TX_DATA_0_FUNCTION
+#define TLV320_SSC_TX_FRAME_SYNC_PIN AVR32_SSC_TX_FRAME_SYNC_0_PIN
+#define TLV320_SSC_TX_FRAME_SYNC_FUNCTION AVR32_SSC_TX_FRAME_SYNC_0_FUNCTION
+
+#define TLV320_TWI (&AVR32_TWI)
+#define TLV320_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define TLV320_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define TLV320_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define TLV320_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+
+#define TLV320_PM_GCLK_PIN AVR32_PM_GCLK_0_0_PIN
+#define TLV320_PM_GCLK_FUNCTION AVR32_PM_GCLK_0_0_FUNCTION
+//! @}
+
+////! \name SPI: Apple Authentication Chip Hardware Connections
+////! @{
+#define IPOD_AUTH_CHIP_SPI (&AVR32_SPI0)
+#define IPOD_AUTH_CHIP_SPI_IRQ AVR32_SPI0_IRQ
+#define IPOD_AUTH_CHIP_SPI_NPCS 2
+#define IPOD_AUTH_CHIP_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN
+#define IPOD_AUTH_CHIP_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN
+#define IPOD_AUTH_CHIP_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN
+#define IPOD_AUTH_CHIP_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN
+#define IPOD_AUTH_CHIP_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION
+#define IPOD_AUTH_CHIP_SPI_N_RESET_PIN AVR32_PIN_PB30
+#define IPOD_AUTH_CHIP_SPI_CP_READY_PIN AVR32_PIN_PB31
+//! }@
+
+/*! \name Connections of the iPOD Authentication Coprocessor
+ */
+//! @{
+
+#define IPOD_AUTH_CHIP_TWI (&AVR32_TWI)
+#define IPOD_AUTH_CHIP_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN
+#define IPOD_AUTH_CHIP_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN
+#define IPOD_AUTH_CHIP_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION
+#define IPOD_AUTH_CHIP_TWI_N_RESET_PIN AVR32_PIN_PX16
+
+//! @}
+
+/*! \name USART connection to the UC3B board controller
+ */
+//! @{
+
+#define USART0_RXD_PIN AVR32_USART0_RXD_0_0_PIN
+#define USART0_RXD_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION
+#define USART0_TXD_PIN AVR32_USART0_TXD_0_0_PIN
+#define USART0_TXD_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION
+#define USART0_RTS_PIN AVR32_USART0_RTS_0_0_PIN
+#define USART0_RTS_FUNCTION AVR32_USART0_RTS_0_0_FUNCTION
+#define USART0_CTS_PIN AVR32_USART0_CTS_0_0_PIN
+#define USART0_CTS_FUNCTION AVR32_USART0_CTS_0_0_FUNCTION
+
+//! @}
+
+#define ADC_VEXT_PIN AVR32_ADC_AD_7_PIN
+#define ADC_VEXT_FUNCTION AVR32_ADC_AD_7_FUNCTION
+
+/*! \name LCD Connections of the ET024006DHU display
+ */
+//! @{
+#define ET024006DHU_SMC_USE_NCS 0
+#define ET024006DHU_SMC_COMPONENT_CS "smc_et024006dhu.h"
+
+#define ET024006DHU_EBI_DATA_0 AVR32_EBI_DATA_0
+#define ET024006DHU_EBI_DATA_1 AVR32_EBI_DATA_1
+#define ET024006DHU_EBI_DATA_2 AVR32_EBI_DATA_2
+#define ET024006DHU_EBI_DATA_3 AVR32_EBI_DATA_3
+#define ET024006DHU_EBI_DATA_4 AVR32_EBI_DATA_4
+#define ET024006DHU_EBI_DATA_5 AVR32_EBI_DATA_5
+#define ET024006DHU_EBI_DATA_6 AVR32_EBI_DATA_6
+#define ET024006DHU_EBI_DATA_7 AVR32_EBI_DATA_7
+#define ET024006DHU_EBI_DATA_8 AVR32_EBI_DATA_8
+#define ET024006DHU_EBI_DATA_9 AVR32_EBI_DATA_9
+#define ET024006DHU_EBI_DATA_10 AVR32_EBI_DATA_10
+#define ET024006DHU_EBI_DATA_11 AVR32_EBI_DATA_11
+#define ET024006DHU_EBI_DATA_12 AVR32_EBI_DATA_12
+#define ET024006DHU_EBI_DATA_13 AVR32_EBI_DATA_13
+#define ET024006DHU_EBI_DATA_14 AVR32_EBI_DATA_14
+#define ET024006DHU_EBI_DATA_15 AVR32_EBI_DATA_15
+
+#define ET024006DHU_EBI_ADDR_21 AVR32_EBI_ADDR_21_1
+
+#define ET024006DHU_EBI_NWE AVR32_EBI_NWE0_0
+#define ET024006DHU_EBI_NRD AVR32_EBI_NRD_0
+#define ET024006DHU_EBI_NCS AVR32_EBI_NCS_0_1
+//! @}
+
+
+#endif // !EVK1105_REVA
+
+#endif // _EVK1105_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c
new file mode 100644
index 0000000..561652a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c
@@ -0,0 +1,346 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1105 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1105 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "preprocessor.h"
+#include "compiler.h"
+#include "evk1105.h"
+#include "led.h"
+
+
+//! Structure describing LED hardware connections.
+typedef const struct
+{
+ struct
+ {
+ U32 PORT; //!< LED GPIO port.
+ U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port.
+ } GPIO; //!< LED GPIO descriptor.
+ struct
+ {
+ S32 CHANNEL; //!< LED PWM channel (< 0 if N/A).
+ S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A).
+ } PWM; //!< LED PWM descriptor.
+} tLED_DESCRIPTOR;
+
+
+//! Hardware descriptors of all LEDs.
+static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] =
+{
+#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \
+ { \
+ {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\
+ {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \
+ },
+ MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~)
+#undef INSERT_LED_DESCRIPTOR
+};
+
+
+//! Saved state of all LEDs.
+static volatile U32 LED_State = (1 << LED_COUNT) - 1;
+
+
+U32 LED_Read_Display(void)
+{
+ return LED_State;
+}
+
+
+void LED_Display(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor;
+ volatile avr32_gpio_port_t *led_gpio_port;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ LED_State = leds;
+
+ // For all LEDs...
+ for (led_descriptor = &LED_DESCRIPTOR[0];
+ led_descriptor < LED_DESCRIPTOR + LED_COUNT;
+ led_descriptor++)
+ {
+ // Set the LED to the requested state.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ }
+}
+
+
+U32 LED_Read_Display_Mask(U32 mask)
+{
+ return Rd_bits(LED_State, mask);
+}
+
+
+void LED_Display_Mask(U32 mask, U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ mask &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Wr_bits(LED_State, mask, leds);
+
+ // While there are specified LEDs left to manage...
+ while (mask)
+ {
+ // Select the next specified LED and set it to the requested state.
+ led_shift = 1 + ctz(mask);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ leds >>= led_shift - 1;
+ if (leds & 1)
+ {
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= 1;
+ mask >>= led_shift;
+ }
+}
+
+
+Bool LED_Test(U32 leds)
+{
+ return Tst_bits(LED_State, leds);
+}
+
+
+void LED_Off(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Clr_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it off.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_On(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Set_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and turn it on.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+void LED_Toggle(U32 leds)
+{
+ // Use the LED descriptors to get the connections of a given LED to the MCU.
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // Make sure only existing LEDs are specified.
+ leds &= (1 << LED_COUNT) - 1;
+
+ // Update the saved state of all LEDs with the requested changes.
+ Tgl_bits(LED_State, leds);
+
+ // While there are specified LEDs left to manage...
+ while (leds)
+ {
+ // Select the next specified LED and toggle it.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
+ led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
+ leds >>= led_shift;
+ }
+}
+
+
+U32 LED_Read_Display_Field(U32 field)
+{
+ return Rd_bitfield(LED_State, field);
+}
+
+
+void LED_Display_Field(U32 field, U32 leds)
+{
+ // Move the bit-field to the appropriate position for the bit-mask.
+ LED_Display_Mask(field, leds << ctz(field));
+}
+
+
+U8 LED_Get_Intensity(U32 led)
+{
+ tLED_DESCRIPTOR *led_descriptor;
+
+ // Check that the argument value is valid.
+ led = ctz(led);
+ led_descriptor = &LED_DESCRIPTOR[led];
+ if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0;
+
+ // Return the duty cycle value if the LED PWM channel is enabled, else 0.
+ return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ?
+ AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0;
+}
+
+
+void LED_Set_Intensity(U32 leds, U8 intensity)
+{
+ tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
+ volatile avr32_pwm_channel_t *led_pwm_channel;
+ volatile avr32_gpio_port_t *led_gpio_port;
+ U8 led_shift;
+
+ // For each specified LED...
+ for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift)
+ {
+ // Select the next specified LED and check that it has a PWM channel.
+ led_shift = 1 + ctz(leds);
+ led_descriptor += led_shift;
+ if (led_descriptor->PWM.CHANNEL < 0) continue;
+
+ // Initialize or update the LED PWM channel.
+ led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL];
+ if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)))
+ {
+ led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) &
+ ~(AVR32_PWM_CALG_MASK |
+ AVR32_PWM_CPOL_MASK |
+ AVR32_PWM_CPD_MASK);
+ led_pwm_channel->cprd = 0x000000FF;
+ led_pwm_channel->cdty = intensity;
+ AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL;
+ }
+ else
+ {
+ AVR32_PWM.isr;
+ while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL)));
+ led_pwm_channel->cupd = intensity;
+ }
+
+ // Switch the LED pin to its PWM function.
+ led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
+ if (led_descriptor->PWM.FUNCTION & 0x1)
+ {
+ led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK;
+ }
+ if (led_descriptor->PWM.FUNCTION & 0x2)
+ {
+ led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK;
+ }
+ else
+ {
+ led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK;
+ }
+ led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK;
+ }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h
new file mode 100644
index 0000000..7766b6a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h
@@ -0,0 +1,187 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AT32UC3A EVK1105 board LEDs support package.
+ *
+ * This file contains definitions and services related to the LED features of
+ * the EVK1105 board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 AT32UC3A devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _LED_H_
+#define _LED_H_
+
+#include "compiler.h"
+
+
+/*! \name Identifiers of LEDs to Use with LED Functions
+ */
+//! @{
+#define LED0 0x01
+#define LED1 0x02
+#define LED2 0x04
+#define LED3 0x08
+//! @}
+
+
+/*! \brief Gets the last state of all LEDs set through the LED API.
+ *
+ * \return State of all LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display(void);
+
+/*! \brief Sets the state of all LEDs.
+ *
+ * \param leds New state of all LEDs (1 bit per LED).
+ *
+ * \note The pins of all LEDs are set to GPIO output mode.
+ */
+extern void LED_Display(U32 leds);
+
+/*! \brief Gets the last state of the specified LEDs set through the LED API.
+ *
+ * \param mask LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Mask(U32 mask);
+
+/*! \brief Sets the state of the specified LEDs.
+ *
+ * \param mask LEDs of which to set the state (1 bit per LED).
+ *
+ * \param leds New state of the specified LEDs (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Mask(U32 mask, U32 leds);
+
+/*! \brief Tests the last state of the specified LEDs set through the LED API.
+ *
+ * \param leds LEDs of which to test the state (1 bit per LED).
+ *
+ * \return \c TRUE if at least one of the specified LEDs has a state on, else
+ * \c FALSE.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern Bool LED_Test(U32 leds);
+
+/*! \brief Turns off the specified LEDs.
+ *
+ * \param leds LEDs to turn off (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Off(U32 leds);
+
+/*! \brief Turns on the specified LEDs.
+ *
+ * \param leds LEDs to turn on (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_On(U32 leds);
+
+/*! \brief Toggles the specified LEDs.
+ *
+ * \param leds LEDs to toggle (1 bit per LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Toggle(U32 leds);
+
+/*! \brief Gets as a bit-field the last state of the specified LEDs set through
+ * the LED API.
+ *
+ * \param field LEDs of which to get the state (1 bit per LED).
+ *
+ * \return State of the specified LEDs (1 bit per LED, beginning with the first
+ * specified LED).
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U32 LED_Read_Display_Field(U32 field);
+
+/*! \brief Sets as a bit-field the state of the specified LEDs.
+ *
+ * \param field LEDs of which to set the state (1 bit per LED).
+ * \param leds New state of the specified LEDs (1 bit per LED, beginning with
+ * the first specified LED).
+ *
+ * \note The pins of the specified LEDs are set to GPIO output mode.
+ */
+extern void LED_Display_Field(U32 field, U32 leds);
+
+/*! \brief Gets the intensity of the specified LED.
+ *
+ * \param led LED of which to get the intensity (1 bit per LED; only the least
+ * significant set bit is used).
+ *
+ * \return Intensity of the specified LED (0x00 to 0xFF).
+ *
+ * \warning The PWM channel of the specified LED is supposed to be used only by
+ * this module.
+ *
+ * \note The GPIO pin configuration of all LEDs is left unchanged.
+ */
+extern U8 LED_Get_Intensity(U32 led);
+
+/*! \brief Sets the intensity of the specified LEDs.
+ *
+ * \param leds LEDs of which to set the intensity (1 bit per LED).
+ * \param intensity New intensity of the specified LEDs (0x00 to 0xFF).
+ *
+ * \warning The PWM channels of the specified LEDs are supposed to be used only
+ * by this module.
+ *
+ * \note The pins of the specified LEDs are set to PWM output mode.
+ */
+extern void LED_Set_Intensity(U32 leds, U8 intensity);
+
+
+#endif // _LED_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h
new file mode 100644
index 0000000..78ee91e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h
@@ -0,0 +1,120 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Standard board header file.
+ *
+ * This file includes the appropriate board header file according to the
+ * defined board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _BOARD_H_
+#define _BOARD_H_
+
+#include <avr32/io.h>
+
+/*! \name Base Boards
+ */
+//! @{
+#define EVK1100 1 //!< AT32UC3A EVK1100 board.
+#define EVK1101 2 //!< AT32UC3B EVK1101 board.
+#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board.
+#define EVK1104 4 //!< AT32UC3A3 EVK1104 board.
+#define EVK1105 5 //!< AT32UC3A EVK1105 board.
+#define STK1000 6 //!< AT32AP7000 STK1000 board.
+#define NGW100 7 //!< AT32AP7000 NGW100 board.
+#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board.
+#define UC3L_EK 9 //!< AT32UC3L-EK board.
+#define USER_BOARD 99 //!< User-reserved board (if any).
+//! @}
+
+/*! \name Extension Boards
+ */
+//! @{
+#define EXT1102 1 //!< AT32UC3B EXT1102 board.
+#define MC300 2 //!< AT32UC3 MC300 board.
+#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any).
+//! @}
+
+#if BOARD == EVK1100
+ #include "EVK1100/evk1100.h"
+#elif BOARD == EVK1101
+ #include "EVK1101/evk1101.h"
+#elif BOARD == UC3C_EK
+ #include "UC3C_EK/uc3c_ek.h"
+#elif BOARD == EVK1104
+ #include "EVK1104/evk1104.h"
+#elif BOARD == EVK1105
+ #include "EVK1105/evk1105.h"
+#elif BOARD == STK1000
+ #include "STK1000/stk1000.h"
+#elif BOARD == NGW100
+ #include "NGW100/ngw100.h"
+#elif BOARD == STK600_RCUC3L0
+ #include "STK600/RCUC3L0/stk600_rcuc3l0.h"
+#elif BOARD == UC3L_EK
+ #include "UC3L_EK/uc3l_ek.h"
+#elif BOARD == ARDUINO
+ #include "ARDUINO/arduino.h"
+#else
+ #error No known AVR32 board defined
+#endif
+
+#if (defined EXT_BOARD)
+ #if EXT_BOARD == EXT1102
+ #include "EXT1102/ext1102.h"
+ #elif EXT_BOARD == MC300
+ #include "MC300/mc300.h"
+ #elif EXT_BOARD == USER_EXT_BOARD
+ // User-reserved area: #include the header file of your extension board here
+ // (if any).
+ #endif
+#endif
+
+
+#ifndef FRCOSC
+ #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency.
+#endif
+
+
+#endif // _BOARD_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori
new file mode 100644
index 0000000..30052c8
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori
@@ -0,0 +1,121 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Standard board header file.
+ *
+ * This file includes the appropriate board header file according to the
+ * defined board.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _BOARD_H_
+#define _BOARD_H_
+
+#include <avr32/io.h>
+
+/*! \name Base Boards
+ */
+//! @{
+#define EVK1100 1 //!< AT32UC3A EVK1100 board.
+#define EVK1101 2 //!< AT32UC3B EVK1101 board.
+#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board.
+#define EVK1104 4 //!< AT32UC3A3 EVK1104 board.
+#define EVK1105 5 //!< AT32UC3A EVK1105 board.
+#define STK1000 6 //!< AT32AP7000 STK1000 board.
+#define NGW100 7 //!< AT32AP7000 NGW100 board.
+#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board.
+#define UC3L_EK 9 //!< AT32UC3L-EK board.
+#define USER_BOARD 99 //!< User-reserved board (if any).
+//! @}
+
+/*! \name Extension Boards
+ */
+//! @{
+#define EXT1102 1 //!< AT32UC3B EXT1102 board.
+#define MC300 2 //!< AT32UC3 MC300 board.
+#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any).
+//! @}
+
+#if BOARD == EVK1100
+ #include "EVK1100/evk1100.h"
+#elif BOARD == EVK1101
+ #include "EVK1101/evk1101.h"
+#elif BOARD == UC3C_EK
+ #include "UC3C_EK/uc3c_ek.h"
+#elif BOARD == EVK1104
+ #include "EVK1104/evk1104.h"
+#elif BOARD == EVK1105
+ #include "EVK1105/evk1105.h"
+#elif BOARD == STK1000
+ #include "STK1000/stk1000.h"
+#elif BOARD == NGW100
+ #include "NGW100/ngw100.h"
+#elif BOARD == STK600_RCUC3L0
+ #include "STK600/RCUC3L0/stk600_rcuc3l0.h"
+#elif BOARD == UC3L_EK
+ #include "UC3L_EK/uc3l_ek.h"
+#elif BOARD == USER_BOARD
+ // User-reserved area: #include the header file of your board here (if any).
+ #include "user_board.h"
+#else
+ #error No known AVR32 board defined
+#endif
+
+#if (defined EXT_BOARD)
+ #if EXT_BOARD == EXT1102
+ #include "EXT1102/ext1102.h"
+ #elif EXT_BOARD == MC300
+ #include "MC300/mc300.h"
+ #elif EXT_BOARD == USER_EXT_BOARD
+ // User-reserved area: #include the header file of your extension board here
+ // (if any).
+ #endif
+#endif
+
+
+#ifndef FRCOSC
+ #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency.
+#endif
+
+
+#endif // _BOARD_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c
new file mode 100644
index 0000000..d4b1b73
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c
@@ -0,0 +1,672 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Management of the AT45DBX data flash controller through SPI.
+ *
+ * This file manages the accesses to the AT45DBX data flash components.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+//_____ I N C L U D E S ___________________________________________________
+
+#include "conf_access.h"
+
+
+#if AT45DBX_MEM == ENABLE
+
+#include "compiler.h"
+#include "board.h"
+#include "gpio.h"
+#include "spi.h"
+#include "conf_at45dbx.h"
+#include "at45dbx.h"
+#include "printf-stdarg.h"
+
+#if AT45DBX_MEM_CNT > 4
+ #error AT45DBX_MEM_CNT must not exceed 4
+#endif
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+/*! \name AT45DBX Group A Commands
+ */
+//! @{
+#define AT45DBX_CMDA_RD_PAGE 0xD2 //!< Main Memory Page Read (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_ARRAY_LEG 0xE8 //!< Continuous Array Read, Legacy Command (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_ARRAY_LF_SM 0x03 //!< Continuous Array Read, Low-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDA_RD_ARRAY_AF_SM 0x0B //!< Continuous Array Read, Any-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDA_RD_SECTOR_PROT_REG 0x32 //!< Read Sector Protection Register (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_SECTOR_LKDN_REG 0x35 //!< Read Sector Lockdown Register (Serial/8-bit Mode).
+#define AT45DBX_CMDA_RD_SECURITY_REG 0x77 //!< Read Security Register (Serial/8-bit Mode).
+//! @}
+
+/*! \name AT45DBX Group B Commands
+ */
+//! @{
+#define AT45DBX_CMDB_ER_PAGE 0x81 //!< Page Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_ER_BLOCK 0x50 //!< Block Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_ER_SECTOR 0x7C //!< Sector Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_ER_CHIP 0xC794809A //!< Chip Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_XFR_PAGE_TO_BUF1 0x53 //!< Main Memory Page to Buffer 1 Transfer (Serial/8-bit Mode).
+#define AT45DBX_CMDB_XFR_PAGE_TO_BUF2 0x55 //!< Main Memory Page to Buffer 2 Transfer (Serial/8-bit Mode).
+#define AT45DBX_CMDB_CMP_PAGE_TO_BUF1 0x60 //!< Main Memory Page to Buffer 1 Compare (Serial/8-bit Mode).
+#define AT45DBX_CMDB_CMP_PAGE_TO_BUF2 0x61 //!< Main Memory Page to Buffer 2 Compare (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF1_TO_PAGE_ER 0x83 //!< Buffer 1 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF2_TO_PAGE_ER 0x86 //!< Buffer 2 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF1_TO_PAGE 0x88 //!< Buffer 1 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_BUF2_TO_PAGE 0x89 //!< Buffer 2 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_PAGE_TH_BUF1 0x82 //!< Main Memory Page Program through Buffer 1 (Serial/8-bit Mode).
+#define AT45DBX_CMDB_PR_PAGE_TH_BUF2 0x85 //!< Main Memory Page Program through Buffer 2 (Serial/8-bit Mode).
+#define AT45DBX_CMDB_RWR_PAGE_TH_BUF1 0x58 //!< Auto Page Rewrite through Buffer 1 (Serial/8-bit Mode).
+#define AT45DBX_CMDB_RWR_PAGE_TH_BUF2 0x59 //!< Auto Page Rewrite through Buffer 2 (Serial/8-bit Mode).
+//! @}
+
+/*! \name AT45DBX Group C Commands
+ */
+//! @{
+#define AT45DBX_CMDC_RD_BUF1_LF_SM 0xD1 //!< Buffer 1 Read, Low-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF2_LF_SM 0xD3 //!< Buffer 2 Read, Low-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF1_AF_SM 0xD4 //!< Buffer 1 Read, Any-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF2_AF_SM 0xD6 //!< Buffer 2 Read, Any-Frequency Mode (Serial Mode).
+#define AT45DBX_CMDC_RD_BUF1_AF_8M 0x54 //!< Buffer 1 Read, Any-Frequency Mode (8-bit Mode).
+#define AT45DBX_CMDC_RD_BUF2_AF_8M 0x56 //!< Buffer 2 Read, Any-Frequency Mode (8-bit Mode).
+#define AT45DBX_CMDC_WR_BUF1 0x84 //!< Buffer 1 Write (Serial/8-bit Mode).
+#define AT45DBX_CMDC_WR_BUF2 0x87 //!< Buffer 2 Write (Serial/8-bit Mode).
+#define AT45DBX_CMDC_RD_STATUS_REG 0xD7 //!< Status Register Read (Serial/8-bit Mode).
+#define AT45DBX_CMDC_RD_MNFCT_DEV_ID_SM 0x9F //!< Manufacturer and Device ID Read (Serial Mode).
+//! @}
+
+/*! \name AT45DBX Group D Commands
+ */
+//! @{
+#define AT45DBX_CMDD_EN_SECTOR_PROT 0x3D2A7FA9 //!< Enable Sector Protection (Serial/8-bit Mode).
+#define AT45DBX_CMDD_DIS_SECTOR_PROT 0x3D2A7F9A //!< Disable Sector Protection (Serial/8-bit Mode).
+#define AT45DBX_CMDD_ER_SECTOR_PROT_REG 0x3D2A7FCF //!< Erase Sector Protection Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_PR_SECTOR_PROT_REG 0x3D2A7FFC //!< Program Sector Protection Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_LKDN_SECTOR 0x3D2A7F30 //!< Sector Lockdown (Serial/8-bit Mode).
+#define AT45DBX_CMDD_PR_SECURITY_REG 0x9B000000 //!< Program Security Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_PR_CONF_REG 0x3D2A80A6 //!< Program Configuration Register (Serial/8-bit Mode).
+#define AT45DBX_CMDD_DEEP_PWR_DN 0xB9 //!< Deep Power-down (Serial/8-bit Mode).
+#define AT45DBX_CMDD_RSM_DEEP_PWR_DN 0xAB //!< Resume from Deep Power-down (Serial/8-bit Mode).
+//! @}
+
+
+/*! \name Bit-Masks and Values for the Status Register
+ */
+//! @{
+#define AT45DBX_MSK_BUSY 0x80 //!< Busy status bit-mask.
+#define AT45DBX_BUSY 0x00 //!< Busy status value (0x00 when busy, 0x80 when ready).
+#define AT45DBX_MSK_DENSITY 0x3C //!< Device density bit-mask.
+//! @}
+#if AT45DBX_MEM_SIZE == AT45DBX_1MB
+
+/*! \name AT45DB081 Memories
+ */
+//! @{
+#define AT45DB021D_DENSITY 0x14 //!< Device density value.
+#define AT45DBX_DENSITY 0x24 //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 9 //!< Address bits for byte position within buffer.
+
+//! @}
+#elif AT45DBX_MEM_SIZE == AT45DBX_2MB
+/*! \name AT45DB021D Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x21 //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer.
+
+//! @}
+#if 0
+/*! \name AT45DB161 Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x2C //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer.
+
+//! @}
+#endif
+
+#elif AT45DBX_MEM_SIZE == AT45DBX_4MB
+
+/*! \name AT45DB321 Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x34 //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer.
+
+//! @}
+
+#elif AT45DBX_MEM_SIZE == AT45DBX_8MB
+
+/*! \name AT45DB642 Memories
+ */
+//! @{
+#define AT45DBX_DENSITY 0x3C //!< Device density value.
+#define AT45DBX_BYTE_ADDR_BITS 11 //!< Address bits for byte position within buffer.
+
+
+//! @}
+
+#else
+ #error AT45DBX_MEM_SIZE is not defined to a supported value
+#endif
+
+
+
+//! Address bits for page selection.
+#define AT45DBX_PAGE_ADDR_BITS (AT45DBX_MEM_SIZE - AT45DBX_PAGE_BITS)
+
+//! Number of bits for addresses within pages.
+#define AT45DBX_PAGE_BITS (AT45DBX_BYTE_ADDR_BITS - 1)
+
+//! Page size in bytes.
+#define AT45DBX_PAGE_SIZE (1 << AT45DBX_PAGE_BITS)
+
+//! Bit-mask for byte position within buffer in \ref gl_ptr_mem.
+#define AT45DBX_MSK_PTR_BYTE ((1 << AT45DBX_PAGE_BITS) - 1)
+
+//! Bit-mask for page selection in \ref gl_ptr_mem.
+#define AT45DBX_MSK_PTR_PAGE (((1 << AT45DBX_PAGE_ADDR_BITS) - 1) << AT45DBX_PAGE_BITS)
+
+//! Bit-mask for byte position within sector in \ref gl_ptr_mem.
+#define AT45DBX_MSK_PTR_SECTOR ((1 << AT45DBX_SECTOR_BITS) - 1)
+
+
+/*! \brief Sends a dummy byte through SPI.
+ */
+#define spi_write_dummy() spi_write(AT45DBX_SPI, 0xFF)
+
+
+//! Boolean indicating whether memory is in busy state.
+static Bool at45dbx_busy;
+
+//! Memory data pointer.
+static U32 gl_ptr_mem;
+
+//! Sector buffer.
+static U8 sector_buf[AT45DBX_SECTOR_SIZE];
+
+
+/*! \name Control Functions
+ */
+//! @{
+
+
+Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz)
+{
+ // Setup SPI registers according to spiOptions.
+ for (spiOptions.reg = AT45DBX_SPI_FIRST_NPCS;
+ spiOptions.reg < AT45DBX_SPI_FIRST_NPCS + AT45DBX_MEM_CNT;
+ spiOptions.reg++)
+ {
+ if (spi_setupChipReg(AT45DBX_SPI, &spiOptions, pba_hz) != SPI_OK) return KO;
+ }
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+
+ return OK;
+}
+
+
+/*! \brief Selects or unselects a DF memory.
+ *
+ * \param memidx Memory ID of DF to select or unselect.
+ * \param bSelect Boolean indicating whether the DF memory has to be selected.
+ */
+static void at45dbx_chipselect_df(U8 memidx, Bool bSelect)
+{
+ if (bSelect)
+ {
+ // Select SPI chip.
+ spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx);
+ }
+ else
+ {
+ // Unselect SPI chip.
+ spi_unselectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx);
+ }
+}
+
+
+Bool at45dbx_mem_check(void)
+{
+ U8 df;
+ U16 status = 0;
+
+ // DF memory check.
+ for (df = 0; df < AT45DBX_MEM_CNT; df++)
+ {
+ // Select the DF memory to check.
+ at45dbx_chipselect_df(df, TRUE);
+
+ // Send the Status Register Read command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG);
+
+ // Send a dummy byte to read the status register.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &status);
+
+ // Unselect the checked DF memory.
+ at45dbx_chipselect_df(df, FALSE);
+
+ // Unexpected device density value.
+ if ((status & AT45DBX_MSK_DENSITY) < AT45DB021D_DENSITY)
+ {
+ printk("Unexpected device density value: %d (0x%x)\n", (status & AT45DBX_MSK_DENSITY), status);
+ return KO;
+ }
+ }
+
+ return OK;
+}
+
+
+/*! \brief Waits until the DF is ready.
+ */
+static void at45dbx_wait_ready(void)
+{
+ U16 status;
+
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Send the Status Register Read command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG);
+
+ // Read the status register until the DF is ready.
+ do
+ {
+ // Send a dummy byte to read the status register.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &status);
+ } while ((status & AT45DBX_MSK_BUSY) == AT45DBX_BUSY);
+
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+}
+
+
+Bool at45dbx_read_open(U32 sector)
+{
+ U32 addr;
+
+ // Set the global memory pointer to a byte address.
+ gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE.
+
+ // If the DF memory is busy, wait until it's ready.
+ if (at45dbx_busy) at45dbx_wait_ready();
+ at45dbx_busy = FALSE;
+
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Initiate a page read at a given sector.
+
+ // Send the Main Memory Page Read command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDA_RD_PAGE);
+
+ // Send the three address bytes, which comprise:
+ // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits;
+ // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read;
+ // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page.
+ // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local
+ // DF addressing. They are used for DF discrimination when there are several DFs.
+ addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) |
+ Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE);
+ spi_write(AT45DBX_SPI, LSB2W(addr));
+ spi_write(AT45DBX_SPI, LSB1W(addr));
+ spi_write(AT45DBX_SPI, LSB0W(addr));
+
+ // Send 32 don't care clock cycles to initialize the read operation.
+ spi_write_dummy();
+ spi_write_dummy();
+ spi_write_dummy();
+ spi_write_dummy();
+
+ return OK;
+}
+
+
+void at45dbx_read_close(void)
+{
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+}
+
+
+Bool at45dbx_write_open(U32 sector)
+{
+ U32 addr;
+
+ // Set the global memory pointer to a byte address.
+ gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE.
+
+ // If the DF memory is busy, wait until it's ready.
+ if (at45dbx_busy) at45dbx_wait_ready();
+ at45dbx_busy = FALSE;
+
+#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Transfer the content of the current page to buffer 1.
+
+ // Send the Main Memory Page to Buffer 1 Transfer command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDB_XFR_PAGE_TO_BUF1);
+
+ // Send the three address bytes, which comprise:
+ // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits;
+ // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read;
+ // - then AT45DBX_BYTE_ADDR_BITS don't care bits.
+ // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local
+ // DF addressing. They are used for DF discrimination when there are several DFs.
+ addr = Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS;
+ spi_write(AT45DBX_SPI, LSB2W(addr));
+ spi_write(AT45DBX_SPI, LSB1W(addr));
+ spi_write(AT45DBX_SPI, LSB0W(addr));
+
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Wait for end of page transfer.
+ at45dbx_wait_ready();
+#endif
+
+ // Select the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE);
+
+ // Initiate a page write at a given sector.
+
+ // Send the Main Memory Page Program through Buffer 1 command.
+ spi_write(AT45DBX_SPI, AT45DBX_CMDB_PR_PAGE_TH_BUF1);
+
+ // Send the three address bytes, which comprise:
+ // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits;
+ // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be written;
+ // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page.
+ // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local
+ // DF addressing. They are used for DF discrimination when there are several DFs.
+ addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) |
+ Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE);
+ spi_write(AT45DBX_SPI, LSB2W(addr));
+ spi_write(AT45DBX_SPI, LSB1W(addr));
+ spi_write(AT45DBX_SPI, LSB0W(addr));
+
+ return OK;
+}
+
+
+void at45dbx_write_close(void)
+{
+ // While end of logical sector not reached, zero-fill remaining memory bytes.
+ while (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_SECTOR))
+ {
+ spi_write(AT45DBX_SPI, 0x00);
+ gl_ptr_mem++;
+ }
+
+ // Unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+}
+
+
+//! @}
+
+
+/*! \name Single-Byte Access Functions
+ */
+//! @{
+
+
+U8 at45dbx_read_byte(void)
+{
+ U16 data;
+
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously finished a page read.
+ // => We have to access the next page.
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_read_open input parameter is a sector.
+ at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Send a dummy byte to read the next data byte.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &data);
+ gl_ptr_mem++;
+
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+ {
+ // unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return data;
+}
+
+
+Bool at45dbx_write_byte(U8 b)
+{
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously launched a page programming.
+ // => We have to access the next page.
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_write_open input parameter is a sector.
+ at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Write the next data byte.
+ spi_write(AT45DBX_SPI, b);
+ gl_ptr_mem++;
+
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+ {
+ // unselect the DF memory gl_ptr_mem points to in order to program the page.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return OK;
+}
+
+
+//! @}
+
+
+/*! \name Multiple-Sector Access Functions
+ */
+//! @{
+
+
+Bool at45dbx_read_multiple_sector(U16 nb_sector)
+{
+ while (nb_sector--)
+ {
+ // Read the next sector.
+ at45dbx_read_sector_2_ram(sector_buf);
+ at45dbx_read_multiple_sector_callback(sector_buf);
+ }
+
+ return OK;
+}
+
+
+Bool at45dbx_write_multiple_sector(U16 nb_sector)
+{
+ while (nb_sector--)
+ {
+ // Write the next sector.
+ at45dbx_write_multiple_sector_callback(sector_buf);
+ at45dbx_write_sector_from_ram(sector_buf);
+ }
+
+ return OK;
+}
+
+
+//! @}
+
+
+/*! \name Single-Sector Access Functions
+ */
+//! @{
+
+
+Bool at45dbx_read_sector_2_ram(void *ram)
+{
+ U8 *_ram = ram;
+ U16 i;
+ U16 data;
+
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously finished a page read.
+ // => We have to access the next page.
+
+ // Memory ready.
+ at45dbx_busy = FALSE;
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_read_open input parameter is a sector.
+ at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Read the next sector.
+ for (i = AT45DBX_SECTOR_SIZE; i; i--)
+ {
+ // Send a dummy byte to read the next data byte.
+ spi_write_dummy();
+ spi_read(AT45DBX_SPI, &data);
+ *_ram++ = data;
+ }
+
+ // Update the memory pointer.
+ gl_ptr_mem += AT45DBX_SECTOR_SIZE;
+
+#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+#endif
+ {
+ // unselect the DF memory gl_ptr_mem points to.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return OK;
+}
+
+
+Bool at45dbx_write_sector_from_ram(const void *ram)
+{
+ const U8 *_ram = ram;
+ U16 i;
+
+ // Memory busy.
+ if (at45dbx_busy)
+ {
+ // Being here, we know that we previously launched a page programming.
+ // => We have to access the next page.
+
+ // Eventually select the next DF and open the next page.
+ // NOTE: at45dbx_write_open input parameter is a sector.
+ at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE.
+ }
+
+ // Write the next sector.
+ for (i = AT45DBX_SECTOR_SIZE; i; i--)
+ {
+ // Write the next data byte.
+ spi_write(AT45DBX_SPI, *_ram++);
+ }
+
+ // Update the memory pointer.
+ gl_ptr_mem += AT45DBX_SECTOR_SIZE;
+
+#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE
+ // If end of page reached,
+ if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE))
+#endif
+ {
+ // unselect the DF memory gl_ptr_mem points to in order to program the page.
+ at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE);
+
+ // Memory busy.
+ at45dbx_busy = TRUE;
+ }
+
+ return OK;
+}
+
+
+//! @}
+
+
+#endif // AT45DBX_MEM == ENABLE
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h
new file mode 100644
index 0000000..5816b61
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h
@@ -0,0 +1,269 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Management of the AT45DBX data flash controller through SPI.
+ *
+ * This file manages the accesses to the AT45DBX data flash components.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _AT45DBX_H_
+#define _AT45DBX_H_
+
+
+#include "conf_access.h"
+
+#if AT45DBX_MEM == DISABLE
+ #error at45dbx.h is #included although AT45DBX_MEM is disabled
+#endif
+
+
+#include "spi.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+/*! \name Available AT45DBX Sizes
+ *
+ * Number of address bits of available AT45DBX data flash memories.
+ *
+ * \note Only memories with page sizes of at least 512 bytes (sector size) are
+ * supported.
+ */
+//! @{
+#define AT45DBX_1MB 20
+#define AT45DBX_2MB 21
+#define AT45DBX_4MB 22
+#define AT45DBX_8MB 23
+//! @}
+
+// AT45DBX_1MB
+#define AT45DBX_SECTOR_BITS 8 //! Number of bits for addresses within sectors.
+// AT45DBX_2MB AT45DBX_4MB AT45DBX_8MB
+//#define AT45DBX_SECTOR_BITS 9 //! Number of bits for addresses within sectors.
+
+//! Sector size in bytes.
+#define AT45DBX_SECTOR_SIZE (1 << AT45DBX_SECTOR_BITS)
+
+//_____ D E C L A R A T I O N S ____________________________________________
+
+/*! \name Control Functions
+ */
+//! @{
+
+/*! \brief Initializes the data flash controller and the SPI channel by which
+ * the DF is controlled.
+ *
+ * \param spiOptions Initialization options of the DF SPI channel.
+ * \param pba_hz SPI module input clock frequency (PBA clock, Hz).
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ */
+extern Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz);
+
+/*! \brief Performs a memory check on all DFs.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ */
+extern Bool at45dbx_mem_check(void);
+
+/*! \brief Opens a DF memory in read mode at a given sector.
+ *
+ * \param sector Start sector.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note Sector may be page-unaligned (depending on the DF page size).
+ */
+extern Bool at45dbx_read_open(U32 sector);
+
+/*! \brief Unselects the current DF memory.
+ */
+extern void at45dbx_read_close(void);
+
+/*! \brief This function opens a DF memory in write mode at a given sector.
+ *
+ * \param sector Start sector.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note Sector may be page-unaligned (depending on the DF page size).
+ *
+ * \note If \ref AT45DBX_PAGE_SIZE > \ref AT45DBX_SECTOR_SIZE, page content is
+ * first loaded in buffer to then be partially updated by write byte or
+ * write sector functions.
+ */
+extern Bool at45dbx_write_open(U32 sector);
+
+/*! \brief Fills the end of the current logical sector and launches page programming.
+ */
+extern void at45dbx_write_close(void);
+
+//! @}
+
+
+/*! \name Single-Byte Access Functions
+ */
+//! @{
+
+/*! \brief Performs a single byte read from DF memory.
+ *
+ * \return The read byte.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_read_open
+ * function.
+ */
+extern U8 at45dbx_read_byte(void);
+
+/*! \brief Performs a single byte write to DF memory.
+ *
+ * \param b The byte to write.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_write_open
+ * function.
+ */
+extern Bool at45dbx_write_byte(U8 b);
+
+//! @}
+
+
+/*! \name Multiple-Sector Access Functions
+ */
+//! @{
+
+/*! \brief Reads \a nb_sector sectors from DF memory.
+ *
+ * Data flow is: DF -> callback.
+ *
+ * \param nb_sector Number of contiguous sectors to read.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_read_open
+ * function.
+ *
+ * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of
+ * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each
+ * byte.
+ */
+extern Bool at45dbx_read_multiple_sector(U16 nb_sector);
+
+/*! \brief Callback function invoked after each sector read during
+ * \ref at45dbx_read_multiple_sector.
+ *
+ * \param psector Pointer to read sector.
+ */
+extern void at45dbx_read_multiple_sector_callback(const void *psector);
+
+/*! \brief Writes \a nb_sector sectors to DF memory.
+ *
+ * Data flow is: callback -> DF.
+ *
+ * \param nb_sector Number of contiguous sectors to write.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_write_open
+ * function.
+ *
+ * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of
+ * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each
+ * byte.
+ */
+extern Bool at45dbx_write_multiple_sector(U16 nb_sector);
+
+/*! \brief Callback function invoked before each sector write during
+ * \ref at45dbx_write_multiple_sector.
+ *
+ * \param psector Pointer to sector to write.
+ */
+extern void at45dbx_write_multiple_sector_callback(void *psector);
+
+//! @}
+
+
+/*! \name Single-Sector Access Functions
+ */
+//! @{
+
+/*! \brief Reads 1 DF sector to a RAM buffer.
+ *
+ * Data flow is: DF -> RAM.
+ *
+ * \param ram Pointer to RAM buffer.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_read_open
+ * function.
+ */
+extern Bool at45dbx_read_sector_2_ram(void *ram);
+
+/*! \brief Writes 1 DF sector from a RAM buffer.
+ *
+ * Data flow is: RAM -> DF.
+ *
+ * \param ram Pointer to RAM buffer.
+ *
+ * \retval OK Success.
+ * \retval KO Failure.
+ *
+ * \note First call must be preceded by a call to the \ref at45dbx_write_open
+ * function.
+ */
+extern Bool at45dbx_write_sector_from_ram(const void *ram);
+
+//! @}
+
+
+#endif // _AT45DBX_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c
new file mode 100644
index 0000000..4c0ace2
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c
@@ -0,0 +1,234 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief CTRL_ACCESS interface for the AT45DBX data flash controller.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+//_____ I N C L U D E S ___________________________________________________
+
+#include "conf_access.h"
+
+
+#if AT45DBX_MEM == ENABLE
+
+#include "conf_at45dbx.h"
+#include "at45dbx.h"
+#include "at45dbx_mem.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+//! Whether to detect write accesses to the memory.
+#define AT45DBX_MEM_TEST_CHANGE_STATE ENABLED
+
+
+#if (ACCESS_USB == ENABLED || ACCESS_MEM_TO_RAM == ENABLED) && AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED
+
+//! Memory data modified flag.
+static volatile Bool s_b_data_modify = FALSE;
+
+#endif
+
+
+/*! \name Control Interface
+ */
+//! @{
+
+
+Ctrl_status at45dbx_test_unit_ready(void)
+{
+ return (at45dbx_mem_check() == OK) ? CTRL_GOOD : CTRL_NO_PRESENT;
+}
+
+
+Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector)
+{
+ *u32_nb_sector = (AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) - 1;
+
+ return CTRL_GOOD;
+}
+
+
+Bool at45dbx_wr_protect(void)
+{
+ return FALSE;
+}
+
+
+Bool at45dbx_removal(void)
+{
+ return FALSE;
+}
+
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+#include "usb_drv.h"
+#include "scsi_decoder.h"
+
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+
+Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector)
+{
+ if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+ at45dbx_read_open(addr);
+ at45dbx_read_multiple_sector(nb_sector);
+ at45dbx_read_close();
+
+ return CTRL_GOOD;
+}
+
+
+void at45dbx_read_multiple_sector_callback(const void *psector)
+{
+ U16 data_to_transfer = AT45DBX_SECTOR_SIZE;
+
+ // Transfer read sector to the USB interface.
+ while (data_to_transfer)
+ {
+ while (!Is_usb_in_ready(g_scsi_ep_ms_in))
+ {
+ if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_in))
+ return; // USB Reset
+ }
+
+ Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_in);
+ data_to_transfer = usb_write_ep_txpacket(g_scsi_ep_ms_in, psector,
+ data_to_transfer, &psector);
+ Usb_ack_in_ready_send(g_scsi_ep_ms_in);
+ }
+}
+
+
+Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector)
+{
+ if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED
+ if (nb_sector) s_b_data_modify = TRUE;
+#endif
+
+ at45dbx_write_open(addr);
+ at45dbx_write_multiple_sector(nb_sector);
+ at45dbx_write_close();
+
+ return CTRL_GOOD;
+}
+
+
+void at45dbx_write_multiple_sector_callback(void *psector)
+{
+ U16 data_to_transfer = AT45DBX_SECTOR_SIZE;
+
+ // Transfer sector to write from the USB interface.
+ while (data_to_transfer)
+ {
+ while (!Is_usb_out_received(g_scsi_ep_ms_out))
+ {
+ if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_out))
+ return; // USB Reset
+ }
+
+ Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_out);
+ data_to_transfer = usb_read_ep_rxpacket(g_scsi_ep_ms_out, psector,
+ data_to_transfer, &psector);
+ Usb_ack_out_received_free(g_scsi_ep_ms_out);
+ }
+}
+
+
+//! @}
+
+#endif // ACCESS_USB == ENABLED
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+
+Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram)
+{
+ if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+ at45dbx_read_open(addr);
+ at45dbx_read_sector_2_ram(ram);
+ at45dbx_read_close();
+
+ return CTRL_GOOD;
+}
+
+
+Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram)
+{
+ if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL;
+
+#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED
+ s_b_data_modify = TRUE;
+#endif
+
+ at45dbx_write_open(addr);
+ at45dbx_write_sector_from_ram(ram);
+ at45dbx_write_close();
+
+ return CTRL_GOOD;
+}
+
+
+//! @}
+
+#endif // ACCESS_MEM_TO_RAM == ENABLED
+
+
+#endif // AT45DBX_MEM == ENABLE
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h
new file mode 100644
index 0000000..de24fa3
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h
@@ -0,0 +1,164 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief CTRL_ACCESS interface for the AT45DBX data flash controller.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _AT45DBX_MEM_H_
+#define _AT45DBX_MEM_H_
+
+
+#include "conf_access.h"
+
+#if AT45DBX_MEM == DISABLE
+ #error at45dbx_mem.h is #included although AT45DBX_MEM is disabled
+#endif
+
+
+#include "ctrl_access.h"
+
+
+//_____ D E C L A R A T I O N S ____________________________________________
+
+/*! \name Control Interface
+ */
+//! @{
+
+/*! \brief Tests the memory state and initializes the memory if required.
+ *
+ * The TEST UNIT READY SCSI primary command allows an application client to poll
+ * a LUN until it is ready without having to allocate memory for returned data.
+ *
+ * This command may be used to check the media status of LUNs with removable
+ * media.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_test_unit_ready(void);
+
+/*! \brief Returns the address of the last valid sector in the memory.
+ *
+ * \param u32_nb_sector Pointer to the address of the last valid sector.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector);
+
+/*! \brief Returns the write-protection state of the memory.
+ *
+ * \return \c TRUE if the memory is write-protected, else \c FALSE.
+ *
+ * \note Only used by removable memories with hardware-specific write
+ * protection.
+ */
+extern Bool at45dbx_wr_protect(void);
+
+/*! \brief Tells whether the memory is removable.
+ *
+ * \return \c TRUE if the memory is removable, else \c FALSE.
+ */
+extern Bool at45dbx_removal(void);
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+/*! \brief Tranfers data from the memory to USB.
+ *
+ * \param addr Address of first memory sector to read.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector);
+
+/*! \brief Tranfers data from USB to the memory.
+ *
+ * \param addr Address of first memory sector to write.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector);
+
+//! @}
+
+#endif
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+/*! \brief Copies 1 data sector from the memory to RAM.
+ *
+ * \param addr Address of first memory sector to read.
+ * \param ram Pointer to RAM buffer to write.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram);
+
+/*! \brief Copies 1 data sector from RAM to the memory.
+ *
+ * \param addr Address of first memory sector to write.
+ * \param ram Pointer to RAM buffer to read.
+ *
+ * \return Status.
+ */
+extern Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram);
+
+//! @}
+
+#endif
+
+
+#endif // _AT45DBX_MEM_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c
new file mode 100644
index 0000000..2eee15c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c
@@ -0,0 +1,1117 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief FLASHC driver for AVR32 UC3.
+ *
+ * AVR32 Flash Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a FLASHC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include <stddef.h>
+#include "compiler.h"
+#include "flashc.h"
+
+
+/*! \name FLASHC Writable Bit-Field Registers
+ */
+//! @{
+
+typedef union
+{
+ unsigned long fcr;
+ avr32_flashc_fcr_t FCR;
+} u_avr32_flashc_fcr_t;
+
+typedef union
+{
+ unsigned long fcmd;
+ avr32_flashc_fcmd_t FCMD;
+} u_avr32_flashc_fcmd_t;
+
+//! @}
+
+
+/*! \name Flash Properties
+ */
+//! @{
+
+
+unsigned int flashc_get_flash_size(void)
+{
+#if (defined AVR32_FLASHC_300_H_INCLUDED)
+ static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_PR_FSZ_SIZE] =
+ {
+ 32 << 10,
+ 64 << 10,
+ 128 << 10,
+ 256 << 10,
+ 384 << 10,
+ 512 << 10,
+ 768 << 10,
+ 1024 << 10
+ };
+ return FLASH_SIZE[(AVR32_FLASHC.pr & AVR32_FLASHC_PR_FSZ_MASK) >> AVR32_FLASHC_PR_FSZ_OFFSET];
+#else
+ static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_FSR_FSZ_SIZE] =
+ {
+ 32 << 10,
+ 64 << 10,
+ 128 << 10,
+ 256 << 10,
+ 384 << 10,
+ 512 << 10,
+ 768 << 10,
+ 1024 << 10
+ };
+ return FLASH_SIZE[(AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FSZ_MASK) >> AVR32_FLASHC_FSR_FSZ_OFFSET];
+#endif
+}
+
+
+unsigned int flashc_get_page_count(void)
+{
+ return flashc_get_flash_size() / AVR32_FLASHC_PAGE_SIZE;
+}
+
+
+unsigned int flashc_get_page_count_per_region(void)
+{
+ return flashc_get_page_count() / AVR32_FLASHC_REGIONS;
+}
+
+
+unsigned int flashc_get_page_region(int page_number)
+{
+ return ((page_number >= 0) ? page_number : flashc_get_page_number()) / flashc_get_page_count_per_region();
+}
+
+
+unsigned int flashc_get_region_first_page_number(unsigned int region)
+{
+ return region * flashc_get_page_count_per_region();
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Control
+ */
+//! @{
+
+
+unsigned int flashc_get_wait_state(void)
+{
+ return (AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FWS_MASK) >> AVR32_FLASHC_FCR_FWS_OFFSET;
+}
+
+
+void flashc_set_wait_state(unsigned int wait_state)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.fws = wait_state;
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+Bool flashc_is_ready_int_enabled(void)
+{
+ return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FRDY_MASK) != 0);
+}
+
+
+void flashc_enable_ready_int(Bool enable)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.frdy = (enable != FALSE);
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+Bool flashc_is_lock_error_int_enabled(void)
+{
+ return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_LOCKE_MASK) != 0);
+}
+
+
+void flashc_enable_lock_error_int(Bool enable)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.locke = (enable != FALSE);
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+Bool flashc_is_prog_error_int_enabled(void)
+{
+ return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_PROGE_MASK) != 0);
+}
+
+
+void flashc_enable_prog_error_int(Bool enable)
+{
+ u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr};
+ u_avr32_flashc_fcr.FCR.proge = (enable != FALSE);
+ AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr;
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Status
+ */
+//! @{
+
+
+Bool flashc_is_ready(void)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FRDY_MASK) != 0);
+}
+
+
+void flashc_default_wait_until_ready(void)
+{
+ while (!flashc_is_ready());
+}
+
+
+void (*volatile flashc_wait_until_ready)(void) = flashc_default_wait_until_ready;
+
+
+/*! \brief Gets the error status of the FLASHC.
+ *
+ * \return The error status of the FLASHC built up from
+ * \c AVR32_FLASHC_FSR_LOCKE_MASK and \c AVR32_FLASHC_FSR_PROGE_MASK.
+ *
+ * \warning This hardware error status is cleared by all functions reading the
+ * Flash Status Register (FSR). This function is therefore not part of
+ * the driver's API which instead presents \ref flashc_is_lock_error
+ * and \ref flashc_is_programming_error.
+ */
+static unsigned int flashc_get_error_status(void)
+{
+ return AVR32_FLASHC.fsr & (AVR32_FLASHC_FSR_LOCKE_MASK |
+ AVR32_FLASHC_FSR_PROGE_MASK);
+}
+
+
+//! Sticky error status of the FLASHC.
+//! This variable is updated by functions that issue FLASHC commands. It
+//! contains the cumulated FLASHC error status of all the FLASHC commands issued
+//! by a function.
+static unsigned int flashc_error_status = 0;
+
+
+Bool flashc_is_lock_error(void)
+{
+ return ((flashc_error_status & AVR32_FLASHC_FSR_LOCKE_MASK) != 0);
+}
+
+
+Bool flashc_is_programming_error(void)
+{
+ return ((flashc_error_status & AVR32_FLASHC_FSR_PROGE_MASK) != 0);
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Command Control
+ */
+//! @{
+
+
+unsigned int flashc_get_command(void)
+{
+ return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_CMD_MASK) >> AVR32_FLASHC_FCMD_CMD_OFFSET;
+}
+
+
+unsigned int flashc_get_page_number(void)
+{
+ return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_PAGEN_MASK) >> AVR32_FLASHC_FCMD_PAGEN_OFFSET;
+}
+
+
+void flashc_issue_command(unsigned int command, int page_number)
+{
+ u_avr32_flashc_fcmd_t u_avr32_flashc_fcmd;
+ flashc_wait_until_ready();
+ u_avr32_flashc_fcmd.fcmd = AVR32_FLASHC.fcmd;
+ u_avr32_flashc_fcmd.FCMD.cmd = command;
+ if (page_number >= 0) u_avr32_flashc_fcmd.FCMD.pagen = page_number;
+ u_avr32_flashc_fcmd.FCMD.key = AVR32_FLASHC_FCMD_KEY_KEY;
+ AVR32_FLASHC.fcmd = u_avr32_flashc_fcmd.fcmd;
+ flashc_error_status = flashc_get_error_status();
+ flashc_wait_until_ready();
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Global Commands
+ */
+//! @{
+
+
+void flashc_no_operation(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_NOP, -1);
+}
+
+
+void flashc_erase_all(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EA, -1);
+}
+
+
+//! @}
+
+
+/*! \name FLASHC Protection Mechanisms
+ */
+//! @{
+
+
+Bool flashc_is_security_bit_active(void)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_SECURITY_MASK) != 0);
+}
+
+
+void flashc_activate_security_bit(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_SSB, -1);
+}
+
+
+unsigned int flashc_get_bootloader_protected_size(void)
+{
+ unsigned int bootprot = (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 -
+ flashc_read_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET,
+ AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE);
+ return (bootprot) ? AVR32_FLASHC_PAGE_SIZE << bootprot : 0;
+}
+
+
+unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size)
+{
+ flashc_set_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET,
+ AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE,
+ (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 -
+ ((bootprot_size) ?
+ 32 - clz((((min(max(bootprot_size, AVR32_FLASHC_PAGE_SIZE << 1),
+ AVR32_FLASHC_PAGE_SIZE <<
+ ((1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1)) +
+ AVR32_FLASHC_PAGE_SIZE - 1) /
+ AVR32_FLASHC_PAGE_SIZE) << 1) - 1) - 1 :
+ 0));
+ return flashc_get_bootloader_protected_size();
+}
+
+
+Bool flashc_is_external_privileged_fetch_locked(void)
+{
+ return (!flashc_read_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET));
+}
+
+
+void flashc_lock_external_privileged_fetch(Bool lock)
+{
+ flashc_set_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET, !lock);
+}
+
+
+Bool flashc_is_page_region_locked(int page_number)
+{
+ return flashc_is_region_locked(flashc_get_page_region(page_number));
+}
+
+
+Bool flashc_is_region_locked(unsigned int region)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_LOCK0_MASK << (region & (AVR32_FLASHC_REGIONS - 1))) != 0);
+}
+
+
+void flashc_lock_page_region(int page_number, Bool lock)
+{
+ flashc_issue_command((lock) ? AVR32_FLASHC_FCMD_CMD_LP : AVR32_FLASHC_FCMD_CMD_UP, page_number);
+}
+
+
+void flashc_lock_region(unsigned int region, Bool lock)
+{
+ flashc_lock_page_region(flashc_get_region_first_page_number(region), lock);
+}
+
+
+void flashc_lock_all_regions(Bool lock)
+{
+ unsigned int error_status = 0;
+ unsigned int region = AVR32_FLASHC_REGIONS;
+ while (region)
+ {
+ flashc_lock_region(--region, lock);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+//! @}
+
+
+/*! \name Access to General-Purpose Fuses
+ */
+//! @{
+
+
+Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit)
+{
+ return ((flashc_read_all_gp_fuses() & 1ULL << (gp_fuse_bit & 0x3F)) != 0);
+}
+
+
+U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width)
+{
+ return flashc_read_all_gp_fuses() >> (pos & 0x3F) & ((1ULL << min(width, 64)) - 1);
+}
+
+
+U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte)
+{
+ return flashc_read_all_gp_fuses() >> ((gp_fuse_byte & 0x07) << 3);
+}
+
+
+U64 flashc_read_all_gp_fuses(void)
+{
+ return AVR32_FLASHC.fgpfrlo | (U64)AVR32_FLASHC.fgpfrhi << 32;
+}
+
+
+Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EGPB, gp_fuse_bit & 0x3F);
+ return (check) ? flashc_read_gp_fuse_bit(gp_fuse_bit) : TRUE;
+}
+
+
+Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_bit;
+ pos &= 0x3F;
+ width = min(width, 64);
+ for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++)
+ {
+ flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+ return (check) ? (flashc_read_gp_fuse_bitfield(pos, width) == (1ULL << width) - 1) : TRUE;
+}
+
+
+Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check)
+{
+ unsigned int error_status;
+ unsigned int current_gp_fuse_byte;
+ U64 value = flashc_read_all_gp_fuses();
+ flashc_erase_all_gp_fuses(FALSE);
+ error_status = flashc_error_status;
+ for (current_gp_fuse_byte = 0; current_gp_fuse_byte < 8; current_gp_fuse_byte++, value >>= 8)
+ {
+ if (current_gp_fuse_byte != gp_fuse_byte)
+ {
+ flashc_write_gp_fuse_byte(current_gp_fuse_byte, value);
+ error_status |= flashc_error_status;
+ }
+ }
+ flashc_error_status = error_status;
+ return (check) ? (flashc_read_gp_fuse_byte(gp_fuse_byte) == 0xFF) : TRUE;
+}
+
+
+Bool flashc_erase_all_gp_fuses(Bool check)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EAGPF, -1);
+ return (check) ? (flashc_read_all_gp_fuses() == 0xFFFFFFFFFFFFFFFFULL) : TRUE;
+}
+
+
+void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value)
+{
+ if (!value)
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WGPB, gp_fuse_bit & 0x3F);
+}
+
+
+void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_bit;
+ pos &= 0x3F;
+ width = min(width, 64);
+ for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1)
+ {
+ flashc_write_gp_fuse_bit(gp_fuse_bit, value & 0x01);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_PGPFB, (gp_fuse_byte & 0x07) | value << 3);
+}
+
+
+void flashc_write_all_gp_fuses(U64 value)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_byte;
+ for (gp_fuse_byte = 0; gp_fuse_byte < 8; gp_fuse_byte++, value >>= 8)
+ {
+ flashc_write_gp_fuse_byte(gp_fuse_byte, value);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value)
+{
+ if (value)
+ flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE);
+ else
+ flashc_write_gp_fuse_bit(gp_fuse_bit, FALSE);
+}
+
+
+void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value)
+{
+ unsigned int error_status = 0;
+ unsigned int gp_fuse_bit;
+ pos &= 0x3F;
+ width = min(width, 64);
+ for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1)
+ {
+ flashc_set_gp_fuse_bit(gp_fuse_bit, value & 0x01);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+}
+
+
+void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value)
+{
+ unsigned int error_status;
+ switch (value)
+ {
+ case 0xFF:
+ flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE);
+ break;
+ case 0x00:
+ flashc_write_gp_fuse_byte(gp_fuse_byte, 0x00);
+ break;
+ default:
+ flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE);
+ error_status = flashc_error_status;
+ flashc_write_gp_fuse_byte(gp_fuse_byte, value);
+ flashc_error_status |= error_status;
+ }
+}
+
+
+void flashc_set_all_gp_fuses(U64 value)
+{
+ unsigned int error_status;
+ switch (value)
+ {
+ case 0xFFFFFFFFFFFFFFFFULL:
+ flashc_erase_all_gp_fuses(FALSE);
+ break;
+ case 0x0000000000000000ULL:
+ flashc_write_all_gp_fuses(0x0000000000000000ULL);
+ break;
+ default:
+ flashc_erase_all_gp_fuses(FALSE);
+ error_status = flashc_error_status;
+ flashc_write_all_gp_fuses(value);
+ flashc_error_status |= error_status;
+ }
+}
+
+
+//! @}
+
+
+/*! \name Access to Flash Pages
+ */
+//! @{
+
+
+void flashc_clear_page_buffer(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_CPB, -1);
+}
+
+
+Bool flashc_is_page_erased(void)
+{
+ return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_QPRR_MASK) != 0);
+}
+
+
+Bool flashc_quick_page_read(int page_number)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPR, page_number);
+ return flashc_is_page_erased();
+}
+
+
+Bool flashc_erase_page(int page_number, Bool check)
+{
+ Bool page_erased = TRUE;
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EP, page_number);
+ if (check)
+ {
+ unsigned int error_status = flashc_error_status;
+ page_erased = flashc_quick_page_read(-1);
+ flashc_error_status |= error_status;
+ }
+ return page_erased;
+}
+
+
+Bool flashc_erase_all_pages(Bool check)
+{
+ Bool all_pages_erased = TRUE;
+ unsigned int error_status = 0;
+ unsigned int page_number = flashc_get_page_count();
+ while (page_number)
+ {
+ all_pages_erased &= flashc_erase_page(--page_number, check);
+ error_status |= flashc_error_status;
+ }
+ flashc_error_status = error_status;
+ return all_pages_erased;
+}
+
+
+void flashc_write_page(int page_number)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WP, page_number);
+}
+
+
+Bool flashc_quick_user_page_read(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPRUP, -1);
+ return flashc_is_page_erased();
+}
+
+
+Bool flashc_erase_user_page(Bool check)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EUP, -1);
+ return (check) ? flashc_quick_user_page_read() : TRUE;
+}
+
+
+void flashc_write_user_page(void)
+{
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WUP, -1);
+}
+
+
+volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase)
+{
+ return flashc_memset16(dst, src | (U16)src << 8, nbytes, erase);
+}
+
+
+volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase)
+{
+ return flashc_memset32(dst, src | (U32)src << 16, nbytes, erase);
+}
+
+
+volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase)
+{
+ return flashc_memset64(dst, src | (U64)src << 32, nbytes, erase);
+}
+
+
+volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase)
+{
+ // Use aggregated pointers to have several alignments available for a same address.
+ UnionCVPtr flash_array_end;
+ UnionVPtr dest;
+ Union64 source = {0};
+ StructCVPtr dest_end;
+ UnionCVPtr flash_page_source_end;
+ Bool incomplete_flash_page_end;
+ Union64 flash_dword;
+ UnionVPtr tmp;
+ unsigned int error_status = 0;
+ unsigned int i;
+
+ // Reformat arguments.
+ flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size();
+ dest.u8ptr = dst;
+ for (i = (Get_align((U32)dest.u8ptr, sizeof(U64)) - 1) & (sizeof(U64) - 1);
+ src; i = (i - 1) & (sizeof(U64) - 1))
+ {
+ source.u8[i] = src;
+ src >>= 8;
+ }
+ dest_end.u8ptr = dest.u8ptr + nbytes;
+
+ // If destination is outside flash, go to next flash page if any.
+ if (dest.u8ptr < AVR32_FLASH)
+ {
+ dest.u8ptr = AVR32_FLASH;
+ }
+ else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE)
+ {
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+
+ // If end of destination is outside flash, move it to the end of the previous flash page if any.
+ if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE)
+ {
+ dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE;
+ }
+ else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr)
+ {
+ dest_end.u8ptr = flash_array_end.u8ptr;
+ }
+
+ // Align each end of destination pointer with its natural boundary.
+ dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16));
+ dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32));
+ dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64));
+
+ // While end of destination is not reached...
+ while (dest.u8ptr < dest_end.u8ptr)
+ {
+ // Clear the page buffer in order to prepare data for a flash page write.
+ flashc_clear_page_buffer();
+ error_status |= flashc_error_status;
+
+ // Determine where the source data will end in the current flash page.
+ flash_page_source_end.u64ptr =
+ (U64 *)min((U32)dest_end.u64ptr,
+ Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE);
+
+ // Determine if the current destination page has an incomplete end.
+ incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >=
+ Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE));
+
+ // Use a flash double-word buffer to manage unaligned accesses.
+ flash_dword.u64 = source.u64;
+
+ // If destination does not point to the beginning of the current flash page...
+ if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE))
+ {
+ // Fill the beginning of the page buffer with the current flash page data.
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE);
+ tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+ tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+
+ // If destination is not 64-bit aligned...
+ if (!Test_align((U32)dest.u8ptr, sizeof(U64)))
+ {
+ // Fill the beginning of the flash double-word buffer with the current
+ // flash page data.
+ // This is required by the hardware, even if page erase is not
+ // requested, in order to be able to write successfully to erased parts
+ // of flash pages that have already been written to.
+ for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Align the destination pointer with its 64-bit boundary.
+ dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+
+ // If the current destination double-word is not the last one...
+ if (dest.u64ptr < dest_end.u64ptr)
+ {
+ // Write the flash double-word buffer to the page buffer and reinitialize it.
+ *dest.u64ptr++ = flash_dword.u64;
+ flash_dword.u64 = source.u64;
+ }
+ }
+ }
+
+ // Write the source data to the page buffer with 64-bit alignment.
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ *dest.u64ptr++ = source.u64;
+
+ // If the current destination page has an incomplete end...
+ if (incomplete_flash_page_end)
+ {
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ {
+ tmp.u8ptr = (volatile U8 *)dest_end.u8ptr;
+
+ // If end of destination is not 64-bit aligned...
+ if (!Test_align((U32)dest_end.u8ptr, sizeof(U64)))
+ {
+ // Fill the end of the flash double-word buffer with the current flash page data.
+ for (i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); i < sizeof(U64); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Write the flash double-word buffer to the page buffer.
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+
+ // Fill the end of the page buffer with the current flash page data.
+ for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+ }
+ }
+
+ // If the current flash page is in the flash array...
+ if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE)
+ {
+ // Erase the current page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_page(-1, FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_page(-1);
+ error_status |= flashc_error_status;
+
+ // If the end of the flash array is reached, go to the User page.
+ if (dest.u8ptr >= flash_array_end.u8ptr)
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+ // If the current flash page is the User page...
+ else
+ {
+ // Erase the User page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_user_page(FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_user_page();
+ error_status |= flashc_error_status;
+ }
+ }
+
+ // Update the FLASHC error status.
+ flashc_error_status = error_status;
+
+ // Return the initial destination pointer as the standard memset function does.
+ return dst;
+}
+
+
+volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase)
+{
+ // Use aggregated pointers to have several alignments available for a same address.
+ UnionCVPtr flash_array_end;
+ UnionVPtr dest;
+ UnionCPtr source;
+ StructCVPtr dest_end;
+ UnionCVPtr flash_page_source_end;
+ Bool incomplete_flash_page_end;
+ Union64 flash_dword;
+ Bool flash_dword_pending = FALSE;
+ UnionVPtr tmp;
+ unsigned int error_status = 0;
+ unsigned int i, j;
+
+ // Reformat arguments.
+ flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size();
+ dest.u8ptr = dst;
+ source.u8ptr = src;
+ dest_end.u8ptr = dest.u8ptr + nbytes;
+
+ // If destination is outside flash, go to next flash page if any.
+ if (dest.u8ptr < AVR32_FLASH)
+ {
+ source.u8ptr += AVR32_FLASH - dest.u8ptr;
+ dest.u8ptr = AVR32_FLASH;
+ }
+ else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE)
+ {
+ source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr;
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+
+ // If end of destination is outside flash, move it to the end of the previous flash page if any.
+ if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE)
+ {
+ dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE;
+ }
+ else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr)
+ {
+ dest_end.u8ptr = flash_array_end.u8ptr;
+ }
+
+ // Align each end of destination pointer with its natural boundary.
+ dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16));
+ dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32));
+ dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64));
+
+ // While end of destination is not reached...
+ while (dest.u8ptr < dest_end.u8ptr)
+ {
+ // Clear the page buffer in order to prepare data for a flash page write.
+ flashc_clear_page_buffer();
+ error_status |= flashc_error_status;
+
+ // Determine where the source data will end in the current flash page.
+ flash_page_source_end.u64ptr =
+ (U64 *)min((U32)dest_end.u64ptr,
+ Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE);
+
+ // Determine if the current destination page has an incomplete end.
+ incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >=
+ Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE));
+
+ // If destination does not point to the beginning of the current flash page...
+ if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE))
+ {
+ // Fill the beginning of the page buffer with the current flash page data.
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE);
+ tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+ tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+
+ // If destination is not 64-bit aligned...
+ if (!Test_align((U32)dest.u8ptr, sizeof(U64)))
+ {
+ // Fill the beginning of the flash double-word buffer with the current
+ // flash page data.
+ // This is required by the hardware, even if page erase is not
+ // requested, in order to be able to write successfully to erased parts
+ // of flash pages that have already been written to.
+ for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Fill the end of the flash double-word buffer with the source data.
+ for (; i < sizeof(U64); i++)
+ flash_dword.u8[i] = *source.u8ptr++;
+
+ // Align the destination pointer with its 64-bit boundary.
+ dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64));
+
+ // If the current destination double-word is not the last one...
+ if (dest.u64ptr < dest_end.u64ptr)
+ {
+ // Write the flash double-word buffer to the page buffer.
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+ // If the current destination double-word is the last one, the flash
+ // double-word buffer must be kept for later.
+ else flash_dword_pending = TRUE;
+ }
+ }
+
+ // Read the source data with the maximal possible alignment and write it to
+ // the page buffer with 64-bit alignment.
+ switch (Get_align((U32)source.u8ptr, sizeof(U32)))
+ {
+ case 0:
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ *dest.u64ptr++ = *source.u64ptr++;
+ break;
+
+ case sizeof(U16):
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ {
+ for (j = 0; j < sizeof(U64) / sizeof(U16); j++) flash_dword.u16[j] = *source.u16ptr++;
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+ break;
+
+ default:
+ for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--)
+ {
+ for (j = 0; j < sizeof(U64); j++) flash_dword.u8[j] = *source.u8ptr++;
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+ }
+
+ // If the current destination page has an incomplete end...
+ if (incomplete_flash_page_end)
+ {
+ // If the flash double-word buffer is in use, do not initialize it.
+ if (flash_dword_pending) i = Get_align((U32)dest_end.u8ptr, sizeof(U64));
+ // If the flash double-word buffer is free...
+ else
+ {
+ // Fill the beginning of the flash double-word buffer with the source data.
+ for (i = 0; i < Get_align((U32)dest_end.u8ptr, sizeof(U64)); i++)
+ flash_dword.u8[i] = *source.u8ptr++;
+ }
+
+ // This is required by the hardware, even if page erase is not requested,
+ // in order to be able to write successfully to erased parts of flash
+ // pages that have already been written to.
+ {
+ tmp.u8ptr = (volatile U8 *)dest_end.u8ptr;
+
+ // If end of destination is not 64-bit aligned...
+ if (!Test_align((U32)dest_end.u8ptr, sizeof(U64)))
+ {
+ // Fill the end of the flash double-word buffer with the current flash page data.
+ for (; i < sizeof(U64); i++)
+ flash_dword.u8[i] = *tmp.u8ptr++;
+
+ // Write the flash double-word buffer to the page buffer.
+ *dest.u64ptr++ = flash_dword.u64;
+ }
+
+ // Fill the end of the page buffer with the current flash page data.
+ for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++)
+ *tmp.u64ptr = *tmp.u64ptr;
+ }
+ }
+
+ // If the current flash page is in the flash array...
+ if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE)
+ {
+ // Erase the current page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_page(-1, FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_page(-1);
+ error_status |= flashc_error_status;
+
+ // If the end of the flash array is reached, go to the User page.
+ if (dest.u8ptr >= flash_array_end.u8ptr)
+ {
+ source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr;
+ dest.u8ptr = AVR32_FLASHC_USER_PAGE;
+ }
+ }
+ // If the current flash page is the User page...
+ else
+ {
+ // Erase the User page if requested and write it from the page buffer.
+ if (erase)
+ {
+ flashc_erase_user_page(FALSE);
+ error_status |= flashc_error_status;
+ }
+ flashc_write_user_page();
+ error_status |= flashc_error_status;
+ }
+ }
+
+ // Update the FLASHC error status.
+ flashc_error_status = error_status;
+
+ // Return the initial destination pointer as the standard memcpy function does.
+ return dst;
+}
+
+
+#if UC3C
+void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz)
+{
+ //! Device-specific data
+ #undef AVR32_FLASHC_FWS_0_MAX_FREQ
+ #undef AVR32_FLASHC_FWS_1_MAX_FREQ
+ #undef AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ
+ #undef AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ
+ #define AVR32_FLASHC_FWS_0_MAX_FREQ 33000000
+ #define AVR32_FLASHC_FWS_1_MAX_FREQ 66000000
+ #define AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ 33000000
+ #define AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ 72000000
+ // These defines are missing from or wrong in the toolchain header files uc3cxxx.h
+ // Put a Bugzilla
+
+ if(cpu_f_hz > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) // > 33MHz
+ {
+ // Set a wait-state
+ flashc_set_wait_state(1);
+ if(cpu_f_hz <= AVR32_FLASHC_FWS_1_MAX_FREQ) // <= 66MHz and >33Mhz
+ {
+ // Disable the high-speed read mode.
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+ }
+ else // > 66Mhz
+ {
+ // Enable the high-speed read mode.
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1);
+ }
+ }
+ else // <= 33 MHz
+ {
+ // Disable wait-state
+ flashc_set_wait_state(0);
+
+ // Disable the high-speed read mode.
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+
+ }
+}
+#endif // UC3C device-specific implementation
+
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h
new file mode 100644
index 0000000..9f2547a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h
@@ -0,0 +1,1002 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief FLASHC driver for AVR32 UC3.
+ *
+ * AVR32 Flash Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a FLASHC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _FLASHC_H_
+#define _FLASHC_H_
+
+#include <avr32/io.h>
+#include <stddef.h>
+#include "compiler.h"
+
+//! Number of flash regions defined by the FLASHC.
+#define AVR32_FLASHC_REGIONS (AVR32_FLASHC_FLASH_SIZE /\
+ (AVR32_FLASHC_PAGES_PR_REGION * AVR32_FLASHC_PAGE_SIZE))
+
+
+/*! \name Flash Properties
+ */
+//! @{
+
+/*! \brief Gets the size of the whole flash array.
+ *
+ * \return The size of the whole flash array in bytes.
+ */
+extern unsigned int flashc_get_flash_size(void);
+
+/*! \brief Gets the total number of pages in the flash array.
+ *
+ * \return The total number of pages in the flash array.
+ */
+extern unsigned int flashc_get_page_count(void);
+
+/*! \brief Gets the number of pages in each flash region.
+ *
+ * \return The number of pages in each flash region.
+ */
+extern unsigned int flashc_get_page_count_per_region(void);
+
+/*! \brief Gets the region number of a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \return The region number of the specified page.
+ */
+extern unsigned int flashc_get_page_region(int page_number);
+
+/*! \brief Gets the number of the first page of a region.
+ *
+ * \param region The region number: \c 0 to <tt>(AVR32_FLASHC_REGIONS - 1)</tt>.
+ *
+ * \return The number of the first page of the specified region.
+ */
+extern unsigned int flashc_get_region_first_page_number(unsigned int region);
+
+//! @}
+
+
+/*! \name FLASHC Control
+ */
+//! @{
+
+/*! \brief Gets the number of wait states of flash read accesses.
+ *
+ * \return The number of wait states of flash read accesses.
+ */
+extern unsigned int flashc_get_wait_state(void);
+
+/*! \brief Sets the number of wait states of flash read accesses.
+ *
+ * \param wait_state The number of wait states of flash read accesses: \c 0 to
+ * \c 1.
+ */
+extern void flashc_set_wait_state(unsigned int wait_state);
+
+/*! \brief Tells whether the Flash Ready interrupt is enabled.
+ *
+ * \return Whether the Flash Ready interrupt is enabled.
+ */
+extern Bool flashc_is_ready_int_enabled(void);
+
+/*! \brief Enables or disables the Flash Ready interrupt.
+ *
+ * \param enable Whether to enable the Flash Ready interrupt: \c TRUE or
+ * \c FALSE.
+ */
+extern void flashc_enable_ready_int(Bool enable);
+
+/*! \brief Tells whether the Lock Error interrupt is enabled.
+ *
+ * \return Whether the Lock Error interrupt is enabled.
+ */
+extern Bool flashc_is_lock_error_int_enabled(void);
+
+/*! \brief Enables or disables the Lock Error interrupt.
+ *
+ * \param enable Whether to enable the Lock Error interrupt: \c TRUE or
+ * \c FALSE.
+ */
+extern void flashc_enable_lock_error_int(Bool enable);
+
+/*! \brief Tells whether the Programming Error interrupt is enabled.
+ *
+ * \return Whether the Programming Error interrupt is enabled.
+ */
+extern Bool flashc_is_prog_error_int_enabled(void);
+
+/*! \brief Enables or disables the Programming Error interrupt.
+ *
+ * \param enable Whether to enable the Programming Error interrupt: \c TRUE or
+ * \c FALSE.
+ */
+extern void flashc_enable_prog_error_int(Bool enable);
+
+//! @}
+
+
+/*! \name FLASHC Status
+ */
+//! @{
+
+/*! \brief Tells whether the FLASHC is ready to run a new command.
+ *
+ * \return Whether the FLASHC is ready to run a new command.
+ */
+extern Bool flashc_is_ready(void);
+
+/*! \brief Waits actively until the FLASHC is ready to run a new command.
+ *
+ * This is the default function assigned to \ref flashc_wait_until_ready.
+ */
+extern void flashc_default_wait_until_ready(void);
+
+//! Pointer to the function used by the driver when it needs to wait until the
+//! FLASHC is ready to run a new command.
+//! The default function is \ref flashc_default_wait_until_ready.
+//! The user may change this pointer to use another implementation.
+extern void (*volatile flashc_wait_until_ready)(void);
+
+/*! \brief Tells whether a Lock Error has occurred during the last function
+ * called that issued one or more FLASHC commands.
+ *
+ * \return Whether a Lock Error has occurred during the last function called
+ * that issued one or more FLASHC commands.
+ */
+extern Bool flashc_is_lock_error(void);
+
+/*! \brief Tells whether a Programming Error has occurred during the last
+ * function called that issued one or more FLASHC commands.
+ *
+ * \return Whether a Programming Error has occurred during the last function
+ * called that issued one or more FLASHC commands.
+ */
+extern Bool flashc_is_programming_error(void);
+
+//! @}
+
+
+/*! \name FLASHC Command Control
+ */
+//! @{
+
+/*! \brief Gets the last issued FLASHC command.
+ *
+ * \return The last issued FLASHC command.
+ */
+extern unsigned int flashc_get_command(void);
+
+/*! \brief Gets the current FLASHC page number.
+ *
+ * \return The current FLASHC page number.
+ */
+extern unsigned int flashc_get_page_number(void);
+
+/*! \brief Issues a FLASHC command.
+ *
+ * \param command The command: \c AVR32_FLASHC_FCMD_CMD_x.
+ * \param page_number The page number to apply the command to:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: use this to apply the command to the current page number
+ * or if the command does not apply to any page number;
+ * \arg this argument may have other meanings according to the command. See
+ * the FLASHC chapter of the MCU datasheet.
+ *
+ * \warning A Lock Error is issued if the command violates the protection
+ * mechanism.
+ *
+ * \warning A Programming Error is issued if the command is invalid.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_issue_command(unsigned int command, int page_number);
+
+//! @}
+
+
+/*! \name FLASHC Global Commands
+ */
+//! @{
+
+/*! \brief Issues a No Operation command to the FLASHC.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_no_operation(void);
+
+/*! \brief Issues an Erase All command to the FLASHC.
+ *
+ * This command erases all bits in the flash array, the general-purpose fuse
+ * bits and the Security bit. The User page is not erased.
+ *
+ * This command also ensures that all volatile memories, such as register file
+ * and RAMs, are erased before the Security bit is erased, i.e. deactivated.
+ *
+ * \warning A Lock Error is issued if at least one region is locked or the
+ * bootloader protection is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern void flashc_erase_all(void);
+
+//! @}
+
+
+/*! \name FLASHC Protection Mechanisms
+ */
+//! @{
+
+/*! \brief Tells whether the Security bit is active.
+ *
+ * \return Whether the Security bit is active.
+ */
+extern Bool flashc_is_security_bit_active(void);
+
+/*! \brief Activates the Security bit.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_activate_security_bit(void);
+
+/*! \brief Gets the bootloader protected size.
+ *
+ * \return The bootloader protected size in bytes.
+ */
+extern unsigned int flashc_get_bootloader_protected_size(void);
+
+/*! \brief Sets the bootloader protected size.
+ *
+ * \param bootprot_size The wanted bootloader protected size in bytes. If this
+ * size is not supported, the actual size will be the
+ * nearest greater available size or the maximal possible
+ * size if the requested size is too large.
+ *
+ * \return The actual bootloader protected size in bytes.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size);
+
+/*! \brief Tells whether external privileged fetch is locked.
+ *
+ * \return Whether external privileged fetch is locked.
+ */
+extern Bool flashc_is_external_privileged_fetch_locked(void);
+
+/*! \brief Locks or unlocks external privileged fetch.
+ *
+ * \param lock Whether to lock external privileged fetch: \c TRUE or \c FALSE.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_external_privileged_fetch(Bool lock);
+
+/*! \brief Tells whether the region of a page is locked.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \return Whether the region of the specified page is locked.
+ */
+extern Bool flashc_is_page_region_locked(int page_number);
+
+/*! \brief Tells whether a region is locked.
+ *
+ * \param region The region number: \c 0 to <tt>(AVR32_FLASHC_REGIONS - 1)</tt>.
+ *
+ * \return Whether the specified region is locked.
+ */
+extern Bool flashc_is_region_locked(unsigned int region);
+
+/*! \brief Locks or unlocks the region of a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ * \param lock Whether to lock the region of the specified page: \c TRUE or
+ * \c FALSE.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_page_region(int page_number, Bool lock);
+
+/*! \brief Locks or unlocks a region.
+ *
+ * \param region The region number: \c 0 to <tt>(AVR32_FLASHC_REGIONS - 1)</tt>.
+ * \param lock Whether to lock the specified region: \c TRUE or \c FALSE.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_region(unsigned int region, Bool lock);
+
+/*! \brief Locks or unlocks all regions.
+ *
+ * \param lock Whether to lock the regions: \c TRUE or \c FALSE.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_lock_all_regions(Bool lock);
+
+//! @}
+
+
+/*! \name Access to General-Purpose Fuses
+ */
+//! @{
+
+/*! \brief Reads a general-purpose fuse bit.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ *
+ * \return The value of the specified general-purpose fuse bit.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit);
+
+/*! \brief Reads a general-purpose fuse bit-field.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ *
+ * \return The value of the specified general-purpose fuse bit-field.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width);
+
+/*! \brief Reads a general-purpose fuse byte.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ *
+ * \return The value of the specified general-purpose fuse byte.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte);
+
+/*! \brief Reads all general-purpose fuses.
+ *
+ * \return The value of all general-purpose fuses as a word.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern U64 flashc_read_all_gp_fuses(void);
+
+/*! \brief Erases a general-purpose fuse bit.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check);
+
+/*! \brief Erases a general-purpose fuse bit-field.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check);
+
+/*! \brief Erases a general-purpose fuse byte.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check);
+
+/*! \brief Erases all general-purpose fuses.
+ *
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern Bool flashc_erase_all_gp_fuses(Bool check);
+
+/*! \brief Writes a general-purpose fuse bit.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ * \param value The value of the specified general-purpose fuse bit.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value);
+
+/*! \brief Writes a general-purpose fuse bit-field.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ * \param value The value of the specified general-purpose fuse bit-field.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value);
+
+/*! \brief Writes a general-purpose fuse byte.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ * \param value The value of the specified general-purpose fuse byte.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value);
+
+/*! \brief Writes all general-purpose fuses.
+ *
+ * \param value The value of all general-purpose fuses as a word.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_write_all_gp_fuses(U64 value);
+
+/*! \brief Sets a general-purpose fuse bit with the appropriate erase and write
+ * operations.
+ *
+ * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63.
+ * \param value The value of the specified general-purpose fuse bit.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value);
+
+/*! \brief Sets a general-purpose fuse bit-field with the appropriate erase and
+ * write operations.
+ *
+ * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to
+ * \c 63.
+ * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to
+ * \c 64.
+ * \param value The value of the specified general-purpose fuse bit-field.
+ *
+ * \warning A Lock Error is issued if the Security bit is active and the command
+ * is applied to BOOTPROT or EPFL fuses.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value);
+
+/*! \brief Sets a general-purpose fuse byte with the appropriate erase and write
+ * operations.
+ *
+ * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7.
+ * \param value The value of the specified general-purpose fuse byte.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value);
+
+/*! \brief Sets all general-purpose fuses with the appropriate erase and write
+ * operations.
+ *
+ * \param value The value of all general-purpose fuses as a word.
+ *
+ * \warning A Lock Error is issued if the Security bit is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note The actual number of general-purpose fuse bits implemented by hardware
+ * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are
+ * fixed at 1 by hardware.
+ */
+extern void flashc_set_all_gp_fuses(U64 value);
+
+//! @}
+
+
+/*! \name Access to Flash Pages
+ */
+//! @{
+
+/*! \brief Clears the page buffer.
+ *
+ * This command resets all bits in the page buffer to one. Write accesses to the
+ * page buffer can only change page buffer bits from one to zero.
+ *
+ * \warning The page buffer is not automatically reset after a page write.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern void flashc_clear_page_buffer(void);
+
+/*! \brief Tells whether the page to which the last Quick Page Read or Quick
+ * Page Read User Page command was applied was erased.
+ *
+ * \return Whether the page to which the last Quick Page Read or Quick Page Read
+ * User Page command was applied was erased.
+ */
+extern Bool flashc_is_page_erased(void);
+
+/*! \brief Applies the Quick Page Read command to a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \return Whether the specified page is erased.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern Bool flashc_quick_page_read(int page_number);
+
+/*! \brief Erases a page.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if the command is applied to a page belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern Bool flashc_erase_page(int page_number, Bool check);
+
+/*! \brief Erases all pages within the flash array.
+ *
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \warning A Lock Error is issued if at least one region is locked or the
+ * bootloader protection is active.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern Bool flashc_erase_all_pages(Bool check);
+
+/*! \brief Writes a page from the page buffer.
+ *
+ * \param page_number The page number:
+ * \arg \c 0 to <tt>(flashc_get_page_count() - 1)</tt>: a page number within
+ * the flash array;
+ * \arg <tt>< 0</tt>: the current page number.
+ *
+ * \warning A Lock Error is issued if the command is applied to a page belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \warning The page buffer is not automatically reset after a page write.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ */
+extern void flashc_write_page(int page_number);
+
+/*! \brief Issues a Quick Page Read User Page command to the FLASHC.
+ *
+ * \return Whether the User page is erased.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern Bool flashc_quick_user_page_read(void);
+
+/*! \brief Erases the User page.
+ *
+ * \param check Whether to check erase: \c TRUE or \c FALSE.
+ *
+ * \return Whether the erase succeeded or always \c TRUE if erase check was not
+ * requested.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note An erase operation can only set bits.
+ */
+extern Bool flashc_erase_user_page(Bool check);
+
+/*! \brief Writes the User page from the page buffer.
+ *
+ * \warning The page buffer is not automatically reset after a page write.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ *
+ * \note A write operation can only clear bits.
+ */
+extern void flashc_write_user_page(void);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src source byte.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source byte.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source half-word.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source half-word.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source word.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source word.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source double-word.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source double-word.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase);
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the repeated \a src big-endian source pattern.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Source double-word.
+ * \param src_width \a src width in bits: 8, 16, 32 or 64.
+ * \param nbytes Number of bytes to set.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+#define flashc_memset(dst, src, src_width, nbytes, erase) \
+ TPASTE2(flashc_memset, src_width)((dst), (src), (nbytes), (erase))
+
+/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst
+ * from the source pointed to by \a src.
+ *
+ * The destination areas that are not within the flash array or the User page
+ * are ignored.
+ *
+ * All pointer and size alignments are supported.
+ *
+ * \param dst Pointer to flash destination.
+ * \param src Pointer to source data.
+ * \param nbytes Number of bytes to copy.
+ * \param erase Whether to erase before writing: \c TRUE or \c FALSE.
+ *
+ * \return The value of \a dst.
+ *
+ * \warning If copying takes place between areas that overlap, the behavior is
+ * undefined.
+ *
+ * \warning This function may be called with \a erase set to \c FALSE only if
+ * the destination consists only of erased words, i.e. this function
+ * can not be used to write only one bit of a previously written word.
+ * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the
+ * resulting value in flash may be different from \c 0x00000000.
+ *
+ * \warning A Lock Error is issued if the command is applied to pages belonging
+ * to a locked region or to the bootloader protected area.
+ *
+ * \note The FLASHC error status returned by \ref flashc_is_lock_error and
+ * \ref flashc_is_programming_error is updated.
+ */
+extern volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase);
+
+#if UC3C
+
+/*! \brief Depednding to the CPU frequency, set the wait states of flash read
+ * accesses and enable or disable the High speed read mode.
+ *
+ * \param cpu_f_hz The CPU frequency
+ */
+void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz);
+#endif // UC3C device-specific implementation
+
+//! @}
+
+
+#endif // _FLASHC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c
new file mode 100644
index 0000000..b6b83c7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c
@@ -0,0 +1,458 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief GPIO driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the GPIO.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a GPIO module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "gpio.h"
+
+//! GPIO module instance.
+#define GPIO AVR32_GPIO
+
+
+/*! \name Peripheral Bus Interface
+ */
+//! @{
+
+
+int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size)
+{
+ int status = GPIO_SUCCESS;
+ unsigned int i;
+
+ for (i = 0; i < size; i++)
+ {
+ status |= gpio_enable_module_pin(gpiomap->pin, gpiomap->function);
+ gpiomap++;
+ }
+
+ return status;
+}
+
+
+int gpio_enable_module_pin(unsigned int pin, unsigned int function)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ // Enable the correct function.
+ switch (function)
+ {
+ case 0: // A function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+ case 1: // B function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+ case 2: // C function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+ case 3: // D function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pmr2c = 1 << (pin & 0x1F);
+#endif
+ break;
+
+#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ case 4: // E function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+
+ case 5: // F function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1c = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+
+ case 6: // G function.
+ gpio_port->pmr0c = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+
+ case 7: // H function.
+ gpio_port->pmr0s = 1 << (pin & 0x1F);
+ gpio_port->pmr1s = 1 << (pin & 0x1F);
+ gpio_port->pmr2s = 1 << (pin & 0x1F);
+ break;
+#endif
+
+ default:
+ return GPIO_INVALID_ARGUMENT;
+ }
+
+ // Disable GPIO control.
+ gpio_port->gperc = 1 << (pin & 0x1F);
+
+ return GPIO_SUCCESS;
+}
+
+
+void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size)
+{
+ unsigned int i;
+
+ for (i = 0; i < size; i++)
+ {
+ gpio_enable_gpio_pin(gpiomap->pin);
+ gpiomap++;
+ }
+}
+
+
+void gpio_enable_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->oderc = 1 << (pin & 0x1F);
+ gpio_port->gpers = 1 << (pin & 0x1F);
+}
+
+
+// The open-drain mode is not synthesized on the current AVR32 products.
+// If one day some AVR32 products have this feature, the corresponding part
+// numbers should be listed in the #if below.
+// Note that other functions are available in this driver to use pins with open
+// drain in GPIO mode. The advantage of the open-drain mode functions over these
+// other functions is that they can be used not only in GPIO mode but also in
+// module mode.
+#if 0
+
+
+void gpio_enable_pin_open_drain(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->odmers = 1 << (pin & 0x1F);
+}
+
+
+void gpio_disable_pin_open_drain(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->odmerc = 1 << (pin & 0x1F);
+}
+
+
+#endif
+
+
+void gpio_enable_pin_pull_up(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puers = 1 << (pin & 0x1F);
+#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+ gpio_port->pderc = 1 << (pin & 0x1F);
+#endif
+}
+
+
+void gpio_disable_pin_pull_up(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puerc = 1 << (pin & 0x1F);
+}
+
+#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control.
+
+/*! \brief Enables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_enable_pin_pull_down(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puerc = 1 << (pin & 0x1F);
+ gpio_port->pders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_disable_pin_pull_down(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->pderc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Enables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_enable_pin_buskeeper(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puers = 1 << (pin & 0x1F);
+ gpio_port->pders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+void gpio_disable_pin_buskeeper(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->puerc = 1 << (pin & 0x1F);
+ gpio_port->pderc = 1 << (pin & 0x1F);
+}
+
+#endif
+
+int gpio_get_pin_value(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return (gpio_port->pvr >> (pin & 0x1F)) & 1;
+}
+
+
+int gpio_get_gpio_pin_output_value(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return (gpio_port->ovr >> (pin & 0x1F)) & 1;
+}
+
+
+int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return ((gpio_port->oder >> (pin & 0x1F)) & 1) ^ 1;
+}
+
+
+void gpio_set_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrs = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_clr_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_tgl_gpio_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrt = 1 << (pin & 0x1F); // Toggle the I/O line.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_set_gpio_open_drain_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_clr_gpio_open_drain_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0.
+ gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_tgl_gpio_open_drain_pin(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line if the GPIO output driver is enabled: 0.
+ gpio_port->odert = 1 << (pin & 0x1F); // The GPIO output driver is toggled for that pin.
+ gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin.
+}
+
+
+void gpio_enable_pin_glitch_filter(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->gfers = 1 << (pin & 0x1F);
+}
+
+
+void gpio_disable_pin_glitch_filter(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->gferc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Configure the edge detector of an input pin
+ *
+ * \param pin The pin number.
+ * \param mode The edge detection mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE
+ * or \ref GPIO_FALLING_EDGE).
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+static int gpio_configure_edge_detector(unsigned int pin, unsigned int mode)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ // Configure the edge detector.
+ switch (mode)
+ {
+ case GPIO_PIN_CHANGE:
+ gpio_port->imr0c = 1 << (pin & 0x1F);
+ gpio_port->imr1c = 1 << (pin & 0x1F);
+ break;
+
+ case GPIO_RISING_EDGE:
+ gpio_port->imr0s = 1 << (pin & 0x1F);
+ gpio_port->imr1c = 1 << (pin & 0x1F);
+ break;
+
+ case GPIO_FALLING_EDGE:
+ gpio_port->imr0c = 1 << (pin & 0x1F);
+ gpio_port->imr1s = 1 << (pin & 0x1F);
+ break;
+
+ default:
+ return GPIO_INVALID_ARGUMENT;
+ }
+
+ return GPIO_SUCCESS;
+}
+
+
+int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ // Enable the glitch filter.
+ gpio_port->gfers = 1 << (pin & 0x1F);
+
+ // Configure the edge detector.
+ if(GPIO_INVALID_ARGUMENT == gpio_configure_edge_detector(pin, mode))
+ return(GPIO_INVALID_ARGUMENT);
+
+ // Enable interrupt.
+ gpio_port->iers = 1 << (pin & 0x1F);
+
+ return GPIO_SUCCESS;
+}
+
+
+void gpio_disable_pin_interrupt(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->ierc = 1 << (pin & 0x1F);
+}
+
+
+int gpio_get_pin_interrupt_flag(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ return (gpio_port->ifr >> (pin & 0x1F)) & 1;
+}
+
+
+void gpio_clear_pin_interrupt_flag(unsigned int pin)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+ gpio_port->ifrc = 1 << (pin & 0x1F);
+}
+
+
+//#
+//# Peripheral Event System Support.
+//#
+#if UC3L
+int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf)
+{
+ volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5];
+
+ if(TRUE == use_igf)
+ {
+ // Enable the glitch filter.
+ gpio_port->gfers = 1 << (pin & 0x1F);
+ }
+ else
+ {
+ // Disable the glitch filter.
+ gpio_port->gferc = 1 << (pin & 0x1F);
+ }
+
+ // Configure the edge detector.
+ return(gpio_configure_edge_detector(pin, mode));
+}
+
+#endif
+
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h
new file mode 100644
index 0000000..f0b5fd8
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h
@@ -0,0 +1,583 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief GPIO header for AVR32 UC3.
+ *
+ * This file contains basic GPIO driver functions.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a GPIO module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _GPIO_H_
+#define _GPIO_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+/*! \name Return Values of the GPIO API
+ */
+//! @{
+#define GPIO_SUCCESS 0 //!< Function successfully completed.
+#define GPIO_INVALID_ARGUMENT 1 //!< Input parameters are out of range.
+//! @}
+
+
+/*! \name Interrupt Trigger Modes
+ */
+//! @{
+#define GPIO_PIN_CHANGE 0 //!< Interrupt triggered upon pin change.
+#define GPIO_RISING_EDGE 1 //!< Interrupt triggered upon rising edge.
+#define GPIO_FALLING_EDGE 2 //!< Interrupt triggered upon falling edge.
+//! @}
+
+
+//! A type definition of pins and modules connectivity.
+typedef struct
+{
+ unsigned char pin; //!< Module pin.
+ unsigned char function; //!< Module function.
+} gpio_map_t[];
+
+
+/*! \name Peripheral Bus Interface
+ *
+ * Low-speed interface with a non-deterministic number of clock cycles per
+ * access.
+ *
+ * This interface operates with lower clock frequencies (fPB <= fCPU), and its
+ * timing is not deterministic since it needs to access a shared bus which may
+ * be heavily loaded.
+ *
+ * \note This interface is immediately available without initialization.
+ */
+//! @{
+
+/*! \brief Enables specific module modes for a set of pins.
+ *
+ * \param gpiomap The pin map.
+ * \param size The number of pins in \a gpiomap.
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size);
+
+/*! \brief Enables a specific module mode for a pin.
+ *
+ * \param pin The pin number.\n
+ * Refer to the product header file `uc3x.h' (where x is the part
+ * number; e.g. x = a0512) for module pins. E.g., to enable a PWM
+ * channel output, the pin number can be AVR32_PWM_3_PIN for PWM
+ * channel 3.
+ * \param function The pin function.\n
+ * Refer to the product header file `uc3x.h' (where x is the
+ * part number; e.g. x = a0512) for module pin functions. E.g.,
+ * to enable a PWM channel output, the pin function can be
+ * AVR32_PWM_3_FUNCTION for PWM channel 3.
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_enable_module_pin(unsigned int pin, unsigned int function);
+
+/*! \brief Enables the GPIO mode of a set of pins.
+ *
+ * \param gpiomap The pin map.
+ * \param size The number of pins in \a gpiomap.
+ */
+extern void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size);
+
+/*! \brief Enables the GPIO mode of a pin.
+ *
+ * \param pin The pin number.\n
+ * Refer to the product header file `uc3x.h' (where x is the part
+ * number; e.g. x = a0512) for pin definitions. E.g., to enable the
+ * GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as
+ * AVR32_PWM_3_PIN for PWM channel 3 can also be used to release
+ * module pins for GPIO.
+ */
+extern void gpio_enable_gpio_pin(unsigned int pin);
+
+// The open-drain mode is not synthesized on the current AVR32 products.
+// If one day some AVR32 products have this feature, the corresponding part
+// numbers should be listed in the #if below.
+// Note that other functions are available in this driver to use pins with open
+// drain in GPIO mode. The advantage of the open-drain mode functions over these
+// other functions is that they can be used not only in GPIO mode but also in
+// module mode.
+#if 0
+
+/*! \brief Enables the open-drain mode of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_open_drain(unsigned int pin);
+
+/*! \brief Disables the open-drain mode of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_open_drain(unsigned int pin);
+
+#endif
+
+/*! \brief Enables the pull-up resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_pull_up(unsigned int pin);
+
+/*! \brief Disables the pull-up resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_pull_up(unsigned int pin);
+
+#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED)
+// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control.
+
+/*! \brief Enables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_pull_down(unsigned int pin);
+
+/*! \brief Disables the pull-down resistor of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_pull_down(unsigned int pin);
+
+/*! \brief Enables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_buskeeper(unsigned int pin);
+
+/*! \brief Disables the buskeeper functionality on a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_buskeeper(unsigned int pin);
+
+#endif
+
+/*! \brief Returns the value of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin value.
+ */
+extern int gpio_get_pin_value(unsigned int pin);
+
+/*! \brief Returns the output value set for a GPIO pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin output value.
+ *
+ * \note This function must be used in conjunction with \ref gpio_set_gpio_pin,
+ * \ref gpio_clr_gpio_pin and \ref gpio_tgl_gpio_pin.
+ */
+extern int gpio_get_gpio_pin_output_value(unsigned int pin);
+
+/*! \brief Returns the output value set for a GPIO pin using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin output value.
+ *
+ * \note This function must be used in conjunction with
+ * \ref gpio_set_gpio_open_drain_pin, \ref gpio_clr_gpio_open_drain_pin
+ * and \ref gpio_tgl_gpio_open_drain_pin.
+ */
+extern int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 1.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_set_gpio_pin(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 0.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_clr_gpio_pin(unsigned int pin);
+
+/*! \brief Toggles a GPIO pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_tgl_gpio_pin(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 1 using open drain.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_set_gpio_open_drain_pin(unsigned int pin);
+
+/*! \brief Drives a GPIO pin to 0 using open drain.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_clr_gpio_open_drain_pin(unsigned int pin);
+
+/*! \brief Toggles a GPIO pin using open drain.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_tgl_gpio_open_drain_pin(unsigned int pin);
+
+/*! \brief Enables the glitch filter of a pin.
+ *
+ * When the glitch filter is enabled, a glitch with duration of less than 1
+ * clock cycle is automatically rejected, while a pulse with duration of 2 clock
+ * cycles or more is accepted. For pulse durations between 1 clock cycle and 2
+ * clock cycles, the pulse may or may not be taken into account, depending on
+ * the precise timing of its occurrence. Thus for a pulse to be guaranteed
+ * visible it must exceed 2 clock cycles, whereas for a glitch to be reliably
+ * filtered out, its duration must not exceed 1 clock cycle. The filter
+ * introduces 2 clock cycles latency.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_enable_pin_glitch_filter(unsigned int pin);
+
+/*! \brief Disables the glitch filter of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_glitch_filter(unsigned int pin);
+
+/*! \brief Enables the interrupt of a pin with the specified settings.
+ *
+ * \param pin The pin number.
+ * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or
+ * \ref GPIO_FALLING_EDGE).
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode);
+
+/*! \brief Disables the interrupt of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_disable_pin_interrupt(unsigned int pin);
+
+/*! \brief Gets the interrupt flag of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin interrupt flag.
+ */
+extern int gpio_get_pin_interrupt_flag(unsigned int pin);
+
+/*! \brief Clears the interrupt flag of a pin.
+ *
+ * \param pin The pin number.
+ */
+extern void gpio_clear_pin_interrupt_flag(unsigned int pin);
+
+//! @}
+
+
+#if (defined AVR32_GPIO_LOCAL_ADDRESS)
+/*! \name Local Bus Interface
+ *
+ * High-speed interface with only one clock cycle per access.
+ *
+ * This interface operates with high clock frequency (fCPU), and its timing is
+ * deterministic since it does not need to access a shared bus which may be
+ * heavily loaded.
+ *
+ * \warning To use this interface, the clock frequency of the peripheral bus on
+ * which the GPIO peripheral is connected must be set to the CPU clock
+ * frequency (fPB = fCPU).
+ *
+ * \note This interface has to be initialized in order to be available.
+ */
+//! @{
+
+/*! \brief Enables the local bus interface for GPIO.
+ *
+ * \note This function must have been called at least once before using other
+ * functions in this interface.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_init(void)
+{
+ Set_system_register(AVR32_CPUCR,
+ Get_system_register(AVR32_CPUCR) | AVR32_CPUCR_LOCEN_MASK);
+}
+
+/*! \brief Enables the output driver of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_enable_pin_output_driver(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the output driver of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_disable_pin_output_driver(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Returns the value of a pin.
+ *
+ * \param pin The pin number.
+ *
+ * \return The pin value.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int gpio_local_get_pin_value(unsigned int pin)
+{
+ return (AVR32_GPIO_LOCAL.port[pin >> 5].pvr >> (pin & 0x1F)) & 1;
+}
+
+/*! \brief Drives a GPIO pin to 1.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin nor its output
+ * driver. \ref gpio_enable_gpio_pin and
+ * \ref gpio_local_enable_pin_output_driver can be called for this
+ * purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_set_gpio_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrs = 1 << (pin & 0x1F);
+}
+
+/*! \brief Drives a GPIO pin to 0.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin nor its output
+ * driver. \ref gpio_enable_gpio_pin and
+ * \ref gpio_local_enable_pin_output_driver can be called for this
+ * purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_clr_gpio_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Toggles a GPIO pin.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init must have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin nor its output
+ * driver. \ref gpio_enable_gpio_pin and
+ * \ref gpio_local_enable_pin_output_driver can be called for this
+ * purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_tgl_gpio_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrt = 1 << (pin & 0x1F);
+}
+
+/*! \brief Initializes the configuration of a GPIO pin so that it can be used
+ * with GPIO open-drain functions.
+ *
+ * \note This function must have been called at least once before using
+ * \ref gpio_local_set_gpio_open_drain_pin,
+ * \ref gpio_local_clr_gpio_open_drain_pin or
+ * \ref gpio_local_tgl_gpio_open_drain_pin.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_init_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Drives a GPIO pin to 1 using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must
+ * have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_set_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Drives a GPIO pin to 0 using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must
+ * have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_clr_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F);
+}
+
+/*! \brief Toggles a GPIO pin using open drain.
+ *
+ * \param pin The pin number.
+ *
+ * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must
+ * have been called beforehand.
+ *
+ * \note This function does not enable the GPIO mode of the pin.
+ * \ref gpio_enable_gpio_pin can be called for this purpose.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_local_tgl_gpio_open_drain_pin(unsigned int pin)
+{
+ AVR32_GPIO_LOCAL.port[pin >> 5].odert = 1 << (pin & 0x1F);
+}
+
+//! @}
+#endif // AVR32_GPIO_LOCAL_ADDRESS
+
+#if UC3L
+//! @{
+/*! \name Peripheral Event System support
+ *
+ * The GPIO can be programmed to output peripheral events whenever an interrupt
+ * condition is detected, such as pin value change, or only when a rising or
+ * falling edge is detected.
+ *
+ */
+
+/*! \brief Enables the peripheral event generation of a pin.
+ *
+ * \param pin The pin number.
+ *
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_enable_pin_periph_event(unsigned int pin)
+{
+ AVR32_GPIO.port[pin >> 5].oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin.
+ AVR32_GPIO.port[pin >> 5].evers = 1 << (pin & 0x1F);
+}
+
+/*! \brief Disables the peripheral event generation of a pin.
+ *
+ * \param pin The pin number.
+ *
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void gpio_disable_pin_periph_event(unsigned int pin)
+{
+ AVR32_GPIO.port[pin >> 5].everc = 1 << (pin & 0x1F);
+}
+
+/*! \brief Configure the peripheral event trigger mode of a pin
+ *
+ * \param pin The pin number.
+ * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or
+ * \ref GPIO_FALLING_EDGE).
+ * \param use_igf use the Input Glitch Filter (TRUE) or not (FALSE).
+ *
+ * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT.
+ */
+extern int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf);
+
+//! @}
+#endif
+
+
+#endif // _GPIO_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x
new file mode 100644
index 0000000..ec4109d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x
@@ -0,0 +1,239 @@
+/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Exception and interrupt vectors.
+ *
+ * This file maps all events supported by an AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an INTC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#if !__AVR32_UC__ && !__AVR32_AP__
+ #error Implementation of the AVR32 architecture not supported by the INTC driver.
+#endif
+
+
+#include <avr32/io.h>
+
+
+//! @{
+//! \verbatim
+
+
+ .section .exception, "ax", @progbits
+
+
+// Start of Exception Vector Table.
+
+ // EVBA must be aligned with a power of two strictly greater than the EVBA-
+ // relative offset of the last vector.
+ .balign 0x200
+
+ // Export symbol.
+ .global _evba
+ .type _evba, @function
+_evba:
+
+ .org 0x000
+ // Unrecoverable Exception.
+_handle_Unrecoverable_Exception:
+ rjmp $
+
+ .org 0x004
+ // TLB Multiple Hit.
+_handle_TLB_Multiple_Hit:
+ rjmp $
+
+ .org 0x008
+ // Bus Error Data Fetch.
+_handle_Bus_Error_Data_Fetch:
+ rjmp $
+
+ .org 0x00C
+ // Bus Error Instruction Fetch.
+_handle_Bus_Error_Instruction_Fetch:
+ rjmp $
+
+ .org 0x010
+ // NMI.
+_handle_NMI:
+ rjmp $
+
+ .org 0x014
+ // Instruction Address.
+_handle_Instruction_Address:
+ rjmp $
+
+ .org 0x018
+ // ITLB Protection.
+_handle_ITLB_Protection:
+ rjmp $
+
+ .org 0x01C
+ // Breakpoint.
+_handle_Breakpoint:
+ rjmp $
+
+ .org 0x020
+ // Illegal Opcode.
+_handle_Illegal_Opcode:
+ rjmp $
+
+ .org 0x024
+ // Unimplemented Instruction.
+_handle_Unimplemented_Instruction:
+ rjmp $
+
+ .org 0x028
+ // Privilege Violation.
+_handle_Privilege_Violation:
+ rjmp $
+
+ .org 0x02C
+ // Floating-Point: UNUSED IN AVR32UC and AVR32AP.
+_handle_Floating_Point:
+ rjmp $
+
+ .org 0x030
+ // Coprocessor Absent: UNUSED IN AVR32UC.
+_handle_Coprocessor_Absent:
+ rjmp $
+
+ .org 0x034
+ // Data Address (Read).
+_handle_Data_Address_Read:
+ rjmp $
+
+ .org 0x038
+ // Data Address (Write).
+_handle_Data_Address_Write:
+ rjmp $
+
+ .org 0x03C
+ // DTLB Protection (Read).
+_handle_DTLB_Protection_Read:
+ rjmp $
+
+ .org 0x040
+ // DTLB Protection (Write).
+_handle_DTLB_Protection_Write:
+ rjmp $
+
+ .org 0x044
+ // DTLB Modified: UNUSED IN AVR32UC.
+_handle_DTLB_Modified:
+ rjmp $
+
+ .org 0x050
+ // ITLB Miss.
+_handle_ITLB_Miss:
+ rjmp $
+
+ .org 0x060
+ // DTLB Miss (Read).
+_handle_DTLB_Miss_Read:
+ rjmp $
+
+ .org 0x070
+ // DTLB Miss (Write).
+_handle_DTLB_Miss_Write:
+ rjmp $
+
+ .org 0x100
+ // Supervisor Call.
+_handle_Supervisor_Call:
+ rjmp $
+
+
+// Interrupt support.
+// The interrupt controller must provide the offset address relative to EVBA.
+// Important note:
+// All interrupts call a C function named _get_interrupt_handler.
+// This function will read group and interrupt line number to then return in
+// R12 a pointer to a user-provided interrupt handler.
+
+ .balign 4
+
+ .irp priority, 0, 1, 2, 3
+_int\priority:
+#if __AVR32_UC__
+ // R8-R12, LR, PC and SR are automatically pushed onto the system stack by the
+ // CPU upon interrupt entry. No other register is saved by hardware.
+#elif __AVR32_AP__
+ // PC and SR are automatically saved in respectively RAR_INTx and RSR_INTx by
+ // the CPU upon interrupt entry. No other register is saved by hardware.
+ pushm r8-r12, lr
+#endif
+ mov r12, \priority // Pass the int_level parameter to the _get_interrupt_handler function.
+ call _get_interrupt_handler
+ cp.w r12, 0 // Get the pointer to the interrupt handler returned by the function.
+#if __AVR32_UC__
+ movne pc, r12 // If this was not a spurious interrupt (R12 != NULL), jump to the handler.
+#elif __AVR32_AP__
+ breq spint\priority // If this was a spurious interrupt (R12 == NULL), branch.
+ st.w --sp, r12 // Push the pointer to the interrupt handler onto the system stack since no register may be altered.
+ popm r8-r12, lr, pc // Restore registers and jump to the handler.
+spint\priority:
+ popm r8-r12, lr
+#endif
+ rete // If this was a spurious interrupt (R12 == NULL), return from event handler.
+ .endr
+
+
+// Constant data area.
+
+ .balign 4
+
+ // Values to store in the interrupt priority registers for the various interrupt priority levels.
+ // The interrupt priority registers contain the interrupt priority level and
+ // the EVBA-relative interrupt vector offset.
+ .global ipr_val
+ .type ipr_val, @object
+ipr_val:
+ .word (AVR32_INTC_INT0 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int0 - _evba),\
+ (AVR32_INTC_INT1 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int1 - _evba),\
+ (AVR32_INTC_INT2 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int2 - _evba),\
+ (AVR32_INTC_INT3 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int3 - _evba)
+
+
+//! \endverbatim
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c
new file mode 100644
index 0000000..84d498d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c
@@ -0,0 +1,214 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief INTC driver for AVR32 UC3.
+ *
+ * AVR32 Interrupt Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an INTC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+#include "compiler.h"
+#include "preprocessor.h"
+#include "intc.h"
+
+// define _evba from exception.S
+extern void _evba;
+
+//! Values to store in the interrupt priority registers for the various interrupt priority levels.
+extern const unsigned int ipr_val[AVR32_INTC_NUM_INT_LEVELS];
+
+//! Creates a table of interrupt line handlers per interrupt group in order to optimize RAM space.
+//! Each line handler table contains a set of pointers to interrupt handlers.
+#if (defined __GNUC__)
+#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \
+static volatile __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)];
+#elif (defined __ICCAVR32__)
+#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \
+static volatile __no_init __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)];
+#endif
+MREPEAT(AVR32_INTC_NUM_INT_GRPS, DECL_INT_LINE_HANDLER_TABLE, ~);
+#undef DECL_INT_LINE_HANDLER_TABLE
+
+//! Table containing for each interrupt group the number of interrupt request
+//! lines and a pointer to the table of interrupt line handlers.
+static const struct
+{
+ unsigned int num_irqs;
+ volatile __int_handler *_int_line_handler_table;
+} _int_handler_table[AVR32_INTC_NUM_INT_GRPS] =
+{
+#define INSERT_INT_LINE_HANDLER_TABLE(GRP, unused) \
+ {AVR32_INTC_NUM_IRQS_PER_GRP##GRP, _int_line_handler_table_##GRP},
+ MREPEAT(AVR32_INTC_NUM_INT_GRPS, INSERT_INT_LINE_HANDLER_TABLE, ~)
+#undef INSERT_INT_LINE_HANDLER_TABLE
+};
+
+
+/*! \brief Default interrupt handler.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+#if (defined __GNUC__)
+__attribute__((__interrupt__))
+#elif (defined __ICCAVR32__)
+__interrupt
+#endif
+static void _unhandled_interrupt(void)
+{
+ // Catch unregistered interrupts.
+ while (TRUE);
+}
+
+
+/*! \brief Gets the interrupt handler of the current event at the \a int_level
+ * interrupt priority level (called from exception.S).
+ *
+ * \param int_level Interrupt priority level to handle.
+ *
+ * \return Interrupt handler to execute.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+__int_handler _get_interrupt_handler(unsigned int int_level)
+{
+ // ICR3 is mapped first, ICR0 last.
+ // Code in exception.S puts int_level in R12 which is used by AVR32-GCC to
+ // pass a single argument to a function.
+ unsigned int int_grp = AVR32_INTC.icr[AVR32_INTC_INT3 - int_level];
+ unsigned int int_req = AVR32_INTC.irr[int_grp];
+
+ // As an interrupt may disappear while it is being fetched by the CPU
+ // (spurious interrupt caused by a delayed response from an MCU peripheral to
+ // an interrupt flag clear or interrupt disable instruction), check if there
+ // are remaining interrupt lines to process.
+ // If a spurious interrupt occurs, the status register (SR) contains an
+ // execution mode and interrupt level masks corresponding to a level 0
+ // interrupt, whatever the interrupt priority level causing the spurious
+ // event. This behavior has been chosen because a spurious interrupt has not
+ // to be a priority one and because it may not cause any trouble to other
+ // interrupts.
+ // However, these spurious interrupts place the hardware in an unstable state
+ // and could give problems in other/future versions of the CPU, so the
+ // software has to be written so that they never occur. The only safe way of
+ // achieving this is to always clear or disable peripheral interrupts with the
+ // following sequence:
+ // 1: Mask the interrupt in the CPU by setting GM (or IxM) in SR.
+ // 2: Perform the bus access to the peripheral register that clears or
+ // disables the interrupt.
+ // 3: Wait until the interrupt has actually been cleared or disabled by the
+ // peripheral. This is usually performed by reading from a register in the
+ // same peripheral (it DOES NOT have to be the same register that was
+ // accessed in step 2, but it MUST be in the same peripheral), what takes
+ // bus system latencies into account, but peripheral internal latencies
+ // (generally 0 cycle) also have to be considered.
+ // 4: Unmask the interrupt in the CPU by clearing GM (or IxM) in SR.
+ // Note that steps 1 and 4 are useless inside interrupt handlers as the
+ // corresponding interrupt level is automatically masked by IxM (unless IxM is
+ // explicitly cleared by the software).
+ //
+ // Get the right IRQ handler.
+ //
+ // If several interrupt lines are active in the group, the interrupt line with
+ // the highest number is selected. This is to be coherent with the
+ // prioritization of interrupt groups performed by the hardware interrupt
+ // controller.
+ //
+ // If no handler has been registered for the pending interrupt,
+ // _unhandled_interrupt will be selected thanks to the initialization of
+ // _int_line_handler_table_x by INTC_init_interrupts.
+ //
+ // exception.S will provide the interrupt handler with a clean interrupt stack
+ // frame, with nothing more pushed onto the stack. The interrupt handler must
+ // manage the `rete' instruction, what can be done thanks to pure assembly,
+ // inline assembly or the `__attribute__((__interrupt__))' C function
+ // attribute.
+ return (int_req) ? _int_handler_table[int_grp]._int_line_handler_table[32 - clz(int_req) - 1] : NULL;
+}
+
+//! Init EVBA address. This sequence might also be done in the UTILS/STARTUP/GCC/crt0.S
+static __inline__ void INTC_init_evba(void)
+{
+ Set_system_register(AVR32_EVBA, (int)&_evba );
+}
+
+void INTC_init_interrupts(void)
+{
+ unsigned int int_grp, int_req;
+
+ INTC_init_evba();
+
+ // For all interrupt groups,
+ for (int_grp = 0; int_grp < AVR32_INTC_NUM_INT_GRPS; int_grp++)
+ {
+ // For all interrupt request lines of each group,
+ for (int_req = 0; int_req < _int_handler_table[int_grp].num_irqs; int_req++)
+ {
+ // Assign _unhandled_interrupt as default interrupt handler.
+ _int_handler_table[int_grp]._int_line_handler_table[int_req] = &_unhandled_interrupt;
+ }
+
+ // Set the interrupt group priority register to its default value.
+ // By default, all interrupt groups are linked to the interrupt priority
+ // level 0 and to the interrupt vector _int0.
+ AVR32_INTC.ipr[int_grp] = ipr_val[AVR32_INTC_INT0];
+ }
+}
+
+
+void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level)
+{
+ // Determine the group of the IRQ.
+ unsigned int int_grp = irq / AVR32_INTC_MAX_NUM_IRQS_PER_GRP;
+
+ // Store in _int_line_handler_table_x the pointer to the interrupt handler, so
+ // that _get_interrupt_handler can retrieve it when the interrupt is vectored.
+ _int_handler_table[int_grp]._int_line_handler_table[irq % AVR32_INTC_MAX_NUM_IRQS_PER_GRP] = handler;
+
+ // Program the corresponding IPRX register to set the interrupt priority level
+ // and the interrupt vector offset that will be fetched by the core interrupt
+ // system.
+ // NOTE: The _intx functions are intermediate assembly functions between the
+ // core interrupt system and the user interrupt handler.
+ AVR32_INTC.ipr[int_grp] = ipr_val[int_level & (AVR32_INTC_IPR_INTLEVEL_MASK >> AVR32_INTC_IPR_INTLEVEL_OFFSET)];
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h
new file mode 100644
index 0000000..31a4fc1
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h
@@ -0,0 +1,100 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief INTC driver for AVR32 UC3.
+ *
+ * AVR32 Interrupt Controller driver module.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an INTC module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _INTC_H_
+#define _INTC_H_
+
+#include "compiler.h"
+
+
+//! Maximal number of interrupt request lines per group.
+#define AVR32_INTC_MAX_NUM_IRQS_PER_GRP 32
+
+//! Number of interrupt priority levels.
+#define AVR32_INTC_NUM_INT_LEVELS (1 << AVR32_INTC_IPR_INTLEVEL_SIZE)
+
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+//! Pointer to interrupt handler.
+#if (defined __GNUC__)
+typedef void (*__int_handler)(void);
+#elif (defined __ICCAVR32__)
+typedef void (__interrupt *__int_handler)(void);
+#endif
+
+
+/*! \brief Initializes the hardware interrupt controller driver.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+extern void INTC_init_interrupts(void);
+
+/*! \brief Registers an interrupt handler.
+ *
+ * \param handler Interrupt handler to register.
+ * \param irq IRQ of the interrupt handler to register.
+ * \param int_level Interrupt priority level to assign to the group of this IRQ.
+ *
+ * \warning The interrupt handler must manage the `rete' instruction, what can
+ * be done thanks to pure assembly, inline assembly or the
+ * `__attribute__((__interrupt__))' C function attribute.
+ *
+ * \warning If several interrupt handlers of a same group are registered with
+ * different priority levels, only the latest priority level set will
+ * be effective.
+ *
+ * \note Taken and adapted from Newlib.
+ */
+extern void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level);
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+#endif // _INTC_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c
new file mode 100644
index 0000000..76d9268
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c
@@ -0,0 +1,546 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Power Manager driver.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "pm.h"
+
+
+/*! \name PM Writable Bit-Field Registers
+ */
+//! @{
+
+typedef union
+{
+ unsigned long mcctrl;
+ avr32_pm_mcctrl_t MCCTRL;
+} u_avr32_pm_mcctrl_t;
+
+typedef union
+{
+ unsigned long cksel;
+ avr32_pm_cksel_t CKSEL;
+} u_avr32_pm_cksel_t;
+
+typedef union
+{
+ unsigned long pll;
+ avr32_pm_pll_t PLL;
+} u_avr32_pm_pll_t;
+
+typedef union
+{
+ unsigned long oscctrl0;
+ avr32_pm_oscctrl0_t OSCCTRL0;
+} u_avr32_pm_oscctrl0_t;
+
+typedef union
+{
+ unsigned long oscctrl1;
+ avr32_pm_oscctrl1_t OSCCTRL1;
+} u_avr32_pm_oscctrl1_t;
+
+typedef union
+{
+ unsigned long oscctrl32;
+ avr32_pm_oscctrl32_t OSCCTRL32;
+} u_avr32_pm_oscctrl32_t;
+
+typedef union
+{
+ unsigned long ier;
+ avr32_pm_ier_t IER;
+} u_avr32_pm_ier_t;
+
+typedef union
+{
+ unsigned long idr;
+ avr32_pm_idr_t IDR;
+} u_avr32_pm_idr_t;
+
+typedef union
+{
+ unsigned long icr;
+ avr32_pm_icr_t ICR;
+} u_avr32_pm_icr_t;
+
+typedef union
+{
+ unsigned long gcctrl;
+ avr32_pm_gcctrl_t GCCTRL;
+} u_avr32_pm_gcctrl_t;
+
+typedef union
+{
+ unsigned long rccr;
+ avr32_pm_rccr_t RCCR;
+} u_avr32_pm_rccr_t;
+
+typedef union
+{
+ unsigned long bgcr;
+ avr32_pm_bgcr_t BGCR;
+} u_avr32_pm_bgcr_t;
+
+typedef union
+{
+ unsigned long vregcr;
+ avr32_pm_vregcr_t VREGCR;
+} u_avr32_pm_vregcr_t;
+
+typedef union
+{
+ unsigned long bod;
+ avr32_pm_bod_t BOD;
+} u_avr32_pm_bod_t;
+
+//! @}
+
+
+/*! \brief Sets the mode of the oscillator 0.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ * \param mode Oscillator 0 mode (i.e. AVR32_PM_OSCCTRL0_MODE_x).
+ */
+static void pm_set_osc0_mode(volatile avr32_pm_t *pm, unsigned int mode)
+{
+ // Read
+ u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0};
+ // Modify
+ u_avr32_pm_oscctrl0.OSCCTRL0.mode = mode;
+ // Write
+ pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0;
+}
+
+
+void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm)
+{
+ pm_set_osc0_mode(pm, AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK);
+}
+
+
+void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0)
+{
+ pm_set_osc0_mode(pm, (fosc0 < 900000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G0 :
+ (fosc0 < 3000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G1 :
+ (fosc0 < 8000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G2 :
+ AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G3);
+}
+
+
+void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ pm_enable_clk0_no_wait(pm, startup);
+ pm_wait_for_clk0_ready(pm);
+}
+
+
+void pm_disable_clk0(volatile avr32_pm_t *pm)
+{
+ pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC0EN_MASK;
+}
+
+
+void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ // Read register
+ u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0};
+ // Modify
+ u_avr32_pm_oscctrl0.OSCCTRL0.startup = startup;
+ // Write back
+ pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0;
+
+ pm->mcctrl |= AVR32_PM_MCCTRL_OSC0EN_MASK;
+}
+
+
+void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK));
+}
+
+
+/*! \brief Sets the mode of the oscillator 1.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ * \param mode Oscillator 1 mode (i.e. AVR32_PM_OSCCTRL1_MODE_x).
+ */
+static void pm_set_osc1_mode(volatile avr32_pm_t *pm, unsigned int mode)
+{
+ // Read
+ u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1};
+ // Modify
+ u_avr32_pm_oscctrl1.OSCCTRL1.mode = mode;
+ // Write
+ pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1;
+}
+
+
+void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm)
+{
+ pm_set_osc1_mode(pm, AVR32_PM_OSCCTRL1_MODE_EXT_CLOCK);
+}
+
+
+void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1)
+{
+ pm_set_osc1_mode(pm, (fosc1 < 900000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G0 :
+ (fosc1 < 3000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G1 :
+ (fosc1 < 8000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G2 :
+ AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G3);
+}
+
+
+void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ pm_enable_clk1_no_wait(pm, startup);
+ pm_wait_for_clk1_ready(pm);
+}
+
+
+void pm_disable_clk1(volatile avr32_pm_t *pm)
+{
+ pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC1EN_MASK;
+}
+
+
+void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ // Read register
+ u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1};
+ // Modify
+ u_avr32_pm_oscctrl1.OSCCTRL1.startup = startup;
+ // Write back
+ pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1;
+
+ pm->mcctrl |= AVR32_PM_MCCTRL_OSC1EN_MASK;
+}
+
+
+void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_OSC1RDY_MASK));
+}
+
+
+/*! \brief Sets the mode of the 32-kHz oscillator.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ * \param mode 32-kHz oscillator mode (i.e. AVR32_PM_OSCCTRL32_MODE_x).
+ */
+static void pm_set_osc32_mode(volatile avr32_pm_t *pm, unsigned int mode)
+{
+ // Read
+ u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32};
+ // Modify
+ u_avr32_pm_oscctrl32.OSCCTRL32.mode = mode;
+ // Write
+ pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32;
+}
+
+
+void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm)
+{
+ pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_EXT_CLOCK);
+}
+
+
+void pm_enable_osc32_crystal(volatile avr32_pm_t *pm)
+{
+ pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_CRYSTAL);
+}
+
+
+void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ pm_enable_clk32_no_wait(pm, startup);
+ pm_wait_for_clk32_ready(pm);
+}
+
+
+void pm_disable_clk32(volatile avr32_pm_t *pm)
+{
+ pm->oscctrl32 &= ~AVR32_PM_OSCCTRL32_OSC32EN_MASK;
+}
+
+
+void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup)
+{
+ // Read register
+ u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32};
+ // Modify
+ u_avr32_pm_oscctrl32.OSCCTRL32.osc32en = 1;
+ u_avr32_pm_oscctrl32.OSCCTRL32.startup = startup;
+ // Write back
+ pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32;
+}
+
+
+void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_OSC32RDY_MASK));
+}
+
+
+void pm_cksel(volatile avr32_pm_t *pm,
+ unsigned int pbadiv,
+ unsigned int pbasel,
+ unsigned int pbbdiv,
+ unsigned int pbbsel,
+ unsigned int hsbdiv,
+ unsigned int hsbsel)
+{
+ u_avr32_pm_cksel_t u_avr32_pm_cksel = {0};
+
+ u_avr32_pm_cksel.CKSEL.cpusel = hsbsel;
+ u_avr32_pm_cksel.CKSEL.cpudiv = hsbdiv;
+ u_avr32_pm_cksel.CKSEL.hsbsel = hsbsel;
+ u_avr32_pm_cksel.CKSEL.hsbdiv = hsbdiv;
+ u_avr32_pm_cksel.CKSEL.pbasel = pbasel;
+ u_avr32_pm_cksel.CKSEL.pbadiv = pbadiv;
+ u_avr32_pm_cksel.CKSEL.pbbsel = pbbsel;
+ u_avr32_pm_cksel.CKSEL.pbbdiv = pbbdiv;
+
+ pm->cksel = u_avr32_pm_cksel.cksel;
+
+ // Wait for ckrdy bit and then clear it
+ while (!(pm->poscsr & AVR32_PM_POSCSR_CKRDY_MASK));
+}
+
+
+void pm_gc_setup(volatile avr32_pm_t *pm,
+ unsigned int gc,
+ unsigned int osc_or_pll, // Use Osc (=0) or PLL (=1)
+ unsigned int pll_osc, // Sel Osc0/PLL0 or Osc1/PLL1
+ unsigned int diven,
+ unsigned int div)
+{
+ u_avr32_pm_gcctrl_t u_avr32_pm_gcctrl = {0};
+
+ u_avr32_pm_gcctrl.GCCTRL.oscsel = pll_osc;
+ u_avr32_pm_gcctrl.GCCTRL.pllsel = osc_or_pll;
+ u_avr32_pm_gcctrl.GCCTRL.diven = diven;
+ u_avr32_pm_gcctrl.GCCTRL.div = div;
+
+ pm->gcctrl[gc] = u_avr32_pm_gcctrl.gcctrl;
+}
+
+
+void pm_gc_enable(volatile avr32_pm_t *pm,
+ unsigned int gc)
+{
+ pm->gcctrl[gc] |= AVR32_PM_GCCTRL_CEN_MASK;
+}
+
+
+void pm_gc_disable(volatile avr32_pm_t *pm,
+ unsigned int gc)
+{
+ pm->gcctrl[gc] &= ~AVR32_PM_GCCTRL_CEN_MASK;
+}
+
+
+void pm_pll_setup(volatile avr32_pm_t *pm,
+ unsigned int pll,
+ unsigned int mul,
+ unsigned int div,
+ unsigned int osc,
+ unsigned int lockcount)
+{
+ u_avr32_pm_pll_t u_avr32_pm_pll = {0};
+
+ u_avr32_pm_pll.PLL.pllosc = osc;
+ u_avr32_pm_pll.PLL.plldiv = div;
+ u_avr32_pm_pll.PLL.pllmul = mul;
+ u_avr32_pm_pll.PLL.pllcount = lockcount;
+
+ pm->pll[pll] = u_avr32_pm_pll.pll;
+}
+
+
+void pm_pll_set_option(volatile avr32_pm_t *pm,
+ unsigned int pll,
+ unsigned int pll_freq,
+ unsigned int pll_div2,
+ unsigned int pll_wbwdisable)
+{
+ u_avr32_pm_pll_t u_avr32_pm_pll = {pm->pll[pll]};
+ u_avr32_pm_pll.PLL.pllopt = pll_freq | (pll_div2 << 1) | (pll_wbwdisable << 2);
+ pm->pll[pll] = u_avr32_pm_pll.pll;
+}
+
+
+unsigned int pm_pll_get_option(volatile avr32_pm_t *pm,
+ unsigned int pll)
+{
+ return (pm->pll[pll] & AVR32_PM_PLLOPT_MASK) >> AVR32_PM_PLLOPT_OFFSET;
+}
+
+
+void pm_pll_enable(volatile avr32_pm_t *pm,
+ unsigned int pll)
+{
+ pm->pll[pll] |= AVR32_PM_PLLEN_MASK;
+}
+
+
+void pm_pll_disable(volatile avr32_pm_t *pm,
+ unsigned int pll)
+{
+ pm->pll[pll] &= ~AVR32_PM_PLLEN_MASK;
+}
+
+
+void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK0_MASK));
+}
+
+
+void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm)
+{
+ while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK1_MASK));
+}
+
+
+void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock)
+{
+ // Read
+ u_avr32_pm_mcctrl_t u_avr32_pm_mcctrl = {pm->mcctrl};
+ // Modify
+ u_avr32_pm_mcctrl.MCCTRL.mcsel = clock;
+ // Write back
+ pm->mcctrl = u_avr32_pm_mcctrl.mcctrl;
+}
+
+
+void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup)
+{
+ pm_enable_osc0_crystal(pm, fosc0); // Enable the Osc0 in crystal mode
+ pm_enable_clk0(pm, startup); // Crystal startup time - This parameter is critical and depends on the characteristics of the crystal
+ pm_switch_to_clock(pm, AVR32_PM_MCSEL_OSC0); // Then switch main clock to Osc0
+}
+
+
+void pm_bod_enable_irq(volatile avr32_pm_t *pm)
+{
+ pm->ier = AVR32_PM_IER_BODDET_MASK;
+}
+
+
+void pm_bod_disable_irq(volatile avr32_pm_t *pm)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ pm->idr = AVR32_PM_IDR_BODDET_MASK;
+ pm->isr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+}
+
+
+void pm_bod_clear_irq(volatile avr32_pm_t *pm)
+{
+ pm->icr = AVR32_PM_ICR_BODDET_MASK;
+}
+
+
+unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm)
+{
+ return ((pm->isr & AVR32_PM_ISR_BODDET_MASK) != 0);
+}
+
+
+unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm)
+{
+ return ((pm->imr & AVR32_PM_IMR_BODDET_MASK) != 0);
+}
+
+
+unsigned long pm_bod_get_level(volatile avr32_pm_t *pm)
+{
+ return (pm->bod & AVR32_PM_BOD_LEVEL_MASK) >> AVR32_PM_BOD_LEVEL_OFFSET;
+}
+
+
+unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp)
+{
+ return pm->gplp[gplp];
+}
+
+
+void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value)
+{
+ pm->gplp[gplp] = value;
+}
+
+
+long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module)
+{
+ unsigned long domain = module>>5;
+ unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain);
+
+ // Implementation-specific shortcut: the ckMASK registers are contiguous and
+ // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK.
+
+ *regptr |= (1<<(module%32));
+
+ return PASS;
+}
+
+long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module)
+{
+ unsigned long domain = module>>5;
+ unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain);
+
+ // Implementation-specific shortcut: the ckMASK registers are contiguous and
+ // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK.
+
+ *regptr &= ~(1<<(module%32));
+
+ return PASS;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h
new file mode 100644
index 0000000..ca679f7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h
@@ -0,0 +1,493 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Power Manager driver.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _PM_H_
+#define _PM_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+#include "preprocessor.h"
+
+
+/*! \brief Sets the MCU in the specified sleep mode.
+ *
+ * \param mode Sleep mode:
+ * \arg \c AVR32_PM_SMODE_IDLE: Idle;
+ * \arg \c AVR32_PM_SMODE_FROZEN: Frozen;
+ * \arg \c AVR32_PM_SMODE_STANDBY: Standby;
+ * \arg \c AVR32_PM_SMODE_STOP: Stop;
+ * \arg \c AVR32_PM_SMODE_DEEP_STOP: DeepStop;
+ * \arg \c AVR32_PM_SMODE_STATIC: Static.
+ */
+#define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));}
+
+
+//! Input and output parameters when initializing PM clocks using pm_configure_clocks().
+typedef struct
+{
+ //! CPU frequency (input/output argument).
+ unsigned long cpu_f;
+
+ //! PBA frequency (input/output argument).
+ unsigned long pba_f;
+
+ //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument).
+ unsigned long osc0_f;
+
+ //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument).
+ unsigned long osc0_startup;
+} pm_freq_param_t;
+
+#define PM_FREQ_STATUS_FAIL (-1)
+#define PM_FREQ_STATUS_OK (0)
+
+
+/*! \brief Gets the MCU reset cause.
+ *
+ * \param pm Base address of the Power Manager instance (i.e. &AVR32_PM).
+ *
+ * \return The MCU reset cause which can be masked with the
+ * \c AVR32_PM_RCAUSE_x_MASK bit-masks to isolate specific causes.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm)
+{
+ return pm->rcause;
+}
+
+
+/*!
+ * \brief This function will enable the external clock mode of the oscillator 0.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the crystal mode of the oscillator 0.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param fosc0 Oscillator 0 crystal frequency (Hz)
+ */
+extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0);
+
+
+/*!
+ * \brief This function will enable the oscillator 0 to be used with a startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will disable the oscillator 0.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_disable_clk0(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 0 to be used with no startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 0 startup time, for which the function does not wait. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will wait until the Osc0 clock is ready.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the external clock mode of the oscillator 1.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the crystal mode of the oscillator 1.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param fosc1 Oscillator 1 crystal frequency (Hz)
+ */
+extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1);
+
+
+/*!
+ * \brief This function will enable the oscillator 1 to be used with a startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 1 startup time. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will disable the oscillator 1.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_disable_clk1(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 1 to be used with no startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 1 startup time, for which the function does not wait. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will wait until the Osc1 clock is ready.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the external clock mode of the 32-kHz oscillator.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the crystal mode of the 32-kHz oscillator.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 32 to be used with a startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 32 kHz startup time. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will disable the oscillator 32.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_disable_clk32(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will enable the oscillator 32 to be used with no startup time.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param startup Clock 32 kHz startup time, for which the function does not wait. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC.
+ */
+extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup);
+
+
+/*!
+ * \brief This function will wait until the osc32 clock is ready.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will select all the power manager clocks.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pbadiv Peripheral Bus A clock divisor enable
+ * \param pbasel Peripheral Bus A select
+ * \param pbbdiv Peripheral Bus B clock divisor enable
+ * \param pbbsel Peripheral Bus B select
+ * \param hsbdiv High Speed Bus clock divisor enable (CPU clock = HSB clock)
+ * \param hsbsel High Speed Bus select (CPU clock = HSB clock )
+ */
+extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel);
+
+
+/*!
+ * \brief This function will setup a generic clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gc generic clock number (0 for gc0...)
+ * \param osc_or_pll Use OSC (=0) or PLL (=1)
+ * \param pll_osc Select Osc0/PLL0 or Osc1/PLL1
+ * \param diven Generic clock divisor enable
+ * \param div Generic clock divisor
+ */
+extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div);
+
+
+/*!
+ * \brief This function will enable a generic clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gc generic clock number (0 for gc0...)
+ */
+extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc);
+
+
+/*!
+ * \brief This function will disable a generic clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gc generic clock number (0 for gc0...)
+ */
+extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc);
+
+
+/*!
+ * \brief This function will setup a PLL.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ * \param mul PLL MUL in the PLL formula
+ * \param div PLL DIV in the PLL formula
+ * \param osc OSC number (0 for osc0, 1 for osc1)
+ * \param lockcount PLL lockount
+ */
+extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount);
+
+
+/*!
+ * \brief This function will set a PLL option.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ * \param pll_freq Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz.
+ * \param pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value)
+ * \param pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode.
+ */
+extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable);
+
+
+/*!
+ * \brief This function will get a PLL option.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ * \return Option
+ */
+extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll);
+
+
+/*!
+ * \brief This function will enable a PLL.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ */
+extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll);
+
+
+/*!
+ * \brief This function will disable a PLL.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param pll PLL number(0 for PLL0, 1 for PLL1)
+ */
+extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll);
+
+
+/*!
+ * \brief This function will wait for PLL0 locked
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will wait for PLL1 locked
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ */
+extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief This function will switch the power manager main clock.
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param clock Clock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0.
+ */
+extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock);
+
+
+/*!
+ * \brief Switch main clock to clock Osc0 (crystal mode)
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param fosc0 Oscillator 0 crystal frequency (Hz)
+ * \param startup Crystal 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC.
+ */
+extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup);
+
+
+/*! \brief Enables the Brown-Out Detector interrupt.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ */
+extern void pm_bod_enable_irq(volatile avr32_pm_t *pm);
+
+
+/*! \brief Disables the Brown-Out Detector interrupt.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ */
+extern void pm_bod_disable_irq(volatile avr32_pm_t *pm);
+
+
+/*! \brief Clears the Brown-Out Detector interrupt flag.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ */
+extern void pm_bod_clear_irq(volatile avr32_pm_t *pm);
+
+
+/*! \brief Gets the Brown-Out Detector interrupt flag.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ *
+ * \retval 0 No BOD interrupt.
+ * \retval 1 BOD interrupt pending.
+ */
+extern unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm);
+
+
+/*! \brief Gets the Brown-Out Detector interrupt enable status.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ *
+ * \retval 0 BOD interrupt disabled.
+ * \retval 1 BOD interrupt enabled.
+ */
+extern unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm);
+
+
+/*! \brief Gets the triggering threshold of the Brown-Out Detector.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM).
+ *
+ * \return Triggering threshold of the BOD. See the electrical characteristics
+ * in the part datasheet for actual voltage levels.
+ */
+extern unsigned long pm_bod_get_level(volatile avr32_pm_t *pm);
+
+
+/*!
+ * \brief Read the content of the PM GPLP registers
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ *
+ * \return The content of the chosen GPLP register.
+ */
+extern unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp);
+
+
+/*!
+ * \brief Write into the PM GPLP registers
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ * \param value Value to write
+ */
+extern void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value);
+
+
+/*! \brief Enable the clock of a module.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param module The module to clock (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks")
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module);
+
+/*! \brief Disable the clock of a module.
+ *
+ * \param pm Base address of the Power Manager (i.e. &AVR32_PM)
+ * \param module The module to shut down (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks")
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module);
+
+
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks
+ * according to the user wishes.
+ *
+ * This function needs some parameters stored in a pm_freq_param_t structure:
+ * - cpu_f and pba_f are the wanted frequencies,
+ * - osc0_f is the oscillator 0 on-board frequency (e.g. FOSC0),
+ * - osc0_startup is the oscillator 0 startup time (e.g. OSC0_STARTUP).
+ *
+ * The function will then configure the clocks using the following rules:
+ * - It first try to find a valid PLL frequency (the highest possible value to avoid jitter) in order
+ * to satisfy the CPU frequency,
+ * - It optimizes the configuration depending the various divide stages,
+ * - Then, the PBA frequency is configured from the CPU freq.
+ * - Note that HSB and PBB are configured with the same frequency as CPU.
+ * - Note also that the number of wait states of the flash read accesses is automatically set-up depending
+ * the CPU frequency. As a consequence, the application needs the FLASHC driver to compile.
+ *
+ * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval PM_FREQ_STATUS_OK Mode successfully initialized.
+ * \retval PM_FREQ_STATUS_FAIL The configuration can not be done.
+ */
+extern int pm_configure_clocks(pm_freq_param_t *param);
+
+
+/*! \brief Automatically configure the USB clock.
+ *
+ * USB clock is configured to 48MHz, using the PLL1 from the Oscillator0, assuming
+ * a 12 MHz crystal is connected to it.
+ */
+extern void pm_configure_usb_clock(void);
+
+
+#endif // _PM_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c
new file mode 100644
index 0000000..8beb83b
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c
@@ -0,0 +1,268 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Power Manager clocks configuration helper.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <string.h>
+#include "compiler.h"
+#include "pm.h"
+
+extern void flashc_set_wait_state(unsigned int wait_state);
+#if (defined AVR32_FLASHC_210_H_INCLUDED)
+extern void flashc_issue_command(unsigned int command, int page_number);
+#endif
+
+
+#define PM_MAX_MUL ((1 << AVR32_PM_PLL0_PLLMUL_SIZE) - 1)
+
+
+int pm_configure_clocks(pm_freq_param_t *param)
+{
+ // Supported frequencies:
+ // Fosc0 mul div PLL div2_en cpu_f pba_f Comment
+ // 12 15 1 192 1 12 12
+ // 12 9 3 40 1 20 20 PLL out of spec
+ // 12 15 1 192 1 24 12
+ // 12 9 1 120 1 30 15
+ // 12 9 3 40 0 40 20 PLL out of spec
+ // 12 15 1 192 1 48 12
+ // 12 15 1 192 1 48 24
+ // 12 8 1 108 1 54 27
+ // 12 9 1 120 1 60 15
+ // 12 9 1 120 1 60 30
+ // 12 10 1 132 1 66 16.5
+ //
+ unsigned long in_cpu_f = param->cpu_f;
+ unsigned long in_osc0_f = param->osc0_f;
+ unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0;
+ unsigned long pll_freq, rest;
+ Bool b_div2_pba, b_div2_cpu;
+
+ // Switch to external Oscillator 0
+ pm_switch_to_osc0(&AVR32_PM, in_osc0_f, param->osc0_startup);
+
+ // Start with CPU freq config
+ if (in_cpu_f == in_osc0_f)
+ {
+ param->cpu_f = in_osc0_f;
+ param->pba_f = in_osc0_f;
+ return PM_FREQ_STATUS_OK;
+ }
+ else if (in_cpu_f < in_osc0_f)
+ {
+ // TBD
+ }
+
+ rest = in_cpu_f % in_osc0_f;
+
+ for (div = 1; div < 32; div++)
+ {
+ if ((div * rest) % in_osc0_f == 0)
+ break;
+ }
+ if (div == 32)
+ return PM_FREQ_STATUS_FAIL;
+
+ mul = (in_cpu_f * div) / in_osc0_f;
+
+ if (mul > PM_MAX_MUL)
+ return PM_FREQ_STATUS_FAIL;
+
+ // export 2power from PLL div to div2_cpu
+ while (!(div % 2))
+ {
+ div /= 2;
+ div2_cpu++;
+ }
+
+ // Here we know the mul and div parameter of the PLL config.
+ // . Check out if the PLL has a valid in_cpu_f.
+ // . Try to have for the PLL frequency (VCO output) the highest possible value
+ // to reduce jitter.
+ while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ)
+ {
+ if (2 * mul > PM_MAX_MUL)
+ break;
+ mul *= 2;
+ div2_cpu++;
+ }
+
+ if (div2_cpu != 0)
+ {
+ div2_cpu--;
+ div2_en = 1;
+ }
+
+ pll_freq = in_osc0_f * mul / (div * (1 << div2_en));
+
+ // Update real CPU Frequency
+ param->cpu_f = pll_freq / (1 << div2_cpu);
+ mul--;
+
+ pm_pll_setup(&AVR32_PM
+ , 0 // pll
+ , mul // mul
+ , div // div
+ , 0 // osc
+ , 16 // lockcount
+ );
+
+ pm_pll_set_option(&AVR32_PM
+ , 0 // pll
+ // PLL clock is lower than 160MHz: need to set pllopt.
+ , (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0 // pll_freq
+ , div2_en // pll_div2
+ , 0 // pll_wbwdisable
+ );
+
+ rest = pll_freq;
+ while (rest > AVR32_PM_PBA_MAX_FREQ ||
+ rest != param->pba_f)
+ {
+ div2_pba++;
+ rest = pll_freq / (1 << div2_pba);
+ if (rest < param->pba_f)
+ break;
+ }
+
+ // Update real PBA Frequency
+ param->pba_f = pll_freq / (1 << div2_pba);
+
+ // Enable PLL0
+ pm_pll_enable(&AVR32_PM, 0);
+
+ // Wait for PLL0 locked
+ pm_wait_for_pll0_locked(&AVR32_PM);
+
+ if (div2_cpu)
+ {
+ b_div2_cpu = TRUE;
+ div2_cpu--;
+ }
+ else
+ b_div2_cpu = FALSE;
+
+ if (div2_pba)
+ {
+ b_div2_pba = TRUE;
+ div2_pba--;
+ }
+ else
+ b_div2_pba = FALSE;
+
+ pm_cksel(&AVR32_PM
+ , b_div2_pba, div2_pba // PBA
+ , b_div2_cpu, div2_cpu // PBB
+ , b_div2_cpu, div2_cpu // HSB
+ );
+
+ if (param->cpu_f > AVR32_FLASHC_FWS_0_MAX_FREQ)
+ {
+ flashc_set_wait_state(1);
+#if (defined AVR32_FLASHC_210_H_INCLUDED)
+ if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ)
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1);
+ else
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+#endif
+ }
+ else
+ {
+ flashc_set_wait_state(0);
+#if (defined AVR32_FLASHC_210_H_INCLUDED)
+ if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ)
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1);
+ else
+ flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1);
+#endif
+ }
+
+ pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0);
+
+ return PM_FREQ_STATUS_OK;
+}
+
+
+void pm_configure_usb_clock(void)
+{
+#if UC3A3
+
+ // Setup USB GCLK.
+ pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc
+ 0, // osc_or_pll: use Osc (if 0) or PLL (if 1)
+ 0, // pll_osc: select Osc0/PLL0 or Osc1/PLL1
+ 0, // diven
+ 0); // div
+
+ // Enable USB GCLK.
+ pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB);
+#else
+ // Use 12MHz from OSC0 and generate 96 MHz
+ pm_pll_setup(&AVR32_PM, 1, // pll.
+ 7, // mul.
+ 1, // div.
+ 0, // osc.
+ 16); // lockcount.
+
+ pm_pll_set_option(&AVR32_PM, 1, // pll.
+ 1, // pll_freq: choose the range 80-180MHz.
+ 1, // pll_div2.
+ 0); // pll_wbwdisable.
+
+ // start PLL1 and wait forl lock
+ pm_pll_enable(&AVR32_PM, 1);
+
+ // Wait for PLL1 locked.
+ pm_wait_for_pll1_locked(&AVR32_PM);
+
+ pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc.
+ 1, // osc_or_pll: use Osc (if 0) or PLL (if 1).
+ 1, // pll_osc: select Osc0/PLL0 or Osc1/PLL1.
+ 0, // diven.
+ 0); // div.
+ pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB);
+#endif
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c
new file mode 100644
index 0000000..f5fc155
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c
@@ -0,0 +1,566 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief High-level library abstracting features such as oscillators/pll/dfll
+ * configuration, clock configuration, System-sensible parameters
+ * configuration, buses clocks configuration, sleep mode, reset.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+#include "power_clocks_lib.h"
+
+
+//! Device-specific data
+#if UC3L
+static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param); // FORWARD declaration
+#endif
+
+#if UC3C
+static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param); // FORWARD declaration
+#endif
+
+long int pcl_configure_clocks(pcl_freq_param_t *param)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+ // Implementation for UC3A, UC3A3, UC3B parts.
+ return(pm_configure_clocks(param));
+#else
+ #ifdef AVR32_PM_410_H_INCLUDED
+ // Implementation for UC3C parts.
+ return(pcl_configure_clocks_uc3c(param));
+ #else
+ // Implementation for UC3L parts.
+ return(pcl_configure_clocks_uc3l(param));
+ #endif
+#endif
+}
+
+
+//! Device-specific implementation
+#if UC3L
+// FORWARD declaration
+static long int pcl_configure_synchronous_clocks( pm_clk_src_t main_clk_src,
+ unsigned long main_clock_freq_hz,
+ pcl_freq_param_t *param);
+
+long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_RCSYS
+
+ // Supported synchronous clocks frequencies if RCSYS is the main clock source:
+ // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > SCIF_SLOWCLOCK_FREQ_HZ) || (param->pba_f > SCIF_SLOWCLOCK_FREQ_HZ)
+ || (param->pbb_f > SCIF_SLOWCLOCK_FREQ_HZ))
+ return(-1);
+#endif
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_SLOW, SCIF_SLOWCLOCK_FREQ_HZ, param));
+}
+
+
+long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_RC120M
+
+ // Supported synchronous clocks frequencies if RC120M is the main clock source:
+ // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > SCIF_RC120M_FREQ_HZ) || (param->pba_f > SCIF_RC120M_FREQ_HZ)
+ || (param->pbb_f > SCIF_RC120M_FREQ_HZ))
+ return(-1);
+#endif
+
+ // Start the 120MHz internal RCosc (RC120M) clock
+ scif_start_rc120M();
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_RC120M, SCIF_RC120M_FREQ_HZ, param));
+}
+
+
+long int pcl_configure_clocks_osc0(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_OSC0
+
+ // Supported synchronous clocks frequencies if OSC0 is the main clock source:
+ // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example)
+ // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+ unsigned long main_clock_freq;
+
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+ main_clock_freq = param->osc0_f;
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq)
+ || (param->pbb_f > main_clock_freq))
+ return(-1);
+#endif
+ // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency.
+ scif_configure_osc_crystalmode(SCIF_OSC0, main_clock_freq);
+ // Enable the OSC0
+ scif_enable_osc(SCIF_OSC0, param->osc0_startup, true);
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_OSC0, main_clock_freq, param));
+}
+
+
+long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_DFLL
+
+ // Supported synchronous clocks frequencies if DFLL is the main clock source:
+ // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example)
+ // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+ unsigned long main_clock_freq;
+ scif_gclk_opt_t *pgc_dfllif_ref_opt;
+
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+ main_clock_freq = param->dfll_f;
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that the target DFLL output frequency is in the correct range.
+ if((main_clock_freq > SCIF_DFLL_MAXFREQ_HZ) || (main_clock_freq < SCIF_DFLL_MINFREQ_HZ))
+ return(-1);
+ // Verify that the target frequencies are reachable.
+ if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq)
+ || (param->pbb_f > main_clock_freq))
+ return(-1);
+#endif
+ pgc_dfllif_ref_opt = (scif_gclk_opt_t *)param->pextra_params;
+ // Implementation note: this implementation configures the DFLL in closed-loop
+ // mode (because it gives the best accuracy) which enables the generic clock CLK_DFLLIF_REF
+ // as a reference (RCSYS being used as the generic clock source, undivided).
+ scif_dfll0_closedloop_configure_and_start(pgc_dfllif_ref_opt, main_clock_freq, TRUE);
+
+ return(pcl_configure_synchronous_clocks(PM_CLK_SRC_DFLL0, main_clock_freq, param));
+}
+
+
+static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param)
+{
+ // Supported main clock sources: PCL_MC_RCSYS, PCL_MC_OSC0, PCL_MC_DFLL0, PCL_MC_RC120M
+
+ // Supported synchronous clocks frequencies if RCSYS is the main clock source:
+ // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz.
+
+ // Supported synchronous clocks frequencies if RC120M is the main clock source:
+ // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz.
+
+ // Supported synchronous clocks frequencies if OSC0 is the main clock source:
+ // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example)
+ // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz.
+
+ // Supported synchronous clocks frequencies if DFLL is the main clock source:
+ // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example)
+ // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz.
+
+ // NOTE: by default, this implementation doesn't perform thorough checks on the
+ // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+
+
+#ifdef AVR32SFW_INPUT_CHECK
+ // Verify that fCPU >= fPBx
+ if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f))
+ return(-1);
+#endif
+
+ if(PCL_MC_RCSYS == param->main_clk_src)
+ {
+ return(pcl_configure_clocks_rcsys(param));
+ }
+ else if(PCL_MC_RC120M == param->main_clk_src)
+ {
+ return(pcl_configure_clocks_rc120m(param));
+ }
+ else if(PCL_MC_OSC0 == param->main_clk_src)
+ {
+ return(pcl_configure_clocks_osc0(param));
+ }
+ else // PCL_MC_DFLL0 == param->main_clk_src
+ {
+ return(pcl_configure_clocks_dfll0(param));
+ }
+}
+
+static long int pcl_configure_synchronous_clocks(pm_clk_src_t main_clk_src, unsigned long main_clock_freq_hz, pcl_freq_param_t *param)
+{
+ //#
+ //# Set the Synchronous clock division ratio for each clock domain
+ //#
+ pm_set_all_cksel(main_clock_freq_hz, param->cpu_f, param->pba_f, param->pbb_f);
+
+ //#
+ //# Set the Flash wait state and the speed read mode (depending on the target CPU frequency).
+ //#
+#if UC3L
+ flashcdw_set_flash_waitstate_and_readmode(param->cpu_f);
+#elif UC3C
+ flashc_set_flash_waitstate_and_readmode(param->cpu_f);
+#endif
+
+
+ //#
+ //# Switch the main clock source to the selected clock.
+ //#
+ pm_set_mclk_source(main_clk_src);
+
+ return PASS;
+}
+
+#endif // UC3L device-specific implementation
+
+//! UC3C Device-specific implementation
+#if UC3C
+static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param)
+{
+ #define PM_MAX_MUL ((1 << AVR32_SCIF_PLLMUL_SIZE) - 1)
+ #define AVR32_PM_PBA_MAX_FREQ 66000000
+ #define AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ 240000000
+ #define AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ 160000000
+
+ // Implementation for UC3C parts.
+ // Supported frequencies:
+ // Fosc0 mul div PLL div2_en cpu_f pba_f Comment
+ // 12 15 1 192 1 12 12
+ // 12 9 3 40 1 20 20 PLL out of spec
+ // 12 15 1 192 1 24 12
+ // 12 9 1 120 1 30 15
+ // 12 9 3 40 0 40 20 PLL out of spec
+ // 12 15 1 192 1 48 12
+ // 12 15 1 192 1 48 24
+ // 12 8 1 108 1 54 27
+ // 12 9 1 120 1 60 15
+ // 12 9 1 120 1 60 30
+ // 12 10 1 132 1 66 16.5
+ //
+ unsigned long in_cpu_f = param->cpu_f;
+ unsigned long in_osc0_f = param->osc0_f;
+ unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0;
+ unsigned long pll_freq, rest;
+ Bool b_div2_pba, b_div2_cpu;
+
+ // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency.
+ scif_configure_osc_crystalmode(SCIF_OSC0, in_osc0_f);
+ // Enable the OSC0
+ scif_enable_osc(SCIF_OSC0, param->osc0_startup, true);
+ // Set the main clock source as being OSC0.
+ pm_set_mclk_source(PM_CLK_SRC_OSC0);
+
+ // Start with CPU freq config
+ if (in_cpu_f == in_osc0_f)
+ {
+ param->cpu_f = in_osc0_f;
+ param->pba_f = in_osc0_f;
+ return PASS;
+ }
+ else if (in_cpu_f < in_osc0_f)
+ {
+ // TBD
+ }
+
+ rest = in_cpu_f % in_osc0_f;
+
+ for (div = 1; div < 32; div++)
+ {
+ if ((div * rest) % in_osc0_f == 0)
+ break;
+ }
+ if (div == 32)
+ return FAIL;
+
+ mul = (in_cpu_f * div) / in_osc0_f;
+
+ if (mul > PM_MAX_MUL)
+ return FAIL;
+
+ // export 2power from PLL div to div2_cpu
+ while (!(div % 2))
+ {
+ div /= 2;
+ div2_cpu++;
+ }
+
+ // Here we know the mul and div parameter of the PLL config.
+ // . Check out if the PLL has a valid in_cpu_f.
+ // . Try to have for the PLL frequency (VCO output) the highest possible value
+ // to reduce jitter.
+ while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ)
+ {
+ if (2 * mul > PM_MAX_MUL)
+ break;
+ mul *= 2;
+ div2_cpu++;
+ }
+
+ if (div2_cpu != 0)
+ {
+ div2_cpu--;
+ div2_en = 1;
+ }
+
+ pll_freq = in_osc0_f * mul / (div * (1 << div2_en));
+
+ // Update real CPU Frequency
+ param->cpu_f = pll_freq / (1 << div2_cpu);
+ mul--;
+
+ scif_pll_opt_t opt;
+
+ opt.osc = SCIF_OSC0, // Sel Osc0 or Osc1
+ opt.lockcount = 16, // lockcount in main clock for the PLL wait lock
+ opt.div = div, // DIV=1 in the formula
+ opt.mul = mul, // MUL=7 in the formula
+ opt.pll_div2 = div2_en, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value)
+ opt.pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode.
+ opt.pll_freq = (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz.
+
+
+ scif_pll_setup(SCIF_PLL0, opt); // lockcount in main clock for the PLL wait lock
+
+ /* Enable PLL0 */
+ scif_pll_enable(SCIF_PLL0);
+
+ /* Wait for PLL0 locked */
+ scif_wait_for_pll_locked(SCIF_PLL0) ;
+
+ rest = pll_freq;
+ while (rest > AVR32_PM_PBA_MAX_FREQ ||
+ rest != param->pba_f)
+ {
+ div2_pba++;
+ rest = pll_freq / (1 << div2_pba);
+ if (rest < param->pba_f)
+ break;
+ }
+
+ // Update real PBA Frequency
+ param->pba_f = pll_freq / (1 << div2_pba);
+
+
+ if (div2_cpu)
+ {
+ b_div2_cpu = TRUE;
+ div2_cpu--;
+ }
+ else
+ b_div2_cpu = FALSE;
+
+ if (div2_pba)
+ {
+ b_div2_pba = TRUE;
+ div2_pba--;
+ }
+ else
+ b_div2_pba = FALSE;
+
+ if (b_div2_cpu == TRUE )
+ {
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_0, (pm_divratio_t) div2_cpu); // CPU
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_1, (pm_divratio_t) div2_cpu); // HSB
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_3, (pm_divratio_t) div2_cpu); // PBB
+ }
+ if (b_div2_pba == TRUE )
+ {
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_2, (pm_divratio_t) div2_pba); // PBA
+ pm_set_clk_domain_div(PM_CLK_DOMAIN_4, (pm_divratio_t) div2_pba); // PBC
+ }
+
+ // Set Flashc Wait State
+ flashc_set_flash_waitstate_and_readmode(param->cpu_f);
+
+ // Set the main clock source as being PLL0.
+ pm_set_mclk_source(PM_CLK_SRC_PLL0);
+
+ return PASS;
+}
+#endif // UC3C device-specific implementation
+
+long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ if(PCL_OSC0 == osc)
+ {
+ // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency,
+ // enable the OSC0, set the main clock source as being OSC0.
+ pm_switch_to_osc0(&AVR32_PM, fcrystal, startup);
+ }
+ else
+ {
+ return PCL_NOT_SUPPORTED;
+ }
+#else
+// Implementation for UC3C, UC3L parts.
+ #if AVR32_PM_VERSION_RESETVALUE < 0x400
+ return PCL_NOT_SUPPORTED;
+ #else
+ if(PCL_OSC0 == osc)
+ {
+ // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency.
+ scif_configure_osc_crystalmode(SCIF_OSC0, fcrystal);
+ // Enable the OSC0
+ scif_enable_osc(SCIF_OSC0, startup, true);
+ // Set the Flash wait state and the speed read mode (depending on the target CPU frequency).
+#if UC3L
+ flashcdw_set_flash_waitstate_and_readmode(fcrystal);
+#elif UC3C
+ flashc_set_flash_waitstate_and_readmode(fcrystal);
+#endif
+ // Set the main clock source as being OSC0.
+ pm_set_mclk_source(PM_CLK_SRC_OSC0);
+ }
+ else
+ {
+ return PCL_NOT_SUPPORTED;
+ }
+ #endif
+#endif
+ return PASS;
+}
+
+long int pcl_configure_usb_clock(void)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ pm_configure_usb_clock();
+ return PASS;
+#else
+ #ifdef AVR32_PM_410_H_INCLUDED
+ const scif_pll_opt_t opt = {
+ .osc = SCIF_OSC0, // Sel Osc0 or Osc1
+ .lockcount = 16, // lockcount in main clock for the PLL wait lock
+ .div = 1, // DIV=1 in the formula
+ .mul = 5, // MUL=7 in the formula
+ .pll_div2 = 1, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value)
+ .pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode.
+ .pll_freq = 1, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz.
+ };
+
+ /* Setup PLL1 on Osc0, mul=7 ,no divisor, lockcount=16, ie. 16Mhzx6 = 96MHz output */
+ scif_pll_setup(SCIF_PLL1, opt); // lockcount in main clock for the PLL wait lock
+
+ /* Enable PLL1 */
+ scif_pll_enable(SCIF_PLL1);
+
+ /* Wait for PLL1 locked */
+ scif_wait_for_pll_locked(SCIF_PLL1) ;
+
+ // Implementation for UC3C parts.
+ // Setup the generic clock for USB
+ scif_gc_setup(AVR32_SCIF_GCLK_USB,
+ SCIF_GCCTRL_PLL1,
+ AVR32_SCIF_GC_NO_DIV_CLOCK,
+ 0);
+ // Now enable the generic clock
+ scif_gc_enable(AVR32_SCIF_GCLK_USB);
+ return PASS;
+ #else
+ return PCL_NOT_SUPPORTED;
+ #endif
+#endif
+}
+
+
+#if UC3L
+#else
+void pcl_write_gplp(unsigned long gplp, unsigned long value)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ pm_write_gplp(&AVR32_PM,gplp,value);
+#else
+ scif_write_gplp(gplp,value);
+#endif
+}
+
+unsigned long pcl_read_gplp(unsigned long gplp)
+{
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+ return pm_read_gplp(&AVR32_PM,gplp);
+#else
+ return scif_read_gplp(gplp);
+#endif
+}
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h
new file mode 100644
index 0000000..28c5888
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h
@@ -0,0 +1,379 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief High-level library abstracting features such as oscillators/pll/dfll
+ * configuration, clock configuration, System-sensible parameters
+ * configuration, buses clocks configuration, sleep mode, reset.
+ *
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _POWER_CLOCKS_LIB_H_
+#define _POWER_CLOCKS_LIB_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Support for UC3A, UC3A3, UC3B parts.
+ #include "pm.h"
+#else
+//! Device-specific data
+#if UC3L
+ #include "pm_uc3l.h"
+ #include "scif_uc3l.h"
+ #include "flashcdw.h"
+#elif UC3C
+ #include "pm_uc3c.h"
+ #include "scif_uc3c.h"
+ #include "flashc.h"
+#endif
+#endif
+
+/*! \name Clocks Management
+ */
+//! @{
+
+//! The different oscillators
+typedef enum
+{
+ PCL_OSC0 = 0,
+ PCL_OSC1 = 1
+} pcl_osc_t;
+
+//! The different DFLLs
+typedef enum
+{
+ PCL_DFLL0 = 0,
+ PCL_DFLL1 = 1
+} pcl_dfll_t;
+
+//! Possible Main Clock Sources
+typedef enum
+{
+ PCL_MC_RCSYS, // Default main clock source, supported by all (aka Slow Clock)
+ PCL_MC_OSC0, // Supported by all
+ PCL_MC_OSC1, // Supported by UC3C only
+ PCL_MC_OSC0_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC0 as reference)
+ PCL_MC_OSC1_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC1 as reference)
+ PCL_MC_OSC0_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC0 as reference)
+ PCL_MC_OSC1_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC1 as reference)
+ PCL_MC_DFLL0, // Supported by UC3L
+ PCL_MC_DFLL1, // Not supported yet
+ PCL_MC_RC120M, // Supported by UC3L, UC3C
+ PCL_MC_RC8M, // Supported by UC3C
+ PCL_MC_CRIPOSC // Supported by UC3C
+} pcl_mainclk_t;
+
+//! Input and output parameters to configure clocks with pcl_configure_clocks().
+// NOTE: regarding the frequency settings, always abide by the datasheet rules and min & max supported frequencies.
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Support for UC3A, UC3A3, UC3B parts.
+#define pcl_freq_param_t pm_freq_param_t // See pm.h
+#else
+// Support for UC3C, UC3L parts.
+typedef struct
+{
+ //! Main clock source selection (input argument).
+ pcl_mainclk_t main_clk_src;
+
+ //! Target CPU frequency (input/output argument).
+ unsigned long cpu_f;
+
+ //! Target PBA frequency (input/output argument).
+ unsigned long pba_f;
+
+ //! Target PBB frequency (input/output argument).
+ unsigned long pbb_f;
+
+ //! Target PBC frequency (input/output argument).
+ unsigned long pbc_f;
+
+ //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument).
+ unsigned long osc0_f;
+
+ //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument).
+ unsigned long osc0_startup;
+
+ //! DFLL target frequency (input/output argument) (NOTE: the bigger, the most stable the frequency)
+ unsigned long dfll_f;
+
+ //! Other parameters that might be necessary depending on the device (implementation-dependent).
+ // For the UC3L DFLL setup, this parameter should be pointing to a structure of
+ // type (scif_gclk_opt_t *).
+ void *pextra_params;
+} pcl_freq_param_t;
+#endif
+
+//! Define "not supported" for the lib.
+#define PCL_NOT_SUPPORTED (-10000)
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - main_clk_src is the id of the main clock source to use,
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies,
+ * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0),
+ * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP).
+ * - dfll_f is the target DFLL frequency to set-up if main_clk_src is the dfll.
+ *
+ * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks() and modify it to use
+ * preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RCSYS osc as main source clock.
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies
+ *
+ * Supported main clock sources: PCL_MC_RCSYS
+ *
+ * Supported synchronous clocks frequencies:
+ * 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_rcsys() and modify it to use
+ * preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RC120M osc as main source clock.
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies
+ *
+ * Supported main clock sources: PCL_MC_RC120M
+ *
+ * Supported synchronous clocks frequencies:
+ * 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_rc120m() and modify it to
+ * use preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the OSC0 osc as main source clock
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies,
+ * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0),
+ * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP).
+ *
+ * Supported main clock sources: PCL_MC_OSC0
+ *
+ * Supported synchronous clocks frequencies:
+ * (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example)
+ * 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_osc0() and modify it to use
+ * preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_osc0(pcl_freq_param_t *param);
+
+/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the DFLL0 as main source clock
+ *
+ * This function needs some parameters stored in a pcl_freq_param_t structure:
+ * - cpu_f and pba_f and pbb_f are the wanted frequencies,
+ * - dfll_f is the target DFLL frequency to set-up
+ *
+ * \note: when the DFLL0 is to be used as main source clock for the synchronous clocks,
+ * the target frequency of the DFLL should be chosen to be as high as possible
+ * within the specification range (for stability reasons); the target cpu and pbx
+ * frequencies will then be reached by appropriate division ratio.
+ *
+ * Supported main clock sources: PCL_MC_DFLL0
+ *
+ * Supported synchronous clocks frequencies:
+ * (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example)
+ * 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz.
+ *
+ * \note: by default, this implementation doesn't perform thorough checks on the
+ * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK.
+ *
+ * \note: since it is dynamically computing the appropriate field values of the
+ * configuration registers from the parameters structure, this function is not
+ * optimal in terms of code size. For a code size optimal solution, it is better
+ * to create a new function from pcl_configure_clocks_dfll0() and modify it to
+ * use preprocessor computation from pre-defined target frequencies.
+ *
+ * \param param pointer on the configuration structure.
+ *
+ * \retval 0 Success.
+ * \retval <0 The configuration cannot be performed.
+ */
+extern long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param);
+
+/*! \brief Switch the main clock source to Osc0 configured in crystal mode
+ *
+ * \param osc The oscillator to enable and switch to.
+ * \param fcrystal Oscillator external crystal frequency (Hz)
+ * \param startup Oscillator startup time.
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup);
+
+/*! \brief Enable the clock of a module.
+ *
+ * \param module The module to clock (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks"
+ * or look in the module section).
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+#define pcl_enable_module(module) pm_enable_module(&AVR32_PM, module)
+#else
+// Implementation for UC3C, UC3L parts.
+#define pcl_enable_module(module) pm_enable_module(module)
+#endif
+
+/*! \brief Disable the clock of a module.
+ *
+ * \param module The module to shut down (use one of the defines in the part-specific
+ * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the
+ * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks"
+ * or look in the module section).
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+#ifndef AVR32_PM_VERSION_RESETVALUE
+// Implementation for UC3A, UC3A3, UC3B parts.
+#define pcl_disable_module(module) pm_disable_module(&AVR32_PM, module)
+#else
+// Implementation for UC3C, UC3L parts.
+#define pcl_disable_module(module) pm_disable_module(module)
+#endif
+
+/*! \brief Configure the USB Clock
+ *
+ *
+ * \return Status.
+ * \retval 0 Success.
+ * \retval <0 An error occured.
+ */
+extern long int pcl_configure_usb_clock(void);
+
+//! @}
+
+/*! \name Power Management
+ */
+//! @{
+/*!
+ * \brief Read the content of the GPLP registers
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ *
+ * \return The content of the chosen GPLP register.
+ */
+extern unsigned long pcl_read_gplp(unsigned long gplp);
+
+
+/*!
+ * \brief Write into the GPLP registers
+ * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part)
+ * \param value Value to write
+ */
+extern void pcl_write_gplp(unsigned long gplp, unsigned long value);
+
+//! @}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _POWER_CLOCKS_LIB_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c
new file mode 100644
index 0000000..cadb8b1
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c
@@ -0,0 +1,443 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief SPI driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the SPI interface on AVR32
+ * devices.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "spi.h"
+
+#ifdef FREERTOS_USED
+
+#include "FreeRTOS.h"
+#include "semphr.h"
+
+#endif
+
+
+/*! \name SPI Writable Bit-Field Registers
+ */
+//! @{
+
+typedef union
+{
+ unsigned long cr;
+ avr32_spi_cr_t CR;
+} u_avr32_spi_cr_t;
+
+typedef union
+{
+ unsigned long mr;
+ avr32_spi_mr_t MR;
+} u_avr32_spi_mr_t;
+
+typedef union
+{
+ unsigned long tdr;
+ avr32_spi_tdr_t TDR;
+} u_avr32_spi_tdr_t;
+
+typedef union
+{
+ unsigned long ier;
+ avr32_spi_ier_t IER;
+} u_avr32_spi_ier_t;
+
+typedef union
+{
+ unsigned long idr;
+ avr32_spi_idr_t IDR;
+} u_avr32_spi_idr_t;
+
+typedef union
+{
+ unsigned long csr;
+ avr32_spi_csr0_t CSR;
+} u_avr32_spi_csr_t;
+
+//! @}
+
+
+#ifdef FREERTOS_USED
+
+//! The SPI mutex.
+static xSemaphoreHandle xSPIMutex;
+
+#endif
+
+
+/*! \brief Calculates the baudrate divider.
+ *
+ * \param options Pointer to a structure containing initialization options for
+ * an SPI channel.
+ * \param pba_hz SPI module input clock frequency (PBA clock, Hz).
+ *
+ * \return Divider or error code.
+ * \retval >=0 Success.
+ * \retval <0 Error.
+ */
+static int getBaudDiv(const spi_options_t *options, unsigned int pba_hz)
+{
+ int baudDiv = (pba_hz + options->baudrate / 2) / options->baudrate;
+
+ if (baudDiv <= 0 || baudDiv > 255) {
+ return -1;
+ }
+
+ return baudDiv;
+}
+
+
+void spi_reset(volatile avr32_spi_t *spi)
+{
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+}
+
+
+spi_status_t spi_initSlave(volatile avr32_spi_t *spi,
+ unsigned char bits,
+ unsigned char spi_mode)
+{
+ if (spi_mode > 3 ||
+ bits < 8 || bits > 16) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ // Reset.
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+
+ // Will use CSR0 offsets; these are the same for CSR0 to CSR3.
+ spi->csr0 = ((spi_mode >> 1) << AVR32_SPI_CSR0_CPOL_OFFSET) |
+ (((spi_mode & 0x1) ^ 0x1) << AVR32_SPI_CSR0_NCPHA_OFFSET) |
+ ((bits - 8) << AVR32_SPI_CSR0_BITS_OFFSET);
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_initTest(volatile avr32_spi_t *spi)
+{
+ // Reset.
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+ spi->mr |= AVR32_SPI_MR_MSTR_MASK | // Master Mode.
+ AVR32_SPI_MR_LLB_MASK; // Local Loopback.
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options)
+{
+ u_avr32_spi_mr_t u_avr32_spi_mr;
+
+ if (options->modfdis > 1) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ // Reset.
+ spi->cr = AVR32_SPI_CR_SWRST_MASK;
+
+ // Master Mode.
+ u_avr32_spi_mr.mr = spi->mr;
+ u_avr32_spi_mr.MR.mstr = 1;
+ u_avr32_spi_mr.MR.modfdis = options->modfdis;
+ u_avr32_spi_mr.MR.llb = 0;
+ u_avr32_spi_mr.MR.pcs = (1 << AVR32_SPI_MR_PCS_SIZE) - 1;
+ spi->mr = u_avr32_spi_mr.mr;
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_selectionMode(volatile avr32_spi_t *spi,
+ unsigned char variable_ps,
+ unsigned char pcs_decode,
+ unsigned char delay)
+{
+ u_avr32_spi_mr_t u_avr32_spi_mr;
+
+ if (variable_ps > 1 ||
+ pcs_decode > 1) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ u_avr32_spi_mr.mr = spi->mr;
+ u_avr32_spi_mr.MR.ps = variable_ps;
+ u_avr32_spi_mr.MR.pcsdec = pcs_decode;
+ u_avr32_spi_mr.MR.dlybcs = delay;
+ spi->mr = u_avr32_spi_mr.mr;
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip)
+{
+#ifdef FREERTOS_USED
+ while (pdFALSE == xSemaphoreTake(xSPIMutex, 20));
+#endif
+
+ // Assert all lines; no peripheral is selected.
+ spi->mr |= AVR32_SPI_MR_PCS_MASK;
+
+ if (spi->mr & AVR32_SPI_MR_PCSDEC_MASK) {
+ // The signal is decoded; allow up to 15 chips.
+ if (chip > 14) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ spi->mr &= ~AVR32_SPI_MR_PCS_MASK | (chip << AVR32_SPI_MR_PCS_OFFSET);
+ } else {
+ if (chip > 3) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ spi->mr &= ~(1 << (AVR32_SPI_MR_PCS_OFFSET + chip));
+ }
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ while (!(spi->sr & AVR32_SPI_SR_TXEMPTY_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ // Assert all lines; no peripheral is selected.
+ spi->mr |= AVR32_SPI_MR_PCS_MASK;
+
+ // Last transfer, so deassert the current NPCS if CSAAT is set.
+ spi->cr = AVR32_SPI_CR_LASTXFER_MASK;
+
+#ifdef FREERTOS_USED
+ xSemaphoreGive(xSPIMutex);
+#endif
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi,
+ const spi_options_t *options,
+ unsigned int pba_hz)
+{
+ u_avr32_spi_csr_t u_avr32_spi_csr;
+
+ if (options->spi_mode > 3 ||
+ options->stay_act > 1 ||
+ options->bits < 8 || options->bits > 16) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ int baudDiv = getBaudDiv(options, pba_hz);
+
+ if (baudDiv < 0) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ // Will use CSR0 offsets; these are the same for CSR0 to CSR3.
+ u_avr32_spi_csr.csr = 0;
+ u_avr32_spi_csr.CSR.cpol = options->spi_mode >> 1;
+ u_avr32_spi_csr.CSR.ncpha = (options->spi_mode & 0x1) ^ 0x1;
+ u_avr32_spi_csr.CSR.csaat = options->stay_act;
+ u_avr32_spi_csr.CSR.bits = options->bits - 8;
+ u_avr32_spi_csr.CSR.scbr = baudDiv;
+ u_avr32_spi_csr.CSR.dlybs = options->spck_delay;
+ u_avr32_spi_csr.CSR.dlybct = options->trans_delay;
+
+ switch(options->reg) {
+ case 0:
+ spi->csr0 = u_avr32_spi_csr.csr;
+ break;
+ case 1:
+ spi->csr1 = u_avr32_spi_csr.csr;
+ break;
+ case 2:
+ spi->csr2 = u_avr32_spi_csr.csr;
+ break;
+ case 3:
+ spi->csr3 = u_avr32_spi_csr.csr;
+ break;
+ default:
+ return SPI_ERROR_ARGUMENT;
+ }
+
+#ifdef FREERTOS_USED
+ if (!xSPIMutex)
+ {
+ // Create the SPI mutex.
+ vSemaphoreCreateBinary(xSPIMutex);
+ if (!xSPIMutex)
+ {
+ while(1);
+ }
+ }
+#endif
+
+ return SPI_OK;
+}
+
+
+void spi_enable(volatile avr32_spi_t *spi)
+{
+ spi->cr = AVR32_SPI_CR_SPIEN_MASK;
+}
+
+
+void spi_disable(volatile avr32_spi_t *spi)
+{
+ spi->cr = AVR32_SPI_CR_SPIDIS_MASK;
+}
+
+
+int spi_is_enabled(volatile avr32_spi_t *spi)
+{
+ return (spi->sr & AVR32_SPI_SR_SPIENS_MASK) != 0;
+}
+
+
+unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi)
+{
+ return ((spi->sr & AVR32_SPI_SR_TDRE_MASK) != 0);
+}
+
+
+spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ spi->tdr = data << AVR32_SPI_TDR_TD_OFFSET;
+
+ return SPI_OK;
+}
+
+
+spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, unsigned short data,
+ unsigned char pcs, unsigned char lastxfer)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ if (pcs > 14 || lastxfer > 1) {
+ return SPI_ERROR_ARGUMENT;
+ }
+
+ while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ spi->tdr = (data << AVR32_SPI_TDR_TD_OFFSET) |
+ (pcs << AVR32_SPI_TDR_PCS_OFFSET) |
+ (lastxfer << AVR32_SPI_TDR_LASTXFER_OFFSET);
+
+ return SPI_OK;
+}
+
+
+unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi)
+{
+ return ((spi->sr & AVR32_SPI_SR_TXEMPTY_MASK) != 0);
+}
+
+
+unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi)
+{
+ return ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0);
+}
+
+
+spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data)
+{
+ unsigned int timeout = SPI_TIMEOUT;
+
+ while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=
+ (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) {
+ if (!timeout--) {
+ return SPI_ERROR_TIMEOUT;
+ }
+ }
+
+ *data = spi->rdr >> AVR32_SPI_RDR_RD_OFFSET;
+
+ return SPI_OK;
+}
+
+
+unsigned char spi_getStatus(volatile avr32_spi_t *spi)
+{
+ spi_status_t ret = SPI_OK;
+ unsigned long sr = spi->sr;
+
+ if (sr & AVR32_SPI_SR_OVRES_MASK) {
+ ret = SPI_ERROR_OVERRUN;
+ }
+
+ if (sr & AVR32_SPI_SR_MODF_MASK) {
+ ret += SPI_ERROR_MODE_FAULT;
+ }
+
+ if (ret == (SPI_ERROR_OVERRUN + SPI_ERROR_MODE_FAULT)) {
+ return SPI_ERROR_OVERRUN_AND_MODE_FAULT;
+ }
+ else if (ret > 0) {
+ return ret;
+ } else {
+ return SPI_OK;
+ }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h
new file mode 100644
index 0000000..6dcc928
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h
@@ -0,0 +1,342 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief SPI driver for AVR32 UC3.
+ *
+ * This file defines a useful set of functions for the SPI interface on AVR32
+ * devices.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with an SPI module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _SPI_H_
+#define _SPI_H_
+
+#include <avr32/io.h>
+
+
+//! Time-out value (number of attempts).
+#define SPI_TIMEOUT 10000
+
+
+//! Status codes used by the SPI driver.
+typedef enum
+{
+ SPI_ERROR = -1,
+ SPI_OK = 0,
+ SPI_ERROR_TIMEOUT = 1,
+ SPI_ERROR_ARGUMENT,
+ SPI_ERROR_OVERRUN,
+ SPI_ERROR_MODE_FAULT,
+ SPI_ERROR_OVERRUN_AND_MODE_FAULT
+} spi_status_t;
+
+//! Option structure for SPI channels.
+typedef struct
+{
+ //! The SPI channel to set up.
+ unsigned char reg;
+
+ //! Preferred baudrate for the SPI.
+ unsigned int baudrate;
+
+ //! Number of bits in each character (8 to 16).
+ unsigned char bits;
+
+ //! Delay before first clock pulse after selecting slave (in PBA clock periods).
+ unsigned char spck_delay;
+
+ //! Delay between each transfer/character (in PBA clock periods).
+ unsigned char trans_delay;
+
+ //! Sets this chip to stay active after last transfer to it.
+ unsigned char stay_act;
+
+ //! Which SPI mode to use when transmitting.
+ unsigned char spi_mode;
+
+ //! Disables the mode fault detection.
+ //! With this bit cleared, the SPI master mode will disable itself if another
+ //! master tries to address it.
+ unsigned char modfdis;
+} spi_options_t;
+
+
+/*! \brief Resets the SPI controller.
+ *
+ * \param spi Base address of the SPI instance.
+ */
+extern void spi_reset(volatile avr32_spi_t *spi);
+
+/*! \brief Initializes the SPI in slave mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param bits Number of bits in each transmitted character (8 to 16).
+ * \param spi_mode Clock polarity and phase.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_initSlave(volatile avr32_spi_t *spi,
+ unsigned char bits,
+ unsigned char spi_mode);
+
+/*! \brief Sets up the SPI in a test mode where the transmitter is connected to
+ * the receiver (local loopback).
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ */
+extern spi_status_t spi_initTest(volatile avr32_spi_t *spi);
+
+/*! \brief Initializes the SPI in master mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param options Pointer to a structure containing initialization options.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options);
+
+/*! \brief Sets up how and when the slave chips are selected (master mode only).
+ *
+ * \param spi Base address of the SPI instance.
+ * \param variable_ps Target slave is selected in transfer register for every
+ * character to transmit.
+ * \param pcs_decode The four chip select lines are decoded externally. Values
+ * 0 to 14 can be given to \ref spi_selectChip.
+ * \param delay Delay in PBA periods between chip selects.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_selectionMode(volatile avr32_spi_t *spi,
+ unsigned char variable_ps,
+ unsigned char pcs_decode,
+ unsigned char delay);
+
+/*! \brief Selects slave chip.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0
+ * to 14).
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip);
+
+/*! \brief Unselects slave chip.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0
+ * to 14).
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ *
+ * \note Will block program execution until time-out occurs if last transmission
+ * is not complete. Invoke \ref spi_writeEndCheck beforehand if needed.
+ */
+extern spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip);
+
+/*! \brief Sets options for a specific slave chip.
+ *
+ * The baudrate field has to be written before transfer in master mode. Four
+ * similar registers exist, one for each slave. When using encoded slave
+ * addressing, reg=0 sets options for slaves 0 to 3, reg=1 for slaves 4 to 7 and
+ * so on.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param options Pointer to a structure containing initialization options for
+ * an SPI channel.
+ * \param pba_hz SPI module input clock frequency (PBA clock, Hz).
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ */
+extern spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi,
+ const spi_options_t *options,
+ unsigned int pba_hz);
+
+/*! \brief Enables the SPI.
+ *
+ * \param spi Base address of the SPI instance.
+ */
+extern void spi_enable(volatile avr32_spi_t *spi);
+
+/*! \brief Disables the SPI.
+ *
+ * Ensures that nothing is transferred while setting up buffers.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \warning This may cause data loss if used on a slave SPI.
+ */
+extern void spi_disable(volatile avr32_spi_t *spi);
+
+/*! \brief Tests if the SPI is enabled.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return \c 1 if the SPI is enabled, otherwise \c 0.
+ */
+extern int spi_is_enabled(volatile avr32_spi_t *spi);
+
+/*! \brief Checks if there is no data in the transmit register.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval 1 No data in TDR.
+ * \retval 0 Some data in TDR.
+ */
+extern unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi);
+
+/*! \brief Writes one data word in master fixed peripheral select mode or in
+ * slave mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param data The data word to write.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ *
+ * \note Will block program execution until time-out occurs if transmitter is
+ * busy and transmit buffer is full. Invoke
+ * \ref spi_writeRegisterEmptyCheck beforehand if needed.
+ *
+ * \note Once the data has been written to the transmit buffer, the end of
+ * transmission is not waited for. Invoke \ref spi_writeEndCheck if
+ * needed.
+ */
+extern spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data);
+
+/*! \brief Selects a slave in master variable peripheral select mode and writes
+ * one data word to it.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param data The data word to write.
+ * \param pcs Slave selector (bit 0 -> nCS line 0, bit 1 -> nCS line 1,
+ * etc.).
+ * \param lastxfer Boolean indicating whether this is the last data word
+ * transfer.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed.
+ *
+ * \note Will block program execution until time-out occurs if transmitter is
+ * busy and transmit buffer is full. Invoke
+ * \ref spi_writeRegisterEmptyCheck beforehand if needed.
+ *
+ * \note Once the data has been written to the transmit buffer, the end of
+ * transmission is not waited for. Invoke \ref spi_writeEndCheck if
+ * needed.
+ */
+extern spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi,
+ unsigned short data,
+ unsigned char pcs,
+ unsigned char lastxfer);
+
+/*! \brief Checks if all transmissions are complete.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval 1 All transmissions complete.
+ * \retval 0 Transmissions not complete.
+ */
+extern unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi);
+
+/*! \brief Checks if there is data in the receive register.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval 1 Some data in RDR.
+ * \retval 0 No data in RDR.
+ */
+extern unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi);
+
+/*! \brief Reads one data word in master mode or in slave mode.
+ *
+ * \param spi Base address of the SPI instance.
+ * \param data Pointer to the location where to store the received data word.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_TIMEOUT Time-out.
+ *
+ * \note Will block program execution until time-out occurs if no data is
+ * received or last transmission is not complete. Invoke
+ * \ref spi_writeEndCheck or \ref spi_readRegisterFullCheck beforehand if
+ * needed.
+ */
+extern spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data);
+
+/*! \brief Gets status information from the SPI.
+ *
+ * \param spi Base address of the SPI instance.
+ *
+ * \return Status.
+ * \retval SPI_OK Success.
+ * \retval SPI_ERROR_OVERRUN Overrun error.
+ * \retval SPI_ERROR_MODE_FAULT Mode fault (SPI addressed as slave
+ * while in master mode).
+ * \retval SPI_ERROR_OVERRUN_AND_MODE_FAULT Overrun error and mode fault.
+ */
+extern unsigned char spi_getStatus(volatile avr32_spi_t *spi);
+
+
+#endif // _SPI_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c
new file mode 100644
index 0000000..b95882a
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c
@@ -0,0 +1,914 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief USART driver for AVR32 UC3.
+ *
+ * This file contains basic functions for the AVR32 USART, with support for all
+ * modes, settings and clock speeds.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "usart.h"
+
+
+//------------------------------------------------------------------------------
+/*! \name Private Functions
+ */
+//! @{
+
+
+/*! \brief Checks if the USART is in multidrop mode.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART is in multidrop mode, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+static __inline__ int usart_mode_is_multidrop(volatile avr32_usart_t *usart)
+{
+ return ((usart->mr >> AVR32_USART_MR_PAR_OFFSET) & AVR32_USART_MR_PAR_MULTI) == AVR32_USART_MR_PAR_MULTI;
+}
+
+
+/*! \brief Calculates a clock divider (\e CD) and a fractional part (\e FP) for
+ * the USART asynchronous modes to generate a baud rate as close as
+ * possible to the baud rate set point.
+ *
+ * Baud rate calculation:
+ * \f$ Baudrate = \frac{SelectedClock}{Over \times (CD + \frac{FP}{8})} \f$, \e Over being 16 or 8.
+ * The maximal oversampling is selected if it allows to generate a baud rate close to the set point.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency.
+ */
+static int usart_set_async_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz)
+{
+ unsigned int over = (pba_hz >= 16 * baudrate) ? 16 : 8;
+ unsigned int cd_fp = ((1 << AVR32_USART_BRGR_FP_SIZE) * pba_hz + (over * baudrate) / 2) / (over * baudrate);
+ unsigned int cd = cd_fp >> AVR32_USART_BRGR_FP_SIZE;
+ unsigned int fp = cd_fp & ((1 << AVR32_USART_BRGR_FP_SIZE) - 1);
+
+ if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK |
+ AVR32_USART_MR_SYNC_MASK |
+ AVR32_USART_MR_OVER_MASK)) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET |
+ ((over == 16) ? AVR32_USART_MR_OVER_X16 : AVR32_USART_MR_OVER_X8) << AVR32_USART_MR_OVER_OFFSET;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET |
+ fp << AVR32_USART_BRGR_FP_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Calculates a clock divider (\e CD) for the USART synchronous master
+ * modes to generate a baud rate as close as possible to the baud rate
+ * set point.
+ *
+ * Baud rate calculation:
+ * \f$ Baudrate = \frac{SelectedClock}{CD} \f$.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency.
+ */
+static int usart_set_sync_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz)
+{
+ unsigned int cd = (pba_hz + baudrate / 2) / baudrate;
+
+ if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET |
+ AVR32_USART_MR_SYNC_MASK;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Selects the SCK pin as the source of baud rate for the USART
+ * synchronous slave modes.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ */
+static int usart_set_sync_slave_baudrate(volatile avr32_usart_t *usart)
+{
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET |
+ AVR32_USART_MR_SYNC_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Calculates a clock divider (\e CD) for the USART ISO7816 mode to
+ * generate an ISO7816 clock as close as possible to the clock set point.
+ *
+ * ISO7816 clock calculation:
+ * \f$ Clock = \frac{SelectedClock}{CD} \f$.
+ *
+ * \param usart Base address of the USART instance.
+ * \param clock ISO7816 clock set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS ISO7816 clock successfully initialized.
+ * \retval USART_INVALID_INPUT ISO7816 clock set point is out of range for the given input clock frequency.
+ */
+static int usart_set_iso7816_clock(volatile avr32_usart_t *usart, unsigned int clock, unsigned long pba_hz)
+{
+ unsigned int cd = (pba_hz + clock / 2) / clock;
+
+ if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK |
+ AVR32_USART_MR_SYNC_MASK |
+ AVR32_USART_MR_OVER_MASK)) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET |
+ AVR32_USART_MR_OVER_X16 << AVR32_USART_MR_OVER_OFFSET;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+
+/*! \brief Calculates a clock divider (\e CD) for the USART SPI master mode to
+ * generate a baud rate as close as possible to the baud rate set point.
+ *
+ * Baud rate calculation:
+ * \f$ Baudrate = \frac{SelectedClock}{CD} \f$.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate set point.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency.
+ */
+static int usart_set_spi_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz)
+{
+ unsigned int cd = (pba_hz + baudrate / 2) / baudrate;
+
+ if (cd < 4 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1)
+ return USART_INVALID_INPUT;
+
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET;
+
+ usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+/*! \brief Selects the SCK pin as the source of baud rate for the USART SPI
+ * slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Baud rate successfully initialized.
+ */
+static int usart_set_spi_slave_baudrate(volatile avr32_usart_t *usart)
+{
+ usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) |
+ AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+#endif // USART rev. >= 4.0.0
+
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+/*! \name Initialization Functions
+ */
+//! @{
+
+
+void usart_reset(volatile avr32_usart_t *usart)
+{
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled();
+
+ // Disable all USART interrupts.
+ // Interrupts needed should be set explicitly on every reset.
+ if (global_interrupt_enabled) Disable_global_interrupt();
+ usart->idr = 0xFFFFFFFF;
+ usart->csr;
+ if (global_interrupt_enabled) Enable_global_interrupt();
+
+ // Reset mode and other registers that could cause unpredictable behavior after reset.
+ usart->mr = 0;
+ usart->rtor = 0;
+ usart->ttgr = 0;
+
+ // Shutdown TX and RX (will be re-enabled when setup has successfully completed),
+ // reset status bits and turn off DTR and RTS.
+ usart->cr = AVR32_USART_CR_RSTRX_MASK |
+ AVR32_USART_CR_RSTTX_MASK |
+ AVR32_USART_CR_RSTSTA_MASK |
+ AVR32_USART_CR_RSTIT_MASK |
+ AVR32_USART_CR_RSTNACK_MASK |
+#ifndef AVR32_USART_440_H_INCLUDED
+// Note: Modem Signal Management DTR-DSR-DCD-RI are not included in USART rev.440.
+ AVR32_USART_CR_DTRDIS_MASK |
+#endif
+ AVR32_USART_CR_RTSDIS_MASK;
+}
+
+
+int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_async_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1, 1.5 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET;
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits == 1 || opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET;
+
+ // Setup complete; enable communication.
+ // Enable only output as input is not possible in synchronous mode without
+ // transferring clock.
+ usart->cr = AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set hardware handshaking mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_HARDWARE << AVR32_USART_MR_MODE_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set modem mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_MODEM << AVR32_USART_MR_MODE_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits == 1 || opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_CLKO_MASK;
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->paritytype > 7 ||
+ opt->stopbits == 1 || opt->stopbits > 2 + 255 ||
+ opt->channelmode > 3 ||
+ usart_set_sync_slave_baudrate(usart) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET;
+
+ if (opt->stopbits > USART_2_STOPBITS)
+ {
+ // Set two stop bits
+ usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET;
+ // and a timeguard period gives the rest.
+ usart->ttgr = opt->stopbits - USART_2_STOPBITS;
+ }
+ else
+ // Insert 1 or 2 stop bits.
+ usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET;
+
+ // Set normal mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET;
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set RS485 mode.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MR_MODE_RS485 << AVR32_USART_MR_MODE_OFFSET;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt,
+ long pba_hz, unsigned char irda_filter)
+{
+ // First: Setup standard RS232.
+ if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set IrDA filter.
+ usart->ifr = irda_filter;
+
+ // Set IrDA mode and activate filtering of input.
+ usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) |
+ AVR32_USART_MODE_IRDA << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_FILTER_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->paritytype > 1)
+ return USART_INVALID_INPUT;
+
+ if (t == 0)
+ {
+ // Set USART mode to ISO7816, T=0.
+ // The T=0 protocol always uses 2 stop bits.
+ usart->mr = AVR32_USART_MR_MODE_ISO7816_T0 << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET |
+ opt->bit_order << AVR32_USART_MR_MSBF_OFFSET; // Allow MSBF in T=0.
+ }
+ else if (t == 1)
+ {
+ // Only LSB first in the T=1 protocol.
+ // max_iterations field is only used in T=0 mode.
+ if (opt->bit_order != 0 ||
+ opt->max_iterations != 0)
+ return USART_INVALID_INPUT;
+
+ // Set USART mode to ISO7816, T=1.
+ // The T=1 protocol always uses 1 stop bit.
+ usart->mr = AVR32_USART_MR_MODE_ISO7816_T1 << AVR32_USART_MR_MODE_OFFSET |
+ AVR32_USART_MR_NBSTOP_1 << AVR32_USART_MR_NBSTOP_OFFSET;
+ }
+ else
+ return USART_INVALID_INPUT;
+
+ if (usart_set_iso7816_clock(usart, opt->iso7816_hz, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ // Set FIDI register: bit rate = selected clock/FI_DI_ratio/16.
+ usart->fidi = opt->fidi_ratio;
+
+ // Set ISO7816 spesific options in the MODE register.
+ usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET |
+ AVR32_USART_MR_CLKO_MASK | // Enable clock output.
+ opt->inhibit_nack << AVR32_USART_MR_INACK_OFFSET |
+ opt->dis_suc_nack << AVR32_USART_MR_DSNACK_OFFSET |
+ opt->max_iterations << AVR32_USART_MR_MAX_ITERATION_OFFSET;
+
+ // Setup complete; enable the receiver by default.
+ usart_iso7816_enable_receiver(usart);
+
+ return USART_SUCCESS;
+}
+
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+
+int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ usart->mr |= AVR32_USART_MR_MODE_LIN_MASTER << AVR32_USART_MR_MODE_OFFSET; // LIN master mode.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ usart->mr |= AVR32_USART_MR_MODE_LIN_SLAVE << AVR32_USART_MR_MODE_OFFSET; // LIN slave mode.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->spimode > 3 ||
+ opt->channelmode > 3 ||
+ usart_set_spi_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= AVR32_USART_MR_MODE_SPI_MASTER << AVR32_USART_MR_MODE_OFFSET | // SPI master mode.
+ ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase.
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode.
+ (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET | // SPI clock polarity.
+ AVR32_USART_MR_CLKO_MASK; // Drive SCK pin.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz)
+{
+ // Reset the USART and shutdown TX and RX.
+ usart_reset(usart);
+
+ // Check input values.
+ if (!opt || // Null pointer.
+ opt->charlength < 5 || opt->charlength > 9 ||
+ opt->spimode > 3 ||
+ opt->channelmode > 3 ||
+ usart_set_spi_slave_baudrate(usart) == USART_INVALID_INPUT)
+ return USART_INVALID_INPUT;
+
+ if (opt->charlength == 9)
+ {
+ // Character length set to 9 bits. MODE9 dominates CHRL.
+ usart->mr |= AVR32_USART_MR_MODE9_MASK;
+ }
+ else
+ {
+ // CHRL gives the character length (- 5) when MODE9 = 0.
+ usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET;
+ }
+
+ usart->mr |= AVR32_USART_MR_MODE_SPI_SLAVE << AVR32_USART_MR_MODE_OFFSET | // SPI slave mode.
+ ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase.
+ opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode.
+ (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET; // SPI clock polarity.
+
+ // Setup complete; enable communication.
+ // Enable input and output.
+ usart->cr = AVR32_USART_CR_RXEN_MASK |
+ AVR32_USART_CR_TXEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+#endif // USART rev. >= 4.0.0
+
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+
+/*! \name SPI Control Functions
+ */
+//! @{
+
+
+int usart_spi_selectChip(volatile avr32_usart_t *usart)
+{
+ // Force the SPI chip select.
+ usart->cr = AVR32_USART_CR_RTSEN_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+int usart_spi_unselectChip(volatile avr32_usart_t *usart)
+{
+ int timeout = USART_DEFAULT_TIMEOUT;
+
+ do
+ {
+ if (!timeout--) return USART_FAILURE;
+ } while (!usart_tx_empty(usart));
+
+ // Release the SPI chip select.
+ usart->cr = AVR32_USART_CR_RTSDIS_MASK;
+
+ return USART_SUCCESS;
+}
+
+
+//! @}
+
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+/*! \name Transmit/Receive Functions
+ */
+//! @{
+
+
+int usart_send_address(volatile avr32_usart_t *usart, int address)
+{
+ // Check if USART is in multidrop / RS485 mode.
+ if (!usart_mode_is_multidrop(usart)) return USART_MODE_FAULT;
+
+ // Prepare to send an address.
+ usart->cr = AVR32_USART_CR_SENDA_MASK;
+
+ // Write the address to TX.
+ usart_bw_write_char(usart, address);
+
+ return USART_SUCCESS;
+}
+
+
+int usart_write_char(volatile avr32_usart_t *usart, int c)
+{
+ if (usart_tx_ready(usart))
+ {
+ usart->thr = (c << AVR32_USART_THR_TXCHR_OFFSET) & AVR32_USART_THR_TXCHR_MASK;
+ return USART_SUCCESS;
+ }
+ else
+ return USART_TX_BUSY;
+}
+
+
+int usart_putchar(volatile avr32_usart_t *usart, int c)
+{
+ int timeout = USART_DEFAULT_TIMEOUT;
+
+ if (c == '\n')
+ {
+ do
+ {
+ if (!timeout--) return USART_FAILURE;
+ } while (usart_write_char(usart, '\r') != USART_SUCCESS);
+
+ timeout = USART_DEFAULT_TIMEOUT;
+ }
+
+ do
+ {
+ if (!timeout--) return USART_FAILURE;
+ } while (usart_write_char(usart, c) != USART_SUCCESS);
+
+ return USART_SUCCESS;
+}
+
+
+int usart_read_char(volatile avr32_usart_t *usart, int *c)
+{
+ // Check for errors: frame, parity and overrun. In RS485 mode, a parity error
+ // would mean that an address char has been received.
+ if (usart->csr & (AVR32_USART_CSR_OVRE_MASK |
+ AVR32_USART_CSR_FRAME_MASK |
+ AVR32_USART_CSR_PARE_MASK))
+ return USART_RX_ERROR;
+
+ // No error; if we really did receive a char, read it and return SUCCESS.
+ if (usart_test_hit(usart))
+ {
+ *c = (usart->rhr & AVR32_USART_RHR_RXCHR_MASK) >> AVR32_USART_RHR_RXCHR_OFFSET;
+ return USART_SUCCESS;
+ }
+ else
+ return USART_RX_EMPTY;
+}
+
+
+int usart_getchar(volatile avr32_usart_t *usart)
+{
+ int c, ret;
+
+ while ((ret = usart_read_char(usart, &c)) == USART_RX_EMPTY);
+
+ if (ret == USART_RX_ERROR)
+ return USART_FAILURE;
+
+ return c;
+}
+
+
+void usart_write_line(volatile avr32_usart_t *usart, const char *string)
+{
+ while (*string != '\0')
+ usart_putchar(usart, *string++);
+}
+
+
+int usart_get_echo_line(volatile avr32_usart_t *usart)
+{
+ int rx_char;
+ int retval = USART_SUCCESS;
+
+ while (1)
+ {
+ rx_char = usart_getchar(usart);
+ if (rx_char == USART_FAILURE)
+ {
+ usart_write_line(usart, "Error!!!\n");
+ retval = USART_FAILURE;
+ break;
+ }
+ if (rx_char == '\x03')
+ {
+ retval = USART_FAILURE;
+ break;
+ }
+ usart_putchar(usart, rx_char);
+ if (rx_char == '\r')
+ {
+ usart_putchar(usart, '\n');
+ break;
+ }
+ }
+
+ return retval;
+}
+
+
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h
new file mode 100644
index 0000000..bc1c100
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h
@@ -0,0 +1,889 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief USART driver for AVR32 UC3.
+ *
+ * This file contains basic functions for the AVR32 USART, with support for all
+ * modes, settings and clock speeds.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _USART_H_
+#define _USART_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+
+/*! \name Return Values
+ */
+//! @{
+#define USART_SUCCESS 0 //!< Successful completion.
+#define USART_FAILURE -1 //!< Failure because of some unspecified reason.
+#define USART_INVALID_INPUT 1 //!< Input value out of range.
+#define USART_INVALID_ARGUMENT -1 //!< Argument value out of range.
+#define USART_TX_BUSY 2 //!< Transmitter was busy.
+#define USART_RX_EMPTY 3 //!< Nothing was received.
+#define USART_RX_ERROR 4 //!< Transmission error occurred.
+#define USART_MODE_FAULT 5 //!< USART not in the appropriate mode.
+//! @}
+
+//! Default time-out value (number of attempts).
+#define USART_DEFAULT_TIMEOUT 10000
+
+/*! \name Parity Settings
+ */
+//! @{
+#define USART_EVEN_PARITY AVR32_USART_MR_PAR_EVEN //!< Use even parity on character transmission.
+#define USART_ODD_PARITY AVR32_USART_MR_PAR_ODD //!< Use odd parity on character transmission.
+#define USART_SPACE_PARITY AVR32_USART_MR_PAR_SPACE //!< Use a space as parity bit.
+#define USART_MARK_PARITY AVR32_USART_MR_PAR_MARK //!< Use a mark as parity bit.
+#define USART_NO_PARITY AVR32_USART_MR_PAR_NONE //!< Don't use a parity bit.
+#define USART_MULTIDROP_PARITY AVR32_USART_MR_PAR_MULTI //!< Parity bit is used to flag address characters.
+//! @}
+
+/*! \name Stop Bits Settings
+ */
+//! @{
+#define USART_1_STOPBIT AVR32_USART_MR_NBSTOP_1 //!< Use 1 stop bit.
+#define USART_1_5_STOPBITS AVR32_USART_MR_NBSTOP_1_5 //!< Use 1.5 stop bits.
+#define USART_2_STOPBITS AVR32_USART_MR_NBSTOP_2 //!< Use 2 stop bits (for more, just give the number of bits).
+//! @}
+
+/*! \name Channel Modes
+ */
+//! @{
+#define USART_NORMAL_CHMODE AVR32_USART_MR_CHMODE_NORMAL //!< Normal communication.
+#define USART_AUTO_ECHO AVR32_USART_MR_CHMODE_ECHO //!< Echo data.
+#define USART_LOCAL_LOOPBACK AVR32_USART_MR_CHMODE_LOCAL_LOOP //!< Local loopback.
+#define USART_REMOTE_LOOPBACK AVR32_USART_MR_CHMODE_REMOTE_LOOP //!< Remote loopback.
+//! @}
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \name LIN Node Actions
+ */
+//! @{
+#define USART_LIN_PUBLISH_ACTION AVR32_USART_LINMR_NACT_PUBLISH //!< The USART transmits the response.
+#define USART_LIN_SUBSCRIBE_ACTION AVR32_USART_LINMR_NACT_SUBSCRIBE //!< The USART receives the response.
+#define USART_LIN_IGNORE_ACTION AVR32_USART_LINMR_NACT_IGNORE //!< The USART does not transmit and does not receive the reponse.
+//! @}
+
+/*! \name LIN Checksum Types
+ */
+//! @{
+#define USART_LIN_ENHANCED_CHECKSUM 0 //!< LIN 2.0 "enhanced" checksum.
+#define USART_LIN_CLASSIC_CHECKSUM 1 //!< LIN 1.3 "classic" checksum.
+//! @}
+
+#endif // USART rev. >= 4.0.0
+
+
+//! Input parameters when initializing RS232 and similar modes.
+typedef struct
+{
+ //! Set baud rate of the USART (unused in slave modes).
+ unsigned long baudrate;
+
+ //! Number of bits to transmit as a character (5 to 9).
+ unsigned char charlength;
+
+ //! How to calculate the parity bit: \ref USART_EVEN_PARITY, \ref USART_ODD_PARITY,
+ //! \ref USART_SPACE_PARITY, \ref USART_MARK_PARITY, \ref USART_NO_PARITY or
+ //! \ref USART_MULTIDROP_PARITY.
+ unsigned char paritytype;
+
+ //! Number of stop bits between two characters: \ref USART_1_STOPBIT,
+ //! \ref USART_1_5_STOPBITS, \ref USART_2_STOPBITS or any number from 3 to 257
+ //! which will result in a time guard period of that length between characters.
+ //! \note \ref USART_1_5_STOPBITS is supported in asynchronous modes only.
+ unsigned short stopbits;
+
+ //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO,
+ //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK.
+ unsigned char channelmode;
+} usart_options_t;
+
+//! Input parameters when initializing ISO7816 mode.
+typedef struct
+{
+ //! Set the frequency of the ISO7816 clock.
+ unsigned long iso7816_hz;
+
+ //! The number of ISO7816 clock ticks in every bit period (1 to 2047, 0 = disable clock).
+ //! Bit rate = \ref iso7816_hz / \ref fidi_ratio.
+ unsigned short fidi_ratio;
+
+ //! How to calculate the parity bit: \ref USART_EVEN_PARITY for normal mode or
+ //! \ref USART_ODD_PARITY for inverse mode.
+ unsigned char paritytype;
+
+ //! Inhibit Non Acknowledge:\n
+ //! - 0: the NACK is generated;\n
+ //! - 1: the NACK is not generated.
+ //!
+ //! \note This bit will be used only in ISO7816 mode, protocol T = 0 receiver.
+ int inhibit_nack;
+
+ //! Disable successive NACKs.
+ //! Successive parity errors are counted up to the value in the \ref max_iterations field.
+ //! These parity errors generate a NACK on the ISO line. As soon as this value is reached,
+ //! no addititional NACK is sent on the ISO line. The ITERATION flag is asserted.
+ int dis_suc_nack;
+
+ //! Max number of repetitions (0 to 7).
+ unsigned char max_iterations;
+
+ //! Bit order in transmitted characters:\n
+ //! - 0: LSB first;\n
+ //! - 1: MSB first.
+ int bit_order;
+} usart_iso7816_options_t;
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+//! Input parameters when initializing SPI mode.
+typedef struct
+{
+ //! Set the frequency of the SPI clock (unused in slave mode).
+ unsigned long baudrate;
+
+ //! Number of bits to transmit as a character (5 to 9).
+ unsigned char charlength;
+
+ //! Which SPI mode to use.
+ unsigned char spimode;
+
+ //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO,
+ //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK.
+ unsigned char channelmode;
+} usart_spi_options_t;
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+/*! \name Initialization Functions
+ */
+//! @{
+
+/*! \brief Resets the USART and disables TX and RX.
+ *
+ * \param usart Base address of the USART instance.
+ */
+extern void usart_reset(volatile avr32_usart_t *usart);
+
+/*! \brief Sets up the USART to use the standard RS232 protocol.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the standard RS232 protocol in TX-only mode.
+ *
+ * Compared to \ref usart_init_rs232, this function allows very high baud rates
+ * (up to \a pba_hz instead of \a pba_hz / \c 8) at the expense of full duplex.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ *
+ * \note The \c 1.5 stop bit is not supported in this mode.
+ */
+extern int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use hardware handshaking.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ *
+ * \note \ref usart_init_rs232 does not need to be invoked before this function.
+ */
+extern int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the modem protocol, activating dedicated inputs/outputs.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use a synchronous RS232-like protocol in master mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use a synchronous RS232-like protocol in slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the RS485 protocol.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the IrDA protocol.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up RS232 communication (see \ref usart_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ * \param irda_filter Counter used to distinguish received ones from zeros.
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt,
+ long pba_hz, unsigned char irda_filter);
+
+/*! \brief Sets up the USART to use the ISO7816 T=0 or T=1 smartcard protocols.
+ *
+ * The receiver is enabled by default. \ref usart_iso7816_enable_receiver and
+ * \ref usart_iso7816_enable_transmitter can be called to change the half-duplex
+ * communication direction.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up ISO7816 communication (see \ref usart_iso7816_options_t).
+ * \param t ISO7816 mode to use (T=0 or T=1).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz);
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \brief Sets up the USART to use the LIN master mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ */
+extern int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz);
+
+/*! \brief Sets up the USART to use the LIN slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param baudrate Baud rate.
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ */
+extern int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz);
+
+/*! \brief Sets up the USART to use the SPI master mode.
+ *
+ * \ref usart_spi_selectChip and \ref usart_spi_unselectChip can be called to
+ * select or unselect the SPI slave chip.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz);
+
+/*! \brief Sets up the USART to use the SPI slave mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t).
+ * \param pba_hz USART module input clock frequency (PBA clock, Hz).
+ *
+ * \retval USART_SUCCESS Mode successfully initialized.
+ * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range.
+ */
+extern int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz);
+
+#endif // USART rev. >= 4.0.0
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+/*! \name Read and Reset Error Status Bits
+ */
+//! @{
+
+/*! \brief Resets the error status.
+ *
+ * This function resets the status bits indicating that a parity error,
+ * framing error or overrun has occurred. The RXBRK bit, indicating
+ * a start/end of break condition on the RX line, is also reset.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_reset_status(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_CR_RSTSTA_MASK;
+}
+
+/*! \brief Checks if a parity error has occurred since last status reset.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a parity error has been detected, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_parity_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_PARE_MASK) != 0;
+}
+
+/*! \brief Checks if a framing error has occurred since last status reset.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a framing error has been detected, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_framing_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_FRAME_MASK) != 0;
+}
+
+/*! \brief Checks if an overrun error has occurred since last status reset.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a overrun error has been detected, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_overrun_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_OVRE_MASK) != 0;
+}
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \brief Get LIN Error Status
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval The binary value of the error field.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_lin_get_error(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & (AVR32_USART_CSR_LINSNRE_MASK |
+ AVR32_USART_CSR_LINCE_MASK |
+ AVR32_USART_CSR_LINIPE_MASK |
+ AVR32_USART_CSR_LINISFE_MASK |
+ AVR32_USART_CSR_LINBE_MASK)) >> AVR32_USART_CSR_LINBE_OFFSET;
+}
+
+#endif // USART rev. >= 4.0.0
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+/*! \name ISO7816 Control Functions
+ */
+//! @{
+
+/*! \brief Enables the ISO7816 receiver.
+ *
+ * The ISO7816 transmitter is disabled.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_iso7816_enable_receiver(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_CR_TXDIS_MASK | AVR32_USART_CR_RXEN_MASK;
+}
+
+/*! \brief Enables the ISO7816 transmitter.
+ *
+ * The ISO7816 receiver is disabled.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_iso7816_enable_transmitter(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_CR_RXDIS_MASK | AVR32_USART_CR_TXEN_MASK;
+}
+
+//! @}
+
+
+//------------------------------------------------------------------------------
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \name LIN Control Functions
+ */
+//! @{
+
+/*! \brief Sets the node action.
+ *
+ * \param usart Base address of the USART instance.
+ * \param action The node action: \ref USART_LIN_PUBLISH_ACTION,
+ * \ref USART_LIN_SUBSCRIBE_ACTION or
+ * \ref USART_LIN_IGNORE_ACTION.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_node_action(volatile avr32_usart_t *usart, unsigned char action)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_NACT_MASK) |
+ action << AVR32_USART_LINMR_NACT_OFFSET;
+}
+
+/*! \brief Enables or disables the Identifier parity.
+ *
+ * \param usart Base address of the USART instance.
+ * \param parity Whether to enable the Identifier parity: \c TRUE or \c FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_enable_parity(volatile avr32_usart_t *usart, unsigned char parity)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_PARDIS_MASK) |
+ !parity << AVR32_USART_LINMR_PARDIS_OFFSET;
+}
+
+/*! \brief Enables or disables the checksum.
+ *
+ * \param usart Base address of the USART instance.
+ * \param parity Whether to enable the checksum: \c TRUE or \c FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_enable_checksum(volatile avr32_usart_t *usart, unsigned char checksum)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKDIS_MASK) |
+ !checksum << AVR32_USART_LINMR_CHKDIS_OFFSET;
+}
+
+/*! \brief Sets the checksum type.
+ *
+ * \param usart Base address of the USART instance.
+ * \param chktyp The checksum type: \ref USART_LIN_ENHANCED_CHEKSUM or
+ * \ref USART_LIN_CLASSIC_CHECKSUM.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_checksum(volatile avr32_usart_t *usart, unsigned char chktyp)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKTYP_MASK) |
+ chktyp << AVR32_USART_LINMR_CHKTYP_OFFSET;
+}
+
+/*! \brief Gets the response data length.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return The response data length.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned char usart_lin_get_data_length(volatile avr32_usart_t *usart)
+{
+ if (usart->linmr & AVR32_USART_LINMR_DLM_MASK)
+ {
+ unsigned char data_length = 1 << ((usart->linir >> (AVR32_USART_LINIR_IDCHR_OFFSET + 4)) & 0x03);
+ if (data_length == 1)
+ data_length = 2;
+ return data_length;
+ }
+ else
+ return ((usart->linmr & AVR32_USART_LINMR_DLC_MASK) >> AVR32_USART_LINMR_DLC_OFFSET) + 1;
+}
+
+/*! \brief Sets the response data length for LIN 1.x.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_data_length_lin1x(volatile avr32_usart_t *usart)
+{
+ usart->linmr |= AVR32_USART_LINMR_DLM_MASK;
+}
+
+/*! \brief Sets the response data length for LIN 2.x.
+ *
+ * \param usart Base address of the USART instance.
+ * \param data_length The response data length.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_data_length_lin2x(volatile avr32_usart_t *usart, unsigned char data_length)
+{
+ usart->linmr = (usart->linmr & ~(AVR32_USART_LINMR_DLC_MASK |
+ AVR32_USART_LINMR_DLM_MASK)) |
+ (data_length - 1) << AVR32_USART_LINMR_DLC_OFFSET;
+}
+
+/*! \brief Enables or disables the frame slot mode.
+ *
+ * \param usart Base address of the USART instance.
+ * \param frameslot Whether to enable the frame slot mode: \c TRUE or
+ * \c FALSE.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_enable_frameslot(volatile avr32_usart_t *usart, unsigned char frameslot)
+{
+ usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_FSDIS_MASK) |
+ !frameslot << AVR32_USART_LINMR_FSDIS_OFFSET;
+}
+
+/*! \brief Gets the Identifier character.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return The Identifier character.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ unsigned char usart_lin_get_id_char(volatile avr32_usart_t *usart)
+{
+ return (usart->linir & AVR32_USART_LINIR_IDCHR_MASK) >> AVR32_USART_LINIR_IDCHR_OFFSET;
+}
+
+/*! \brief Sets the Identifier character.
+ *
+ * \param usart Base address of the USART instance.
+ * \param id_char The Identifier character.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_set_id_char(volatile avr32_usart_t *usart, unsigned char id_char)
+{
+ usart->linir = (usart->linir & ~AVR32_USART_LINIR_IDCHR_MASK) |
+ id_char << AVR32_USART_LINIR_IDCHR_OFFSET;
+}
+
+//! @}
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \name SPI Control Functions
+ */
+//! @{
+
+/*! \brief Selects SPI slave chip.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Success.
+ */
+extern int usart_spi_selectChip(volatile avr32_usart_t *usart);
+
+/*! \brief Unselects SPI slave chip.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Success.
+ * \retval USART_FAILURE Time-out.
+ */
+extern int usart_spi_unselectChip(volatile avr32_usart_t *usart);
+
+//! @}
+
+#endif // USART rev. >= 4.0.0
+
+
+//------------------------------------------------------------------------------
+/*! \name Transmit/Receive Functions
+ */
+//! @{
+
+/*! \brief Addresses a receiver.
+ *
+ * While in RS485 mode, receivers only accept data addressed to them.
+ * A packet/char with the address tag set has to precede any data.
+ * This function is used to address a receiver. This receiver should read
+ * all the following data, until an address packet addresses another receiver.
+ *
+ * \param usart Base address of the USART instance.
+ * \param address Address of the target device.
+ *
+ * \retval USART_SUCCESS Address successfully sent (if current mode is RS485).
+ * \retval USART_MODE_FAULT Wrong operating mode.
+ */
+extern int usart_send_address(volatile avr32_usart_t *usart, int address);
+
+/*! \brief Tests if the USART is ready to transmit a character.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART Transmit Holding Register is free, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_tx_ready(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_TXRDY_MASK) != 0;
+}
+
+/*! \brief Writes the given character to the TX buffer if the transmitter is ready.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c The character (up to 9 bits) to transmit.
+ *
+ * \retval USART_SUCCESS The transmitter was ready.
+ * \retval USART_TX_BUSY The transmitter was busy.
+ */
+extern int usart_write_char(volatile avr32_usart_t *usart, int c);
+
+/*! \brief An active wait writing a character to the USART.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c The character (up to 9 bits) to transmit.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_bw_write_char(volatile avr32_usart_t *usart, int c)
+{
+ while (usart_write_char(usart, c) != USART_SUCCESS);
+}
+
+/*! \brief Sends a character with the USART.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c Character to write.
+ *
+ * \retval USART_SUCCESS The character was written.
+ * \retval USART_FAILURE The function timed out before the USART transmitter became ready to send.
+ */
+extern int usart_putchar(volatile avr32_usart_t *usart, int c);
+
+/*! \brief Tests if all requested USART transmissions are over.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART Transmit Shift Register and the USART Transmit
+ * Holding Register are free, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_tx_empty(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_TXEMPTY_MASK) != 0;
+}
+
+/*! \brief Tests if the USART contains a received character.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if the USART Receive Holding Register is full, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_test_hit(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_RXRDY_MASK) != 0;
+}
+
+/*! \brief Checks the RX buffer for a received character, and stores it at the
+ * given memory location.
+ *
+ * \param usart Base address of the USART instance.
+ * \param c Pointer to the where the read character should be stored
+ * (must be at least short in order to accept 9-bit characters).
+ *
+ * \retval USART_SUCCESS The character was read successfully.
+ * \retval USART_RX_EMPTY The RX buffer was empty.
+ * \retval USART_RX_ERROR An error was deteceted.
+ */
+extern int usart_read_char(volatile avr32_usart_t *usart, int *c);
+
+/*! \brief Waits until a character is received, and returns it.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return The received character, or \ref USART_FAILURE upon error.
+ */
+extern int usart_getchar(volatile avr32_usart_t *usart);
+
+/*! \brief Writes one character string to the USART.
+ *
+ * \param usart Base address of the USART instance.
+ * \param string String to be written.
+ */
+extern void usart_write_line(volatile avr32_usart_t *usart, const char *string);
+
+/*! \brief Gets and echoes characters until end of line.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \retval USART_SUCCESS Success.
+ * \retval USART_FAILURE Low-level error detected or ETX character received.
+ */
+extern int usart_get_echo_line(volatile avr32_usart_t *usart);
+
+#if defined(AVR32_USART_400_H_INCLUDED) || \
+ defined(AVR32_USART_410_H_INCLUDED) || \
+ defined(AVR32_USART_420_H_INCLUDED) || \
+ defined(AVR32_USART_440_H_INCLUDED) || \
+ defined(AVR32_USART_602_H_INCLUDED)
+
+/*! \brief Abort LIN transmission.
+ *
+ * \param usart Base address of the USART instance.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ void usart_lin_abort(volatile avr32_usart_t *usart)
+{
+ usart->cr = AVR32_USART_LINABT_MASK;
+}
+
+/*! \brief Tests if a LIN transfer has been completed.
+ *
+ * \param usart Base address of the USART instance.
+ *
+ * \return \c 1 if a LIN transfer has been completed, otherwise \c 0.
+ */
+#if (defined __GNUC__)
+__attribute__((__always_inline__))
+#endif
+extern __inline__ int usart_lin_transfer_completed(volatile avr32_usart_t *usart)
+{
+ return (usart->csr & AVR32_USART_CSR_LINTC_MASK) != 0;
+}
+
+#endif // USART rev. >= 4.0.0
+
+//! @}
+
+
+#endif // _USART_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c
new file mode 100644
index 0000000..09790c2
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c
@@ -0,0 +1,571 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Abstraction layer for memory interfaces.
+ *
+ * This module contains the interfaces:
+ * - MEM <-> USB;
+ * - MEM <-> RAM;
+ * - MEM <-> MEM.
+ *
+ * This module may be configured and expanded to support the following features:
+ * - write-protected globals;
+ * - password-protected data;
+ * - specific features;
+ * - etc.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+//_____ I N C L U D E S ____________________________________________________
+
+#include "compiler.h"
+#include "preprocessor.h"
+#ifdef FREERTOS_USED
+#include "FreeRTOS.h"
+#include "semphr.h"
+#endif
+#include "ctrl_access.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+#ifdef FREERTOS_USED
+
+/*! \name LUN Access Protection Macros
+ */
+//! @{
+
+/*! \brief Locks accesses to LUNs.
+ *
+ * \return \c TRUE if the access was successfully locked, else \c FALSE.
+ */
+#define Ctrl_access_lock() ctrl_access_lock()
+
+/*! \brief Unlocks accesses to LUNs.
+ */
+#define Ctrl_access_unlock() xSemaphoreGive(ctrl_access_semphr)
+
+//! @}
+
+//! Handle to the semaphore protecting accesses to LUNs.
+static xSemaphoreHandle ctrl_access_semphr = NULL;
+
+#else
+
+/*! \name LUN Access Protection Macros
+ */
+//! @{
+
+/*! \brief Locks accesses to LUNs.
+ *
+ * \return \c TRUE if the access was successfully locked, else \c FALSE.
+ */
+#define Ctrl_access_lock() TRUE
+
+/*! \brief Unlocks accesses to LUNs.
+ */
+#define Ctrl_access_unlock()
+
+//! @}
+
+#endif // FREERTOS_USED
+
+
+#if MAX_LUN
+
+/*! \brief Initializes an entry of the LUN descriptor table.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return LUN descriptor table entry initializer.
+ */
+#if ACCESS_USB == ENABLED && ACCESS_MEM_TO_RAM == ENABLED
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(Lun_, lun, _usb_read_10),\
+ TPASTE3(Lun_, lun, _usb_write_10),\
+ TPASTE3(Lun_, lun, _mem_2_ram),\
+ TPASTE3(Lun_, lun, _ram_2_mem),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#elif ACCESS_USB == ENABLED
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(Lun_, lun, _usb_read_10),\
+ TPASTE3(Lun_, lun, _usb_write_10),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#elif ACCESS_MEM_TO_RAM == ENABLED
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(Lun_, lun, _mem_2_ram),\
+ TPASTE3(Lun_, lun, _ram_2_mem),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#else
+#define Lun_desc_entry(lun) \
+ {\
+ TPASTE3(Lun_, lun, _test_unit_ready),\
+ TPASTE3(Lun_, lun, _read_capacity),\
+ TPASTE3(Lun_, lun, _wr_protect),\
+ TPASTE3(Lun_, lun, _removal),\
+ TPASTE3(LUN_, lun, _NAME)\
+ }
+#endif
+
+//! LUN descriptor table.
+static const struct
+{
+ Ctrl_status (*test_unit_ready)(void);
+ Ctrl_status (*read_capacity)(U32 *);
+ Bool (*wr_protect)(void);
+ Bool (*removal)(void);
+#if ACCESS_USB == ENABLED
+ Ctrl_status (*usb_read_10)(U32, U16);
+ Ctrl_status (*usb_write_10)(U32, U16);
+#endif
+#if ACCESS_MEM_TO_RAM == ENABLED
+ Ctrl_status (*mem_2_ram)(U32, void *);
+ Ctrl_status (*ram_2_mem)(U32, const void *);
+#endif
+ const char *name;
+} lun_desc[MAX_LUN] =
+{
+#if LUN_0 == ENABLE
+ Lun_desc_entry(0),
+#endif
+#if LUN_1 == ENABLE
+ Lun_desc_entry(1),
+#endif
+#if LUN_2 == ENABLE
+ Lun_desc_entry(2),
+#endif
+#if LUN_3 == ENABLE
+ Lun_desc_entry(3),
+#endif
+#if LUN_4 == ENABLE
+ Lun_desc_entry(4),
+#endif
+#if LUN_5 == ENABLE
+ Lun_desc_entry(5),
+#endif
+#if LUN_6 == ENABLE
+ Lun_desc_entry(6),
+#endif
+#if LUN_7 == ENABLE
+ Lun_desc_entry(7)
+#endif
+};
+
+#endif
+
+
+#if GLOBAL_WR_PROTECT == ENABLED
+Bool g_wr_protect;
+#endif
+
+
+/*! \name Control Interface
+ */
+//! @{
+
+
+#ifdef FREERTOS_USED
+
+Bool ctrl_access_init(void)
+{
+ // If the handle to the protecting semaphore is not valid,
+ if (!ctrl_access_semphr)
+ {
+ // try to create the semaphore.
+ vSemaphoreCreateBinary(ctrl_access_semphr);
+
+ // If the semaphore could not be created, there is no backup solution.
+ if (!ctrl_access_semphr) return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/*! \brief Locks accesses to LUNs.
+ *
+ * \return \c TRUE if the access was successfully locked, else \c FALSE.
+ */
+static Bool ctrl_access_lock(void)
+{
+ // If the semaphore could not be created, there is no backup solution.
+ if (!ctrl_access_semphr) return FALSE;
+
+ // Wait for the semaphore.
+ while (!xSemaphoreTake(ctrl_access_semphr, portMAX_DELAY));
+
+ return TRUE;
+}
+
+#endif // FREERTOS_USED
+
+
+U8 get_nb_lun(void)
+{
+#if MEM_USB == ENABLE
+ U8 nb_lun;
+
+ if (!Ctrl_access_lock()) return MAX_LUN;
+
+ nb_lun = MAX_LUN + host_get_lun();
+
+ Ctrl_access_unlock();
+
+ return nb_lun;
+#else
+ return MAX_LUN;
+#endif
+}
+
+
+U8 get_cur_lun(void)
+{
+ return LUN_ID_0;
+}
+
+
+Ctrl_status mem_test_unit_ready(U8 lun)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].test_unit_ready() :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_test_unit_ready(lun - LUN_ID_USB);
+#else
+ CTRL_FAIL;
+#endif
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].read_capacity(u32_nb_sector) :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_read_capacity(lun - LUN_ID_USB, u32_nb_sector);
+#else
+ CTRL_FAIL;
+#endif
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+U8 mem_sector_size(U8 lun)
+{
+ U8 sector_size;
+
+ if (!Ctrl_access_lock()) return 0;
+
+ sector_size =
+#if MAX_LUN
+ (lun < MAX_LUN) ? 1 :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_read_sector_size(lun - LUN_ID_USB);
+#else
+ 0;
+#endif
+
+ Ctrl_access_unlock();
+
+ return sector_size;
+}
+
+
+Bool mem_wr_protect(U8 lun)
+{
+ Bool wr_protect;
+
+ if (!Ctrl_access_lock()) return TRUE;
+
+ wr_protect =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].wr_protect() :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_wr_protect(lun - LUN_ID_USB);
+#else
+ TRUE;
+#endif
+
+ Ctrl_access_unlock();
+
+ return wr_protect;
+}
+
+
+Bool mem_removal(U8 lun)
+{
+ Bool removal;
+
+ if (!Ctrl_access_lock()) return TRUE;
+
+ removal =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].removal() :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_removal();
+#else
+ TRUE;
+#endif
+
+ Ctrl_access_unlock();
+
+ return removal;
+}
+
+
+const char *mem_name(U8 lun)
+{
+ return
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].name :
+#endif
+#if LUN_USB == ENABLE
+ LUN_USB_NAME;
+#else
+ NULL;
+#endif
+}
+
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+
+Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_read_action(nb_sector);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].usb_read_10(addr, nb_sector) :
+#endif
+ CTRL_FAIL;
+ memory_stop_read_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_write_action(nb_sector);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].usb_write_10(addr, nb_sector) :
+#endif
+ CTRL_FAIL;
+ memory_stop_write_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+//! @}
+
+#endif // ACCESS_USB == ENABLED
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+
+Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_read_action(1);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].mem_2_ram(addr, ram) :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_mem_2_ram(addr, ram);
+#else
+ CTRL_FAIL;
+#endif
+ memory_stop_read_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram)
+{
+ Ctrl_status status;
+
+ if (!Ctrl_access_lock()) return CTRL_FAIL;
+
+ memory_start_write_action(1);
+ status =
+#if MAX_LUN
+ (lun < MAX_LUN) ? lun_desc[lun].ram_2_mem(addr, ram) :
+#endif
+#if LUN_USB == ENABLE
+ Lun_usb_ram_2_mem(addr, ram);
+#else
+ CTRL_FAIL;
+#endif
+ memory_stop_write_action();
+
+ Ctrl_access_unlock();
+
+ return status;
+}
+
+
+//! @}
+
+#endif // ACCESS_MEM_TO_RAM == ENABLED
+
+
+#if ACCESS_STREAM == ENABLED
+
+/*! \name Streaming MEM <-> MEM Interface
+ */
+//! @{
+
+
+ #if ACCESS_MEM_TO_MEM == ENABLED
+
+#include "fat.h"
+
+Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector)
+{
+#if (defined __GNUC__) && (defined __AVR32__)
+ __attribute__((__aligned__(4)))
+#elif (defined __ICCAVR32__)
+ #pragma data_alignment = 4
+#endif
+ static U8 sector_buf[FS_512B];
+ Ctrl_status status = CTRL_GOOD;
+
+ while (nb_sector--)
+ {
+ if ((status = memory_2_ram(src_lun, src_addr++, sector_buf)) != CTRL_GOOD) break;
+ if ((status = ram_2_memory(dest_lun, dest_addr++, sector_buf)) != CTRL_GOOD) break;
+ }
+
+ return status;
+}
+
+ #endif // ACCESS_MEM_TO_MEM == ENABLED
+
+
+Ctrl_status stream_state(U8 id)
+{
+ return CTRL_GOOD;
+}
+
+
+U16 stream_stop(U8 id)
+{
+ return 0;
+}
+
+
+//! @}
+
+#endif // ACCESS_STREAM == ENABLED
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h
new file mode 100644
index 0000000..358bf65
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h
@@ -0,0 +1,369 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Abstraction layer for memory interfaces.
+ *
+ * This module contains the interfaces:
+ * - MEM <-> USB;
+ * - MEM <-> RAM;
+ * - MEM <-> MEM.
+ *
+ * This module may be configured and expanded to support the following features:
+ * - write-protected globals;
+ * - password-protected data;
+ * - specific features;
+ * - etc.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CTRL_ACCESS_H_
+#define _CTRL_ACCESS_H_
+
+#include "compiler.h"
+#include "conf_access.h"
+
+
+//! Status returned by CTRL_ACCESS interfaces.
+typedef enum
+{
+ CTRL_GOOD = PASS, //!< Success, memory ready.
+ CTRL_FAIL = FAIL, //!< An error occurred.
+ CTRL_NO_PRESENT = FAIL + 1, //!< Memory unplugged.
+ CTRL_BUSY = FAIL + 2 //!< Memory not initialized or changed.
+} Ctrl_status;
+
+
+// FYI: Each Logical Unit Number (LUN) corresponds to a memory.
+
+// Check LUN defines.
+#ifndef LUN_0
+ #error LUN_0 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_1
+ #error LUN_1 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_2
+ #error LUN_2 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_3
+ #error LUN_3 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_4
+ #error LUN_4 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_5
+ #error LUN_5 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_6
+ #error LUN_6 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_7
+ #error LUN_7 must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+#ifndef LUN_USB
+ #error LUN_USB must be defined as ENABLE or DISABLE in conf_access.h
+#endif
+
+/*! \name LUN IDs
+ */
+//! @{
+#define LUN_ID_0 (0) //!< First static LUN.
+#define LUN_ID_1 (LUN_ID_0 + LUN_0)
+#define LUN_ID_2 (LUN_ID_1 + LUN_1)
+#define LUN_ID_3 (LUN_ID_2 + LUN_2)
+#define LUN_ID_4 (LUN_ID_3 + LUN_3)
+#define LUN_ID_5 (LUN_ID_4 + LUN_4)
+#define LUN_ID_6 (LUN_ID_5 + LUN_5)
+#define LUN_ID_7 (LUN_ID_6 + LUN_6)
+#define MAX_LUN (LUN_ID_7 + LUN_7) //!< Number of static LUNs.
+#define LUN_ID_USB (MAX_LUN) //!< First dynamic LUN (USB host mass storage).
+//! @}
+
+
+// Include LUN header files.
+#if LUN_0 == ENABLE
+ #include LUN_0_INCLUDE
+#endif
+#if LUN_1 == ENABLE
+ #include LUN_1_INCLUDE
+#endif
+#if LUN_2 == ENABLE
+ #include LUN_2_INCLUDE
+#endif
+#if LUN_3 == ENABLE
+ #include LUN_3_INCLUDE
+#endif
+#if LUN_4 == ENABLE
+ #include LUN_4_INCLUDE
+#endif
+#if LUN_5 == ENABLE
+ #include LUN_5_INCLUDE
+#endif
+#if LUN_6 == ENABLE
+ #include LUN_6_INCLUDE
+#endif
+#if LUN_7 == ENABLE
+ #include LUN_7_INCLUDE
+#endif
+#if LUN_USB == ENABLE
+ #include LUN_USB_INCLUDE
+#endif
+
+
+// Check the configuration of write protection in conf_access.h.
+#ifndef GLOBAL_WR_PROTECT
+ #error GLOBAL_WR_PROTECT must be defined as ENABLED or DISABLED in conf_access.h
+#endif
+
+
+#if GLOBAL_WR_PROTECT == ENABLED
+
+//! Write protect.
+extern Bool g_wr_protect;
+
+#endif
+
+
+/*! \name Control Interface
+ */
+//! @{
+
+#ifdef FREERTOS_USED
+
+/*! \brief Initializes the LUN access locker.
+ *
+ * \return \c TRUE if the locker was successfully initialized, else \c FALSE.
+ */
+extern Bool ctrl_access_init(void);
+
+#endif // FREERTOS_USED
+
+/*! \brief Returns the number of LUNs.
+ *
+ * \return Number of LUNs in the system.
+ */
+extern U8 get_nb_lun(void);
+
+/*! \brief Returns the current LUN.
+ *
+ * \return Current LUN.
+ *
+ * \todo Implement.
+ */
+extern U8 get_cur_lun(void);
+
+/*! \brief Tests the memory state and initializes the memory if required.
+ *
+ * The TEST UNIT READY SCSI primary command allows an application client to poll
+ * a LUN until it is ready without having to allocate memory for returned data.
+ *
+ * This command may be used to check the media status of LUNs with removable
+ * media.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return Status.
+ */
+extern Ctrl_status mem_test_unit_ready(U8 lun);
+
+/*! \brief Returns the address of the last valid sector (512 bytes) in the
+ * memory.
+ *
+ * \param lun Logical Unit Number.
+ * \param u32_nb_sector Pointer to the address of the last valid sector.
+ *
+ * \return Status.
+ */
+extern Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector);
+
+/*! \brief Returns the size of the physical sector.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return Sector size (unit: 512 bytes).
+ */
+extern U8 mem_sector_size(U8 lun);
+
+/*! \brief Returns the write-protection state of the memory.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return \c TRUE if the memory is write-protected, else \c FALSE.
+ *
+ * \note Only used by removable memories with hardware-specific write
+ * protection.
+ */
+extern Bool mem_wr_protect(U8 lun);
+
+/*! \brief Tells whether the memory is removable.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return \c TRUE if the memory is removable, else \c FALSE.
+ */
+extern Bool mem_removal(U8 lun);
+
+/*! \brief Returns a pointer to the LUN name.
+ *
+ * \param lun Logical Unit Number.
+ *
+ * \return Pointer to the LUN name string.
+ */
+extern const char *mem_name(U8 lun);
+
+//! @}
+
+
+#if ACCESS_USB == ENABLED
+
+/*! \name MEM <-> USB Interface
+ */
+//! @{
+
+/*! \brief Tranfers data from the memory to USB.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to read.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector);
+
+/*! \brief Tranfers data from USB to the memory.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to write.
+ * \param nb_sector Number of sectors to transfer.
+ *
+ * \return Status.
+ */
+extern Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector);
+
+//! @}
+
+#endif // ACCESS_USB == ENABLED
+
+
+#if ACCESS_MEM_TO_RAM == ENABLED
+
+/*! \name MEM <-> RAM Interface
+ */
+//! @{
+
+/*! \brief Copies 1 data sector from the memory to RAM.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to read.
+ * \param ram Pointer to RAM buffer to write.
+ *
+ * \return Status.
+ */
+extern Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram);
+
+/*! \brief Copies 1 data sector from RAM to the memory.
+ *
+ * \param lun Logical Unit Number.
+ * \param addr Address of first memory sector to write.
+ * \param ram Pointer to RAM buffer to read.
+ *
+ * \return Status.
+ */
+extern Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram);
+
+//! @}
+
+#endif // ACCESS_MEM_TO_RAM == ENABLED
+
+
+#if ACCESS_STREAM == ENABLED
+
+/*! \name Streaming MEM <-> MEM Interface
+ */
+//! @{
+
+//! Erroneous streaming data transfer ID.
+#define ID_STREAM_ERR 0xFF
+
+ #if ACCESS_MEM_TO_MEM == ENABLED
+
+/*! \brief Copies data from one memory to another.
+ *
+ * \param src_lun Source Logical Unit Number.
+ * \param src_addr Source address of first memory sector to read.
+ * \param dest_lun Destination Logical Unit Number.
+ * \param dest_addr Destination address of first memory sector to write.
+ * \param nb_sector Number of sectors to copy.
+ *
+ * \return Status.
+ */
+extern Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector);
+
+ #endif // ACCESS_MEM_TO_MEM == ENABLED
+
+/*! \brief Returns the state of a streaming data transfer.
+ *
+ * \param id Transfer ID.
+ *
+ * \return Status.
+ *
+ * \todo Implement.
+ */
+extern Ctrl_status stream_state(U8 id);
+
+/*! \brief Stops a streaming data transfer.
+ *
+ * \param id Transfer ID.
+ *
+ * \return Number of remaining sectors.
+ *
+ * \todo Implement.
+ */
+extern U16 stream_stop(U8 id);
+
+//! @}
+
+#endif // ACCESS_STREAM == ENABLED
+
+
+#endif // _CTRL_ACCESS_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c
new file mode 100644
index 0000000..c7c0a03
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c
@@ -0,0 +1,119 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Macros and functions dedicated to debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "debug.h"
+
+
+#if (defined __GNUC__)
+# include "malloc.h"
+
+U32 get_heap_curr_used_size( void )
+{
+ struct mallinfo my_info=mallinfo();
+ return my_info.uordblks;
+}
+
+U32 get_heap_total_used_size( void )
+{
+ struct mallinfo my_info=mallinfo();
+ return my_info.arena;
+}
+#endif
+
+U32 get_heap_free_size( void )
+{
+ U32 high_mark= AVR32_SRAM_SIZE;
+ U32 low_mark = 0;
+ U32 size ;
+ void* p_mem;
+
+ size = (high_mark + low_mark)/2;
+
+ do
+ {
+ p_mem = malloc(size);
+ if( p_mem != NULL)
+ { // Can allocate memory
+ free(p_mem);
+ low_mark = size;
+ }
+ else
+ { // Can not allocate memory
+ high_mark = size;
+ }
+
+ size = (high_mark + low_mark)/2;
+ }
+ while( (high_mark-low_mark) >1 );
+
+ return size;
+}
+
+static void* round_trace_pbuf;
+static U32 round_trace_size;
+
+void uc3_round_trace_init(void* buf, U32 size)
+{
+ round_trace_pbuf = buf;
+ (*(U32*)round_trace_pbuf)=(U32)buf+4;
+ round_trace_size = size;
+}
+
+void uc3_round_trace(U32 val)
+{
+ //Disable_global_interrupt();
+
+ U32* p_wr = (U32*)(*(U32*)round_trace_pbuf);
+ *p_wr = val;
+ p_wr++;
+ if( ((U32)p_wr % round_trace_size) ==0 )
+ p_wr= (U32*)round_trace_pbuf+1;
+ *p_wr = 0xdeadbeef;
+ *(U32*)round_trace_pbuf = (U32)p_wr;
+
+ //Enable_global_interrupt();
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h
new file mode 100644
index 0000000..a832d7c
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h
@@ -0,0 +1,116 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Macros and functions dedicated to debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _DEBUG_H_
+#define _DEBUG_H_
+
+#include "stringz.h"
+
+/*! \brief These macros are used to add traces memory.
+ *
+ * First, initialise the trace with Uc3_trace_init(pointer), giving the start address
+ * of the memory location where will be stored the trace.
+ * Use Uc3_trace(something) to store "something" into the memory. The end of the trace
+ * is signaled by the "0xdeadbeef" pattern.
+ */
+#define Uc3_trace_init(debug_addr) \
+ *(U32*)(debug_addr)=debug_addr+4
+
+#define Uc3_trace(debug_addr, x) \
+ *(U32*)(*(U32*)(debug_addr) ) = (U32)(x) ;\
+ *(U32*)(*(U32*)(debug_addr)+4) = 0xdeadbeef ;\
+ *(U32*)(debug_addr ) = *(U32*)(debug_addr)+4
+
+/*! \brief This macro is used to insert labels into assembly output.
+ *
+ */
+#define Insert_label(name) \
+ __asm__ __volatile__ (STRINGZ(name)":");
+
+#if (defined __GNUC__)
+/*! \brief Returns the number of total of used bytes allocated from the HEAP.
+ *
+ * \retval total number of used bytes.
+ */
+U32 get_heap_total_used_size( void );
+
+/*! \brief Returns the number of bytes currently used from the HEAP.
+ *
+ * \retval total number of used bytes.
+ */
+U32 get_heap_curr_used_size( void );
+#endif
+
+/*! \brief Returns the number of free bytes in the HEAP.
+ *
+ * This funtion tries to allocate the maximum number of bytes by dichotomical method.
+ *
+ * \retval number of free bytes.
+ */
+extern U32 get_heap_free_size( void );
+
+/*! \name Traces function using a round buffer
+ */
+//! @{
+
+/*! \brief Initialize the trace using a round buffer.
+ *
+ * \param buf Base address of the buffer used for the trace.
+ * \param size Size of the round buffer. Must be a power of 2.
+ */
+void uc3_round_trace_init(void* buf, U32 size);
+
+/*! \brief Trace a data in the round buffer.
+ *
+ * The end of the trace is signaled by the "0xdeadbeef" pattern.
+ * \param val Data to trace;
+ */
+void uc3_round_trace(U32 val);
+
+//! @}
+
+
+#endif // _DEBUG_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c
new file mode 100644
index 0000000..99e9274
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c
@@ -0,0 +1,215 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Strings and integers print module for debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include "compiler.h"
+#include "gpio.h"
+#include "usart.h"
+#include "print_funcs.h"
+
+
+//! ASCII representation of hexadecimal digits.
+static const char HEX_DIGITS[16] = "0123456789ABCDEF";
+
+
+void init_dbg_rs232(long pba_hz)
+{
+ init_dbg_rs232_ex(DBG_USART_BAUDRATE, pba_hz);
+}
+
+
+void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz)
+{
+ static const gpio_map_t DBG_USART_GPIO_MAP =
+ {
+ {DBG_USART_RX_PIN, DBG_USART_RX_FUNCTION},
+ {DBG_USART_TX_PIN, DBG_USART_TX_FUNCTION}
+ };
+
+ // Options for debug USART.
+ usart_options_t dbg_usart_options =
+ {
+ .baudrate = baudrate,
+ .charlength = 8,
+ .paritytype = USART_NO_PARITY,
+ .stopbits = USART_1_STOPBIT,
+ .channelmode = USART_NORMAL_CHMODE
+ };
+
+ // Setup GPIO for debug USART.
+ gpio_enable_module(DBG_USART_GPIO_MAP,
+ sizeof(DBG_USART_GPIO_MAP) / sizeof(DBG_USART_GPIO_MAP[0]));
+
+ // Initialize it in RS232 mode.
+ usart_init_rs232(DBG_USART, &dbg_usart_options, pba_hz);
+}
+
+
+void print_dbg(const char *str)
+{
+ // Redirection to the debug USART.
+ print(DBG_USART, str);
+}
+
+
+void print_dbg_char(int c)
+{
+ // Redirection to the debug USART.
+ print_char(DBG_USART, c);
+}
+
+
+void print_dbg_ulong(unsigned long n)
+{
+ // Redirection to the debug USART.
+ print_ulong(DBG_USART, n);
+}
+
+
+void print_dbg_char_hex(unsigned char n)
+{
+ // Redirection to the debug USART.
+ print_char_hex(DBG_USART, n);
+}
+
+
+void print_dbg_short_hex(unsigned short n)
+{
+ // Redirection to the debug USART.
+ print_short_hex(DBG_USART, n);
+}
+
+
+void print_dbg_hex(unsigned long n)
+{
+ // Redirection to the debug USART.
+ print_hex(DBG_USART, n);
+}
+
+
+void print(volatile avr32_usart_t *usart, const char *str)
+{
+ // Invoke the USART driver to transmit the input string with the given USART.
+ usart_write_line(usart, str);
+}
+
+
+void print_char(volatile avr32_usart_t *usart, int c)
+{
+ // Invoke the USART driver to transmit the input character with the given USART.
+ usart_putchar(usart, c);
+}
+
+
+void print_ulong(volatile avr32_usart_t *usart, unsigned long n)
+{
+ char tmp[11];
+ int i = sizeof(tmp) - 1;
+
+ // Convert the given number to an ASCII decimal representation.
+ tmp[i] = '\0';
+ do
+ {
+ tmp[--i] = '0' + n % 10;
+ n /= 10;
+ } while (n);
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp + i);
+}
+
+
+void print_char_hex(volatile avr32_usart_t *usart, unsigned char n)
+{
+ char tmp[3];
+ int i;
+
+ // Convert the given number to an ASCII hexadecimal representation.
+ tmp[2] = '\0';
+ for (i = 1; i >= 0; i--)
+ {
+ tmp[i] = HEX_DIGITS[n & 0xF];
+ n >>= 4;
+ }
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp);
+}
+
+
+void print_short_hex(volatile avr32_usart_t *usart, unsigned short n)
+{
+ char tmp[5];
+ int i;
+
+ // Convert the given number to an ASCII hexadecimal representation.
+ tmp[4] = '\0';
+ for (i = 3; i >= 0; i--)
+ {
+ tmp[i] = HEX_DIGITS[n & 0xF];
+ n >>= 4;
+ }
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp);
+}
+
+
+void print_hex(volatile avr32_usart_t *usart, unsigned long n)
+{
+ char tmp[9];
+ int i;
+
+ // Convert the given number to an ASCII hexadecimal representation.
+ tmp[8] = '\0';
+ for (i = 7; i >= 0; i--)
+ {
+ tmp[i] = HEX_DIGITS[n & 0xF];
+ n >>= 4;
+ }
+
+ // Transmit the resulting string with the given USART.
+ print(usart, tmp);
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h
new file mode 100644
index 0000000..38f931d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h
@@ -0,0 +1,294 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Strings and integers print module for debug purposes.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USART module can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _PRINT_FUNCS_H_
+#define _PRINT_FUNCS_H_
+
+#include <avr32/io.h>
+#include "board.h"
+
+
+/*! \name USART Settings for the Debug Module
+ */
+//! @{
+#if BOARD == EVK1100
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == EVK1101
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == UC3C_EK
+# define DBG_USART (&AVR32_USART2)
+# define DBG_USART_RX_PIN AVR32_USART2_RXD_0_1_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART2_RXD_0_1_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART2_TXD_0_1_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART2_TXD_0_1_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == EVK1104
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == EVK1105
+# define DBG_USART (&AVR32_USART0)
+# define DBG_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+#elif BOARD == STK1000
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION
+# define DBG_USART_BAUDRATE 115200
+#elif BOARD == NGW100
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION
+# define DBG_USART_BAUDRATE 115200
+#elif BOARD == STK600_RCUC3L0
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_1_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_1_FUNCTION
+// For the RX pin, connect STK600.PORTE.PE3 to STK600.RS232 SPARE.RXD
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_1_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_1_FUNCTION
+// For the TX pin, connect STK600.PORTE.PE2 to STK600.RS232 SPARE.TXD
+# define DBG_USART_BAUDRATE 57600
+# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
+#elif BOARD == UC3L_EK
+# define DBG_USART (&AVR32_USART3)
+# define DBG_USART_RX_PIN AVR32_USART3_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART3_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART3_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART3_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+# define DBG_USART_CLOCK_MASK AVR32_USART3_CLK_PBA
+#elif BOARD == ARDUINO
+# define DBG_USART (&AVR32_USART1)
+# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
+# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
+# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
+# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
+# define DBG_USART_BAUDRATE 57600
+# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
+#endif
+
+#if !defined(DBG_USART) || \
+ !defined(DBG_USART_RX_PIN) || \
+ !defined(DBG_USART_RX_FUNCTION) || \
+ !defined(DBG_USART_TX_PIN) || \
+ !defined(DBG_USART_TX_FUNCTION) || \
+ !defined(DBG_USART_BAUDRATE)
+# error The USART configuration to use for debug on your board is missing
+#endif
+//! @}
+
+/*! \name VT100 Common Commands
+ */
+//! @{
+#define CLEARSCR "\x1B[2J\x1B[;H" //!< Clear screen.
+#define CLEAREOL "\x1B[K" //!< Clear end of line.
+#define CLEAREOS "\x1B[J" //!< Clear end of screen.
+#define CLEARLCR "\x1B[0K" //!< Clear line cursor right.
+#define CLEARLCL "\x1B[1K" //!< Clear line cursor left.
+#define CLEARELN "\x1B[2K" //!< Clear entire line.
+#define CLEARCDW "\x1B[0J" //!< Clear cursor down.
+#define CLEARCUP "\x1B[1J" //!< Clear cursor up.
+#define GOTOYX "\x1B[%.2d;%.2dH" //!< Set cursor to (y, x).
+#define INSERTMOD "\x1B[4h" //!< Insert mode.
+#define OVERWRITEMOD "\x1B[4l" //!< Overwrite mode.
+#define DELAFCURSOR "\x1B[K" //!< Erase from cursor to end of line.
+#define CRLF "\r\n" //!< Carriage Return + Line Feed.
+//! @}
+
+/*! \name VT100 Cursor Commands
+ */
+//! @{
+#define CURSON "\x1B[?25h" //!< Show cursor.
+#define CURSOFF "\x1B[?25l" //!< Hide cursor.
+//! @}
+
+/*! \name VT100 Character Commands
+ */
+//! @{
+#define NORMAL "\x1B[0m" //!< Normal.
+#define BOLD "\x1B[1m" //!< Bold.
+#define UNDERLINE "\x1B[4m" //!< Underline.
+#define BLINKING "\x1B[5m" //!< Blink.
+#define INVVIDEO "\x1B[7m" //!< Inverse video.
+//! @}
+
+/*! \name VT100 Color Commands
+ */
+//! @{
+#define CL_BLACK "\033[22;30m" //!< Black.
+#define CL_RED "\033[22;31m" //!< Red.
+#define CL_GREEN "\033[22;32m" //!< Green.
+#define CL_BROWN "\033[22;33m" //!< Brown.
+#define CL_BLUE "\033[22;34m" //!< Blue.
+#define CL_MAGENTA "\033[22;35m" //!< Magenta.
+#define CL_CYAN "\033[22;36m" //!< Cyan.
+#define CL_GRAY "\033[22;37m" //!< Gray.
+#define CL_DARKGRAY "\033[01;30m" //!< Dark gray.
+#define CL_LIGHTRED "\033[01;31m" //!< Light red.
+#define CL_LIGHTGREEN "\033[01;32m" //!< Light green.
+#define CL_YELLOW "\033[01;33m" //!< Yellow.
+#define CL_LIGHTBLUE "\033[01;34m" //!< Light blue.
+#define CL_LIGHTMAGENTA "\033[01;35m" //!< Light magenta.
+#define CL_LIGHTCYAN "\033[01;36m" //!< Light cyan.
+#define CL_WHITE "\033[01;37m" //!< White.
+//! @}
+
+
+/*! \brief Sets up DBG_USART with 8N1 at DBG_USART_BAUDRATE.
+ *
+ * \param pba_hz PBA clock frequency (Hz).
+ */
+extern void init_dbg_rs232(long pba_hz);
+
+/*! \brief Sets up DBG_USART with 8N1 at a given baud rate.
+ *
+ * \param baudrate Baud rate to set DBG_USART to.
+ * \param pba_hz PBA clock frequency (Hz).
+ */
+extern void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz);
+
+/*! \brief Prints a string of characters to DBG_USART.
+ *
+ * \param str The string of characters to print.
+ */
+extern void print_dbg(const char *str);
+
+/*! \brief Prints a character to DBG_USART.
+ *
+ * \param c The character to print.
+ */
+extern void print_dbg_char(int c);
+
+/*! \brief Prints an integer to DBG_USART in a decimal representation.
+ *
+ * \param n The integer to print.
+ */
+extern void print_dbg_ulong(unsigned long n);
+
+/*! \brief Prints a char to DBG_USART in an hexadecimal representation.
+ *
+ * \param n The char to print.
+ */
+extern void print_dbg_char_hex(unsigned char n);
+
+/*! \brief Prints a short integer to DBG_USART in an hexadecimal representation.
+ *
+ * \param n The short integer to print.
+ */
+extern void print_dbg_short_hex(unsigned short n);
+
+/*! \brief Prints an integer to DBG_USART in an hexadecimal representation.
+ *
+ * \param n The integer to print.
+ */
+extern void print_dbg_hex(unsigned long n);
+
+/*! \brief Prints a string of characters to a given USART.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param str The string of characters to print.
+ */
+extern void print(volatile avr32_usart_t *usart, const char *str);
+
+/*! \brief Prints a character to a given USART.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param c The character to print.
+ */
+extern void print_char(volatile avr32_usart_t *usart, int c);
+
+/*! \brief Prints an integer to a given USART in a decimal representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The integer to print.
+ */
+extern void print_ulong(volatile avr32_usart_t *usart, unsigned long n);
+
+/*! \brief Prints a char to a given USART in an hexadecimal representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The char to print.
+ */
+extern void print_char_hex(volatile avr32_usart_t *usart, unsigned char n);
+
+/*! \brief Prints a short integer to a given USART in an hexadecimal
+ * representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The short integer to print.
+ */
+extern void print_short_hex(volatile avr32_usart_t *usart, unsigned short n);
+
+/*! \brief Prints an integer to a given USART in an hexadecimal representation.
+ *
+ * \param usart Base address of the USART instance to print to.
+ * \param n The integer to print.
+ */
+extern void print_hex(volatile avr32_usart_t *usart, unsigned long n);
+
+
+#endif // _PRINT_FUNCS_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h
new file mode 100644
index 0000000..e3ebea7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h
@@ -0,0 +1,63 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS CPU include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_CPU_H__
+#define __AVR32_NEWLIB_ADDONS_CPU_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+#define CPU_HZ get_cpu_hz()
+
+void udelay(unsigned long usec);
+void set_cpu_hz(unsigned int clk_hz);
+unsigned int get_cpu_hz();
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h
new file mode 100644
index 0000000..31caf13
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h
@@ -0,0 +1,120 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS exceptions include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__
+#define __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+/*
+ Exception vector offsets
+*/
+#define EVBA_UNRECOVERABLE 0x000
+#define EVBA_TLB_MULTIPLE 0x004
+#define EVBA_BUS_ERROR_DATA 0x008
+#define EVBA_BUS_ERROR_INSTR 0x00C
+#define EVBA_NMI 0x010
+#define EVBA_INSTR_ADDR 0x014
+#define EVBA_ITLB_MISS 0x050
+#define EVBA_ITLB_PROT 0x018
+#define EVBA_BREAKPOINT 0x01C
+#define EVBA_ILLEGAL_OPCODE 0x020
+#define EVBA_UNIMPLEMENTED 0x024
+#define EVBA_PRIVILEGE_VIOL 0x028
+#define EVBA_FLOATING_POINT 0x02C
+#define EVBA_COP_ABSENT 0x030
+#define EVBA_SCALL 0x100
+#define EVBA_DATA_ADDR_R 0x034
+#define EVBA_DATA_ADDR_W 0x038
+#define EVBA_DTLB_MISS_R 0x060
+#define EVBA_DTLB_MISS_W 0x070
+#define EVBA_DTLB_PROT_R 0x03C
+#define EVBA_DTLB_PROT_W 0x040
+#define EVBA_DTLB_MODIFIED 0x044
+
+
+/*
+ Define the form of the function used when registering exceptions.
+ The function should return the address which the exception should
+ return to after the exception processing.
+*/
+
+typedef unsigned int (*__exception_handler)(int /*evba_offset*/, int /*return address*/);
+
+/*
+ Define the form of the function used when registering a scall handler.
+*/
+
+typedef void (*__scall_handler)(int /*code*/, int /*p1*/, int /*p2*/
+ , int /*p3*/, int /*p4*/);
+
+/*
+ Function for registering an exception handler for the exception with
+ offset given by evba_offset.
+*/
+void _register_exception_handler(__exception_handler handler, int evba_offset);
+
+/*
+ Function for registering a scall handler which can be a arbirary
+ function which uses r8-r12 for parameters.
+*/
+void _register_scall_handler(__scall_handler handler);
+
+/*
+ Initialize exceptions. Must be called before registering exception handlers
+ and needed to enable exceptions. 'evba' is the pointer to the exception
+ vector. 'handler_table' is a pointer to an array where the pointers to
+ the exception handlers are stored. This array must be at least 0x104 bytes
+ and word aligned.
+*/
+void init_exceptions(void *evba, void *handler_table);
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h
new file mode 100644
index 0000000..76d81f7
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h
@@ -0,0 +1,82 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS interrupts include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__
+#define __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+#define INT_GRPS 64
+#define INT_LINES 32
+#define INTPR_BASE (__intc_base__ + 0x0000)
+#define INTREQ_BASE (__intc_base__ + 64*4)
+#define INTCAUSE_BASE (__intc_base__ + 2*64*4)
+
+//Register offsets
+#define INTLEVEL 30
+#define AUTOVECTOR 0
+#define AUTOVECTOR_BITS 14
+
+//Priorities
+#define INT0 0
+#define INT1 1
+#define INT2 2
+#define INT3 3
+
+
+typedef void (*__newlib_int_handler)(int /* int_grp*/, void */*user_handle*/);
+
+__newlib_int_handler register_interrupt(__newlib_int_handler handler, int int_grp, int line, int priority,
+ .../* void *user_handle*/);
+void init_interrupts();
+void set_interrupts_base(void *base);
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h
new file mode 100644
index 0000000..a725769
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h
@@ -0,0 +1,174 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS miscellaneous macros include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_IO_H__
+#define __AVR32_NEWLIB_ADDONS_IO_H__
+
+#include <_ansi.h>
+
+_BEGIN_STD_C
+
+typedef char u8;
+typedef unsigned int u32;
+
+#define __raw_writeb(v,a) (*(volatile unsigned char *)(a) = (v))
+#define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v))
+#define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v))
+
+#define __raw_readb(a) (*(volatile unsigned char *)(a))
+#define __raw_readw(a) (*(volatile unsigned short *)(a))
+#define __raw_readl(a) (*(volatile unsigned int *)(a))
+
+/* As long as I/O is only performed in P4 (or possibly P3), we're safe */
+#define writeb(v,a) __raw_writeb(v,a)
+#define writew(v,a) __raw_writew(v,a)
+#define writel(v,a) __raw_writel(v,a)
+
+#define readb(a) __raw_readb(a)
+#define readw(a) __raw_readw(a)
+#define readl(a) __raw_readl(a)
+
+/* Memory segments when segmentation is enabled */
+#define P0SEG 0x00000000
+#define P1SEG 0x80000000
+#define P2SEG 0xa0000000
+#define P3SEG 0xc0000000
+#define P4SEG 0xe0000000
+
+/* Returns the privileged segment base of a given address */
+#define PXSEG(a) (((unsigned long)(a)) & 0xe0000000)
+
+/* Returns the physical address of a PnSEG (n=1,2) address */
+#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff)
+
+/*
+ * Map an address to a certain privileged segment
+ */
+#define P1SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P1SEG))
+#define P2SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P2SEG))
+#define P3SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG))
+#define P4SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG))
+
+
+#define cached(addr) P1SEGADDR(addr)
+#define uncached(addr) P2SEGADDR(addr)
+#define physaddr(addr) PHYSADDR(addr)
+
+#define BF(field, value) \
+ ({ union { \
+ struct { \
+ unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long __val: field ## _SIZE ; \
+ }; \
+ unsigned long __ul; \
+ } __tmp; \
+ __tmp.__ul = 0; \
+ __tmp.__val = value; \
+ __tmp.__ul;})
+
+#define BF_D(field, value) \
+ ({ union { \
+ struct { \
+ unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long long __val: field ## _SIZE ; \
+ }; \
+ unsigned long long __ul; \
+ } __tmp; \
+ __tmp.__ul = 0; \
+ __tmp.__val = value; \
+ __tmp.__ul;})
+
+#define BFINS(var, field, value) \
+ { union {\
+ struct { \
+ unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long __val: field ## _SIZE ; \
+ }; \
+ unsigned long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val = value; \
+ var = __tmp.__ul;}
+
+#define BFEXT(var, field) \
+ ({ union {\
+ struct { \
+ unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long __val: field ## _SIZE ; \
+ }; \
+ unsigned long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val; })
+
+#define BFINS_D(var, field, value) \
+ { union {\
+ struct { \
+ unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long long __val: field ## _SIZE ; \
+ }; \
+ unsigned long long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val = value; \
+ var = __tmp.__ul;}
+
+#define BFEXT_D(var, field) \
+ ({ union {\
+ struct { \
+ unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \
+ unsigned long long __val: field ## _SIZE ; \
+ }; \
+ unsigned long long __ul; \
+ } __tmp; \
+ __tmp.__ul = var; \
+ __tmp.__val; })
+
+
+_END_STD_C
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h
new file mode 100644
index 0000000..6c4697d
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h
@@ -0,0 +1,208 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief NEWLIB_ADDONS USART include file for AVR32.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef __AVR32_NEWLIB_ADDONS_USART_H__
+#define __AVR32_NEWLIB_ADDONS_USART_H__
+
+#include <_ansi.h>
+
+#include "nlao_io.h"
+
+_BEGIN_STD_C
+
+struct usart3 {
+ volatile u32 us_cr;
+ volatile u32 us_mr;
+ volatile u32 us_ier;
+ volatile u32 us_idr;
+ volatile u32 us_imr;
+ volatile u32 us_csr;
+ volatile u32 us_rhr;
+ volatile u32 us_thr;
+ volatile u32 us_brgr;
+ volatile u32 us_rtor;
+ volatile u32 us_ttgr;
+ volatile u32 us_reserved[5];
+ volatile u32 us_fidi;
+ volatile u32 us_ner;
+ volatile u32 us_xxr;
+ volatile u32 us_if;
+};
+
+/* Register offsets */
+#define US_CR 0x0000
+#define US_MR 0x0004
+#define US_IER 0x0008
+#define US_IDR 0x000c
+#define US_IMR 0x0010
+#define US_CSR 0x0014
+#define US_RHR 0x0018
+#define US_THR 0x001c
+#define US_BRGR 0x0020
+#define US_RTOR 0x0024
+#define US_TTGR 0x0028
+
+#define US_FIDI 0x0040
+#define US_NER 0x0044
+#define US_XXR 0x0048
+#define US_IF 0x004c
+
+#define US_RPR 0x0100
+#define US_RCR 0x0104
+#define US_TPR 0x0108
+#define US_TCR 0x010c
+#define US_RNPR 0x0110
+#define US_RNCR 0x0114
+#define US_TNPR 0x0118
+#define US_TNCR 0x011c
+#define US_PTCR 0x0120
+#define US_PTSR 0x0124
+
+
+
+
+/* USART3 Control Register */
+#define US_CR_RSTRX (1 << 2)
+#define US_CR_RSTTX (1 << 3)
+#define US_CR_RXEN (1 << 4)
+#define US_CR_RXDIS (1 << 5)
+#define US_CR_TXEN (1 << 6)
+#define US_CR_TXDIS (1 << 7)
+#define US_CR_RSTSTA (1 << 8)
+#define US_CR_STTBRK (1 << 9)
+#define US_CR_STPBRK (1 << 10)
+
+#define US_CR_DTREN (1 << 16)
+#define US_CR_DTRDIS (1 << 17)
+#define US_CR_RTSEN (1 << 18)
+#define US_CR_RTSDIS (1 << 19)
+
+/* USART3 Mode Register */
+#define US_MR_MODE (15 << 0)
+#define US_MR_MODE_NORMAL ( 0 << 0)
+#define US_MR_MODE_HWFLOW ( 2 << 0)
+#define US_MR_CLKS ( 3 << 4)
+#define US_MR_CLKS_CLOCK ( 0 << 4)
+#define US_MR_CLKS_FDIV1 ( 1 << 4)
+#define US_MR_CLKS_SLOW ( 2 << 4)
+#define US_MR_CLKS_EXT ( 3 << 4)
+#define US_MR_CHRL_5BITS ( 0 << 6)
+#define US_MR_CHRL_6BITS ( 1 << 6)
+#define US_MR_CHRL_7BITS ( 2 << 6)
+#define US_MR_CHRL_8BITS ( 3 << 6)
+#define US_MR_SYNC ( 1 << 8)
+#define US_MR_PAR_EVEN ( 0 << 9)
+#define US_MR_PAR_ODD ( 1 << 9)
+#define US_MR_PAR_SPACE ( 2 << 9)
+#define US_MR_PAR_MARK ( 3 << 9)
+#define US_MR_PAR_NONE ( 4 << 9)
+#define US_MR_PAR_MDROP ( 6 << 9)
+#define US_MR_NBSTOP_1BIT ( 0 << 12)
+#define US_MR_NBSTOP_1_5BIT ( 1 << 12)
+#define US_MR_NBSTOP_2BITS ( 2 << 12)
+#define US_MR_OVER ( 1 << 19)
+#define US_MR_OVER_X16 ( 0 << 19)
+#define US_MR_OVER_X8 ( 1 << 19)
+
+/* USART3 Channel Status Register */
+#define US_CSR_RXRDY (1 << 0)
+#define US_CSR_TXRDY (1 << 1)
+#define US_CSR_RXBRK (1 << 2)
+#define US_CSR_ENDRX (1 << 3)
+#define US_CSR_ENDTX (1 << 4)
+
+
+#define US_CSR_OVRE (1 << 5)
+#define US_CSR_FRAME (1 << 6)
+#define US_CSR_PARE (1 << 7)
+
+#define US_CSR_TXEMPTY (1 << 9)
+
+#define US_CSR_TXBUFE (1 << 11)
+#define US_CSR_RXBUFF (1 << 12)
+#define US_CSR_RIIC (1 << 16)
+#define US_CSR_DSRIC (1 << 17)
+#define US_CSR_DCDIC (1 << 18)
+#define US_CSR_CTSIC (1 << 19)
+#define US_CSR_RI (1 << 20)
+#define US_CSR_DSR (1 << 21)
+#define US_CSR_DCD (1 << 22)
+#define US_CSR_CTS (1 << 23)
+
+/* USART3 Baud Rate Generator Register */
+#define US_BRGR_CD_OFFSET 0
+#define US_BRGR_FP_OFFSET 16
+
+#define US_BRGR_CD_SIZE 16
+#define US_BRGR_FP_SIZE 3
+
+#define US_BRGR_CD (0xFFFF << 0)
+#define US_BRGR_FP ( 7 << 16)
+
+/*USART3 PDC Transfer Control Register */
+#define US_PTCR_RXTEN (1 << 0)
+#define US_PTCR_RXTDIS (1 << 1)
+#define US_PTCR_TXTEN (1 << 8)
+#define US_PTCR_TXTDIS (1 << 9)
+
+/*USART3 PDC Transfer Status Register */
+#define US_PTSR_RXTEN (1 << 0)
+#define US_PTSR_TXTEN (1 << 8)
+
+
+int usart_init(int baudrate);
+void usart_putc(char c);
+void usart_puts(const char *s);
+int usart_getc(void);
+int usart_tstc(void);
+void usart_setbrg(int baudrate, int cpu_clock);
+void set_usart_base(void *usart_base);
+
+
+_END_STD_C
+
+#endif /* MERLIN_USART3_H */
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a
new file mode 100644
index 0000000..aa673ec
Binary files /dev/null and b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a differ
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds
new file mode 100644
index 0000000..59152ac
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds
@@ -0,0 +1,266 @@
+/******************************************************************************
+ * AVR32 AT32UC3A0512 GNU LD script file.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: AVR32 AT32UC3A0512
+ *
+ * - author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
+
+OUTPUT_ARCH(avr32:uc)
+
+ENTRY(_start)
+
+MEMORY
+{
+ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00080000
+ INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC
+ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200
+}
+
+PHDRS
+{
+ FLASH PT_LOAD;
+ INTRAM_ALIGN PT_NULL;
+ INTRAM_AT_FLASH PT_LOAD;
+ INTRAM PT_NULL;
+ USERPAGE PT_LOAD;
+}
+
+SECTIONS
+{
+ /* If this heap size is selected, all the INTRAM space from the end of the
+ data area to the beginning of the stack will be allocated for the heap. */
+ __max_heap_size__ = -1;
+
+ /* Use a default heap size if heap size was not defined. */
+ __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__;
+
+ /* Use a default stack size if stack size was not defined. */
+ __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K;
+
+ /* Read-only sections, merged into text segment: */
+ PROVIDE (__executable_start = 0x80000000); . = 0x80000000;
+ .interp : { *(.interp) } >FLASH AT>FLASH :FLASH
+ .reset : { *(.reset) } >FLASH AT>FLASH :FLASH
+ .hash : { *(.hash) } >FLASH AT>FLASH :FLASH
+ .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH
+ .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH
+ .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH
+ .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH
+ .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH
+ .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH
+ .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH
+ .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH
+ .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH
+ .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH
+ .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH
+ .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH
+ .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH
+ .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH
+ .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH
+ .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH
+ .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH
+ .init :
+ {
+ KEEP (*(.init))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .plt : { *(.plt) } >FLASH AT>FLASH :FLASH
+ .text :
+ {
+ *(.text .stub .text.* .gnu.linkonce.t.*)
+ KEEP (*(.text.*personality*))
+ /* .gnu.warning sections are handled specially by elf32.em. */
+ *(.gnu.warning)
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .fini :
+ {
+ KEEP (*(.fini))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ PROVIDE (__etext = .);
+ PROVIDE (_etext = .);
+ PROVIDE (etext = .);
+ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH
+ .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH
+ .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH
+ .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH
+ .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH
+ . = ORIGIN(INTRAM);
+ .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN
+ /* Exception handling */
+ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Thread Local Storage sections */
+ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Ensure the __preinit_array_start label is properly aligned. We
+ could instead move the label definition inside the section, but
+ the linker would then create the section even if it turns out to
+ be empty, which isn't pretty. */
+ PROVIDE (__preinit_array_start = ALIGN(32 / 8));
+ .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__preinit_array_end = .);
+ PROVIDE (__init_array_start = .);
+ .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__init_array_end = .);
+ PROVIDE (__fini_array_start = .);
+ .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__fini_array_end = .);
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+ KEEP (*crtbegin*.o(.ctors))
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dtors :
+ {
+ KEEP (*crtbegin*.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data :
+ {
+ *(.data .data.* .gnu.linkonce.d.*)
+ KEEP (*(.gnu.linkonce.d.*personality*))
+ SORT(CONSTRUCTORS)
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (edata = .);
+ __bss_start = .;
+ .bss :
+ {
+ *(.dynbss)
+ *(.bss .bss.* .gnu.linkonce.b.*)
+ *(COMMON)
+ /* Align here to ensure that the .bss section occupies space up to
+ _end. Align after .bss to ensure correct alignment even if the
+ .bss section disappears because there are no input sections. */
+ . = ALIGN(8);
+ } >INTRAM AT>INTRAM :INTRAM
+ . = ALIGN(8);
+ _end = .;
+ PROVIDE (end = .);
+ __heap_start__ = ALIGN(8);
+ .heap :
+ {
+ *(.heap)
+ . = (__heap_size__ == __max_heap_size__) ?
+ ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) :
+ __heap_size__;
+ } >INTRAM AT>INTRAM :INTRAM
+ __heap_end__ = .;
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to the beginning
+ of the section so we begin them at 0. */
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+ .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ :
+ {
+ _stack = .;
+ *(.stack)
+ . = __stack_size__;
+ _estack = .;
+ } >INTRAM AT>INTRAM :INTRAM
+ .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE
+ /DISCARD/ : { *(.note.GNU-stack) }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds
new file mode 100644
index 0000000..a5926d8
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds
@@ -0,0 +1,266 @@
+/******************************************************************************
+ * AVR32 AT32UC3A1256 GNU LD script file.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: AVR32 AT32UC3A1256
+ *
+ * - author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
+
+OUTPUT_ARCH(avr32:uc)
+
+ENTRY(_start)
+
+MEMORY
+{
+ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00040000
+ INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC
+ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200
+}
+
+PHDRS
+{
+ FLASH PT_LOAD;
+ INTRAM_ALIGN PT_NULL;
+ INTRAM_AT_FLASH PT_LOAD;
+ INTRAM PT_NULL;
+ USERPAGE PT_LOAD;
+}
+
+SECTIONS
+{
+ /* If this heap size is selected, all the INTRAM space from the end of the
+ data area to the beginning of the stack will be allocated for the heap. */
+ __max_heap_size__ = -1;
+
+ /* Use a default heap size if heap size was not defined. */
+ __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__;
+
+ /* Use a default stack size if stack size was not defined. */
+ __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K;
+
+ /* Read-only sections, merged into text segment: */
+ PROVIDE (__executable_start = 0x80000000); . = 0x80000000;
+ .interp : { *(.interp) } >FLASH AT>FLASH :FLASH
+ .reset : { *(.reset) } >FLASH AT>FLASH :FLASH
+ .hash : { *(.hash) } >FLASH AT>FLASH :FLASH
+ .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH
+ .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH
+ .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH
+ .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH
+ .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH
+ .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH
+ .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH
+ .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH
+ .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH
+ .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH
+ .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH
+ .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH
+ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH
+ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH
+ .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH
+ .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH
+ .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH
+ .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH
+ .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH
+ .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH
+ .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH
+ .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH
+ .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH
+ .init :
+ {
+ KEEP (*(.init))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .plt : { *(.plt) } >FLASH AT>FLASH :FLASH
+ .text :
+ {
+ *(.text .stub .text.* .gnu.linkonce.t.*)
+ KEEP (*(.text.*personality*))
+ /* .gnu.warning sections are handled specially by elf32.em. */
+ *(.gnu.warning)
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ .fini :
+ {
+ KEEP (*(.fini))
+ } >FLASH AT>FLASH :FLASH =0xd703d703
+ PROVIDE (__etext = .);
+ PROVIDE (_etext = .);
+ PROVIDE (etext = .);
+ .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH
+ .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH
+ .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH
+ .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH
+ .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH
+ .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH
+ . = ORIGIN(INTRAM);
+ .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN
+ /* Exception handling */
+ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Thread Local Storage sections */
+ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ /* Ensure the __preinit_array_start label is properly aligned. We
+ could instead move the label definition inside the section, but
+ the linker would then create the section even if it turns out to
+ be empty, which isn't pretty. */
+ PROVIDE (__preinit_array_start = ALIGN(32 / 8));
+ .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__preinit_array_end = .);
+ PROVIDE (__init_array_start = .);
+ .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__init_array_end = .);
+ PROVIDE (__fini_array_start = .);
+ .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (__fini_array_end = .);
+ .ctors :
+ {
+ /* gcc uses crtbegin.o to find the start of
+ the constructors, so we make sure it is
+ first. Because this is a wildcard, it
+ doesn't matter if the user does not
+ actually link against crtbegin.o; the
+ linker won't look for a file to match a
+ wildcard. The wildcard also means that it
+ doesn't matter which directory crtbegin.o
+ is in. */
+ KEEP (*crtbegin*.o(.ctors))
+ /* We don't want to include the .ctor section from
+ from the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dtors :
+ {
+ KEEP (*crtbegin*.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data :
+ {
+ *(.data .data.* .gnu.linkonce.d.*)
+ KEEP (*(.gnu.linkonce.d.*personality*))
+ SORT(CONSTRUCTORS)
+ } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH
+ PROVIDE (edata = .);
+ __bss_start = .;
+ .bss :
+ {
+ *(.dynbss)
+ *(.bss .bss.* .gnu.linkonce.b.*)
+ *(COMMON)
+ /* Align here to ensure that the .bss section occupies space up to
+ _end. Align after .bss to ensure correct alignment even if the
+ .bss section disappears because there are no input sections. */
+ . = ALIGN(8);
+ } >INTRAM AT>INTRAM :INTRAM
+ . = ALIGN(8);
+ _end = .;
+ PROVIDE (end = .);
+ __heap_start__ = ALIGN(8);
+ .heap :
+ {
+ *(.heap)
+ . = (__heap_size__ == __max_heap_size__) ?
+ ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) :
+ __heap_size__;
+ } >INTRAM AT>INTRAM :INTRAM
+ __heap_end__ = .;
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to the beginning
+ of the section so we begin them at 0. */
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+ .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ :
+ {
+ _stack = .;
+ *(.stack)
+ . = __stack_size__;
+ _estack = .;
+ } >INTRAM AT>INTRAM :INTRAM
+ .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE
+ /DISCARD/ : { *(.note.GNU-stack) }
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h
new file mode 100644
index 0000000..41163b6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h
@@ -0,0 +1,328 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor macro repeating utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _MREPEAT_H_
+#define _MREPEAT_H_
+
+#include "preprocessor.h"
+
+
+//! Maximal number of repetitions supported by MREPEAT.
+#define MREPEAT_LIMIT 256
+
+/*! \brief Macro repeat.
+ *
+ * This macro represents a horizontal repetition construct.
+ *
+ * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT.
+ * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with
+ * the current repetition number and the auxiliary data argument.
+ * \param data Auxiliary data passed to macro.
+ *
+ * \return <tt>macro(0, data) macro(1, data) ... macro(count - 1, data)</tt>
+ */
+#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data)
+
+#define MREPEAT0( macro, data)
+#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data)
+#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data)
+#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data)
+#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data)
+#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data)
+#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data)
+#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data)
+#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data)
+#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data)
+#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data)
+#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data)
+#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data)
+#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data)
+#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data)
+#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data)
+#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data)
+#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data)
+#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data)
+#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data)
+#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data)
+#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data)
+#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data)
+#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data)
+#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data)
+#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data)
+#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data)
+#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data)
+#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data)
+#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data)
+#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data)
+#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data)
+#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data)
+#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data)
+#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data)
+#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data)
+#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data)
+#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data)
+#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data)
+#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data)
+#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data)
+#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data)
+#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data)
+#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data)
+#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data)
+#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data)
+#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data)
+#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data)
+#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data)
+#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data)
+#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data)
+#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data)
+#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data)
+#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data)
+#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data)
+#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data)
+#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data)
+#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data)
+#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data)
+#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data)
+#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data)
+#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data)
+#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data)
+#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data)
+#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data)
+#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data)
+#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data)
+#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data)
+#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data)
+#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data)
+#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data)
+#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data)
+#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data)
+#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data)
+#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data)
+#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data)
+#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data)
+#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data)
+#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data)
+#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data)
+#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data)
+#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data)
+#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data)
+#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data)
+#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data)
+#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data)
+#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data)
+#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data)
+#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data)
+#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data)
+#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data)
+#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data)
+#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data)
+#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data)
+#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data)
+#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data)
+#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data)
+#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data)
+#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data)
+#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data)
+#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data)
+#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data)
+#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data)
+#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data)
+#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data)
+#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data)
+#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data)
+#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data)
+#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data)
+#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data)
+#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data)
+#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data)
+#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data)
+#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data)
+#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data)
+#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data)
+#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data)
+#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data)
+#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data)
+#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data)
+#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data)
+#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data)
+#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data)
+#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data)
+#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data)
+#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data)
+#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data)
+#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data)
+#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data)
+#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data)
+#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data)
+#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data)
+#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data)
+#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data)
+#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data)
+#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data)
+#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data)
+#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data)
+#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data)
+#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data)
+#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data)
+#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data)
+#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data)
+#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data)
+#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data)
+#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data)
+#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data)
+#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data)
+#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data)
+#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data)
+#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data)
+#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data)
+#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data)
+#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data)
+#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data)
+#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data)
+#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data)
+#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data)
+#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data)
+#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data)
+#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data)
+#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data)
+#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data)
+#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data)
+#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data)
+#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data)
+#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data)
+#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data)
+#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data)
+#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data)
+#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data)
+#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data)
+#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data)
+#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data)
+#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data)
+#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data)
+#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data)
+#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data)
+#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data)
+#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data)
+#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data)
+#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data)
+#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data)
+#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data)
+#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data)
+#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data)
+#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data)
+#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data)
+#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data)
+#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data)
+#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data)
+#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data)
+#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data)
+#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data)
+#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data)
+#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data)
+#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data)
+#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data)
+#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data)
+#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data)
+#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data)
+#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data)
+#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data)
+#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data)
+#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data)
+#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data)
+#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data)
+#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data)
+#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data)
+#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data)
+#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data)
+#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data)
+#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data)
+#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data)
+#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data)
+#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data)
+#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data)
+#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data)
+#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data)
+#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data)
+#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data)
+#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data)
+#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data)
+#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data)
+#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data)
+#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data)
+#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data)
+#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data)
+#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data)
+#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data)
+#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data)
+#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data)
+#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data)
+#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data)
+#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data)
+#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data)
+#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data)
+#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data)
+#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data)
+#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data)
+#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data)
+#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data)
+#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data)
+#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data)
+#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data)
+#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data)
+#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data)
+#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data)
+#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data)
+#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data)
+#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data)
+#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data)
+#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data)
+#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data)
+#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data)
+#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data)
+#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data)
+
+
+#endif // _MREPEAT_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h
new file mode 100644
index 0000000..5b996ba
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h
@@ -0,0 +1,55 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _PREPROCESSOR_H_
+#define _PREPROCESSOR_H_
+
+#include "tpaste.h"
+#include "stringz.h"
+#include "mrepeat.h"
+
+
+#endif // _PREPROCESSOR_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h
new file mode 100644
index 0000000..3528ea0
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h
@@ -0,0 +1,75 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor stringizing utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _STRINGZ_H_
+#define _STRINGZ_H_
+
+
+/*! \brief Stringize.
+ *
+ * Stringize a preprocessing token, this token being allowed to be \#defined.
+ *
+ * May be used only within macros with the token passed as an argument if the token is \#defined.
+ *
+ * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN)
+ * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to
+ * writing "A0".
+ */
+#define STRINGZ(x) #x
+
+/*! \brief Absolute stringize.
+ *
+ * Stringize a preprocessing token, this token being allowed to be \#defined.
+ *
+ * No restriction of use if the token is \#defined.
+ *
+ * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is
+ * equivalent to writing "A0".
+ */
+#define ASTRINGZ(x) STRINGZ(x)
+
+
+#endif // _STRINGZ_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h
new file mode 100644
index 0000000..a5d7bee
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h
@@ -0,0 +1,95 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Preprocessor token pasting utils.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _TPASTE_H_
+#define _TPASTE_H_
+
+
+/*! \name Token Paste
+ *
+ * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
+ *
+ * May be used only within macros with the tokens passed as arguments if the tokens are \#defined.
+ *
+ * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by
+ * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is
+ * equivalent to writing U32.
+ */
+//! @{
+#define TPASTE2( a, b) a##b
+#define TPASTE3( a, b, c) a##b##c
+#define TPASTE4( a, b, c, d) a##b##c##d
+#define TPASTE5( a, b, c, d, e) a##b##c##d##e
+#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f
+#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g
+#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h
+#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i
+#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j
+//! @}
+
+/*! \name Absolute Token Paste
+ *
+ * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
+ *
+ * No restriction of use if the tokens are \#defined.
+ *
+ * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined
+ * as 32 is equivalent to writing U32.
+ */
+//! @{
+#define ATPASTE2( a, b) TPASTE2( a, b)
+#define ATPASTE3( a, b, c) TPASTE3( a, b, c)
+#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d)
+#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e)
+#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f)
+#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g)
+#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h)
+#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i)
+#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j)
+//! @}
+
+
+#endif // _TPASTE_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x
new file mode 100644
index 0000000..23b658b
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x
@@ -0,0 +1,121 @@
+/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief AVR32UC C runtime startup file.
+ *
+ * This file has been built from the Newlib crt0.S.
+ *
+ * - Compiler: GNU GCC for AVR32
+ * - Supported devices: All AVR32UC devices can be used.
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#include <avr32/io.h>
+
+
+//! @{
+//! \verbatim
+
+
+ // This must be linked @ 0x80000000 if it is to be run upon reset.
+ .section .reset, "ax", @progbits
+
+
+ .global _start
+ .type _start, @function
+_start:
+ // Jump to the C runtime startup routine.
+ lda.w pc, _stext
+
+
+ // _stext is placed outside the .reset section so that the program entry point
+ // can be changed without affecting the C runtime startup.
+ .section .text._stext, "ax", @progbits
+
+
+ .global _stext
+ .type _stext, @function
+_stext:
+ // Set initial stack pointer.
+ lda.w sp, _estack
+
+ // Set up EVBA so interrupts can be enabled.
+ lda.w r0, _evba
+ mtsr AVR32_EVBA, r0
+
+ // Enable the exception processing.
+ csrf AVR32_SR_EM_OFFSET
+
+ // Load initialized data having a global lifetime from the data LMA.
+ lda.w r0, _data
+ lda.w r1, _edata
+ cp r0, r1
+ brhs idata_load_loop_end
+ lda.w r2, _data_lma
+idata_load_loop:
+ ld.d r4, r2++
+ st.d r0++, r4
+ cp r0, r1
+ brlo idata_load_loop
+idata_load_loop_end:
+
+ // Clear uninitialized data having a global lifetime in the blank static storage section.
+ lda.w r0, __bss_start
+ lda.w r1, _end
+ cp r0, r1
+ brhs udata_clear_loop_end
+ mov r2, 0
+ mov r3, 0
+udata_clear_loop:
+ st.d r0++, r2
+ cp r0, r1
+ brlo udata_clear_loop
+udata_clear_loop_end:
+
+#ifdef CONFIG_FRAME_POINTER
+ // Safety: Set the default "return" @ to the exit routine address.
+ lda.w lr, exit
+#endif
+
+ // Start the show.
+ lda.w pc, main
+
+
+//! \endverbatim
+//! @}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h
new file mode 100644
index 0000000..885be7f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h
@@ -0,0 +1,1145 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Compiler file for AVR32.
+ *
+ * This file defines commonly used types and macros.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _COMPILER_H_
+#define _COMPILER_H_
+
+#if ((defined __GNUC__) && (defined __AVR32__)) || (defined __ICCAVR32__ || defined __AAVR32__)
+# include <avr32/io.h>
+#endif
+#if (defined __ICCAVR32__)
+# include <intrinsics.h>
+#endif
+#include "preprocessor.h"
+
+#include "parts.h"
+
+
+//_____ D E C L A R A T I O N S ____________________________________________
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+#include <stddef.h>
+#include <stdlib.h>
+
+
+#if (defined __ICCAVR32__)
+
+/*! \name Compiler Keywords
+ *
+ * Port of some keywords from GNU GCC for AVR32 to IAR Embedded Workbench for Atmel AVR32.
+ */
+//! @{
+#define __asm__ asm
+#define __inline__ inline
+#define __volatile__
+//! @}
+
+#endif
+
+
+/*! \name Usual Types
+ */
+//! @{
+typedef unsigned char Bool; //!< Boolean.
+#ifndef __cplusplus
+#if !defined(__bool_true_false_are_defined)
+typedef unsigned char bool; //!< Boolean.
+#endif
+#endif
+typedef signed char S8 ; //!< 8-bit signed integer.
+typedef unsigned char U8 ; //!< 8-bit unsigned integer.
+typedef signed short int S16; //!< 16-bit signed integer.
+typedef unsigned short int U16; //!< 16-bit unsigned integer.
+typedef signed long int S32; //!< 32-bit signed integer.
+typedef unsigned long int U32; //!< 32-bit unsigned integer.
+typedef signed long long int S64; //!< 64-bit signed integer.
+typedef unsigned long long int U64; //!< 64-bit unsigned integer.
+typedef float F32; //!< 32-bit floating-point number.
+typedef double F64; //!< 64-bit floating-point number.
+//! @}
+
+
+/*! \name Status Types
+ */
+//! @{
+typedef Bool Status_bool_t; //!< Boolean status.
+typedef U8 Status_t; //!< 8-bit-coded status.
+//! @}
+
+
+/*! \name Aliasing Aggregate Types
+ */
+//! @{
+
+//! 16-bit union.
+typedef union
+{
+ S16 s16 ;
+ U16 u16 ;
+ S8 s8 [2];
+ U8 u8 [2];
+} Union16;
+
+//! 32-bit union.
+typedef union
+{
+ S32 s32 ;
+ U32 u32 ;
+ S16 s16[2];
+ U16 u16[2];
+ S8 s8 [4];
+ U8 u8 [4];
+} Union32;
+
+//! 64-bit union.
+typedef union
+{
+ S64 s64 ;
+ U64 u64 ;
+ S32 s32[2];
+ U32 u32[2];
+ S16 s16[4];
+ U16 u16[4];
+ S8 s8 [8];
+ U8 u8 [8];
+} Union64;
+
+//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ S64 *s64ptr;
+ U64 *u64ptr;
+ S32 *s32ptr;
+ U32 *u32ptr;
+ S16 *s16ptr;
+ U16 *u16ptr;
+ S8 *s8ptr ;
+ U8 *u8ptr ;
+} UnionPtr;
+
+//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ volatile S64 *s64ptr;
+ volatile U64 *u64ptr;
+ volatile S32 *s32ptr;
+ volatile U32 *u32ptr;
+ volatile S16 *s16ptr;
+ volatile U16 *u16ptr;
+ volatile S8 *s8ptr ;
+ volatile U8 *u8ptr ;
+} UnionVPtr;
+
+//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ const S64 *s64ptr;
+ const U64 *u64ptr;
+ const S32 *s32ptr;
+ const U32 *u32ptr;
+ const S16 *s16ptr;
+ const U16 *u16ptr;
+ const S8 *s8ptr ;
+ const U8 *u8ptr ;
+} UnionCPtr;
+
+//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef union
+{
+ const volatile S64 *s64ptr;
+ const volatile U64 *u64ptr;
+ const volatile S32 *s32ptr;
+ const volatile U32 *u32ptr;
+ const volatile S16 *s16ptr;
+ const volatile U16 *u16ptr;
+ const volatile S8 *s8ptr ;
+ const volatile U8 *u8ptr ;
+} UnionCVPtr;
+
+//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ S64 *s64ptr;
+ U64 *u64ptr;
+ S32 *s32ptr;
+ U32 *u32ptr;
+ S16 *s16ptr;
+ U16 *u16ptr;
+ S8 *s8ptr ;
+ U8 *u8ptr ;
+} StructPtr;
+
+//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ volatile S64 *s64ptr;
+ volatile U64 *u64ptr;
+ volatile S32 *s32ptr;
+ volatile U32 *u32ptr;
+ volatile S16 *s16ptr;
+ volatile U16 *u16ptr;
+ volatile S8 *s8ptr ;
+ volatile U8 *u8ptr ;
+} StructVPtr;
+
+//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ const S64 *s64ptr;
+ const U64 *u64ptr;
+ const S32 *s32ptr;
+ const U32 *u32ptr;
+ const S16 *s16ptr;
+ const U16 *u16ptr;
+ const S8 *s8ptr ;
+ const U8 *u8ptr ;
+} StructCPtr;
+
+//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers.
+typedef struct
+{
+ const volatile S64 *s64ptr;
+ const volatile U64 *u64ptr;
+ const volatile S32 *s32ptr;
+ const volatile U32 *u32ptr;
+ const volatile S16 *s16ptr;
+ const volatile U16 *u16ptr;
+ const volatile S8 *s8ptr ;
+ const volatile U8 *u8ptr ;
+} StructCVPtr;
+
+//! @}
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+//_____ M A C R O S ________________________________________________________
+
+/*! \name Usual Constants
+ */
+//! @{
+#define DISABLE 0
+#define ENABLE 1
+#define DISABLED 0
+#define ENABLED 1
+#define OFF 0
+#define ON 1
+#define FALSE 0
+#define TRUE 1
+#ifndef __cplusplus
+#if !defined(__bool_true_false_are_defined)
+#define false FALSE
+#define true TRUE
+#endif
+#endif
+#define KO 0
+#define OK 1
+#define PASS 0
+#define FAIL 1
+#define LOW 0
+#define HIGH 1
+#define CLR 0
+#define SET 1
+//! @}
+
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+/*! \name Bit-Field Handling
+ */
+//! @{
+
+/*! \brief Reads the bits of a value specified by a given bit-mask.
+ *
+ * \param value Value to read bits from.
+ * \param mask Bit-mask indicating bits to read.
+ *
+ * \return Read bits.
+ */
+#define Rd_bits( value, mask) ((value) & (mask))
+
+/*! \brief Writes the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue to write bits to.
+ * \param mask Bit-mask indicating bits to write.
+ * \param bits Bits to write.
+ *
+ * \return Resulting value with written bits.
+ */
+#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\
+ ((bits ) & (mask)))
+
+/*! \brief Tests the bits of a value specified by a given bit-mask.
+ *
+ * \param value Value of which to test bits.
+ * \param mask Bit-mask indicating bits to test.
+ *
+ * \return \c 1 if at least one of the tested bits is set, else \c 0.
+ */
+#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0)
+
+/*! \brief Clears the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue of which to clear bits.
+ * \param mask Bit-mask indicating bits to clear.
+ *
+ * \return Resulting value with cleared bits.
+ */
+#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask))
+
+/*! \brief Sets the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue of which to set bits.
+ * \param mask Bit-mask indicating bits to set.
+ *
+ * \return Resulting value with set bits.
+ */
+#define Set_bits(lvalue, mask) ((lvalue) |= (mask))
+
+/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue of which to toggle bits.
+ * \param mask Bit-mask indicating bits to toggle.
+ *
+ * \return Resulting value with toggled bits.
+ */
+#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask))
+
+/*! \brief Reads the bit-field of a value specified by a given bit-mask.
+ *
+ * \param value Value to read a bit-field from.
+ * \param mask Bit-mask indicating the bit-field to read.
+ *
+ * \return Read bit-field.
+ */
+#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask))
+
+/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask.
+ *
+ * \param lvalue C lvalue to write a bit-field to.
+ * \param mask Bit-mask indicating the bit-field to write.
+ * \param bitfield Bit-field to write.
+ *
+ * \return Resulting value with written bit-field.
+ */
+#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask)))
+
+//! @}
+
+
+/*! \brief This macro is used to test fatal errors.
+ *
+ * The macro tests if the expression is FALSE. If it is, a fatal error is
+ * detected and the application hangs up.
+ *
+ * \param expr Expression to evaluate and supposed to be nonzero.
+ */
+#ifdef _ASSERT_ENABLE_
+ #define Assert(expr) \
+ {\
+ if (!(expr)) while (TRUE);\
+ }
+#else
+ #define Assert(expr)
+#endif
+
+
+/*! \name Zero-Bit Counting
+ *
+ * Under AVR32-GCC, __builtin_clz and __builtin_ctz behave like macros when
+ * applied to constant expressions (values known at compile time), so they are
+ * more optimized than the use of the corresponding assembly instructions and
+ * they can be used as constant expressions e.g. to initialize objects having
+ * static storage duration, and like the corresponding assembly instructions
+ * when applied to non-constant expressions (values unknown at compile time), so
+ * they are more optimized than an assembly periphrasis. Hence, clz and ctz
+ * ensure a possible and optimized behavior for both constant and non-constant
+ * expressions.
+ */
+//! @{
+
+/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer.
+ *
+ * \param u Value of which to count the leading zero bits.
+ *
+ * \return The count of leading zero bits in \a u.
+ */
+#if (defined __GNUC__)
+ #define clz(u) __builtin_clz(u)
+#elif (defined __ICCAVR32__)
+ #define clz(u) __count_leading_zeros(u)
+#endif
+
+/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer.
+ *
+ * \param u Value of which to count the trailing zero bits.
+ *
+ * \return The count of trailing zero bits in \a u.
+ */
+#if (defined __GNUC__)
+ #define ctz(u) __builtin_ctz(u)
+#elif (defined __ICCAVR32__)
+ #define ctz(u) __count_trailing_zeros(u)
+#endif
+
+//! @}
+
+
+/*! \name Bit Reversing
+ */
+//! @{
+
+/*! \brief Reverses the bits of \a u8.
+ *
+ * \param u8 U8 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u8 with reversed bits.
+ */
+#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24))
+
+/*! \brief Reverses the bits of \a u16.
+ *
+ * \param u16 U16 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u16 with reversed bits.
+ */
+#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16))
+
+/*! \brief Reverses the bits of \a u32.
+ *
+ * \param u32 U32 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u32 with reversed bits.
+ */
+#if (defined __GNUC__)
+ #define bit_reverse32(u32) \
+ (\
+ {\
+ unsigned int __value = (U32)(u32);\
+ __asm__ ("brev\t%0" : "+r" (__value) : : "cc");\
+ (U32)__value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define bit_reverse32(u32) ((U32)__bit_reverse((U32)(u32)))
+#endif
+
+/*! \brief Reverses the bits of \a u64.
+ *
+ * \param u64 U64 of which to reverse the bits.
+ *
+ * \return Value resulting from \a u64 with reversed bits.
+ */
+#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\
+ ((U64)bit_reverse32((U64)(u64)) << 32)))
+
+//! @}
+
+
+/*! \name Alignment
+ */
+//! @{
+
+/*! \brief Tests alignment of the number \a val with the \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0.
+ */
+#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) )
+
+/*! \brief Gets alignment of the number \a val with respect to the \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return Alignment of the number \a val with respect to the \a n boundary.
+ */
+#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) )
+
+/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary.
+ *
+ * \param lval Input/output lvalue.
+ * \param n Boundary.
+ * \param alg Alignment.
+ *
+ * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary.
+ */
+#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) )
+
+/*! \brief Aligns the number \a val with the upper \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return Value resulting from the number \a val aligned with the upper \a n boundary.
+ */
+#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1))
+
+/*! \brief Aligns the number \a val with the lower \a n boundary.
+ *
+ * \param val Input value.
+ * \param n Boundary.
+ *
+ * \return Value resulting from the number \a val aligned with the lower \a n boundary.
+ */
+#define Align_down(val, n ) ( (val) & ~((n) - 1))
+
+//! @}
+
+
+/*! \name Mathematics
+ *
+ * The same considerations as for clz and ctz apply here but AVR32-GCC does not
+ * provide built-in functions to access the assembly instructions abs, min and
+ * max and it does not produce them by itself in most cases, so two sets of
+ * macros are defined here:
+ * - Abs, Min and Max to apply to constant expressions (values known at
+ * compile time);
+ * - abs, min and max to apply to non-constant expressions (values unknown at
+ * compile time).
+ */
+//! @{
+
+/*! \brief Takes the absolute value of \a a.
+ *
+ * \param a Input value.
+ *
+ * \return Absolute value of \a a.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Abs(a) (((a) < 0 ) ? -(a) : (a))
+
+/*! \brief Takes the minimal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Minimal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Min(a, b) (((a) < (b)) ? (a) : (b))
+
+/*! \brief Takes the maximal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Maximal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Max(a, b) (((a) > (b)) ? (a) : (b))
+
+/*! \brief Takes the absolute value of \a a.
+ *
+ * \param a Input value.
+ *
+ * \return Absolute value of \a a.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define abs(a) \
+ (\
+ {\
+ int __value = (a);\
+ __asm__ ("abs\t%0" : "+r" (__value) : : "cc");\
+ __value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define abs(a) Abs(a)
+#endif
+
+/*! \brief Takes the minimal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Minimal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define min(a, b) \
+ (\
+ {\
+ int __value, __arg_a = (a), __arg_b = (b);\
+ __asm__ ("min\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\
+ __value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define min(a, b) __min(a, b)
+#endif
+
+/*! \brief Takes the maximal value of \a a and \a b.
+ *
+ * \param a Input value.
+ * \param b Input value.
+ *
+ * \return Maximal value of \a a and \a b.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define max(a, b) \
+ (\
+ {\
+ int __value, __arg_a = (a), __arg_b = (b);\
+ __asm__ ("max\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\
+ __value;\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define max(a, b) __max(a, b)
+#endif
+
+//! @}
+
+
+/*! \brief Calls the routine at address \a addr.
+ *
+ * It generates a long call opcode.
+ *
+ * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if
+ * it is invoked from the CPU supervisor mode.
+ *
+ * \param addr Address of the routine to call.
+ *
+ * \note It may be used as a long jump opcode in some special cases.
+ */
+#define Long_call(addr) ((*(void (*)(void))(addr))())
+
+/*! \brief Resets the CPU by software.
+ *
+ * \warning It shall not be called from the CPU application mode.
+ */
+#if (defined __GNUC__)
+ #define Reset_CPU() \
+ (\
+ {\
+ __asm__ __volatile__ (\
+ "lddpc r9, 3f\n\t"\
+ "mfsr r8, %[SR]\n\t"\
+ "bfextu r8, r8, %[SR_M_OFFSET], %[SR_M_SIZE]\n\t"\
+ "cp.w r8, 0b001\n\t"\
+ "breq 0f\n\t"\
+ "sub r8, pc, $ - 1f\n\t"\
+ "pushm r8-r9\n\t"\
+ "rete\n"\
+ "0:\n\t"\
+ "mtsr %[SR], r9\n"\
+ "1:\n\t"\
+ "mov r0, 0\n\t"\
+ "mov r1, 0\n\t"\
+ "mov r2, 0\n\t"\
+ "mov r3, 0\n\t"\
+ "mov r4, 0\n\t"\
+ "mov r5, 0\n\t"\
+ "mov r6, 0\n\t"\
+ "mov r7, 0\n\t"\
+ "mov r8, 0\n\t"\
+ "mov r9, 0\n\t"\
+ "mov r10, 0\n\t"\
+ "mov r11, 0\n\t"\
+ "mov r12, 0\n\t"\
+ "mov sp, 0\n\t"\
+ "stdsp sp[0], sp\n\t"\
+ "ldmts sp, sp\n\t"\
+ "mov lr, 0\n\t"\
+ "lddpc pc, 2f\n\t"\
+ ".balign 4\n"\
+ "2:\n\t"\
+ ".word _start\n"\
+ "3:\n\t"\
+ ".word %[RESET_SR]"\
+ :\
+ : [SR] "i" (AVR32_SR),\
+ [SR_M_OFFSET] "i" (AVR32_SR_M_OFFSET),\
+ [SR_M_SIZE] "i" (AVR32_SR_M_SIZE),\
+ [RESET_SR] "i" (AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))\
+ );\
+ }\
+ )
+#elif (defined __ICCAVR32__)
+ #define Reset_CPU() \
+ {\
+ extern void *volatile __program_start;\
+ __asm__ __volatile__ (\
+ "mov r7, LWRD(__program_start)\n\t"\
+ "orh r7, HWRD(__program_start)\n\t"\
+ "mov r9, LWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\
+ "orh r9, HWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\
+ "mfsr r8, "ASTRINGZ(AVR32_SR)"\n\t"\
+ "bfextu r8, r8, "ASTRINGZ(AVR32_SR_M_OFFSET)", "ASTRINGZ(AVR32_SR_M_SIZE)"\n\t"\
+ "cp.w r8, 001b\n\t"\
+ "breq $ + 10\n\t"\
+ "sub r8, pc, -12\n\t"\
+ "pushm r8-r9\n\t"\
+ "rete\n\t"\
+ "mtsr "ASTRINGZ(AVR32_SR)", r9\n\t"\
+ "mov r0, 0\n\t"\
+ "mov r1, 0\n\t"\
+ "mov r2, 0\n\t"\
+ "mov r3, 0\n\t"\
+ "mov r4, 0\n\t"\
+ "mov r5, 0\n\t"\
+ "mov r6, 0\n\t"\
+ "st.w r0[4], r7\n\t"\
+ "mov r7, 0\n\t"\
+ "mov r8, 0\n\t"\
+ "mov r9, 0\n\t"\
+ "mov r10, 0\n\t"\
+ "mov r11, 0\n\t"\
+ "mov r12, 0\n\t"\
+ "mov sp, 0\n\t"\
+ "stdsp sp[0], sp\n\t"\
+ "ldmts sp, sp\n\t"\
+ "mov lr, 0\n\t"\
+ "ld.w pc, lr[4]"\
+ );\
+ __program_start;\
+ }
+#endif
+
+
+/*! \name System Register Access
+ */
+//! @{
+
+/*! \brief Gets the value of the \a sysreg system register.
+ *
+ * \param sysreg Address of the system register of which to get the value.
+ *
+ * \return Value of the \a sysreg system register.
+ */
+#if (defined __GNUC__)
+ #define Get_system_register(sysreg) __builtin_mfsr(sysreg)
+#elif (defined __ICCAVR32__)
+ #define Get_system_register(sysreg) __get_system_register(sysreg)
+#endif
+
+/*! \brief Sets the value of the \a sysreg system register to \a value.
+ *
+ * \param sysreg Address of the system register of which to set the value.
+ * \param value Value to set the \a sysreg system register to.
+ */
+#if (defined __GNUC__)
+ #define Set_system_register(sysreg, value) __builtin_mtsr(sysreg, value)
+#elif (defined __ICCAVR32__)
+ #define Set_system_register(sysreg, value) __set_system_register(sysreg, value)
+#endif
+
+//! @}
+
+
+/*! \name CPU Status Register Access
+ */
+//! @{
+
+/*! \brief Tells whether exceptions are globally enabled.
+ *
+ * \return \c 1 if exceptions are globally enabled, else \c 0.
+ */
+#define Is_global_exception_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_EM_MASK))
+
+/*! \brief Disables exceptions globally.
+ */
+#if (defined __GNUC__)
+ #define Disable_global_exception() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Disable_global_exception() (__set_status_flag(AVR32_SR_EM_OFFSET))
+#endif
+
+/*! \brief Enables exceptions globally.
+ */
+#if (defined __GNUC__)
+ #define Enable_global_exception() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Enable_global_exception() (__clear_status_flag(AVR32_SR_EM_OFFSET))
+#endif
+
+/*! \brief Tells whether interrupts are globally enabled.
+ *
+ * \return \c 1 if interrupts are globally enabled, else \c 0.
+ */
+#define Is_global_interrupt_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_GM_MASK))
+
+/*! \brief Disables interrupts globally.
+ */
+#if (defined __GNUC__)
+ #define Disable_global_interrupt() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Disable_global_interrupt() (__disable_interrupt())
+#endif
+
+/*! \brief Enables interrupts globally.
+ */
+#if (defined __GNUC__)
+ #define Enable_global_interrupt() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));})
+#elif (defined __ICCAVR32__)
+ #define Enable_global_interrupt() (__enable_interrupt())
+#endif
+
+/*! \brief Tells whether interrupt level \a int_level is enabled.
+ *
+ * \param int_level Interrupt level (0 to 3).
+ *
+ * \return \c 1 if interrupt level \a int_level is enabled, else \c 0.
+ */
+#define Is_interrupt_level_enabled(int_level) (!Tst_bits(Get_system_register(AVR32_SR), TPASTE3(AVR32_SR_I, int_level, M_MASK)))
+
+/*! \brief Disables interrupt level \a int_level.
+ *
+ * \param int_level Interrupt level to disable (0 to 3).
+ */
+#if (defined __GNUC__)
+ #define Disable_interrupt_level(int_level) ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));})
+#elif (defined __ICCAVR32__)
+ #define Disable_interrupt_level(int_level) (__set_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET)))
+#endif
+
+/*! \brief Enables interrupt level \a int_level.
+ *
+ * \param int_level Interrupt level to enable (0 to 3).
+ */
+#if (defined __GNUC__)
+ #define Enable_interrupt_level(int_level) ({__asm__ __volatile__ ("csrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));})
+#elif (defined __ICCAVR32__)
+ #define Enable_interrupt_level(int_level) (__clear_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET)))
+#endif
+
+/*! \brief Protects subsequent code from interrupts.
+ */
+#define AVR32_ENTER_CRITICAL_REGION( ) \
+ { \
+ Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \
+ Disable_global_interrupt(); // Disable the appropriate interrupts.
+
+/*! \brief This macro must always be used in conjunction with AVR32_ENTER_CRITICAL_REGION
+ * so that interrupts are enabled again.
+ */
+#define AVR32_LEAVE_CRITICAL_REGION( ) \
+ if (global_interrupt_enabled) Enable_global_interrupt(); \
+ }
+
+//! @}
+
+
+/*! \name Debug Register Access
+ */
+//! @{
+
+/*! \brief Gets the value of the \a dbgreg debug register.
+ *
+ * \param dbgreg Address of the debug register of which to get the value.
+ *
+ * \return Value of the \a dbgreg debug register.
+ */
+#if (defined __GNUC__)
+ #define Get_debug_register(dbgreg) __builtin_mfdr(dbgreg)
+#elif (defined __ICCAVR32__)
+ #define Get_debug_register(dbgreg) __get_debug_register(dbgreg)
+#endif
+
+/*! \brief Sets the value of the \a dbgreg debug register to \a value.
+ *
+ * \param dbgreg Address of the debug register of which to set the value.
+ * \param value Value to set the \a dbgreg debug register to.
+ */
+#if (defined __GNUC__)
+ #define Set_debug_register(dbgreg, value) __builtin_mtdr(dbgreg, value)
+#elif (defined __ICCAVR32__)
+ #define Set_debug_register(dbgreg, value) __set_debug_register(dbgreg, value)
+#endif
+
+//! @}
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+//! Boolean evaluating MCU little endianism.
+#if ((defined __GNUC__) && (defined __AVR32__)) || ((defined __ICCAVR32__) || (defined __AAVR32__))
+ #define LITTLE_ENDIAN_MCU FALSE
+#else
+ #error If you are here, you should check what is exactly the processor you are using...
+ #define LITTLE_ENDIAN_MCU FALSE
+#endif
+
+// Check that MCU endianism is correctly defined.
+#ifndef LITTLE_ENDIAN_MCU
+ #error YOU MUST define the MCU endianism with LITTLE_ENDIAN_MCU: either FALSE or TRUE
+#endif
+
+//! Boolean evaluating MCU big endianism.
+#define BIG_ENDIAN_MCU (!LITTLE_ENDIAN_MCU)
+
+
+#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
+
+/*! \name MCU Endianism Handling
+ */
+//! @{
+
+#if (LITTLE_ENDIAN_MCU==TRUE)
+ #define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16.
+ #define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16.
+
+ #define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32.
+ #define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32.
+ #define LSB0W(u32) (((U8 *)&(u32))[0]) //!< Least significant byte of 1st rank of \a u32.
+ #define LSB1W(u32) (((U8 *)&(u32))[1]) //!< Least significant byte of 2nd rank of \a u32.
+ #define LSB2W(u32) (((U8 *)&(u32))[2]) //!< Least significant byte of 3rd rank of \a u32.
+ #define LSB3W(u32) (((U8 *)&(u32))[3]) //!< Least significant byte of 4th rank of \a u32.
+ #define MSB3W(u32) LSB0W(u32) //!< Most significant byte of 4th rank of \a u32.
+ #define MSB2W(u32) LSB1W(u32) //!< Most significant byte of 3rd rank of \a u32.
+ #define MSB1W(u32) LSB2W(u32) //!< Most significant byte of 2nd rank of \a u32.
+ #define MSB0W(u32) LSB3W(u32) //!< Most significant byte of 1st rank of \a u32.
+
+ #define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64.
+ #define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64.
+ #define LSH0(u64) (((U16 *)&(u64))[0]) //!< Least significant half-word of 1st rank of \a u64.
+ #define LSH1(u64) (((U16 *)&(u64))[1]) //!< Least significant half-word of 2nd rank of \a u64.
+ #define LSH2(u64) (((U16 *)&(u64))[2]) //!< Least significant half-word of 3rd rank of \a u64.
+ #define LSH3(u64) (((U16 *)&(u64))[3]) //!< Least significant half-word of 4th rank of \a u64.
+ #define MSH3(u64) LSH0(u64) //!< Most significant half-word of 4th rank of \a u64.
+ #define MSH2(u64) LSH1(u64) //!< Most significant half-word of 3rd rank of \a u64.
+ #define MSH1(u64) LSH2(u64) //!< Most significant half-word of 2nd rank of \a u64.
+ #define MSH0(u64) LSH3(u64) //!< Most significant half-word of 1st rank of \a u64.
+ #define LSB0D(u64) (((U8 *)&(u64))[0]) //!< Least significant byte of 1st rank of \a u64.
+ #define LSB1D(u64) (((U8 *)&(u64))[1]) //!< Least significant byte of 2nd rank of \a u64.
+ #define LSB2D(u64) (((U8 *)&(u64))[2]) //!< Least significant byte of 3rd rank of \a u64.
+ #define LSB3D(u64) (((U8 *)&(u64))[3]) //!< Least significant byte of 4th rank of \a u64.
+ #define LSB4D(u64) (((U8 *)&(u64))[4]) //!< Least significant byte of 5th rank of \a u64.
+ #define LSB5D(u64) (((U8 *)&(u64))[5]) //!< Least significant byte of 6th rank of \a u64.
+ #define LSB6D(u64) (((U8 *)&(u64))[6]) //!< Least significant byte of 7th rank of \a u64.
+ #define LSB7D(u64) (((U8 *)&(u64))[7]) //!< Least significant byte of 8th rank of \a u64.
+ #define MSB7D(u64) LSB0D(u64) //!< Most significant byte of 8th rank of \a u64.
+ #define MSB6D(u64) LSB1D(u64) //!< Most significant byte of 7th rank of \a u64.
+ #define MSB5D(u64) LSB2D(u64) //!< Most significant byte of 6th rank of \a u64.
+ #define MSB4D(u64) LSB3D(u64) //!< Most significant byte of 5th rank of \a u64.
+ #define MSB3D(u64) LSB4D(u64) //!< Most significant byte of 4th rank of \a u64.
+ #define MSB2D(u64) LSB5D(u64) //!< Most significant byte of 3rd rank of \a u64.
+ #define MSB1D(u64) LSB6D(u64) //!< Most significant byte of 2nd rank of \a u64.
+ #define MSB0D(u64) LSB7D(u64) //!< Most significant byte of 1st rank of \a u64.
+
+#elif (BIG_ENDIAN_MCU==TRUE)
+ #define MSB(u16) (((U8 *)&(u16))[0]) //!< Most significant byte of \a u16.
+ #define LSB(u16) (((U8 *)&(u16))[1]) //!< Least significant byte of \a u16.
+
+ #define MSH(u32) (((U16 *)&(u32))[0]) //!< Most significant half-word of \a u32.
+ #define LSH(u32) (((U16 *)&(u32))[1]) //!< Least significant half-word of \a u32.
+ #define MSB0W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 1st rank of \a u32.
+ #define MSB1W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 2nd rank of \a u32.
+ #define MSB2W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 3rd rank of \a u32.
+ #define MSB3W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 4th rank of \a u32.
+ #define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32.
+ #define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32.
+ #define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32.
+ #define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32.
+
+ #define MSW(u64) (((U32 *)&(u64))[0]) //!< Most significant word of \a u64.
+ #define LSW(u64) (((U32 *)&(u64))[1]) //!< Least significant word of \a u64.
+ #define MSH0(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 1st rank of \a u64.
+ #define MSH1(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 2nd rank of \a u64.
+ #define MSH2(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 3rd rank of \a u64.
+ #define MSH3(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 4th rank of \a u64.
+ #define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64.
+ #define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64.
+ #define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64.
+ #define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64.
+ #define MSB0D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 1st rank of \a u64.
+ #define MSB1D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 2nd rank of \a u64.
+ #define MSB2D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 3rd rank of \a u64.
+ #define MSB3D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 4th rank of \a u64.
+ #define MSB4D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 5th rank of \a u64.
+ #define MSB5D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 6th rank of \a u64.
+ #define MSB6D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 7th rank of \a u64.
+ #define MSB7D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 8th rank of \a u64.
+ #define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64.
+ #define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64.
+ #define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64.
+ #define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64.
+ #define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64.
+ #define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64.
+ #define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64.
+ #define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64.
+
+#else
+ #error Unknown endianism.
+#endif
+
+//! @}
+
+
+/*! \name Endianism Conversion
+ *
+ * The same considerations as for clz and ctz apply here but AVR32-GCC's
+ * __builtin_bswap_16 and __builtin_bswap_32 do not behave like macros when
+ * applied to constant expressions, so two sets of macros are defined here:
+ * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known
+ * at compile time);
+ * - swap16, swap32 and swap64 to apply to non-constant expressions (values
+ * unknown at compile time).
+ */
+//! @{
+
+/*! \brief Toggles the endianism of \a u16 (by swapping its bytes).
+ *
+ * \param u16 U16 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u16 with toggled endianism.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\
+ ((U16)(u16) << 8)))
+
+/*! \brief Toggles the endianism of \a u32 (by swapping its bytes).
+ *
+ * \param u32 U32 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u32 with toggled endianism.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\
+ ((U32)Swap16((U32)(u32)) << 16)))
+
+/*! \brief Toggles the endianism of \a u64 (by swapping its bytes).
+ *
+ * \param u64 U64 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u64 with toggled endianism.
+ *
+ * \note More optimized if only used with values known at compile time.
+ */
+#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\
+ ((U64)Swap32((U64)(u64)) << 32)))
+
+/*! \brief Toggles the endianism of \a u16 (by swapping its bytes).
+ *
+ * \param u16 U16 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u16 with toggled endianism.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define swap16(u16) ((U16)__builtin_bswap_16((U16)(u16)))
+#elif (defined __ICCAVR32__)
+ #define swap16(u16) ((U16)__swap_bytes_in_halfwords((U16)(u16)))
+#endif
+
+/*! \brief Toggles the endianism of \a u32 (by swapping its bytes).
+ *
+ * \param u32 U32 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u32 with toggled endianism.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#if (defined __GNUC__)
+ #define swap32(u32) ((U32)__builtin_bswap_32((U32)(u32)))
+#elif (defined __ICCAVR32__)
+ #define swap32(u32) ((U32)__swap_bytes((U32)(u32)))
+#endif
+
+/*! \brief Toggles the endianism of \a u64 (by swapping its bytes).
+ *
+ * \param u64 U64 of which to toggle the endianism.
+ *
+ * \return Value resulting from \a u64 with toggled endianism.
+ *
+ * \note More optimized if only used with values unknown at compile time.
+ */
+#define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\
+ ((U64)swap32((U64)(u64)) << 32)))
+
+//! @}
+
+
+/*! \name Target Abstraction
+ */
+//! @{
+
+#define _GLOBEXT_ extern //!< extern storage-class specifier.
+#define _CONST_TYPE_ const //!< const type qualifier.
+#define _MEM_TYPE_SLOW_ //!< Slow memory type.
+#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type.
+#define _MEM_TYPE_FAST_ //!< Fast memory type.
+
+typedef U8 Byte; //!< 8-bit unsigned integer.
+
+#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM.
+#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM.
+#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM.
+#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM.
+
+#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32.
+#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32.
+#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32.
+#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32.
+#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32.
+#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32.
+#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32.
+#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32.
+
+//! @}
+
+#endif // __AVR32_ABI_COMPILER__
+
+
+#endif // _COMPILER_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h
new file mode 100644
index 0000000..ca516ee
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h
@@ -0,0 +1,136 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file ******************************************************************
+ *
+ * \brief ISP configuration file.
+ *
+ * This file contains the possible external configuration of the ISP.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices with a USB module can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ***************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _CONF_ISP_H_
+#define _CONF_ISP_H_
+
+#include <avr32/io.h>
+#include "compiler.h"
+
+
+//_____ D E F I N I T I O N S ______________________________________________
+
+#define PRODUCT_MANUFACTURER_ID 0x58
+#define PRODUCT_FAMILY_ID 0x20
+
+#define ISP_VERSION 0x10
+#define ISP_ID0 0x00
+#define ISP_ID1 0x00
+
+#define ISP_CFG1 (*(volatile U32 *)ISP_CFG1_ADDRESS)
+#define ISP_CFG1_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG1_OFFSET)
+#define ISP_CFG1_OFFSET 0x000001FC
+#define ISP_CFG1_SIZE 4
+
+#define ISP_CFG1_BOOT_KEY1 16
+#define ISP_CFG1_BOOT_KEY1_MASK 0xFFFF0000
+#define ISP_CFG1_BOOT_KEY1_OFFSET 16
+#define ISP_CFG1_BOOT_KEY1_SIZE 16
+#define ISP_CFG1_BOOT_KEY1_VALUE 0xE11E
+
+#define ISP_CFG1_FORCE 9
+#define ISP_CFG1_FORCE_MASK 0x00000200
+#define ISP_CFG1_FORCE_OFFSET 9
+#define ISP_CFG1_FORCE_SIZE 1
+
+#define ISP_CFG1_IO_COND_EN 8
+#define ISP_CFG1_IO_COND_EN_MASK 0x00000100
+#define ISP_CFG1_IO_COND_EN_OFFSET 8
+#define ISP_CFG1_IO_COND_EN_SIZE 1
+
+#define ISP_CFG1_CRC8 0
+#define ISP_CFG1_CRC8_MASK 0x000000FF
+#define ISP_CFG1_CRC8_OFFSET 0
+#define ISP_CFG1_CRC8_SIZE 8
+#define ISP_CFG1_CRC8_POLYNOMIAL 0x107
+
+#define ISP_CFG2 (*(volatile U32 *)ISP_CFG2_ADDRESS)
+#define ISP_CFG2_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG2_OFFSET)
+#define ISP_CFG2_OFFSET 0x000001F8
+#define ISP_CFG2_SIZE 4
+
+#define ISP_CFG2_BOOT_KEY 17
+#define ISP_CFG2_BOOT_KEY_MASK 0xFFFE0000
+#define ISP_CFG2_BOOT_KEY_OFFSET 17
+#define ISP_CFG2_BOOT_KEY_SIZE 15
+#define ISP_CFG2_BOOT_KEY_VALUE 0x494F
+
+#define ISP_CFG2_IO_COND_LEVEL 16
+#define ISP_CFG2_IO_COND_LEVEL_MASK 0x00010000
+#define ISP_CFG2_IO_COND_LEVEL_OFFSET 16
+#define ISP_CFG2_IO_COND_LEVEL_SIZE 1
+
+#define ISP_CFG2_IO_COND_PIN 8
+#define ISP_CFG2_IO_COND_PIN_MASK 0x0000FF00
+#define ISP_CFG2_IO_COND_PIN_OFFSET 8
+#define ISP_CFG2_IO_COND_PIN_SIZE 8
+
+#define ISP_CFG2_CRC8 0
+#define ISP_CFG2_CRC8_MASK 0x000000FF
+#define ISP_CFG2_CRC8_OFFSET 0
+#define ISP_CFG2_CRC8_SIZE 8
+#define ISP_CFG2_CRC8_POLYNOMIAL 0x107
+
+#define ISP_KEY (*(volatile U32 *)ISP_KEY_ADDRESS)
+#define ISP_KEY_ADDRESS (AVR32_SRAM_ADDRESS + ISP_KEY_OFFSET)
+#define ISP_KEY_OFFSET 0x00000000
+#define ISP_KEY_SIZE 4
+#define ISP_KEY_VALUE ('I' << 24 | 'S' << 16 | 'P' << 8 | 'K')
+
+#ifndef ISP_OSC
+ #define ISP_OSC 0
+#endif
+
+#define DFU_FRAME_LENGTH 2048
+
+#define PROGRAM_START_ADDRESS (AVR32_FLASH_ADDRESS + PROGRAM_START_OFFSET)
+#define PROGRAM_START_OFFSET 0x00002000
+
+
+#endif // _CONF_ISP_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h
new file mode 100644
index 0000000..6637b2f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h
@@ -0,0 +1,203 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*This file is prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief Arch file for AVR32.
+ *
+ * This file defines common AVR32 UC3 series.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ ******************************************************************************/
+
+/* Copyright (c) 2009 Atmel Corporation. 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. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an Atmel
+ * AVR product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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
+ *
+ */
+
+#ifndef _ARCH_H_
+#define _ARCH_H_
+
+// UC3 A Series
+#define UC3A0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3A0128__) || \
+ defined (__AVR32_UC3A0256__) || \
+ defined (__AVR32_UC3A0512__) || \
+ defined (__AVR32_UC3A0512ES__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3A0128__) || \
+ defined (__AT32UC3A0256__) || \
+ defined (__AT32UC3A0512__) || \
+ defined (__AT32UC3A0512ES__)))
+
+#define UC3A1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3A1128__) || \
+ defined (__AVR32_UC3A1256__) || \
+ defined (__AVR32_UC3A1512__) || \
+ defined (__AVR32_UC3A1512ES__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3A1128__) || \
+ defined (__AT32UC3A1256__) || \
+ defined (__AT32UC3A1512__) || \
+ defined (__AT32UC3A1512ES__)))
+
+#define UC3A3 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3A364__) || \
+ defined (__AVR32_UC3A364S__) || \
+ defined (__AVR32_UC3A3128__) || \
+ defined (__AVR32_UC3A3128S__) || \
+ defined (__AVR32_UC3A3256__) || \
+ defined (__AVR32_UC3A3256S__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3A364__) || \
+ defined (__AT32UC3A364S__) || \
+ defined (__AT32UC3A3128__) || \
+ defined (__AT32UC3A3128S__) || \
+ defined (__AT32UC3A3256__) || \
+ defined (__AT32UC3A3256S__)))
+
+#define UC3A (UC3A0 || UC3A1 || UC3A3)
+
+// UC3 B Series
+#define UC3B0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3B064__) || \
+ defined (__AVR32_UC3B0128__) || \
+ defined (__AVR32_UC3B0256__) || \
+ defined (__AVR32_UC3B0256ES__) || \
+ defined (__AVR32_UC3B0512__) || \
+ defined (__AVR32_UC3B0512REVC_))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3B064__) || \
+ defined (__AT32UC3B0128__) || \
+ defined (__AT32UC3B0256__) || \
+ defined (__AT32UC3B0256ES__) || \
+ defined (__AT32UC3B0512__) || \
+ defined (__AT32UC3B0512REVC__)))
+
+#define UC3B1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3B164__) || \
+ defined (__AVR32_UC3B1128__) || \
+ defined (__AVR32_UC3B1256__) || \
+ defined (__AVR32_UC3B1256ES__) || \
+ defined (__AVR32_UC3B1512__) || \
+ defined (__AVR32_UC3B1512ES__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3B164__) || \
+ defined (__AT32UC3B1128__) || \
+ defined (__AT32UC3B1256__) || \
+ defined (__AT32UC3B1256ES__) || \
+ defined (__AT32UC3B1512__) || \
+ defined (__AT32UC3B1512REVC__)))
+
+#define UC3B (UC3B0 || UC3B1 )
+
+// UC3 C Series
+#define UC3C0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3C064C__) || \
+ defined (__AVR32_UC3C0128C__) || \
+ defined (__AVR32_UC3C0256C__) || \
+ defined (__AVR32_UC3C0512CREVC__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3C064C__) || \
+ defined (__AT32UC3C0128C__) || \
+ defined (__AT32UC3C0256C__) || \
+ defined (__AT32UC3C0512C__)))
+
+#define UC3C1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3C164C__) || \
+ defined (__AVR32_UC3C1128C__) || \
+ defined (__AVR32_UC3C1256C__) || \
+ defined (__AVR32_UC3C1512CREVC__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3C164C__) || \
+ defined (__AT32UC3C1128C__) || \
+ defined (__AT32UC3C1256C__) || \
+ defined (__AT32UC3C1512C__)))
+
+#define UC3C2 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3C264C__) || \
+ defined (__AVR32_UC3C2128C__) || \
+ defined (__AVR32_UC3C2256C__) || \
+ defined (__AVR32_UC3C2512CREVC__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3C264C__) || \
+ defined (__AT32UC3C2128C__) || \
+ defined (__AT32UC3C2256C__) || \
+ defined (__AT32UC3C2512C__)))
+
+#define UC3C (UC3C0 || UC3C1 || UC3C2)
+
+// UC3 L Device series
+#define UC3L0 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L016__) || \
+ defined (__AVR32_UC3L032__) || \
+ defined (__AVR32_UC3L064__) || \
+ defined (__AVR32_UC3L064REVB__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L016__) || \
+ defined (__AT32UC3L032__) || \
+ defined (__AT32UC3L064__) || \
+ defined (__AT32UC3L064REVB__)))
+
+#define UC3L1 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L116__) || \
+ defined (__AVR32_UC3L132__) || \
+ defined (__AVR32_UC3L164__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L116__) || \
+ defined (__AT32UC3L132__) || \
+ defined (__AT32UC3L164__)))
+
+#define UC3L2 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L216__) || \
+ defined (__AVR32_UC3L232__) || \
+ defined (__AVR32_UC3L264__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L216__) || \
+ defined (__AT32UC3L232__) || \
+ defined (__AT32UC3L264__)))
+
+#define UC3L3 ( defined (__GNUC__) && \
+ ( defined (__AVR32_UC3L316__) || \
+ defined (__AVR32_UC3L332__) || \
+ defined (__AVR32_UC3L364__))) \
+ ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \
+ ( defined (__AT32UC3L316__) || \
+ defined (__AT32UC3L332__) || \
+ defined (__AT32UC3L364__)))
+
+#define UC3L (UC3L0 || UC3L1 || UC3L2 || UC3L3)
+
+#endif // _ARCH_H_
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/clocks.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/clocks.c
new file mode 100644
index 0000000..cdd07fa
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/clocks.c
@@ -0,0 +1,101 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+
+#include <avr32/io.h>
+#include "board.h"
+#include "clocks.h"
+#include "pm.h"
+#include "flashc.h"
+#include "gpio.h"
+
+/**
+ * Initializes the MCU system clocks.
+ */
+void
+init_sys_clocks(void)
+{
+ /* switch to OSC0 to speed up the booting */
+ pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
+
+#ifndef USE_PLL
+ return;
+#endif
+
+ /* For audio, ee have to use OSC1 on to generate the correct clockrate
+ * for the SSC
+ */
+#if OSC == 1
+ /* start oscillator1 */
+ pm_enable_osc1_crystal(&AVR32_PM, FOSC1);
+ pm_enable_clk1(&AVR32_PM, OSC1_STARTUP);
+#endif
+
+ /* configure pll multipliers */
+ pm_pll_setup(&AVR32_PM,
+ 0, /* pll */
+ PLL_MUL, /* mul */
+ 1, /* div */
+ OSC, /* osc */
+ 16); /* lockcount */
+
+ /* set PLL operating range and divider (fpll = fvco/2)
+ * this gives PLL output = 66 MHz (62.0928 MHz for EVK1105/OSC1)
+ */
+ pm_pll_set_option(&AVR32_PM,
+ 0, /* pll */
+ 1, /* pll_freq */
+ 1, /* pll_div2 */
+ 0); /* pll_wbwdisable. */
+
+
+ /* start PLL0 and wait for the lock */
+ pm_pll_enable(&AVR32_PM, 0);
+ pm_wait_for_pll0_locked(&AVR32_PM);
+
+ /* Set all peripheral clocks torun at master clock rate */
+ pm_cksel(&AVR32_PM,
+ 0, /* pbadiv */
+ 0, /* pbasel */
+ 0, /* pbbdiv */
+ 0, /* pbbsel */
+ 0, /* hsbdiv */
+ 0); /* hsbsel */
+
+ /* Set one waitstate for the flash */
+ flashc_set_wait_state(1);
+
+ /* Switch to PLL0 as the master clock */
+ pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0);
+
+#if OSC == 1
+ pm_configure_usb_clock();
+#endif
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/clocks.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/clocks.h
new file mode 100644
index 0000000..cceda29
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/clocks.h
@@ -0,0 +1,78 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+#ifndef CLOCKS_H
+#define CLOCKS_H
+
+#include "board.h"
+
+
+#if BOARD == EVK1100
+# define USE_PLL
+# define OSC 0
+# define PLL_MUL 10
+#elif BOARD == EVK1101
+# define USE_PLL
+# define OSC 0
+# define PLL_MUL 9
+#elif BOARD == EVK1104
+# define USE_PLL
+# define OSC 0
+# define PLL_MUL 9 /* for some reason we cant use 66 MHz */
+#elif BOARD == EVK1105
+# define USE_PLL
+# define OSC 1
+# define PLL_MUL 10
+#elif BOARD == ARDUINO
+# define USE_PLL
+# define OSC 0
+# define PLL_MUL 8
+#endif
+
+#if OSC == 0
+# define FOSC FOSC0 /* 12 MHz */
+#else
+# define FOSC FOSC1 /* 11.2896 MHz */
+#endif
+
+#ifdef USE_PLL
+# define FMCK_HZ ((FOSC * (PLL_MUL + 1)) / 2)
+#else
+# define FMCK_HZ FOSC
+#endif
+
+#define FCPU_HZ FMCK_HZ
+#define FHSB_HZ FCPU_HZ
+#define FPBB_HZ FMCK_HZ
+#define FPBA_HZ FMCK_HZ
+
+void init_sys_clocks(void);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/flash_fw.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/flash_fw.c
new file mode 100644
index 0000000..75d35f6
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/flash_fw.c
@@ -0,0 +1,125 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include <avr32/io.h>
+
+#include "printf-stdarg.h"
+#include "wl_fw.h"
+#include "startup.h"
+#include "nor_flash.h"
+#include "gpio.h"
+
+#define GREEN_OFF() gpio_set_gpio_pin(LED0_GPIO)
+#define GREEN_ON() gpio_clr_gpio_pin(LED0_GPIO)
+#define GREEN_BLINK() gpio_tgl_gpio_pin(LED0_GPIO)
+#define RED_OFF() gpio_set_gpio_pin(LED1_GPIO)
+#define RED_ON() gpio_clr_gpio_pin(LED1_GPIO)
+#define RED_BLINK() gpio_tgl_gpio_pin(LED1_GPIO)
+#define BLUE_OFF() gpio_set_gpio_pin(LED2_GPIO)
+#define BLUE_ON() gpio_clr_gpio_pin(LED2_GPIO)
+#define BLUE_BLINK() gpio_tgl_gpio_pin(LED2_GPIO)
+
+
+/**
+ *
+ */
+void
+led_init(void)
+{
+ gpio_enable_gpio_pin(LED0_GPIO);
+ gpio_enable_gpio_pin(LED1_GPIO);
+ gpio_enable_gpio_pin(LED2_GPIO);
+ GREEN_OFF();
+ RED_OFF();
+ BLUE_OFF();
+}
+
+
+int main(void)
+{
+ U32 pos, len;
+
+ startup_init();
+ printk("*** HD chip firmware upgrade ver 2.7 ***\n");
+ led_init();
+ flash_init();
+ GREEN_ON();
+ if (at45dbx_mem_check() == OK)
+ {
+ printk("Memory check... [ OK ]\n");
+ }
+ else
+ {
+ RED_ON();
+ GREEN_OFF();
+ printk("Memory check... [FAIL]\n");
+ return 0;
+ }
+ printk("Writing firmware data to flash\n");
+ pos = 0;
+ while (pos < fw_len) {
+ if (fw_len - pos > SECTOR_SIZE)
+ len = SECTOR_SIZE;
+ else
+ len = fw_len - pos;
+
+ flash_write(pos, fw_buf + pos, len);
+ pos += len;
+ }
+
+ printk("Verifying firmware data\n");
+ pos = 0;
+ while (pos < fw_len) {
+ static U8 page_buf[SECTOR_SIZE];
+ U32 i;
+
+ if (fw_len - pos > SECTOR_SIZE)
+ len = SECTOR_SIZE;
+ else
+ len = fw_len - pos;
+
+ flash_read(pos, page_buf, len);
+
+ for (i = 0; i < len; i++)
+ if (*(page_buf + i) != *(fw_buf + pos + i)) {
+ RED_ON();
+ GREEN_OFF();
+ printk("Verify failed at byte %d, 0x%02x != 0x%02x\n",
+ pos + i, *(page_buf + i), *(fw_buf + pos + i));
+ return 0;
+ }
+
+
+ pos += len;
+ }
+ GREEN_OFF();
+ BLUE_ON();
+ printk("Firmware successfully stored in flash!\n");
+ return 0;
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/license.txt b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/license.txt
new file mode 100644
index 0000000..e57439f
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/license.txt
@@ -0,0 +1,42 @@
+ Copyright (C) 2009, H&D Wireless AB All rights reserved.
+
+ The license to use this software in whole and in part and to
+ redistribute it in any form follows with the WiFi HW module from H&D
+ Wireless and is granted under the following restrictions:
+
+ 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. The name of H&D Wireless AB may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ 4. The software may only be used together with hardware from H&D
+ Wireless all other use is prohibited.
+
+ 5. The license to use and redistribute the software is granted
+ together with the purchase of a hardware platform on a one to one
+ basis
+
+ 6. The binary code may not be reversed engineered or by other means
+ copied to circumvent this license.
+
+ THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT
+ SHALL HD WIRELESS AB 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.
+
+ For more information regarding this software license Contact H&D
+ Wireless AB (support hd-wireless se).
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/nor_flash.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/nor_flash.c
new file mode 100644
index 0000000..0115949
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/nor_flash.c
@@ -0,0 +1,99 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include <string.h>
+#include "compiler.h"
+#include "preprocessor.h"
+#include "board.h"
+#include "power_clocks_lib.h"
+#include "gpio.h"
+#include "spi.h"
+#include "conf_at45dbx.h"
+#include "at45dbx.h"
+#include "clocks.h"
+
+
+void flash_init(void)
+{
+ static const gpio_map_t AT45DBX_SPI_GPIO_MAP = {
+ { AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION },
+ { AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION },
+ { AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION },
+ { AT45DBX_SPI_NPCS2_PIN, AT45DBX_SPI_NPCS2_FUNCTION },
+ };
+
+ spi_options_t spiOptions = {
+ .reg = AT45DBX_SPI_FIRST_NPCS,
+ .baudrate = AT45DBX_SPI_MASTER_SPEED,
+ .bits = AT45DBX_SPI_BITS,
+ .spck_delay = 0,
+ .trans_delay = 0,
+ .stay_act = 1,
+ .spi_mode = 0,
+ .modfdis = 1
+ };
+
+ gpio_enable_module(AT45DBX_SPI_GPIO_MAP,
+ sizeof(AT45DBX_SPI_GPIO_MAP) /
+ sizeof(AT45DBX_SPI_GPIO_MAP[0]));
+
+ spi_initMaster(AT45DBX_SPI, &spiOptions);
+
+ spi_selectionMode(AT45DBX_SPI, 0, 0, 0);
+ spi_enable(AT45DBX_SPI);
+
+ /* put up flash reset pin */
+ gpio_set_gpio_pin(AT45DBX_CHIP_RESET);
+
+ at45dbx_init(spiOptions, FPBA_HZ);
+}
+
+void flash_write(U32 addr, const U8* buf, U32 len)
+{
+ U32 sector = addr / AT45DBX_SECTOR_SIZE;
+ U32 i;
+ Assert(addr % AT45DBX_SECTOR_SIZE == 0);
+
+ at45dbx_write_open(sector);
+ for (i = 0; i < len; i++)
+ at45dbx_write_byte(buf[i]);
+ at45dbx_write_close();
+}
+
+void flash_read(U32 addr, U8* buf, U32 len)
+{
+ U32 sector = addr / AT45DBX_SECTOR_SIZE;
+ U32 i;
+ Assert(addr % AT45DBX_SECTOR_SIZE == 0);
+
+ at45dbx_read_open(sector);
+ for (i = 0; i < len; i++)
+ buf[i] = at45dbx_read_byte();
+ at45dbx_read_close();
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/nor_flash.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/nor_flash.h
new file mode 100644
index 0000000..52a4a20
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/nor_flash.h
@@ -0,0 +1,41 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef NOR_FLASH_H
+#define NOR_FLASH_H
+
+#include "at45dbx.h"
+
+#define SECTOR_SIZE AT45DBX_SECTOR_SIZE
+
+void flash_init(void);
+void flash_write(U32 addr, const U8* buf, U32 len);
+void flash_read(U32 addr, U8* buf, U32 len);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/printf-stdarg.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/printf-stdarg.c
new file mode 100644
index 0000000..86ab88e
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/printf-stdarg.c
@@ -0,0 +1,323 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/* This source file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */
+
+/*This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief sprintf functions to replace newlib for AVR32 UC3.
+ *
+ * - Compiler: IAR EWAVR32 and GNU GCC for AVR32
+ * - Supported devices: All AVR32 devices can be used.
+ * - AppNote:
+ *
+ * \author Atmel Corporation: http://www.atmel.com \n
+ * Support and FAQ: http://support.atmel.no/
+ *
+ *****************************************************************************/
+
+/* Copyright (C) 2006-2008, Atmel Corporation 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. The name of ATMEL may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+
+/*
+ Copyright 2001, 2002 Georges Menie (www.menie.org)
+ stdarg version contributed by Christian Ettinger
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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
+*/
+
+/*
+ putchar is the only external dependency for this file,
+ if you have a working putchar, leave it commented out.
+ If not, uncomment the define below and
+ replace outbyte(c) by your own function call.
+
+*/
+
+
+#include <sys/reent.h>
+#include <stdarg.h>
+
+#define putchar(c) print_dbg_char(c)
+
+static void printchar(char **str, int c)
+{
+ extern int putchar(int c);
+
+ if (str) {
+ **str = c;
+ ++(*str);
+ }
+ else (void)putchar(c);
+}
+
+#define PAD_RIGHT 1
+#define PAD_ZERO 2
+
+static int prints(char **out, const char *string, int width, int pad)
+{
+ register int pc = 0, padchar = ' ';
+
+ if (width > 0) {
+ register int len = 0;
+ register const char *ptr;
+ for (ptr = string; *ptr; ++ptr) ++len;
+ if (len >= width) width = 0;
+ else width -= len;
+ if (pad & PAD_ZERO) padchar = '0';
+ }
+ if (!(pad & PAD_RIGHT)) {
+ for ( ; width > 0; --width) {
+ printchar (out, padchar);
+ ++pc;
+ }
+ }
+ for ( ; *string ; ++string) {
+ printchar (out, *string);
+ ++pc;
+ }
+ for ( ; width > 0; --width) {
+ printchar (out, padchar);
+ ++pc;
+ }
+
+ return pc;
+}
+
+/* the following should be enough for 32 bit int */
+#define PRINT_BUF_LEN 12
+
+static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)
+{
+ char print_buf[PRINT_BUF_LEN];
+ register char *s;
+ register int t, neg = 0, pc = 0;
+ register unsigned int u = i;
+
+ if (i == 0) {
+ print_buf[0] = '0';
+ print_buf[1] = '\0';
+ return prints (out, print_buf, width, pad);
+ }
+
+ if (sg && b == 10 && i < 0) {
+ neg = 1;
+ u = -i;
+ }
+
+ s = print_buf + PRINT_BUF_LEN-1;
+ *s = '\0';
+
+ while (u) {
+ t = u % b;
+ if( t >= 10 )
+ t += letbase - '0' - 10;
+ *--s = t + '0';
+ u /= b;
+ }
+
+ if (neg) {
+ if( width && (pad & PAD_ZERO) ) {
+ printchar (out, '-');
+ ++pc;
+ --width;
+ }
+ else {
+ *--s = '-';
+ }
+ }
+
+ return pc + prints (out, s, width, pad);
+}
+
+int fprintf(__FILE *stream, const char *format, ...)
+{
+return 0;
+}
+int printk_va(char **out, const char *format, va_list args )
+{
+ register int width, pad;
+ register int pc = 0;
+ char scr[2];
+
+ for (; *format != 0; ++format) {
+ if (*format == '%') {
+ ++format;
+ width = pad = 0;
+ if (*format == '\0') break;
+ if (*format == '%') goto out;
+ if (*format == '-') {
+ ++format;
+ pad = PAD_RIGHT;
+ }
+ while (*format == '0') {
+ ++format;
+ pad |= PAD_ZERO;
+ }
+ for ( ; *format >= '0' && *format <= '9'; ++format) {
+ width *= 10;
+ width += *format - '0';
+ }
+ if( *format == 's' ) {
+ register char *s = (char *)va_arg( args, int );
+ pc += prints (out, s?s:"(null)", width, pad);
+ continue;
+ }
+ if( *format == 'd' ) {
+ pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'p' ) {
+ pad = 8;
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'x' ) {
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'X' ) {
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
+ continue;
+ }
+ if( *format == 'u' ) {
+ pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'c' ) {
+ /* char are converted to int then pushed on the stack */
+ scr[0] = (char)va_arg( args, int );
+ scr[1] = '\0';
+ pc += prints (out, scr, width, pad);
+ continue;
+ }
+ }
+ else {
+ out:
+ printchar (out, *format);
+ ++pc;
+ }
+ }
+ if (out) **out = '\0';
+ va_end( args );
+ return pc;
+}
+
+int printk(const char *format, ...)
+{
+ va_list args;
+
+ va_start( args, format );
+ return printk_va( 0, format, args );
+}
+
+int sprintf(char *out, const char *format, ...)
+{
+ va_list args;
+
+ va_start( args, format );
+ return printk_va( &out, format, args );
+}
+
+#ifdef TEST_PRINTF
+int main(void)
+{
+ char *ptr = "Hello world!";
+ char *np = 0;
+ int i = 5;
+ unsigned int bs = sizeof(int)*8;
+ int mi;
+ char buf[80];
+
+ mi = (1 << (bs-1)) + 1;
+ printf("%s\n", ptr);
+ printf("printf test\n");
+ printf("%s is null pointer\n", np);
+ printf("%d = 5\n", i);
+ printf("%d = - max int\n", mi);
+ printf("char %c = 'a'\n", 'a');
+ printf("hex %x = ff\n", 0xff);
+ printf("hex %02x = 00\n", 0);
+ printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);
+ printf("%d %s(s)%", 0, "message");
+ printf("\n");
+ printf("%d %s(s) with %%\n", 0, "message");
+ sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);
+ sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);
+ sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);
+ sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);
+ sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);
+ sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);
+ sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);
+ sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);
+
+ return 0;
+}
+
+/*
+ * if you compile this file with
+ * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c
+ * you will get a normal warning:
+ * printf.c:214: warning: spurious trailing `%' in format
+ * this line is testing an invalid % at the end of the format string.
+ *
+ * this should display (on 32bit int machine) :
+ *
+ * Hello world!
+ * printf test
+ * (null) is null pointer
+ * 5 = 5
+ * -2147483647 = - max int
+ * char a = 'a'
+ * hex ff = ff
+ * hex 00 = 00
+ * signed -3 = unsigned 4294967293 = hex fffffffd
+ * 0 message(s)
+ * 0 message(s) with %
+ * justif: "left "
+ * justif: " right"
+ * 3: 0003 zero padded
+ * 3: 3 left justif.
+ * 3: 3 right justif.
+ * -3: -003 zero padded
+ * -3: -3 left justif.
+ * -3: -3 right justif.
+ */
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/printf-stdarg.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/printf-stdarg.h
new file mode 100644
index 0000000..f6bd664
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/printf-stdarg.h
@@ -0,0 +1,36 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef PRINTF_STDARG_H
+#define PRINTF_STDARG_H
+#include <stdarg.h>
+
+int printk(const char *format, ...);
+int printk_va(char **out, const char *format, va_list args );
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/startup.c b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/startup.c
new file mode 100644
index 0000000..fa2a8c0
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/startup.c
@@ -0,0 +1,75 @@
+/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#include "startup.h"
+#include "pm.h"
+#include "intc.h"
+#include "board.h"
+#include "print_funcs.h"
+#include "clocks.h"
+
+
+static void init_exceptions(void)
+{
+ extern void _evba;
+ Set_system_register(AVR32_EVBA, (int)&_evba);
+ Enable_global_exception();
+}
+
+static void init_hmatrix(void)
+{
+ union {
+ unsigned long scfg;
+ avr32_hmatrix_scfg_t SCFG;
+ } u_avr32_hmatrix_scfg = {
+ AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH]
+ };
+ u_avr32_hmatrix_scfg.SCFG.defmstr_type =
+ AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT;
+ AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] =
+ u_avr32_hmatrix_scfg.scfg;
+}
+
+static void init_interrupts(void)
+{
+ INTC_init_interrupts();
+
+ //initExtInt();
+
+ Enable_global_interrupt();
+}
+
+void startup_init(void)
+{
+ init_exceptions();
+ init_hmatrix();
+ init_sys_clocks();
+ init_interrupts();
+ init_dbg_rs232(FPBA_HZ);
+}
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/startup.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/startup.h
new file mode 100644
index 0000000..a9adc60
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/startup.h
@@ -0,0 +1,35 @@
+/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
+
+/*! \page License
+ * Copyright (C) 2009, H&D Wireless AB 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. The name of H&D Wireless AB may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
+ */
+#ifndef STARTUP_H
+#define STARTUP_H
+
+void startup_init(void);
+
+#endif
diff --git a/hardware/arduino/firmwares/wifishield/wifi_dnld/src/wl_fw.h b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/wl_fw.h
new file mode 100644
index 0000000..5be5f37
--- /dev/null
+++ b/hardware/arduino/firmwares/wifishield/wifi_dnld/src/wl_fw.h
@@ -0,0 +1,19287 @@
+/*
+ * Programming interface for wl_api.
+ * Copyright (C) 2010 HD Wireless AB
+ *
+ * You should have received a copy of the license along with this library.
+ */
+
+#ifndef WITHOUT_STDINT
+#include <stdint.h>
+#endif
+const uint8_t fw_buf[154188] = {
+ 0x10, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00,
+ 0x38, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x20, 0x61, 0x04, 0x00,
+ 0x30, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x30, 0x61, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00,
+ 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee,
+ 0xee, 0xee, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0,
+ 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0,
+ 0x9f, 0xe5, 0x00, 0x00, 0xa0, 0xe1, 0x18, 0xf0,
+ 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x44, 0x00,
+ 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08,
+ 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x08,
+ 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0f, 0xe1, 0x1f, 0x00, 0xc0, 0xe3,
+ 0x13, 0x00, 0x80, 0xe3, 0xc0, 0x00, 0x80, 0xe3,
+ 0x00, 0xf0, 0x2f, 0xe1, 0x1c, 0xf0, 0x9f, 0xe5,
+ 0x3d, 0x02, 0x00, 0xeb, 0x5a, 0x02, 0x00, 0xeb,
+ 0x8d, 0x02, 0x00, 0xeb, 0x01, 0x00, 0x8f, 0xe2,
+ 0x10, 0xff, 0x2f, 0xe1, 0x41, 0xf0, 0xde, 0xfb,
+ 0x01, 0xf0, 0xdc, 0xfd, 0x3c, 0x00, 0x78, 0x00,
+ 0x00, 0x00, 0xfe, 0xe7, 0x00, 0x00, 0x5c, 0x00,
+ 0x00, 0x00, 0x78, 0x47, 0xc0, 0x46, 0x01, 0x00,
+ 0x00, 0xea, 0x78, 0x47, 0xc0, 0x46, 0x17, 0x00,
+ 0x00, 0xea, 0x8c, 0x11, 0x9f, 0xe5, 0x00, 0x20,
+ 0x91, 0xe5, 0x00, 0x30, 0x0f, 0xe1, 0x84, 0x11,
+ 0x9f, 0xe5, 0xfd, 0x20, 0xa1, 0xe8, 0x80, 0x01,
+ 0x9f, 0xe5, 0x80, 0x21, 0x9f, 0xe5, 0x01, 0x20,
+ 0x42, 0xe0, 0x0d, 0x00, 0x40, 0xe0, 0x3c, 0x00,
+ 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x50, 0xe1,
+ 0x28, 0x00, 0x00, 0xaa, 0x68, 0x01, 0x9f, 0xe5,
+ 0x0d, 0x00, 0x50, 0xe1, 0x02, 0x00, 0x00, 0xba,
+ 0x04, 0x20, 0x10, 0xe4, 0x04, 0x20, 0x81, 0xe4,
+ 0xfa, 0xff, 0xff, 0xea, 0x58, 0x11, 0x9f, 0xe5,
+ 0x58, 0x01, 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5,
+ 0x3c, 0x11, 0x9f, 0xe5, 0x50, 0x01, 0x9f, 0xe5,
+ 0x00, 0x00, 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1,
+ 0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x48, 0x11,
+ 0x9f, 0xe5, 0x00, 0x00, 0x91, 0xe5, 0x24, 0x11,
+ 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, 0x2c, 0x11,
+ 0x9f, 0xe5, 0x38, 0x01, 0x9f, 0xe5, 0x00, 0x00,
+ 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, 0x74, 0x02,
+ 0x00, 0xeb, 0x10, 0x01, 0x9f, 0xe5, 0x28, 0x11,
+ 0x9f, 0xe5, 0x04, 0x20, 0x91, 0xe4, 0x04, 0x20,
+ 0x00, 0xe4, 0x04, 0x21, 0x9f, 0xe5, 0x02, 0x00,
+ 0x51, 0xe1, 0x3c, 0x00, 0x2c, 0x01, 0x00, 0x00,
+ 0xfa, 0xff, 0xff, 0x1a, 0xf0, 0x10, 0x9f, 0xe5,
+ 0xfd, 0x20, 0xb1, 0xe8, 0x03, 0xf0, 0x2f, 0xe1,
+ 0xe0, 0x10, 0x9f, 0xe5, 0x00, 0x20, 0x81, 0xe5,
+ 0xe8, 0x10, 0x9f, 0xe5, 0xf4, 0x20, 0x9f, 0xe5,
+ 0x00, 0x20, 0x81, 0xe5, 0x02, 0x10, 0x80, 0xe2,
+ 0x00, 0x00, 0x20, 0xe0, 0x01, 0x00, 0x40, 0xe2,
+ 0x11, 0xff, 0x2f, 0xe1, 0x01, 0x00, 0x8f, 0xe2,
+ 0x10, 0xff, 0x2f, 0xe1, 0x3c, 0x00, 0x68, 0x01,
+ 0x00, 0x00, 0x01, 0xf0, 0x9c, 0xf8, 0x78, 0x47,
+ 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff,
+ 0x2f, 0xe1, 0x01, 0xf0, 0x94, 0xf8, 0x78, 0x47,
+ 0x00, 0x00, 0x03, 0x00, 0x2d, 0xe9, 0x00, 0x10,
+ 0x0f, 0xe1, 0x00, 0x10, 0x80, 0xe5, 0xb8, 0x10,
+ 0x9f, 0xe5, 0x04, 0x10, 0x80, 0xe5, 0x00, 0x10,
+ 0xa0, 0xe1, 0x10, 0x00, 0x80, 0xe2, 0xfc, 0x1f,
+ 0xa0, 0xe8, 0x00, 0x20, 0xa0, 0xe1, 0x3c, 0x00,
+ 0xa4, 0x01, 0x00, 0x00, 0x01, 0x30, 0xa0, 0xe1,
+ 0x03, 0x00, 0xbd, 0xe8, 0x08, 0x00, 0x83, 0xe5,
+ 0x0c, 0x10, 0x83, 0xe5, 0xd3, 0x00, 0xa0, 0xe3,
+ 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8,
+ 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4,
+ 0xd2, 0x00, 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1,
+ 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1,
+ 0x04, 0x10, 0x82, 0xe4, 0xd1, 0x00, 0xa0, 0xe3,
+ 0x3c, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0,
+ 0x21, 0xe1, 0x00, 0x7f, 0xa2, 0xe8, 0x00, 0x10,
+ 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, 0xd7, 0x00,
+ 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60,
+ 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10,
+ 0x82, 0xe4, 0xdb, 0x00, 0xa0, 0xe3, 0x00, 0xf0,
+ 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10,
+ 0x4f, 0xe1, 0x00, 0x10, 0x82, 0xe5, 0x00, 0x00,
+ 0x93, 0xe5, 0x3c, 0x00, 0x1c, 0x02, 0x00, 0x00,
+ 0x00, 0xf0, 0x2f, 0xe1, 0x1e, 0xff, 0x2f, 0xe1,
+ 0x20, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00,
+ 0x20, 0xee, 0x01, 0x00, 0xd8, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0x9f, 0xe5,
+ 0x10, 0x01, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00,
+ 0xee, 0xee, 0xee, 0xee, 0x24, 0x03, 0x00, 0x00,
+ 0x20, 0x02, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x63, 0x1c, 0x0b, 0x4d, 0x3c, 0x00, 0x58, 0x02,
+ 0x00, 0x00, 0x01, 0xd1, 0x6c, 0x69, 0x10, 0xe0,
+ 0x00, 0xf0, 0x6c, 0xfb, 0x09, 0x48, 0xff, 0xf7,
+ 0x0c, 0xff, 0xec, 0x60, 0x08, 0x4a, 0x51, 0x68,
+ 0x50, 0x68, 0x88, 0x42, 0xfc, 0xd0, 0x02, 0x20,
+ 0x28, 0x70, 0x01, 0x21, 0x8a, 0x20, 0x01, 0xf0,
+ 0x12, 0xf8, 0x20, 0x1c, 0xb0, 0xbd, 0x30, 0x00,
+ 0x07, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x3c, 0x00,
+ 0x94, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0xf0,
+ 0x50, 0xfb, 0x14, 0x48, 0xff, 0xf7, 0xf0, 0xfe,
+ 0x13, 0x49, 0x14, 0x48, 0xc1, 0x60, 0x01, 0x21,
+ 0x13, 0x4a, 0x49, 0x03, 0x91, 0x60, 0x13, 0x49,
+ 0xca, 0x78, 0x08, 0x23, 0x9a, 0x43, 0xca, 0x70,
+ 0xca, 0x78, 0x04, 0x23, 0x1a, 0x43, 0xca, 0x70,
+ 0x6b, 0x1c, 0x0d, 0xd0, 0x0e, 0x4b, 0x5a, 0x68,
+ 0x59, 0x68, 0x91, 0x42, 0xfc, 0xd0, 0xbe, 0x21,
+ 0x3c, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x19, 0x73,
+ 0x19, 0x7a, 0x11, 0x22, 0x91, 0x43, 0x19, 0x72,
+ 0x19, 0x7a, 0xc9, 0x07, 0xfc, 0xd4, 0x02, 0x21,
+ 0x01, 0x70, 0xff, 0xf7, 0xd0, 0xfe, 0x20, 0x1c,
+ 0xb0, 0xbd, 0x91, 0x02, 0x00, 0x00, 0xff, 0xff,
+ 0xff, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 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, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 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, 0x00, 0x00, 0x47,
+ 0x08, 0x47, 0x10, 0x47, 0x18, 0x47, 0x20, 0x47,
+ 0x28, 0x47, 0x30, 0x47, 0x38, 0x47, 0x10, 0xb5,
+ 0x04, 0x1c, 0x10, 0x1c, 0x00, 0xf0, 0x23, 0xf9,
+ 0x03, 0xc4, 0x10, 0xbc, 0x08, 0xbc, 0x18, 0x47,
+ 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x03, 0x00, 0x00,
+ 0x10, 0xb4, 0x04, 0x2a, 0x0e, 0xd3, 0x03, 0x1c,
+ 0x0b, 0x43, 0x9b, 0x07, 0x0a, 0xd1, 0x08, 0xc8,
+ 0x10, 0xc9, 0xa3, 0x42, 0x02, 0xd1, 0x04, 0x3a,
+ 0x04, 0x2a, 0xf8, 0xd2, 0xa3, 0x42, 0x01, 0xd0,
+ 0x04, 0x38, 0x04, 0x39, 0x00, 0x2a, 0x02, 0xd1,
+ 0x00, 0x20, 0x10, 0xbc, 0x70, 0x47, 0xd3, 0x07,
+ 0x01, 0xd5, 0x01, 0x32, 0x05, 0xe0, 0x03, 0x78,
+ 0x0c, 0x78, 0x01, 0x31, 0x3c, 0x00, 0x38, 0x04,
+ 0x00, 0x00, 0x01, 0x30, 0xa3, 0x42, 0x07, 0xd1,
+ 0x03, 0x78, 0x0c, 0x78, 0x01, 0x31, 0x01, 0x30,
+ 0xa3, 0x42, 0x01, 0xd1, 0x02, 0x3a, 0xf1, 0xd1,
+ 0x18, 0x1b, 0xe9, 0xe7, 0x00, 0x00, 0x78, 0x47,
+ 0x00, 0x00, 0x00, 0x20, 0xa0, 0xe3, 0x04, 0x00,
+ 0x51, 0xe3, 0x08, 0x00, 0x00, 0x3a, 0x03, 0xc0,
+ 0x10, 0xe2, 0x0d, 0x00, 0x00, 0x0a, 0x04, 0xc0,
+ 0x6c, 0xe2, 0x02, 0x00, 0x5c, 0xe3, 0x3c, 0x00,
+ 0x74, 0x04, 0x00, 0x00, 0x01, 0x20, 0xc0, 0xe4,
+ 0x01, 0x20, 0xc0, 0xa4, 0x01, 0x20, 0xc0, 0xc4,
+ 0x0c, 0x10, 0x41, 0xe0, 0x06, 0x00, 0x00, 0xea,
+ 0x81, 0xcf, 0xb0, 0xe1, 0x01, 0x20, 0xc0, 0x24,
+ 0x01, 0x20, 0xc0, 0x24, 0x01, 0x20, 0xc0, 0x44,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00,
+ 0x00, 0x20, 0xa0, 0xe3, 0x00, 0x40, 0x2d, 0xe9,
+ 0x02, 0x30, 0xa0, 0xe1, 0x02, 0xc0, 0xa0, 0xe1,
+ 0x3c, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x02, 0xe0,
+ 0xa0, 0xe1, 0x20, 0x10, 0x51, 0xe2, 0x0c, 0x50,
+ 0xa0, 0x28, 0x0c, 0x50, 0xa0, 0x28, 0x20, 0x10,
+ 0x51, 0x22, 0xfb, 0xff, 0xff, 0x2a, 0x01, 0x1e,
+ 0xb0, 0xe1, 0x0c, 0x50, 0xa0, 0x28, 0x0c, 0x00,
+ 0xa0, 0x48, 0x00, 0x40, 0xbd, 0xe8, 0x01, 0x11,
+ 0xb0, 0xe1, 0x04, 0x20, 0x80, 0x24, 0x1e, 0xff,
+ 0x2f, 0x01, 0x01, 0x20, 0xc0, 0x44, 0x01, 0x20,
+ 0xc0, 0x44, 0x3c, 0x00, 0xec, 0x04, 0x00, 0x00,
+ 0x40, 0x04, 0x11, 0xe3, 0x01, 0x20, 0xc0, 0x14,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00,
+ 0x03, 0x00, 0x52, 0xe3, 0x3e, 0x00, 0x00, 0x9a,
+ 0x03, 0xc0, 0x10, 0xe2, 0x08, 0x00, 0x00, 0x0a,
+ 0x01, 0x30, 0xd1, 0xe4, 0x02, 0x00, 0x5c, 0xe3,
+ 0x0c, 0x20, 0x82, 0xe0, 0x01, 0xc0, 0xd1, 0x94,
+ 0x01, 0x30, 0xc0, 0xe4, 0x01, 0x30, 0xd1, 0x34,
+ 0x04, 0x20, 0x42, 0xe2, 0x3c, 0x00, 0x28, 0x05,
+ 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x94, 0x01, 0x30,
+ 0xc0, 0x34, 0x03, 0x30, 0x11, 0xe2, 0x1e, 0x00,
+ 0x00, 0x0a, 0x04, 0x20, 0x52, 0xe2, 0x2f, 0x00,
+ 0x00, 0x3a, 0x03, 0xc0, 0x31, 0xe7, 0x02, 0x00,
+ 0x53, 0xe3, 0x08, 0x00, 0x00, 0x0a, 0x0f, 0x00,
+ 0x00, 0x8a, 0x2c, 0x34, 0xa0, 0xe1, 0x04, 0xc0,
+ 0xb1, 0xe5, 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x3c,
+ 0x83, 0xe1, 0x04, 0x30, 0x80, 0xe4, 0x3c, 0x00,
+ 0x64, 0x05, 0x00, 0x00, 0xf9, 0xff, 0xff, 0x2a,
+ 0x01, 0x10, 0x81, 0xe2, 0x23, 0x00, 0x00, 0xea,
+ 0x2c, 0x38, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5,
+ 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x38, 0x83, 0xe1,
+ 0x04, 0x30, 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a,
+ 0x02, 0x10, 0x81, 0xe2, 0x1b, 0x00, 0x00, 0xea,
+ 0x2c, 0x3c, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5,
+ 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x34, 0x83, 0xe1,
+ 0x3c, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x30,
+ 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, 0x03, 0x10,
+ 0x81, 0xe2, 0x13, 0x00, 0x00, 0xea, 0x78, 0x47,
+ 0x00, 0x00, 0x10, 0x40, 0x2d, 0xe9, 0x20, 0x20,
+ 0x52, 0xe2, 0x05, 0x00, 0x00, 0x3a, 0x18, 0x50,
+ 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x18, 0x50,
+ 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x20, 0x20,
+ 0x52, 0x22, 0xf9, 0xff, 0xff, 0x2a, 0x02, 0xce,
+ 0xb0, 0xe1, 0x3c, 0x00, 0xdc, 0x05, 0x00, 0x00,
+ 0x18, 0x50, 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28,
+ 0x18, 0x00, 0xb1, 0x48, 0x18, 0x00, 0xa0, 0x48,
+ 0x10, 0x40, 0xbd, 0xe8, 0x02, 0xcf, 0xb0, 0xe1,
+ 0x04, 0x30, 0x91, 0x24, 0x04, 0x30, 0x80, 0x24,
+ 0x1e, 0xff, 0x2f, 0x01, 0x82, 0x2f, 0xb0, 0xe1,
+ 0x01, 0x20, 0xd1, 0x44, 0x01, 0x30, 0xd1, 0x24,
+ 0x01, 0xc0, 0xd1, 0x24, 0x01, 0x20, 0xc0, 0x44,
+ 0x01, 0x30, 0xc0, 0x24, 0x3c, 0x00, 0x18, 0x06,
+ 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x24, 0x1e, 0xff,
+ 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0xff, 0x30,
+ 0x01, 0xe2, 0x02, 0x10, 0xa0, 0xe1, 0x03, 0x24,
+ 0x83, 0xe1, 0x02, 0x28, 0x82, 0xe1, 0x88, 0xff,
+ 0xff, 0xea, 0x78, 0x47, 0x00, 0x00, 0x80, 0x24,
+ 0x10, 0xe2, 0x00, 0x00, 0x60, 0x42, 0x41, 0x30,
+ 0x32, 0xe0, 0x00, 0x10, 0x61, 0x22, 0xa1, 0xc1,
+ 0x70, 0xe0, 0x20, 0x00, 0x00, 0x3a, 0x3c, 0x00,
+ 0x54, 0x06, 0x00, 0x00, 0x21, 0xc4, 0x70, 0xe0,
+ 0x0f, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1,
+ 0xff, 0x24, 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0,
+ 0x17, 0x00, 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0,
+ 0x09, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1,
+ 0xff, 0x28, 0x82, 0xe3, 0x21, 0xc4, 0x70, 0xe0,
+ 0x00, 0x04, 0xa0, 0x21, 0xff, 0x2c, 0x82, 0x23,
+ 0x21, 0xc2, 0x70, 0xe0, 0x0e, 0x00, 0x00, 0x3a,
+ 0x3c, 0x00, 0x90, 0x06, 0x00, 0x00, 0x00, 0xc0,
+ 0x70, 0xe2, 0x83, 0x00, 0x00, 0x2a, 0x20, 0x04,
+ 0xa0, 0x21, 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3,
+ 0x70, 0xe0, 0x00, 0x13, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0xa1, 0xc2, 0x70, 0xe0, 0x80, 0x12,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc2,
+ 0x70, 0xe0, 0x00, 0x12, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x3c, 0x00, 0xcc, 0x06, 0x00, 0x00,
+ 0xa1, 0xc1, 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20,
+ 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0,
+ 0x00, 0x11, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0,
+ 0xa1, 0xc0, 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20,
+ 0x02, 0x20, 0xa2, 0xe0, 0x01, 0xc0, 0x70, 0xe0,
+ 0x00, 0x10, 0x41, 0x20, 0x02, 0x20, 0xb2, 0xe0,
+ 0xe5, 0xff, 0xff, 0x2a, 0xc3, 0x0f, 0x32, 0xe0,
+ 0xa3, 0x0f, 0x80, 0xe0, 0x3c, 0x00, 0x08, 0x07,
+ 0x00, 0x00, 0x00, 0x10, 0x61, 0x22, 0x1e, 0xff,
+ 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0x00, 0x20,
+ 0xa0, 0xe3, 0xa1, 0xc1, 0x70, 0xe0, 0x20, 0x00,
+ 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x0f, 0x00,
+ 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0xff, 0x24,
+ 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, 0x17, 0x00,
+ 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x09, 0x00,
+ 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0x3c, 0x00,
+ 0x44, 0x07, 0x00, 0x00, 0xff, 0x28, 0x82, 0xe3,
+ 0x21, 0xc4, 0x70, 0xe0, 0x00, 0x04, 0xa0, 0x21,
+ 0xff, 0x2c, 0x82, 0x23, 0x21, 0xc2, 0x70, 0xe0,
+ 0x0e, 0x00, 0x00, 0x3a, 0x00, 0xc0, 0x70, 0xe2,
+ 0x50, 0x00, 0x00, 0x2a, 0x20, 0x04, 0xa0, 0x21,
+ 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, 0x41, 0x20,
+ 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, 0x70, 0xe0,
+ 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0,
+ 0x3c, 0x00, 0x80, 0x07, 0x00, 0x00, 0xa1, 0xc2,
+ 0x70, 0xe0, 0x80, 0x12, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x21, 0xc2, 0x70, 0xe0, 0x00, 0x12,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc1,
+ 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, 0x00, 0x11,
+ 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc0,
+ 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, 0x02, 0x20,
+ 0xa2, 0xe0, 0x3c, 0x00, 0xbc, 0x07, 0x00, 0x00,
+ 0x01, 0xc0, 0x70, 0xe0, 0x00, 0x10, 0x41, 0x20,
+ 0x02, 0x20, 0xb2, 0xe0, 0xe5, 0xff, 0xff, 0x2a,
+ 0x02, 0x00, 0xa0, 0xe1, 0x1e, 0xff, 0x2f, 0xe1,
+ 0x78, 0x47, 0x00, 0x00, 0x0a, 0x10, 0x40, 0xe2,
+ 0x20, 0x01, 0x40, 0xe0, 0x20, 0x02, 0x80, 0xe0,
+ 0x20, 0x04, 0x80, 0xe0, 0x20, 0x08, 0x80, 0xe0,
+ 0xa0, 0x01, 0xa0, 0xe1, 0x00, 0x21, 0x80, 0xe0,
+ 0x82, 0x10, 0x51, 0xe0, 0x3c, 0x00, 0xf8, 0x07,
+ 0x00, 0x00, 0x01, 0x00, 0x80, 0x52, 0x0a, 0x10,
+ 0x81, 0x42, 0x1e, 0xff, 0x2f, 0xe1, 0x30, 0xb4,
+ 0x44, 0x1c, 0x81, 0x07, 0x08, 0xd0, 0x01, 0x78,
+ 0x01, 0x30, 0x00, 0x29, 0x02, 0xd1, 0x00, 0x1b,
+ 0x30, 0xbc, 0x70, 0x47, 0x81, 0x07, 0xf6, 0xd1,
+ 0x0b, 0x4a, 0xd5, 0x01, 0x02, 0xc8, 0x8b, 0x1a,
+ 0x8b, 0x43, 0x2b, 0x40, 0xfa, 0xd0, 0x00, 0x1b,
+ 0x0a, 0x06, 0x01, 0xd1, 0x03, 0x38, 0x3c, 0x00,
+ 0x34, 0x08, 0x00, 0x00, 0xef, 0xe7, 0x0a, 0x04,
+ 0x12, 0x0e, 0x01, 0xd1, 0x02, 0x38, 0xea, 0xe7,
+ 0x09, 0x02, 0x09, 0x0e, 0xe7, 0xd1, 0x01, 0x38,
+ 0xe5, 0xe7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+ 0xf0, 0xb4, 0x03, 0x1c, 0x04, 0x1c, 0x0c, 0x43,
+ 0xa4, 0x07, 0x0c, 0xd1, 0x10, 0x4d, 0xef, 0x01,
+ 0x02, 0xe0, 0x04, 0x31, 0x04, 0x3a, 0x10, 0xc3,
+ 0x04, 0x2a, 0x04, 0xd3, 0x0c, 0x68, 0x66, 0x1b,
+ 0x3c, 0x00, 0x70, 0x08, 0x00, 0x00, 0xa6, 0x43,
+ 0x3e, 0x40, 0xf5, 0xd0, 0x00, 0x2a, 0x07, 0xd0,
+ 0x0c, 0x78, 0x01, 0x31, 0x1c, 0x70, 0x01, 0x33,
+ 0x00, 0x2c, 0x03, 0xd0, 0x01, 0x3a, 0xf7, 0xd1,
+ 0xf0, 0xbc, 0x70, 0x47, 0x01, 0x2a, 0xfb, 0xd9,
+ 0x51, 0x1e, 0x00, 0x22, 0x1a, 0x70, 0x01, 0x33,
+ 0x01, 0x39, 0xfb, 0xd1, 0xf4, 0xe7, 0x01, 0x01,
+ 0x01, 0x01, 0x78, 0x47, 0x00, 0x00, 0x02, 0x00,
+ 0xa0, 0xe3, 0x3c, 0x00, 0xac, 0x08, 0x00, 0x00,
+ 0x02, 0x10, 0xa0, 0xe3, 0x2e, 0xfe, 0xff, 0xea,
+ 0x1f, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0x0f, 0xe1,
+ 0xc0, 0x00, 0x80, 0xe3, 0x00, 0xf0, 0x2f, 0xe1,
+ 0x81, 0x00, 0xa0, 0xe3, 0x02, 0x10, 0xa0, 0xe3,
+ 0x01, 0x20, 0x8f, 0xe2, 0x12, 0xff, 0x2f, 0xe1,
+ 0x00, 0xf0, 0xe6, 0xfc, 0x78, 0x47, 0x00, 0x00,
+ 0x1f, 0x40, 0xbd, 0xe8, 0xfe, 0xff, 0xff, 0xea,
+ 0x1f, 0x50, 0x2d, 0xe9, 0x3c, 0x00, 0xe8, 0x08,
+ 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff,
+ 0x2f, 0xe1, 0x00, 0xf0, 0x40, 0xfb, 0x78, 0x47,
+ 0x00, 0x00, 0x1f, 0x50, 0xbd, 0xe8, 0x04, 0xf0,
+ 0x5e, 0xe2, 0x1f, 0x50, 0x2d, 0xe9, 0x01, 0x00,
+ 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0xf0,
+ 0x18, 0xfb, 0x78, 0x47, 0x00, 0x00, 0x1f, 0x50,
+ 0xbd, 0xe8, 0x04, 0xf0, 0x5e, 0xe2, 0x00, 0xbd,
+ 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, 0x3c, 0x00,
+ 0x24, 0x09, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xe1,
+ 0xc0, 0x30, 0xc3, 0xe3, 0x03, 0xf0, 0x21, 0xe1,
+ 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1,
+ 0x01, 0xbd, 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47,
+ 0x00, 0x30, 0x0f, 0xe1, 0xc0, 0x30, 0x83, 0xe3,
+ 0x03, 0xf0, 0x21, 0xe1, 0x01, 0x00, 0x8f, 0xe2,
+ 0x10, 0xff, 0x2f, 0xe1, 0x01, 0xbd, 0x00, 0x00,
+ 0x18, 0x00, 0x9f, 0xe5, 0x04, 0x10, 0x90, 0xe4,
+ 0x3c, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x00,
+ 0x51, 0xe3, 0x02, 0x00, 0x00, 0x0a, 0x04, 0x20,
+ 0x90, 0xe4, 0x00, 0x20, 0x81, 0xe5, 0xf9, 0xff,
+ 0xff, 0xea, 0x0e, 0xf0, 0xa0, 0xe1, 0x7c, 0x09,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00,
+ 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd8, 0x03,
+ 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0xd8, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x09, 0x00, 0x00,
+ 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
+ 0x44, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+ 0x00, 0x80, 0x01, 0x00, 0x10, 0x8e, 0x01, 0x00,
+ 0x10, 0x8e, 0x01, 0x00, 0x88, 0xf8, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00,
+ 0xc4, 0x33, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1,
+ 0x58, 0x40, 0x9f, 0xe5, 0x3c, 0x00, 0xd8, 0x09,
+ 0x00, 0x00, 0x04, 0x00, 0x94, 0xe4, 0x01, 0x00,
+ 0x50, 0xe3, 0x05, 0xf0, 0xa0, 0x01, 0x04, 0x10,
+ 0x94, 0xe4, 0x04, 0x20, 0x94, 0xe4, 0x03, 0x00,
+ 0x00, 0xeb, 0x04, 0x00, 0x94, 0xe4, 0x04, 0x10,
+ 0x94, 0xe4, 0x07, 0x00, 0x00, 0xeb, 0xf5, 0xff,
+ 0xff, 0xea, 0x01, 0x00, 0x50, 0xe1, 0x0e, 0xf0,
+ 0xa0, 0x01, 0x02, 0x00, 0x51, 0xe1, 0x04, 0x30,
+ 0x90, 0x14, 0x04, 0x30, 0x81, 0x14, 0x3c, 0x00,
+ 0x14, 0x0a, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x1a,
+ 0x0e, 0xf0, 0xa0, 0xe1, 0x14, 0x20, 0x9f, 0xe5,
+ 0x00, 0x20, 0x92, 0xe5, 0x01, 0x00, 0x50, 0xe1,
+ 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a,
+ 0x0e, 0xf0, 0xa0, 0xe1, 0x80, 0x09, 0x00, 0x00,
+ 0xcc, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x20, 0xe6, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00,
+ 0x53, 0x56, 0x43, 0x5f, 0x00, 0x04, 0x00, 0x00,
+ 0x3c, 0x00, 0x50, 0x0a, 0x00, 0x00, 0x20, 0xee,
+ 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x49, 0x52,
+ 0x51, 0x5f, 0x00, 0x02, 0x00, 0x00, 0x20, 0xf2,
+ 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x49,
+ 0x51, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x20, 0xf4,
+ 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x42,
+ 0x54, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4,
+ 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x55, 0x4e,
+ 0x44, 0x5f, 0x3c, 0x00, 0x8c, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, 0x01, 0x00,
+ 0x1f, 0x00, 0x00, 0x00, 0x55, 0x53, 0x52, 0x5f,
+ 0x01, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1,
+ 0x00, 0x60, 0x0f, 0xe1, 0x8c, 0x40, 0x9f, 0xe5,
+ 0x04, 0x10, 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3,
+ 0x09, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4,
+ 0x01, 0x10, 0x80, 0xe0, 0x03, 0x10, 0xc1, 0xe3,
+ 0x04, 0x20, 0x94, 0xe4, 0x3c, 0x00, 0xc8, 0x0a,
+ 0x00, 0x00, 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0,
+ 0x2f, 0xe1, 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20,
+ 0x94, 0xe4, 0x13, 0x00, 0x00, 0xeb, 0xf2, 0xff,
+ 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, 0x05, 0xf0,
+ 0xa0, 0xe1, 0x0e, 0x50, 0xa0, 0xe1, 0x00, 0x60,
+ 0x0f, 0xe1, 0x44, 0x40, 0x9f, 0xe5, 0x04, 0x10,
+ 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, 0x08, 0x00,
+ 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, 0x3c, 0x00,
+ 0x04, 0x0b, 0x00, 0x00, 0x01, 0x10, 0x80, 0xe0,
+ 0x03, 0x10, 0xc1, 0xe3, 0x04, 0x20, 0x94, 0xe4,
+ 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, 0x2f, 0xe1,
+ 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, 0x94, 0xe4,
+ 0xf3, 0xff, 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1,
+ 0x05, 0xf0, 0xa0, 0xe1, 0x01, 0x00, 0x50, 0xe1,
+ 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a,
+ 0x0e, 0xf0, 0xa0, 0xe1, 0x3c, 0x0a, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x01, 0x60,
+ 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0x70, 0x47,
+ 0x00, 0x00, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00,
+ 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x10, 0x0e,
+ 0x01, 0xee, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00,
+ 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x1e, 0xff,
+ 0x2f, 0xe1, 0x10, 0x1e, 0x10, 0xee, 0x01, 0x00,
+ 0x11, 0xe3, 0x03, 0x00, 0x00, 0x0a, 0x10, 0x1e,
+ 0x11, 0xee, 0x3c, 0x00, 0x7c, 0x0b, 0x00, 0x00,
+ 0x00, 0x10, 0x80, 0xe5, 0x01, 0x00, 0xa0, 0xe3,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x20, 0xe0,
+ 0x1e, 0xff, 0x2f, 0xe1, 0x8d, 0x46, 0x97, 0x46,
+ 0x78, 0x47, 0xc0, 0x46, 0x78, 0xfd, 0xff, 0xea,
+ 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x28, 0x01, 0xd9,
+ 0x00, 0xf0, 0xac, 0xfb, 0x0c, 0x48, 0x40, 0x68,
+ 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, 0x0b, 0x48,
+ 0x01, 0x68, 0x09, 0x48, 0x3c, 0x00, 0xb8, 0x0b,
+ 0x00, 0x00, 0x12, 0x30, 0x00, 0x29, 0x05, 0xd0,
+ 0x06, 0x21, 0x61, 0x43, 0x40, 0x5c, 0xc3, 0x00,
+ 0x18, 0x18, 0x04, 0xe0, 0x06, 0x21, 0x61, 0x43,
+ 0x40, 0x5c, 0x14, 0x23, 0x58, 0x43, 0x0a, 0x30,
+ 0x00, 0x06, 0x00, 0x0e, 0x10, 0xbd, 0xd4, 0x7a,
+ 0x01, 0x00, 0xa8, 0x69, 0x01, 0x00, 0x80, 0xb5,
+ 0x09, 0x4a, 0x09, 0x49, 0x03, 0x20, 0x00, 0xf0,
+ 0xf2, 0xf9, 0x08, 0x49, 0x08, 0x20, 0x3c, 0x00,
+ 0xf4, 0x0b, 0x00, 0x00, 0x08, 0x60, 0x48, 0x60,
+ 0x07, 0x49, 0x1d, 0x20, 0x01, 0xf0, 0xb2, 0xfc,
+ 0x06, 0x49, 0x1e, 0x20, 0x01, 0xf0, 0xae, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00,
+ 0x31, 0x27, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x29, 0x25, 0x00, 0x00, 0x31, 0x25, 0x00, 0x00,
+ 0x05, 0x49, 0x80, 0xb5, 0x08, 0x20, 0x88, 0x60,
+ 0x1d, 0x20, 0x01, 0xf0, 0xbf, 0xfc, 0x1e, 0x20,
+ 0x3c, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x01, 0xf0,
+ 0xbc, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xd1, 0x2a,
+ 0x80, 0xb5, 0x01, 0xd1, 0x05, 0xf0, 0x19, 0xfc,
+ 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20,
+ 0x08, 0x80, 0x05, 0x20, 0x05, 0xf0, 0xd5, 0xfb,
+ 0x80, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x80, 0xb5,
+ 0x54, 0x28, 0x01, 0xd1, 0x06, 0xf0, 0xcd, 0xf8,
+ 0x80, 0xbd, 0x3c, 0x00, 0x6c, 0x0c, 0x00, 0x00,
+ 0xb0, 0xb5, 0x10, 0x4d, 0x02, 0x1c, 0x01, 0x24,
+ 0x01, 0x2a, 0x0d, 0x48, 0x29, 0x68, 0x06, 0xd0,
+ 0xc4, 0x2a, 0x03, 0xd1, 0x6a, 0x68, 0x00, 0x2a,
+ 0x05, 0xd0, 0xac, 0x60, 0xb0, 0xbd, 0x0e, 0xf0,
+ 0x89, 0xfb, 0x6c, 0x60, 0x08, 0xe0, 0x00, 0x22,
+ 0xaa, 0x60, 0x6c, 0x60, 0x0e, 0xf0, 0x82, 0xfb,
+ 0x00, 0x21, 0x04, 0x20, 0x12, 0xf0, 0xc8, 0xfc,
+ 0x06, 0xf0, 0xd8, 0xf8, 0x3c, 0x00, 0xa8, 0x0c,
+ 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x60,
+ 0x01, 0x00, 0xbc, 0x74, 0x01, 0x00, 0x05, 0x4a,
+ 0x51, 0x69, 0x08, 0x1a, 0x11, 0x69, 0x09, 0x68,
+ 0x10, 0x31, 0x81, 0x42, 0x01, 0xd8, 0x50, 0x61,
+ 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x8c, 0x6e,
+ 0x01, 0x00, 0x01, 0x49, 0x49, 0x68, 0x40, 0x1a,
+ 0x70, 0x47, 0x8c, 0x6e, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x69, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0x0c, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00,
+ 0x02, 0x4a, 0x51, 0x69, 0x08, 0x18, 0x50, 0x61,
+ 0x70, 0x47, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00,
+ 0x0e, 0x49, 0x0f, 0x48, 0x10, 0xb5, 0x19, 0x22,
+ 0x92, 0x01, 0x41, 0x60, 0x89, 0x18, 0xc1, 0x60,
+ 0x0b, 0x49, 0x00, 0x22, 0x0c, 0x31, 0x01, 0x60,
+ 0x0a, 0x49, 0x82, 0x60, 0x09, 0x68, 0x01, 0x23,
+ 0xdb, 0x03, 0xc9, 0x18, 0x08, 0x4c, 0x41, 0x61,
+ 0x3c, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x21, 0x68,
+ 0x00, 0x29, 0x02, 0xd0, 0x07, 0x49, 0x01, 0x61,
+ 0x01, 0xe0, 0x00, 0xf0, 0x0c, 0xf8, 0x22, 0x60,
+ 0x10, 0xbd, 0x44, 0xdc, 0x01, 0x00, 0x8c, 0x6e,
+ 0x01, 0x00, 0xc8, 0x09, 0x00, 0x00, 0x34, 0x58,
+ 0x01, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x01, 0x48,
+ 0x02, 0x49, 0x08, 0x61, 0x70, 0x47, 0xc8, 0x09,
+ 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, 0x08, 0x28,
+ 0x05, 0xd2, 0x3c, 0x00, 0x5c, 0x0d, 0x00, 0x00,
+ 0x03, 0x4b, 0x80, 0x00, 0x19, 0x50, 0x02, 0x49,
+ 0x20, 0x31, 0x0a, 0x50, 0x70, 0x47, 0x00, 0x00,
+ 0x64, 0x6d, 0x01, 0x00, 0x70, 0xb5, 0x06, 0x1c,
+ 0x0d, 0x48, 0x0d, 0x1c, 0x00, 0x68, 0x14, 0x1c,
+ 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0,
+ 0x09, 0xfc, 0x70, 0xbd, 0x28, 0x06, 0x01, 0xd5,
+ 0x00, 0xf0, 0x22, 0xfe, 0x22, 0x1c, 0x29, 0x1c,
+ 0x30, 0x1c, 0x08, 0xf0, 0x3c, 0x00, 0x98, 0x0d,
+ 0x00, 0x00, 0xdd, 0xfd, 0x01, 0x1c, 0x03, 0x48,
+ 0x54, 0x30, 0x43, 0x69, 0x32, 0x1c, 0xff, 0xf7,
+ 0x1b, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0x50, 0x6d,
+ 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0d, 0x48,
+ 0x1f, 0x1c, 0x00, 0x68, 0x15, 0x1c, 0x0c, 0x1c,
+ 0x00, 0x28, 0x02, 0xd1, 0x28, 0x1c, 0x00, 0xf0,
+ 0xe8, 0xfb, 0x20, 0x06, 0x01, 0xd5, 0x00, 0xf0,
+ 0x02, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, 0x3c, 0x00,
+ 0xd4, 0x0d, 0x00, 0x00, 0x30, 0x1c, 0x08, 0xf0,
+ 0xbd, 0xfd, 0x01, 0x1c, 0x03, 0x48, 0x54, 0x30,
+ 0x43, 0x69, 0x3a, 0x1c, 0xff, 0xf7, 0xfb, 0xfa,
+ 0xf8, 0xbd, 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00,
+ 0xf8, 0xb5, 0xf1, 0x28, 0x4e, 0xd1, 0x2a, 0x48,
+ 0x69, 0x46, 0x82, 0x69, 0xff, 0xf7, 0xee, 0xfa,
+ 0x27, 0x49, 0x00, 0x26, 0x54, 0x39, 0xc8, 0x68,
+ 0x8b, 0x68, 0xc2, 0x00, 0x01, 0x30, 0xd5, 0x18,
+ 0x3c, 0x00, 0x10, 0x0e, 0x00, 0x00, 0x07, 0x28,
+ 0xc8, 0x60, 0x00, 0xd1, 0xce, 0x60, 0x22, 0x48,
+ 0x6c, 0x68, 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0,
+ 0x00, 0x21, 0x20, 0x1c, 0x08, 0xf0, 0x3b, 0xfb,
+ 0x6e, 0x60, 0x25, 0x68, 0x20, 0x89, 0xa9, 0x78,
+ 0x02, 0x39, 0x40, 0x1a, 0xe9, 0x78, 0x40, 0x1a,
+ 0x20, 0x81, 0xa8, 0x78, 0x28, 0x18, 0x02, 0x38,
+ 0x20, 0x60, 0x6e, 0x78, 0x28, 0x78, 0x08, 0x28,
+ 0x17, 0xd2, 0x3c, 0x00, 0x4c, 0x0e, 0x00, 0x00,
+ 0x30, 0x06, 0x07, 0xd5, 0x27, 0x1c, 0x20, 0x1c,
+ 0x00, 0xf0, 0x7a, 0xfc, 0x04, 0x1c, 0x38, 0x1c,
+ 0x00, 0xf0, 0x9c, 0xfb, 0x28, 0x78, 0x0f, 0x49,
+ 0x40, 0x39, 0x80, 0x00, 0x0a, 0x58, 0x00, 0x2a,
+ 0x04, 0xd0, 0x31, 0x1c, 0x20, 0x1c, 0xff, 0xf7,
+ 0xb3, 0xfa, 0x08, 0xe0, 0x05, 0x21, 0x00, 0xe0,
+ 0x04, 0x21, 0x06, 0x20, 0x00, 0xf0, 0x10, 0xfa,
+ 0x20, 0x1c, 0x00, 0xf0, 0x3c, 0x00, 0x88, 0x0e,
+ 0x00, 0x00, 0x87, 0xfb, 0x30, 0x06, 0x01, 0xd5,
+ 0x00, 0xf0, 0xa1, 0xfd, 0xf8, 0xbd, 0x01, 0x21,
+ 0x06, 0x20, 0x00, 0xf0, 0x04, 0xfa, 0xf9, 0xe7,
+ 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, 0xcc, 0x5c,
+ 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, 0x19, 0x4f,
+ 0x01, 0x24, 0x54, 0x35, 0x29, 0x1c, 0x03, 0x20,
+ 0x7c, 0x60, 0x17, 0x4b, 0x18, 0x4a, 0x05, 0xf0,
+ 0xf4, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x3c, 0x00,
+ 0xc4, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x38, 0x60,
+ 0x1f, 0xe0, 0x3c, 0x60, 0x07, 0x21, 0x28, 0x1c,
+ 0xea, 0x69, 0xff, 0xf7, 0x83, 0xfa, 0x38, 0x20,
+ 0x00, 0xf0, 0x80, 0xfc, 0x00, 0x24, 0xb8, 0x60,
+ 0xb8, 0x68, 0xe6, 0x00, 0x35, 0x18, 0x68, 0x46,
+ 0x02, 0x21, 0x00, 0xf0, 0x75, 0xfb, 0x28, 0x60,
+ 0x28, 0x1c, 0x00, 0xf0, 0xa5, 0xfd, 0xb8, 0x68,
+ 0x81, 0x59, 0x06, 0x48, 0x54, 0x30, 0x02, 0x6a,
+ 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xf7,
+ 0x6c, 0xfa, 0x01, 0x34, 0x07, 0x2c, 0xea, 0xdb,
+ 0x00, 0x20, 0xf8, 0x60, 0x38, 0x61, 0xf8, 0xbd,
+ 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, 0x81, 0x9a,
+ 0x00, 0x00, 0x61, 0x9a, 0x00, 0x00, 0x05, 0x48,
+ 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0,
+ 0x03, 0x48, 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21,
+ 0xff, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0x50, 0x6d,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0xb5, 0x0a, 0x4e,
+ 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, 0xa1, 0x69,
+ 0x00, 0x29, 0x07, 0xd0, 0x30, 0x68, 0x41, 0x60,
+ 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, 0xff, 0xf7,
+ 0x3e, 0xfa, 0xf4, 0xe7, 0x03, 0x49, 0x02, 0x20,
+ 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, 0x07, 0x00,
+ 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00,
+ 0x70, 0xb5, 0x0a, 0x4e, 0x3c, 0x00, 0x78, 0x0f,
+ 0x00, 0x00, 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e,
+ 0xe1, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x70, 0x68,
+ 0x41, 0x60, 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58,
+ 0xff, 0xf7, 0x24, 0xfa, 0xf4, 0xe7, 0x03, 0x49,
+ 0x02, 0x20, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10,
+ 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02,
+ 0x07, 0x00, 0xb0, 0xb5, 0x09, 0x4d, 0x04, 0x1c,
+ 0x28, 0x1c, 0x20, 0x22, 0x40, 0x30, 0x3c, 0x00,
+ 0xb4, 0x0f, 0x00, 0x00, 0x05, 0x49, 0xff, 0xf7,
+ 0x9f, 0xfa, 0xe0, 0x68, 0xe8, 0x60, 0x20, 0x69,
+ 0x28, 0x61, 0xa0, 0x6a, 0xa8, 0x62, 0x60, 0x68,
+ 0x68, 0x60, 0xb0, 0xbd, 0x70, 0x52, 0x01, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x00, 0x24,
+ 0x00, 0x23, 0x20, 0x28, 0x01, 0xdb, 0x01, 0x24,
+ 0x07, 0xe0, 0x08, 0x4e, 0x80, 0x00, 0x35, 0x58,
+ 0x07, 0x4f, 0xbd, 0x42, 0x00, 0xd0, 0x2b, 0x1c,
+ 0x3c, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x31, 0x50,
+ 0x13, 0x60, 0x00, 0x2c, 0x03, 0xd0, 0x21, 0x1c,
+ 0x82, 0x20, 0x00, 0xf0, 0x52, 0xf9, 0x20, 0x1c,
+ 0xf8, 0xbd, 0xe0, 0x7e, 0x01, 0x00, 0x75, 0x75,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0b, 0x4d, 0x04, 0x1c,
+ 0x28, 0x68, 0x00, 0x28, 0x0f, 0xd0, 0x20, 0x1c,
+ 0x12, 0xf0, 0xb7, 0xfd, 0x00, 0x28, 0x0a, 0xd0,
+ 0x21, 0x7a, 0x28, 0x7a, 0x0a, 0x07, 0x00, 0x07,
+ 0x00, 0x0f, 0x3c, 0x00, 0x2c, 0x10, 0x00, 0x00,
+ 0x12, 0x0f, 0x90, 0x42, 0x29, 0x72, 0x01, 0xd0,
+ 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd,
+ 0x70, 0x78, 0x01, 0x00, 0xf0, 0xb5, 0x42, 0x4e,
+ 0x05, 0x1c, 0x30, 0x68, 0x85, 0xb0, 0x00, 0x28,
+ 0x63, 0xd0, 0x00, 0x24, 0x00, 0x20, 0x00, 0x2d,
+ 0x06, 0xd0, 0x69, 0x78, 0x18, 0x29, 0x03, 0xd1,
+ 0xe9, 0x79, 0x01, 0x29, 0x00, 0xd1, 0x01, 0x20,
+ 0x00, 0x28, 0x45, 0xd0, 0x3c, 0x00, 0x68, 0x10,
+ 0x00, 0x00, 0x00, 0x20, 0xb0, 0x72, 0x81, 0x00,
+ 0x4a, 0x19, 0x93, 0x7a, 0x59, 0x06, 0x89, 0x0f,
+ 0xdb, 0x06, 0x04, 0xd5, 0xb3, 0x7a, 0x01, 0x27,
+ 0x8f, 0x40, 0x3b, 0x43, 0xb3, 0x72, 0xd2, 0x7a,
+ 0x13, 0x09, 0x12, 0x07, 0x12, 0x0f, 0x93, 0x42,
+ 0x05, 0xd3, 0x01, 0x22, 0x8a, 0x40, 0x14, 0x43,
+ 0x01, 0xaa, 0x89, 0x00, 0x50, 0x50, 0x01, 0x30,
+ 0x04, 0x28, 0xe4, 0xdb, 0xb0, 0x7a, 0x3c, 0x00,
+ 0xa4, 0x10, 0x00, 0x00, 0x20, 0x40, 0x01, 0x07,
+ 0x0d, 0xd5, 0x41, 0x07, 0x09, 0xd5, 0xc1, 0x07,
+ 0x05, 0xd5, 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24,
+ 0x05, 0xe0, 0x02, 0x99, 0x02, 0xe0, 0x01, 0x99,
+ 0x00, 0xe0, 0x03, 0x99, 0x04, 0x91, 0x41, 0x07,
+ 0x09, 0xd5, 0xc1, 0x07, 0x05, 0xd5, 0x81, 0x07,
+ 0x01, 0xd5, 0x00, 0x24, 0x03, 0xe0, 0x02, 0x99,
+ 0x00, 0xe0, 0x01, 0x99, 0x03, 0x91, 0xc1, 0x07,
+ 0x3c, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x05, 0xd5,
+ 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, 0x01, 0xe0,
+ 0x02, 0x99, 0x01, 0x91, 0x80, 0x07, 0x01, 0xd5,
+ 0x00, 0x24, 0x22, 0xe0, 0x0f, 0x2c, 0x20, 0xd1,
+ 0x70, 0x68, 0x00, 0x28, 0x0b, 0xd0, 0x04, 0x9a,
+ 0x02, 0xab, 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a,
+ 0x28, 0x1c, 0x0b, 0xf0, 0x8a, 0xfb, 0x00, 0x20,
+ 0x70, 0x60, 0x10, 0xe0, 0x17, 0xe0, 0x30, 0x7a,
+ 0x29, 0x7a, 0x3c, 0x00, 0x1c, 0x11, 0x00, 0x00,
+ 0x00, 0x07, 0x09, 0x07, 0x09, 0x0f, 0x00, 0x0f,
+ 0x88, 0x42, 0x07, 0xd0, 0x04, 0x9a, 0x02, 0xab,
+ 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, 0x28, 0x1c,
+ 0x0b, 0xf0, 0x76, 0xfb, 0x28, 0x7a, 0x30, 0x72,
+ 0x01, 0x20, 0x0f, 0x2c, 0x00, 0xd0, 0x00, 0x20,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x01, 0x20, 0xfb, 0xe7,
+ 0x70, 0x78, 0x01, 0x00, 0x0d, 0x4a, 0x70, 0xb5,
+ 0x11, 0x68, 0x00, 0x20, 0x3c, 0x00, 0x58, 0x11,
+ 0x00, 0x00, 0x00, 0x29, 0x0e, 0xd0, 0x11, 0x7a,
+ 0x09, 0x06, 0x0b, 0xd5, 0x53, 0x7a, 0x94, 0x7a,
+ 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40,
+ 0x1e, 0x1c, 0x16, 0x40, 0x03, 0xd0, 0x22, 0x40,
+ 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0xff, 0x31,
+ 0x09, 0x06, 0x09, 0x16, 0xf2, 0xd5, 0x70, 0xbd,
+ 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x10, 0xb5,
+ 0x08, 0x4c, 0x20, 0x68, 0x00, 0x28, 0x3c, 0x00,
+ 0x94, 0x11, 0x00, 0x00, 0x04, 0xd0, 0x60, 0x68,
+ 0x00, 0x28, 0x01, 0xd1, 0x0b, 0xf0, 0xc0, 0xfb,
+ 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x07, 0xc4,
+ 0x0c, 0x3c, 0x01, 0x20, 0x60, 0x60, 0x10, 0xbd,
+ 0x70, 0x78, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0x08, 0x60, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0e, 0x4d, 0x04, 0x1c, 0x00, 0x20,
+ 0x68, 0x72, 0x20, 0x1c, 0x12, 0xf0, 0xde, 0xfc,
+ 0x3c, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x28,
+ 0x12, 0xd0, 0x00, 0x20, 0x03, 0x21, 0x01, 0x22,
+ 0x0f, 0x1a, 0x16, 0x1c, 0x23, 0x7a, 0xbe, 0x40,
+ 0x33, 0x40, 0x04, 0xd0, 0x6b, 0x7a, 0x16, 0x1c,
+ 0x86, 0x40, 0x33, 0x43, 0x6b, 0x72, 0x01, 0x30,
+ 0x00, 0x06, 0x00, 0x0e, 0x03, 0x28, 0xef, 0xd9,
+ 0xf8, 0xbd, 0x70, 0x78, 0x01, 0x00, 0x92, 0x00,
+ 0x51, 0x18, 0x8a, 0x7a, 0x12, 0x07, 0x12, 0x0f,
+ 0x02, 0x70, 0x3c, 0x00, 0x0c, 0x12, 0x00, 0x00,
+ 0xca, 0x7a, 0x12, 0x07, 0x12, 0x0f, 0x42, 0x70,
+ 0xca, 0x7a, 0x12, 0x09, 0x82, 0x70, 0x09, 0x7b,
+ 0x81, 0x80, 0x70, 0x47, 0x03, 0x4a, 0x0f, 0x21,
+ 0x52, 0x7a, 0x01, 0x20, 0x91, 0x43, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00,
+ 0x40, 0x07, 0x05, 0x49, 0x40, 0x0f, 0x05, 0x4a,
+ 0x09, 0x56, 0x52, 0x7a, 0x01, 0x20, 0x0a, 0x40,
+ 0x00, 0xd1, 0x00, 0x20, 0x3c, 0x00, 0x48, 0x12,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x5e, 0x46,
+ 0x01, 0x00, 0x70, 0x78, 0x01, 0x00, 0x12, 0x4a,
+ 0x70, 0xb5, 0x53, 0x7a, 0x94, 0x7a, 0xff, 0x20,
+ 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40,
+ 0x1e, 0x1c, 0x16, 0x40, 0x14, 0xd0, 0x22, 0x40,
+ 0x12, 0xd1, 0x08, 0x06, 0x00, 0x0e, 0x07, 0xd0,
+ 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x07, 0xd0,
+ 0x03, 0x28, 0x07, 0xd1, 0x07, 0x20, 0x3c, 0x00,
+ 0x84, 0x12, 0x00, 0x00, 0x70, 0xbd, 0x03, 0x20,
+ 0x70, 0xbd, 0x01, 0x20, 0x70, 0xbd, 0x05, 0x20,
+ 0x70, 0xbd, 0xff, 0x20, 0x70, 0xbd, 0xff, 0x31,
+ 0x09, 0x06, 0x09, 0x16, 0xe1, 0xd5, 0x70, 0xbd,
+ 0x70, 0x78, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x13, 0x48, 0x0d, 0x1c, 0x81, 0x68, 0x00, 0x29,
+ 0x05, 0xd0, 0x01, 0x7b, 0x00, 0x29, 0x01, 0xd1,
+ 0x04, 0x73, 0x45, 0x73, 0xf8, 0xbd, 0x0f, 0x4e,
+ 0x3c, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x31, 0x1c,
+ 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, 0x1a, 0x70,
+ 0xc9, 0x79, 0x59, 0x70, 0x42, 0x68, 0x00, 0x2a,
+ 0x07, 0xd0, 0x20, 0x02, 0x28, 0x43, 0x01, 0x1c,
+ 0x00, 0x20, 0xff, 0xf7, 0x7e, 0xf8, 0x00, 0x28,
+ 0x04, 0xd1, 0x2a, 0x1c, 0x21, 0x1c, 0x00, 0x20,
+ 0x11, 0xf0, 0x0f, 0xf8, 0x00, 0xab, 0x18, 0x88,
+ 0xf0, 0x84, 0xe2, 0xe7, 0x00, 0x00, 0x88, 0x5a,
+ 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x12, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x81, 0x20, 0xff, 0xf7, 0xcd, 0xff, 0x80, 0xbd,
+ 0x01, 0x49, 0x01, 0x20, 0x88, 0x60, 0x70, 0x47,
+ 0x88, 0x5a, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0x88, 0x60, 0x08, 0x7b, 0x00, 0x28,
+ 0x02, 0xd0, 0x49, 0x7b, 0xff, 0xf7, 0xbc, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00,
+ 0x02, 0x4a, 0x01, 0x1c, 0x3c, 0x00, 0x38, 0x13,
+ 0x00, 0x00, 0x50, 0x68, 0x51, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x10, 0xb5,
+ 0x0c, 0x1c, 0x07, 0xf0, 0x64, 0xfa, 0x04, 0x61,
+ 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, 0xff, 0xb5,
+ 0x0e, 0x1c, 0x1f, 0x1c, 0x38, 0x20, 0x81, 0xb0,
+ 0x00, 0xf0, 0x3d, 0xfa, 0x1d, 0x49, 0x04, 0x1c,
+ 0x48, 0x69, 0x00, 0x28, 0x01, 0xd1, 0x4c, 0x61,
+ 0x00, 0xe0, 0x04, 0x60, 0x30, 0x01, 0x3c, 0x00,
+ 0x74, 0x13, 0x00, 0x00, 0x00, 0x90, 0x00, 0x04,
+ 0x00, 0x0c, 0x00, 0xf0, 0x15, 0xfa, 0x05, 0x1c,
+ 0x00, 0x99, 0xff, 0xf7, 0x8b, 0xf8, 0x00, 0x20,
+ 0x73, 0x1e, 0x04, 0xe0, 0x01, 0x01, 0x4a, 0x19,
+ 0x10, 0x32, 0x6a, 0x50, 0x01, 0x30, 0x98, 0x42,
+ 0xf8, 0xd3, 0x00, 0x01, 0x2d, 0x50, 0x38, 0x21,
+ 0x20, 0x1c, 0xff, 0xf7, 0x7b, 0xf8, 0xa5, 0x60,
+ 0x65, 0x60, 0xe6, 0x85, 0x0c, 0x20, 0x60, 0x86,
+ 0x3c, 0x00, 0xb0, 0x13, 0x00, 0x00, 0xaf, 0x20,
+ 0x80, 0x01, 0xe0, 0x61, 0x0e, 0x20, 0xe0, 0x86,
+ 0x00, 0x20, 0x20, 0x60, 0x01, 0x98, 0xe0, 0x60,
+ 0x38, 0x68, 0x60, 0x61, 0x03, 0x99, 0x04, 0x48,
+ 0x08, 0x60, 0x04, 0x48, 0x38, 0x60, 0x05, 0xb0,
+ 0x00, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xfc, 0x5a,
+ 0x01, 0x00, 0xdd, 0x15, 0x01, 0x00, 0xfd, 0x16,
+ 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xf0, 0x2a,
+ 0x80, 0xb5, 0x3c, 0x00, 0xec, 0x13, 0x00, 0x00,
+ 0x04, 0xd0, 0xf1, 0x2a, 0x07, 0xd1, 0x06, 0xf0,
+ 0x09, 0xfb, 0x80, 0xbd, 0x07, 0xf0, 0x0c, 0xfa,
+ 0x0d, 0xf0, 0xa8, 0xfa, 0x80, 0xbd, 0x01, 0x21,
+ 0x02, 0x20, 0xff, 0xf7, 0x4d, 0xff, 0x80, 0xbd,
+ 0x01, 0x49, 0x00, 0x20, 0x48, 0x61, 0x70, 0x47,
+ 0xfc, 0x5a, 0x01, 0x00, 0x00, 0x28, 0x02, 0xd0,
+ 0x00, 0x29, 0x00, 0xd0, 0xc1, 0x60, 0x70, 0x47,
+ 0xf8, 0xb5, 0x17, 0x1c, 0x3c, 0x00, 0x28, 0x14,
+ 0x00, 0x00, 0x0e, 0x1c, 0x05, 0x1c, 0x1c, 0x1c,
+ 0x1c, 0x30, 0x07, 0xf0, 0xc8, 0xf8, 0x01, 0x69,
+ 0x42, 0x69, 0x80, 0x68, 0x89, 0x19, 0x89, 0x1a,
+ 0x81, 0x42, 0x06, 0xd2, 0x23, 0x1c, 0x3a, 0x1c,
+ 0x31, 0x1c, 0x28, 0x1c, 0x00, 0xf0, 0x05, 0xf8,
+ 0xf8, 0xbd, 0x00, 0x20, 0x38, 0x60, 0x20, 0x60,
+ 0xfa, 0xe7, 0xff, 0xb5, 0x85, 0xb0, 0x05, 0x98,
+ 0x01, 0x27, 0x0e, 0x1c, 0x1c, 0x30, 0x3c, 0x00,
+ 0x64, 0x14, 0x00, 0x00, 0x07, 0xf0, 0xae, 0xf8,
+ 0x04, 0x1c, 0x80, 0x88, 0x04, 0x30, 0x03, 0x90,
+ 0x2c, 0x48, 0x04, 0x90, 0x80, 0x79, 0x02, 0x90,
+ 0xa0, 0x69, 0xb0, 0x42, 0x17, 0xd2, 0x35, 0x1a,
+ 0x11, 0xe0, 0x03, 0x98, 0xff, 0xf7, 0x16, 0xfc,
+ 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, 0x8e, 0x20,
+ 0xff, 0xf7, 0x08, 0xff, 0x00, 0x25, 0x00, 0x27,
+ 0x05, 0xe0, 0x21, 0x68, 0x01, 0x60, 0x20, 0x60,
+ 0x3c, 0x00, 0xa0, 0x14, 0x00, 0x00, 0xa0, 0x69,
+ 0x01, 0x30, 0xa0, 0x61, 0x01, 0x3d, 0xeb, 0xd2,
+ 0x00, 0x2f, 0x35, 0xd0, 0xa0, 0x69, 0x80, 0x1b,
+ 0xa0, 0x61, 0x20, 0x69, 0x80, 0x19, 0x20, 0x61,
+ 0x61, 0x69, 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42,
+ 0x03, 0xd9, 0x07, 0x21, 0x8e, 0x20, 0xff, 0xf7,
+ 0xec, 0xfe, 0x25, 0x68, 0x2f, 0x1c, 0x70, 0x1e,
+ 0x01, 0x95, 0x00, 0xe0, 0x3f, 0x68, 0x01, 0x38,
+ 0xfc, 0xd2, 0x3c, 0x00, 0xdc, 0x14, 0x00, 0x00,
+ 0x38, 0x68, 0x20, 0x60, 0x02, 0x98, 0x04, 0x99,
+ 0x88, 0x71, 0x2e, 0x68, 0x2c, 0x60, 0x32, 0x1d,
+ 0x00, 0x92, 0x29, 0x1c, 0x20, 0x31, 0x01, 0x22,
+ 0x28, 0x1d, 0x05, 0x9b, 0x08, 0xf0, 0x7a, 0xfc,
+ 0xbd, 0x42, 0x01, 0xd0, 0x35, 0x1c, 0xf0, 0xe7,
+ 0x00, 0x20, 0x38, 0x61, 0x01, 0x98, 0x07, 0x99,
+ 0x04, 0x30, 0x08, 0x60, 0x08, 0x98, 0x04, 0x37,
+ 0x07, 0x60, 0x09, 0xb0, 0x3c, 0x00, 0x18, 0x15,
+ 0x00, 0x00, 0xf0, 0xbd, 0x02, 0x98, 0x04, 0x99,
+ 0x88, 0x71, 0xf9, 0xe7, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x15, 0x1c,
+ 0x00, 0x20, 0x0c, 0x60, 0x09, 0xe0, 0xe2, 0x68,
+ 0x20, 0x1c, 0x00, 0x92, 0xa3, 0x8a, 0x21, 0x68,
+ 0xa2, 0x69, 0x08, 0xf0, 0x56, 0xfc, 0x20, 0x1c,
+ 0xe4, 0x68, 0x00, 0x2c, 0xf3, 0xd1, 0x28, 0x60,
+ 0x38, 0xbd, 0x80, 0xb5, 0x0c, 0xe0, 0x3c, 0x00,
+ 0x54, 0x15, 0x00, 0x00, 0xc2, 0x68, 0x8a, 0x42,
+ 0x08, 0xd1, 0x00, 0x21, 0xc1, 0x60, 0x00, 0x28,
+ 0x03, 0xd1, 0x06, 0x21, 0x8e, 0x20, 0xff, 0xf7,
+ 0x9d, 0xfe, 0x80, 0xbd, 0x10, 0x1c, 0x00, 0x28,
+ 0xf7, 0xd0, 0xef, 0xe7, 0x10, 0xb5, 0x04, 0x1c,
+ 0x0c, 0xd0, 0xa0, 0x69, 0x00, 0x28, 0x06, 0xd1,
+ 0x20, 0x69, 0x00, 0x28, 0x03, 0xd0, 0x06, 0xf0,
+ 0xf7, 0xfd, 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c,
+ 0x3c, 0x00, 0x90, 0x15, 0x00, 0x00, 0x06, 0xf0,
+ 0xf2, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x10, 0xb5,
+ 0x00, 0x28, 0x09, 0xd0, 0xc4, 0x68, 0x03, 0xe0,
+ 0xff, 0xf7, 0xe7, 0xff, 0x20, 0x1c, 0xf9, 0xe7,
+ 0x00, 0x2c, 0xf9, 0xd1, 0xff, 0xf7, 0xe1, 0xff,
+ 0x10, 0xbd, 0x01, 0x1c, 0x00, 0x20, 0x04, 0xe0,
+ 0x0a, 0x89, 0xc9, 0x68, 0x10, 0x18, 0x00, 0x04,
+ 0x00, 0x0c, 0x00, 0x29, 0xf8, 0xd1, 0x70, 0x47,
+ 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x15, 0x00, 0x00,
+ 0x00, 0xe0, 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29,
+ 0xfb, 0xd1, 0x70, 0x47, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x0c, 0x1c, 0x1c, 0x20, 0x00, 0xf0, 0x68, 0xfa,
+ 0x05, 0x1c, 0x00, 0x2e, 0x01, 0xd1, 0x00, 0x2c,
+ 0x02, 0xd1, 0x30, 0x1c, 0x01, 0x21, 0x03, 0xe0,
+ 0x20, 0x1c, 0x00, 0xf0, 0x5d, 0xfa, 0x00, 0x21,
+ 0x00, 0x22, 0x00, 0x92, 0x0a, 0x1c, 0x01, 0x1c,
+ 0x23, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x08, 0x16,
+ 0x00, 0x00, 0x08, 0xf0, 0xf2, 0xfb, 0x28, 0x1c,
+ 0xf8, 0xbd, 0xb0, 0xb5, 0x03, 0x32, 0x92, 0x08,
+ 0x92, 0x00, 0x14, 0x04, 0x24, 0x0c, 0x09, 0x19,
+ 0x1d, 0x1c, 0xc9, 0x18, 0x09, 0x04, 0x09, 0x0c,
+ 0xff, 0xf7, 0xd7, 0xff, 0x01, 0x89, 0x02, 0x68,
+ 0x12, 0x19, 0x09, 0x1b, 0x49, 0x1b, 0x02, 0x60,
+ 0x01, 0x81, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0xb5,
+ 0x0a, 0x4c, 0xa0, 0x21, 0x20, 0x1c, 0x3c, 0x00,
+ 0x44, 0x16, 0x00, 0x00, 0xfe, 0xf7, 0x2a, 0xff,
+ 0x00, 0x20, 0x26, 0x1c, 0xa0, 0x36, 0x07, 0x4d,
+ 0x07, 0xe0, 0x0c, 0x21, 0x41, 0x43, 0x49, 0x19,
+ 0x0e, 0xc9, 0x27, 0x1d, 0x0e, 0xc7, 0x20, 0x34,
+ 0x01, 0x30, 0xa6, 0x42, 0xf5, 0xd1, 0xf8, 0xbd,
+ 0xd0, 0x5c, 0x01, 0x00, 0xc8, 0x3f, 0x01, 0x00,
+ 0xf7, 0xb5, 0xc4, 0x68, 0x06, 0x1c, 0x00, 0x25,
+ 0x00, 0x2c, 0x82, 0xb0, 0x23, 0xd0, 0x20, 0x89,
+ 0x3c, 0x00, 0x80, 0x16, 0x00, 0x00, 0x90, 0x42,
+ 0x20, 0xd3, 0xe1, 0x68, 0x87, 0x1a, 0x01, 0x91,
+ 0x00, 0x21, 0xe1, 0x60, 0x03, 0x99, 0x00, 0x20,
+ 0xff, 0xf7, 0xa1, 0xff, 0x05, 0x1c, 0x20, 0x89,
+ 0xc0, 0x1b, 0x20, 0x81, 0x2a, 0x68, 0x03, 0x99,
+ 0x30, 0x1c, 0x00, 0xf0, 0x16, 0xf8, 0x20, 0x89,
+ 0xc0, 0x19, 0x20, 0x81, 0x01, 0x99, 0x20, 0x1c,
+ 0xff, 0xf7, 0xb1, 0xfe, 0x21, 0x1c, 0x28, 0x1c,
+ 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0x16, 0x00, 0x00,
+ 0xad, 0xfe, 0x29, 0x1c, 0x30, 0x1c, 0xff, 0xf7,
+ 0xa9, 0xfe, 0x01, 0x20, 0x00, 0x2d, 0x00, 0xd1,
+ 0x00, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xf7, 0xb5, 0x04, 0x1c, 0x0e, 0x1c, 0x00, 0x20,
+ 0x01, 0xe0, 0x20, 0x1c, 0x0c, 0x1c, 0xe1, 0x68,
+ 0x00, 0x29, 0xfa, 0xd1, 0x27, 0x89, 0xb7, 0x42,
+ 0x0a, 0xd3, 0xb8, 0x1b, 0x00, 0x04, 0x00, 0x0c,
+ 0x20, 0x81, 0x21, 0x68, 0x3c, 0x00, 0xf8, 0x16,
+ 0x00, 0x00, 0x09, 0x18, 0x02, 0x98, 0x32, 0x1c,
+ 0xfe, 0xf7, 0xfb, 0xfe, 0xfe, 0xbd, 0xf1, 0x1b,
+ 0x0d, 0x04, 0x2d, 0x0c, 0x00, 0x28, 0x19, 0xd0,
+ 0x01, 0x89, 0xa9, 0x42, 0x16, 0xd3, 0x49, 0x1b,
+ 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x00, 0x68,
+ 0x41, 0x18, 0x02, 0x98, 0x2a, 0x1c, 0xfe, 0xf7,
+ 0xe8, 0xfe, 0x21, 0x68, 0x02, 0x98, 0x72, 0x1b,
+ 0x40, 0x19, 0xfe, 0xf7, 0xe2, 0xfe, 0x3c, 0x00,
+ 0x34, 0x17, 0x00, 0x00, 0x20, 0x89, 0xc0, 0x1b,
+ 0x20, 0x81, 0x20, 0x68, 0xc0, 0x19, 0x20, 0x60,
+ 0xdf, 0xe7, 0x03, 0x21, 0x8e, 0x20, 0xff, 0xf7,
+ 0xad, 0xfd, 0xda, 0xe7, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x00, 0x26, 0x13, 0xe0, 0x21, 0x89, 0x00, 0x20,
+ 0xff, 0xf7, 0x3e, 0xff, 0x05, 0x1c, 0x22, 0x89,
+ 0x21, 0x68, 0x00, 0x68, 0xfe, 0xf7, 0xc8, 0xfe,
+ 0x00, 0x2e, 0x01, 0xd1, 0x2e, 0x1c, 0x03, 0xe0,
+ 0x3c, 0x00, 0x70, 0x17, 0x00, 0x00, 0x29, 0x1c,
+ 0x38, 0x1c, 0xff, 0xf7, 0x50, 0xfe, 0xe4, 0x68,
+ 0x2f, 0x1c, 0x00, 0x2c, 0xe9, 0xd1, 0x30, 0x1c,
+ 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x89,
+ 0x40, 0x1a, 0x05, 0x04, 0x20, 0x68, 0x2d, 0x0c,
+ 0x40, 0x18, 0x29, 0x1c, 0xff, 0xf7, 0x1f, 0xff,
+ 0x21, 0x89, 0x49, 0x1b, 0x21, 0x81, 0xe1, 0x68,
+ 0xc1, 0x60, 0xe0, 0x60, 0xb0, 0xbd, 0x10, 0xb5,
+ 0x03, 0x30, 0x3c, 0x00, 0xac, 0x17, 0x00, 0x00,
+ 0x09, 0x4a, 0x81, 0x08, 0x10, 0x68, 0x3d, 0x24,
+ 0x08, 0x4b, 0x64, 0x01, 0x89, 0x00, 0x09, 0x18,
+ 0x1b, 0x19, 0x99, 0x42, 0x01, 0xd8, 0x11, 0x60,
+ 0x10, 0xbd, 0x0f, 0x21, 0x80, 0x20, 0xff, 0xf7,
+ 0x6b, 0xfd, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0xb4, 0xcf, 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00,
+ 0x10, 0xb5, 0x11, 0xf0, 0x61, 0xff, 0x04, 0x1c,
+ 0x03, 0xd1, 0x0d, 0x21, 0x3c, 0x00, 0xe8, 0x17,
+ 0x00, 0x00, 0x80, 0x20, 0xff, 0xf7, 0x5b, 0xfd,
+ 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x01, 0x1f, 0x0b, 0x68, 0x0d, 0x48, 0x00, 0x22,
+ 0x83, 0x42, 0x04, 0xd0, 0x01, 0x32, 0x10, 0x30,
+ 0x03, 0x2a, 0xf9, 0xd3, 0x01, 0xe0, 0x03, 0x2a,
+ 0x06, 0xd3, 0x09, 0x24, 0x21, 0x1c, 0x80, 0x20,
+ 0xff, 0xf7, 0x45, 0xfd, 0x20, 0x1c, 0xb0, 0xbd,
+ 0x05, 0x4b, 0x00, 0x24, 0x9a, 0x79, 0x3c, 0x00,
+ 0x24, 0x18, 0x00, 0x00, 0x85, 0x68, 0x0d, 0x60,
+ 0x81, 0x60, 0x9a, 0x71, 0xf5, 0xe7, 0x00, 0x00,
+ 0x20, 0x57, 0x01, 0x00, 0x20, 0x10, 0x07, 0x00,
+ 0xb0, 0xb5, 0x00, 0x21, 0x10, 0x4a, 0x00, 0x23,
+ 0xd4, 0x68, 0x84, 0x42, 0x04, 0xd2, 0x01, 0x33,
+ 0x10, 0x32, 0x03, 0x2b, 0xf8, 0xd3, 0x01, 0xe0,
+ 0x03, 0x2b, 0x01, 0xd3, 0x04, 0x21, 0x0e, 0xe0,
+ 0x0a, 0x4c, 0xa3, 0x79, 0x90, 0x68, 0x00, 0x28,
+ 0x3c, 0x00, 0x60, 0x18, 0x00, 0x00, 0x02, 0xd1,
+ 0xa3, 0x71, 0x03, 0x21, 0x06, 0xe0, 0x05, 0x68,
+ 0x95, 0x60, 0xa3, 0x71, 0x00, 0x29, 0x01, 0xd1,
+ 0x04, 0xc0, 0xb0, 0xbd, 0x80, 0x20, 0xff, 0xf7,
+ 0x14, 0xfd, 0x00, 0x20, 0xb0, 0xbd, 0x20, 0x57,
+ 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xa0, 0x30,
+ 0x00, 0x8a, 0x40, 0x07, 0x40, 0x0f, 0x08, 0x28,
+ 0x0f, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x3c, 0x00, 0x9c, 0x18, 0x00, 0x00,
+ 0x05, 0x03, 0x03, 0x05, 0x07, 0x07, 0x09, 0x09,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x02, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47,
+ 0x04, 0x20, 0x70, 0x47, 0xb0, 0xb5, 0x10, 0x4d,
+ 0x68, 0x69, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x49,
+ 0x00, 0x22, 0x2c, 0x31, 0x03, 0xc9, 0x01, 0x43,
+ 0x03, 0x20, 0x06, 0xf0, 0xcf, 0xff, 0x0b, 0x4c,
+ 0x00, 0x22, 0x03, 0xcc, 0x3c, 0x00, 0xd8, 0x18,
+ 0x00, 0x00, 0x08, 0x3c, 0x01, 0x43, 0x03, 0x20,
+ 0x06, 0xf0, 0xaf, 0xff, 0x03, 0xcc, 0x08, 0x43,
+ 0x07, 0x49, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60,
+ 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x01, 0x20,
+ 0x68, 0x61, 0xb0, 0xbd, 0x00, 0x00, 0x64, 0x73,
+ 0x01, 0x00, 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x0f, 0xf0,
+ 0xa8, 0xfa, 0x05, 0x4d, 0xe8, 0x6a, 0x3c, 0x00,
+ 0x14, 0x19, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1,
+ 0x00, 0x2c, 0x04, 0xd0, 0x20, 0x1c, 0x0f, 0xf0,
+ 0xb7, 0xfd, 0x01, 0x20, 0x28, 0x70, 0xb0, 0xbd,
+ 0xf4, 0x6e, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5,
+ 0x88, 0x6a, 0x00, 0x28, 0x04, 0xda, 0x00, 0x20,
+ 0x88, 0x62, 0x01, 0x21, 0x0d, 0xf0, 0x42, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7e, 0x01, 0x00,
+ 0xf8, 0xb5, 0x1e, 0x4d, 0x04, 0x1c, 0x00, 0x20,
+ 0x3c, 0x00, 0x50, 0x19, 0x00, 0x00, 0x68, 0x62,
+ 0xa8, 0x70, 0x1c, 0x48, 0x00, 0x78, 0xc0, 0x07,
+ 0x22, 0xd5, 0xb8, 0x20, 0x03, 0x59, 0x1a, 0x48,
+ 0x00, 0x78, 0x0e, 0x28, 0x09, 0xd1, 0x0a, 0x1c,
+ 0x80, 0x32, 0x06, 0xd0, 0x18, 0x4e, 0x0d, 0x20,
+ 0x32, 0x5c, 0x8a, 0x42, 0x01, 0xdd, 0x01, 0x38,
+ 0xfa, 0xd1, 0x59, 0x1e, 0x0b, 0x06, 0x1b, 0x0e,
+ 0xab, 0x70, 0xab, 0x62, 0x0e, 0x28, 0x0b, 0xd2,
+ 0x08, 0xe0, 0x3c, 0x00, 0x8c, 0x19, 0x00, 0x00,
+ 0x62, 0x18, 0xb0, 0x32, 0x12, 0x7b, 0x82, 0x42,
+ 0x02, 0xd8, 0x58, 0x1a, 0xa8, 0x62, 0x02, 0xe0,
+ 0x01, 0x39, 0x00, 0x29, 0xf4, 0xda, 0x0e, 0xf0,
+ 0x35, 0xf9, 0x00, 0x90, 0x00, 0xab, 0x18, 0x78,
+ 0x59, 0x78, 0x81, 0x42, 0x00, 0xd9, 0x58, 0x78,
+ 0xed, 0x30, 0xe8, 0x70, 0x01, 0x21, 0x20, 0x1c,
+ 0x0d, 0xf0, 0x02, 0xfd, 0xf8, 0xbd, 0x00, 0x00,
+ 0xac, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x19,
+ 0x00, 0x00, 0x1d, 0x75, 0x01, 0x00, 0x11, 0x67,
+ 0x01, 0x00, 0xc7, 0x52, 0x01, 0x00, 0x0e, 0x49,
+ 0x10, 0xb5, 0x08, 0x69, 0x8b, 0x68, 0xc2, 0x00,
+ 0xd4, 0x18, 0x62, 0x68, 0x00, 0x2a, 0x0f, 0xd1,
+ 0x01, 0x30, 0x08, 0x61, 0x07, 0x28, 0x01, 0xd1,
+ 0x00, 0x20, 0x08, 0x61, 0x20, 0x1c, 0x00, 0xf0,
+ 0x24, 0xf8, 0x05, 0x48, 0x21, 0x68, 0x54, 0x30,
+ 0x02, 0x6a, 0xfe, 0xf7, 0xec, 0xfc, 0x3c, 0x00,
+ 0x04, 0x1a, 0x00, 0x00, 0x10, 0xbd, 0x06, 0x21,
+ 0x06, 0x20, 0xff, 0xf7, 0x4b, 0xfc, 0x10, 0xbd,
+ 0x50, 0x6d, 0x01, 0x00, 0x08, 0x49, 0x09, 0x79,
+ 0xc9, 0x07, 0x08, 0x4a, 0x08, 0xd4, 0x00, 0xe0,
+ 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, 0xfb, 0xd1,
+ 0x01, 0x89, 0x04, 0x31, 0x01, 0x81, 0x00, 0xe0,
+ 0x00, 0x20, 0xd0, 0x62, 0x70, 0x47, 0x00, 0x00,
+ 0x60, 0x80, 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00,
+ 0x3c, 0x00, 0x40, 0x1a, 0x00, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x19, 0x21, 0x89, 0x01, 0x00, 0x20,
+ 0xff, 0xf7, 0xc5, 0xfd, 0x01, 0x1c, 0x60, 0x60,
+ 0x20, 0x68, 0xff, 0xf7, 0xe0, 0xfc, 0x60, 0x68,
+ 0x21, 0x68, 0x08, 0x30, 0x08, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x0a, 0x28, 0x01, 0xda, 0x04, 0x20,
+ 0x04, 0xe0, 0x50, 0x28, 0x01, 0xda, 0x05, 0x20,
+ 0x00, 0xe0, 0x07, 0x20, 0x04, 0x4a, 0x11, 0x78,
+ 0x38, 0x23, 0x3c, 0x00, 0x7c, 0x1a, 0x00, 0x00,
+ 0xc0, 0x00, 0x18, 0x40, 0x99, 0x43, 0x08, 0x43,
+ 0x10, 0x70, 0x70, 0x47, 0x88, 0x00, 0x07, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x40, 0x68,
+ 0x08, 0xe0, 0x01, 0x69, 0xa9, 0x42, 0x04, 0xd1,
+ 0x44, 0x68, 0x05, 0xf0, 0xc7, 0xfd, 0x20, 0x1c,
+ 0x00, 0xe0, 0x40, 0x68, 0x00, 0x28, 0xf4, 0xd1,
+ 0xb0, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00,
+ 0xf8, 0xb5, 0x00, 0x25, 0x3c, 0x00, 0xb8, 0x1a,
+ 0x00, 0x00, 0x06, 0xf0, 0x84, 0xfd, 0x11, 0x4f,
+ 0x04, 0x1c, 0xbe, 0x79, 0x20, 0x68, 0x00, 0x28,
+ 0x07, 0xd1, 0xa0, 0x88, 0x04, 0x30, 0xff, 0xf7,
+ 0xf2, 0xf8, 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21,
+ 0x0f, 0xe0, 0x01, 0x68, 0x21, 0x60, 0xa1, 0x69,
+ 0x01, 0x39, 0xa1, 0x61, 0x10, 0xc0, 0x05, 0x1c,
+ 0x20, 0x69, 0x01, 0x30, 0x20, 0x61, 0x61, 0x69,
+ 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, 0x3c, 0x00,
+ 0xf4, 0x1a, 0x00, 0x00, 0x03, 0xd9, 0x07, 0x21,
+ 0x8e, 0x20, 0xff, 0xf7, 0xd3, 0xfb, 0xbe, 0x71,
+ 0x28, 0x1c, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00,
+ 0xb0, 0xb5, 0x09, 0xf0, 0xbb, 0xff, 0x2f, 0x4c,
+ 0x00, 0x28, 0x20, 0x74, 0x03, 0xd0, 0x01, 0x21,
+ 0x01, 0x20, 0x0a, 0xf0, 0x71, 0xfc, 0x2b, 0x4d,
+ 0x14, 0x35, 0x28, 0x68, 0x00, 0x28, 0x4d, 0xd0,
+ 0x01, 0x21, 0x0f, 0x20, 0x11, 0xf0, 0x82, 0xfd,
+ 0x3c, 0x00, 0x30, 0x1b, 0x00, 0x00, 0x28, 0x89,
+ 0x08, 0xf0, 0xfb, 0xff, 0x01, 0x1c, 0x01, 0x22,
+ 0x0f, 0x20, 0x11, 0xf0, 0x40, 0xfd, 0xe0, 0x78,
+ 0x01, 0x25, 0x02, 0x28, 0x36, 0xd1, 0x0a, 0xf0,
+ 0xc6, 0xf8, 0x00, 0x28, 0x0a, 0xd0, 0x0b, 0xf0,
+ 0x92, 0xfb, 0x1e, 0x49, 0x09, 0x68, 0x40, 0x18,
+ 0x11, 0xf0, 0x5f, 0xf8, 0x00, 0x28, 0x01, 0xd1,
+ 0x02, 0x20, 0x2f, 0xe0, 0xe0, 0x78, 0x02, 0x28,
+ 0x24, 0xd1, 0x3c, 0x00, 0x6c, 0x1b, 0x00, 0x00,
+ 0x60, 0x70, 0x25, 0x70, 0x60, 0x68, 0x01, 0x28,
+ 0x1c, 0xd0, 0x15, 0x48, 0x10, 0x38, 0x81, 0x7b,
+ 0x00, 0x29, 0x04, 0xd1, 0x85, 0x73, 0x0f, 0x20,
+ 0x13, 0x49, 0x10, 0xf0, 0x01, 0xfc, 0x08, 0xf0,
+ 0x4f, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x48,
+ 0x01, 0x21, 0x98, 0x38, 0x00, 0x69, 0x01, 0xf0,
+ 0xb7, 0xfd, 0x00, 0x28, 0x05, 0xd0, 0x01, 0x20,
+ 0x0e, 0xf0, 0x0c, 0xfd, 0x3c, 0x00, 0xa8, 0x1b,
+ 0x00, 0x00, 0x01, 0x20, 0x0e, 0xf0, 0x1d, 0xfc,
+ 0xb0, 0xbd, 0x05, 0xf0, 0xdc, 0xfe, 0xb0, 0xbd,
+ 0xe0, 0x78, 0x00, 0x28, 0x01, 0xd1, 0x25, 0x70,
+ 0xf7, 0xe7, 0x03, 0x20, 0x00, 0xe0, 0x04, 0x20,
+ 0x0d, 0xf0, 0x8d, 0xfa, 0xb0, 0xbd, 0x84, 0x66,
+ 0x01, 0x00, 0x6c, 0x57, 0x01, 0x00, 0xe9, 0x03,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x00, 0x21,
+ 0x00, 0x20, 0x0a, 0x4d, 0x00, 0xe0, 0x3c, 0x00,
+ 0xe4, 0x1b, 0x00, 0x00, 0x01, 0x31, 0xcb, 0x00,
+ 0x5a, 0x19, 0x16, 0x79, 0x01, 0x2e, 0x02, 0xd0,
+ 0x52, 0x79, 0xa2, 0x42, 0x02, 0xd0, 0x0b, 0x29,
+ 0xf4, 0xd3, 0x70, 0xbd, 0x0b, 0x29, 0xfc, 0xd2,
+ 0xc8, 0x00, 0x01, 0x21, 0x5a, 0x19, 0x28, 0x58,
+ 0x11, 0x71, 0x70, 0xbd, 0x38, 0x58, 0x01, 0x00,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23,
+ 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x6a,
+ 0x3c, 0x00, 0x20, 0x1c, 0x00, 0x00, 0xfe, 0xf7,
+ 0xda, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5,
+ 0x04, 0xf0, 0x37, 0xff, 0x00, 0x20, 0x11, 0xf0,
+ 0x84, 0xfc, 0x00, 0x20, 0x80, 0xbd, 0xb0, 0xb5,
+ 0x05, 0x4c, 0x05, 0x1c, 0x20, 0x6b, 0xe1, 0x6a,
+ 0x02, 0xf0, 0xe3, 0xfd, 0x29, 0x1c, 0xa0, 0x6a,
+ 0x02, 0xf0, 0x11, 0xfb, 0xb0, 0xbd, 0xa4, 0x6c,
+ 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x1c, 0x00, 0x00,
+ 0xb0, 0xb5, 0x03, 0x1c, 0x08, 0x1c, 0x14, 0x1c,
+ 0x00, 0x2b, 0x0c, 0x4d, 0x09, 0xd0, 0x69, 0x69,
+ 0x89, 0x00, 0x01, 0x31, 0x0a, 0x04, 0x12, 0x0c,
+ 0x22, 0x80, 0x29, 0x1c, 0xfe, 0xf7, 0x3e, 0xfc,
+ 0x0a, 0xe0, 0x01, 0x1c, 0x28, 0x1c, 0x22, 0x88,
+ 0xfe, 0xf7, 0x38, 0xfc, 0x20, 0x88, 0x01, 0x28,
+ 0x02, 0xd9, 0x80, 0x08, 0x01, 0x38, 0x68, 0x61,
+ 0x01, 0x20, 0xb0, 0xbd, 0x3c, 0x00, 0x98, 0x1c,
+ 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0xf1, 0xb5,
+ 0x00, 0x98, 0x00, 0x26, 0xc1, 0x68, 0x08, 0x68,
+ 0x09, 0x89, 0x1c, 0x29, 0x34, 0xd3, 0xc1, 0x88,
+ 0xff, 0x23, 0x01, 0x33, 0x99, 0x42, 0x2f, 0xd1,
+ 0x01, 0x88, 0xc9, 0x1a, 0x2c, 0xd1, 0x41, 0x88,
+ 0x08, 0x29, 0x29, 0xd1, 0x01, 0x79, 0x06, 0x29,
+ 0x26, 0xd1, 0x41, 0x79, 0x04, 0x29, 0x23, 0xd1,
+ 0x00, 0x25, 0x00, 0x24, 0x07, 0x1c, 0x3c, 0x00,
+ 0xd4, 0x1c, 0x00, 0x00, 0x18, 0x37, 0x0b, 0xe0,
+ 0xa0, 0x00, 0x41, 0x18, 0x04, 0x31, 0x04, 0x22,
+ 0x38, 0x1c, 0xfe, 0xf7, 0x8b, 0xfb, 0x00, 0x28,
+ 0x01, 0xd1, 0x01, 0x25, 0x04, 0xe0, 0x01, 0x34,
+ 0x0a, 0x49, 0x48, 0x69, 0xa0, 0x42, 0xef, 0xd8,
+ 0x08, 0x49, 0x08, 0x78, 0x00, 0x28, 0x0a, 0xd0,
+ 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, 0x06, 0xd1,
+ 0x00, 0x2d, 0x04, 0xd1, 0x00, 0x98, 0xc0, 0x68,
+ 0x3c, 0x00, 0x10, 0x1d, 0x00, 0x00, 0xff, 0xf7,
+ 0x42, 0xfc, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e,
+ 0x01, 0x00, 0x02, 0x49, 0x48, 0x60, 0x01, 0x20,
+ 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x01, 0x26,
+ 0x03, 0xf0, 0xef, 0xfa, 0x25, 0x1c, 0x10, 0x35,
+ 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x1d, 0x00, 0x00,
+ 0x04, 0xd0, 0x00, 0x20, 0x20, 0x77, 0x03, 0xf0,
+ 0xf1, 0xfb, 0x07, 0xe0, 0x03, 0xf0, 0x38, 0xfd,
+ 0x00, 0x28, 0x09, 0xd0, 0x01, 0x20, 0x20, 0x77,
+ 0x03, 0xf0, 0xce, 0xfc, 0x01, 0x1c, 0x06, 0x22,
+ 0x28, 0x1c, 0xfe, 0xf7, 0xc3, 0xfb, 0x02, 0xe0,
+ 0x02, 0x20, 0x20, 0x77, 0x00, 0x26, 0x30, 0x1c,
+ 0x70, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0x7a,
+ 0xc0, 0x07, 0x03, 0x49, 0x3c, 0x00, 0x88, 0x1d,
+ 0x00, 0x00, 0xc0, 0x0f, 0x88, 0x62, 0x70, 0x47,
+ 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, 0x88, 0x62,
+ 0x70, 0x47, 0xa4, 0x6c, 0x01, 0x00, 0x06, 0x48,
+ 0x80, 0x7a, 0xc1, 0x07, 0x06, 0x4a, 0xc9, 0x0f,
+ 0x91, 0x62, 0x20, 0x21, 0x80, 0x07, 0x00, 0xd4,
+ 0x00, 0x21, 0xa0, 0x32, 0x11, 0x70, 0x70, 0x47,
+ 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0x3c, 0x00,
+ 0xc4, 0x1d, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x07, 0x4a, 0x12, 0x68, 0x07, 0x4b, 0x9b, 0x69,
+ 0x1a, 0x40, 0x01, 0xd0, 0x01, 0x22, 0x00, 0xe0,
+ 0x00, 0x22, 0x0a, 0x60, 0x01, 0x21, 0x00, 0x2a,
+ 0x00, 0xd0, 0x00, 0x21, 0x01, 0x60, 0x70, 0x47,
+ 0x10, 0x00, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x01, 0x22, 0x02, 0x60, 0x0a, 0x60, 0x70, 0x47,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x1c, 0x58, 0x31,
+ 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x1c,
+ 0x06, 0x22, 0x28, 0x1d, 0xfe, 0xf7, 0x77, 0xfb,
+ 0x21, 0x1c, 0x5e, 0x31, 0x06, 0x22, 0x28, 0x1c,
+ 0x0a, 0x30, 0xfe, 0xf7, 0x70, 0xfb, 0x21, 0x1c,
+ 0x64, 0x31, 0x06, 0x22, 0x28, 0x1c, 0x10, 0x30,
+ 0xfe, 0xf7, 0x69, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5,
+ 0x00, 0x25, 0x1d, 0x72, 0x17, 0x1c, 0x0e, 0x1c,
+ 0xb2, 0x6d, 0x00, 0x21, 0x92, 0x19, 0x50, 0x32,
+ 0xd2, 0x7a, 0x3c, 0x00, 0x3c, 0x1e, 0x00, 0x00,
+ 0x1c, 0x1c, 0x5a, 0x72, 0x00, 0x78, 0x32, 0x1c,
+ 0x80, 0x32, 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30,
+ 0x01, 0x90, 0x08, 0x98, 0x02, 0x92, 0x00, 0x28,
+ 0x01, 0xd1, 0x30, 0x7f, 0x2b, 0xe0, 0x37, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x00, 0xdd, 0x01, 0x1c,
+ 0x01, 0x98, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x98,
+ 0x01, 0x28, 0x10, 0xd1, 0x02, 0x9a, 0x90, 0x6b,
+ 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0x78, 0x1e,
+ 0x00, 0x00, 0x88, 0x42, 0x01, 0xd9, 0x45, 0x1a,
+ 0x01, 0x3d, 0x70, 0x19, 0xb0, 0x30, 0x03, 0xe0,
+ 0xb5, 0x6d, 0x01, 0x3d, 0x70, 0x19, 0x50, 0x30,
+ 0x00, 0x7b, 0x0f, 0xe0, 0x02, 0x9a, 0x10, 0x6a,
+ 0x00, 0x28, 0x07, 0xd0, 0x88, 0x42, 0x01, 0xd9,
+ 0x45, 0x1a, 0x01, 0x3d, 0x70, 0x19, 0xa0, 0x30,
+ 0x00, 0x79, 0x03, 0xe0, 0xbd, 0x69, 0x01, 0x3d,
+ 0x78, 0x19, 0x00, 0x7f, 0xa0, 0x72, 0x3c, 0x00,
+ 0xb4, 0x1e, 0x00, 0x00, 0x0e, 0xf0, 0x0c, 0xf8,
+ 0x0e, 0x28, 0x11, 0xd1, 0xa0, 0x7a, 0x08, 0xf0,
+ 0x67, 0xff, 0x00, 0x28, 0x0c, 0xd0, 0x78, 0x68,
+ 0x00, 0x28, 0x05, 0xd1, 0x1b, 0x48, 0x00, 0x25,
+ 0x00, 0x78, 0x08, 0xf0, 0x4b, 0xff, 0x02, 0xe0,
+ 0x45, 0x1e, 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72,
+ 0x02, 0x9a, 0x50, 0x69, 0x00, 0x28, 0x17, 0xd0,
+ 0x08, 0x98, 0x01, 0x28, 0x14, 0xd0, 0xa0, 0x7a,
+ 0x3c, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0x08, 0xf0,
+ 0x4e, 0xff, 0x00, 0x28, 0x0f, 0xd0, 0x01, 0x98,
+ 0x00, 0x28, 0x07, 0xd0, 0x02, 0x20, 0x20, 0x72,
+ 0x70, 0x6c, 0x80, 0x19, 0x40, 0x30, 0xc0, 0x79,
+ 0x60, 0x72, 0x04, 0xe0, 0x7d, 0x68, 0x01, 0x3d,
+ 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, 0x02, 0x9a,
+ 0xa0, 0x7a, 0x91, 0x69, 0x08, 0xf0, 0x51, 0xff,
+ 0x20, 0x60, 0x02, 0x9a, 0x60, 0x7a, 0x91, 0x69,
+ 0x08, 0xf0, 0x3c, 0x00, 0x2c, 0x1f, 0x00, 0x00,
+ 0x4b, 0xff, 0x60, 0x60, 0xa0, 0x7a, 0xe0, 0x72,
+ 0x25, 0x73, 0xfe, 0xbd, 0xd4, 0x7e, 0x01, 0x00,
+ 0x90, 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x0e,
+ 0x00, 0x2a, 0x8c, 0xb5, 0x01, 0xd0, 0x8a, 0x22,
+ 0x00, 0xe0, 0x88, 0x22, 0x00, 0xab, 0x1a, 0x80,
+ 0x0c, 0xf0, 0xc2, 0xf8, 0x01, 0x90, 0x68, 0x46,
+ 0x0b, 0xf0, 0xbc, 0xfa, 0x8c, 0xbd, 0x00, 0x00,
+ 0x01, 0x1c, 0x08, 0x48, 0x3c, 0x00, 0x68, 0x1f,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28,
+ 0x09, 0xd0, 0x49, 0x68, 0x02, 0x20, 0x00, 0x29,
+ 0x00, 0xd1, 0x01, 0x20, 0x01, 0x06, 0x09, 0x0e,
+ 0x00, 0x20, 0x06, 0xf0, 0xd8, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0xb5,
+ 0x01, 0x90, 0x04, 0x1c, 0x44, 0x30, 0x01, 0xaa,
+ 0x69, 0x46, 0x11, 0xf0, 0xb8, 0xfd, 0x00, 0x28,
+ 0x0b, 0xd0, 0xa0, 0x69, 0x00, 0x21, 0x3c, 0x00,
+ 0xa4, 0x1f, 0x00, 0x00, 0xc2, 0x07, 0xd2, 0x0f,
+ 0x02, 0x20, 0xff, 0xf7, 0xc9, 0xff, 0x00, 0x21,
+ 0x20, 0x1c, 0x0f, 0xf0, 0xd9, 0xfe, 0x1c, 0xbd,
+ 0x04, 0x21, 0x98, 0x20, 0xff, 0xf7, 0x72, 0xf9,
+ 0xf9, 0xe7, 0x00, 0x00, 0x8c, 0xb5, 0x00, 0xab,
+ 0x84, 0x21, 0x19, 0x80, 0x05, 0x4b, 0x02, 0x1c,
+ 0x18, 0x1c, 0x99, 0x8a, 0x0c, 0xf0, 0x8e, 0xf8,
+ 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, 0x7c, 0xfa,
+ 0x3c, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x8c, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x06, 0x49, 0x80, 0xb5, 0xc9, 0x68,
+ 0x14, 0x23, 0x40, 0x31, 0x89, 0x7a, 0x04, 0x4a,
+ 0x59, 0x43, 0x89, 0x18, 0x80, 0x00, 0x08, 0x58,
+ 0xfe, 0xf7, 0xe9, 0xf9, 0x80, 0xbd, 0x70, 0x7c,
+ 0x01, 0x00, 0x54, 0x47, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x20, 0xff, 0xf7, 0xd6, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x20, 0x00, 0x00,
+ 0x80, 0xb5, 0x12, 0x48, 0x11, 0x49, 0x80, 0x8a,
+ 0x0a, 0x8b, 0x00, 0x21, 0x00, 0x28, 0xc2, 0xb0,
+ 0x0c, 0xd1, 0x01, 0x2a, 0x05, 0xd0, 0x02, 0x2a,
+ 0x15, 0xd0, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x22,
+ 0x07, 0xe0, 0x02, 0x22, 0x00, 0xab, 0x5a, 0x80,
+ 0x99, 0x80, 0x04, 0xe0, 0x00, 0xab, 0x5a, 0x80,
+ 0x0d, 0x22, 0x00, 0xab, 0x9a, 0x80, 0x00, 0xab,
+ 0x18, 0x80, 0xff, 0x20, 0x3c, 0x00, 0x58, 0x20,
+ 0x00, 0x00, 0x98, 0x71, 0xd9, 0x71, 0x68, 0x46,
+ 0x00, 0xf0, 0xd1, 0xf9, 0x42, 0xb0, 0x80, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x09, 0xf0, 0x5f, 0xfc, 0x00, 0x20, 0x05, 0xf0,
+ 0x2a, 0xf9, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0,
+ 0x36, 0xf9, 0x20, 0x1c, 0x0f, 0xf0, 0xb3, 0xfe,
+ 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x1c, 0xb5,
+ 0x09, 0xf0, 0x4f, 0xfc, 0x07, 0x20, 0x3c, 0x00,
+ 0x94, 0x20, 0x00, 0x00, 0x00, 0xab, 0x07, 0x4c,
+ 0x18, 0x80, 0xe1, 0x8a, 0x20, 0x1c, 0x0c, 0xf0,
+ 0x0b, 0xf8, 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0,
+ 0x17, 0xfa, 0x20, 0x1c, 0x0f, 0xf0, 0x9e, 0xfe,
+ 0x1c, 0xbd, 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, 0xff, 0xf7,
+ 0xf1, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0x15, 0x4c,
+ 0xc2, 0xb0, 0xa0, 0x8a, 0x00, 0x28, 0x03, 0xd0,
+ 0x3c, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x01, 0x28,
+ 0x1e, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x01, 0x20,
+ 0xe1, 0x68, 0x40, 0x31, 0x88, 0x72, 0x20, 0x69,
+ 0x08, 0xf0, 0x23, 0xfd, 0x02, 0x1c, 0x0c, 0x48,
+ 0x18, 0x38, 0x80, 0x88, 0xe1, 0x68, 0x0f, 0xf0,
+ 0xa4, 0xfe, 0xa0, 0x8a, 0x00, 0xab, 0x18, 0x80,
+ 0x01, 0x20, 0x58, 0x80, 0x00, 0x20, 0x98, 0x80,
+ 0xff, 0x21, 0x99, 0x71, 0xd8, 0x71, 0x68, 0x46,
+ 0x00, 0xf0, 0x3c, 0x00, 0x0c, 0x21, 0x00, 0x00,
+ 0x7b, 0xf9, 0x42, 0xb0, 0x10, 0xbd, 0x03, 0x21,
+ 0x98, 0x20, 0xff, 0xf7, 0xc5, 0xf8, 0xf8, 0xe7,
+ 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0x03, 0x48, 0x0f, 0xf0, 0x60, 0xfe,
+ 0x00, 0x20, 0x05, 0xf0, 0xcd, 0xf8, 0x80, 0xbd,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x48,
+ 0x0f, 0xf0, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0x70, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x48, 0x21,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20,
+ 0xff, 0xf7, 0xa9, 0xf8, 0x80, 0xbd, 0x80, 0xb5,
+ 0x03, 0x20, 0xff, 0xf7, 0x34, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0xf0, 0xb5, 0x21, 0x4e, 0x00, 0x27,
+ 0xb1, 0x8a, 0x30, 0x1c, 0x00, 0x25, 0x04, 0x24,
+ 0x00, 0x29, 0x00, 0x8b, 0xc3, 0xb0, 0x1e, 0xd1,
+ 0x01, 0x28, 0x07, 0xd0, 0x31, 0x1c, 0x49, 0x8b,
+ 0x02, 0x28, 0x12, 0xd1, 0x00, 0x29, 0x3c, 0x00,
+ 0x84, 0x21, 0x00, 0x00, 0x07, 0xd1, 0x00, 0x24,
+ 0x05, 0xe0, 0x00, 0x24, 0x01, 0x25, 0x02, 0x20,
+ 0x00, 0xab, 0xd8, 0x80, 0x1f, 0x81, 0x0f, 0xf0,
+ 0x7f, 0xff, 0x00, 0x2c, 0x10, 0xd1, 0xf1, 0x68,
+ 0x05, 0x20, 0x40, 0x31, 0x88, 0x72, 0x0e, 0xe0,
+ 0x00, 0x29, 0x1a, 0xd1, 0x00, 0xab, 0xd8, 0x80,
+ 0x0e, 0x20, 0x02, 0xe0, 0x00, 0xab, 0xd8, 0x80,
+ 0x0d, 0x20, 0x00, 0xab, 0x18, 0x81, 0x07, 0xe0,
+ 0x3c, 0x00, 0xc0, 0x21, 0x00, 0x00, 0x30, 0x1c,
+ 0x0f, 0xf0, 0x13, 0xfe, 0x20, 0x1c, 0xff, 0xf7,
+ 0xfc, 0xfe, 0x00, 0x2d, 0x08, 0xd0, 0xb0, 0x8a,
+ 0x00, 0xab, 0x98, 0x80, 0xff, 0x20, 0x98, 0x72,
+ 0xdf, 0x72, 0x01, 0xa8, 0x00, 0xf0, 0x11, 0xf9,
+ 0x43, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0,
+ 0x6c, 0xf8, 0x04, 0x4c, 0xe0, 0x8a, 0x05, 0xf0,
+ 0x78, 0xf8, 0x3c, 0x00, 0xfc, 0x21, 0x00, 0x00,
+ 0x0f, 0xf0, 0x4c, 0xff, 0x20, 0x1c, 0x0f, 0xf0,
+ 0xf3, 0xfd, 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, 0xd8, 0xfe,
+ 0x01, 0x48, 0x0f, 0xf0, 0xe9, 0xfd, 0x80, 0xbd,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x20,
+ 0xff, 0xf7, 0xce, 0xfe, 0x01, 0x20, 0x05, 0xf0,
+ 0x5f, 0xf8, 0x02, 0x48, 0x0f, 0xf0, 0xdc, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x22,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5,
+ 0x03, 0x20, 0xff, 0xf7, 0xc0, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x1d, 0x4d, 0xc2, 0xb0,
+ 0x28, 0x8b, 0x00, 0xab, 0xff, 0x21, 0x58, 0x80,
+ 0x99, 0x71, 0x00, 0x21, 0xd9, 0x71, 0xaa, 0x8a,
+ 0x00, 0x24, 0x01, 0x2a, 0x18, 0xd1, 0x2a, 0x1c,
+ 0x52, 0x8b, 0x02, 0x28, 0x0f, 0xd1, 0x00, 0x2a,
+ 0x16, 0xd1, 0x03, 0x20, 0x58, 0x80, 0x3c, 0x00,
+ 0x74, 0x22, 0x00, 0x00, 0x99, 0x80, 0x2c, 0x1c,
+ 0xff, 0x22, 0x98, 0x1d, 0xe9, 0x69, 0xfe, 0xf7,
+ 0x3b, 0xf9, 0xe1, 0x68, 0x04, 0x20, 0x40, 0x31,
+ 0x88, 0x72, 0x10, 0xe0, 0x00, 0x2a, 0x06, 0xd1,
+ 0x01, 0x24, 0x0e, 0x20, 0x01, 0xe0, 0x01, 0x24,
+ 0x0d, 0x20, 0x00, 0xab, 0x98, 0x80, 0x28, 0x1c,
+ 0x0f, 0xf0, 0xa4, 0xfd, 0x04, 0x20, 0xff, 0xf7,
+ 0x8d, 0xfe, 0x00, 0x2c, 0x05, 0xd0, 0xa8, 0x8a,
+ 0x3c, 0x00, 0xb0, 0x22, 0x00, 0x00, 0x00, 0xab,
+ 0x18, 0x80, 0x68, 0x46, 0x00, 0xf0, 0xa5, 0xf8,
+ 0x42, 0xb0, 0xb0, 0xbd, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0,
+ 0x00, 0xf8, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0,
+ 0x0c, 0xf8, 0x20, 0x1c, 0x0f, 0xf0, 0x89, 0xfd,
+ 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5,
+ 0x04, 0x20, 0xff, 0xf7, 0x6e, 0xfe, 0x01, 0x48,
+ 0x0f, 0xf0, 0x3c, 0x00, 0xec, 0x22, 0x00, 0x00,
+ 0x7f, 0xfd, 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x20, 0xff, 0xf7, 0x64, 0xfe,
+ 0x01, 0x20, 0x04, 0xf0, 0xf5, 0xff, 0x02, 0x48,
+ 0x0f, 0xf0, 0x72, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x20,
+ 0xff, 0xf7, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x19, 0x4d, 0x04, 0x24, 0xa9, 0x8a,
+ 0x28, 0x1c, 0x02, 0x8b, 0x3c, 0x00, 0x28, 0x23,
+ 0x00, 0x00, 0xc2, 0xb0, 0x01, 0x29, 0x14, 0xd1,
+ 0x40, 0x8b, 0x04, 0x2a, 0x0b, 0xd1, 0x00, 0x28,
+ 0x00, 0xd1, 0x00, 0x24, 0x0f, 0xf0, 0xad, 0xfe,
+ 0x00, 0x2c, 0x19, 0xd1, 0xe9, 0x68, 0x05, 0x20,
+ 0x40, 0x31, 0x88, 0x72, 0x17, 0xe0, 0x00, 0x28,
+ 0x10, 0xd1, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x20,
+ 0x02, 0xe0, 0x00, 0xab, 0x5a, 0x80, 0x0d, 0x20,
+ 0x00, 0xab, 0x98, 0x80, 0x19, 0x80, 0x3c, 0x00,
+ 0x64, 0x23, 0x00, 0x00, 0xff, 0x20, 0x98, 0x71,
+ 0x00, 0x20, 0xd8, 0x71, 0x68, 0x46, 0x00, 0xf0,
+ 0x49, 0xf8, 0x42, 0xb0, 0xb0, 0xbd, 0x28, 0x1c,
+ 0x0f, 0xf0, 0x38, 0xfd, 0x20, 0x1c, 0xff, 0xf7,
+ 0x21, 0xfe, 0xf6, 0xe7, 0x70, 0x7c, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x20, 0x04, 0xf0, 0x9e, 0xff,
+ 0x03, 0x4c, 0xe0, 0x8a, 0x04, 0xf0, 0xaa, 0xff,
+ 0x20, 0x1c, 0x0f, 0xf0, 0x27, 0xfd, 0x10, 0xbd,
+ 0x3c, 0x00, 0xa0, 0x23, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7,
+ 0x0c, 0xfe, 0x01, 0x48, 0x0f, 0xf0, 0x1d, 0xfd,
+ 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x20, 0xff, 0xf7, 0x02, 0xfe, 0x01, 0x20,
+ 0x04, 0xf0, 0x93, 0xff, 0x02, 0x48, 0x0f, 0xf0,
+ 0x10, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x70, 0x7c,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x01, 0x1c,
+ 0x44, 0x31, 0x3c, 0x00, 0xdc, 0x23, 0x00, 0x00,
+ 0x04, 0x1c, 0x06, 0x22, 0x28, 0x1c, 0xfe, 0xf7,
+ 0x89, 0xf8, 0xec, 0x60, 0x20, 0x69, 0x03, 0xf0,
+ 0x97, 0xf8, 0x01, 0x1c, 0x06, 0x22, 0xa8, 0x18,
+ 0xfe, 0xf7, 0x80, 0xf8, 0x04, 0x20, 0xff, 0xf7,
+ 0xf7, 0xfd, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x90, 0xb5, 0x04, 0x1c, 0x80, 0x88, 0x93, 0xb0,
+ 0x00, 0x28, 0x06, 0xd0, 0x15, 0x49, 0x06, 0x22,
+ 0x48, 0x80, 0x18, 0x31, 0x3c, 0x00, 0x18, 0x24,
+ 0x00, 0x00, 0x88, 0x1f, 0xfe, 0xf7, 0x6d, 0xf8,
+ 0x68, 0x46, 0x0c, 0xf0, 0x14, 0xf8, 0x20, 0x88,
+ 0x01, 0x28, 0x08, 0xd1, 0x60, 0x88, 0x03, 0x28,
+ 0x05, 0xd1, 0xa0, 0x88, 0x00, 0x28, 0x02, 0xd1,
+ 0x06, 0x20, 0x0c, 0xa9, 0x08, 0x70, 0xa0, 0x79,
+ 0x06, 0x21, 0xff, 0x28, 0x04, 0xd0, 0xe0, 0x79,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x1c, 0x08, 0x31,
+ 0x0b, 0x20, 0x08, 0xaa, 0x50, 0x72, 0x3c, 0x00,
+ 0x54, 0x24, 0x00, 0x00, 0x20, 0x1c, 0x08, 0xf0,
+ 0x3b, 0xff, 0x03, 0x90, 0x68, 0x46, 0x0b, 0xf0,
+ 0x31, 0xf8, 0x13, 0xb0, 0x90, 0xbd, 0x00, 0x00,
+ 0x58, 0x7c, 0x01, 0x00, 0x07, 0x4b, 0x1a, 0x78,
+ 0x82, 0x42, 0x01, 0xd0, 0x00, 0x29, 0x07, 0xd0,
+ 0xff, 0x20, 0x18, 0x70, 0x04, 0x48, 0x01, 0x88,
+ 0x01, 0x22, 0x52, 0x03, 0x91, 0x43, 0x01, 0x80,
+ 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00,
+ 0x3c, 0x00, 0x90, 0x24, 0x00, 0x00, 0x32, 0x80,
+ 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x23,
+ 0x07, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x79,
+ 0x0a, 0xf0, 0x4f, 0xf9, 0x01, 0x20, 0x03, 0x49,
+ 0xa0, 0x40, 0x08, 0x39, 0x0a, 0x78, 0x10, 0x43,
+ 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x74, 0x7a,
+ 0x01, 0x00, 0x03, 0x4a, 0x00, 0x21, 0x11, 0x54,
+ 0x80, 0x00, 0x30, 0x32, 0x10, 0x58, 0x01, 0x70,
+ 0x70, 0x47, 0x3c, 0x00, 0xcc, 0x24, 0x00, 0x00,
+ 0xe0, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xfe, 0xf7, 0x12, 0xff,
+ 0x20, 0x1c, 0xff, 0xf7, 0xed, 0xff, 0x00, 0x21,
+ 0x20, 0x1c, 0x0e, 0xf0, 0x89, 0xfb, 0x10, 0xbd,
+ 0x05, 0x49, 0x80, 0xb5, 0x88, 0x60, 0x08, 0x7f,
+ 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x08, 0x58,
+ 0xfd, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00,
+ 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x25,
+ 0x00, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x21, 0x91, 0x20, 0xfe, 0xf7, 0xc7, 0xfe,
+ 0x80, 0xbd, 0x02, 0x4a, 0x11, 0x68, 0x81, 0x43,
+ 0x11, 0x60, 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e,
+ 0x01, 0x00, 0x80, 0xb5, 0xfe, 0xf7, 0xe9, 0xfe,
+ 0x80, 0xbd, 0x80, 0xb5, 0xfe, 0xf7, 0xe5, 0xfe,
+ 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0x31, 0xfa,
+ 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x3c, 0x00,
+ 0x44, 0x25, 0x00, 0x00, 0x04, 0x20, 0x88, 0x60,
+ 0x00, 0xf0, 0xd0, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x99, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0,
+ 0x99, 0xfb, 0x80, 0xbd, 0x38, 0xb5, 0x20, 0x28,
+ 0x15, 0xd2, 0x0d, 0x4c, 0x22, 0x1c, 0x20, 0x32,
+ 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79,
+ 0x5a, 0x70, 0x0a, 0x4b, 0x82, 0x00, 0x99, 0x50,
+ 0x3c, 0x00, 0x80, 0x25, 0x00, 0x00, 0x01, 0x21,
+ 0x81, 0x40, 0x08, 0x48, 0x01, 0x60, 0x42, 0x68,
+ 0x11, 0x43, 0x41, 0x60, 0x00, 0xab, 0x18, 0x88,
+ 0xe0, 0x84, 0x38, 0xbd, 0x01, 0x21, 0xff, 0x20,
+ 0xfe, 0xf7, 0x83, 0xfe, 0xf9, 0xe7, 0x00, 0x10,
+ 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0x20, 0x28, 0x09, 0xd2, 0x05, 0x49,
+ 0x06, 0x4b, 0x82, 0x00, 0x99, 0x50, 0x05, 0x4a,
+ 0x51, 0x68, 0x3c, 0x00, 0xbc, 0x25, 0x00, 0x00,
+ 0x01, 0x23, 0x83, 0x40, 0x99, 0x43, 0x51, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0xa9, 0x75, 0x00, 0x00,
+ 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00,
+ 0x02, 0x4a, 0x11, 0x68, 0x08, 0x43, 0x10, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, 0x01, 0x00,
+ 0x0b, 0x48, 0x01, 0x68, 0x03, 0x22, 0x12, 0x04,
+ 0x11, 0x43, 0x01, 0x60, 0x01, 0x68, 0x07, 0x22,
+ 0x12, 0x06, 0x91, 0x43, 0x3c, 0x00, 0xf8, 0x25,
+ 0x00, 0x00, 0x01, 0x22, 0x52, 0x06, 0x89, 0x18,
+ 0x01, 0x60, 0x01, 0x68, 0x12, 0x0c, 0x11, 0x43,
+ 0x01, 0x60, 0x01, 0x68, 0x52, 0x08, 0x11, 0x43,
+ 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, 0x80, 0x00,
+ 0x07, 0x00, 0xfe, 0xb5, 0x1c, 0x4e, 0x05, 0x1c,
+ 0xb0, 0x8a, 0xf2, 0x68, 0x12, 0xd0, 0x01, 0x24,
+ 0x00, 0x29, 0x09, 0xd1, 0x11, 0x6d, 0x02, 0xaa,
+ 0x01, 0xab, 0xfe, 0xf7, 0xf8, 0xfe, 0x3c, 0x00,
+ 0x34, 0x26, 0x00, 0x00, 0x02, 0x98, 0x00, 0x28,
+ 0x01, 0xd0, 0x00, 0x24, 0x0b, 0xe0, 0x01, 0xaa,
+ 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x70, 0xff,
+ 0x05, 0xe0, 0x11, 0x6d, 0x02, 0xaa, 0x00, 0x24,
+ 0x01, 0xab, 0xfe, 0xf7, 0x01, 0xff, 0x0e, 0x49,
+ 0x08, 0x1c, 0x20, 0x30, 0x82, 0x79, 0x00, 0xab,
+ 0x1a, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x30, 0x68,
+ 0x00, 0x28, 0x02, 0xd1, 0x02, 0x98, 0x30, 0x60,
+ 0x3c, 0x00, 0x70, 0x26, 0x00, 0x00, 0x02, 0xe0,
+ 0x02, 0x98, 0x72, 0x68, 0xd0, 0x60, 0x01, 0x98,
+ 0x00, 0xab, 0x70, 0x60, 0x18, 0x88, 0xc8, 0x84,
+ 0xf0, 0x68, 0xc0, 0x6c, 0xf0, 0x60, 0x20, 0x1c,
+ 0xfe, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x54, 0x27,
+ 0x1d, 0x4e, 0x00, 0x20, 0x30, 0x60, 0x70, 0x60,
+ 0x67, 0x43, 0x38, 0x04, 0x15, 0x1c, 0x00, 0x0c,
+ 0xb1, 0x82, 0x3c, 0x00, 0xac, 0x26, 0x00, 0x00,
+ 0xff, 0xf7, 0x96, 0xf8, 0x08, 0x21, 0x30, 0x61,
+ 0x00, 0x26, 0x17, 0x4a, 0x14, 0xe0, 0x03, 0x1c,
+ 0x24, 0x33, 0x42, 0x61, 0x03, 0x61, 0xc6, 0x61,
+ 0x01, 0x83, 0x08, 0x33, 0x03, 0x60, 0xb1, 0x23,
+ 0x43, 0x60, 0x03, 0x1c, 0x64, 0x33, 0xc3, 0x60,
+ 0x0c, 0x23, 0x03, 0x81, 0x03, 0x1c, 0x54, 0x33,
+ 0x4c, 0x30, 0x28, 0xc0, 0x01, 0x3c, 0x18, 0x1c,
+ 0x00, 0x2c, 0xe8, 0xd1, 0x3c, 0x00, 0xe8, 0x26,
+ 0x00, 0x00, 0x09, 0x4e, 0x07, 0x22, 0x30, 0x69,
+ 0xd2, 0x43, 0xc1, 0x19, 0x50, 0x50, 0x02, 0x1c,
+ 0x10, 0x32, 0x80, 0x39, 0x8a, 0x63, 0xf0, 0x60,
+ 0xb0, 0x60, 0x00, 0x21, 0x00, 0x20, 0xff, 0xf7,
+ 0x88, 0xff, 0x30, 0x69, 0xf0, 0x60, 0xb0, 0x60,
+ 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x91, 0x00,
+ 0x05, 0x00, 0x01, 0x48, 0x40, 0x6a, 0x70, 0x47,
+ 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x3c, 0x00,
+ 0x24, 0x27, 0x00, 0x00, 0x01, 0x48, 0x00, 0x88,
+ 0x70, 0x47, 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00,
+ 0x06, 0x49, 0x80, 0xb5, 0x08, 0x88, 0x01, 0x30,
+ 0x08, 0x80, 0x05, 0x49, 0x08, 0x20, 0x08, 0x60,
+ 0x04, 0x49, 0x88, 0x69, 0x88, 0x61, 0x00, 0xf0,
+ 0x21, 0xf8, 0x80, 0xbd, 0xfc, 0x6b, 0x01, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x03, 0x4a, 0x01, 0x20, 0x12, 0x1d, 0x06, 0xca,
+ 0x3c, 0x00, 0x60, 0x27, 0x00, 0x00, 0x91, 0x42,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0xe8, 0x7d,
+ 0x01, 0x00, 0x06, 0x48, 0x00, 0xb5, 0xc0, 0x7c,
+ 0x00, 0x28, 0x03, 0xd1, 0xff, 0xf7, 0xef, 0xff,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x00, 0xbd,
+ 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, 0xa0, 0x80,
+ 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x80, 0x07,
+ 0x02, 0xd5, 0x06, 0xf0, 0x3e, 0xfd, 0x03, 0xe0,
+ 0xe0, 0x07, 0x3c, 0x00, 0x9c, 0x27, 0x00, 0x00,
+ 0x01, 0xd5, 0x06, 0xf0, 0xe3, 0xfd, 0x60, 0x07,
+ 0x01, 0xd5, 0xfe, 0xf7, 0xab, 0xfd, 0x10, 0xbd,
+ 0x02, 0x4a, 0x01, 0x1c, 0x10, 0x68, 0x11, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00,
+ 0x38, 0xb5, 0x20, 0x4d, 0x2c, 0x1c, 0x20, 0x34,
+ 0xa0, 0x79, 0x00, 0xab, 0x18, 0x70, 0xe0, 0x79,
+ 0x58, 0x70, 0xfe, 0xf7, 0x27, 0xfa, 0x00, 0xab,
+ 0x18, 0x88, 0xe8, 0x84, 0x3c, 0x00, 0xd8, 0x27,
+ 0x00, 0x00, 0x1a, 0x48, 0x81, 0x78, 0x08, 0x22,
+ 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43,
+ 0x81, 0x70, 0x17, 0x48, 0x41, 0x68, 0x80, 0x22,
+ 0x91, 0x43, 0x41, 0x60, 0x01, 0x68, 0x11, 0x43,
+ 0x01, 0x60, 0x00, 0x20, 0x01, 0x30, 0x64, 0x28,
+ 0xfc, 0xd3, 0xa0, 0x79, 0x0f, 0x4d, 0x00, 0xab,
+ 0x18, 0x70, 0xe0, 0x79, 0x10, 0x4c, 0x58, 0x70,
+ 0x20, 0x1c, 0x10, 0x30, 0x00, 0xf0, 0x3c, 0x00,
+ 0x14, 0x28, 0x00, 0x00, 0xdf, 0xfb, 0x00, 0x20,
+ 0xc0, 0x43, 0xa0, 0x61, 0xff, 0xf7, 0x9c, 0xff,
+ 0x00, 0x28, 0x09, 0xd0, 0x0a, 0x49, 0x08, 0x69,
+ 0x01, 0x30, 0x08, 0x61, 0x00, 0x20, 0x3c, 0x31,
+ 0x89, 0x68, 0x48, 0x63, 0x06, 0xf0, 0xee, 0xfc,
+ 0x00, 0xab, 0x18, 0x88, 0xe8, 0x84, 0x38, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0xf4, 0x00, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x3c, 0x00, 0x50, 0x28, 0x00, 0x00, 0xe8, 0x7d,
+ 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, 0x00, 0x6a,
+ 0x00, 0x28, 0x01, 0xd0, 0xfe, 0xf7, 0xc1, 0xf9,
+ 0x07, 0x48, 0x07, 0x49, 0x3c, 0x30, 0x80, 0x68,
+ 0x10, 0x30, 0x48, 0x61, 0x01, 0x20, 0x08, 0x61,
+ 0x05, 0x49, 0x08, 0x68, 0x80, 0x22, 0x90, 0x43,
+ 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xe8, 0x7d,
+ 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xf4, 0x00,
+ 0x07, 0x00, 0x3c, 0x00, 0x8c, 0x28, 0x00, 0x00,
+ 0x80, 0xb5, 0x0c, 0xf0, 0xcb, 0xfe, 0x06, 0xf0,
+ 0xbf, 0xfc, 0x80, 0xbd, 0x01, 0x49, 0xc8, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00,
+ 0x02, 0x4a, 0x91, 0x6a, 0x08, 0x43, 0x90, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00,
+ 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x00, 0x21, 0x02, 0x79, 0x03, 0x68, 0x1a, 0x70,
+ 0x01, 0x31, 0x08, 0x30, 0x3c, 0x00, 0xc8, 0x28,
+ 0x00, 0x00, 0x03, 0x29, 0xf8, 0xd3, 0x70, 0x47,
+ 0x00, 0x00, 0x28, 0x52, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48,
+ 0x81, 0x62, 0x70, 0x47, 0x00, 0x00, 0x85, 0x75,
+ 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0xf8, 0xb5,
+ 0xff, 0xf7, 0x33, 0xff, 0x28, 0x4f, 0x00, 0x28,
+ 0x04, 0xd0, 0xff, 0xf7, 0xc8, 0xff, 0x38, 0x6a,
+ 0x01, 0x30, 0x38, 0x62, 0xf8, 0x6a, 0x3c, 0x00,
+ 0x04, 0x29, 0x00, 0x00, 0x00, 0x28, 0x02, 0xd0,
+ 0x01, 0x89, 0x04, 0x39, 0x01, 0x81, 0x38, 0x6b,
+ 0x00, 0x25, 0x00, 0x28, 0x08, 0xd0, 0x0b, 0x20,
+ 0x3d, 0x63, 0x10, 0xf0, 0xe5, 0xfa, 0x1e, 0x49,
+ 0x08, 0x68, 0x21, 0x22, 0x90, 0x43, 0x08, 0x60,
+ 0x38, 0x78, 0x3c, 0x21, 0x1b, 0x4a, 0x41, 0x43,
+ 0x8c, 0x18, 0xff, 0x22, 0x79, 0x6a, 0x3a, 0x70,
+ 0x00, 0x29, 0x0c, 0xd0, 0xb9, 0x69, 0x01, 0x31,
+ 0x3c, 0x00, 0x40, 0x29, 0x00, 0x00, 0xb9, 0x61,
+ 0x7d, 0x62, 0xbd, 0x68, 0x00, 0x2d, 0x04, 0xd0,
+ 0x63, 0x6b, 0x7a, 0x6b, 0x00, 0x21, 0xfd, 0xf7,
+ 0x47, 0xfd, 0xf8, 0xbd, 0x04, 0x28, 0x03, 0xd3,
+ 0x01, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0xa1, 0xfc,
+ 0x38, 0x69, 0x26, 0x1c, 0x01, 0x30, 0x38, 0x61,
+ 0x20, 0x36, 0x30, 0x78, 0x02, 0x28, 0x03, 0xd0,
+ 0x0c, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x95, 0xfc,
+ 0x35, 0x70, 0x3c, 0x00, 0x7c, 0x29, 0x00, 0x00,
+ 0xa1, 0x69, 0x00, 0x29, 0xe8, 0xd0, 0x63, 0x6b,
+ 0x30, 0x34, 0x20, 0x78, 0x0c, 0x1c, 0x00, 0x21,
+ 0x7a, 0x6b, 0xfd, 0xf7, 0x27, 0xfd, 0xdf, 0xe7,
+ 0x04, 0x6c, 0x01, 0x00, 0xf4, 0x00, 0x07, 0x00,
+ 0x18, 0xdb, 0x01, 0x00, 0x10, 0xb5, 0x0b, 0x4c,
+ 0x60, 0x6a, 0x00, 0x28, 0x0e, 0xd0, 0x0a, 0x48,
+ 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x20, 0x60, 0x62,
+ 0xa4, 0x68, 0x00, 0x2c, 0x3c, 0x00, 0xb8, 0x29,
+ 0x00, 0x00, 0x05, 0xd0, 0x7e, 0x23, 0xdb, 0x43,
+ 0x00, 0x22, 0x01, 0x21, 0xfd, 0xf7, 0x0d, 0xfd,
+ 0x10, 0xbd, 0xe0, 0x69, 0x01, 0x30, 0xe0, 0x61,
+ 0x10, 0xbd, 0x04, 0x6c, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x09, 0x48, 0x41, 0x68, 0x3f, 0x22,
+ 0x12, 0x04, 0x91, 0x43, 0x0d, 0x22, 0x12, 0x04,
+ 0x89, 0x18, 0x41, 0x60, 0x41, 0x68, 0x01, 0x22,
+ 0x52, 0x02, 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00,
+ 0xf4, 0x29, 0x00, 0x00, 0x03, 0x48, 0x81, 0x78,
+ 0x81, 0x70, 0x81, 0x78, 0x81, 0x70, 0x70, 0x47,
+ 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0xf0, 0xb5, 0x01, 0x25, 0x08, 0x24, 0x00, 0x20,
+ 0x0e, 0x4a, 0x0f, 0x49, 0x00, 0x26, 0x3c, 0x23,
+ 0x43, 0x43, 0xd1, 0x52, 0x9b, 0x18, 0x5d, 0x71,
+ 0x9b, 0x60, 0x5e, 0x61, 0x1c, 0x82, 0xc0, 0x27,
+ 0xdf, 0x60, 0x20, 0x27, 0xfe, 0x54, 0x9e, 0x61,
+ 0x3c, 0x00, 0x30, 0x2a, 0x00, 0x00, 0x30, 0x27,
+ 0xfe, 0x54, 0x07, 0x4f, 0x3f, 0x18, 0x20, 0x37,
+ 0x01, 0x30, 0x05, 0x28, 0x9f, 0x63, 0xe9, 0xd3,
+ 0x05, 0x48, 0xff, 0x32, 0x01, 0x32, 0x90, 0x62,
+ 0xf0, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xbe, 0xba,
+ 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, 0x06, 0x6c,
+ 0x01, 0x00, 0x01, 0x49, 0x48, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x05, 0x49,
+ 0x08, 0x5c, 0x3c, 0x00, 0x6c, 0x2a, 0x00, 0x00,
+ 0x05, 0x49, 0x49, 0x68, 0x40, 0x18, 0xc0, 0x06,
+ 0xc0, 0x0e, 0x04, 0x49, 0x20, 0x30, 0x48, 0x72,
+ 0x70, 0x47, 0x00, 0x00, 0xa0, 0x57, 0x01, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x80, 0xb5, 0x15, 0x21, 0x84, 0x20, 0xfe, 0xf7,
+ 0x07, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, 0x43, 0x48,
+ 0x84, 0x68, 0x03, 0x34, 0x42, 0x4d, 0x04, 0xe0,
+ 0x20, 0x1c, 0x10, 0xf0, 0x3c, 0x00, 0xa8, 0x2a,
+ 0x00, 0x00, 0xb9, 0xf8, 0x00, 0x28, 0x71, 0xd1,
+ 0x28, 0x69, 0xc0, 0x07, 0xf7, 0xd5, 0x3e, 0x48,
+ 0x28, 0x60, 0x3e, 0x4a, 0x14, 0x1c, 0x20, 0x34,
+ 0x20, 0x79, 0x00, 0x90, 0x3c, 0x23, 0x3c, 0x49,
+ 0x58, 0x43, 0x45, 0x18, 0x28, 0x79, 0xff, 0xf7,
+ 0xcc, 0xff, 0x28, 0x1c, 0x3a, 0x49, 0x08, 0x30,
+ 0x48, 0x60, 0x01, 0x26, 0x08, 0x1c, 0x06, 0x60,
+ 0x68, 0x6a, 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00,
+ 0xe4, 0x2a, 0x00, 0x00, 0xa9, 0x6a, 0x92, 0x6a,
+ 0x35, 0x4b, 0x9f, 0x68, 0xd7, 0x1b, 0x1a, 0x68,
+ 0x51, 0x18, 0x79, 0x18, 0x8a, 0x42, 0x5a, 0x68,
+ 0x00, 0xd8, 0x00, 0xe0, 0x01, 0x32, 0x06, 0xc0,
+ 0xe8, 0x6a, 0xfe, 0xf7, 0x87, 0xff, 0x2d, 0x49,
+ 0xe8, 0x6a, 0x48, 0x60, 0x30, 0x1c, 0x0e, 0x60,
+ 0x66, 0x79, 0x1f, 0xe0, 0x2b, 0x48, 0x46, 0x61,
+ 0x04, 0x7f, 0x29, 0x49, 0x20, 0x1c, 0x50, 0x39,
+ 0x3c, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x89, 0x6a,
+ 0xfd, 0xf7, 0x5a, 0xfc, 0x00, 0x98, 0x84, 0x42,
+ 0x10, 0xd0, 0x3c, 0x20, 0x22, 0x49, 0x60, 0x43,
+ 0x40, 0x18, 0x87, 0x69, 0x00, 0x2f, 0x09, 0xd0,
+ 0x00, 0x21, 0x20, 0x30, 0x01, 0x70, 0x7e, 0x23,
+ 0xdb, 0x43, 0x02, 0x21, 0x00, 0x22, 0x20, 0x1c,
+ 0xfd, 0xf7, 0x4c, 0xfc, 0x01, 0x20, 0xa0, 0x40,
+ 0x86, 0x43, 0x00, 0x2e, 0xdd, 0xd1, 0xe9, 0x69,
+ 0x00, 0x29, 0x3c, 0x00, 0x5c, 0x2b, 0x00, 0x00,
+ 0x03, 0xd0, 0x30, 0x20, 0x40, 0x5d, 0xfd, 0xf7,
+ 0x3a, 0xfc, 0x16, 0x4c, 0x50, 0x3c, 0x60, 0x6a,
+ 0x00, 0x28, 0x03, 0xd0, 0x0a, 0x21, 0x84, 0x20,
+ 0xfe, 0xf7, 0x96, 0xfb, 0x20, 0x35, 0x28, 0x78,
+ 0x01, 0x28, 0x03, 0xd0, 0x0b, 0x21, 0x84, 0x20,
+ 0xfe, 0xf7, 0x8e, 0xfb, 0x02, 0x20, 0x28, 0x70,
+ 0xe0, 0x68, 0x01, 0x30, 0x00, 0xe0, 0x07, 0xe0,
+ 0xe0, 0x60, 0x00, 0x98, 0x3c, 0x00, 0x98, 0x2b,
+ 0x00, 0x00, 0x20, 0x70, 0x00, 0x98, 0x60, 0x70,
+ 0x0a, 0x48, 0x00, 0x68, 0x60, 0x63, 0xf8, 0xbd,
+ 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x30, 0x80,
+ 0x07, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x54, 0x6c, 0x01, 0x00, 0x00, 0xa0,
+ 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0x3c, 0x22,
+ 0x3c, 0x23, 0x4a, 0x43, 0x09, 0x49, 0x3c, 0x00,
+ 0xd4, 0x2b, 0x00, 0x00, 0xb0, 0xb5, 0x54, 0x18,
+ 0x58, 0x43, 0x45, 0x18, 0x21, 0x1c, 0x38, 0x22,
+ 0x28, 0x1c, 0xfd, 0xf7, 0xe5, 0xfc, 0xa0, 0x6b,
+ 0x00, 0x78, 0xa9, 0x6b, 0x08, 0x70, 0x00, 0x20,
+ 0x20, 0x34, 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00,
+ 0x18, 0xdb, 0x01, 0x00, 0x3c, 0x23, 0x07, 0x49,
+ 0x58, 0x43, 0x10, 0xb5, 0x44, 0x18, 0x20, 0x34,
+ 0x20, 0x78, 0x02, 0x28, 0x03, 0xd1, 0x0d, 0x21,
+ 0x3c, 0x00, 0x10, 0x2c, 0x00, 0x00, 0x84, 0x20,
+ 0xfe, 0xf7, 0x47, 0xfb, 0x00, 0x20, 0x20, 0x70,
+ 0x10, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xff, 0xb5,
+ 0x3c, 0x20, 0x48, 0x43, 0x1a, 0x49, 0x81, 0xb0,
+ 0x44, 0x18, 0x26, 0x1c, 0x20, 0x36, 0x30, 0x78,
+ 0x15, 0x1c, 0x0f, 0x9f, 0x02, 0x28, 0x03, 0xd1,
+ 0x04, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x31, 0xfb,
+ 0x01, 0x20, 0x30, 0x70, 0x25, 0x71, 0x0b, 0x99,
+ 0x30, 0x22, 0x3c, 0x00, 0x4c, 0x2c, 0x00, 0x00,
+ 0x61, 0x80, 0x0a, 0x99, 0xe1, 0x62, 0x0d, 0x99,
+ 0xa1, 0x61, 0x0c, 0x99, 0xe1, 0x61, 0x0e, 0x99,
+ 0x61, 0x62, 0xa7, 0x62, 0x01, 0x99, 0x11, 0x55,
+ 0x7e, 0x21, 0xc9, 0x43, 0x61, 0x63, 0x04, 0x99,
+ 0x00, 0x29, 0x00, 0xd1, 0x00, 0x20, 0x06, 0x1c,
+ 0x28, 0x1c, 0x08, 0xf0, 0x8b, 0xf8, 0x00, 0x28,
+ 0x01, 0xd0, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0xa1, 0x6b, 0x30, 0x43, 0x3c, 0x00, 0x88, 0x2c,
+ 0x00, 0x00, 0x08, 0x70, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x80, 0xb5,
+ 0x14, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x03, 0xfb,
+ 0x80, 0xbd, 0x01, 0x48, 0x40, 0x78, 0x70, 0x47,
+ 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x02, 0x48,
+ 0x00, 0x69, 0xc0, 0x07, 0xc0, 0x0f, 0x70, 0x47,
+ 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x01, 0x1c,
+ 0x3c, 0x23, 0x04, 0x4a, 0x59, 0x43, 0x3c, 0x00,
+ 0xc4, 0x2c, 0x00, 0x00, 0x89, 0x18, 0x20, 0x31,
+ 0x09, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x18, 0xdb, 0x01, 0x00,
+ 0x08, 0x48, 0x40, 0x6a, 0x00, 0x28, 0x0a, 0xd1,
+ 0x07, 0x4a, 0x00, 0x21, 0x20, 0x23, 0x9b, 0x5c,
+ 0x02, 0x2b, 0x04, 0xd0, 0x01, 0x31, 0x3c, 0x32,
+ 0x05, 0x29, 0xf7, 0xd3, 0x70, 0x47, 0x01, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00,
+ 0x3c, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x18, 0xdb,
+ 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, 0x04, 0x1c,
+ 0x17, 0x1c, 0xfe, 0xf7, 0x82, 0xfe, 0x20, 0x1c,
+ 0x11, 0x4c, 0x60, 0x60, 0x01, 0x20, 0x20, 0x60,
+ 0x10, 0x4d, 0x68, 0x69, 0x01, 0x30, 0x68, 0x61,
+ 0x68, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21,
+ 0x84, 0x20, 0xfe, 0xf7, 0xba, 0xfa, 0xa0, 0x68,
+ 0x40, 0x07, 0x03, 0xd5, 0x06, 0x21, 0x84, 0x20,
+ 0xfe, 0xf7, 0x3c, 0x00, 0x3c, 0x2d, 0x00, 0x00,
+ 0xb3, 0xfa, 0x08, 0x48, 0x00, 0x69, 0x00, 0x28,
+ 0x03, 0xda, 0xaa, 0x21, 0x84, 0x20, 0xfe, 0xf7,
+ 0xab, 0xfa, 0x02, 0x20, 0x68, 0x62, 0xae, 0x60,
+ 0x2f, 0x70, 0xf8, 0xbd, 0x00, 0x30, 0x07, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00,
+ 0x04, 0x4a, 0x51, 0x80, 0x10, 0x71, 0x03, 0x48,
+ 0x03, 0x49, 0x08, 0x30, 0x48, 0x60, 0x01, 0x20,
+ 0x08, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x78, 0x2d,
+ 0x00, 0x00, 0x3c, 0x6c, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x00, 0x21, 0x00, 0x23, 0x05, 0xe0,
+ 0x02, 0x89, 0x43, 0x60, 0xc0, 0x68, 0x51, 0x18,
+ 0x09, 0x04, 0x09, 0x0c, 0x00, 0x28, 0xf7, 0xd1,
+ 0x04, 0x31, 0x08, 0x04, 0x00, 0x0c, 0x70, 0x47,
+ 0x00, 0x00, 0x02, 0x4a, 0x51, 0x6b, 0x08, 0x43,
+ 0x50, 0x63, 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c,
+ 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, 0x3c, 0x00,
+ 0xb4, 0x2d, 0x00, 0x00, 0x22, 0x1c, 0x20, 0x32,
+ 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79,
+ 0x5a, 0x70, 0x03, 0x68, 0x40, 0x68, 0x06, 0x4a,
+ 0x50, 0x65, 0x05, 0x48, 0x13, 0x65, 0x50, 0x30,
+ 0x81, 0x60, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84,
+ 0x38, 0xbd, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0x98, 0xb5, 0x0d, 0x4c,
+ 0x20, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab,
+ 0x3c, 0x00, 0xf0, 0x2d, 0x00, 0x00, 0x19, 0x70,
+ 0xc0, 0x79, 0x58, 0x70, 0x0a, 0x48, 0x00, 0xf0,
+ 0xec, 0xf8, 0x09, 0x49, 0x00, 0x20, 0x48, 0x62,
+ 0xff, 0xf7, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0,
+ 0x12, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x49, 0xfa,
+ 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, 0x98, 0xbd,
+ 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x03, 0x48,
+ 0x01, 0x7a, 0x3c, 0x00, 0x2c, 0x2e, 0x00, 0x00,
+ 0xfe, 0x22, 0x91, 0x43, 0x0a, 0x31, 0x01, 0x72,
+ 0x70, 0x47, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x90, 0xb5, 0x0e, 0x4c, 0x85, 0xb0, 0xa0, 0x78,
+ 0x02, 0x28, 0x14, 0xd1, 0x03, 0x20, 0xa0, 0x70,
+ 0x0b, 0x49, 0x00, 0x20, 0x00, 0x22, 0x04, 0x92,
+ 0x02, 0x90, 0x03, 0x91, 0xe1, 0x88, 0x01, 0x22,
+ 0x01, 0x92, 0x00, 0x91, 0x61, 0x78, 0x20, 0x78,
+ 0x22, 0x69, 0xe3, 0x68, 0x3c, 0x00, 0x68, 0x2e,
+ 0x00, 0x00, 0x08, 0xf0, 0x94, 0xfd, 0x04, 0x48,
+ 0x09, 0xf0, 0x7f, 0xf9, 0x05, 0xb0, 0x90, 0xbd,
+ 0x00, 0x00, 0xb4, 0x79, 0x01, 0x00, 0xad, 0xb6,
+ 0x00, 0x00, 0x71, 0xb6, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0c, 0x4d, 0xac, 0x79, 0x0c, 0x49, 0x09, 0x78,
+ 0x00, 0x29, 0x03, 0xd0, 0x01, 0x29, 0x0e, 0xd0,
+ 0x02, 0x29, 0x08, 0xd1, 0xc2, 0x88, 0x00, 0x2a,
+ 0x09, 0xd0, 0x01, 0x23, 0x81, 0x68, 0x3c, 0x00,
+ 0xa4, 0x2e, 0x00, 0x00, 0x02, 0x20, 0x0f, 0xf0,
+ 0xc1, 0xf8, 0x03, 0xe0, 0x02, 0x21, 0x86, 0x20,
+ 0xfe, 0xf7, 0xf8, 0xf9, 0xac, 0x71, 0xb0, 0xbd,
+ 0x20, 0x10, 0x07, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x68, 0x07, 0x49, 0x4a, 0x60,
+ 0x03, 0x79, 0xca, 0x78, 0xcb, 0x70, 0x00, 0x79,
+ 0x90, 0x42, 0x06, 0xd0, 0x03, 0x48, 0x14, 0x30,
+ 0x00, 0x89, 0x07, 0xf0, 0x27, 0xfe, 0x06, 0xf0,
+ 0x3c, 0x00, 0xe0, 0x2e, 0x00, 0x00, 0xab, 0xfa,
+ 0x80, 0xbd, 0x84, 0x66, 0x01, 0x00, 0x70, 0xb5,
+ 0x16, 0x4c, 0x15, 0x4d, 0xa0, 0x78, 0x00, 0x26,
+ 0x98, 0x3d, 0x01, 0x28, 0x03, 0xd1, 0x28, 0x69,
+ 0x08, 0xf0, 0xfb, 0xfc, 0xa6, 0x70, 0x60, 0x68,
+ 0x01, 0x28, 0x03, 0xd0, 0x00, 0x21, 0x28, 0x69,
+ 0x00, 0xf0, 0xff, 0xfb, 0x0e, 0x48, 0x29, 0x69,
+ 0x0c, 0xf0, 0x31, 0xfa, 0x01, 0x20, 0x0c, 0xf0,
+ 0xe4, 0xf8, 0x3c, 0x00, 0x1c, 0x2f, 0x00, 0x00,
+ 0xe0, 0x78, 0x01, 0x28, 0x02, 0xd0, 0x01, 0x20,
+ 0x60, 0x70, 0x00, 0xe0, 0x66, 0x70, 0x06, 0x48,
+ 0x14, 0x30, 0x41, 0x68, 0x01, 0x29, 0x06, 0xd1,
+ 0x06, 0x60, 0x41, 0x6f, 0x00, 0x29, 0x02, 0xd0,
+ 0x00, 0x20, 0xfd, 0xf7, 0x4c, 0xfa, 0x70, 0xbd,
+ 0x84, 0x66, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x30, 0xb5, 0x00, 0x22, 0x00, 0x23, 0x01, 0x25,
+ 0x2c, 0x1c, 0x94, 0x40, 0x3c, 0x00, 0x58, 0x2f,
+ 0x00, 0x00, 0x04, 0x40, 0x01, 0xd0, 0xca, 0x54,
+ 0x01, 0x33, 0x01, 0x32, 0x0e, 0x2a, 0xf6, 0xdb,
+ 0x18, 0x1c, 0x30, 0xbd, 0x00, 0x00, 0xff, 0xb5,
+ 0x01, 0x27, 0x00, 0x26, 0x05, 0x1c, 0x02, 0x20,
+ 0x81, 0xb0, 0x00, 0x90, 0x00, 0x2d, 0x18, 0xd0,
+ 0x28, 0x78, 0xff, 0x28, 0x15, 0xd0, 0x00, 0x24,
+ 0x10, 0xe0, 0x28, 0x19, 0x80, 0x78, 0x0a, 0x99,
+ 0x00, 0x29, 0x01, 0xd0, 0x01, 0x06, 0x3c, 0x00,
+ 0x94, 0x2f, 0x00, 0x00, 0x08, 0xd5, 0x07, 0xf0,
+ 0xe9, 0xfe, 0x0e, 0x28, 0x03, 0xd0, 0x01, 0x21,
+ 0x81, 0x40, 0x0e, 0x43, 0x00, 0xe0, 0x00, 0x27,
+ 0x01, 0x34, 0x68, 0x78, 0xa0, 0x42, 0xeb, 0xdc,
+ 0x00, 0x98, 0x02, 0x9d, 0x01, 0x38, 0x00, 0x90,
+ 0xdf, 0xd1, 0x03, 0x98, 0x31, 0x1c, 0x81, 0x43,
+ 0x02, 0xd0, 0x03, 0x98, 0x06, 0x40, 0x00, 0x27,
+ 0x04, 0x98, 0x06, 0x60, 0x05, 0xb0, 0x38, 0x1c,
+ 0x3c, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0xf0, 0xbd,
+ 0x00, 0x00, 0x02, 0x21, 0x01, 0x60, 0x64, 0x21,
+ 0x01, 0xe0, 0x01, 0x39, 0x02, 0xd0, 0x02, 0x68,
+ 0x92, 0x07, 0xfa, 0xd4, 0x01, 0x20, 0x00, 0x29,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x10, 0xb5,
+ 0x00, 0x20, 0xc4, 0x43, 0x05, 0x4b, 0x02, 0x22,
+ 0x01, 0x01, 0x5a, 0x50, 0xc9, 0x18, 0x8c, 0x60,
+ 0x01, 0x30, 0x08, 0x28, 0xf8, 0xdb, 0x10, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x30, 0x00, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0xf0, 0xb5, 0x05, 0x1c,
+ 0x60, 0x35, 0xc7, 0x6a, 0x04, 0x1c, 0x28, 0x7b,
+ 0x00, 0x2f, 0x8b, 0xb0, 0x15, 0xd0, 0x08, 0x28,
+ 0x15, 0xd2, 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07,
+ 0x09, 0x09, 0x0c, 0x0c, 0x01, 0x26, 0x00, 0x21,
+ 0x09, 0xe0, 0x00, 0x26, 0x06, 0xe0, 0x02, 0x26,
+ 0x02, 0x21, 0x04, 0xe0, 0x3c, 0x00, 0x48, 0x30,
+ 0x00, 0x00, 0x03, 0x26, 0x03, 0x21, 0x01, 0xe0,
+ 0x04, 0x26, 0x01, 0x21, 0x8c, 0x22, 0x12, 0x59,
+ 0x07, 0x91, 0x26, 0x49, 0x06, 0x90, 0x04, 0x91,
+ 0x00, 0x20, 0x03, 0x90, 0x05, 0x97, 0x08, 0x92,
+ 0xe0, 0x69, 0x22, 0x69, 0x21, 0x1c, 0x70, 0x31,
+ 0x01, 0x91, 0x21, 0x49, 0x00, 0x90, 0x70, 0x00,
+ 0x40, 0x18, 0x60, 0x30, 0x02, 0x92, 0x03, 0x88,
+ 0x59, 0x1c, 0x01, 0x80, 0x1e, 0x48, 0x3c, 0x00,
+ 0x84, 0x30, 0x00, 0x00, 0x02, 0x88, 0xa1, 0x68,
+ 0x0a, 0xa8, 0x09, 0xf0, 0xe1, 0xff, 0x60, 0x60,
+ 0xe8, 0x7a, 0xa1, 0x6a, 0xc9, 0x07, 0x00, 0x07,
+ 0x00, 0x0e, 0xc9, 0x0d, 0x08, 0x43, 0x61, 0x6a,
+ 0x22, 0x69, 0xc9, 0x07, 0x89, 0x0d, 0x01, 0x43,
+ 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x80, 0x03, 0x08, 0x43, 0x21, 0x6a, 0xc9, 0x03,
+ 0x08, 0x43, 0x08, 0x21, 0x08, 0x43, 0x0a, 0x99,
+ 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x08, 0x80,
+ 0x20, 0x1c, 0xfe, 0xf7, 0x98, 0xfe, 0x20, 0x69,
+ 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0,
+ 0x82, 0xf9, 0x0b, 0xb0, 0xf0, 0xbd, 0x80, 0x79,
+ 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0x0f, 0xf9,
+ 0x20, 0x69, 0x06, 0x49, 0x80, 0x79, 0x80, 0x00,
+ 0x09, 0x58, 0x20, 0x1c, 0xfd, 0xf7, 0x74, 0xf9,
+ 0xef, 0xe7, 0x79, 0x2f, 0x01, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x30, 0x00, 0x00,
+ 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x58, 0x30, 0x8a, 0xb0,
+ 0x0e, 0xf0, 0x7c, 0xfe, 0x22, 0x1c, 0x80, 0x32,
+ 0x51, 0x68, 0x00, 0x29, 0x01, 0xd0, 0x11, 0x7a,
+ 0x07, 0xe0, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x69,
+ 0x80, 0x07, 0x01, 0xd5, 0x03, 0x21, 0x00, 0xe0,
+ 0x01, 0x21, 0xd2, 0x68, 0x07, 0x91, 0x22, 0x49,
+ 0x00, 0x20, 0x08, 0x92, 0x3c, 0x00, 0x38, 0x31,
+ 0x00, 0x00, 0x04, 0x91, 0x00, 0x22, 0x05, 0x92,
+ 0x06, 0x90, 0x03, 0x90, 0xe0, 0x69, 0x22, 0x69,
+ 0x00, 0x90, 0x21, 0x1c, 0x70, 0x31, 0x1c, 0x48,
+ 0x01, 0x91, 0x02, 0x92, 0x03, 0x89, 0x59, 0x1c,
+ 0x01, 0x81, 0x1a, 0x48, 0x02, 0x88, 0xa1, 0x68,
+ 0x09, 0xa8, 0x09, 0xf0, 0x76, 0xff, 0x60, 0x60,
+ 0x6b, 0x20, 0x00, 0x5d, 0xa1, 0x6a, 0x22, 0x69,
+ 0xc9, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x00,
+ 0x74, 0x31, 0x00, 0x00, 0xc9, 0x0d, 0x01, 0x43,
+ 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x80, 0x03, 0x08, 0x43, 0x09, 0x99, 0x08, 0x80,
+ 0x20, 0x1c, 0xfe, 0xf7, 0x35, 0xfe, 0x20, 0x69,
+ 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0,
+ 0x1f, 0xf9, 0x0a, 0xb0, 0x10, 0xbd, 0x80, 0x79,
+ 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0xac, 0xf8,
+ 0x20, 0x69, 0x07, 0x49, 0x80, 0x79, 0x80, 0x00,
+ 0x3c, 0x00, 0xb0, 0x31, 0x00, 0x00, 0x09, 0x58,
+ 0x20, 0x1c, 0xfd, 0xf7, 0x11, 0xf9, 0xef, 0xe7,
+ 0x00, 0x00, 0xbd, 0x2f, 0x01, 0x00, 0x24, 0x6a,
+ 0x01, 0x00, 0x08, 0x61, 0x01, 0x00, 0x74, 0x57,
+ 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x1c, 0x00, 0x69,
+ 0x04, 0x21, 0x07, 0xf0, 0xd2, 0xfa, 0x00, 0x28,
+ 0x09, 0xd0, 0x42, 0x78, 0x02, 0x32, 0x01, 0x1c,
+ 0x68, 0x46, 0xfd, 0xf7, 0x88, 0xf9, 0xe8, 0x6a,
+ 0x6c, 0x46, 0x3c, 0x00, 0xec, 0x31, 0x00, 0x00,
+ 0x02, 0x90, 0x00, 0xe0, 0x00, 0x24, 0x28, 0x1c,
+ 0x14, 0x30, 0x02, 0xf0, 0x03, 0xfb, 0x00, 0x28,
+ 0x04, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0x05, 0xf0,
+ 0xa5, 0xfe, 0x3e, 0xbd, 0x00, 0x2c, 0xfc, 0xd0,
+ 0x02, 0x49, 0x20, 0x1c, 0x49, 0x69, 0xfd, 0xf7,
+ 0xe2, 0xf8, 0xf6, 0xe7, 0x44, 0x7d, 0x01, 0x00,
+ 0x70, 0xb5, 0x1e, 0x1c, 0x18, 0x23, 0x58, 0x43,
+ 0x06, 0x4b, 0x04, 0x9d, 0x3c, 0x00, 0x28, 0x32,
+ 0x00, 0x00, 0x19, 0x50, 0xc4, 0x18, 0x00, 0x20,
+ 0x60, 0x61, 0x62, 0x60, 0xa6, 0x60, 0xe5, 0x60,
+ 0x0f, 0xf0, 0xb9, 0xfd, 0x20, 0x61, 0x70, 0xbd,
+ 0x00, 0x00, 0xb8, 0x7d, 0x01, 0x00, 0x02, 0x4a,
+ 0x01, 0x1c, 0x90, 0x69, 0x91, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x6b, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x04, 0x49, 0x04, 0x4b, 0x3c, 0x00,
+ 0x64, 0x32, 0x00, 0x00, 0xca, 0x68, 0x09, 0x69,
+ 0x5c, 0x3b, 0x5b, 0x68, 0xc9, 0x1a, 0x41, 0x43,
+ 0x50, 0x18, 0x70, 0x47, 0xa0, 0x7d, 0x01, 0x00,
+ 0x01, 0x48, 0x00, 0x78, 0x70, 0x47, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22,
+ 0x01, 0x49, 0xfd, 0xf7, 0x35, 0xf9, 0x80, 0xbd,
+ 0xfe, 0x67, 0x01, 0x00, 0xf0, 0xb5, 0x89, 0xb0,
+ 0x00, 0x93, 0x16, 0x4f, 0x13, 0x1c, 0x0e, 0x1c,
+ 0x3c, 0x00, 0xa0, 0x32, 0x00, 0x00, 0x04, 0x1c,
+ 0x3a, 0x1c, 0x01, 0xf0, 0x62, 0xff, 0x01, 0xa9,
+ 0x06, 0xa8, 0xa2, 0x68, 0x02, 0xf0, 0x0b, 0xf9,
+ 0x01, 0xaa, 0x06, 0xa9, 0x38, 0x1c, 0x63, 0x6a,
+ 0x02, 0xf0, 0x81, 0xfc, 0x05, 0x1c, 0x01, 0x28,
+ 0x14, 0xd1, 0x0c, 0x48, 0xfc, 0x21, 0xc8, 0x51,
+ 0x38, 0x1c, 0x02, 0xf0, 0x0c, 0xf8, 0x03, 0x21,
+ 0x30, 0x1c, 0x07, 0xf0, 0x52, 0xfa, 0x00, 0x28,
+ 0x07, 0xd0, 0x3c, 0x00, 0xdc, 0x32, 0x00, 0x00,
+ 0x80, 0x78, 0x00, 0xf0, 0x33, 0xfc, 0x20, 0x1c,
+ 0x10, 0x30, 0x0e, 0xf0, 0x47, 0xfd, 0x00, 0xe0,
+ 0x00, 0x25, 0x28, 0x1c, 0x09, 0xb0, 0xf0, 0xbd,
+ 0xf4, 0x67, 0x01, 0x00, 0xc1, 0x38, 0x00, 0x00,
+ 0x10, 0xb5, 0x07, 0x4c, 0x06, 0x48, 0x06, 0x22,
+ 0x21, 0x1d, 0x08, 0x38, 0xfd, 0xf7, 0xf6, 0xf8,
+ 0x01, 0xf0, 0xfc, 0xff, 0x00, 0xf0, 0x42, 0xfc,
+ 0x20, 0x1c, 0x02, 0xf0, 0x3c, 0x00, 0x18, 0x33,
+ 0x00, 0x00, 0x27, 0xfc, 0x10, 0xbd, 0xf4, 0x67,
+ 0x01, 0x00, 0x08, 0x49, 0xc9, 0x68, 0x00, 0x29,
+ 0x0a, 0xd0, 0x06, 0x4a, 0x01, 0x32, 0x51, 0x78,
+ 0x12, 0x78, 0x48, 0x43, 0x00, 0x2a, 0x01, 0xd1,
+ 0x08, 0x18, 0x70, 0x47, 0x10, 0x18, 0x70, 0x47,
+ 0x01, 0x30, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28,
+ 0x5a, 0x69, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00,
+ 0x54, 0x33, 0x00, 0x00, 0x10, 0x1c, 0x59, 0x61,
+ 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0xb9, 0x75, 0x00, 0x00, 0x07, 0x49, 0x00, 0x20,
+ 0x0a, 0x78, 0x02, 0x2a, 0x09, 0xd1, 0x0a, 0x7c,
+ 0x00, 0x2a, 0x05, 0xd1, 0xca, 0x68, 0x00, 0x2a,
+ 0x03, 0xd0, 0x49, 0x69, 0x00, 0x29, 0x00, 0xd0,
+ 0x01, 0x20, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00,
+ 0x0c, 0x4a, 0x80, 0xb5, 0x01, 0x21, 0x51, 0x60,
+ 0x3c, 0x00, 0x90, 0x33, 0x00, 0x00, 0x09, 0xf0,
+ 0x6a, 0xf8, 0x09, 0x48, 0x1c, 0x30, 0x81, 0x69,
+ 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, 0x83, 0x61,
+ 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0xf0,
+ 0xd2, 0xf8, 0x80, 0xbd, 0x00, 0x22, 0x00, 0x21,
+ 0x03, 0x48, 0x00, 0xf0, 0x5c, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28,
+ 0x16, 0xd1, 0x3c, 0x00, 0xcc, 0x33, 0x00, 0x00,
+ 0x0e, 0x4d, 0x02, 0x2c, 0x09, 0xd1, 0x00, 0xf0,
+ 0x2b, 0xfa, 0x00, 0x28, 0x0e, 0xd0, 0x68, 0x69,
+ 0x00, 0x28, 0x0b, 0xd1, 0x21, 0x1c, 0x13, 0x20,
+ 0x0c, 0xe0, 0x03, 0x2c, 0xfa, 0xd1, 0x00, 0xf0,
+ 0xf9, 0xf9, 0x00, 0x28, 0x02, 0xd0, 0x28, 0x7c,
+ 0x00, 0x28, 0xf3, 0xd0, 0xb0, 0xbd, 0x21, 0x1c,
+ 0x00, 0x06, 0x00, 0x0e, 0x04, 0xf0, 0x62, 0xfc,
+ 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x34,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0c, 0x4c, 0x00, 0x25, 0x25, 0x74, 0x65, 0x61,
+ 0xe5, 0x60, 0x00, 0xf0, 0x3c, 0xfa, 0x00, 0xf0,
+ 0x34, 0xfa, 0x07, 0x48, 0x1c, 0x38, 0x05, 0x61,
+ 0x09, 0xf0, 0x33, 0xff, 0x20, 0x78, 0x00, 0x28,
+ 0x02, 0xd1, 0x04, 0xf0, 0x6e, 0xfa, 0xb0, 0xbd,
+ 0x02, 0x28, 0xfc, 0xd1, 0x04, 0xf0, 0xa5, 0xfb,
+ 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x3c, 0x00,
+ 0x44, 0x34, 0x00, 0x00, 0x0c, 0x48, 0x80, 0xb5,
+ 0x01, 0x78, 0x00, 0x29, 0x12, 0xd0, 0xc0, 0x68,
+ 0x00, 0x28, 0x0f, 0xd1, 0x08, 0x48, 0x1c, 0x38,
+ 0x40, 0x69, 0x00, 0x28, 0x0a, 0xd1, 0x07, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x00, 0x22,
+ 0x07, 0x21, 0x10, 0x20, 0x10, 0xf0, 0xa0, 0xf9,
+ 0x02, 0xf0, 0x2c, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0xd4, 0x67, 0x01, 0x00,
+ 0x3c, 0x00, 0x80, 0x34, 0x00, 0x00, 0xf8, 0xb5,
+ 0x1d, 0x4e, 0x1c, 0x4d, 0x04, 0x1c, 0xf0, 0x68,
+ 0x02, 0x27, 0x1c, 0x3d, 0x00, 0x28, 0x07, 0xd0,
+ 0xe8, 0x68, 0x00, 0x28, 0x04, 0xd0, 0xfd, 0xf7,
+ 0xc2, 0xfe, 0x00, 0x28, 0x00, 0xd0, 0xbc, 0x43,
+ 0x00, 0x2c, 0x14, 0xd0, 0x37, 0x70, 0xf0, 0x68,
+ 0x14, 0x4f, 0x00, 0x28, 0x10, 0xd0, 0xe0, 0x07,
+ 0x17, 0xd4, 0xfd, 0xf7, 0xb4, 0xfe, 0x00, 0x28,
+ 0x13, 0xd0, 0x3c, 0x00, 0xbc, 0x34, 0x00, 0x00,
+ 0x70, 0x69, 0x00, 0x28, 0x06, 0xd1, 0xe8, 0x68,
+ 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, 0x1a, 0xff,
+ 0x0d, 0xf0, 0x0a, 0xfa, 0xf8, 0xbd, 0x68, 0x69,
+ 0x00, 0x28, 0x05, 0xd1, 0x09, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x2c, 0x04, 0xd1,
+ 0x39, 0x1c, 0x20, 0x1c, 0x0e, 0xf0, 0x52, 0xfd,
+ 0xf0, 0xe7, 0x04, 0xf0, 0x1d, 0xfb, 0x02, 0xf0,
+ 0xeb, 0xfb, 0xeb, 0xe7, 0x3c, 0x00, 0xf8, 0x34,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x50, 0xc3,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x05, 0x48,
+ 0x41, 0x69, 0x00, 0x29, 0x04, 0xd0, 0x40, 0x6a,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x49,
+ 0x00, 0x20, 0x48, 0x60, 0x08, 0x60, 0x88, 0x60,
+ 0x08, 0xf0, 0x9b, 0xff, 0x07, 0x21, 0x3c, 0x00,
+ 0x34, 0x35, 0x00, 0x00, 0x12, 0x20, 0x22, 0x79,
+ 0x10, 0xf0, 0x3a, 0xf9, 0x10, 0xbd, 0x00, 0x00,
+ 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0x08, 0x60, 0x70, 0x47, 0xe8, 0x67, 0x01, 0x00,
+ 0xf8, 0xb5, 0x07, 0x1c, 0x0e, 0x1c, 0x08, 0xf0,
+ 0xa3, 0xfa, 0x13, 0x4d, 0x04, 0x1c, 0x68, 0x68,
+ 0x00, 0x28, 0x17, 0xd0, 0x00, 0x2f, 0x02, 0xd0,
+ 0xa8, 0x68, 0x03, 0x28, 0x13, 0xd3, 0x00, 0x20,
+ 0x3c, 0x00, 0x70, 0x35, 0x00, 0x00, 0xa8, 0x60,
+ 0x68, 0x60, 0x21, 0x1c, 0x0f, 0x20, 0x0e, 0xf0,
+ 0xf0, 0xfe, 0x28, 0x68, 0x00, 0x28, 0x03, 0xd0,
+ 0x00, 0x2c, 0x06, 0xd1, 0x01, 0x20, 0x02, 0xe0,
+ 0x01, 0x2c, 0x02, 0xd1, 0x00, 0x20, 0xff, 0xf7,
+ 0xfa, 0xfe, 0xf8, 0xbd, 0x72, 0x1c, 0x00, 0x21,
+ 0x04, 0x48, 0x00, 0xf0, 0x68, 0xf8, 0xa8, 0x68,
+ 0x01, 0x30, 0xa8, 0x60, 0xf5, 0xe7, 0x5c, 0x69,
+ 0x01, 0x00, 0x3c, 0x00, 0xac, 0x35, 0x00, 0x00,
+ 0x51, 0x35, 0x00, 0x00, 0x0a, 0x49, 0x80, 0xb5,
+ 0xca, 0x68, 0x00, 0x2a, 0x0b, 0xd0, 0x42, 0x68,
+ 0x00, 0x2a, 0x09, 0xd0, 0x00, 0x22, 0x4a, 0x62,
+ 0x02, 0x68, 0x0a, 0x62, 0x02, 0x68, 0x07, 0x21,
+ 0x17, 0x20, 0x10, 0xf0, 0xef, 0xf8, 0x80, 0xbd,
+ 0x01, 0x20, 0x48, 0x62, 0x80, 0xbd, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0x70, 0xb5, 0x14, 0x4d,
+ 0x84, 0x6c, 0xe9, 0x68, 0x3c, 0x00, 0xe8, 0x35,
+ 0x00, 0x00, 0x00, 0x29, 0x17, 0xd0, 0x40, 0x30,
+ 0xec, 0x61, 0x40, 0x78, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x68, 0x62, 0x28, 0x6a, 0x0e, 0x4e,
+ 0x00, 0x1b, 0xb0, 0x42, 0x0c, 0xd2, 0x08, 0xf0,
+ 0x3a, 0xfe, 0x29, 0x6a, 0x40, 0x1a, 0xb0, 0x42,
+ 0x03, 0xd2, 0x02, 0x22, 0x07, 0x21, 0x13, 0x20,
+ 0x09, 0xe0, 0x04, 0xf0, 0xb6, 0xfa, 0x70, 0xbd,
+ 0x07, 0x48, 0xa9, 0x68, 0x0b, 0xf0, 0x3c, 0x00,
+ 0x24, 0x36, 0x00, 0x00, 0xbd, 0xfe, 0x22, 0x1c,
+ 0x07, 0x21, 0x16, 0x20, 0x10, 0xf0, 0xc0, 0xf8,
+ 0x70, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0xa0, 0x86, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x0a, 0x49, 0x80, 0xb5, 0x00, 0x20, 0x88, 0x61,
+ 0x08, 0x69, 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48,
+ 0x1c, 0x30, 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0,
+ 0x01, 0xf0, 0xd2, 0xff, 0x02, 0x28, 0x03, 0xd1,
+ 0x3c, 0x00, 0x60, 0x36, 0x00, 0x00, 0x00, 0xf0,
+ 0x12, 0xf9, 0x00, 0xf0, 0xbc, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0xf0, 0xb5,
+ 0x06, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x91, 0xb0,
+ 0x01, 0xa8, 0x40, 0x21, 0xfc, 0xf7, 0x0d, 0xff,
+ 0x00, 0x21, 0x68, 0x46, 0xfd, 0xf7, 0xa7, 0xff,
+ 0x04, 0x90, 0x01, 0xa8, 0x06, 0x22, 0x08, 0x49,
+ 0xfc, 0xf7, 0x31, 0xff, 0x06, 0x22, 0x02, 0xa8,
+ 0x02, 0x30, 0x3c, 0x00, 0x9c, 0x36, 0x00, 0x00,
+ 0x06, 0x49, 0xfc, 0xf7, 0x2b, 0xff, 0x00, 0xab,
+ 0xdc, 0x76, 0x0c, 0x95, 0x31, 0x1c, 0x01, 0xa8,
+ 0x07, 0xf0, 0x4e, 0xf8, 0x11, 0xb0, 0xf0, 0xbd,
+ 0x12, 0x61, 0x01, 0x00, 0xf8, 0x67, 0x01, 0x00,
+ 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b,
+ 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80,
+ 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0x12, 0xff,
+ 0x16, 0xe0, 0x04, 0x22, 0x3c, 0x00, 0xd8, 0x36,
+ 0x00, 0x00, 0x01, 0x1c, 0x18, 0x1c, 0xfc, 0xf7,
+ 0x0c, 0xff, 0x09, 0x48, 0x10, 0x38, 0x00, 0x69,
+ 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, 0x0c, 0x30,
+ 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, 0x01, 0xf0,
+ 0x84, 0xff, 0x02, 0x28, 0x03, 0xd1, 0x00, 0xf0,
+ 0xc4, 0xf8, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20,
+ 0x80, 0xbd, 0x6c, 0x69, 0x01, 0x00, 0xf8, 0xb5,
+ 0x04, 0x1c, 0x0f, 0x1c, 0x00, 0x25, 0x3c, 0x00,
+ 0x14, 0x37, 0x00, 0x00, 0x00, 0x26, 0x01, 0xf0,
+ 0x73, 0xff, 0x02, 0x28, 0x2f, 0xd1, 0x19, 0x49,
+ 0x01, 0x2f, 0x08, 0x68, 0x07, 0xd1, 0x02, 0x1c,
+ 0x22, 0x40, 0x0a, 0xd1, 0x20, 0x43, 0x08, 0x60,
+ 0xa0, 0x42, 0x06, 0xd1, 0x04, 0xe0, 0x00, 0x28,
+ 0x03, 0xd0, 0xa0, 0x43, 0x08, 0x60, 0x00, 0xd1,
+ 0x01, 0x25, 0x48, 0x68, 0x00, 0x28, 0x1a, 0xd1,
+ 0x00, 0x2d, 0x17, 0xd0, 0x01, 0x20, 0x48, 0x60,
+ 0x3c, 0x00, 0x50, 0x37, 0x00, 0x00, 0x38, 0x1c,
+ 0x08, 0xf0, 0x89, 0xfe, 0x0b, 0x48, 0x1c, 0x30,
+ 0x81, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23,
+ 0x83, 0x61, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20,
+ 0xff, 0xf7, 0xf1, 0xfe, 0x06, 0xe0, 0x00, 0x22,
+ 0x00, 0x21, 0x04, 0x48, 0xff, 0xf7, 0x7b, 0xff,
+ 0x00, 0xe0, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35,
+ 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x37, 0x00, 0x00,
+ 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x12, 0x4b,
+ 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80,
+ 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0xaa, 0xfe,
+ 0x18, 0xe0, 0x04, 0x22, 0x01, 0x1c, 0x18, 0x1c,
+ 0xfc, 0xf7, 0xa4, 0xfe, 0x0a, 0x48, 0x10, 0x30,
+ 0xc1, 0x68, 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x78,
+ 0x00, 0x28, 0x0b, 0xd0, 0x01, 0xf0, 0x1e, 0xff,
+ 0x02, 0x28, 0x07, 0xd1, 0x3c, 0x00, 0xc8, 0x37,
+ 0x00, 0x00, 0x00, 0xf0, 0x64, 0xf8, 0x00, 0xf0,
+ 0x2e, 0xf8, 0x00, 0x28, 0x01, 0xd1, 0x09, 0xf0,
+ 0x7a, 0xfd, 0x01, 0x20, 0x80, 0xbd, 0x68, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x20, 0x69,
+ 0x00, 0x28, 0x09, 0xd0, 0xa1, 0x69, 0x00, 0x29,
+ 0x06, 0xd1, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43,
+ 0x03, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xe1, 0xfe,
+ 0x21, 0x69, 0x01, 0x20, 0x00, 0x29, 0x3c, 0x00,
+ 0x04, 0x38, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x20,
+ 0x10, 0xbd, 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00,
+ 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x28, 0x03, 0xd0,
+ 0xfd, 0xf7, 0x9a, 0xfc, 0xe0, 0x60, 0x10, 0xbd,
+ 0x01, 0x20, 0x00, 0x21, 0xe1, 0x60, 0x10, 0xbd,
+ 0x78, 0x69, 0x01, 0x00, 0x0a, 0x48, 0x0a, 0x49,
+ 0x10, 0xb5, 0xc0, 0x68, 0x1c, 0x39, 0xc9, 0x68,
+ 0x00, 0x28, 0x03, 0xd0, 0x00, 0x29, 0x01, 0xd0,
+ 0x3c, 0x00, 0x40, 0x38, 0x00, 0x00, 0x01, 0x24,
+ 0x00, 0xe0, 0x00, 0x24, 0x00, 0x2c, 0x03, 0xd0,
+ 0x02, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xb7, 0xfe,
+ 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x00, 0x20,
+ 0x21, 0x69, 0x00, 0x29, 0x0c, 0xd0, 0x06, 0x49,
+ 0x1c, 0x31, 0x09, 0x78, 0x00, 0x29, 0x07, 0xd0,
+ 0x00, 0xf0, 0x09, 0xf8, 0x01, 0x20, 0xa0, 0x61,
+ 0x20, 0x69, 0x3c, 0x00, 0x7c, 0x38, 0x00, 0x00,
+ 0x7d, 0x23, 0xdb, 0x00, 0x58, 0x43, 0x10, 0xbd,
+ 0x5c, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x21,
+ 0x07, 0x20, 0x0f, 0xf0, 0xd1, 0xfe, 0x80, 0xbd,
+ 0x80, 0xb5, 0x02, 0x21, 0x07, 0x20, 0x0f, 0xf0,
+ 0xcb, 0xfe, 0x80, 0xbd, 0x06, 0x48, 0x80, 0xb5,
+ 0x00, 0x78, 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7,
+ 0x29, 0xfd, 0x00, 0x22, 0x07, 0x21, 0x11, 0x20,
+ 0x0f, 0xf0, 0x7c, 0xff, 0x3c, 0x00, 0xb8, 0x38,
+ 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x10, 0x1c,
+ 0x06, 0x4a, 0x51, 0x61, 0x00, 0xf0, 0xa3, 0xf8,
+ 0x10, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x11, 0x20,
+ 0x00, 0x22, 0x07, 0x21, 0x0f, 0xf0, 0x69, 0xff,
+ 0x10, 0xbd, 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49,
+ 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x3c, 0x00,
+ 0xf4, 0x38, 0x00, 0x00, 0xe0, 0x69, 0x00, 0x28,
+ 0x0c, 0xd1, 0xe0, 0x62, 0x01, 0x20, 0xe0, 0x61,
+ 0x0b, 0xf0, 0x08, 0xfd, 0x0b, 0xf0, 0x74, 0xfe,
+ 0x01, 0x20, 0x00, 0xf0, 0xb5, 0xf8, 0x0f, 0xf0,
+ 0x4d, 0xfa, 0x60, 0x63, 0x10, 0xbd, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0xc8, 0x61, 0x88, 0x63, 0x00, 0xf0,
+ 0x89, 0xf8, 0x00, 0xf0, 0x01, 0xf9, 0x02, 0xf0,
+ 0x3c, 0x00, 0x30, 0x39, 0x00, 0x00, 0x91, 0xfb,
+ 0x80, 0xbd, 0x44, 0x7d, 0x01, 0x00, 0x10, 0xb5,
+ 0x01, 0x28, 0x38, 0xd1, 0x08, 0x06, 0x00, 0x0e,
+ 0x05, 0x28, 0x32, 0xd1, 0x1d, 0x4c, 0x20, 0x78,
+ 0x01, 0x28, 0x09, 0xd0, 0x02, 0x28, 0x1b, 0xd0,
+ 0x03, 0x28, 0x2a, 0xd1, 0x02, 0xf0, 0x7d, 0xfb,
+ 0x00, 0xf0, 0x6f, 0xf8, 0x01, 0x20, 0x10, 0xe0,
+ 0x17, 0x48, 0x21, 0x6b, 0x0b, 0xf0, 0x1b, 0xfd,
+ 0x0b, 0xf0, 0x3c, 0x00, 0x6c, 0x39, 0x00, 0x00,
+ 0x41, 0xfe, 0x15, 0x48, 0x00, 0x69, 0x03, 0x28,
+ 0x01, 0xd3, 0xc0, 0x07, 0x03, 0xd5, 0x01, 0x21,
+ 0x20, 0x6b, 0x07, 0xf0, 0x19, 0xff, 0x02, 0x20,
+ 0x00, 0xf0, 0x78, 0xf8, 0x10, 0xbd, 0x0f, 0x48,
+ 0x00, 0x68, 0x20, 0x64, 0x0a, 0x48, 0x5c, 0x30,
+ 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60,
+ 0x03, 0xf0, 0xcc, 0xfc, 0x03, 0x20, 0x00, 0xf0,
+ 0x69, 0xf8, 0x01, 0x20, 0x3c, 0x00, 0xa8, 0x39,
+ 0x00, 0x00, 0xe0, 0x62, 0x10, 0xbd, 0x09, 0x21,
+ 0x00, 0xe0, 0x08, 0x21, 0x09, 0x20, 0xfd, 0xf7,
+ 0x76, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0xf4, 0x68,
+ 0x01, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0f, 0x4c, 0x20, 0x78, 0x65, 0x1e, 0x01, 0x28,
+ 0x0f, 0xd1, 0x00, 0x20, 0xff, 0xf7, 0xa1, 0xfc,
+ 0x0c, 0x49, 0x09, 0x88, 0x49, 0x08, 0x3c, 0x00,
+ 0xe4, 0x39, 0x00, 0x00, 0x40, 0x1a, 0x0f, 0xf0,
+ 0x19, 0xf9, 0x00, 0x28, 0x04, 0xd0, 0x28, 0x78,
+ 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x05, 0xd0,
+ 0x20, 0x78, 0x00, 0x28, 0x04, 0xd1, 0x28, 0x78,
+ 0x03, 0x28, 0x01, 0xd1, 0x01, 0x20, 0xb0, 0xbd,
+ 0x00, 0x20, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x01, 0x49, 0xc8, 0x64,
+ 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0x3c, 0x00, 0x20, 0x3a, 0x00, 0x00, 0x04, 0x49,
+ 0x05, 0x4a, 0x89, 0x68, 0x12, 0x6d, 0x01, 0x20,
+ 0x91, 0x42, 0x00, 0xd3, 0x00, 0x20, 0x70, 0x47,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x6b,
+ 0x07, 0xf0, 0xf9, 0xfe, 0xa0, 0x6b, 0x00, 0x28,
+ 0x03, 0xd1, 0x03, 0x48, 0x21, 0x6b, 0x0b, 0xf0,
+ 0x92, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x3a, 0x00, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x04, 0x48, 0x00, 0x78,
+ 0x02, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x44, 0x7d, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c,
+ 0xff, 0xf7, 0xd0, 0xff, 0x06, 0x1c, 0x01, 0x2f,
+ 0x26, 0x4d, 0x1f, 0xd0, 0x02, 0x2f, 0x45, 0xd0,
+ 0x03, 0x2f, 0x12, 0xd1, 0x24, 0x48, 0x25, 0x4b,
+ 0x00, 0x69, 0x6a, 0x69, 0x3c, 0x00, 0x98, 0x3a,
+ 0x00, 0x00, 0x41, 0x08, 0x5a, 0x43, 0x23, 0x4b,
+ 0xd4, 0x18, 0x8c, 0x42, 0x00, 0xd9, 0x0c, 0x1c,
+ 0x00, 0x2e, 0x05, 0xd0, 0x1e, 0x49, 0x5b, 0x39,
+ 0x09, 0x78, 0x00, 0x29, 0x00, 0xd1, 0x04, 0x1c,
+ 0x05, 0x22, 0x21, 0x1c, 0x09, 0x20, 0x0f, 0xf0,
+ 0x80, 0xfd, 0x18, 0x4a, 0x5c, 0x3a, 0x17, 0x70,
+ 0xf8, 0xbd, 0xff, 0xf7, 0xd6, 0xfb, 0x00, 0x28,
+ 0x02, 0xd0, 0x28, 0x69, 0x00, 0x28, 0x3c, 0x00,
+ 0xd4, 0x3a, 0x00, 0x00, 0x0e, 0xd0, 0x04, 0xf0,
+ 0xcf, 0xfb, 0x13, 0x4b, 0x69, 0x69, 0x11, 0x4a,
+ 0x59, 0x43, 0x5c, 0x3a, 0xd2, 0x6b, 0x89, 0x18,
+ 0x88, 0x42, 0x01, 0xd9, 0x44, 0x1a, 0x04, 0xe0,
+ 0x00, 0x24, 0x02, 0xe0, 0x04, 0xf0, 0xae, 0xfd,
+ 0x04, 0x1c, 0x00, 0x2e, 0xdb, 0xd0, 0x09, 0x48,
+ 0x5b, 0x38, 0x00, 0x78, 0x01, 0x28, 0xd6, 0xd1,
+ 0x08, 0x4b, 0x9c, 0x42, 0x02, 0xd9, 0x58, 0x42,
+ 0x3c, 0x00, 0x10, 0x3b, 0x00, 0x00, 0x24, 0x18,
+ 0xd0, 0xe7, 0x00, 0x24, 0xce, 0xe7, 0x04, 0xf0,
+ 0xae, 0xfb, 0xca, 0xe7, 0x00, 0x00, 0xf4, 0x68,
+ 0x01, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0x98, 0x3a,
+ 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0xb5,
+ 0x05, 0x21, 0x09, 0x20, 0x0f, 0xf0, 0x7d, 0xfd,
+ 0x02, 0x49, 0x00, 0x20, 0x08, 0x70, 0x80, 0xbd,
+ 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x70, 0xb5,
+ 0x06, 0x1c, 0x3c, 0x00, 0x4c, 0x3b, 0x00, 0x00,
+ 0x0d, 0xf0, 0xbc, 0xfa, 0xff, 0xf7, 0xce, 0xfe,
+ 0x09, 0x4c, 0x0a, 0x48, 0x21, 0x6b, 0x0b, 0xf0,
+ 0x21, 0xfc, 0x01, 0x25, 0x01, 0x21, 0x30, 0x06,
+ 0x00, 0x0e, 0xa5, 0x63, 0x07, 0xf0, 0x3a, 0xfe,
+ 0x05, 0x48, 0x29, 0x02, 0x09, 0x58, 0x00, 0x29,
+ 0x00, 0xd1, 0x05, 0x61, 0x70, 0xbd, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3b,
+ 0x00, 0x00, 0x02, 0x4a, 0x11, 0x6c, 0x08, 0x43,
+ 0x10, 0x64, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xbf, 0xfe,
+ 0x0b, 0xf0, 0xa1, 0xfb, 0x80, 0xbd, 0x02, 0x4a,
+ 0x01, 0x1c, 0x10, 0x69, 0x11, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0xf3, 0xb5,
+ 0x06, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0xf8, 0x4c,
+ 0x08, 0x90, 0xe2, 0x69, 0x08, 0x25, 0x3c, 0x00,
+ 0xc4, 0x3b, 0x00, 0x00, 0x00, 0x2a, 0x03, 0xd0,
+ 0x06, 0xa9, 0x07, 0xa8, 0xfc, 0xf7, 0x06, 0xfc,
+ 0x30, 0x1c, 0xf3, 0x4e, 0x00, 0x27, 0x20, 0x36,
+ 0x82, 0x28, 0x6f, 0xd0, 0x15, 0xdc, 0x01, 0x28,
+ 0x18, 0xd0, 0x80, 0x28, 0x6b, 0xd1, 0xee, 0x4d,
+ 0x80, 0x3d, 0xa8, 0x68, 0x01, 0x28, 0x67, 0xd1,
+ 0x68, 0x68, 0x0f, 0xf0, 0x1b, 0xf8, 0x00, 0x28,
+ 0x63, 0xd1, 0x01, 0x21, 0x01, 0x20, 0x0d, 0xf0,
+ 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x9d, 0xf8,
+ 0x08, 0xf0, 0xdb, 0xfd, 0x0b, 0xb0, 0xf0, 0xbd,
+ 0x83, 0x28, 0x6d, 0xd0, 0x84, 0x28, 0x55, 0xd1,
+ 0xe7, 0xe0, 0x0a, 0x98, 0x0a, 0x28, 0x04, 0xd2,
+ 0x03, 0xa3, 0x1b, 0x18, 0x1b, 0x5a, 0x5b, 0x00,
+ 0x9f, 0x44, 0xf6, 0xe0, 0x00, 0x00, 0xee, 0x00,
+ 0x0b, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xf7, 0x00,
+ 0xf7, 0x00, 0x2f, 0x00, 0x88, 0x00, 0x8b, 0x00,
+ 0xad, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x00, 0x00,
+ 0x00, 0xf0, 0x56, 0xfe, 0x00, 0x28, 0x17, 0xd0,
+ 0xd6, 0x4a, 0x80, 0x3a, 0xd1, 0x6a, 0x06, 0x98,
+ 0x81, 0x42, 0x16, 0xd0, 0x06, 0x21, 0x00, 0x28,
+ 0x00, 0xd1, 0x07, 0x21, 0x0d, 0x06, 0x2d, 0x0e,
+ 0x00, 0x28, 0x0e, 0xd0, 0xcf, 0x4a, 0x01, 0x20,
+ 0x80, 0x3a, 0x50, 0x65, 0x0f, 0xf0, 0xa0, 0xf8,
+ 0xcc, 0x4a, 0x80, 0x3a, 0x50, 0x66, 0x04, 0xe0,
+ 0x00, 0x21, 0x16, 0x20, 0x3c, 0x00, 0x78, 0x3c,
+ 0x00, 0x00, 0x0f, 0xf0, 0xdc, 0xfc, 0x01, 0x25,
+ 0x02, 0x20, 0x05, 0x90, 0x2e, 0xe2, 0xc6, 0x48,
+ 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x2e, 0xd0,
+ 0xc6, 0x49, 0x20, 0x69, 0xc4, 0x4d, 0x40, 0x18,
+ 0x0e, 0xf0, 0xc1, 0xff, 0x00, 0x28, 0x12, 0xd0,
+ 0x0f, 0xf0, 0x85, 0xf8, 0xc1, 0x49, 0x49, 0x42,
+ 0x40, 0x18, 0xbd, 0x49, 0x20, 0x61, 0x80, 0x39,
+ 0x48, 0x6e, 0x40, 0x19, 0x0e, 0xf0, 0x3c, 0x00,
+ 0xb4, 0x3c, 0x00, 0x00, 0xbb, 0xff, 0x00, 0x28,
+ 0x11, 0xd0, 0x0a, 0xe0, 0xf7, 0xe0, 0x17, 0xe2,
+ 0xb2, 0xe0, 0xb0, 0xe0, 0xb6, 0x49, 0x20, 0x69,
+ 0x80, 0x39, 0x49, 0x6e, 0x40, 0x1a, 0xa8, 0x42,
+ 0x05, 0xdb, 0xb3, 0x49, 0xb5, 0x4d, 0x80, 0x39,
+ 0x4f, 0x65, 0x03, 0xf0, 0x27, 0xfb, 0x06, 0x22,
+ 0x29, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x72, 0xfc,
+ 0x47, 0xe0, 0x95, 0xe0, 0x00, 0xf0, 0xfe, 0xfd,
+ 0x3c, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x28,
+ 0x42, 0xd1, 0xaa, 0x4d, 0xc4, 0x3d, 0xef, 0x60,
+ 0x08, 0xf0, 0x19, 0xfd, 0x03, 0xf0, 0x15, 0xfb,
+ 0xa8, 0x6a, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7,
+ 0x4c, 0xff, 0xaf, 0x62, 0xa4, 0x48, 0x80, 0x38,
+ 0x00, 0x68, 0x00, 0x21, 0xff, 0xf7, 0xf9, 0xfc,
+ 0x08, 0xf0, 0x3f, 0xf9, 0x09, 0x21, 0x16, 0x20,
+ 0x0f, 0xf0, 0x87, 0xfc, 0x00, 0x22, 0x16, 0x21,
+ 0x83, 0x20, 0x3c, 0x00, 0x2c, 0x3d, 0x00, 0x00,
+ 0x0f, 0xf0, 0x40, 0xfd, 0xff, 0xf7, 0x86, 0xfc,
+ 0x21, 0xe0, 0x00, 0xf0, 0x1b, 0xfe, 0x1e, 0xe0,
+ 0x06, 0xf0, 0x54, 0xfa, 0x97, 0x4d, 0x80, 0x3d,
+ 0xa9, 0x6f, 0x40, 0x1a, 0x04, 0x90, 0x06, 0x98,
+ 0x00, 0x28, 0x01, 0xd0, 0xaf, 0x65, 0x02, 0xe0,
+ 0xa8, 0x6d, 0x00, 0x28, 0x08, 0xd1, 0x91, 0x48,
+ 0xc4, 0x38, 0x00, 0x78, 0x80, 0x07, 0x03, 0xd5,
+ 0x92, 0x48, 0x47, 0x60, 0x3c, 0x00, 0x68, 0x3d,
+ 0x00, 0x00, 0x00, 0xf0, 0x02, 0xfe, 0x04, 0x98,
+ 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, 0x02, 0xd2,
+ 0x01, 0x20, 0xe8, 0x63, 0x53, 0xe0, 0xef, 0x63,
+ 0x51, 0xe0, 0x87, 0x4a, 0xb5, 0x7a, 0x80, 0x3a,
+ 0x00, 0x2d, 0x4c, 0xd0, 0x0d, 0xf0, 0x71, 0xff,
+ 0x00, 0xf0, 0xad, 0xfd, 0x07, 0x1c, 0x82, 0x48,
+ 0x80, 0x38, 0x40, 0x6f, 0xff, 0x30, 0x5f, 0x30,
+ 0x0e, 0xf0, 0x3d, 0xff, 0x02, 0x1c, 0x3c, 0x00,
+ 0xa4, 0x3d, 0x00, 0x00, 0x7e, 0x48, 0x80, 0x38,
+ 0x40, 0x6d, 0x00, 0x28, 0x1a, 0xd1, 0x00, 0xf0,
+ 0xf1, 0xfd, 0x00, 0x28, 0x16, 0xd1, 0x04, 0x2d,
+ 0x02, 0xd1, 0x00, 0x2f, 0x12, 0xd1, 0x1b, 0xe0,
+ 0x00, 0x2f, 0x06, 0xd0, 0x02, 0x2d, 0x14, 0xd0,
+ 0x79, 0x48, 0x40, 0x68, 0x00, 0x28, 0x09, 0xd0,
+ 0x12, 0xe0, 0x00, 0x2a, 0x10, 0xd1, 0x4b, 0x21,
+ 0xc9, 0x00, 0x01, 0x23, 0x09, 0x22, 0x16, 0x20,
+ 0x3c, 0x00, 0xe0, 0x3d, 0x00, 0x00, 0x0f, 0xf0,
+ 0xd6, 0xfc, 0x6e, 0x4a, 0x73, 0x48, 0x80, 0x3a,
+ 0x11, 0x68, 0x0b, 0xf0, 0xd8, 0xfa, 0x18, 0xe0,
+ 0x01, 0x21, 0x00, 0x20, 0x01, 0xe0, 0x01, 0x21,
+ 0x01, 0x20, 0x00, 0xf0, 0x2a, 0xfe, 0x10, 0xe0,
+ 0x67, 0x4a, 0x6c, 0x49, 0x80, 0x3a, 0x90, 0x6e,
+ 0x40, 0x18, 0x90, 0x66, 0x01, 0x25, 0x08, 0x95,
+ 0x8b, 0xe1, 0x04, 0x21, 0x6c, 0xe1, 0x61, 0x4a,
+ 0x66, 0x48, 0x3c, 0x00, 0x1c, 0x3e, 0x00, 0x00,
+ 0x80, 0x3a, 0x11, 0x68, 0x0b, 0xf0, 0xaa, 0xfa,
+ 0x88, 0xe1, 0xaf, 0x60, 0xa8, 0x6f, 0xe8, 0x67,
+ 0x63, 0x48, 0x01, 0x6d, 0xa9, 0x67, 0x07, 0x9a,
+ 0x14, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x08, 0x18, 0x12, 0x30, 0xa8, 0x66, 0x70, 0x78,
+ 0xb0, 0x70, 0x30, 0x78, 0x70, 0x70, 0x02, 0x20,
+ 0x30, 0x70, 0xa0, 0x69, 0xfc, 0xf7, 0xc2, 0xfa,
+ 0xef, 0x64, 0xa8, 0x6f, 0x3c, 0x00, 0x58, 0x3e,
+ 0x00, 0x00, 0xe9, 0x6f, 0x59, 0x4b, 0x40, 0x1a,
+ 0x98, 0x42, 0x12, 0xd2, 0x68, 0x6d, 0x06, 0x99,
+ 0x88, 0x42, 0x0e, 0xd0, 0x30, 0x78, 0x02, 0x28,
+ 0x0b, 0xd8, 0x0e, 0xf0, 0x9c, 0xff, 0xa9, 0x6f,
+ 0x08, 0x22, 0x40, 0x1a, 0x52, 0x49, 0x09, 0x1a,
+ 0x3b, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x85, 0xfc,
+ 0x00, 0xe0, 0xaf, 0x65, 0x01, 0x20, 0x05, 0x90,
+ 0x08, 0x90, 0x43, 0x48, 0x02, 0x25, 0x3c, 0x00,
+ 0x94, 0x3e, 0x00, 0x00, 0xc4, 0x38, 0xc1, 0x68,
+ 0x00, 0x29, 0x72, 0xd1, 0x01, 0x21, 0xc1, 0x60,
+ 0x49, 0x48, 0x00, 0x6b, 0x00, 0x28, 0x6c, 0xd0,
+ 0x08, 0xf0, 0x66, 0xfc, 0x69, 0xe0, 0x3c, 0x48,
+ 0x00, 0x22, 0x01, 0x92, 0x80, 0x38, 0x80, 0x68,
+ 0x01, 0x28, 0x04, 0xd1, 0x38, 0x48, 0x80, 0x38,
+ 0x87, 0x60, 0x01, 0x20, 0x48, 0xe1, 0x3a, 0x48,
+ 0x01, 0x23, 0x43, 0x60, 0x34, 0x48, 0xc4, 0x38,
+ 0x3c, 0x00, 0xd0, 0x3e, 0x00, 0x00, 0x00, 0x78,
+ 0x00, 0x28, 0x0a, 0xd1, 0x00, 0xf0, 0x25, 0xfe,
+ 0x00, 0x28, 0x06, 0xd0, 0xff, 0x21, 0x91, 0x31,
+ 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, 0x0f, 0xf0,
+ 0x52, 0xfc, 0x2c, 0x49, 0x80, 0x39, 0x48, 0x6f,
+ 0x89, 0x6f, 0x42, 0x1a, 0x03, 0x92, 0x06, 0xf0,
+ 0x76, 0xf9, 0x28, 0x49, 0x80, 0x39, 0x89, 0x6f,
+ 0x03, 0x9a, 0x40, 0x1a, 0x02, 0x90, 0x37, 0x20,
+ 0x00, 0x01, 0x3c, 0x00, 0x0c, 0x3f, 0x00, 0x00,
+ 0x10, 0x1a, 0x50, 0x28, 0x0d, 0xd2, 0x23, 0x48,
+ 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x04, 0xd1,
+ 0x02, 0x98, 0xff, 0x38, 0x55, 0x38, 0x14, 0x28,
+ 0x01, 0xd2, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22,
+ 0x01, 0x92, 0x03, 0x9a, 0x01, 0x20, 0xff, 0x3a,
+ 0x0b, 0x3a, 0x50, 0x2a, 0x00, 0xd3, 0x00, 0x20,
+ 0x04, 0x90, 0x00, 0x28, 0x0a, 0xd0, 0x17, 0x48,
+ 0x80, 0x38, 0xc0, 0x6f, 0x3c, 0x00, 0x48, 0x3f,
+ 0x00, 0x00, 0x08, 0x1a, 0x9b, 0x21, 0xc9, 0x00,
+ 0x40, 0x1a, 0x14, 0x28, 0x01, 0xd2, 0x01, 0x22,
+ 0x00, 0xe0, 0x00, 0x22, 0x00, 0x92, 0x00, 0x2a,
+ 0x11, 0xd0, 0x0f, 0x4d, 0x01, 0x20, 0x80, 0x3d,
+ 0x68, 0x65, 0x0e, 0xf0, 0x20, 0xff, 0x68, 0x66,
+ 0x01, 0x25, 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0,
+ 0x5e, 0xfb, 0x00, 0x21, 0x16, 0x20, 0x0f, 0xf0,
+ 0x5a, 0xfb, 0x00, 0xe0, 0xba, 0xe0, 0x3c, 0x00,
+ 0x84, 0x3f, 0x00, 0x00, 0xf0, 0x79, 0x02, 0x28,
+ 0x3c, 0xd8, 0x05, 0x4a, 0x80, 0x3a, 0x51, 0x6c,
+ 0x00, 0x29, 0x37, 0xd1, 0x13, 0x6c, 0x11, 0x1c,
+ 0x00, 0x2b, 0x33, 0xd1, 0x16, 0xe0, 0x00, 0x00,
+ 0x24, 0x6d, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00,
+ 0xc0, 0x5c, 0x15, 0x00, 0x70, 0x99, 0x14, 0x00,
+ 0xb0, 0x57, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xe2, 0x04, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00,
+ 0x3c, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x53, 0x07,
+ 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0xc8, 0x57,
+ 0x01, 0x00, 0x4a, 0x6d, 0x00, 0x2a, 0x02, 0xd0,
+ 0xb2, 0x7a, 0x02, 0x2a, 0x15, 0xd1, 0x00, 0x9a,
+ 0x00, 0x2a, 0x03, 0xd0, 0xca, 0x6d, 0x01, 0x32,
+ 0xca, 0x65, 0x00, 0xe0, 0xcf, 0x65, 0x01, 0x9a,
+ 0x00, 0x2a, 0x0b, 0xd0, 0x8a, 0x6f, 0xcb, 0x6f,
+ 0xd2, 0x1a, 0x5a, 0x4b, 0x9a, 0x42, 0x02, 0xd2,
+ 0x8a, 0x6d, 0x3c, 0x00, 0xfc, 0x3f, 0x00, 0x00,
+ 0x01, 0x32, 0x00, 0xe0, 0x01, 0x22, 0x8a, 0x65,
+ 0x00, 0xe0, 0x8f, 0x65, 0x04, 0x99, 0x00, 0x29,
+ 0x01, 0xd1, 0x02, 0x28, 0x0b, 0xd9, 0x54, 0x4a,
+ 0x02, 0x28, 0x1e, 0xd9, 0xd0, 0x6f, 0x61, 0x68,
+ 0x88, 0x42, 0x1a, 0xd1, 0x91, 0x6f, 0x08, 0x1a,
+ 0x50, 0x49, 0x88, 0x42, 0x15, 0xdd, 0x4e, 0x4b,
+ 0x98, 0x6f, 0xe1, 0x68, 0x40, 0x1a, 0x7d, 0x21,
+ 0xc9, 0x00, 0x88, 0x42, 0x3c, 0x00, 0x38, 0x40,
+ 0x00, 0x00, 0x0b, 0xdd, 0x61, 0x69, 0x40, 0x1a,
+ 0x00, 0x28, 0x04, 0xdd, 0x02, 0x11, 0x40, 0x11,
+ 0x10, 0x18, 0x40, 0x18, 0x01, 0xe0, 0x80, 0x10,
+ 0x08, 0x18, 0x60, 0x61, 0x58, 0x6f, 0xe0, 0x60,
+ 0x03, 0x98, 0xff, 0x38, 0x23, 0x38, 0x14, 0x28,
+ 0x09, 0xd2, 0x02, 0x98, 0xff, 0x38, 0x23, 0x38,
+ 0x14, 0x28, 0x04, 0xd2, 0x3e, 0x4a, 0x90, 0x6f,
+ 0x50, 0x64, 0x90, 0x6a, 0x90, 0x64, 0x3c, 0x00,
+ 0x74, 0x40, 0x00, 0x00, 0x0e, 0xf0, 0x9a, 0xfe,
+ 0x3a, 0x49, 0x49, 0x6c, 0x40, 0x1a, 0x3b, 0x49,
+ 0x88, 0x42, 0x01, 0xd9, 0x37, 0x49, 0x4f, 0x64,
+ 0x39, 0x49, 0x03, 0x98, 0x40, 0x18, 0x14, 0x28,
+ 0x07, 0xd2, 0x34, 0x49, 0xc8, 0x6b, 0x00, 0x28,
+ 0x03, 0xd0, 0x88, 0x6f, 0x08, 0x64, 0x88, 0x6a,
+ 0x88, 0x64, 0x0e, 0xf0, 0x83, 0xfe, 0x2f, 0x49,
+ 0x09, 0x6c, 0x40, 0x1a, 0x31, 0x49, 0x88, 0x42,
+ 0x3c, 0x00, 0xb0, 0x40, 0x00, 0x00, 0x01, 0xd9,
+ 0x2c, 0x48, 0x07, 0x64, 0x04, 0x20, 0x05, 0x90,
+ 0x08, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0xb9, 0xfa,
+ 0x28, 0x48, 0x40, 0x6d, 0x00, 0x28, 0x02, 0xd0,
+ 0x04, 0x99, 0x00, 0x29, 0x08, 0xd0, 0x29, 0x49,
+ 0x00, 0x28, 0x00, 0xd1, 0x29, 0x49, 0x3b, 0x1c,
+ 0x06, 0x22, 0x16, 0x20, 0x0f, 0xf0, 0x57, 0xfb,
+ 0x02, 0x2d, 0x09, 0xd0, 0x06, 0x2d, 0x0a, 0xd0,
+ 0x07, 0x2d, 0x3c, 0x00, 0xec, 0x40, 0x00, 0x00,
+ 0x13, 0xd1, 0x07, 0xe0, 0x01, 0x21, 0x16, 0x20,
+ 0xfd, 0xf7, 0xd6, 0xf8, 0x1e, 0xe0, 0x1a, 0x4a,
+ 0x57, 0x63, 0x97, 0x63, 0x18, 0x4a, 0x06, 0x98,
+ 0xd0, 0x62, 0x07, 0x99, 0x11, 0x63, 0x53, 0x6b,
+ 0x18, 0x43, 0x50, 0x63, 0x90, 0x6b, 0x08, 0x43,
+ 0x90, 0x63, 0x05, 0x98, 0x00, 0x28, 0x05, 0xd0,
+ 0x05, 0x98, 0x0c, 0xf0, 0x5f, 0xfa, 0x05, 0x98,
+ 0x0c, 0xf0, 0xd2, 0xf9, 0x3c, 0x00, 0x28, 0x41,
+ 0x00, 0x00, 0x08, 0x2d, 0x05, 0xd0, 0x0d, 0x48,
+ 0x44, 0x38, 0x85, 0x70, 0x28, 0x1c, 0x03, 0xf0,
+ 0xdc, 0xfd, 0x11, 0x49, 0xe0, 0x69, 0x88, 0x42,
+ 0x00, 0xd1, 0x61, 0xe5, 0x08, 0x98, 0x00, 0x28,
+ 0xfb, 0xd0, 0xb0, 0x7a, 0x02, 0x28, 0xf8, 0xd1,
+ 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0x6f, 0xfa,
+ 0x02, 0x20, 0x0d, 0xf0, 0xe8, 0xfe, 0x53, 0xe5,
+ 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x3c, 0x00,
+ 0x64, 0x41, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x20, 0xa1, 0x07, 0x00, 0x20, 0x4e, 0x00, 0x00,
+ 0x3f, 0xfb, 0xff, 0xff, 0xa0, 0x86, 0x01, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0xc0, 0x5c, 0x15, 0x00,
+ 0xf1, 0x1d, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x21, 0x48,
+ 0x00, 0x68, 0x21, 0x4d, 0x69, 0x69, 0x08, 0x40,
+ 0x01, 0xd1, 0x01, 0x27, 0x00, 0xe0, 0x00, 0x27,
+ 0x3c, 0x00, 0xa0, 0x41, 0x00, 0x00, 0x1d, 0x4d,
+ 0x01, 0x26, 0x69, 0x6a, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x26, 0x1b, 0x4d, 0x1a, 0x48, 0x2c, 0x1c,
+ 0xa0, 0x30, 0x02, 0x7a, 0x28, 0x1c, 0x40, 0x30,
+ 0x80, 0x34, 0x10, 0x23, 0xb7, 0x42, 0x10, 0xd1,
+ 0x01, 0x25, 0xc5, 0x80, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x23, 0x1a, 0x43, 0x11, 0x1c, 0x01, 0x73,
+ 0x01, 0x20, 0x0e, 0xf0, 0x88, 0xfe, 0x08, 0x20,
+ 0x20, 0x70, 0x3c, 0x00, 0xdc, 0x41, 0x00, 0x00,
+ 0x00, 0x22, 0x16, 0x21, 0x80, 0x20, 0x13, 0xe0,
+ 0x11, 0x27, 0xc7, 0x80, 0x2e, 0x1c, 0x0b, 0x4d,
+ 0x00, 0x29, 0x00, 0xd1, 0x00, 0x23, 0x1a, 0x43,
+ 0x11, 0x1c, 0x01, 0x73, 0x01, 0x20, 0x0e, 0xf0,
+ 0x75, 0xfe, 0x08, 0x20, 0x20, 0x70, 0x30, 0x6d,
+ 0x00, 0x22, 0x16, 0x21, 0x68, 0x67, 0x82, 0x20,
+ 0x0f, 0xf0, 0xd0, 0xfa, 0xf8, 0xbd, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x18, 0x42,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x00, 0x90,
+ 0x07, 0x00, 0xb0, 0xb5, 0x0f, 0x4d, 0x04, 0x1c,
+ 0xaa, 0x7a, 0x01, 0x21, 0x08, 0x1c, 0x00, 0x2a,
+ 0x00, 0xd0, 0x00, 0x20, 0x00, 0x2c, 0x00, 0xd0,
+ 0x00, 0x21, 0x88, 0x42, 0x0a, 0xd0, 0x00, 0x2c,
+ 0x04, 0xd1, 0x00, 0xf0, 0x42, 0xfb, 0x00, 0xf0,
+ 0xd6, 0xfa, 0x03, 0xe0, 0x00, 0xf0, 0xd9, 0xfa,
+ 0x00, 0xf0, 0x09, 0xf8, 0xa8, 0x7a, 0x3c, 0x00,
+ 0x54, 0x42, 0x00, 0x00, 0x02, 0x49, 0xe4, 0x39,
+ 0x48, 0x71, 0xac, 0x72, 0xb0, 0xbd, 0x00, 0x00,
+ 0x44, 0x6d, 0x01, 0x00, 0x80, 0xb5, 0x3e, 0xf0,
+ 0x55, 0xf8, 0x02, 0x49, 0x01, 0x20, 0x08, 0x70,
+ 0x80, 0xbd, 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00,
+ 0xf3, 0xb5, 0x01, 0x20, 0x8d, 0xb0, 0x0f, 0x1c,
+ 0x01, 0x24, 0x08, 0x90, 0x0e, 0xf0, 0x92, 0xfd,
+ 0x06, 0x1c, 0x00, 0xf0, 0xb5, 0xfa, 0x09, 0x90,
+ 0x3c, 0x00, 0x90, 0x42, 0x00, 0x00, 0x00, 0xf0,
+ 0x80, 0xfb, 0x07, 0x90, 0xfe, 0xf7, 0x3f, 0xfa,
+ 0x05, 0x1c, 0x00, 0x21, 0x0c, 0x91, 0x08, 0xf0,
+ 0xf0, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x0a, 0x90, 0xfe, 0xf7,
+ 0x12, 0xfd, 0x05, 0xf0, 0xe0, 0xfe, 0x0b, 0x90,
+ 0x00, 0x2d, 0x23, 0xd0, 0x28, 0x88, 0x41, 0x07,
+ 0x20, 0xd4, 0x29, 0x1d, 0x04, 0x91, 0x0a, 0x35,
+ 0x00, 0x06, 0x3c, 0x00, 0xcc, 0x42, 0x00, 0x00,
+ 0x80, 0x0e, 0x01, 0x21, 0x20, 0x28, 0x03, 0x95,
+ 0x00, 0xd0, 0x00, 0x21, 0x0d, 0x1c, 0x04, 0x98,
+ 0x06, 0xf0, 0x38, 0xfd, 0x0c, 0x90, 0x04, 0x98,
+ 0x06, 0xf0, 0x10, 0xfd, 0x00, 0x28, 0x08, 0xd0,
+ 0x03, 0x98, 0x01, 0xf0, 0x87, 0xfa, 0x00, 0x28,
+ 0x03, 0xd0, 0x00, 0x2d, 0x01, 0xd1, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x0c, 0x99, 0x01, 0x43,
+ 0x0c, 0x91, 0xfc, 0xf7, 0x3c, 0x00, 0x08, 0x43,
+ 0x00, 0x00, 0x23, 0xff, 0x00, 0x28, 0x2f, 0xd0,
+ 0x07, 0xf0, 0x99, 0xff, 0x05, 0x1c, 0x07, 0xf0,
+ 0xb2, 0xff, 0x04, 0x90, 0xff, 0xf7, 0xf3, 0xf8,
+ 0x0c, 0x99, 0x01, 0x43, 0x00, 0x2d, 0x06, 0xd0,
+ 0x04, 0x98, 0xf0, 0x4a, 0x30, 0x1a, 0x90, 0x42,
+ 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0x08, 0x43, 0x0c, 0x90, 0x0b, 0x98, 0x0a, 0x9b,
+ 0x18, 0x43, 0x01, 0x1c, 0x0b, 0x91, 0x3c, 0x00,
+ 0x44, 0x43, 0x00, 0x00, 0x05, 0xf0, 0xce, 0xfe,
+ 0x00, 0x28, 0x1a, 0xd1, 0x00, 0x2d, 0x06, 0xd0,
+ 0x04, 0x98, 0xe7, 0x49, 0x30, 0x1a, 0x88, 0x42,
+ 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0x0c, 0x99, 0x08, 0x43, 0x05, 0x1c, 0x00, 0xf0,
+ 0x1f, 0xfb, 0x28, 0x43, 0x03, 0xe0, 0x00, 0xf0,
+ 0x1b, 0xfb, 0x0c, 0x99, 0x08, 0x43, 0x0c, 0x90,
+ 0x00, 0xf0, 0xd4, 0xfb, 0x0b, 0x99, 0x01, 0x43,
+ 0x3c, 0x00, 0x80, 0x43, 0x00, 0x00, 0x0b, 0x91,
+ 0xdc, 0x49, 0xc8, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0x01, 0x38, 0xc8, 0x60, 0x08, 0xf0, 0xe7, 0xfb,
+ 0x06, 0x90, 0x08, 0xf0, 0x90, 0xfd, 0x31, 0x1a,
+ 0x05, 0x91, 0x06, 0x99, 0xd6, 0x48, 0x81, 0x42,
+ 0x08, 0xd8, 0x00, 0x2f, 0x08, 0xd1, 0x05, 0x99,
+ 0x40, 0x08, 0x81, 0x42, 0x04, 0xd9, 0x06, 0x99,
+ 0x81, 0x42, 0x01, 0xd9, 0x00, 0x24, 0x8b, 0xe0,
+ 0xd0, 0x48, 0x3c, 0x00, 0xbc, 0x43, 0x00, 0x00,
+ 0x05, 0x99, 0xd0, 0x4d, 0x81, 0x42, 0x26, 0xd2,
+ 0xe8, 0x79, 0x10, 0x28, 0x06, 0xd2, 0x00, 0x2f,
+ 0x21, 0xd1, 0xcc, 0x48, 0xa0, 0x38, 0x80, 0x6a,
+ 0x00, 0x28, 0x1c, 0xd1, 0x09, 0xf0, 0x62, 0xff,
+ 0x04, 0x90, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x20,
+ 0xc3, 0x49, 0x13, 0xe0, 0x09, 0xf0, 0x10, 0xfe,
+ 0x00, 0x28, 0x03, 0xd0, 0xc4, 0x48, 0xc0, 0x69,
+ 0x00, 0x28, 0xf4, 0xd0, 0x3c, 0x00, 0xf8, 0x43,
+ 0x00, 0x00, 0x04, 0x98, 0x05, 0x28, 0x03, 0xd0,
+ 0xc1, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x65, 0xd1,
+ 0xbb, 0x49, 0x48, 0x6a, 0x00, 0x28, 0x23, 0xd0,
+ 0x01, 0x38, 0x48, 0x62, 0x00, 0xf0, 0x87, 0xff,
+ 0x00, 0x28, 0x11, 0xd0, 0xbb, 0x48, 0x05, 0x99,
+ 0x81, 0x42, 0x0d, 0xd2, 0x01, 0xf0, 0x9b, 0xf8,
+ 0x04, 0x30, 0x0d, 0xf0, 0xee, 0xfc, 0x40, 0x30,
+ 0xc1, 0x7a, 0x01, 0x29, 0x4e, 0xd0, 0x3c, 0x00,
+ 0x34, 0x44, 0x00, 0x00, 0x80, 0x7a, 0x00, 0x28,
+ 0x01, 0xd0, 0x05, 0x28, 0x49, 0xd3, 0x01, 0xf0,
+ 0xdf, 0xf8, 0x02, 0x28, 0x10, 0xd0, 0x00, 0x2f,
+ 0x02, 0xd1, 0x06, 0x98, 0x00, 0x28, 0x40, 0xd1,
+ 0x00, 0x20, 0x08, 0x90, 0x82, 0xe1, 0xaa, 0x48,
+ 0xa0, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x38, 0xd0,
+ 0xa8, 0x48, 0x80, 0x69, 0x48, 0x62, 0x34, 0xe0,
+ 0x0a, 0xa9, 0x03, 0xc9, 0x08, 0x43, 0x45, 0xd0,
+ 0x3c, 0x00, 0x70, 0x44, 0x00, 0x00, 0xa3, 0x48,
+ 0x29, 0x78, 0xa0, 0x38, 0x02, 0x29, 0x40, 0xd8,
+ 0x40, 0x6d, 0x00, 0x28, 0x0a, 0xd0, 0x9f, 0x48,
+ 0xa2, 0x49, 0x20, 0x38, 0xc0, 0x68, 0x40, 0x18,
+ 0x0e, 0xf0, 0xc7, 0xfb, 0x00, 0x28, 0x01, 0xd0,
+ 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x96, 0x4a,
+ 0x90, 0x6a, 0x00, 0x28, 0x02, 0xda, 0x64, 0x08,
+ 0x64, 0x00, 0x2a, 0xe0, 0x00, 0x29, 0x09, 0xd1,
+ 0x95, 0x4b, 0x3c, 0x00, 0xac, 0x44, 0x00, 0x00,
+ 0xa0, 0x3b, 0x5b, 0x6d, 0x00, 0x2b, 0x02, 0xd0,
+ 0x05, 0x28, 0x0d, 0xdb, 0x01, 0xe0, 0x07, 0x28,
+ 0x0a, 0xdb, 0x01, 0x20, 0xc0, 0x43, 0x90, 0x62,
+ 0x64, 0x08, 0x8e, 0x49, 0x64, 0x00, 0x00, 0x20,
+ 0xa0, 0x39, 0x88, 0x65, 0x14, 0xe0, 0xd1, 0xe0,
+ 0x39, 0x43, 0x11, 0xd1, 0x89, 0x49, 0xa0, 0x39,
+ 0xcb, 0x6d, 0x00, 0x2b, 0x02, 0xd1, 0x89, 0x6d,
+ 0x01, 0x29, 0x09, 0xd9, 0x3c, 0x00, 0xe8, 0x44,
+ 0x00, 0x00, 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1,
+ 0x07, 0x28, 0x01, 0xdb, 0x64, 0x08, 0x64, 0x00,
+ 0x01, 0x30, 0x90, 0x62, 0xbd, 0xe0, 0x7d, 0x49,
+ 0x88, 0x69, 0x04, 0x90, 0x00, 0x20, 0x88, 0x61,
+ 0x0c, 0x98, 0x00, 0x28, 0x2c, 0xd0, 0x07, 0xf0,
+ 0x66, 0xfc, 0x00, 0x28, 0x02, 0xd0, 0x02, 0x20,
+ 0x04, 0x43, 0x25, 0xe0, 0x7a, 0x48, 0xc0, 0x6a,
+ 0x00, 0x28, 0x04, 0xd1, 0x77, 0x48, 0x3c, 0x00,
+ 0x24, 0x45, 0x00, 0x00, 0xa0, 0x38, 0xc0, 0x68,
+ 0x00, 0x28, 0x1c, 0xd1, 0x04, 0x98, 0x00, 0x28,
+ 0x0d, 0xd1, 0x28, 0x78, 0x10, 0x28, 0x02, 0xd3,
+ 0xe8, 0x78, 0x02, 0x28, 0x02, 0xd9, 0x28, 0x79,
+ 0x10, 0x28, 0x04, 0xd3, 0x04, 0x24, 0x6b, 0x49,
+ 0x01, 0x22, 0x8a, 0x61, 0x94, 0xe0, 0x6c, 0x48,
+ 0xa0, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x71, 0xd0,
+ 0x05, 0xf0, 0xa2, 0xfd, 0x00, 0x28, 0x6d, 0xd0,
+ 0x3c, 0x00, 0x60, 0x45, 0x00, 0x00, 0x64, 0x08,
+ 0x64, 0x00, 0x88, 0xe0, 0xff, 0xf7, 0x5b, 0xfa,
+ 0x00, 0x28, 0x1a, 0xd0, 0x68, 0x48, 0x00, 0x78,
+ 0x02, 0x28, 0x01, 0xd1, 0x00, 0x2f, 0x14, 0xd1,
+ 0x00, 0x20, 0xfe, 0xf7, 0x70, 0xfe, 0x30, 0x1a,
+ 0x04, 0x90, 0xff, 0xf7, 0x6c, 0xfa, 0x00, 0x28,
+ 0x07, 0xd0, 0xff, 0xf7, 0x1e, 0xfa, 0x00, 0x28,
+ 0x03, 0xd0, 0x5d, 0x49, 0x04, 0x98, 0x88, 0x42,
+ 0x4f, 0xd3, 0x3c, 0x00, 0x9c, 0x45, 0x00, 0x00,
+ 0x05, 0xf0, 0x6c, 0xfd, 0x00, 0x28, 0x4b, 0xd1,
+ 0x53, 0x49, 0x08, 0x78, 0x03, 0x28, 0x08, 0xd1,
+ 0x88, 0x68, 0x01, 0x22, 0xd2, 0x07, 0x30, 0x1a,
+ 0x90, 0x42, 0x41, 0xd2, 0x01, 0x22, 0x0a, 0x70,
+ 0x57, 0xe0, 0x54, 0x48, 0x00, 0x78, 0x02, 0x28,
+ 0x01, 0xd1, 0x00, 0x2f, 0x51, 0xd1, 0x4a, 0x49,
+ 0x88, 0x68, 0x51, 0x49, 0x80, 0x1b, 0x88, 0x42,
+ 0x07, 0xd9, 0x01, 0x20, 0x3c, 0x00, 0xd8, 0x45,
+ 0x00, 0x00, 0xfe, 0xf7, 0x42, 0xfe, 0x7d, 0x21,
+ 0x09, 0x01, 0x40, 0x18, 0x44, 0x49, 0x88, 0x60,
+ 0x4a, 0x48, 0x00, 0x78, 0x02, 0x28, 0x04, 0xd1,
+ 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x47, 0x4b, 0x47, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x3c, 0x49, 0x89, 0x68,
+ 0x89, 0x1b, 0x88, 0x42, 0x30, 0xd9, 0x07, 0x9b,
+ 0x00, 0x20, 0x03, 0x93, 0x00, 0xf0, 0x3c, 0x00,
+ 0x14, 0x46, 0x00, 0x00, 0x79, 0xff, 0x02, 0x90,
+ 0xff, 0xf7, 0xd8, 0xf9, 0x04, 0x90, 0x01, 0xf0,
+ 0x57, 0xf8, 0x04, 0x99, 0x02, 0x9a, 0x51, 0x43,
+ 0x48, 0x43, 0x01, 0x90, 0x00, 0xf0, 0xdc, 0xff,
+ 0x41, 0x1c, 0x01, 0x98, 0x01, 0x22, 0x48, 0x43,
+ 0x11, 0x1c, 0x00, 0xe0, 0x1b, 0xe0, 0x31, 0x4b,
+ 0x5b, 0x6a, 0x83, 0x42, 0x00, 0xd3, 0x00, 0x21,
+ 0x03, 0x9b, 0x01, 0x22, 0x00, 0x2b, 0x00, 0xd0,
+ 0x3c, 0x00, 0x50, 0x46, 0x00, 0x00, 0x00, 0x22,
+ 0x2c, 0x4b, 0x51, 0x43, 0x9b, 0x6a, 0x01, 0x22,
+ 0x83, 0x42, 0x00, 0xd3, 0x00, 0x22, 0x50, 0x00,
+ 0x08, 0x18, 0x03, 0xd0, 0x23, 0x49, 0x03, 0x20,
+ 0x08, 0x70, 0x03, 0xe0, 0x09, 0x98, 0xc0, 0x68,
+ 0x06, 0x28, 0x08, 0xd9, 0x02, 0x24, 0x08, 0x98,
+ 0x00, 0x28, 0x6e, 0xd0, 0x1d, 0x49, 0x00, 0x20,
+ 0xc8, 0x61, 0x48, 0x61, 0xa5, 0xe0, 0x1a, 0x49,
+ 0x48, 0x69, 0x3c, 0x00, 0x8c, 0x46, 0x00, 0x00,
+ 0x00, 0x28, 0x0a, 0xd1, 0x00, 0x2f, 0x05, 0xd0,
+ 0x01, 0x22, 0x4a, 0x61, 0xc8, 0x69, 0x80, 0x18,
+ 0xc8, 0x61, 0x0a, 0xe0, 0x00, 0x20, 0xc8, 0x61,
+ 0x03, 0xe0, 0x00, 0x2f, 0x05, 0xd1, 0x00, 0x20,
+ 0x48, 0x61, 0x0d, 0x98, 0x00, 0x28, 0x00, 0xd1,
+ 0xc8, 0x68, 0x00, 0x20, 0x08, 0x90, 0x08, 0x78,
+ 0x01, 0x28, 0x2f, 0xd0, 0x02, 0x28, 0x4b, 0xd1,
+ 0x00, 0x2f, 0x08, 0xd1, 0x3c, 0x00, 0xc8, 0x46,
+ 0x00, 0x00, 0xe8, 0x78, 0x00, 0x28, 0x02, 0xd1,
+ 0x28, 0x78, 0x10, 0x28, 0x43, 0xd2, 0x28, 0x79,
+ 0x10, 0x28, 0x40, 0xd2, 0x48, 0x68, 0x0a, 0x69,
+ 0x30, 0x1a, 0x90, 0x42, 0x67, 0xd3, 0x01, 0x22,
+ 0x0a, 0x70, 0x38, 0xe0, 0x00, 0x00, 0xe2, 0x04,
+ 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0x7e,
+ 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x88, 0x13,
+ 0x00, 0x00, 0x44, 0x6d, 0x01, 0x00, 0x3c, 0x00,
+ 0x04, 0x47, 0x00, 0x00, 0xc8, 0x57, 0x01, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0x98, 0x3a, 0x00, 0x00,
+ 0xc0, 0x57, 0x01, 0x00, 0x40, 0x0d, 0x03, 0x00,
+ 0xc4, 0x09, 0x00, 0x00, 0xb2, 0x0c, 0x00, 0x00,
+ 0x00, 0x20, 0x0b, 0x9a, 0x0a, 0x9b, 0xc0, 0x43,
+ 0x1a, 0x43, 0x37, 0xd0, 0x00, 0x2f, 0x35, 0xd1,
+ 0x07, 0x9b, 0x00, 0x2b, 0x08, 0xd0, 0x6a, 0x78,
+ 0x02, 0x2a, 0x2f, 0xd9, 0x2a, 0x78, 0x10, 0x2a,
+ 0x3c, 0x00, 0x40, 0x47, 0x00, 0x00, 0x2c, 0xd2,
+ 0x2a, 0x79, 0x10, 0x2a, 0x29, 0xd2, 0x25, 0x4b,
+ 0x1a, 0x6c, 0x00, 0x2a, 0x06, 0xd0, 0x9a, 0x6a,
+ 0x9f, 0x6c, 0xba, 0x42, 0x02, 0xd1, 0x1f, 0x20,
+ 0x1f, 0xe0, 0x2e, 0xe0, 0x20, 0x4b, 0x5a, 0x6c,
+ 0x00, 0x2a, 0x03, 0xd0, 0x1f, 0x4f, 0xb3, 0x1a,
+ 0xbb, 0x42, 0x16, 0xd3, 0x1c, 0x4b, 0x00, 0x2a,
+ 0x05, 0xd0, 0x9a, 0x6a, 0x9f, 0x6c, 0xba, 0x42,
+ 0x01, 0xd1, 0x3c, 0x00, 0x7c, 0x47, 0x00, 0x00,
+ 0x0f, 0x20, 0x0d, 0xe0, 0x07, 0x9a, 0x00, 0x2a,
+ 0x04, 0xd0, 0xea, 0x79, 0x20, 0x2a, 0x01, 0xd1,
+ 0x00, 0x20, 0x05, 0xe0, 0xea, 0x79, 0x10, 0x2a,
+ 0x01, 0xd3, 0x03, 0x20, 0x00, 0xe0, 0x9a, 0x6a,
+ 0x12, 0x4a, 0x12, 0x68, 0x02, 0x40, 0x0b, 0xd1,
+ 0x01, 0x20, 0x08, 0x90, 0x02, 0x20, 0x08, 0x70,
+ 0x0f, 0x48, 0x08, 0x61, 0x4e, 0x60, 0x64, 0xe7,
+ 0xff, 0xe7, 0x01, 0x20, 0x3c, 0x00, 0xb8, 0x47,
+ 0x00, 0x00, 0x08, 0x90, 0x60, 0xe7, 0x0c, 0x49,
+ 0x88, 0x6a, 0x00, 0x28, 0x01, 0xda, 0x01, 0x30,
+ 0x02, 0xe0, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20,
+ 0x88, 0x62, 0x00, 0x20, 0x08, 0x62, 0x08, 0x99,
+ 0x20, 0x04, 0x08, 0x43, 0x0f, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x71, 0x02,
+ 0x00, 0x00, 0x08, 0x20, 0x07, 0x00, 0x53, 0x07,
+ 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, 0x3c, 0x00,
+ 0xf4, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x00, 0x48, 0x70, 0x47, 0x50, 0x7e, 0x01, 0x00,
+ 0x80, 0xb5, 0x3d, 0xf0, 0x7f, 0xfd, 0x02, 0x49,
+ 0x01, 0x20, 0x08, 0x70, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c,
+ 0x0e, 0xf0, 0xc8, 0xfa, 0x26, 0x49, 0x04, 0x1c,
+ 0x88, 0x6a, 0x26, 0x4e, 0x00, 0x28, 0x01, 0xd0,
+ 0x04, 0x20, 0x03, 0xe0, 0x70, 0x6a, 0x00, 0x28,
+ 0x3c, 0x00, 0x30, 0x48, 0x00, 0x00, 0x01, 0xd0,
+ 0x01, 0x38, 0x70, 0x62, 0x00, 0x27, 0x00, 0x2d,
+ 0x02, 0xd0, 0xb7, 0x61, 0xf7, 0x61, 0x0a, 0xe0,
+ 0xb0, 0x69, 0x1c, 0x49, 0x01, 0x30, 0xb0, 0x61,
+ 0x49, 0x6d, 0x00, 0x29, 0x03, 0xd0, 0x03, 0x28,
+ 0x01, 0xd9, 0x01, 0x20, 0xf0, 0x61, 0xb4, 0x60,
+ 0xf1, 0x68, 0x00, 0x91, 0x08, 0xf0, 0xf7, 0xfc,
+ 0xf0, 0x60, 0x00, 0x99, 0x88, 0x42, 0x02, 0xd0,
+ 0x30, 0x62, 0x3c, 0x00, 0x6c, 0x48, 0x00, 0x00,
+ 0x34, 0x61, 0x0b, 0xe0, 0x00, 0xf0, 0x90, 0xf8,
+ 0x00, 0x28, 0x01, 0xd0, 0x11, 0x48, 0x00, 0xe0,
+ 0x11, 0x48, 0x31, 0x69, 0x61, 0x1a, 0x81, 0x42,
+ 0x00, 0xd9, 0x37, 0x62, 0x0b, 0x4a, 0x0c, 0x48,
+ 0xd1, 0x6c, 0x20, 0x30, 0x00, 0x29, 0x01, 0xd0,
+ 0x0a, 0x21, 0x03, 0xe0, 0x01, 0x7a, 0x00, 0x29,
+ 0x01, 0xd0, 0xff, 0x31, 0x01, 0x72, 0x00, 0x2d,
+ 0x03, 0xd1, 0x01, 0x7a, 0x3c, 0x00, 0xa8, 0x48,
+ 0x00, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x91, 0x6a,
+ 0x00, 0x7a, 0x00, 0x28, 0x00, 0xd1, 0x17, 0x65,
+ 0xf8, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x3c, 0x7e,
+ 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, 0xa8, 0x61,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x49,
+ 0x80, 0xb5, 0x89, 0x68, 0x00, 0x29, 0x07, 0xd0,
+ 0x05, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x21,
+ 0x08, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x3c, 0x00,
+ 0xe4, 0x48, 0x00, 0x00, 0x05, 0xfa, 0x80, 0xbd,
+ 0x60, 0x6c, 0x01, 0x00, 0x07, 0x48, 0x00, 0x68,
+ 0x07, 0x49, 0x4a, 0x69, 0x10, 0x40, 0x01, 0xd0,
+ 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x49, 0x6a,
+ 0x88, 0x42, 0x01, 0xd1, 0x01, 0x20, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x10, 0x00, 0x07, 0x00,
+ 0xa4, 0x6c, 0x01, 0x00, 0x70, 0xb5, 0x0e, 0xf0,
+ 0x49, 0xfa, 0x02, 0x1c, 0x00, 0xf0, 0x3a, 0xf8,
+ 0x3c, 0x00, 0x20, 0x49, 0x00, 0x00, 0x10, 0x49,
+ 0x00, 0x28, 0x0e, 0xd0, 0x08, 0x1c, 0xa0, 0x31,
+ 0x0e, 0x78, 0x0e, 0x4b, 0x10, 0x2e, 0x01, 0xd3,
+ 0x80, 0x6f, 0x03, 0xe0, 0x49, 0x78, 0x10, 0x29,
+ 0x0e, 0xd3, 0xc0, 0x6f, 0xc0, 0x18, 0x84, 0x1a,
+ 0x0a, 0xe0, 0x08, 0x1c, 0x80, 0x30, 0x45, 0x69,
+ 0x08, 0x49, 0x8d, 0x42, 0x01, 0xd9, 0x0c, 0x1c,
+ 0x05, 0xe0, 0xc0, 0x68, 0x10, 0x1a, 0x2c, 0x1a,
+ 0x00, 0x2c, 0x3c, 0x00, 0x5c, 0x49, 0x00, 0x00,
+ 0x00, 0xda, 0x64, 0x19, 0x20, 0x1c, 0x70, 0xbd,
+ 0xa4, 0x6c, 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0x80, 0xb5, 0x05, 0xf0,
+ 0xb7, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x07, 0xf0,
+ 0x1f, 0xff, 0x80, 0xbd, 0x03, 0x48, 0x00, 0x78,
+ 0x00, 0x28, 0xfa, 0xd0, 0x07, 0xf0, 0x70, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00,
+ 0x03, 0x49, 0x01, 0x20, 0x3c, 0x00, 0x98, 0x49,
+ 0x00, 0x00, 0x49, 0x69, 0x03, 0x29, 0x00, 0xd8,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x60, 0x6c,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x00, 0x24,
+ 0x28, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x05, 0xf0,
+ 0x6a, 0xfb, 0x04, 0x06, 0x24, 0x0e, 0xfe, 0xf7,
+ 0xd2, 0xfc, 0x00, 0x02, 0x20, 0x43, 0x02, 0xd1,
+ 0x68, 0x6a, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20,
+ 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, 0x3c, 0x00,
+ 0xd4, 0x49, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00,
+ 0x01, 0x21, 0x01, 0x28, 0x00, 0xd0, 0x00, 0x21,
+ 0x01, 0x48, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00,
+ 0x60, 0x6c, 0x01, 0x00, 0x15, 0x48, 0x10, 0xb5,
+ 0x04, 0x68, 0x15, 0x48, 0x00, 0x6a, 0x00, 0x28,
+ 0x14, 0xd0, 0xff, 0xf7, 0xcb, 0xff, 0x00, 0x28,
+ 0x0e, 0xd1, 0x11, 0x48, 0x11, 0x49, 0xc4, 0x30,
+ 0x40, 0x69, 0x88, 0x42, 0x08, 0xd2, 0xcc, 0x08,
+ 0x3c, 0x00, 0x10, 0x4a, 0x00, 0x00, 0xa0, 0x42,
+ 0x05, 0xd3, 0xff, 0xf7, 0x7e, 0xff, 0xa0, 0x42,
+ 0x01, 0xda, 0x0c, 0x4c, 0x01, 0xe0, 0xff, 0x24,
+ 0x91, 0x34, 0x7d, 0x20, 0x00, 0x01, 0x84, 0x42,
+ 0x04, 0xd9, 0x00, 0x22, 0x16, 0x21, 0x83, 0x20,
+ 0x0e, 0xf0, 0xbd, 0xfe, 0x01, 0x23, 0x09, 0x22,
+ 0x21, 0x1c, 0x16, 0x20, 0x0e, 0xf0, 0xa7, 0xfe,
+ 0x10, 0xbd, 0xb0, 0x57, 0x01, 0x00, 0x60, 0x6c,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x4a, 0x00, 0x00,
+ 0xc0, 0x5d, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, 0x00, 0xf0,
+ 0x43, 0xf8, 0x00, 0x28, 0x0f, 0xd0, 0x08, 0x4c,
+ 0x20, 0x78, 0xc0, 0x07, 0x03, 0xd4, 0x05, 0xf0,
+ 0xab, 0xf9, 0x09, 0xf0, 0x31, 0xfe, 0x00, 0x2d,
+ 0x05, 0xd0, 0x20, 0x78, 0x80, 0x07, 0x02, 0xd4,
+ 0x30, 0x1c, 0x02, 0xf0, 0xfd, 0xfe, 0x70, 0xbd,
+ 0x60, 0x6c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x4a,
+ 0x00, 0x00, 0xb0, 0xb5, 0x00, 0x28, 0x18, 0xd0,
+ 0x11, 0x48, 0x81, 0x42, 0x15, 0xd2, 0x10, 0x48,
+ 0x0c, 0x1c, 0x0d, 0x18, 0x07, 0xf0, 0xdf, 0xfa,
+ 0x81, 0x00, 0x09, 0x18, 0xa1, 0x42, 0x01, 0xd2,
+ 0x40, 0x00, 0x03, 0xe0, 0x41, 0x00, 0x09, 0x18,
+ 0xa1, 0x42, 0x01, 0xd2, 0x24, 0x1a, 0x06, 0xe0,
+ 0x41, 0x00, 0xa1, 0x42, 0x03, 0xd2, 0x40, 0x08,
+ 0xf8, 0xe7, 0x06, 0x4d, 0x07, 0x4c, 0x3c, 0x00,
+ 0xc4, 0x4a, 0x00, 0x00, 0x0e, 0xf0, 0x72, 0xf9,
+ 0x00, 0x19, 0x29, 0x1c, 0x07, 0xf0, 0xdc, 0xfa,
+ 0xb0, 0xbd, 0x00, 0x00, 0x80, 0xb9, 0x2a, 0x00,
+ 0x53, 0x07, 0x00, 0x00, 0x4c, 0x1d, 0x00, 0x00,
+ 0x88, 0x13, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0xf0,
+ 0xfd, 0xfa, 0x00, 0x28, 0x13, 0xd1, 0xfe, 0xf7,
+ 0xb5, 0xfe, 0x0a, 0x4c, 0x0a, 0x4d, 0x00, 0x28,
+ 0x60, 0x63, 0x00, 0xd0, 0x28, 0x60, 0x0e, 0xf0,
+ 0x3c, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x55, 0xf9,
+ 0x21, 0x6a, 0x00, 0x29, 0x04, 0xd1, 0xe1, 0x69,
+ 0x40, 0x1a, 0x29, 0x68, 0x88, 0x42, 0x01, 0xd9,
+ 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd,
+ 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57,
+ 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xdd, 0xff,
+ 0x00, 0x28, 0x05, 0xd0, 0x05, 0xf0, 0xb7, 0xfa,
+ 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd,
+ 0x00, 0x20, 0x3c, 0x00, 0x3c, 0x4b, 0x00, 0x00,
+ 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c,
+ 0x00, 0x21, 0xa2, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0xa1, 0x60, 0x02, 0xf0, 0x83, 0xf9, 0x10, 0xbd,
+ 0x61, 0x60, 0x01, 0x1c, 0x00, 0x22, 0x04, 0x20,
+ 0x0e, 0xf0, 0x36, 0xfd, 0x03, 0x48, 0x21, 0x68,
+ 0x0a, 0xf0, 0x08, 0xfc, 0x10, 0xbd, 0x00, 0x00,
+ 0xbc, 0x74, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x78, 0x4b,
+ 0x00, 0x00, 0x01, 0xd1, 0xfc, 0xf7, 0xc1, 0xfb,
+ 0x20, 0x4c, 0xe0, 0x6a, 0x00, 0x28, 0x15, 0xd0,
+ 0x1f, 0x4b, 0xa0, 0x69, 0x58, 0x43, 0xc6, 0x0b,
+ 0x20, 0x88, 0x46, 0x43, 0xf0, 0x00, 0x80, 0x19,
+ 0xe6, 0x60, 0xfb, 0xf7, 0x1c, 0xfe, 0xa8, 0x42,
+ 0x05, 0xd8, 0x30, 0x1c, 0xfb, 0xf7, 0x17, 0xfe,
+ 0x80, 0x19, 0xa8, 0x42, 0x02, 0xd2, 0x00, 0x20,
+ 0xe0, 0x60, 0x20, 0xe0, 0xe5, 0x60, 0x3c, 0x00,
+ 0xb4, 0x4b, 0x00, 0x00, 0x00, 0x2d, 0x1d, 0xd0,
+ 0x26, 0x88, 0xa0, 0x69, 0x70, 0x43, 0xc1, 0x03,
+ 0x28, 0x1c, 0xfb, 0xf7, 0xa5, 0xfd, 0x60, 0x61,
+ 0x0d, 0x48, 0x32, 0x1c, 0x29, 0x1c, 0x30, 0x30,
+ 0xfb, 0xf7, 0x0a, 0xfc, 0x0c, 0x4b, 0x60, 0x69,
+ 0x58, 0x43, 0xc0, 0x0b, 0x60, 0x62, 0x01, 0xf0,
+ 0xb7, 0xfd, 0xa0, 0x62, 0xe0, 0x68, 0x00, 0x28,
+ 0x04, 0xd0, 0x20, 0x69, 0xa1, 0x68, 0xfb, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x4b, 0x00, 0x00, 0xf4, 0xfb,
+ 0x70, 0xbd, 0x05, 0x48, 0xa1, 0x68, 0xfb, 0xf7,
+ 0xef, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x74,
+ 0x01, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xc0, 0xc6,
+ 0x2d, 0x00, 0x88, 0x13, 0x00, 0x00, 0xf1, 0xb5,
+ 0x3e, 0x48, 0x00, 0xab, 0x81, 0x78, 0xc0, 0x78,
+ 0x3e, 0x4f, 0x0a, 0x07, 0x04, 0x07, 0x58, 0x78,
+ 0x3b, 0x49, 0x12, 0x0f, 0x08, 0x5c, 0x14, 0x39,
+ 0x24, 0x0f, 0x3c, 0x00, 0x2c, 0x4c, 0x00, 0x00,
+ 0x80, 0x18, 0x78, 0x60, 0x01, 0x30, 0xb8, 0x60,
+ 0x18, 0x78, 0x35, 0x4d, 0x08, 0x5c, 0x00, 0x19,
+ 0xb8, 0x61, 0x01, 0x30, 0xf8, 0x61, 0xeb, 0x78,
+ 0x33, 0x48, 0x1e, 0x09, 0x33, 0x4b, 0x18, 0x38,
+ 0x81, 0x78, 0x5e, 0x43, 0xab, 0x78, 0x1d, 0x09,
+ 0xc8, 0x23, 0x6b, 0x43, 0x00, 0x29, 0x08, 0xd1,
+ 0x2b, 0x4d, 0x2d, 0x78, 0x3d, 0x60, 0xc5, 0x60,
+ 0x7d, 0x25, 0xed, 0x00, 0x3c, 0x00, 0x68, 0x4c,
+ 0x00, 0x00, 0x5d, 0x1b, 0x2c, 0x4b, 0x07, 0xe0,
+ 0x27, 0x4d, 0x6d, 0x78, 0x3d, 0x60, 0xc5, 0x60,
+ 0x4b, 0x25, 0x2d, 0x01, 0x5d, 0x1b, 0x28, 0x4b,
+ 0xf6, 0x18, 0x02, 0x20, 0x00, 0xf0, 0x57, 0xf8,
+ 0x28, 0x1a, 0xf8, 0x60, 0x22, 0x48, 0x22, 0x1c,
+ 0x18, 0x38, 0x81, 0x78, 0x03, 0x20, 0x00, 0xf0,
+ 0x4e, 0xf8, 0x30, 0x1a, 0x38, 0x62, 0x39, 0x68,
+ 0x00, 0xab, 0x79, 0x61, 0x5a, 0x78, 0x3c, 0x00,
+ 0xa4, 0x4c, 0x00, 0x00, 0x56, 0x23, 0xf9, 0x68,
+ 0x5a, 0x43, 0x89, 0x1a, 0xf9, 0x60, 0xc8, 0x31,
+ 0x39, 0x61, 0x18, 0x49, 0x18, 0x39, 0x89, 0x78,
+ 0x00, 0x29, 0xb9, 0x69, 0x11, 0xd1, 0x00, 0xab,
+ 0x1a, 0x78, 0x13, 0x4b, 0x14, 0x3b, 0x9a, 0x5c,
+ 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, 0x59, 0x43,
+ 0x14, 0x4b, 0x59, 0x1a, 0x51, 0x43, 0x0a, 0x23,
+ 0x59, 0x43, 0x40, 0x1a, 0x38, 0x62, 0x12, 0x49,
+ 0x3c, 0x00, 0xe0, 0x4c, 0x00, 0x00, 0x10, 0xe0,
+ 0x00, 0xab, 0x1a, 0x78, 0x0a, 0x4b, 0x14, 0x3b,
+ 0x9a, 0x5c, 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23,
+ 0x59, 0x43, 0x0d, 0x4b, 0x59, 0x1a, 0x51, 0x43,
+ 0x0a, 0x23, 0x59, 0x43, 0x40, 0x1a, 0x0b, 0x49,
+ 0x38, 0x62, 0x40, 0x18, 0x78, 0x62, 0xf8, 0xbd,
+ 0x00, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x66, 0x5a,
+ 0x01, 0x00, 0x94, 0x78, 0x01, 0x00, 0xa0, 0x86,
+ 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4d, 0x00, 0x00,
+ 0x00, 0x48, 0x71, 0x00, 0xb0, 0xd6, 0x8c, 0x00,
+ 0x88, 0x10, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00,
+ 0x58, 0x12, 0x00, 0x00, 0x70, 0x11, 0x01, 0x00,
+ 0x30, 0xb5, 0x19, 0x4b, 0x02, 0x28, 0xdd, 0x68,
+ 0x06, 0xd1, 0x00, 0x29, 0x04, 0xd1, 0x2b, 0x1c,
+ 0x0c, 0x33, 0x9c, 0x1a, 0x64, 0x23, 0x5c, 0x43,
+ 0x02, 0x28, 0x09, 0xd1, 0x01, 0x29, 0x07, 0xd1,
+ 0x64, 0x23, 0x7d, 0x24, 0x3c, 0x00, 0x58, 0x4d,
+ 0x00, 0x00, 0xe4, 0x00, 0x6b, 0x43, 0x1c, 0x19,
+ 0xa0, 0x23, 0x53, 0x43, 0xe4, 0x1a, 0x0a, 0x23,
+ 0x5a, 0x43, 0x03, 0x28, 0x09, 0xd1, 0x00, 0x29,
+ 0x07, 0xd1, 0x13, 0x23, 0xff, 0x24, 0xe4, 0x00,
+ 0x6b, 0x43, 0x1b, 0x19, 0x9b, 0x1a, 0x1c, 0x1c,
+ 0x5c, 0x43, 0x03, 0x28, 0x08, 0xd1, 0x01, 0x29,
+ 0x06, 0xd1, 0x0e, 0x20, 0x05, 0x49, 0x68, 0x43,
+ 0x40, 0x18, 0x80, 0x1a, 0x04, 0x1c, 0x3c, 0x00,
+ 0x94, 0x4d, 0x00, 0x00, 0x44, 0x43, 0x20, 0x1c,
+ 0x30, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00,
+ 0x84, 0x08, 0x00, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0x0c, 0x23, 0x60, 0x78, 0x05, 0x49, 0x14, 0x31,
+ 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, 0x01, 0xf0,
+ 0x4f, 0xfc, 0x00, 0x21, 0x60, 0x78, 0x02, 0xf0,
+ 0x4b, 0xff, 0x10, 0xbd, 0x4c, 0x7b, 0x01, 0x00,
+ 0x0c, 0x48, 0xf8, 0xb5, 0x40, 0x78, 0x0c, 0x23,
+ 0x3c, 0x00, 0xd0, 0x4d, 0x00, 0x00, 0x0a, 0x49,
+ 0x58, 0x43, 0x14, 0x31, 0x44, 0x18, 0x26, 0x1d,
+ 0x60, 0xce, 0x30, 0x1c, 0x0b, 0xf0, 0x0b, 0xfd,
+ 0x00, 0x27, 0x41, 0x20, 0x47, 0x55, 0x05, 0x48,
+ 0x29, 0x1c, 0x02, 0xf0, 0xf0, 0xfe, 0x28, 0x1c,
+ 0x01, 0xf0, 0x31, 0xfc, 0x04, 0x34, 0xc0, 0xc4,
+ 0xf8, 0xbd, 0x4c, 0x7b, 0x01, 0x00, 0x55, 0x80,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x4c, 0x21,
+ 0x28, 0x78, 0x3c, 0x00, 0x0c, 0x4e, 0x00, 0x00,
+ 0x09, 0x4a, 0x41, 0x43, 0x8c, 0x18, 0x22, 0x68,
+ 0x01, 0x21, 0xfb, 0xf7, 0xe1, 0xfa, 0x28, 0x78,
+ 0x01, 0xf0, 0xfa, 0xfb, 0x3c, 0x23, 0xe0, 0x56,
+ 0x41, 0x1e, 0x01, 0x20, 0x07, 0xf0, 0x34, 0xfb,
+ 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x7c, 0x01, 0x00,
+ 0x58, 0xe3, 0x01, 0x00, 0x0c, 0x23, 0x07, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x80, 0xb5, 0x40, 0x68,
+ 0x41, 0x6b, 0x00, 0x29, 0x3c, 0x00, 0x48, 0x4e,
+ 0x00, 0x00, 0x02, 0xd0, 0x0b, 0xf0, 0xfb, 0xfd,
+ 0x80, 0xbd, 0x0b, 0xf0, 0x2c, 0xfd, 0x80, 0xbd,
+ 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x38, 0x22,
+ 0x0a, 0x4b, 0x42, 0x43, 0xd2, 0x18, 0x00, 0x29,
+ 0x80, 0xb5, 0x04, 0xd0, 0x02, 0x29, 0x07, 0xd1,
+ 0x0b, 0xf0, 0xfb, 0xfc, 0x80, 0xbd, 0xd2, 0x6a,
+ 0x01, 0x21, 0xfb, 0xf7, 0xb0, 0xfa, 0x80, 0xbd,
+ 0x03, 0x21, 0x86, 0x20, 0xfc, 0xf7, 0x3c, 0x00,
+ 0x84, 0x4e, 0x00, 0x00, 0x0f, 0xfa, 0x80, 0xbd,
+ 0xd4, 0xe4, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x06,
+ 0x24, 0x0e, 0x0c, 0x20, 0x0e, 0x49, 0x60, 0x43,
+ 0x40, 0x18, 0x45, 0x68, 0xa8, 0x6b, 0x00, 0x28,
+ 0x03, 0xd1, 0x00, 0x21, 0x20, 0x1c, 0xfd, 0xf7,
+ 0xe1, 0xfa, 0x20, 0x1c, 0x07, 0xf0, 0xf2, 0xff,
+ 0x00, 0x28, 0x08, 0xd0, 0x28, 0x1c, 0x60, 0x30,
+ 0xc1, 0x79, 0x01, 0x29, 0x03, 0xd9, 0xff, 0x31,
+ 0x3c, 0x00, 0xc0, 0x4e, 0x00, 0x00, 0xc1, 0x71,
+ 0xff, 0x31, 0x81, 0x71, 0x01, 0x21, 0x20, 0x1c,
+ 0x02, 0xf0, 0xc5, 0xfe, 0xb0, 0xbd, 0x60, 0x7b,
+ 0x01, 0x00, 0x70, 0xb5, 0x00, 0x06, 0x00, 0x0e,
+ 0x05, 0x1c, 0x4c, 0x23, 0x0a, 0x49, 0x58, 0x43,
+ 0x44, 0x18, 0x3c, 0x20, 0x00, 0x5d, 0xff, 0x30,
+ 0x06, 0x06, 0x36, 0x16, 0x28, 0x1c, 0x01, 0xf0,
+ 0x90, 0xfb, 0x00, 0x21, 0x28, 0x1c, 0x22, 0x68,
+ 0xfb, 0xf7, 0x3c, 0x00, 0xfc, 0x4e, 0x00, 0x00,
+ 0x6f, 0xfa, 0x31, 0x1c, 0x00, 0x20, 0x07, 0xf0,
+ 0xc7, 0xfa, 0x70, 0xbd, 0x58, 0xe3, 0x01, 0x00,
+ 0x0c, 0x22, 0x0f, 0x4b, 0x42, 0x43, 0xd2, 0x18,
+ 0x10, 0xb5, 0x54, 0x68, 0x00, 0x29, 0x0d, 0xd0,
+ 0x02, 0x29, 0x0f, 0xd1, 0x2c, 0x20, 0x00, 0x5d,
+ 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, 0x0c, 0x20,
+ 0xfc, 0xf7, 0xba, 0xf9, 0x20, 0x1c, 0x0b, 0xf0,
+ 0xbb, 0xfc, 0x10, 0xbd, 0x3c, 0x00, 0x38, 0x4f,
+ 0x00, 0x00, 0x00, 0x21, 0x02, 0xf0, 0x8d, 0xfe,
+ 0x10, 0xbd, 0x04, 0x21, 0x0c, 0x20, 0xfc, 0xf7,
+ 0xae, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x29, 0x07, 0xd0,
+ 0x0c, 0x23, 0x05, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x40, 0x68, 0x0b, 0xf0, 0x4a, 0xfc, 0x80, 0xbd,
+ 0x01, 0x21, 0x02, 0xf0, 0x76, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x3c, 0x00,
+ 0x74, 0x4f, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x00, 0x29, 0x05, 0xd0, 0x02, 0x29, 0x1a, 0xd1,
+ 0x20, 0x1c, 0x0b, 0xf0, 0xeb, 0xfc, 0x10, 0xbd,
+ 0x0d, 0x48, 0x04, 0x70, 0x0d, 0x48, 0x07, 0xf0,
+ 0x07, 0xf9, 0x0d, 0x48, 0x01, 0x88, 0x01, 0x22,
+ 0x12, 0x03, 0x11, 0x43, 0x01, 0x80, 0x4c, 0x20,
+ 0x0a, 0x49, 0x60, 0x43, 0x40, 0x18, 0x40, 0x30,
+ 0x00, 0x78, 0xfd, 0xf7, 0x5d, 0xfd, 0x20, 0x1c,
+ 0x3c, 0x00, 0xb0, 0x4f, 0x00, 0x00, 0x0a, 0xf0,
+ 0xd4, 0xf8, 0x10, 0xbd, 0x03, 0x21, 0x86, 0x20,
+ 0xfc, 0xf7, 0x73, 0xf9, 0x10, 0xbd, 0x3c, 0x7c,
+ 0x01, 0x00, 0x05, 0x4e, 0x00, 0x00, 0x32, 0x80,
+ 0x07, 0x00, 0x58, 0xe3, 0x01, 0x00, 0xff, 0xb5,
+ 0x05, 0x1c, 0x01, 0x20, 0x83, 0xb0, 0x01, 0x90,
+ 0x0c, 0x20, 0x5d, 0x4a, 0x68, 0x43, 0x86, 0x18,
+ 0x01, 0x27, 0x00, 0x29, 0x74, 0x68, 0x0e, 0xd0,
+ 0x02, 0x29, 0x3c, 0x00, 0xec, 0x4f, 0x00, 0x00,
+ 0x6a, 0xd1, 0x2c, 0x20, 0x00, 0x5d, 0x00, 0x28,
+ 0x03, 0xd0, 0x06, 0x21, 0x0c, 0x20, 0xfc, 0xf7,
+ 0x53, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, 0x20, 0xfd,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x52, 0x48, 0x14, 0x38,
+ 0x45, 0x70, 0xa0, 0x6b, 0x00, 0x28, 0x07, 0xd0,
+ 0x50, 0x48, 0x07, 0xf0, 0x7f, 0xf8, 0x01, 0x21,
+ 0x28, 0x1c, 0xfd, 0xf7, 0x25, 0xfa, 0x1c, 0xe0,
+ 0x4d, 0x48, 0x07, 0xf0, 0x3c, 0x00, 0x28, 0x50,
+ 0x00, 0x00, 0x77, 0xf8, 0x4a, 0x48, 0x14, 0x38,
+ 0x05, 0x70, 0x4b, 0x48, 0x01, 0x88, 0x01, 0x22,
+ 0x52, 0x03, 0x11, 0x43, 0x01, 0x80, 0x40, 0x20,
+ 0x00, 0x5d, 0xfd, 0xf7, 0x12, 0xfd, 0xb0, 0x68,
+ 0x00, 0x28, 0x09, 0xd1, 0x28, 0x1c, 0x07, 0xf0,
+ 0x64, 0xff, 0xb0, 0x60, 0x00, 0x28, 0x03, 0xd1,
+ 0x09, 0x21, 0x0c, 0x20, 0xfc, 0xf7, 0x23, 0xf9,
+ 0x05, 0x98, 0x00, 0x28, 0x03, 0xd0, 0x3c, 0x00,
+ 0x64, 0x50, 0x00, 0x00, 0xe0, 0x6c, 0x01, 0x30,
+ 0xe0, 0x64, 0x0e, 0xe0, 0x67, 0x20, 0x00, 0x5d,
+ 0x00, 0x28, 0x07, 0xd1, 0xe0, 0x6c, 0x00, 0x28,
+ 0x04, 0xd1, 0x39, 0x48, 0x02, 0x38, 0xc0, 0x6a,
+ 0xa0, 0x64, 0x09, 0xe0, 0x20, 0x6d, 0x00, 0x28,
+ 0x01, 0xd0, 0x00, 0x27, 0x04, 0xe0, 0x28, 0x1c,
+ 0x07, 0xf0, 0x00, 0xff, 0x00, 0x28, 0xe5, 0xd1,
+ 0x05, 0x98, 0x20, 0x65, 0x20, 0x1c, 0x20, 0x30,
+ 0x3c, 0x00, 0xa0, 0x50, 0x00, 0x00, 0x62, 0x6a,
+ 0x02, 0x90, 0x81, 0x7b, 0x28, 0x1c, 0x07, 0xf0,
+ 0x78, 0xff, 0x00, 0x2f, 0x19, 0xd0, 0x20, 0x1c,
+ 0x60, 0x30, 0xc1, 0x79, 0x4a, 0x1c, 0xc2, 0x71,
+ 0x80, 0x79, 0x81, 0x42, 0x02, 0xd2, 0x01, 0x20,
+ 0x01, 0xe0, 0x40, 0xe0, 0x00, 0x20, 0x01, 0x90,
+ 0x00, 0x28, 0x0a, 0xd0, 0x25, 0x48, 0x00, 0x78,
+ 0x80, 0x07, 0x06, 0xd5, 0x00, 0xf0, 0x0d, 0xfb,
+ 0x01, 0x1c, 0x3c, 0x00, 0xdc, 0x50, 0x00, 0x00,
+ 0x20, 0x1c, 0x0b, 0xf0, 0x15, 0xfd, 0x01, 0x90,
+ 0x01, 0x98, 0x00, 0x28, 0x0f, 0xd0, 0x02, 0x98,
+ 0x00, 0x7b, 0x02, 0x28, 0x03, 0xd1, 0x20, 0x1c,
+ 0x04, 0xf0, 0xd0, 0xfe, 0x84, 0xe7, 0x01, 0x28,
+ 0x00, 0xd0, 0x7e, 0xe7, 0x21, 0x1c, 0x30, 0x1c,
+ 0x04, 0xf0, 0xe2, 0xfe, 0x7c, 0xe7, 0x25, 0x1c,
+ 0x60, 0x35, 0xe8, 0x79, 0xff, 0x30, 0xa8, 0x71,
+ 0x68, 0x7a, 0x06, 0xf0, 0x3c, 0x00, 0x18, 0x51,
+ 0x00, 0x00, 0x9d, 0xfc, 0x0d, 0xf0, 0x47, 0xfe,
+ 0x07, 0x1c, 0x05, 0xf0, 0x12, 0xff, 0x3f, 0x18,
+ 0x02, 0x98, 0x81, 0x7b, 0x20, 0x69, 0x04, 0x30,
+ 0x00, 0xf0, 0x35, 0xfa, 0x61, 0x6a, 0x05, 0xf0,
+ 0xea, 0xfe, 0x39, 0x18, 0x6b, 0x7a, 0x30, 0x88,
+ 0x80, 0x31, 0x09, 0x4a, 0x0d, 0xf0, 0x91, 0xfe,
+ 0x5d, 0xe7, 0x03, 0x21, 0x0c, 0x20, 0xfc, 0xf7,
+ 0xaa, 0xf8, 0x58, 0xe7, 0x00, 0x00, 0x3c, 0x00,
+ 0x54, 0x51, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00,
+ 0xa5, 0x4d, 0x00, 0x00, 0xc9, 0x4d, 0x00, 0x00,
+ 0x32, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00,
+ 0x8d, 0x4e, 0x00, 0x00, 0xff, 0xb5, 0x81, 0xb0,
+ 0x1f, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x10, 0x1c,
+ 0x0a, 0x9e, 0x00, 0xf0, 0xf5, 0xfc, 0x29, 0x1c,
+ 0x10, 0x31, 0x20, 0x1d, 0x06, 0x22, 0xfb, 0xf7,
+ 0xb7, 0xf9, 0xa8, 0x8e, 0x20, 0x80, 0xe8, 0x8e,
+ 0x3c, 0x00, 0x90, 0x51, 0x00, 0x00, 0x60, 0x80,
+ 0x02, 0x99, 0x20, 0x1c, 0x00, 0xf0, 0x07, 0xf9,
+ 0xff, 0x34, 0x01, 0x34, 0x66, 0x60, 0x27, 0x60,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xf8, 0xb5,
+ 0x0f, 0x1c, 0x1e, 0x1c, 0x05, 0x1c, 0x14, 0x1c,
+ 0x10, 0x1c, 0x00, 0xf0, 0xd8, 0xfc, 0xa8, 0x88,
+ 0x39, 0x1c, 0x20, 0x80, 0x28, 0x89, 0x60, 0x80,
+ 0x20, 0x1c, 0x00, 0xf0, 0xf0, 0xf8, 0xff, 0x34,
+ 0x01, 0x34, 0x3c, 0x00, 0xcc, 0x51, 0x00, 0x00,
+ 0x66, 0x60, 0xf8, 0xbd, 0x70, 0xb5, 0x04, 0x1c,
+ 0xc0, 0x68, 0x05, 0x68, 0x20, 0x1c, 0x14, 0x30,
+ 0x06, 0x1c, 0x00, 0xf0, 0x0f, 0xfb, 0x00, 0x28,
+ 0x16, 0xd0, 0x01, 0x22, 0x02, 0x21, 0x20, 0x69,
+ 0x05, 0xf0, 0xf8, 0xfa, 0x00, 0x28, 0x01, 0xd0,
+ 0xfb, 0xf7, 0x24, 0xff, 0x00, 0x22, 0x02, 0x21,
+ 0x20, 0x69, 0x05, 0xf0, 0xef, 0xfa, 0x00, 0x28,
+ 0x06, 0xd0, 0xfb, 0xf7, 0x3c, 0x00, 0x08, 0x52,
+ 0x00, 0x00, 0x01, 0xff, 0x00, 0x28, 0x02, 0xd0,
+ 0x30, 0x1c, 0x0b, 0xf0, 0x7c, 0xfb, 0x68, 0x89,
+ 0x80, 0x07, 0xc0, 0x0f, 0x03, 0xf0, 0xa7, 0xf8,
+ 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0xc1, 0x68, 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c,
+ 0xfb, 0xf7, 0xd4, 0xf8, 0x70, 0xbd, 0x94, 0x67,
+ 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x10, 0x1c,
+ 0x0d, 0x1c, 0x19, 0x1c, 0xff, 0x22, 0x3c, 0x00,
+ 0x44, 0x52, 0x00, 0x00, 0x00, 0x27, 0xff, 0x2d,
+ 0x25, 0xd0, 0x00, 0x29, 0x05, 0xd0, 0x4b, 0x88,
+ 0x00, 0x2b, 0x02, 0xd0, 0x00, 0xf0, 0x50, 0xfc,
+ 0x15, 0xe0, 0x00, 0x21, 0x10, 0x4e, 0x4b, 0x00,
+ 0x9e, 0x19, 0x02, 0x23, 0xf6, 0x5e, 0x86, 0x42,
+ 0x01, 0xdd, 0x0a, 0x1c, 0x04, 0xe0, 0x01, 0x31,
+ 0x09, 0x06, 0x09, 0x0e, 0x26, 0x29, 0xf1, 0xd3,
+ 0x09, 0x4e, 0x50, 0x00, 0x80, 0x19, 0x4e, 0x23,
+ 0x3c, 0x00, 0x80, 0x52, 0x00, 0x00, 0xc0, 0x5e,
+ 0x27, 0x2a, 0x07, 0xd2, 0x06, 0x49, 0x20, 0x39,
+ 0x49, 0x57, 0x47, 0x31, 0x40, 0x1a, 0x20, 0x60,
+ 0x01, 0x27, 0x02, 0xe0, 0x7e, 0x20, 0xc0, 0x43,
+ 0x20, 0x60, 0x38, 0x1c, 0xf8, 0xbd, 0xfa, 0x47,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x7e, 0x21,
+ 0x05, 0x1c, 0x00, 0x20, 0xc9, 0x43, 0x00, 0x2c,
+ 0x0f, 0xd0, 0x10, 0x1c, 0x05, 0xf0, 0x6b, 0xfd,
+ 0x00, 0x28, 0x3c, 0x00, 0xbc, 0x52, 0x00, 0x00,
+ 0x02, 0xd0, 0x21, 0x1c, 0xc9, 0x39, 0x01, 0xe0,
+ 0x21, 0x1c, 0x86, 0x39, 0x02, 0x20, 0xc0, 0x43,
+ 0xfb, 0xf7, 0xb4, 0xf9, 0x01, 0x1c, 0x01, 0x20,
+ 0x29, 0x60, 0xb0, 0xbd, 0x98, 0xb5, 0x14, 0x1c,
+ 0x00, 0x22, 0x00, 0x92, 0x22, 0x1c, 0xfd, 0xf7,
+ 0x43, 0xfe, 0x98, 0xbd, 0x05, 0x49, 0x80, 0xb5,
+ 0x08, 0x60, 0x05, 0x49, 0x01, 0x20, 0xc8, 0x61,
+ 0x01, 0x21, 0x00, 0x20, 0x3c, 0x00, 0xf8, 0x52,
+ 0x00, 0x00, 0x03, 0xf0, 0x1c, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20,
+ 0x03, 0xf0, 0x11, 0xfe, 0x06, 0xf0, 0x0d, 0xfb,
+ 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd,
+ 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0x09, 0x69, 0x00, 0x29, 0x00, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0x53, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00,
+ 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0,
+ 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c,
+ 0x0d, 0x1c, 0x04, 0x1c, 0x00, 0x28, 0x01, 0xd0,
+ 0x01, 0x2c, 0x07, 0xd1, 0x00, 0xf0, 0x36, 0xfa,
+ 0x00, 0x28, 0x05, 0xd0, 0x13, 0xf0, 0xca, 0xf9,
+ 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd,
+ 0x3c, 0x00, 0x70, 0x53, 0x00, 0x00, 0x01, 0x20,
+ 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, 0x0a, 0x4c,
+ 0x04, 0x34, 0x61, 0xc4, 0x10, 0x3c, 0x00, 0xf0,
+ 0x24, 0xfa, 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0,
+ 0xc6, 0xf9, 0x01, 0xe0, 0x00, 0xf0, 0xe5, 0xf8,
+ 0xc0, 0x30, 0xc3, 0x6b, 0x22, 0x1d, 0x07, 0xca,
+ 0xfb, 0xf7, 0x20, 0xf8, 0x00, 0x20, 0x70, 0xbd,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0d, 0x1c, 0x3c, 0x00, 0xac, 0x53, 0x00, 0x00,
+ 0x00, 0x21, 0x04, 0x1c, 0x28, 0x1c, 0x05, 0xf0,
+ 0xe3, 0xf9, 0x23, 0x1c, 0xff, 0x33, 0x21, 0x33,
+ 0xff, 0x27, 0x00, 0x28, 0x05, 0xd0, 0x22, 0x22,
+ 0x01, 0x1c, 0x18, 0x1c, 0xfb, 0xf7, 0x96, 0xf8,
+ 0x00, 0xe0, 0x1f, 0x70, 0x03, 0x21, 0x28, 0x1c,
+ 0x05, 0xf0, 0xd2, 0xf9, 0x26, 0x1c, 0xff, 0x36,
+ 0x41, 0x36, 0x00, 0x28, 0x05, 0xd0, 0x03, 0x22,
+ 0x01, 0x1c, 0xb0, 0x1c, 0x3c, 0x00, 0xe8, 0x53,
+ 0x00, 0x00, 0xfb, 0xf7, 0x86, 0xf8, 0x00, 0xe0,
+ 0xb7, 0x70, 0x01, 0x21, 0x28, 0x1c, 0x05, 0xf0,
+ 0xc2, 0xf9, 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c,
+ 0x20, 0x1c, 0xff, 0x30, 0x0a, 0x22, 0x46, 0x30,
+ 0xfb, 0xf7, 0x77, 0xf8, 0x00, 0xe0, 0x77, 0x71,
+ 0x32, 0x21, 0x28, 0x1c, 0x05, 0xf0, 0xb3, 0xf9,
+ 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, 0x20, 0x1c,
+ 0xff, 0x30, 0x12, 0x22, 0x50, 0x30, 0x3c, 0x00,
+ 0x24, 0x54, 0x00, 0x00, 0xfb, 0xf7, 0x68, 0xf8,
+ 0x00, 0xe0, 0xf7, 0x73, 0x06, 0x21, 0x28, 0x1c,
+ 0x05, 0xf0, 0xa4, 0xf9, 0x00, 0x28, 0x07, 0xd0,
+ 0x01, 0x1c, 0x20, 0x1c, 0xff, 0x30, 0x04, 0x22,
+ 0x63, 0x30, 0xfb, 0xf7, 0x59, 0xf8, 0xf8, 0xbd,
+ 0xff, 0x34, 0x61, 0x34, 0xa7, 0x70, 0xfa, 0xe7,
+ 0x08, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x00, 0x28,
+ 0x01, 0xd1, 0x07, 0x48, 0x01, 0x68, 0x08, 0x1c,
+ 0x3c, 0x00, 0x60, 0x54, 0x00, 0x00, 0x05, 0xd1,
+ 0x03, 0x21, 0x90, 0x20, 0xfb, 0xf7, 0x1d, 0xff,
+ 0x00, 0x20, 0x80, 0xbd, 0x01, 0xf0, 0xd7, 0xfb,
+ 0x80, 0xbd, 0x1c, 0x67, 0x01, 0x00, 0x20, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xe7, 0xff,
+ 0x80, 0xbd, 0xf0, 0xb5, 0x00, 0x24, 0x84, 0x46,
+ 0x00, 0x20, 0x0b, 0xe0, 0x87, 0x40, 0x17, 0x40,
+ 0x07, 0xd0, 0x14, 0x23, 0x0b, 0x4d, 0x43, 0x43,
+ 0x5b, 0x19, 0x3c, 0x00, 0x9c, 0x54, 0x00, 0x00,
+ 0x1b, 0x7c, 0x65, 0x46, 0x2b, 0x55, 0x01, 0x34,
+ 0x01, 0x30, 0x01, 0x27, 0x3b, 0x1c, 0x0e, 0x28,
+ 0x00, 0xd3, 0x00, 0x23, 0x0e, 0x88, 0x3d, 0x1c,
+ 0xa6, 0x42, 0x00, 0xdc, 0x00, 0x25, 0x2b, 0x40,
+ 0xe7, 0xd1, 0x0c, 0x80, 0xf0, 0xbd, 0x00, 0x00,
+ 0x74, 0x40, 0x01, 0x00, 0x78, 0xb5, 0x04, 0x1c,
+ 0x01, 0x20, 0x20, 0x70, 0x08, 0x20, 0x00, 0xab,
+ 0x0d, 0x1c, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0x54,
+ 0x00, 0x00, 0x16, 0x1c, 0xa0, 0x1c, 0x69, 0x46,
+ 0xff, 0xf7, 0xd1, 0xff, 0x00, 0xab, 0x00, 0x22,
+ 0xd2, 0x43, 0x19, 0x88, 0x82, 0x40, 0x61, 0x70,
+ 0x32, 0x20, 0x28, 0x70, 0x10, 0x20, 0x18, 0x80,
+ 0x32, 0x40, 0xa8, 0x1c, 0x69, 0x46, 0xff, 0xf7,
+ 0xc2, 0xff, 0x00, 0xab, 0x18, 0x88, 0x68, 0x70,
+ 0x78, 0xbd, 0x80, 0xb5, 0x02, 0xf0, 0x35, 0xff,
+ 0x00, 0x21, 0x00, 0x28, 0x00, 0xd0, 0x3c, 0x00,
+ 0x14, 0x55, 0x00, 0x00, 0x01, 0x69, 0x08, 0x1c,
+ 0x80, 0xbd, 0x00, 0x00, 0x05, 0x49, 0x00, 0x28,
+ 0x01, 0xd0, 0xc8, 0x68, 0x00, 0xe0, 0x08, 0x69,
+ 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00,
+ 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0,
+ 0x04, 0x30, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x02, 0x48, 0x00, 0x69,
+ 0x3c, 0x00, 0x50, 0x55, 0x00, 0x00, 0x00, 0x28,
+ 0xff, 0xd1, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x69,
+ 0x00, 0x28, 0x03, 0xd1, 0x04, 0x21, 0x90, 0x20,
+ 0xfb, 0xf7, 0x9b, 0xfe, 0x20, 0x69, 0x10, 0xbd,
+ 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x00, 0xf0, 0x40, 0xf9, 0x00, 0x28,
+ 0x01, 0xd0, 0x00, 0x20, 0x10, 0xbd, 0x20, 0x1c,
+ 0x00, 0xf0, 0x3c, 0x00, 0x8c, 0x55, 0x00, 0x00,
+ 0x57, 0xf9, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20,
+ 0x10, 0xbd, 0x02, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0x70, 0xb5, 0x0f, 0x4e, 0x04, 0x1c, 0x30, 0x68,
+ 0x0d, 0x1c, 0x00, 0x28, 0x07, 0xd0, 0x21, 0x1c,
+ 0x04, 0x30, 0x05, 0xf0, 0xc1, 0xfb, 0x00, 0x28,
+ 0x01, 0xd0, 0x30, 0x68, 0x0b, 0xe0, 0x09, 0x4a,
+ 0x10, 0x68, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c,
+ 0x14, 0x1c, 0x04, 0x30, 0x3c, 0x00, 0xc8, 0x55,
+ 0x00, 0x00, 0x05, 0xf0, 0xb4, 0xfb, 0x00, 0x28,
+ 0x02, 0xd0, 0x20, 0x68, 0x9c, 0x30, 0x00, 0xe0,
+ 0x03, 0x48, 0x40, 0x5d, 0x70, 0xbd, 0x20, 0x67,
+ 0x01, 0x00, 0x1c, 0x67, 0x01, 0x00, 0xcc, 0x47,
+ 0x01, 0x00, 0x04, 0x49, 0x00, 0x20, 0x09, 0x69,
+ 0x00, 0x29, 0x02, 0xd0, 0xff, 0x31, 0x01, 0x31,
+ 0x88, 0x69, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0x01, 0x48, 0x00, 0x7a, 0x3c, 0x00,
+ 0x04, 0x56, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0xac, 0x7c, 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c,
+ 0x00, 0x20, 0x1f, 0x1c, 0x14, 0x1c, 0x00, 0x29,
+ 0x02, 0x90, 0x19, 0xd0, 0x01, 0x29, 0x26, 0xd0,
+ 0x02, 0x29, 0x47, 0xd1, 0x26, 0x48, 0x00, 0x78,
+ 0x05, 0xf0, 0xa0, 0xfb, 0xa0, 0x72, 0x0a, 0xf0,
+ 0x4f, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0xa0, 0x7a,
+ 0x05, 0xf0, 0xaa, 0xfb, 0x00, 0x28, 0x04, 0xd0,
+ 0x3c, 0x00, 0x40, 0x56, 0x00, 0x00, 0x20, 0x48,
+ 0x00, 0x78, 0x05, 0xf0, 0x92, 0xfb, 0xa0, 0x72,
+ 0x00, 0x20, 0x20, 0x72, 0x2f, 0xe0, 0x1d, 0x4d,
+ 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfb, 0xf7,
+ 0x52, 0xfe, 0x00, 0x97, 0x2a, 0x68, 0x23, 0x1c,
+ 0x18, 0x32, 0x11, 0x1c, 0x30, 0x1c, 0xfc, 0xf7,
+ 0xde, 0xfb, 0x26, 0xe0, 0x30, 0x1c, 0x0c, 0xf0,
+ 0xca, 0xfb, 0x05, 0x1c, 0x02, 0xd0, 0xa8, 0x68,
+ 0x00, 0x28, 0x3c, 0x00, 0x7c, 0x56, 0x00, 0x00,
+ 0x08, 0xd1, 0x13, 0x48, 0x00, 0x68, 0x00, 0x28,
+ 0x01, 0xd1, 0xfb, 0xf7, 0x3b, 0xfe, 0x10, 0x48,
+ 0x00, 0x68, 0x18, 0x30, 0x02, 0x1c, 0x0e, 0x48,
+ 0x00, 0x97, 0x01, 0x68, 0x23, 0x1c, 0x18, 0x31,
+ 0x30, 0x1c, 0xfc, 0xf7, 0xc3, 0xfb, 0x00, 0x2d,
+ 0x0a, 0xd0, 0x40, 0x35, 0x28, 0x88, 0x80, 0x06,
+ 0x06, 0xd4, 0x00, 0x20, 0x20, 0x60, 0x03, 0xe0,
+ 0x01, 0x21, 0x90, 0x20, 0x3c, 0x00, 0xb8, 0x56,
+ 0x00, 0x00, 0xfb, 0xf7, 0xf4, 0xfd, 0x02, 0x98,
+ 0xfe, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x90, 0x57,
+ 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x20, 0x02, 0xf0,
+ 0x4a, 0xfe, 0x18, 0x23, 0x05, 0x4a, 0x58, 0x43,
+ 0x80, 0x18, 0x40, 0x69, 0x01, 0x21, 0x00, 0x28,
+ 0x00, 0xd0, 0x41, 0x78, 0x08, 0x1c, 0x80, 0xbd,
+ 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0x3c, 0x00,
+ 0xf4, 0x56, 0x00, 0x00, 0x02, 0x49, 0x08, 0x69,
+ 0x00, 0x28, 0x00, 0xd1, 0xc8, 0x68, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68,
+ 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47,
+ 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00,
+ 0x10, 0xb5, 0x05, 0x4c, 0xe0, 0x68, 0x00, 0x28,
+ 0x03, 0xd1, 0x05, 0x21, 0x90, 0x20, 0xfb, 0xf7,
+ 0xbd, 0xfd, 0xe0, 0x68, 0x10, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x30, 0x57, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x00, 0x2a,
+ 0x03, 0xd0, 0x11, 0x49, 0x12, 0x4f, 0x0e, 0x78,
+ 0x01, 0xe0, 0x11, 0x4f, 0x0c, 0x26, 0x08, 0x2e,
+ 0x01, 0xd2, 0x34, 0x1c, 0x00, 0xe0, 0x08, 0x24,
+ 0x01, 0x21, 0x01, 0x70, 0x44, 0x70, 0x39, 0x1c,
+ 0x22, 0x1c, 0x02, 0x30, 0xfa, 0xf7, 0xcb, 0xfe,
+ 0x32, 0x1b, 0x00, 0x2a, 0x07, 0xdd, 0x32, 0x20,
+ 0x28, 0x70, 0x3c, 0x00, 0x6c, 0x57, 0x00, 0x00,
+ 0x39, 0x19, 0xa8, 0x1c, 0x6a, 0x70, 0xfa, 0xf7,
+ 0xc1, 0xfe, 0xf8, 0xbd, 0xff, 0x20, 0x28, 0x70,
+ 0x00, 0x20, 0x68, 0x70, 0xf9, 0xe7, 0x00, 0x00,
+ 0xa4, 0x69, 0x01, 0x00, 0xb0, 0x69, 0x01, 0x00,
+ 0x90, 0x57, 0x01, 0x00, 0x01, 0x49, 0x48, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00,
+ 0x03, 0x49, 0x80, 0xb5, 0x08, 0x60, 0x01, 0x21,
+ 0x01, 0x20, 0x03, 0xf0, 0x3c, 0x00, 0xa8, 0x57,
+ 0x00, 0x00, 0xc5, 0xfb, 0x80, 0xbd, 0x1c, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x01, 0x20,
+ 0x03, 0xf0, 0xbd, 0xfb, 0x06, 0xf0, 0xb9, 0xf8,
+ 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd,
+ 0x00, 0x00, 0x1c, 0x67, 0x01, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0xc9, 0x68, 0x00, 0x29, 0x00, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, 0x3c, 0x00,
+ 0xe4, 0x57, 0x00, 0x00, 0x00, 0x28, 0x01, 0xd0,
+ 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47,
+ 0x10, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x01, 0x20, 0x03, 0xf0, 0x9b, 0xfb, 0x80, 0xbd,
+ 0x05, 0x4a, 0x80, 0xb5, 0x12, 0x69, 0x00, 0x21,
+ 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, 0x05, 0xf0,
+ 0x91, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd,
+ 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, 0x80, 0xb5,
+ 0x3c, 0x00, 0x20, 0x58, 0x00, 0x00, 0x12, 0x69,
+ 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, 0x11, 0x1c,
+ 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, 0x8b, 0xfa,
+ 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, 0x10, 0x67,
+ 0x01, 0x00, 0x05, 0x4a, 0x80, 0xb5, 0xd2, 0x68,
+ 0x00, 0x21, 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d,
+ 0x05, 0xf0, 0x73, 0xfa, 0x01, 0x1c, 0x08, 0x1c,
+ 0x80, 0xbd, 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a,
+ 0x80, 0xb5, 0x3c, 0x00, 0x5c, 0x58, 0x00, 0x00,
+ 0xd2, 0x68, 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0,
+ 0x11, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0,
+ 0x6d, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd,
+ 0x10, 0x67, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c,
+ 0x1f, 0x1c, 0x87, 0xb0, 0x10, 0x9e, 0x00, 0x24,
+ 0x02, 0xf0, 0x72, 0xfd, 0x18, 0x23, 0x13, 0x49,
+ 0x58, 0x43, 0x08, 0x58, 0x00, 0x28, 0x19, 0xd0,
+ 0x04, 0x1c, 0x33, 0x1c, 0x3c, 0x00, 0x98, 0x58,
+ 0x00, 0x00, 0x3a, 0x1c, 0x28, 0x1c, 0x09, 0x99,
+ 0xfa, 0xf7, 0x9f, 0xfd, 0x04, 0x1c, 0x14, 0xd0,
+ 0x18, 0x20, 0x00, 0xab, 0x18, 0x80, 0xaa, 0x68,
+ 0x01, 0xa8, 0x69, 0x46, 0xff, 0xf7, 0xe7, 0xfd,
+ 0x6a, 0x46, 0x01, 0xa9, 0x00, 0x20, 0x07, 0xf0,
+ 0x44, 0xfe, 0x00, 0x28, 0x05, 0xd1, 0x0a, 0x21,
+ 0x00, 0xe0, 0x0f, 0x21, 0x90, 0x20, 0xfb, 0xf7,
+ 0xea, 0xfc, 0x20, 0x1c, 0x0b, 0xb0, 0x3c, 0x00,
+ 0xd4, 0x58, 0x00, 0x00, 0xf0, 0xbd, 0x00, 0x00,
+ 0x94, 0x67, 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24,
+ 0x02, 0xf0, 0x44, 0xfd, 0x18, 0x23, 0x05, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, 0x00, 0x28,
+ 0x02, 0xd0, 0xfa, 0xf7, 0x71, 0xfd, 0x01, 0x24,
+ 0x20, 0x1c, 0x10, 0xbd, 0x94, 0x67, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x4b, 0x00, 0xf0, 0x4e, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00,
+ 0x3c, 0x00, 0x10, 0x59, 0x00, 0x00, 0x80, 0xb5,
+ 0x02, 0x4b, 0x00, 0xf0, 0x46, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0e, 0x1c, 0x15, 0x1c, 0x00, 0x28, 0x1c, 0x49,
+ 0x10, 0xd0, 0x48, 0x68, 0x1c, 0x4a, 0x28, 0x80,
+ 0x00, 0x20, 0x07, 0xe0, 0x0b, 0x18, 0x1c, 0x7a,
+ 0x14, 0x23, 0x63, 0x43, 0x9b, 0x18, 0x1b, 0x7c,
+ 0x33, 0x54, 0x01, 0x30, 0x2b, 0x88, 0x83, 0x42,
+ 0xf4, 0xdc, 0x3c, 0x00, 0x4c, 0x59, 0x00, 0x00,
+ 0x24, 0xe0, 0x00, 0x20, 0x0f, 0x1c, 0x00, 0x24,
+ 0x08, 0x60, 0x0f, 0xe0, 0x30, 0x5d, 0x05, 0xf0,
+ 0x07, 0xfa, 0x0e, 0x28, 0x01, 0xd1, 0x00, 0x20,
+ 0xf8, 0xbd, 0x39, 0x19, 0x08, 0x72, 0x01, 0x22,
+ 0x39, 0x68, 0x82, 0x40, 0x11, 0x43, 0x08, 0x1c,
+ 0x38, 0x60, 0x01, 0x34, 0x28, 0x88, 0xa0, 0x42,
+ 0xec, 0xdc, 0x28, 0x88, 0x78, 0x60, 0xff, 0xf7,
+ 0xb7, 0xfe, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x59,
+ 0x00, 0x00, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29,
+ 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0,
+ 0x52, 0xfb, 0x01, 0x20, 0xe3, 0xe7, 0x2c, 0x7d,
+ 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, 0x10, 0xb5,
+ 0x1c, 0x1c, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x78,
+ 0x0e, 0x28, 0x05, 0xd2, 0x14, 0x23, 0x0c, 0x4a,
+ 0x58, 0x43, 0x80, 0x18, 0x00, 0x7c, 0x00, 0xe0,
+ 0x00, 0x20, 0x08, 0x70, 0x0e, 0xe0, 0x3c, 0x00,
+ 0xc4, 0x59, 0x00, 0x00, 0x08, 0x78, 0x05, 0xf0,
+ 0xd1, 0xf9, 0x20, 0x70, 0xff, 0xf7, 0x92, 0xfe,
+ 0x00, 0x28, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29,
+ 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0,
+ 0x2d, 0xfb, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0x74, 0x40, 0x01, 0x00, 0x80, 0xb5, 0x27, 0x20,
+ 0xc0, 0x43, 0x09, 0xf0, 0x31, 0xfc, 0x80, 0xbd,
+ 0x80, 0xb5, 0x27, 0x20, 0xc0, 0x43, 0x09, 0xf0,
+ 0x3c, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x39, 0xfc,
+ 0x80, 0xbd, 0x80, 0xb5, 0x28, 0x20, 0x09, 0xf0,
+ 0x42, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x28, 0x20, 0x09, 0xf0, 0x4a, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x01, 0x28, 0x28, 0xd1,
+ 0x01, 0x29, 0x01, 0xd0, 0xfb, 0xf7, 0x6b, 0xfc,
+ 0xff, 0xf7, 0xe9, 0xfd, 0x02, 0x28, 0x1a, 0xd1,
+ 0x07, 0xf0, 0x13, 0xfc, 0x12, 0x4c, 0x21, 0x69,
+ 0x88, 0x42, 0x3c, 0x00, 0x3c, 0x5a, 0x00, 0x00,
+ 0x15, 0xd0, 0x07, 0xf0, 0x0d, 0xfc, 0x20, 0x61,
+ 0x20, 0x68, 0x7d, 0x24, 0xe4, 0x00, 0x44, 0x43,
+ 0x0d, 0xf0, 0xae, 0xf9, 0x05, 0x1c, 0x07, 0xf0,
+ 0x0b, 0xfc, 0x28, 0x1a, 0x84, 0x42, 0x00, 0xd9,
+ 0x24, 0x1a, 0x01, 0x22, 0x21, 0x1c, 0x0a, 0x20,
+ 0x0d, 0xf0, 0xb2, 0xfd, 0xb0, 0xbd, 0x00, 0x21,
+ 0x09, 0x20, 0x0c, 0xf0, 0x75, 0xfc, 0xb0, 0xbd,
+ 0x07, 0x21, 0x0a, 0x20, 0x3c, 0x00, 0x78, 0x5a,
+ 0x00, 0x00, 0xfb, 0xf7, 0x14, 0xfc, 0xb0, 0xbd,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x7d, 0x20,
+ 0x02, 0x49, 0x00, 0x01, 0x08, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x10, 0xb5,
+ 0x81, 0x6d, 0x04, 0x1c, 0xff, 0x30, 0x46, 0x30,
+ 0x0c, 0xf0, 0xd1, 0xfc, 0x20, 0x1c, 0xff, 0x30,
+ 0x50, 0x30, 0xa1, 0x6d, 0x0c, 0xf0, 0xcb, 0xfc,
+ 0x10, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00,
+ 0xb4, 0x5a, 0x00, 0x00, 0x0d, 0x1c, 0x02, 0xf0,
+ 0x59, 0xfc, 0x20, 0x1c, 0x02, 0xf0, 0x56, 0xfc,
+ 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x18, 0x22, 0x29, 0x1c, 0xfa, 0xf7, 0x70, 0xfd,
+ 0xb0, 0xbd, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xbc, 0xfb,
+ 0x20, 0x1c, 0x09, 0xf0, 0xc7, 0xfb, 0x10, 0xbd,
+ 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xd0, 0xfb,
+ 0x3c, 0x00, 0xf0, 0x5a, 0x00, 0x00, 0x20, 0x1c,
+ 0x09, 0xf0, 0xdb, 0xfb, 0x10, 0xbd, 0x70, 0xb5,
+ 0x0c, 0x78, 0x06, 0x1c, 0x48, 0x88, 0x4d, 0x78,
+ 0xe2, 0x00, 0x80, 0x1a, 0xe9, 0x00, 0x40, 0x1a,
+ 0x01, 0x1c, 0x41, 0x43, 0x12, 0x31, 0x24, 0x20,
+ 0xfa, 0xf7, 0x91, 0xfd, 0x21, 0x1c, 0x61, 0x43,
+ 0xc9, 0x00, 0x40, 0x18, 0x29, 0x1c, 0x69, 0x43,
+ 0xc9, 0x00, 0x42, 0x18, 0x0c, 0x49, 0x88, 0x79,
+ 0x0c, 0x4b, 0x3c, 0x00, 0x2c, 0x5b, 0x00, 0x00,
+ 0x53, 0x43, 0x0c, 0x4a, 0x13, 0x60, 0x53, 0x7b,
+ 0x34, 0x02, 0x14, 0x60, 0x52, 0x7b, 0x88, 0x71,
+ 0x01, 0x33, 0x58, 0x10, 0x08, 0x4b, 0x80, 0x1a,
+ 0x01, 0x21, 0x49, 0x02, 0x58, 0x43, 0x00, 0x28,
+ 0x00, 0xda, 0x49, 0x42, 0x08, 0x18, 0x80, 0x12,
+ 0x21, 0x38, 0x70, 0xbd, 0x20, 0x10, 0x07, 0x00,
+ 0xec, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00,
+ 0x03, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x5b,
+ 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x21,
+ 0x04, 0x30, 0xfa, 0xf7, 0x70, 0xfc, 0xff, 0x20,
+ 0x21, 0x30, 0xff, 0x21, 0x01, 0x55, 0x20, 0x1c,
+ 0xff, 0x30, 0x41, 0x30, 0x81, 0x70, 0x41, 0x71,
+ 0xc1, 0x73, 0xff, 0x20, 0x63, 0x30, 0x01, 0x55,
+ 0x00, 0x20, 0x20, 0x61, 0x60, 0x61, 0xff, 0x34,
+ 0x01, 0x34, 0xa0, 0x60, 0xe0, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00,
+ 0xa4, 0x5b, 0x00, 0x00, 0x08, 0x1c, 0x58, 0x60,
+ 0x9a, 0x60, 0x1c, 0x1c, 0x1e, 0x60, 0x15, 0x1c,
+ 0x9b, 0x8a, 0xe2, 0x8a, 0x31, 0x1c, 0x02, 0xf0,
+ 0xa1, 0xfc, 0x28, 0x1a, 0xe0, 0x60, 0x70, 0xbd,
+ 0x70, 0xb5, 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c,
+ 0x1e, 0x1c, 0x00, 0x25, 0xeb, 0x43, 0x22, 0x1c,
+ 0x18, 0x32, 0x0b, 0xf0, 0xf7, 0xfb, 0x22, 0x1c,
+ 0xff, 0x32, 0x50, 0x32, 0x11, 0x1c, 0x0a, 0x39,
+ 0x3c, 0x00, 0xe0, 0x5b, 0x00, 0x00, 0x01, 0x23,
+ 0x20, 0x1c, 0x00, 0xf0, 0xc6, 0xf8, 0x0c, 0x28,
+ 0x10, 0xd0, 0x01, 0x25, 0x20, 0x1c, 0x0b, 0xf0,
+ 0xac, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0x19, 0xf8,
+ 0x20, 0x1c, 0x00, 0xf0, 0x0a, 0xf8, 0x20, 0x1c,
+ 0x00, 0xf0, 0x29, 0xf8, 0x31, 0x1c, 0x20, 0x1c,
+ 0x0b, 0xf0, 0x17, 0xfa, 0x28, 0x1c, 0x70, 0xbd,
+ 0x00, 0x00, 0xff, 0x21, 0x1d, 0x31, 0x09, 0x58,
+ 0x80, 0x30, 0x3c, 0x00, 0x1c, 0x5c, 0x00, 0x00,
+ 0x89, 0x07, 0x00, 0x29, 0x01, 0xda, 0x01, 0x21,
+ 0x00, 0xe0, 0x00, 0x21, 0xc1, 0x62, 0x70, 0x47,
+ 0x01, 0x1c, 0x80, 0x31, 0x00, 0x22, 0x0a, 0x63,
+ 0x07, 0x4a, 0x12, 0x68, 0x00, 0x2a, 0x09, 0xd0,
+ 0x42, 0x88, 0x92, 0x06, 0x06, 0xd5, 0xff, 0x30,
+ 0x01, 0x30, 0xc0, 0x69, 0x40, 0x07, 0x01, 0xd4,
+ 0x01, 0x20, 0x08, 0x63, 0x70, 0x47, 0x00, 0x00,
+ 0xac, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x5c,
+ 0x00, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x4a, 0x88,
+ 0x00, 0x20, 0x52, 0x05, 0x05, 0xd5, 0xff, 0x31,
+ 0x01, 0x31, 0xc9, 0x69, 0x49, 0x07, 0x00, 0xd4,
+ 0x01, 0x20, 0x06, 0xf0, 0xec, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x98, 0x68,
+ 0x17, 0x1c, 0x0e, 0x1c, 0x1c, 0x1c, 0x00, 0x28,
+ 0x02, 0xd1, 0x20, 0x1c, 0x0c, 0xf0, 0x31, 0xf8,
+ 0xab, 0x69, 0x39, 0x1c, 0x30, 0x1c, 0x3c, 0x00,
+ 0x94, 0x5c, 0x00, 0x00, 0xa2, 0x68, 0x0b, 0xf0,
+ 0x95, 0xfb, 0xf8, 0xbd, 0xf8, 0xb5, 0x16, 0x1c,
+ 0x0d, 0x1c, 0x1f, 0x1c, 0x00, 0x24, 0x02, 0xf0,
+ 0x61, 0xfb, 0x18, 0x23, 0x06, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0x43, 0x68, 0x00, 0x2b, 0x05, 0xd0,
+ 0x3a, 0x1c, 0x31, 0x1c, 0x28, 0x1c, 0xfa, 0xf7,
+ 0x8e, 0xfb, 0x01, 0x24, 0x20, 0x1c, 0xf8, 0xbd,
+ 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x07, 0xf0,
+ 0x3c, 0x00, 0xd0, 0x5c, 0x00, 0x00, 0xc5, 0xfa,
+ 0x09, 0x49, 0x08, 0x61, 0x08, 0x68, 0x00, 0x28,
+ 0x02, 0xd1, 0x7d, 0x20, 0x00, 0x01, 0x08, 0x60,
+ 0x08, 0x68, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43,
+ 0x00, 0x23, 0x01, 0x22, 0x0a, 0x20, 0x0d, 0xf0,
+ 0x4e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x67,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x0a, 0x20,
+ 0x0d, 0xf0, 0x97, 0xfc, 0x80, 0xbd, 0xf8, 0xb5,
+ 0x0e, 0x1c, 0x3c, 0x00, 0x0c, 0x5d, 0x00, 0x00,
+ 0x51, 0x68, 0x14, 0x1c, 0x12, 0x68, 0xa5, 0x68,
+ 0x0b, 0x1c, 0x75, 0x1b, 0x57, 0x19, 0x97, 0x42,
+ 0x00, 0xd2, 0x01, 0x31, 0x42, 0x68, 0x00, 0x25,
+ 0x8a, 0x42, 0x02, 0xdd, 0x01, 0x25, 0x62, 0x60,
+ 0x05, 0xe0, 0x9a, 0x42, 0x03, 0xd1, 0x01, 0x68,
+ 0xb9, 0x42, 0x00, 0xd9, 0x01, 0x25, 0x00, 0x2d,
+ 0x09, 0xd0, 0x01, 0x68, 0x21, 0x60, 0xa6, 0x60,
+ 0xa3, 0x8a, 0xe2, 0x8a, 0x3c, 0x00, 0x48, 0x5d,
+ 0x00, 0x00, 0x60, 0x68, 0x02, 0xf0, 0xd7, 0xfb,
+ 0x30, 0x1a, 0xe0, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0x07, 0xfb,
+ 0x18, 0x23, 0x03, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x18, 0x21, 0xfa, 0xf7, 0x98, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0xfe, 0xb5,
+ 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, 0x1e, 0x1c,
+ 0x0c, 0x25, 0x01, 0x22, 0x00, 0x92, 0x3c, 0x00,
+ 0x84, 0x5d, 0x00, 0x00, 0xa2, 0x69, 0x02, 0xab,
+ 0xfd, 0xf7, 0xf0, 0xf8, 0x00, 0x28, 0x45, 0xd0,
+ 0x02, 0x98, 0x27, 0x21, 0x02, 0x1c, 0x0a, 0x40,
+ 0x01, 0xd1, 0x08, 0x43, 0x02, 0x90, 0x21, 0x49,
+ 0xa0, 0x69, 0x08, 0x40, 0x06, 0xd0, 0x02, 0x98,
+ 0x01, 0x40, 0x03, 0xd1, 0x49, 0x21, 0xc9, 0x00,
+ 0x08, 0x43, 0x02, 0x90, 0xa0, 0x6d, 0x02, 0x99,
+ 0x88, 0x42, 0x30, 0xd0, 0x00, 0x2e, 0x2d, 0xd0,
+ 0x3c, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x40, 0x21,
+ 0x20, 0x1c, 0x58, 0x30, 0xfa, 0xf7, 0x69, 0xfb,
+ 0x02, 0x98, 0x00, 0x25, 0x00, 0x26, 0x37, 0x1c,
+ 0xa0, 0x65, 0x19, 0xe0, 0xc0, 0x07, 0x11, 0xd5,
+ 0xf0, 0x19, 0x00, 0x19, 0x70, 0x30, 0x05, 0x71,
+ 0x28, 0x1c, 0x04, 0xf0, 0xd4, 0xff, 0x00, 0x28,
+ 0x04, 0xd0, 0xa0, 0x19, 0x80, 0x30, 0x05, 0x72,
+ 0x01, 0x36, 0x03, 0xe0, 0xe0, 0x19, 0x60, 0x30,
+ 0x05, 0x70, 0x3c, 0x00, 0xfc, 0x5d, 0x00, 0x00,
+ 0x01, 0x37, 0x01, 0x35, 0x2d, 0x06, 0x02, 0x98,
+ 0x2d, 0x0e, 0x40, 0x08, 0x02, 0x90, 0x02, 0x98,
+ 0x00, 0x28, 0xe2, 0xd1, 0x84, 0x20, 0x06, 0x51,
+ 0xf0, 0x19, 0x20, 0x67, 0xe7, 0x65, 0x00, 0x25,
+ 0x00, 0xe0, 0x0b, 0x25, 0x28, 0x1c, 0xfe, 0xbd,
+ 0xd8, 0x3a, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x1c,
+ 0x08, 0x1c, 0x11, 0x1c, 0x00, 0x24, 0xe2, 0x43,
+ 0x6b, 0x46, 0xff, 0xf7, 0x3c, 0x00, 0x38, 0x5e,
+ 0x00, 0x00, 0x4f, 0xfa, 0x00, 0x28, 0x05, 0xd0,
+ 0xa8, 0x69, 0x00, 0x99, 0x01, 0x40, 0x81, 0x42,
+ 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd,
+ 0x00, 0x00, 0x7c, 0xb5, 0x05, 0x6a, 0x86, 0x69,
+ 0x04, 0x1c, 0xc0, 0x68, 0xfb, 0xf7, 0xb7, 0xfb,
+ 0xe1, 0x69, 0xfb, 0xf7, 0xda, 0xfa, 0x20, 0x1c,
+ 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89,
+ 0x89, 0x18, 0xc1, 0x83, 0x06, 0x49, 0x3c, 0x00,
+ 0x74, 0x5e, 0x00, 0x00, 0x01, 0x94, 0x00, 0x91,
+ 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, 0x01, 0x68,
+ 0xe0, 0x68, 0xc0, 0x68, 0x00, 0xf0, 0xf2, 0xf9,
+ 0x7c, 0xbd, 0x00, 0x00, 0x91, 0x5e, 0x00, 0x00,
+ 0xb0, 0xb5, 0xd1, 0x68, 0x55, 0x69, 0xc8, 0x68,
+ 0x14, 0x1c, 0x14, 0x4b, 0x0c, 0xe0, 0x02, 0x68,
+ 0x9a, 0x42, 0x07, 0xd1, 0xc2, 0x68, 0xca, 0x60,
+ 0x00, 0x21, 0xc1, 0x60, 0x01, 0x60, 0xfb, 0xf7,
+ 0x3c, 0x00, 0xb0, 0x5e, 0x00, 0x00, 0x73, 0xfb,
+ 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, 0x00, 0x28,
+ 0xf0, 0xd1, 0xe0, 0x68, 0xc0, 0x68, 0xe8, 0x60,
+ 0xe0, 0x68, 0xc5, 0x60, 0x20, 0x1c, 0x40, 0x30,
+ 0xc1, 0x8b, 0x2a, 0x89, 0x89, 0x18, 0xc1, 0x83,
+ 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7,
+ 0xba, 0xff, 0xb0, 0xbd, 0x04, 0x48, 0x04, 0xf0,
+ 0x4e, 0xf9, 0x00, 0x6a, 0x07, 0xf0, 0x77, 0xfa,
+ 0xb0, 0xbd, 0x3c, 0x00, 0xec, 0x5e, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0xa0, 0x6a, 0x01, 0x00,
+ 0xf1, 0xb5, 0x82, 0xb0, 0x02, 0x98, 0x06, 0x69,
+ 0x01, 0x1c, 0x08, 0x36, 0x60, 0x31, 0x45, 0x68,
+ 0x01, 0x91, 0x82, 0xe0, 0x10, 0x21, 0x00, 0x20,
+ 0x2f, 0x69, 0xfb, 0xf7, 0x63, 0xfb, 0x68, 0x61,
+ 0x01, 0x89, 0x08, 0x39, 0x09, 0x04, 0x09, 0x0c,
+ 0x01, 0x81, 0x68, 0x69, 0x00, 0x68, 0x40, 0x18,
+ 0x08, 0x21, 0xfb, 0xf7, 0x3c, 0x00, 0x28, 0x5f,
+ 0x00, 0x00, 0x57, 0xfb, 0xe8, 0x61, 0x68, 0x69,
+ 0x71, 0x88, 0x00, 0x68, 0x20, 0x22, 0x01, 0x80,
+ 0x71, 0x68, 0x41, 0x60, 0x01, 0x99, 0x49, 0x7b,
+ 0x89, 0x01, 0x11, 0x43, 0xc1, 0x70, 0x00, 0x21,
+ 0x81, 0x70, 0x28, 0x20, 0xfb, 0xf7, 0x75, 0xfc,
+ 0x39, 0x88, 0x04, 0x1c, 0xc1, 0x81, 0xa8, 0x6b,
+ 0x00, 0x28, 0x03, 0xd1, 0x01, 0x20, 0x80, 0x02,
+ 0x08, 0x43, 0xe0, 0x81, 0x06, 0x22, 0x3c, 0x00,
+ 0x64, 0x5f, 0x00, 0x00, 0x39, 0x1d, 0x20, 0x1c,
+ 0x10, 0x30, 0xfa, 0xf7, 0xc5, 0xfa, 0x39, 0x1c,
+ 0x0a, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x16, 0x30,
+ 0x00, 0x90, 0xfa, 0xf7, 0xbd, 0xfa, 0x39, 0x1c,
+ 0x10, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x1c, 0x30,
+ 0xfa, 0xf7, 0xb6, 0xfa, 0xe1, 0x89, 0x25, 0x4a,
+ 0x5c, 0x20, 0x11, 0x40, 0x01, 0x22, 0x92, 0x03,
+ 0x11, 0x43, 0x40, 0x5b, 0xe1, 0x81, 0x0f, 0x21,
+ 0x3c, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x08, 0x40,
+ 0x60, 0x84, 0x20, 0x1c, 0x20, 0x30, 0x16, 0x21,
+ 0x81, 0x71, 0x00, 0x21, 0x21, 0x70, 0xe9, 0x6b,
+ 0x00, 0x29, 0x07, 0xd0, 0x29, 0x69, 0x09, 0x8b,
+ 0x09, 0x07, 0x09, 0x0f, 0x21, 0x70, 0xa1, 0x84,
+ 0x18, 0x21, 0x81, 0x71, 0x06, 0x22, 0x60, 0x1c,
+ 0x00, 0x99, 0xfa, 0xf7, 0x94, 0xfa, 0x70, 0x68,
+ 0x00, 0x0e, 0xe0, 0x71, 0x70, 0x68, 0x00, 0x02,
+ 0x00, 0x0e, 0x3c, 0x00, 0xdc, 0x5f, 0x00, 0x00,
+ 0x20, 0x72, 0x70, 0x68, 0x00, 0x04, 0x00, 0x0e,
+ 0x60, 0x72, 0x70, 0x68, 0xa0, 0x72, 0x70, 0x88,
+ 0x00, 0x0a, 0xe0, 0x72, 0x70, 0x88, 0x20, 0x73,
+ 0x70, 0x88, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c,
+ 0x70, 0x80, 0x02, 0xd1, 0x70, 0x68, 0x01, 0x30,
+ 0x70, 0x60, 0xac, 0x61, 0x02, 0x98, 0x28, 0x62,
+ 0x2d, 0x68, 0x00, 0x2d, 0x00, 0xd0, 0x79, 0xe7,
+ 0x02, 0x98, 0x04, 0x49, 0x3c, 0x00, 0x18, 0x60,
+ 0x00, 0x00, 0x42, 0x68, 0x04, 0x48, 0x04, 0xf0,
+ 0x74, 0xf8, 0xfe, 0xbd, 0x00, 0x00, 0x8f, 0xc7,
+ 0xff, 0xff, 0x3d, 0xda, 0x00, 0x00, 0xa0, 0x6a,
+ 0x01, 0x00, 0xb0, 0xb5, 0x07, 0x4d, 0x28, 0x78,
+ 0x03, 0x28, 0x08, 0xd0, 0x00, 0x24, 0x2c, 0x70,
+ 0x69, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x01, 0x20,
+ 0xfa, 0xf7, 0xc8, 0xf9, 0x6c, 0x60, 0xb0, 0xbd,
+ 0x00, 0x00, 0x9c, 0x73, 0x01, 0x00, 0x3c, 0x00,
+ 0x54, 0x60, 0x00, 0x00, 0xf8, 0xb5, 0x2b, 0x4b,
+ 0xd8, 0x6a, 0x00, 0x28, 0x50, 0xd0, 0x2a, 0x48,
+ 0x01, 0x1c, 0xff, 0x31, 0x01, 0x31, 0xca, 0x68,
+ 0x01, 0x32, 0xca, 0x60, 0x1a, 0x6c, 0x00, 0x2a,
+ 0x02, 0xd1, 0x4a, 0x69, 0x01, 0x32, 0x4a, 0x61,
+ 0x0a, 0x69, 0x01, 0x32, 0x0a, 0x61, 0xda, 0x68,
+ 0x00, 0x2a, 0x04, 0xd0, 0x1f, 0x4a, 0x01, 0x32,
+ 0x12, 0x78, 0x00, 0x2a, 0x02, 0xd1, 0x8a, 0x69,
+ 0x3c, 0x00, 0x90, 0x60, 0x00, 0x00, 0x01, 0x32,
+ 0x8a, 0x61, 0x00, 0x25, 0x07, 0x1d, 0x18, 0x26,
+ 0x1a, 0x4a, 0x6e, 0x43, 0x74, 0x32, 0x90, 0x59,
+ 0x00, 0x28, 0x29, 0xd0, 0xb4, 0x18, 0x60, 0x69,
+ 0x00, 0x28, 0x25, 0xd1, 0x60, 0x68, 0x00, 0x28,
+ 0x02, 0xd0, 0x01, 0x68, 0x00, 0x29, 0x05, 0xd1,
+ 0xa1, 0x68, 0x00, 0x29, 0x1c, 0xd0, 0x09, 0x68,
+ 0x00, 0x29, 0x19, 0xd0, 0x00, 0x28, 0x05, 0xd0,
+ 0xe1, 0x68, 0x3c, 0x00, 0xcc, 0x60, 0x00, 0x00,
+ 0x01, 0x31, 0xe1, 0x60, 0x00, 0x68, 0x81, 0x42,
+ 0x11, 0xd3, 0xa0, 0x68, 0x00, 0x28, 0x06, 0xd0,
+ 0x21, 0x69, 0x00, 0x68, 0x08, 0x18, 0x0c, 0xf0,
+ 0xa3, 0xfd, 0x00, 0x28, 0x07, 0xd0, 0x06, 0x4a,
+ 0x01, 0x20, 0x60, 0x61, 0x74, 0x32, 0x91, 0x59,
+ 0x38, 0x1c, 0xfa, 0xf7, 0x70, 0xf9, 0x01, 0x35,
+ 0x02, 0x2d, 0xcb, 0xdb, 0xf8, 0xbd, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x61,
+ 0x00, 0x00, 0xf4, 0x67, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0f, 0x1c, 0x00, 0x25, 0x04, 0x1c, 0x00, 0x28,
+ 0x25, 0xd0, 0x20, 0x1c, 0x04, 0xf0, 0x03, 0xfe,
+ 0x00, 0x28, 0x06, 0xd0, 0xff, 0xf7, 0xff, 0xf8,
+ 0x04, 0x1c, 0xff, 0xf7, 0x50, 0xfb, 0x06, 0x1c,
+ 0x07, 0xe0, 0x20, 0x1c, 0xff, 0xf7, 0x91, 0xfb,
+ 0x06, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0x6f, 0xfb,
+ 0x04, 0x1c, 0x00, 0x2e, 0x06, 0xd0, 0x3c, 0x00,
+ 0x44, 0x61, 0x00, 0x00, 0xff, 0xf7, 0x4c, 0xfb,
+ 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, 0x01, 0x20,
+ 0x07, 0xe0, 0x00, 0x2c, 0x06, 0xd0, 0xff, 0xf7,
+ 0xef, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25,
+ 0x00, 0x20, 0x38, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0xb0, 0xb5, 0xc5, 0x68, 0x04, 0x1c, 0x0d, 0xf0,
+ 0x8f, 0xfc, 0x20, 0x7e, 0xc1, 0x07, 0x08, 0xd5,
+ 0xe1, 0x68, 0xa9, 0x42, 0x05, 0xd9, 0x22, 0x69,
+ 0x3c, 0x00, 0x80, 0x61, 0x00, 0x00, 0x91, 0x42,
+ 0x02, 0xd3, 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82,
+ 0x81, 0x07, 0x08, 0xd5, 0xe1, 0x68, 0xa9, 0x42,
+ 0x05, 0xd2, 0x22, 0x69, 0x91, 0x42, 0x02, 0xd8,
+ 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, 0x40, 0x07,
+ 0x06, 0xd5, 0xe0, 0x68, 0x21, 0x69, 0x88, 0x42,
+ 0x02, 0xd1, 0xe0, 0x8a, 0x01, 0x30, 0xe0, 0x82,
+ 0xe0, 0x8a, 0xa1, 0x8a, 0x88, 0x42, 0x0d, 0xd3,
+ 0x60, 0x7e, 0x3c, 0x00, 0xbc, 0x61, 0x00, 0x00,
+ 0x02, 0x28, 0x0b, 0xd0, 0x20, 0x68, 0xe1, 0x68,
+ 0x04, 0x22, 0x07, 0xf0, 0x65, 0xfb, 0x60, 0x7e,
+ 0x00, 0x28, 0x03, 0xd1, 0x20, 0x68, 0x08, 0xf0,
+ 0xab, 0xff, 0xb0, 0xbd, 0x00, 0x20, 0xe0, 0x82,
+ 0xb0, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c,
+ 0x0c, 0x23, 0x20, 0x49, 0x58, 0x43, 0x45, 0x18,
+ 0x00, 0x20, 0xa8, 0x60, 0x30, 0x1c, 0x06, 0xf0,
+ 0x91, 0xfe, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x61,
+ 0x00, 0x00, 0x68, 0x60, 0x33, 0xd0, 0x01, 0x20,
+ 0xa8, 0x70, 0x2c, 0x20, 0x00, 0x5d, 0x02, 0x28,
+ 0x03, 0xd1, 0x20, 0x1c, 0x03, 0xf0, 0x45, 0xfe,
+ 0x10, 0xe0, 0x61, 0x6b, 0x00, 0x29, 0x0a, 0xd0,
+ 0x01, 0x28, 0x04, 0xd1, 0x21, 0x1c, 0x28, 0x1c,
+ 0x03, 0xf0, 0x55, 0xfe, 0x06, 0xe0, 0x20, 0x1c,
+ 0x0a, 0xf0, 0x0d, 0xfc, 0x02, 0xe0, 0x20, 0x1c,
+ 0x0a, 0xf0, 0x3d, 0xfb, 0x0d, 0x48, 0x3c, 0x00,
+ 0x34, 0x62, 0x00, 0x00, 0x14, 0x38, 0x41, 0x68,
+ 0x00, 0x29, 0x10, 0xd0, 0x20, 0x1c, 0x40, 0x30,
+ 0x02, 0x8b, 0x12, 0x07, 0x92, 0x0f, 0x01, 0x2a,
+ 0x09, 0xd0, 0x80, 0x8b, 0x32, 0x02, 0x00, 0x09,
+ 0x00, 0x04, 0x10, 0x43, 0x81, 0x22, 0x02, 0x43,
+ 0x0c, 0x20, 0x0d, 0xf0, 0xb7, 0xf9, 0x0c, 0xf0,
+ 0xa5, 0xfd, 0x60, 0x64, 0x70, 0xbd, 0x00, 0x00,
+ 0x60, 0x7b, 0x01, 0x00, 0xff, 0xb5, 0x08, 0x1c,
+ 0x3c, 0x00, 0x70, 0x62, 0x00, 0x00, 0x11, 0x1c,
+ 0x0c, 0x32, 0x20, 0x24, 0x14, 0x43, 0x0c, 0x4a,
+ 0x83, 0xb0, 0x0c, 0xae, 0x52, 0x68, 0x60, 0xce,
+ 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63,
+ 0x0d, 0x23, 0x40, 0x27, 0xbb, 0x52, 0x94, 0x61,
+ 0x14, 0x84, 0x01, 0x22, 0x02, 0x92, 0x32, 0x1c,
+ 0x00, 0x90, 0x01, 0x91, 0x23, 0x1c, 0x29, 0x1c,
+ 0x03, 0x98, 0x00, 0xf0, 0x66, 0xf9, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x3c, 0x00, 0xac, 0x62, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x00, 0x27, 0x11, 0x4e, 0x1d, 0xe0, 0xe0, 0x68,
+ 0x00, 0x28, 0x70, 0x68, 0x0c, 0xd1, 0x80, 0x88,
+ 0x00, 0x07, 0x0d, 0xd1, 0x01, 0x21, 0x0c, 0x48,
+ 0xfb, 0xf7, 0x84, 0xf9, 0xc4, 0x60, 0xe8, 0x60,
+ 0x70, 0x68, 0x81, 0x88, 0x01, 0x31, 0x02, 0xe0,
+ 0x81, 0x88, 0x22, 0x89, 0x89, 0x18, 0x81, 0x80,
+ 0xe0, 0x68, 0x39, 0x1c, 0x3c, 0x00, 0xe8, 0x62,
+ 0x00, 0x00, 0x00, 0x28, 0x01, 0xd1, 0x71, 0x68,
+ 0xc9, 0x6d, 0x25, 0x1c, 0x61, 0x60, 0x04, 0x1c,
+ 0x00, 0x2c, 0xdf, 0xd1, 0xf8, 0xbd, 0xa0, 0x7e,
+ 0x01, 0x00, 0x06, 0x49, 0x10, 0xb5, 0x49, 0x68,
+ 0x00, 0x23, 0x05, 0xe0, 0x8a, 0x88, 0x04, 0x89,
+ 0x12, 0x19, 0x8a, 0x80, 0x43, 0x60, 0xc0, 0x68,
+ 0x00, 0x28, 0xf7, 0xd1, 0x10, 0xbd, 0xa0, 0x7e,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x49, 0x3c, 0x00,
+ 0x24, 0x63, 0x00, 0x00, 0x00, 0x24, 0x49, 0x68,
+ 0x0a, 0xe0, 0x8a, 0x88, 0x03, 0x89, 0xd2, 0x18,
+ 0x8a, 0x80, 0xc3, 0x68, 0x22, 0x1c, 0x00, 0x2b,
+ 0x00, 0xd1, 0xca, 0x6d, 0x42, 0x60, 0x18, 0x1c,
+ 0x00, 0x28, 0xf2, 0xd1, 0x10, 0xbd, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x01, 0x1c, 0x13, 0x48,
+ 0x10, 0xb5, 0x40, 0x68, 0x00, 0x23, 0x09, 0xe0,
+ 0x82, 0x88, 0x0c, 0x89, 0x12, 0x19, 0x82, 0x80,
+ 0x3c, 0x00, 0x60, 0x63, 0x00, 0x00, 0x4b, 0x60,
+ 0xca, 0x68, 0x00, 0x2a, 0x00, 0xd1, 0x41, 0x66,
+ 0xc9, 0x68, 0x00, 0x29, 0xf3, 0xd1, 0x01, 0x1c,
+ 0x68, 0x31, 0x81, 0x64, 0xc3, 0x64, 0x43, 0x65,
+ 0x82, 0x88, 0x08, 0x23, 0x11, 0x1c, 0x08, 0x31,
+ 0x89, 0x07, 0x89, 0x0f, 0x59, 0x1a, 0x50, 0x23,
+ 0x19, 0x52, 0x51, 0x18, 0x81, 0x80, 0x01, 0x1c,
+ 0x40, 0x6e, 0x48, 0x31, 0xc1, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x63, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x49,
+ 0x00, 0x24, 0x4b, 0x68, 0x06, 0xe0, 0xc2, 0x68,
+ 0x21, 0x1c, 0x00, 0x2a, 0x00, 0xd1, 0xd9, 0x6d,
+ 0x41, 0x60, 0x10, 0x1c, 0x00, 0x28, 0xf6, 0xd1,
+ 0x10, 0xbd, 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xfe, 0xb5, 0x06, 0x1c,
+ 0x0c, 0x48, 0x0c, 0x1c, 0x40, 0x68, 0x80, 0x21,
+ 0x81, 0x70, 0x00, 0x21, 0x3c, 0x00, 0xd8, 0x63,
+ 0x00, 0x00, 0xc1, 0x70, 0x15, 0x1c, 0x40, 0x22,
+ 0x81, 0x63, 0x11, 0x52, 0x81, 0x61, 0x01, 0x84,
+ 0x00, 0x20, 0x04, 0x22, 0x02, 0x92, 0x00, 0x90,
+ 0x01, 0x91, 0x29, 0x1c, 0x20, 0x1c, 0x1a, 0x1c,
+ 0x33, 0x1c, 0x00, 0xf0, 0xbc, 0xf8, 0xfe, 0xbd,
+ 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, 0x70, 0xb5,
+ 0x06, 0x1c, 0x17, 0x48, 0x80, 0x78, 0x02, 0x21,
+ 0x16, 0x4a, 0x88, 0x43, 0x90, 0x70, 0x3c, 0x00,
+ 0x14, 0x64, 0x00, 0x00, 0x10, 0x1c, 0x80, 0x78,
+ 0x08, 0x43, 0x11, 0x1c, 0x88, 0x70, 0x13, 0x48,
+ 0x00, 0x24, 0xc4, 0x70, 0x70, 0x20, 0xfb, 0xf7,
+ 0xd9, 0xf9, 0x11, 0x4d, 0x70, 0x21, 0x68, 0x60,
+ 0xfa, 0xf7, 0x34, 0xf8, 0x30, 0x07, 0x00, 0x0f,
+ 0x69, 0x68, 0x90, 0x30, 0xc8, 0x65, 0x0d, 0x48,
+ 0x68, 0x22, 0x08, 0x80, 0x08, 0x1c, 0x28, 0x30,
+ 0x89, 0x60, 0x48, 0x61, 0x08, 0x20, 0x08, 0x82,
+ 0x3c, 0x00, 0x50, 0x64, 0x00, 0x00, 0x08, 0x1c,
+ 0x38, 0x30, 0x48, 0x63, 0x20, 0x38, 0x48, 0x64,
+ 0x5a, 0x20, 0x50, 0x54, 0x06, 0x48, 0x08, 0x31,
+ 0x41, 0x64, 0x44, 0x65, 0x70, 0xbd, 0x00, 0x00,
+ 0x07, 0x00, 0x58, 0x00, 0x07, 0x00, 0xa0, 0x7e,
+ 0x01, 0x00, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x0a, 0x4b, 0x10, 0xb5, 0x58, 0x6d,
+ 0x0a, 0x49, 0x00, 0x22, 0x49, 0x68, 0x00, 0x24,
+ 0x4a, 0x62, 0x3c, 0x00, 0x8c, 0x64, 0x00, 0x00,
+ 0x5c, 0x65, 0x4b, 0x6e, 0x00, 0x2b, 0x01, 0xd0,
+ 0xda, 0x60, 0x4a, 0x66, 0x8b, 0x6d, 0x00, 0x2b,
+ 0x03, 0xd0, 0x0a, 0x6e, 0x00, 0x21, 0xf9, 0xf7,
+ 0x9c, 0xff, 0x10, 0xbd, 0x00, 0x30, 0x07, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5,
+ 0x08, 0x88, 0x01, 0x30, 0x08, 0x80, 0x01, 0x20,
+ 0x07, 0x49, 0x80, 0x02, 0x08, 0x60, 0x07, 0x4c,
+ 0xa2, 0x6d, 0x00, 0x2a, 0x3c, 0x00, 0xc8, 0x64,
+ 0x00, 0x00, 0x05, 0xd0, 0x05, 0x21, 0xd1, 0x20,
+ 0x0d, 0xf0, 0x6f, 0xf9, 0x01, 0x20, 0xa0, 0x65,
+ 0x10, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5,
+ 0x83, 0xb0, 0x0c, 0xae, 0x86, 0x46, 0x8c, 0x46,
+ 0x0e, 0x4a, 0x43, 0xce, 0x0f, 0xad, 0x0f, 0x1c,
+ 0x52, 0x68, 0x0c, 0x37, 0x30, 0xcd, 0x97, 0x70,
+ 0xd3, 0x70, 0x96, 0x63, 0x0d, 0x26, 0x3c, 0x00,
+ 0x04, 0x65, 0x00, 0x00, 0x40, 0x27, 0xbe, 0x52,
+ 0x05, 0x9e, 0x96, 0x61, 0x13, 0x84, 0x00, 0x22,
+ 0x02, 0x92, 0x2a, 0x1c, 0x00, 0x90, 0x01, 0x91,
+ 0x21, 0x1c, 0x60, 0x46, 0x73, 0x46, 0x00, 0xf0,
+ 0x29, 0xf8, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0xff, 0xb5, 0x10, 0x1c,
+ 0x1a, 0x1c, 0x0c, 0x1c, 0x19, 0x1c, 0x60, 0x23,
+ 0xff, 0x32, 0x13, 0x43, 0x0c, 0x4a, 0x83, 0xb0,
+ 0x3c, 0x00, 0x40, 0x65, 0x00, 0x00, 0x0c, 0xae,
+ 0x52, 0x68, 0x60, 0xce, 0x93, 0x70, 0x00, 0x23,
+ 0xd3, 0x70, 0x93, 0x63, 0x40, 0x27, 0xbb, 0x52,
+ 0x93, 0x61, 0x13, 0x84, 0x03, 0x22, 0x02, 0x92,
+ 0x01, 0x91, 0x29, 0x1c, 0x32, 0x1c, 0x00, 0x90,
+ 0x20, 0x1c, 0x03, 0x9b, 0x00, 0xf0, 0x05, 0xf8,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xa0, 0x7e,
+ 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x11, 0x48,
+ 0x1c, 0x1c, 0x3c, 0x00, 0x7c, 0x65, 0x00, 0x00,
+ 0x08, 0x9b, 0x07, 0x9f, 0x40, 0x68, 0xde, 0x00,
+ 0x81, 0x65, 0x02, 0x66, 0x00, 0x21, 0x81, 0x80,
+ 0x0d, 0x48, 0x81, 0x59, 0x20, 0x1c, 0xf9, 0xf7,
+ 0x22, 0xff, 0x0b, 0x48, 0x30, 0x18, 0x41, 0x68,
+ 0x28, 0x1c, 0xf9, 0xf7, 0x1c, 0xff, 0x07, 0x49,
+ 0x06, 0x98, 0x49, 0x68, 0x00, 0x2c, 0x88, 0x62,
+ 0x0f, 0x86, 0x00, 0xd1, 0x2c, 0x1c, 0x05, 0x48,
+ 0x4c, 0x62, 0x45, 0x65, 0x3c, 0x00, 0xb8, 0x65,
+ 0x00, 0x00, 0x01, 0x21, 0x01, 0x65, 0x01, 0x64,
+ 0xf8, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0x90, 0x52,
+ 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5,
+ 0x83, 0xb0, 0x0d, 0xae, 0x60, 0xce, 0x0c, 0x9f,
+ 0x08, 0x1c, 0x11, 0x1c, 0xd2, 0x19, 0xff, 0x32,
+ 0x40, 0x24, 0x14, 0x43, 0x0b, 0x4a, 0x52, 0x68,
+ 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63,
+ 0x40, 0x23, 0x9f, 0x52, 0x94, 0x61, 0x3c, 0x00,
+ 0xf4, 0x65, 0x00, 0x00, 0x14, 0x84, 0x02, 0x22,
+ 0x02, 0x92, 0x32, 0x1c, 0x00, 0x90, 0x01, 0x91,
+ 0x23, 0x1c, 0x29, 0x1c, 0x03, 0x98, 0xff, 0xf7,
+ 0xb5, 0xff, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xa0, 0x7e, 0x01, 0x00, 0x4c, 0x21, 0x0d, 0x4a,
+ 0x41, 0x43, 0x10, 0xb5, 0x8c, 0x18, 0x0c, 0x49,
+ 0x09, 0x78, 0x88, 0x42, 0x07, 0xd1, 0x05, 0xf0,
+ 0xc7, 0xfd, 0x0a, 0x48, 0x01, 0x88, 0x01, 0x22,
+ 0x3c, 0x00, 0x30, 0x66, 0x00, 0x00, 0x12, 0x03,
+ 0x91, 0x43, 0x01, 0x80, 0x20, 0x1c, 0x30, 0x30,
+ 0x0c, 0x23, 0xc1, 0x56, 0x40, 0x7b, 0x81, 0x42,
+ 0x02, 0xdd, 0x20, 0x8d, 0x0c, 0xf0, 0xe5, 0xfb,
+ 0x10, 0xbd, 0x58, 0xe3, 0x01, 0x00, 0x3c, 0x7c,
+ 0x01, 0x00, 0x32, 0x80, 0x07, 0x00, 0x01, 0x1c,
+ 0x60, 0x31, 0x80, 0xb5, 0xca, 0x79, 0x8b, 0x79,
+ 0x9a, 0x42, 0x07, 0xd9, 0x48, 0x7a, 0x0c, 0x23,
+ 0x07, 0x49, 0x3c, 0x00, 0x6c, 0x66, 0x00, 0x00,
+ 0x58, 0x43, 0x08, 0x5a, 0x0c, 0xf0, 0xd0, 0xfb,
+ 0x80, 0xbd, 0x20, 0x30, 0x00, 0x7b, 0x01, 0x28,
+ 0xfa, 0xd1, 0x48, 0x7a, 0x05, 0xf0, 0x40, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x1c, 0x21, 0xf9, 0xf7,
+ 0x03, 0xff, 0x03, 0x48, 0xa0, 0x80, 0xe0, 0x80,
+ 0x20, 0x81, 0x60, 0x81, 0xa0, 0x81, 0x10, 0xbd,
+ 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x66,
+ 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, 0x00, 0x20,
+ 0x83, 0xb0, 0x0d, 0x1c, 0x06, 0x2c, 0x02, 0x90,
+ 0x38, 0xd2, 0x1f, 0x4a, 0xff, 0x26, 0xc1, 0x00,
+ 0x89, 0x18, 0x89, 0x78, 0xa1, 0x42, 0x03, 0xd1,
+ 0xc0, 0x00, 0x80, 0x18, 0x46, 0x78, 0x04, 0xe0,
+ 0x01, 0x30, 0x00, 0x06, 0x00, 0x16, 0x06, 0x28,
+ 0xf1, 0xdb, 0xff, 0x2e, 0x24, 0xd0, 0x01, 0x93,
+ 0x20, 0x1c, 0x0d, 0xf0, 0xe8, 0xf9, 0x3c, 0x00,
+ 0xe4, 0x66, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd0,
+ 0x24, 0x21, 0x28, 0x1c, 0x01, 0xab, 0x02, 0xaa,
+ 0xfa, 0xf7, 0x30, 0xfe, 0x10, 0x49, 0xf0, 0x00,
+ 0x30, 0x39, 0x0f, 0x58, 0x31, 0x06, 0x09, 0x16,
+ 0x28, 0x1c, 0x05, 0x9a, 0x01, 0x9b, 0xf9, 0xf7,
+ 0x6e, 0xfe, 0x06, 0x1c, 0x10, 0xd1, 0x20, 0x1c,
+ 0x0d, 0xf0, 0xd0, 0xf9, 0x00, 0x28, 0x0b, 0xd0,
+ 0x28, 0x1c, 0x69, 0x69, 0xfa, 0xf7, 0x12, 0xfe,
+ 0x3c, 0x00, 0x20, 0x67, 0x00, 0x00, 0x02, 0x98,
+ 0x68, 0x61, 0x04, 0xe0, 0x06, 0x2c, 0x01, 0xd3,
+ 0x07, 0x26, 0x00, 0xe0, 0x08, 0x26, 0x30, 0x1c,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xcc, 0x5a,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x09, 0xf0,
+ 0x86, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c,
+ 0x09, 0xf0, 0xb5, 0xf8, 0x10, 0xbd, 0xfe, 0xb5,
+ 0x13, 0x4d, 0x04, 0x1c, 0xae, 0x69, 0x00, 0x2e,
+ 0x1c, 0xd0, 0x3c, 0x00, 0x5c, 0x67, 0x00, 0x00,
+ 0x10, 0x4f, 0x30, 0x37, 0x78, 0x68, 0x60, 0x43,
+ 0x01, 0x1c, 0x28, 0x88, 0xf9, 0xf7, 0xd2, 0xff,
+ 0x39, 0x68, 0x61, 0x43, 0x41, 0x18, 0x01, 0xa8,
+ 0x32, 0x1c, 0xf9, 0xf7, 0x37, 0xfe, 0x02, 0x98,
+ 0x29, 0x6a, 0x40, 0x18, 0x28, 0x62, 0x0b, 0xd4,
+ 0xe9, 0x69, 0x88, 0x42, 0x08, 0xd9, 0xa9, 0x69,
+ 0x40, 0x1a, 0x28, 0x62, 0x01, 0x98, 0x01, 0x30,
+ 0x01, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x67,
+ 0x00, 0x00, 0x02, 0x90, 0x01, 0x90, 0x01, 0x98,
+ 0xfe, 0xbd, 0xc8, 0x74, 0x01, 0x00, 0xf8, 0xb5,
+ 0x00, 0x28, 0x28, 0xd0, 0x00, 0x24, 0x14, 0x4d,
+ 0x00, 0xe0, 0x01, 0x34, 0x61, 0x00, 0x09, 0x19,
+ 0x49, 0x19, 0x49, 0x78, 0x00, 0x29, 0xf8, 0xd1,
+ 0x63, 0x00, 0x1b, 0x19, 0x03, 0x33, 0x07, 0x22,
+ 0x69, 0x46, 0x03, 0xf0, 0xd4, 0xfb, 0x00, 0x2c,
+ 0x0f, 0xd0, 0x00, 0x20, 0x00, 0x99, 0x3c, 0x00,
+ 0xd4, 0x67, 0x00, 0x00, 0x0a, 0xe0, 0x42, 0x00,
+ 0x12, 0x18, 0xae, 0x5c, 0x53, 0x18, 0x52, 0x19,
+ 0x5e, 0x71, 0x56, 0x78, 0x01, 0x30, 0x9e, 0x71,
+ 0x92, 0x78, 0xda, 0x71, 0xa0, 0x42, 0xf2, 0xdb,
+ 0x00, 0x98, 0x03, 0x22, 0x02, 0x30, 0x03, 0x49,
+ 0xf9, 0xf7, 0x7e, 0xfe, 0xf8, 0xbd, 0x00, 0x00,
+ 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x08, 0x1c, 0xfa, 0xf7,
+ 0x3c, 0x00, 0x10, 0x68, 0x00, 0x00, 0x9d, 0xff,
+ 0x04, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, 0xd9, 0xfe,
+ 0x21, 0x1c, 0xfa, 0xf7, 0xfc, 0xfd, 0x20, 0x1c,
+ 0xb0, 0xbd, 0xf3, 0xb5, 0x44, 0x48, 0x0c, 0x1c,
+ 0x00, 0x78, 0x81, 0xb0, 0x01, 0x28, 0x72, 0xd1,
+ 0xfa, 0xf7, 0x82, 0xf8, 0x41, 0x4d, 0xe8, 0x6a,
+ 0x41, 0x49, 0x08, 0x60, 0xe8, 0x6b, 0x48, 0x60,
+ 0x40, 0x48, 0xfa, 0xf7, 0xa6, 0xf9, 0xe8, 0x6a,
+ 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x68, 0x00, 0x00,
+ 0xfc, 0xda, 0x22, 0x1c, 0x0f, 0x20, 0x01, 0x99,
+ 0x0a, 0xf0, 0xa4, 0xf8, 0x38, 0x4d, 0x02, 0x27,
+ 0x2f, 0x63, 0x38, 0x4a, 0x64, 0x26, 0x00, 0x20,
+ 0xaa, 0x21, 0x08, 0x32, 0x13, 0x18, 0x01, 0x30,
+ 0x00, 0x04, 0x00, 0x0c, 0x64, 0x28, 0x19, 0x74,
+ 0xf8, 0xd3, 0x16, 0x81, 0x00, 0x20, 0x50, 0x60,
+ 0x10, 0x1c, 0x10, 0x30, 0x10, 0x60, 0x00, 0x25,
+ 0x17, 0x1c, 0xd2, 0x60, 0x3c, 0x00, 0x88, 0x68,
+ 0x00, 0x00, 0x08, 0xe0, 0x28, 0x1c, 0xf9, 0xf7,
+ 0xa2, 0xff, 0x41, 0x31, 0x78, 0x19, 0x01, 0x35,
+ 0x2d, 0x04, 0x2d, 0x0c, 0x01, 0x74, 0xb5, 0x42,
+ 0xf4, 0xd3, 0x26, 0x4d, 0x6f, 0x63, 0x01, 0x20,
+ 0x28, 0x63, 0x24, 0x4d, 0xe8, 0x6a, 0x00, 0x28,
+ 0xfb, 0xda, 0x0b, 0x22, 0x3b, 0x1c, 0x24, 0x4e,
+ 0x03, 0xe0, 0x01, 0x32, 0x64, 0x2a, 0x00, 0xd1,
+ 0x00, 0x22, 0x10, 0x1c, 0x0c, 0x21, 0x3c, 0x00,
+ 0xc4, 0x68, 0x00, 0x00, 0x01, 0x39, 0x75, 0x5c,
+ 0x1f, 0x18, 0x3f, 0x7c, 0xbd, 0x42, 0xf3, 0xd1,
+ 0x01, 0x38, 0x00, 0xd5, 0x63, 0x20, 0x00, 0x29,
+ 0xf4, 0xd1, 0x18, 0x4e, 0x50, 0x1c, 0xf1, 0x6b,
+ 0x1a, 0x4a, 0x10, 0x1c, 0x01, 0x38, 0xfd, 0xd1,
+ 0xf0, 0x6b, 0x88, 0x42, 0x01, 0xd0, 0x01, 0x1c,
+ 0xf7, 0xe7, 0x02, 0x27, 0x37, 0x63, 0x16, 0x4d,
+ 0x90, 0x21, 0x28, 0x1c, 0xf9, 0xf7, 0xce, 0xfd,
+ 0x3c, 0x00, 0x00, 0x69, 0x00, 0x00, 0x28, 0x1c,
+ 0x28, 0x30, 0x28, 0x60, 0x28, 0x1c, 0x10, 0x30,
+ 0x2f, 0x81, 0xe8, 0x60, 0x28, 0x1c, 0x20, 0x30,
+ 0x28, 0x61, 0x04, 0x21, 0x00, 0xe0, 0x0c, 0xe0,
+ 0x29, 0x83, 0xe8, 0x61, 0xed, 0x62, 0x75, 0x63,
+ 0x01, 0x20, 0x30, 0x63, 0x22, 0x1c, 0x89, 0x20,
+ 0x01, 0x99, 0x0a, 0xf0, 0x38, 0xf8, 0x00, 0x20,
+ 0x28, 0x63, 0xfe, 0xbd, 0x00, 0x00, 0x08, 0x57,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x69, 0x00, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x10, 0x8e, 0x01, 0x00,
+ 0x74, 0xff, 0x01, 0x00, 0x09, 0x57, 0x01, 0x00,
+ 0x20, 0x4e, 0x00, 0x00, 0xe4, 0xfe, 0x01, 0x00,
+ 0x80, 0xb5, 0x13, 0x28, 0x1e, 0xd0, 0xf0, 0x28,
+ 0x16, 0xd1, 0x09, 0xf0, 0xb5, 0xf9, 0x00, 0x28,
+ 0x13, 0xd1, 0x0d, 0xf0, 0xbf, 0xfa, 0x11, 0xf0,
+ 0x0d, 0xfc, 0x00, 0x22, 0x04, 0x21, 0xc4, 0x20,
+ 0x0c, 0xf0, 0x1c, 0xff, 0x3c, 0x00, 0x78, 0x69,
+ 0x00, 0x00, 0x09, 0x48, 0x00, 0x21, 0x00, 0x78,
+ 0x05, 0xf0, 0x3f, 0xfd, 0x05, 0xf0, 0x93, 0xf8,
+ 0x07, 0x49, 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd,
+ 0x01, 0x1c, 0x01, 0x20, 0xfa, 0xf7, 0x87, 0xfc,
+ 0x80, 0xbd, 0x00, 0xf0, 0x32, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x6a, 0x57, 0x01, 0x00, 0x3c, 0xd9,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0xf0, 0xff, 0xf9,
+ 0x0b, 0x49, 0x02, 0x24, 0x48, 0x60, 0x3c, 0x00,
+ 0xb4, 0x69, 0x00, 0x00, 0x0a, 0x48, 0x04, 0x61,
+ 0x01, 0x20, 0x77, 0x21, 0x09, 0x03, 0x08, 0x61,
+ 0x08, 0x4d, 0x68, 0x68, 0x80, 0x07, 0x02, 0xd4,
+ 0x68, 0x68, 0x20, 0x43, 0x68, 0x60, 0x09, 0xf0,
+ 0xc7, 0xf9, 0x68, 0x68, 0xa0, 0x43, 0x68, 0x60,
+ 0x00, 0x20, 0xb0, 0xbd, 0xe0, 0x60, 0x01, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00,
+ 0x80, 0xb5, 0x01, 0x23, 0x03, 0x22, 0x00, 0x21,
+ 0x3c, 0x00, 0xf0, 0x69, 0x00, 0x00, 0x02, 0x20,
+ 0x3c, 0xf0, 0xf1, 0xfa, 0x00, 0x28, 0x01, 0xd0,
+ 0xfa, 0xf7, 0x81, 0xfc, 0x80, 0xbd, 0x1c, 0xb5,
+ 0xfc, 0xf7, 0xf5, 0xfa, 0xfa, 0xf7, 0x19, 0xfe,
+ 0x01, 0xf0, 0x03, 0xf9, 0x00, 0x24, 0x21, 0x1c,
+ 0x68, 0x46, 0x01, 0xf0, 0xe2, 0xfb, 0x00, 0xab,
+ 0x18, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x02, 0x28,
+ 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, 0x0c, 0xf0,
+ 0xb2, 0xfc, 0x3c, 0x00, 0x2c, 0x6a, 0x00, 0x00,
+ 0x01, 0x34, 0x24, 0x06, 0x24, 0x16, 0x06, 0x2c,
+ 0xec, 0xdb, 0xfa, 0xf7, 0x09, 0xf9, 0xfa, 0xf7,
+ 0xe7, 0xfc, 0xfa, 0xf7, 0x33, 0xfa, 0xfa, 0xf7,
+ 0x6d, 0xfa, 0xfb, 0xf7, 0xdf, 0xff, 0x05, 0xf0,
+ 0x4d, 0xfb, 0x06, 0xf0, 0x81, 0xfc, 0x0b, 0xf0,
+ 0x7d, 0xf9, 0x07, 0xf0, 0x29, 0xfc, 0x11, 0x48,
+ 0x10, 0x21, 0x01, 0x60, 0x09, 0x01, 0x01, 0x60,
+ 0xc9, 0x02, 0x01, 0x60, 0x3c, 0x00, 0x68, 0x6a,
+ 0x00, 0x00, 0x89, 0x00, 0x01, 0x60, 0x20, 0x21,
+ 0x01, 0x60, 0x04, 0x21, 0x01, 0x60, 0x08, 0x21,
+ 0x01, 0x60, 0x40, 0x21, 0x01, 0x60, 0x80, 0x21,
+ 0x01, 0x60, 0x89, 0x00, 0x01, 0x60, 0x49, 0x00,
+ 0x01, 0x60, 0x49, 0x00, 0x01, 0x60, 0x49, 0x00,
+ 0x01, 0x60, 0xc9, 0x03, 0x01, 0x60, 0x89, 0x0b,
+ 0x01, 0x60, 0xf9, 0xf7, 0x41, 0xff, 0x1c, 0xbd,
+ 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00,
+ 0xa4, 0x6a, 0x00, 0x00, 0x80, 0xb5, 0x3b, 0xf0,
+ 0x4f, 0xf8, 0x3b, 0xf0, 0x7d, 0xf9, 0xfa, 0xf7,
+ 0x4b, 0xf9, 0x80, 0xbd, 0xf8, 0xb5, 0x00, 0x25,
+ 0x00, 0x24, 0x00, 0x22, 0x00, 0x28, 0x71, 0xd0,
+ 0x43, 0x4f, 0xb9, 0x68, 0x0b, 0x1a, 0xbb, 0x60,
+ 0xf8, 0x68, 0x39, 0x1c, 0x01, 0x30, 0xf8, 0x60,
+ 0x89, 0x6a, 0x00, 0x2b, 0x1e, 0xdc, 0x02, 0x24,
+ 0x00, 0x29, 0x06, 0xda, 0xfb, 0x69, 0x98, 0x42,
+ 0x3c, 0x00, 0xe0, 0x6a, 0x00, 0x00, 0x06, 0xdd,
+ 0x3b, 0x69, 0x98, 0x42, 0x09, 0xdd, 0x07, 0xe0,
+ 0xbb, 0x69, 0x98, 0x42, 0x01, 0xdc, 0x01, 0x24,
+ 0x03, 0xe0, 0x7b, 0x69, 0x98, 0x42, 0x00, 0xdd,
+ 0x03, 0x24, 0x78, 0x6a, 0x00, 0x28, 0x08, 0xd0,
+ 0x00, 0x20, 0x78, 0x62, 0x03, 0x2c, 0x01, 0xd1,
+ 0x02, 0x24, 0x02, 0xe0, 0x02, 0x2c, 0x00, 0xd1,
+ 0x01, 0x24, 0x2e, 0x48, 0x01, 0x2c, 0x00, 0x79,
+ 0x18, 0xd1, 0x3c, 0x00, 0x1c, 0x6b, 0x00, 0x00,
+ 0xbb, 0x78, 0x99, 0x42, 0x15, 0xda, 0x3b, 0x78,
+ 0x7b, 0x70, 0x39, 0x70, 0x01, 0x31, 0xb9, 0x62,
+ 0x01, 0xd5, 0x01, 0x31, 0xb9, 0x62, 0xb9, 0x6a,
+ 0x01, 0x25, 0x99, 0x42, 0x03, 0xd1, 0x04, 0x28,
+ 0x04, 0xd2, 0x01, 0x30, 0x00, 0xe0, 0x00, 0x20,
+ 0x38, 0x71, 0x01, 0x22, 0x00, 0x29, 0x33, 0xda,
+ 0x27, 0xe0, 0x03, 0x2c, 0x35, 0xd1, 0x00, 0x26,
+ 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, 0x58, 0x6b,
+ 0x00, 0x00, 0x1e, 0x49, 0x81, 0x40, 0x38, 0x6a,
+ 0x08, 0x18, 0x0c, 0xf0, 0x5c, 0xf8, 0x00, 0x28,
+ 0x2c, 0xd0, 0x1b, 0x48, 0x00, 0x78, 0x40, 0x07,
+ 0x05, 0xd5, 0xf8, 0x68, 0x39, 0x69, 0x88, 0x42,
+ 0x01, 0xdb, 0x03, 0x23, 0xfe, 0x56, 0xb8, 0x6a,
+ 0xb0, 0x42, 0x12, 0xdd, 0x01, 0x21, 0x79, 0x62,
+ 0x39, 0x78, 0x01, 0x25, 0x79, 0x70, 0x38, 0x70,
+ 0x01, 0x38, 0xb8, 0x62, 0x88, 0x42, 0x3c, 0x00,
+ 0x94, 0x6b, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x21,
+ 0x39, 0x71, 0x00, 0x28, 0x0c, 0xda, 0x07, 0x20,
+ 0x38, 0x71, 0x00, 0xe0, 0x12, 0xe0, 0x07, 0xe0,
+ 0x38, 0x79, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30,
+ 0x38, 0x71, 0x06, 0xe0, 0x00, 0x2a, 0x02, 0xd0,
+ 0x0c, 0xf0, 0xf8, 0xf8, 0x38, 0x62, 0x00, 0x2c,
+ 0x04, 0xd0, 0xfe, 0xf7, 0x97, 0xfd, 0x29, 0x1c,
+ 0x08, 0xf0, 0xfc, 0xfb, 0xf8, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0xd0, 0x6b, 0x00, 0x00, 0xac, 0x7e,
+ 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x1d, 0x75,
+ 0x01, 0x00, 0x80, 0xb5, 0x10, 0x68, 0x00, 0x28,
+ 0x02, 0xd0, 0x00, 0xf0, 0x0a, 0xf8, 0x80, 0xbd,
+ 0x03, 0x48, 0xc0, 0x69, 0x80, 0x68, 0x08, 0xf0,
+ 0xb2, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x84, 0x6a,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68,
+ 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7,
+ 0x7a, 0xfb, 0x3c, 0x00, 0x0c, 0x6c, 0x00, 0x00,
+ 0xe0, 0x68, 0xe1, 0x69, 0xc0, 0x68, 0x23, 0x1c,
+ 0x01, 0x4a, 0xff, 0xf7, 0xd7, 0xfb, 0x10, 0xbd,
+ 0xdd, 0x6b, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0x1c,
+ 0x0c, 0x21, 0x00, 0x20, 0xfa, 0xf7, 0xd6, 0xfc,
+ 0x04, 0x1c, 0x00, 0x68, 0x00, 0x21, 0x41, 0x60,
+ 0x01, 0x60, 0x29, 0x88, 0x01, 0x81, 0x69, 0x88,
+ 0x41, 0x81, 0x29, 0x1c, 0xff, 0x31, 0x21, 0x31,
+ 0x20, 0x1c, 0x03, 0xf0, 0x3c, 0x00, 0x48, 0x6c,
+ 0x00, 0x00, 0x77, 0xf9, 0x29, 0x1c, 0xff, 0x31,
+ 0x46, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x71, 0xf9,
+ 0x29, 0x1c, 0xff, 0x31, 0x50, 0x31, 0x20, 0x1c,
+ 0x03, 0xf0, 0x6b, 0xf9, 0x29, 0x1c, 0xff, 0x31,
+ 0x43, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x65, 0xf9,
+ 0x29, 0x1c, 0xff, 0x31, 0x63, 0x31, 0x20, 0x1c,
+ 0x03, 0xf0, 0x5f, 0xf9, 0x04, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, 0x3c, 0x00,
+ 0x84, 0x6c, 0x00, 0x00, 0xff, 0xf7, 0x8e, 0xfd,
+ 0x20, 0x1c, 0xb0, 0xbd, 0xe4, 0x62, 0x01, 0x00,
+ 0xf8, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, 0x04, 0xd1,
+ 0x05, 0x21, 0x18, 0x20, 0xfa, 0xf7, 0x02, 0xfb,
+ 0x4d, 0xe0, 0x29, 0x1c, 0x12, 0x31, 0x06, 0x22,
+ 0x60, 0x1c, 0xf9, 0xf7, 0x25, 0xfc, 0x22, 0x1c,
+ 0x30, 0x32, 0x00, 0x26, 0x00, 0x21, 0x00, 0x20,
+ 0x16, 0x70, 0x34, 0x4b, 0x1b, 0x5c, 0x2f, 0x8a,
+ 0x3c, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0xdf, 0x40,
+ 0xff, 0x07, 0x07, 0xd5, 0x17, 0x78, 0x01, 0x33,
+ 0x01, 0x37, 0x17, 0x70, 0x67, 0x18, 0x30, 0x37,
+ 0x7b, 0x70, 0x01, 0x31, 0x01, 0x30, 0x0e, 0x28,
+ 0xee, 0xdb, 0xa8, 0x7b, 0x60, 0x72, 0x10, 0x78,
+ 0x00, 0x28, 0x2b, 0xd0, 0x2a, 0x48, 0x1e, 0x21,
+ 0x09, 0x5c, 0x27, 0x1c, 0x10, 0x37, 0x21, 0x72,
+ 0x01, 0x68, 0x61, 0x81, 0xc1, 0x89, 0x21, 0x77,
+ 0x81, 0x89, 0x3c, 0x00, 0xfc, 0x6c, 0x00, 0x00,
+ 0x79, 0x73, 0xc1, 0x8a, 0xa1, 0x81, 0x01, 0x8b,
+ 0xe1, 0x81, 0x42, 0x8a, 0x21, 0x1c, 0x60, 0x31,
+ 0x4a, 0x80, 0x82, 0x8a, 0x8a, 0x80, 0x1f, 0x49,
+ 0x2c, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x09, 0xd0,
+ 0x02, 0x29, 0x0a, 0xd1, 0x01, 0x22, 0x62, 0x62,
+ 0x62, 0x72, 0x42, 0x8b, 0xa2, 0x81, 0x80, 0x8b,
+ 0xe0, 0x81, 0x03, 0xe0, 0x01, 0x21, 0x66, 0x62,
+ 0x00, 0xe0, 0x00, 0x21, 0x3c, 0x00, 0x38, 0x6d,
+ 0x00, 0x00, 0xe8, 0x7b, 0x08, 0x40, 0x01, 0xd1,
+ 0x00, 0x20, 0xf8, 0xbd, 0xa8, 0x68, 0x43, 0x1c,
+ 0x09, 0xd0, 0x22, 0x1c, 0x12, 0x32, 0x00, 0x92,
+ 0x93, 0x1d, 0x02, 0x32, 0x21, 0x1c, 0x01, 0xf0,
+ 0x9c, 0xfa, 0xa0, 0x62, 0x00, 0xe0, 0xa6, 0x62,
+ 0x68, 0x7b, 0x29, 0x1c, 0x1d, 0x31, 0x20, 0x74,
+ 0x0b, 0x48, 0x20, 0x22, 0x20, 0x62, 0x20, 0x1c,
+ 0x42, 0x30, 0xbe, 0x73, 0xf9, 0xf7, 0x3c, 0x00,
+ 0x74, 0x6d, 0x00, 0x00, 0xc1, 0xfb, 0x40, 0x34,
+ 0x26, 0x70, 0x68, 0x7e, 0x04, 0x49, 0x60, 0x70,
+ 0x68, 0x68, 0x2c, 0x31, 0x48, 0x60, 0x01, 0x20,
+ 0xda, 0xe7, 0x00, 0x00, 0x90, 0x58, 0x01, 0x00,
+ 0xc8, 0x6e, 0x01, 0x00, 0x91, 0x02, 0x01, 0x00,
+ 0x70, 0xb5, 0x16, 0x1c, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x00, 0x28, 0x06, 0xd0, 0x0c, 0x20, 0xfa, 0xf7,
+ 0x47, 0xfd, 0x30, 0xc0, 0x08, 0x38, 0x06, 0x72,
+ 0x3c, 0x00, 0xb0, 0x6d, 0x00, 0x00, 0x70, 0xbd,
+ 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x01, 0x1c,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0xd0,
+ 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0xfc, 0xf7,
+ 0xa0, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x0c, 0x79,
+ 0x01, 0x00, 0x70, 0xb5, 0x0e, 0x1c, 0x04, 0x1c,
+ 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, 0x8f, 0xfa,
+ 0x06, 0x4d, 0x28, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0xfa, 0xf7, 0x3c, 0x00, 0xec, 0x6d, 0x00, 0x00,
+ 0x89, 0xfa, 0x04, 0x48, 0x2e, 0x60, 0xc4, 0x60,
+ 0x01, 0x21, 0x01, 0x70, 0x70, 0xbd, 0x00, 0x00,
+ 0xa8, 0x7e, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00,
+ 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x68, 0x00, 0x28,
+ 0x01, 0xd1, 0xfa, 0xf7, 0x77, 0xfa, 0x05, 0x48,
+ 0x00, 0x69, 0x21, 0x68, 0xf9, 0xf7, 0xdf, 0xfa,
+ 0x00, 0x20, 0x20, 0x60, 0x10, 0xbd, 0x00, 0x00,
+ 0xa8, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0x28, 0x6e,
+ 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, 0x01, 0x20,
+ 0x05, 0x49, 0xc0, 0x06, 0x80, 0xb5, 0x08, 0x60,
+ 0x00, 0x22, 0x03, 0x21, 0x54, 0x20, 0x0c, 0xf0,
+ 0xb8, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x04, 0x21,
+ 0xc4, 0x20, 0x0c, 0xf0, 0xae, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x00, 0x88,
+ 0x02, 0x49, 0xff, 0xf7, 0xb8, 0xff, 0x3c, 0x00,
+ 0x64, 0x6e, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0x75, 0x4b, 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00,
+ 0xf8, 0xb5, 0x06, 0x1c, 0x31, 0x48, 0x00, 0x25,
+ 0xc0, 0x68, 0x0c, 0x1c, 0x00, 0x28, 0x30, 0xd0,
+ 0x2e, 0x48, 0x2f, 0x4f, 0x04, 0x30, 0x00, 0x78,
+ 0x38, 0x76, 0x2c, 0x48, 0x04, 0x30, 0x40, 0x78,
+ 0x38, 0x81, 0x00, 0x2a, 0x0b, 0xd0, 0xf9, 0xf7,
+ 0xa5, 0xfa, 0x1f, 0x20, 0xb8, 0x76, 0x20, 0x1c,
+ 0x3c, 0x00, 0xa0, 0x6e, 0x00, 0x00, 0xf9, 0xf7,
+ 0xf6, 0xf9, 0x25, 0x48, 0x04, 0x30, 0x80, 0x78,
+ 0xb8, 0x76, 0x43, 0xe0, 0x25, 0x48, 0x22, 0x49,
+ 0x84, 0x42, 0x4d, 0x69, 0x02, 0xd2, 0x6c, 0x43,
+ 0xe4, 0x0b, 0x0f, 0xe0, 0x1f, 0x48, 0x21, 0x1c,
+ 0x80, 0x6a, 0x00, 0x90, 0xf9, 0xf7, 0x23, 0xfc,
+ 0x00, 0x99, 0x02, 0x1c, 0x4a, 0x43, 0xa1, 0x1a,
+ 0x1a, 0x4a, 0x69, 0x43, 0x52, 0x6a, 0xc9, 0x0b,
+ 0x50, 0x43, 0x3c, 0x00, 0xdc, 0x6e, 0x00, 0x00,
+ 0x44, 0x18, 0x02, 0x2c, 0x01, 0xd8, 0x00, 0x20,
+ 0xf8, 0xbd, 0xf9, 0xf7, 0x7d, 0xfa, 0x1f, 0x20,
+ 0xb8, 0x76, 0x20, 0x1c, 0xf9, 0xf7, 0xae, 0xf9,
+ 0x04, 0x1c, 0x11, 0x48, 0x04, 0x30, 0x80, 0x78,
+ 0xb8, 0x76, 0x0f, 0x4f, 0x7d, 0x6a, 0xac, 0x42,
+ 0x04, 0xd2, 0x20, 0x1c, 0xff, 0xf7, 0x22, 0xfc,
+ 0x05, 0x1c, 0x12, 0xe0, 0x21, 0x1c, 0x28, 0x1c,
+ 0xf9, 0xf7, 0xfc, 0xfb, 0x3c, 0x00, 0x18, 0x6f,
+ 0x00, 0x00, 0x06, 0x1c, 0x68, 0x43, 0x20, 0x1a,
+ 0xff, 0xf7, 0x17, 0xfc, 0x05, 0x1c, 0x00, 0x24,
+ 0x04, 0xe0, 0x78, 0x6a, 0xff, 0xf7, 0x11, 0xfc,
+ 0x45, 0x19, 0x01, 0x34, 0xb4, 0x42, 0xf8, 0xd3,
+ 0x28, 0x1c, 0xd4, 0xe7, 0x00, 0x00, 0xc8, 0x74,
+ 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0xc0, 0xc6,
+ 0x2d, 0x00, 0x01, 0x1c, 0x7d, 0x20, 0x80, 0xb5,
+ 0xc0, 0x00, 0xf9, 0xf7, 0x72, 0xfb, 0x3c, 0x00,
+ 0x54, 0x6f, 0x00, 0x00, 0x02, 0x49, 0x88, 0x61,
+ 0x40, 0x08, 0xc8, 0x61, 0x80, 0xbd, 0x00, 0x00,
+ 0xc8, 0x74, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c,
+ 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x42, 0xfa,
+ 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x0a, 0xfa,
+ 0x00, 0xf0, 0x68, 0xfe, 0x10, 0xbd, 0x00, 0x00,
+ 0x85, 0x6f, 0x00, 0x00, 0x30, 0xb5, 0x0f, 0x4d,
+ 0x2a, 0x78, 0x04, 0x2a, 0x19, 0xd8, 0x00, 0x2a,
+ 0x3c, 0x00, 0x90, 0x6f, 0x00, 0x00, 0x17, 0xd0,
+ 0x00, 0x21, 0x07, 0xe0, 0x4b, 0x00, 0x5b, 0x18,
+ 0x5c, 0x19, 0x01, 0x23, 0xe4, 0x56, 0x84, 0x42,
+ 0x02, 0xda, 0x01, 0x31, 0x8a, 0x42, 0xf5, 0xdc,
+ 0x8a, 0x42, 0x00, 0xd1, 0x01, 0x39, 0x48, 0x00,
+ 0x40, 0x18, 0x40, 0x19, 0x81, 0x78, 0x02, 0x4a,
+ 0x34, 0x3a, 0x11, 0x70, 0xc0, 0x78, 0x50, 0x70,
+ 0x30, 0xbd, 0x00, 0x75, 0x01, 0x00, 0x30, 0xb5,
+ 0x11, 0x1c, 0x3c, 0x00, 0xcc, 0x6f, 0x00, 0x00,
+ 0x38, 0x31, 0x85, 0xb0, 0x91, 0x62, 0x08, 0x21,
+ 0x11, 0x86, 0x00, 0x23, 0x14, 0x1c, 0x01, 0x1c,
+ 0x53, 0x63, 0xc0, 0x68, 0x15, 0x4d, 0x0b, 0xe0,
+ 0x02, 0x68, 0xaa, 0x42, 0x06, 0xd1, 0xc2, 0x68,
+ 0xca, 0x60, 0xc3, 0x60, 0x03, 0x60, 0xfa, 0xf7,
+ 0xd1, 0xfa, 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68,
+ 0x00, 0x28, 0xf1, 0xd1, 0x22, 0x1c, 0x40, 0x32,
+ 0x08, 0x21, 0x20, 0x68, 0x3c, 0x00, 0x08, 0x70,
+ 0x00, 0x00, 0xfa, 0xf7, 0x64, 0xfb, 0x0b, 0x49,
+ 0x20, 0x1c, 0x48, 0x30, 0x02, 0x90, 0x04, 0x94,
+ 0x03, 0x91, 0xe0, 0x69, 0x82, 0x88, 0x01, 0x68,
+ 0x6e, 0x20, 0x01, 0x92, 0x00, 0x91, 0x22, 0x1c,
+ 0x56, 0x32, 0x03, 0x5d, 0x21, 0x1c, 0x28, 0x31,
+ 0x20, 0x68, 0xff, 0xf7, 0x58, 0xfa, 0x05, 0xb0,
+ 0x30, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0xd5, 0x70,
+ 0x00, 0x00, 0x1c, 0xb5, 0x07, 0x49, 0x3c, 0x00,
+ 0x44, 0x70, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x90,
+ 0x00, 0x91, 0xc0, 0x69, 0x13, 0x1c, 0x84, 0x88,
+ 0x01, 0x68, 0x10, 0x68, 0x48, 0x33, 0x22, 0x1c,
+ 0xff, 0xf7, 0x08, 0xf9, 0x1c, 0xbd, 0x00, 0x00,
+ 0xc9, 0x6f, 0x00, 0x00, 0x10, 0xb5, 0x14, 0x1c,
+ 0x18, 0x48, 0x03, 0xf0, 0x89, 0xf8, 0xa0, 0x42,
+ 0x01, 0xd0, 0xfa, 0xf7, 0x45, 0xf9, 0x04, 0x22,
+ 0x20, 0x1c, 0x40, 0x30, 0xa1, 0x6a, 0xf9, 0xf7,
+ 0x3c, 0x00, 0x80, 0x70, 0x00, 0x00, 0xbd, 0xf9,
+ 0x00, 0x28, 0x02, 0xd1, 0x01, 0x20, 0x20, 0x62,
+ 0x05, 0xe0, 0x00, 0x20, 0x20, 0x62, 0x84, 0x20,
+ 0x00, 0x5d, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c,
+ 0x09, 0xf0, 0x23, 0xfb, 0x05, 0xe0, 0x20, 0x68,
+ 0xfa, 0xf7, 0x79, 0xfa, 0x20, 0x1c, 0xfa, 0xf7,
+ 0xa4, 0xfb, 0xe0, 0x69, 0x80, 0x79, 0x06, 0x28,
+ 0x06, 0xd1, 0x20, 0x6a, 0x06, 0x49, 0x00, 0x28,
+ 0x03, 0xd0, 0x3c, 0x00, 0xbc, 0x70, 0x00, 0x00,
+ 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x10, 0xbd,
+ 0x48, 0x69, 0x01, 0x30, 0x48, 0x61, 0x10, 0xbd,
+ 0xa0, 0x6a, 0x01, 0x00, 0x28, 0x61, 0x01, 0x00,
+ 0x1c, 0xb5, 0x14, 0x1c, 0x15, 0x48, 0x03, 0xf0,
+ 0x51, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7,
+ 0x0d, 0xf9, 0x20, 0x1c, 0x4f, 0x30, 0x02, 0x79,
+ 0x41, 0x79, 0x00, 0xab, 0x12, 0x02, 0x11, 0x43,
+ 0xc2, 0x78, 0x12, 0x04, 0x3c, 0x00, 0xf8, 0x70,
+ 0x00, 0x00, 0x11, 0x43, 0x82, 0x78, 0x12, 0x06,
+ 0x11, 0x43, 0x00, 0x91, 0x01, 0x78, 0x40, 0x78,
+ 0x09, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c,
+ 0x69, 0x46, 0x06, 0xf0, 0x3c, 0xf9, 0x00, 0x28,
+ 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, 0xe3, 0xfa,
+ 0x1c, 0xbd, 0x20, 0x68, 0xfa, 0xf7, 0x39, 0xfa,
+ 0x20, 0x1c, 0xfa, 0xf7, 0x64, 0xfb, 0xf7, 0xe7,
+ 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x3c, 0x00,
+ 0x34, 0x71, 0x00, 0x00, 0xbc, 0xb5, 0x1f, 0x4d,
+ 0x14, 0x1c, 0x28, 0x1c, 0xdc, 0x30, 0x03, 0xf0,
+ 0x1f, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7,
+ 0xdb, 0xf8, 0xa0, 0x6c, 0x00, 0xab, 0x02, 0x78,
+ 0x81, 0x78, 0x12, 0x02, 0x11, 0x43, 0x02, 0x79,
+ 0x12, 0x04, 0x11, 0x43, 0x42, 0x79, 0x12, 0x06,
+ 0x11, 0x43, 0x00, 0x91, 0x81, 0x79, 0xc0, 0x79,
+ 0x00, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c,
+ 0x3c, 0x00, 0x70, 0x71, 0x00, 0x00, 0x69, 0x46,
+ 0x06, 0xf0, 0x0b, 0xf9, 0x00, 0x28, 0x17, 0xd0,
+ 0x01, 0x28, 0x0e, 0xd1, 0xed, 0x6c, 0x00, 0x2d,
+ 0x0b, 0xd0, 0x80, 0x20, 0x02, 0x5d, 0xe0, 0x6c,
+ 0x01, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x00, 0x21,
+ 0x60, 0x68, 0x6b, 0x46, 0x0a, 0x30, 0xf9, 0xf7,
+ 0x23, 0xf9, 0x20, 0x68, 0xfa, 0xf7, 0xfb, 0xf9,
+ 0x20, 0x1c, 0xfa, 0xf7, 0x26, 0xfb, 0xbc, 0xbd,
+ 0x20, 0x1c, 0x3c, 0x00, 0xac, 0x71, 0x00, 0x00,
+ 0x00, 0xf0, 0x8e, 0xfe, 0xfa, 0xe7, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0xbc, 0xb5, 0x04, 0x1c,
+ 0x40, 0x6a, 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0,
+ 0x60, 0x68, 0x00, 0x8b, 0x05, 0x07, 0x2d, 0x0f,
+ 0x22, 0x1c, 0x40, 0x32, 0x08, 0x21, 0x20, 0x68,
+ 0xfa, 0xf7, 0x7e, 0xfa, 0xa1, 0x68, 0x01, 0x95,
+ 0x00, 0x91, 0x21, 0x1c, 0x22, 0x1c, 0x60, 0x32,
+ 0x20, 0x68, 0x50, 0x31, 0x3c, 0x00, 0xe8, 0x71,
+ 0x00, 0x00, 0x0d, 0x1c, 0xe3, 0x68, 0x09, 0xf0,
+ 0xe2, 0xff, 0xe0, 0x69, 0x80, 0x6b, 0x00, 0x28,
+ 0x03, 0xd1, 0xfe, 0xf7, 0xe8, 0xfa, 0x00, 0x28,
+ 0x01, 0xd0, 0x18, 0x20, 0x00, 0xe0, 0x10, 0x20,
+ 0x06, 0x49, 0x01, 0x94, 0x00, 0x91, 0xe1, 0x69,
+ 0x08, 0x23, 0x09, 0x68, 0x0a, 0x18, 0x21, 0x1c,
+ 0x28, 0x31, 0x28, 0x1c, 0xff, 0xf7, 0x87, 0xf9,
+ 0xbc, 0xbd, 0x35, 0x71, 0x00, 0x00, 0x3c, 0x00,
+ 0x24, 0x72, 0x00, 0x00, 0x10, 0xb5, 0x10, 0x1c,
+ 0x38, 0x30, 0x90, 0x62, 0x04, 0x20, 0x10, 0x86,
+ 0x00, 0x20, 0x50, 0x63, 0x10, 0x68, 0x14, 0x1c,
+ 0x40, 0x32, 0x04, 0x21, 0xfa, 0xf7, 0x4a, 0xfa,
+ 0x23, 0x1c, 0x21, 0x1c, 0x28, 0x31, 0x02, 0x4a,
+ 0x20, 0x68, 0xff, 0xf7, 0xbd, 0xf8, 0x10, 0xbd,
+ 0x65, 0x70, 0x00, 0x00, 0x0e, 0xb5, 0xc3, 0x69,
+ 0x02, 0x1c, 0x98, 0x88, 0x05, 0x49, 0x02, 0x92,
+ 0x3c, 0x00, 0x60, 0x72, 0x00, 0x00, 0x01, 0x91,
+ 0x00, 0x90, 0x1b, 0x68, 0x10, 0x68, 0x91, 0x69,
+ 0x03, 0x22, 0xff, 0xf7, 0xae, 0xf9, 0x0e, 0xbd,
+ 0x00, 0x00, 0x25, 0x72, 0x00, 0x00, 0x0e, 0xb5,
+ 0x02, 0x1c, 0x06, 0x49, 0x10, 0x20, 0x00, 0x90,
+ 0x02, 0x92, 0x13, 0x1c, 0x01, 0x91, 0x10, 0x68,
+ 0x00, 0x22, 0x70, 0x33, 0x00, 0x21, 0xff, 0xf7,
+ 0x9c, 0xf9, 0x0e, 0xbd, 0x00, 0x00, 0x25, 0x72,
+ 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x72, 0x00, 0x00,
+ 0x10, 0xb5, 0x03, 0x1c, 0x00, 0x21, 0x00, 0x20,
+ 0x08, 0x4c, 0x00, 0xe0, 0x01, 0x31, 0xca, 0x00,
+ 0xa2, 0x58, 0x9a, 0x42, 0x02, 0xd0, 0x0b, 0x29,
+ 0xf8, 0xd3, 0x10, 0xbd, 0x0b, 0x29, 0xfc, 0xd2,
+ 0xc9, 0x00, 0x09, 0x19, 0x00, 0x20, 0x08, 0x71,
+ 0x01, 0x20, 0x10, 0xbd, 0x38, 0x58, 0x01, 0x00,
+ 0x8c, 0xb5, 0x00, 0xab, 0x86, 0x21, 0x19, 0x80,
+ 0x01, 0x1c, 0x04, 0x48, 0x3c, 0x00, 0xd8, 0x72,
+ 0x00, 0x00, 0x06, 0xf0, 0xee, 0xfe, 0x01, 0x90,
+ 0x68, 0x46, 0x06, 0xf0, 0xfa, 0xf8, 0x8c, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x48, 0x0d, 0x49, 0x94, 0xb0,
+ 0x04, 0x80, 0x06, 0x22, 0x18, 0x31, 0x0c, 0x30,
+ 0xf9, 0xf7, 0xfb, 0xf8, 0x01, 0xa8, 0x07, 0xf0,
+ 0xa2, 0xf8, 0x0c, 0x20, 0x09, 0xa9, 0x48, 0x72,
+ 0x00, 0xab, 0x1c, 0x80, 0x02, 0x21, 0x3c, 0x00,
+ 0x14, 0x73, 0x00, 0x00, 0x68, 0x46, 0x03, 0xf0,
+ 0xdb, 0xff, 0x04, 0x90, 0x01, 0xa8, 0x06, 0xf0,
+ 0xd1, 0xf8, 0x14, 0xb0, 0x10, 0xbd, 0x00, 0x00,
+ 0x58, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0,
+ 0x45, 0xfe, 0x05, 0xf0, 0x53, 0xfa, 0x80, 0xbd,
+ 0x10, 0xb5, 0x19, 0x4c, 0xe0, 0x68, 0x00, 0x28,
+ 0x06, 0xd0, 0x61, 0x1c, 0x08, 0x78, 0x00, 0x28,
+ 0x03, 0xd1, 0x48, 0x78, 0xff, 0x30, 0x08, 0x70,
+ 0x3c, 0x00, 0x50, 0x73, 0x00, 0x00, 0x10, 0xbd,
+ 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x08, 0x70,
+ 0xa1, 0x68, 0x00, 0x29, 0xf7, 0xd0, 0x00, 0x28,
+ 0xf5, 0xd1, 0x0e, 0x48, 0x54, 0x30, 0x81, 0x78,
+ 0x00, 0x29, 0x03, 0xd1, 0xc1, 0x78, 0xff, 0x31,
+ 0x81, 0x70, 0x10, 0xbd, 0xff, 0x31, 0x09, 0x06,
+ 0x09, 0x0e, 0x81, 0x70, 0xf9, 0xd1, 0xa1, 0x69,
+ 0x00, 0x29, 0xf6, 0xd0, 0x80, 0x88, 0x03, 0xf0,
+ 0xd0, 0xfb, 0x3c, 0x00, 0x8c, 0x73, 0x00, 0x00,
+ 0x04, 0x4a, 0x01, 0x1c, 0x5c, 0x32, 0x0c, 0x32,
+ 0x05, 0xca, 0x80, 0x1a, 0xa2, 0x69, 0xf9, 0xf7,
+ 0x1f, 0xf8, 0x10, 0xbd, 0x44, 0x7d, 0x01, 0x00,
+ 0xf0, 0xb5, 0x04, 0x1c, 0x40, 0x68, 0x00, 0x25,
+ 0x01, 0x79, 0x00, 0x22, 0x85, 0xb0, 0xc9, 0x07,
+ 0xcb, 0x17, 0x69, 0x49, 0x01, 0x33, 0x89, 0x6a,
+ 0x10, 0x29, 0x05, 0xd3, 0x66, 0x49, 0xc0, 0x39,
+ 0x08, 0x6b, 0x01, 0x30, 0x3c, 0x00, 0xc8, 0x73,
+ 0x00, 0x00, 0x08, 0x63, 0x8e, 0xe0, 0x21, 0x68,
+ 0x0e, 0x68, 0xf6, 0x78, 0xb7, 0x06, 0xff, 0x0f,
+ 0xb6, 0x09, 0x00, 0x2b, 0x04, 0x97, 0x06, 0xd0,
+ 0x63, 0x69, 0x1f, 0x1c, 0x1b, 0x6a, 0x50, 0x37,
+ 0x9f, 0x42, 0x00, 0xd1, 0x01, 0x25, 0x00, 0x2d,
+ 0x02, 0xd0, 0x63, 0x69, 0x1b, 0x6a, 0x04, 0xe0,
+ 0x3c, 0x23, 0x59, 0x4f, 0x73, 0x43, 0xdb, 0x19,
+ 0x04, 0x33, 0xe3, 0x61, 0x9f, 0x88, 0x3c, 0x00,
+ 0x04, 0x74, 0x00, 0x00, 0x00, 0x2f, 0x70, 0xd0,
+ 0x9b, 0x79, 0x02, 0x2b, 0x6e, 0xd0, 0x04, 0x2b,
+ 0x17, 0xd0, 0x06, 0x2b, 0x69, 0xd1, 0x08, 0x68,
+ 0xa0, 0x61, 0x08, 0x89, 0x04, 0x38, 0x08, 0x81,
+ 0x20, 0x68, 0x01, 0x68, 0x04, 0x31, 0x01, 0x60,
+ 0x4e, 0x49, 0x00, 0x29, 0x5d, 0xd0, 0x04, 0x9f,
+ 0xba, 0x42, 0x5a, 0xd1, 0x49, 0x48, 0x22, 0x1c,
+ 0x1c, 0x30, 0x02, 0xf0, 0x65, 0xfe, 0x05, 0xb0,
+ 0x3c, 0x00, 0x40, 0x74, 0x00, 0x00, 0xf0, 0xbd,
+ 0x09, 0x68, 0x25, 0x1c, 0xca, 0x79, 0x40, 0x35,
+ 0x26, 0x1c, 0xea, 0x73, 0x8b, 0x79, 0x22, 0x1c,
+ 0x50, 0x32, 0x13, 0x70, 0x4b, 0x79, 0x60, 0x36,
+ 0x53, 0x70, 0x0b, 0x79, 0x93, 0x70, 0x4b, 0x78,
+ 0xd3, 0x70, 0x09, 0x78, 0x11, 0x71, 0x00, 0x21,
+ 0x29, 0x72, 0x16, 0x21, 0xb1, 0x73, 0x61, 0x6a,
+ 0x00, 0x29, 0x06, 0xd0, 0x01, 0x8b, 0x09, 0x07,
+ 0x09, 0x0f, 0x3c, 0x00, 0x7c, 0x74, 0x00, 0x00,
+ 0x29, 0x72, 0xb1, 0x81, 0x18, 0x21, 0xb1, 0x73,
+ 0x01, 0x1c, 0x0a, 0x31, 0x20, 0x1c, 0x06, 0x22,
+ 0x49, 0x30, 0xf9, 0xf7, 0x33, 0xf8, 0x60, 0x68,
+ 0x14, 0x22, 0x01, 0x88, 0xe9, 0x82, 0x01, 0x1d,
+ 0x20, 0x1c, 0x58, 0x30, 0xf9, 0xf7, 0x2a, 0xf8,
+ 0xe8, 0x8a, 0x30, 0x49, 0x08, 0x40, 0x01, 0x21,
+ 0x89, 0x03, 0x08, 0x43, 0xe8, 0x82, 0x70, 0x89,
+ 0x0f, 0x21, 0x08, 0x40, 0x3c, 0x00, 0xb8, 0x74,
+ 0x00, 0x00, 0x70, 0x81, 0x20, 0x68, 0x01, 0x89,
+ 0x08, 0x39, 0x01, 0x81, 0x20, 0x68, 0x01, 0x68,
+ 0x08, 0x31, 0x01, 0x60, 0x08, 0x21, 0x00, 0x20,
+ 0xfa, 0xf7, 0x83, 0xf8, 0x05, 0x1c, 0x02, 0x68,
+ 0x20, 0x68, 0x08, 0x21, 0xfa, 0xf7, 0xfb, 0xf8,
+ 0x20, 0x68, 0xfa, 0xf7, 0x74, 0xf8, 0x21, 0x49,
+ 0xc5, 0x60, 0x2f, 0xe0, 0x30, 0xe0, 0xff, 0xe7,
+ 0x21, 0x68, 0x60, 0x68, 0x0a, 0x68, 0x3c, 0x00,
+ 0xf4, 0x74, 0x00, 0x00, 0x80, 0x23, 0xa2, 0x64,
+ 0x1e, 0x55, 0xe5, 0x64, 0x55, 0x79, 0x13, 0x79,
+ 0x2d, 0x02, 0x5b, 0x19, 0x95, 0x79, 0x2d, 0x04,
+ 0x5b, 0x19, 0xd5, 0x79, 0x2d, 0x06, 0x5b, 0x19,
+ 0x95, 0x78, 0x12, 0x78, 0x12, 0x02, 0xaa, 0x18,
+ 0x15, 0x04, 0x0a, 0x89, 0x2d, 0x0c, 0x08, 0x3a,
+ 0x0a, 0x81, 0x21, 0x68, 0x0a, 0x68, 0x08, 0x32,
+ 0x0a, 0x60, 0xe1, 0x69, 0x02, 0x1c, 0x0a, 0x32,
+ 0x3c, 0x00, 0x30, 0x75, 0x00, 0x00, 0x01, 0xa8,
+ 0x09, 0x68, 0x0b, 0xf0, 0x3e, 0xf9, 0xe0, 0x69,
+ 0x2b, 0x1c, 0x01, 0x68, 0x20, 0x1c, 0x70, 0x30,
+ 0x01, 0xaa, 0x0b, 0xf0, 0x86, 0xf9, 0x09, 0x49,
+ 0x01, 0x22, 0x6d, 0xe7, 0x20, 0x68, 0xfa, 0xf7,
+ 0x22, 0xf8, 0x20, 0x1c, 0xfa, 0xf7, 0x4d, 0xf9,
+ 0x70, 0xe7, 0x84, 0x6a, 0x01, 0x00, 0x68, 0x61,
+ 0x01, 0x00, 0x55, 0x72, 0x00, 0x00, 0x8f, 0xc7,
+ 0xff, 0xff, 0x3c, 0x00, 0x6c, 0x75, 0x00, 0x00,
+ 0x41, 0x70, 0x00, 0x00, 0x79, 0x72, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x82, 0x20, 0xf9, 0xf7,
+ 0x93, 0xfe, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0xc0, 0x68, 0xf9, 0xf7, 0xfa, 0xff,
+ 0x01, 0x20, 0x80, 0xbd, 0x3c, 0x00, 0xa8, 0x75,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0xff, 0x20,
+ 0xf9, 0xf7, 0x79, 0xfe, 0x80, 0xbd, 0x70, 0x47,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x20,
+ 0x70, 0x47, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x06, 0x21, 0x99, 0x20,
+ 0xf9, 0xf7, 0x65, 0xfe, 0x80, 0xbd, 0xb0, 0xb5,
+ 0x00, 0x25, 0x01, 0x29, 0x12, 0x4c, 0x3c, 0x00,
+ 0xe4, 0x75, 0x00, 0x00, 0x0f, 0xd1, 0x0a, 0xf0,
+ 0x0f, 0xfc, 0x00, 0x28, 0x1d, 0xd0, 0x61, 0x78,
+ 0x3c, 0x23, 0x59, 0x43, 0x09, 0x19, 0x04, 0x31,
+ 0x01, 0x62, 0x61, 0x1c, 0x41, 0x62, 0x84, 0x62,
+ 0x04, 0x1c, 0x50, 0x34, 0x06, 0xe0, 0x00, 0x29,
+ 0x0f, 0xd1, 0x3c, 0x20, 0x50, 0x43, 0x25, 0x70,
+ 0x04, 0x19, 0x04, 0x34, 0x00, 0x2c, 0x08, 0xd0,
+ 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x21,
+ 0x3c, 0x00, 0x20, 0x76, 0x00, 0x00, 0xf8, 0xf7,
+ 0x18, 0xff, 0xa5, 0x80, 0x07, 0x20, 0xa0, 0x71,
+ 0xb0, 0xbd, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x00, 0x21, 0x01, 0xf0, 0x41, 0xfc,
+ 0x60, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x21, 0x68,
+ 0x01, 0x60, 0x20, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0x61, 0x68, 0x41, 0x60, 0x12, 0x4e, 0x70, 0x68,
+ 0xa0, 0x42, 0x01, 0xd1, 0x60, 0x68, 0x70, 0x60,
+ 0xe0, 0x68, 0x3c, 0x00, 0x5c, 0x76, 0x00, 0x00,
+ 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x25, 0x06, 0xe0,
+ 0xe0, 0x68, 0xe9, 0x00, 0x41, 0x18, 0x14, 0x20,
+ 0x0b, 0xf0, 0xe2, 0xff, 0x01, 0x35, 0x30, 0x88,
+ 0x85, 0x42, 0xf5, 0xdb, 0x06, 0x21, 0x20, 0x1c,
+ 0x44, 0x30, 0xf8, 0xf7, 0xe9, 0xfe, 0x20, 0x6b,
+ 0x00, 0x28, 0x01, 0xd0, 0xf9, 0xf7, 0x86, 0xff,
+ 0xe0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xfa, 0xf7,
+ 0xaf, 0xf8, 0x70, 0xbd, 0x3c, 0x00, 0x98, 0x76,
+ 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0xf0, 0xb5,
+ 0x1d, 0x4f, 0x05, 0x9d, 0x3f, 0x68, 0x01, 0x26,
+ 0x1c, 0x1c, 0x33, 0x1c, 0x00, 0x2f, 0x00, 0xd0,
+ 0x2b, 0x1c, 0x1d, 0x06, 0x2d, 0x0e, 0x00, 0x29,
+ 0x06, 0xd0, 0x11, 0x78, 0x0e, 0x23, 0x16, 0x4f,
+ 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, 0x10, 0xe0,
+ 0x21, 0x78, 0x00, 0x29, 0x13, 0xd0, 0xff, 0x31,
+ 0x0d, 0xe0, 0x01, 0x29, 0x01, 0xd9, 0x3c, 0x00,
+ 0xd4, 0x76, 0x00, 0x00, 0x01, 0x31, 0x11, 0x70,
+ 0x11, 0x78, 0x0e, 0x23, 0x0f, 0x4f, 0x49, 0x08,
+ 0x11, 0x70, 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43,
+ 0xdb, 0x19, 0x59, 0x5c, 0x21, 0x70, 0x21, 0x78,
+ 0x00, 0x29, 0x02, 0xd1, 0x11, 0x78, 0x00, 0x29,
+ 0xea, 0xd1, 0x09, 0x48, 0xc0, 0x68, 0x00, 0x28,
+ 0x05, 0xd0, 0x21, 0x78, 0x30, 0x1c, 0x00, 0x29,
+ 0x00, 0xd1, 0x00, 0x20, 0xf0, 0xbd, 0x01, 0x20,
+ 0x3c, 0x00, 0x10, 0x77, 0x00, 0x00, 0xf0, 0xbd,
+ 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x24, 0x67,
+ 0x01, 0x00, 0x5c, 0x67, 0x01, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x84, 0x46, 0x00, 0x20, 0xf0, 0xb5,
+ 0x00, 0x29, 0x09, 0xd0, 0x11, 0x78, 0x1a, 0x4e,
+ 0xb1, 0x70, 0x19, 0x4e, 0xb1, 0x78, 0x71, 0x70,
+ 0x31, 0x70, 0x01, 0x21, 0x31, 0x61, 0x27, 0xe0,
+ 0x16, 0x4e, 0x01, 0x23, 0xf1, 0x56, 0x63, 0x46,
+ 0x5f, 0x68, 0x3c, 0x00, 0x4c, 0x77, 0x00, 0x00,
+ 0x00, 0x23, 0xf6, 0x56, 0x01, 0x25, 0xcc, 0x0f,
+ 0xb7, 0x42, 0x00, 0xd9, 0x00, 0x25, 0x00, 0x2c,
+ 0x01, 0xd0, 0x00, 0x2d, 0xe8, 0xd1, 0x0e, 0x4f,
+ 0x3b, 0x69, 0x00, 0x2b, 0x03, 0xd0, 0x00, 0x2d,
+ 0x01, 0xd1, 0x16, 0x70, 0x02, 0xe0, 0x1c, 0x43,
+ 0x01, 0xd1, 0x11, 0x70, 0x01, 0x20, 0x01, 0x24,
+ 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x24, 0x3c, 0x61,
+ 0x00, 0x2c, 0x02, 0xd0, 0x3c, 0x00, 0x88, 0x77,
+ 0x00, 0x00, 0x71, 0x1c, 0x39, 0x70, 0x01, 0xe0,
+ 0xff, 0x31, 0x79, 0x70, 0x00, 0x28, 0xd5, 0xd0,
+ 0x01, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x90, 0xb5, 0x0a, 0x4c, 0x00, 0x20,
+ 0x93, 0xb0, 0x20, 0x61, 0x03, 0x90, 0x68, 0x46,
+ 0x00, 0x21, 0x08, 0xf0, 0x84, 0xfd, 0x20, 0x7a,
+ 0x02, 0x28, 0x01, 0xd1, 0xe0, 0x6b, 0x00, 0xe0,
+ 0x20, 0x6c, 0xe0, 0x61, 0x01, 0x20, 0x3c, 0x00,
+ 0xc4, 0x77, 0x00, 0x00, 0x08, 0xf0, 0x8a, 0xfd,
+ 0x13, 0xb0, 0x90, 0xbd, 0xf4, 0x6e, 0x01, 0x00,
+ 0xf7, 0xb5, 0x05, 0x1c, 0x88, 0x88, 0x0c, 0x1c,
+ 0x82, 0xb0, 0x1f, 0x4f, 0x00, 0x28, 0x00, 0xd1,
+ 0x00, 0x27, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1,
+ 0xf9, 0xf7, 0x8a, 0xfd, 0x1b, 0x48, 0x3b, 0x1c,
+ 0x00, 0x68, 0x21, 0x1c, 0x02, 0x68, 0x28, 0x1c,
+ 0x00, 0x92, 0x04, 0x9a, 0xfe, 0xf7, 0x3c, 0xf8,
+ 0x3c, 0x00, 0x00, 0x78, 0x00, 0x00, 0x06, 0x1c,
+ 0x22, 0xd0, 0x03, 0x21, 0x04, 0x98, 0x02, 0xf0,
+ 0xb8, 0xff, 0x00, 0x28, 0x1b, 0xd0, 0x80, 0x78,
+ 0x01, 0x21, 0x03, 0xf0, 0xe4, 0xff, 0xa0, 0x88,
+ 0xa1, 0x8e, 0x48, 0x43, 0x00, 0x04, 0x0f, 0x49,
+ 0x00, 0x0c, 0x08, 0x80, 0x03, 0xf0, 0x81, 0xf9,
+ 0x01, 0x22, 0x00, 0x2d, 0x00, 0xd1, 0x00, 0x22,
+ 0x01, 0x1c, 0x0e, 0x20, 0x0b, 0xf0, 0xc9, 0xfe,
+ 0x00, 0x2f, 0x3c, 0x00, 0x3c, 0x78, 0x00, 0x00,
+ 0x08, 0xd1, 0x00, 0x21, 0x28, 0x1c, 0x02, 0xf0,
+ 0xbd, 0xfc, 0x03, 0xe0, 0x00, 0x26, 0x28, 0x1c,
+ 0x00, 0xf0, 0x0a, 0xf8, 0x30, 0x1c, 0x05, 0xb0,
+ 0xf0, 0xbd, 0x00, 0x00, 0xc1, 0xa1, 0x00, 0x00,
+ 0xe4, 0x65, 0x01, 0x00, 0xa8, 0x7c, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0xfe, 0xf7, 0x38, 0xf8,
+ 0x01, 0x21, 0x00, 0x2c, 0x00, 0xd1, 0x00, 0x21,
+ 0x0e, 0x20, 0x0b, 0xf0, 0x3c, 0x00, 0x78, 0x78,
+ 0x00, 0x00, 0xdd, 0xfe, 0x10, 0xbd, 0xf8, 0xb5,
+ 0x07, 0x1c, 0x0b, 0xf0, 0x94, 0xfa, 0xfd, 0xf7,
+ 0xbc, 0xfe, 0x00, 0x26, 0x02, 0x28, 0x1e, 0x4d,
+ 0x01, 0xd0, 0x2e, 0x70, 0xf8, 0xbd, 0xfd, 0xf7,
+ 0x3e, 0xf8, 0x04, 0x1c, 0xf9, 0xf7, 0x59, 0xfc,
+ 0x00, 0x28, 0x14, 0xd0, 0xfd, 0xf7, 0x77, 0xf8,
+ 0x00, 0x28, 0x10, 0xd0, 0x02, 0xf0, 0xf9, 0xfb,
+ 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, 0x3c, 0x00,
+ 0xb4, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x15, 0x4c,
+ 0x33, 0x1c, 0x21, 0x1c, 0x07, 0x22, 0x16, 0x20,
+ 0x0b, 0xf0, 0x66, 0xff, 0x68, 0x78, 0x80, 0x21,
+ 0x08, 0x43, 0x68, 0x70, 0x02, 0xf0, 0x0a, 0xfc,
+ 0x00, 0x28, 0xde, 0xd1, 0x28, 0x78, 0x80, 0x07,
+ 0xdb, 0xd4, 0xfd, 0xf7, 0x23, 0xf9, 0x00, 0x28,
+ 0x05, 0xd1, 0x28, 0x78, 0xc0, 0x07, 0x02, 0xd5,
+ 0xfd, 0xf7, 0x42, 0xf8, 0xd1, 0xe7, 0x02, 0xf0,
+ 0x3c, 0x00, 0xf0, 0x78, 0x00, 0x00, 0xcd, 0xfb,
+ 0x00, 0x28, 0xcd, 0xd0, 0x28, 0x78, 0x02, 0x21,
+ 0x08, 0x43, 0x28, 0x70, 0x21, 0x1c, 0x38, 0x1c,
+ 0xfd, 0xf7, 0xc1, 0xf8, 0xc4, 0xe7, 0x60, 0x6c,
+ 0x01, 0x00, 0x71, 0x02, 0x00, 0x00, 0x10, 0xb5,
+ 0x12, 0x4c, 0x01, 0x20, 0x20, 0x70, 0xfe, 0xf7,
+ 0xf0, 0xf9, 0x01, 0x21, 0xa0, 0x68, 0xfb, 0xf7,
+ 0xf4, 0xfe, 0xa0, 0x68, 0x03, 0xf0, 0x87, 0xff,
+ 0x0d, 0x48, 0x3c, 0x00, 0x2c, 0x79, 0x00, 0x00,
+ 0xa1, 0x68, 0x07, 0xf0, 0x23, 0xfd, 0xfb, 0xf7,
+ 0x55, 0xff, 0xe0, 0x68, 0x00, 0x28, 0x0d, 0xd0,
+ 0x09, 0x49, 0x06, 0x20, 0x0a, 0xf0, 0x24, 0xfd,
+ 0x08, 0x49, 0x05, 0x20, 0x0a, 0xf0, 0x20, 0xfd,
+ 0xfb, 0xf7, 0x6e, 0xff, 0x00, 0x28, 0x01, 0xd0,
+ 0x05, 0xf0, 0xf8, 0xfc, 0x10, 0xbd, 0x00, 0x00,
+ 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x79,
+ 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, 0xf0, 0xb5,
+ 0x24, 0x4d, 0x23, 0x4c, 0x68, 0x7c, 0x20, 0x3c,
+ 0x9b, 0xb0, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x28,
+ 0x03, 0xd8, 0x20, 0x89, 0x01, 0x38, 0x20, 0x81,
+ 0x37, 0xe0, 0x00, 0x27, 0x6f, 0x74, 0x34, 0xe0,
+ 0x1c, 0x4e, 0x68, 0x22, 0x14, 0x36, 0x31, 0x1c,
+ 0x0c, 0x31, 0x01, 0xa8, 0xf8, 0xf7, 0x09, 0xfe,
+ 0x18, 0x48, 0x33, 0x89, 0x01, 0x21, 0x3c, 0x00,
+ 0xa4, 0x79, 0x00, 0x00, 0x44, 0x30, 0x0a, 0x1c,
+ 0x00, 0x2b, 0x00, 0x7b, 0x00, 0xd1, 0x02, 0x1c,
+ 0x12, 0x06, 0x12, 0x0e, 0x0d, 0xaf, 0x3a, 0x70,
+ 0x94, 0x46, 0xaa, 0x7b, 0x93, 0x19, 0x30, 0x33,
+ 0x5b, 0x7b, 0x7b, 0x70, 0xea, 0x73, 0x01, 0x32,
+ 0x12, 0x06, 0x12, 0x0e, 0x00, 0x27, 0x82, 0x42,
+ 0xaa, 0x73, 0x01, 0xd3, 0xaf, 0x73, 0x04, 0xe0,
+ 0x62, 0x46, 0x01, 0x2a, 0x01, 0xd1, 0x77, 0x60,
+ 0x3c, 0x00, 0xe0, 0x79, 0x00, 0x00, 0x00, 0xe0,
+ 0x71, 0x60, 0x06, 0x48, 0x07, 0x4a, 0x80, 0x38,
+ 0x81, 0x67, 0x42, 0x67, 0x68, 0x22, 0x01, 0xa9,
+ 0xf8, 0xf7, 0xdd, 0xfd, 0x27, 0x81, 0x08, 0xf0,
+ 0x12, 0xfd, 0x1b, 0xb0, 0xf0, 0xbd, 0x84, 0x66,
+ 0x01, 0x00, 0xe9, 0x2e, 0x00, 0x00, 0xf1, 0xb5,
+ 0x86, 0xb0, 0x06, 0x99, 0x00, 0x20, 0x88, 0x61,
+ 0x06, 0x98, 0x84, 0x68, 0x80, 0x8d, 0x65, 0x68,
+ 0x01, 0x28, 0x3c, 0x00, 0x1c, 0x7a, 0x00, 0x00,
+ 0x4c, 0xd9, 0x35, 0x49, 0x49, 0x68, 0x05, 0x91,
+ 0x00, 0x29, 0x47, 0xd0, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x23, 0x03, 0x90, 0x28, 0x1c, 0x96, 0x46,
+ 0x94, 0x46, 0x06, 0x68, 0x04, 0x96, 0xf2, 0x78,
+ 0x80, 0x26, 0xb2, 0x43, 0x3f, 0x2a, 0x2e, 0xd8,
+ 0xd7, 0x06, 0xff, 0x0e, 0x01, 0x26, 0xbe, 0x40,
+ 0x37, 0x1c, 0x04, 0x9e, 0x52, 0x09, 0xb6, 0x78,
+ 0x76, 0x00, 0xb2, 0x18, 0x3c, 0x00, 0x58, 0x7a,
+ 0x00, 0x00, 0x26, 0x4e, 0x92, 0x00, 0x1c, 0x36,
+ 0xb2, 0x58, 0x3a, 0x40, 0x1e, 0xd0, 0x03, 0xe0,
+ 0x02, 0x90, 0x02, 0x89, 0xc0, 0x68, 0x51, 0x18,
+ 0x00, 0x28, 0xf9, 0xd1, 0x05, 0x98, 0x81, 0x42,
+ 0x14, 0xd8, 0x70, 0x46, 0x01, 0x30, 0x86, 0x46,
+ 0x00, 0x2b, 0x04, 0xd0, 0x60, 0x46, 0xd8, 0x60,
+ 0x01, 0x98, 0x62, 0x46, 0xd0, 0x60, 0x03, 0x98,
+ 0x01, 0x38, 0x03, 0x90, 0x06, 0xd0, 0x3c, 0x00,
+ 0x94, 0x7a, 0x00, 0x00, 0x23, 0x1c, 0x24, 0x68,
+ 0x60, 0x68, 0x02, 0x9a, 0x01, 0x90, 0x94, 0x46,
+ 0xc9, 0xe7, 0x70, 0x46, 0x01, 0x28, 0x07, 0xd9,
+ 0x2a, 0x1c, 0x00, 0x21, 0x3f, 0x20, 0x01, 0xf0,
+ 0x51, 0xff, 0x05, 0x1c, 0x06, 0x98, 0x85, 0x61,
+ 0x28, 0x1c, 0x01, 0xf0, 0xb3, 0xff, 0x0e, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x07, 0xd0, 0x28, 0x68,
+ 0x01, 0x88, 0x40, 0x79, 0x02, 0x31, 0x09, 0x1a,
+ 0x3c, 0x00, 0xd0, 0x7a, 0x00, 0x00, 0x28, 0x1c,
+ 0x01, 0xf0, 0xe5, 0xfc, 0xa2, 0x68, 0x06, 0x98,
+ 0xc0, 0x68, 0x06, 0x99, 0x0b, 0x69, 0x29, 0x1c,
+ 0xf8, 0xf7, 0x7c, 0xfc, 0x03, 0x49, 0x08, 0x69,
+ 0x01, 0x30, 0x08, 0x61, 0x07, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c,
+ 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4a, 0x80, 0x00,
+ 0x12, 0x58, 0xd0, 0x06, 0xc0, 0x0e, 0x01, 0x30,
+ 0x07, 0x4b, 0x3c, 0x00, 0x0c, 0x7b, 0x00, 0x00,
+ 0x1c, 0x68, 0x00, 0x2c, 0xfc, 0xdb, 0x5a, 0x60,
+ 0x20, 0x22, 0x12, 0x1a, 0x91, 0x40, 0x19, 0x60,
+ 0x19, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x10, 0xbd,
+ 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, 0x07, 0x00,
+ 0xb0, 0xb5, 0x12, 0x4c, 0x00, 0x25, 0x25, 0x70,
+ 0xa1, 0x68, 0x11, 0x48, 0x07, 0xf0, 0x32, 0xfc,
+ 0x65, 0x61, 0xfb, 0xf7, 0xa3, 0xfe, 0xe0, 0x68,
+ 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, 0x48, 0x7b,
+ 0x00, 0x00, 0xfb, 0xf7, 0xa4, 0xfe, 0x01, 0x21,
+ 0x07, 0x20, 0x0b, 0xf0, 0x70, 0xfd, 0x0a, 0x49,
+ 0x06, 0x20, 0x0a, 0xf0, 0x4c, 0xfc, 0x09, 0x49,
+ 0x05, 0x20, 0x0a, 0xf0, 0x48, 0xfc, 0xa0, 0x68,
+ 0x03, 0xf0, 0x67, 0xfe, 0x00, 0x21, 0xa0, 0x68,
+ 0xfb, 0xf7, 0xcd, 0xfd, 0x05, 0xf0, 0xab, 0xfb,
+ 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00,
+ 0x84, 0x7b, 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00,
+ 0x10, 0xb5, 0x0f, 0x4c, 0x20, 0x7c, 0x00, 0x28,
+ 0x19, 0xd1, 0x60, 0x69, 0x00, 0x28, 0x16, 0xd1,
+ 0xe0, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x0a, 0x48,
+ 0x1c, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0x05, 0xf0, 0xce, 0xfb, 0x01, 0x21, 0x07, 0x20,
+ 0x0b, 0xf0, 0x40, 0xfd, 0xa0, 0x68, 0x03, 0xf0,
+ 0x3f, 0xfe, 0x04, 0x48, 0xa1, 0x68, 0x07, 0xf0,
+ 0x3c, 0x00, 0xc0, 0x7b, 0x00, 0x00, 0xdb, 0xfb,
+ 0x01, 0x20, 0x20, 0x70, 0x10, 0xbd, 0x78, 0x69,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x70, 0xb5,
+ 0x0e, 0x4c, 0x01, 0x22, 0xa3, 0x68, 0xe5, 0x68,
+ 0x26, 0x8a, 0x5d, 0x1b, 0xb5, 0x42, 0x01, 0xd1,
+ 0x00, 0x22, 0x06, 0xe0, 0x25, 0x68, 0x01, 0x33,
+ 0x2e, 0x68, 0xa3, 0x60, 0x26, 0x60, 0x04, 0x35,
+ 0x03, 0xc5, 0x00, 0x2a, 0x04, 0xd1, 0x01, 0x21,
+ 0x9d, 0x20, 0x3c, 0x00, 0xfc, 0x7b, 0x00, 0x00,
+ 0xf9, 0xf7, 0x52, 0xfb, 0x70, 0xbd, 0x03, 0x49,
+ 0x02, 0x20, 0x08, 0x60, 0x70, 0xbd, 0x00, 0x00,
+ 0x44, 0xe3, 0x01, 0x00, 0x40, 0x20, 0x07, 0x00,
+ 0x80, 0xb5, 0x02, 0xf0, 0xb9, 0xf8, 0x80, 0xbd,
+ 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0xf9, 0xf7,
+ 0x3f, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, 0xf9, 0xf7,
+ 0x37, 0xfb, 0x00, 0x20, 0x3c, 0x00, 0x38, 0x7c,
+ 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x01, 0x21, 0x2b, 0x20, 0xf9, 0xf7, 0x2f, 0xfb,
+ 0x02, 0x20, 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49,
+ 0x01, 0x20, 0x08, 0x61, 0x70, 0x47, 0x7c, 0x78,
+ 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x23,
+ 0x0f, 0x1c, 0x17, 0x49, 0x58, 0x43, 0x45, 0x18,
+ 0x6c, 0x68, 0x30, 0x1c, 0x0b, 0xf0, 0x3f, 0xfe,
+ 0x00, 0x2f, 0x09, 0xd1, 0x30, 0x1c, 0x3c, 0x00,
+ 0x74, 0x7c, 0x00, 0x00, 0x03, 0xf0, 0xee, 0xfe,
+ 0x41, 0x20, 0x07, 0x55, 0x11, 0x48, 0x21, 0x1c,
+ 0xff, 0xf7, 0xa6, 0xff, 0xf8, 0xbd, 0x41, 0x20,
+ 0x07, 0x55, 0xa0, 0x6b, 0x00, 0x28, 0x03, 0xd0,
+ 0x20, 0x1c, 0x00, 0xf0, 0xdf, 0xf9, 0xf5, 0xe7,
+ 0x20, 0x1c, 0x00, 0xf0, 0xdb, 0xf9, 0xac, 0x68,
+ 0x00, 0x2c, 0x02, 0xd0, 0x00, 0x20, 0xa8, 0x60,
+ 0xed, 0xe7, 0x30, 0x1c, 0x05, 0xf0, 0x34, 0xf9,
+ 0x3c, 0x00, 0xb0, 0x7c, 0x00, 0x00, 0x04, 0x1c,
+ 0xe8, 0xd1, 0x08, 0x21, 0x0c, 0x20, 0xf9, 0xf7,
+ 0xf4, 0xfa, 0xe3, 0xe7, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x55, 0x80, 0x00, 0x00, 0x07, 0x4a,
+ 0x80, 0xb5, 0x50, 0x70, 0x51, 0x60, 0x12, 0x78,
+ 0x06, 0x4b, 0x80, 0x00, 0x52, 0x01, 0xd2, 0x18,
+ 0x10, 0x18, 0x40, 0x38, 0x02, 0x68, 0x08, 0x1c,
+ 0xf8, 0xf7, 0x7b, 0xfb, 0x80, 0xbd, 0x78, 0x69,
+ 0x01, 0x00, 0x3c, 0x00, 0xec, 0x7c, 0x00, 0x00,
+ 0xfc, 0x42, 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x49,
+ 0x04, 0x1c, 0xc8, 0x70, 0x08, 0x4d, 0xe4, 0x35,
+ 0xa8, 0x7a, 0x08, 0x71, 0x08, 0x2c, 0x01, 0xd3,
+ 0xf9, 0xf7, 0xfc, 0xfa, 0xa8, 0x7a, 0x05, 0x49,
+ 0x40, 0x01, 0x40, 0x18, 0xa1, 0x00, 0x40, 0x58,
+ 0xf8, 0xf7, 0x60, 0xfb, 0xb0, 0xbd, 0x00, 0x00,
+ 0x60, 0x6c, 0x01, 0x00, 0x80, 0x43, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x28, 0x3c, 0x00, 0x28, 0x7d,
+ 0x00, 0x00, 0x01, 0xd0, 0x09, 0xf0, 0x1d, 0xf9,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c,
+ 0x00, 0x20, 0x08, 0x60, 0x68, 0x68, 0x09, 0xf0,
+ 0x36, 0xfb, 0x6c, 0x60, 0xb0, 0xbd, 0x10, 0xb5,
+ 0x04, 0x1c, 0x09, 0xf0, 0x34, 0xfb, 0x21, 0x68,
+ 0x00, 0x29, 0x00, 0xd1, 0x64, 0x60, 0x10, 0xbd,
+ 0x00, 0x00, 0x00, 0x21, 0x01, 0x60, 0x40, 0x60,
+ 0x70, 0x47, 0xf8, 0xb5, 0x46, 0x68, 0x3c, 0x00,
+ 0x64, 0x7d, 0x00, 0x00, 0x04, 0x1c, 0x40, 0x6a,
+ 0x35, 0x1c, 0x0a, 0x35, 0x00, 0x28, 0x04, 0xd0,
+ 0x20, 0x1c, 0xf9, 0xf7, 0x89, 0xfd, 0x07, 0x1c,
+ 0x00, 0xe0, 0x04, 0x27, 0x29, 0x1c, 0x60, 0x69,
+ 0x00, 0xf0, 0xf6, 0xfc, 0x79, 0x00, 0x0f, 0x18,
+ 0xba, 0x88, 0xf1, 0x8a, 0x05, 0x1c, 0x8a, 0x42,
+ 0x05, 0xd1, 0x30, 0x88, 0x00, 0x05, 0x02, 0xd5,
+ 0x04, 0xf0, 0xbe, 0xfb, 0x3c, 0xe0, 0x28, 0x68,
+ 0x3c, 0x00, 0xa0, 0x7d, 0x00, 0x00, 0x00, 0x28,
+ 0x0f, 0xd0, 0x01, 0x32, 0x8a, 0x42, 0x04, 0xd1,
+ 0xf9, 0xf7, 0x0f, 0xfc, 0x21, 0x68, 0xc1, 0x60,
+ 0x0b, 0xe0, 0xf9, 0xf7, 0xf0, 0xfb, 0xf0, 0x8a,
+ 0x00, 0x07, 0x04, 0xd0, 0x00, 0x21, 0x29, 0x60,
+ 0x29, 0xe0, 0x08, 0x07, 0x27, 0xd1, 0x20, 0x68,
+ 0x28, 0x60, 0xf0, 0x8a, 0xb8, 0x80, 0x13, 0x48,
+ 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x31, 0x88,
+ 0x49, 0x05, 0x3c, 0x00, 0xdc, 0x7d, 0x00, 0x00,
+ 0x18, 0xd4, 0x29, 0x68, 0x21, 0x60, 0x00, 0x21,
+ 0x29, 0x60, 0xe1, 0x69, 0x00, 0x29, 0x0d, 0xd0,
+ 0x89, 0x79, 0x02, 0x29, 0x0a, 0xd1, 0x08, 0x21,
+ 0x21, 0x86, 0x21, 0x1c, 0x38, 0x31, 0xa1, 0x62,
+ 0x22, 0x1c, 0xdc, 0x30, 0x08, 0x49, 0x02, 0xf0,
+ 0x81, 0xf9, 0xf8, 0xbd, 0x20, 0x1c, 0x00, 0xf0,
+ 0x5f, 0xf8, 0xfa, 0xe7, 0x20, 0x1c, 0xf9, 0xf7,
+ 0xef, 0xfc, 0xf6, 0xe7, 0x3c, 0x00, 0x18, 0x7e,
+ 0x00, 0x00, 0x20, 0x68, 0xf9, 0xf7, 0xbd, 0xfb,
+ 0xf7, 0xe7, 0xc4, 0x69, 0x01, 0x00, 0xb9, 0x71,
+ 0x00, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, 0x09, 0x78,
+ 0x01, 0x24, 0xc9, 0x07, 0x21, 0xd5, 0x02, 0xf0,
+ 0x8c, 0xff, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24,
+ 0x1b, 0xe0, 0x0e, 0x4e, 0x75, 0x6e, 0x00, 0x2d,
+ 0x17, 0xd0, 0x34, 0x6e, 0x06, 0x22, 0x31, 0x1c,
+ 0x38, 0x1c, 0xf8, 0xf7, 0xd4, 0xfa, 0x3c, 0x00,
+ 0x54, 0x7e, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd1,
+ 0x01, 0x20, 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20,
+ 0x04, 0x1c, 0x03, 0xe0, 0x01, 0x3d, 0x06, 0x36,
+ 0x00, 0x2d, 0xee, 0xd1, 0x00, 0x2c, 0x03, 0xd1,
+ 0x02, 0x4e, 0xb0, 0x6e, 0x01, 0x30, 0xb0, 0x66,
+ 0x20, 0x1c, 0xf8, 0xbd, 0x10, 0x79, 0x01, 0x00,
+ 0x30, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x06, 0x49,
+ 0x00, 0x22, 0x1c, 0x23, 0xcc, 0x56, 0xac, 0x42,
+ 0x3c, 0x00, 0x90, 0x7e, 0x00, 0x00, 0x01, 0xd1,
+ 0x08, 0x1c, 0x30, 0xbd, 0x01, 0x32, 0x48, 0x31,
+ 0x01, 0x2a, 0xf5, 0xd3, 0x30, 0xbd, 0xcc, 0x6d,
+ 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x00, 0x22,
+ 0x1c, 0x23, 0x53, 0x43, 0xe3, 0x58, 0x83, 0x42,
+ 0x04, 0xd1, 0x1c, 0x20, 0x50, 0x43, 0x00, 0x19,
+ 0x0a, 0x60, 0x10, 0xbd, 0x01, 0x32, 0x0e, 0x2a,
+ 0xf2, 0xd3, 0x00, 0x20, 0x10, 0xbd, 0xdc, 0x71,
+ 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x7e, 0x00, 0x00,
+ 0xf0, 0xb5, 0x41, 0x68, 0x95, 0xb0, 0x07, 0x1c,
+ 0x90, 0x37, 0x13, 0x91, 0x04, 0x1c, 0xf8, 0x78,
+ 0x25, 0x1c, 0x80, 0x35, 0xc6, 0x07, 0x28, 0x79,
+ 0xf6, 0x0f, 0x4a, 0x49, 0x02, 0x28, 0x4d, 0xd1,
+ 0x0a, 0x6d, 0x00, 0x2a, 0x4a, 0xd0, 0x48, 0x68,
+ 0x01, 0x30, 0x48, 0x60, 0x0a, 0xf0, 0x58, 0xff,
+ 0x44, 0x49, 0x08, 0x61, 0x48, 0x61, 0x13, 0x99,
+ 0x09, 0x79, 0xc9, 0x07, 0x3c, 0x00, 0x08, 0x7f,
+ 0x00, 0x00, 0x01, 0xd4, 0x41, 0x49, 0x88, 0x61,
+ 0x20, 0x68, 0x06, 0x22, 0x06, 0x90, 0xa1, 0x68,
+ 0x03, 0xa8, 0xf8, 0xf7, 0xee, 0xfa, 0x06, 0x22,
+ 0x04, 0xa8, 0x02, 0x30, 0xe1, 0x68, 0xf8, 0xf7,
+ 0xe8, 0xfa, 0x07, 0xa8, 0x06, 0x22, 0x21, 0x69,
+ 0xf8, 0xf7, 0xe3, 0xfa, 0xb8, 0x78, 0x08, 0xab,
+ 0x00, 0x21, 0x98, 0x70, 0x0c, 0x96, 0x63, 0x6a,
+ 0x20, 0x1c, 0xa0, 0x30, 0x0a, 0x1c, 0x3c, 0x00,
+ 0x44, 0x7f, 0x00, 0x00, 0x00, 0x2b, 0x02, 0xd0,
+ 0x02, 0x8a, 0x52, 0x07, 0x52, 0x0f, 0x08, 0xab,
+ 0xda, 0x70, 0x00, 0xab, 0x99, 0x84, 0x13, 0x99,
+ 0x09, 0x88, 0xc9, 0x0b, 0xd9, 0x84, 0x69, 0x6b,
+ 0x10, 0xab, 0x10, 0x91, 0xa9, 0x6b, 0x11, 0x91,
+ 0x80, 0x8b, 0x29, 0x49, 0x18, 0x81, 0x09, 0x6d,
+ 0x03, 0xa8, 0xf8, 0xf7, 0x32, 0xfa, 0x29, 0x79,
+ 0x68, 0x6b, 0x0b, 0xf0, 0x4d, 0xfd, 0x29, 0x79,
+ 0x3c, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xa8, 0x6b,
+ 0x0b, 0xf0, 0x67, 0xfd, 0x3d, 0xe0, 0x00, 0x28,
+ 0x38, 0xd1, 0x48, 0x6d, 0x14, 0x90, 0x00, 0x28,
+ 0x34, 0xd0, 0x20, 0x68, 0x06, 0x22, 0x03, 0x90,
+ 0xa1, 0x68, 0x68, 0x46, 0xf8, 0xf7, 0xab, 0xfa,
+ 0x06, 0x22, 0x68, 0x46, 0x80, 0x18, 0xe1, 0x68,
+ 0xf8, 0xf7, 0xa5, 0xfa, 0x05, 0xa8, 0x06, 0x22,
+ 0x21, 0x69, 0xf8, 0xf7, 0xa0, 0xfa, 0x00, 0x21,
+ 0x04, 0x91, 0x3c, 0x00, 0xbc, 0x7f, 0x00, 0x00,
+ 0xb9, 0x78, 0x08, 0xa8, 0x10, 0xab, 0x01, 0x72,
+ 0x08, 0x96, 0xe9, 0x68, 0x0b, 0x91, 0x69, 0x79,
+ 0x41, 0x72, 0x68, 0x6b, 0x0e, 0x90, 0xa8, 0x6b,
+ 0x10, 0x90, 0x28, 0x8d, 0xd8, 0x80, 0x68, 0x8d,
+ 0x18, 0x81, 0xe1, 0x69, 0x0c, 0xa8, 0x00, 0x29,
+ 0x04, 0xd0, 0x89, 0x79, 0x01, 0x70, 0x20, 0x6a,
+ 0x0d, 0x90, 0x01, 0xe0, 0x07, 0x21, 0x01, 0x70,
+ 0x68, 0x46, 0x14, 0x99, 0x3c, 0x00, 0xf8, 0x7f,
+ 0x00, 0x00, 0xf8, 0xf7, 0xef, 0xf9, 0x02, 0xe0,
+ 0x20, 0x68, 0xf9, 0xf7, 0xca, 0xfa, 0x20, 0x1c,
+ 0xf9, 0xf7, 0xf5, 0xfb, 0x15, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x22, 0x01, 0x89,
+ 0x0c, 0x31, 0x01, 0x81, 0x05, 0x68, 0x21, 0x1c,
+ 0x0c, 0x3d, 0x05, 0x60, 0xa8, 0x18, 0xf8, 0xf7,
+ 0x64, 0xfa, 0x06, 0x22, 0xa1, 0x18, 0x3c, 0x00,
+ 0x34, 0x80, 0x00, 0x00, 0x28, 0x1c, 0xf8, 0xf7,
+ 0x5f, 0xfa, 0xa0, 0x8f, 0x00, 0x09, 0xe0, 0x62,
+ 0x20, 0x63, 0x03, 0x48, 0x01, 0x69, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xc7, 0xf9, 0xb0, 0xbd, 0x00, 0x00,
+ 0x7c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x60, 0x36, 0x05, 0x1c, 0x70, 0x7a, 0x0c, 0x23,
+ 0x25, 0x49, 0x58, 0x43, 0x44, 0x18, 0xa8, 0x6b,
+ 0x00, 0x27, 0x00, 0x28, 0x06, 0xd0, 0xa0, 0x78,
+ 0x3c, 0x00, 0x70, 0x80, 0x00, 0x00, 0x01, 0x28,
+ 0x03, 0xd1, 0xa7, 0x70, 0x70, 0x7a, 0x0a, 0xf0,
+ 0xb6, 0xfd, 0x2a, 0x1c, 0x0c, 0x21, 0x80, 0x20,
+ 0x0b, 0xf0, 0x95, 0xfb, 0xa8, 0x6b, 0x00, 0x28,
+ 0x33, 0xd0, 0xa0, 0x78, 0x02, 0x28, 0x0b, 0xd0,
+ 0x04, 0x28, 0x22, 0xd1, 0xa7, 0x70, 0x2f, 0x1c,
+ 0x40, 0x37, 0x78, 0x78, 0x02, 0x28, 0x0c, 0xd1,
+ 0x70, 0x7a, 0x0a, 0xf0, 0xa0, 0xfd, 0x18, 0xe0,
+ 0x03, 0x20, 0x3c, 0x00, 0xac, 0x80, 0x00, 0x00,
+ 0xa0, 0x70, 0x12, 0x49, 0x00, 0x20, 0x14, 0x39,
+ 0x09, 0x69, 0xf8, 0xf7, 0x90, 0xf9, 0x0f, 0xe0,
+ 0x2c, 0x1c, 0x07, 0xe0, 0x78, 0x78, 0x41, 0x21,
+ 0x22, 0x1c, 0x08, 0x55, 0x0c, 0x21, 0x80, 0x20,
+ 0x0b, 0xf0, 0x70, 0xfb, 0x60, 0x34, 0x60, 0x7a,
+ 0x04, 0xf0, 0x20, 0xff, 0x04, 0x1c, 0xf1, 0xd1,
+ 0x70, 0x7a, 0x40, 0x35, 0xa9, 0x8b, 0x00, 0x02,
+ 0x09, 0x09, 0x09, 0x04, 0x3c, 0x00, 0xe8, 0x80,
+ 0x00, 0x00, 0x08, 0x43, 0x81, 0x21, 0x01, 0x43,
+ 0x0c, 0x20, 0x0b, 0xf0, 0xa0, 0xfa, 0xf8, 0xbd,
+ 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0xf8, 0xb5,
+ 0x1c, 0x49, 0x05, 0x1c, 0x88, 0x6a, 0x01, 0x30,
+ 0x88, 0x62, 0x28, 0x1c, 0x0b, 0xf0, 0x7d, 0xfd,
+ 0x04, 0x1c, 0x11, 0xd0, 0x2b, 0x1c, 0x20, 0x33,
+ 0x1e, 0x1c, 0x5a, 0x79, 0x20, 0x1c, 0xb4, 0x30,
+ 0x19, 0x79, 0x14, 0x4f, 0xfd, 0xf7, 0x3c, 0x00,
+ 0x24, 0x81, 0x00, 0x00, 0x89, 0xf8, 0xaa, 0x7a,
+ 0x20, 0x1c, 0xb8, 0x30, 0xb1, 0x79, 0xfd, 0xf7,
+ 0xb9, 0xf8, 0x00, 0x2f, 0x04, 0xd1, 0x01, 0x21,
+ 0x28, 0x68, 0xfa, 0xf7, 0x6d, 0xfa, 0xf8, 0xbd,
+ 0x60, 0x68, 0xbc, 0x21, 0xc0, 0x8a, 0x08, 0x53,
+ 0x28, 0x68, 0x00, 0x21, 0xfa, 0xf7, 0x64, 0xfa,
+ 0x00, 0x28, 0x09, 0xd0, 0x06, 0x49, 0xc8, 0x6a,
+ 0x01, 0x30, 0xc8, 0x62, 0x00, 0x2c, 0xee, 0xd0,
+ 0x3c, 0x00, 0x60, 0x81, 0x00, 0x00, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x47, 0xfb, 0xea, 0xe7, 0x20, 0x1c,
+ 0xf8, 0xf7, 0x3c, 0xf9, 0xe6, 0xe7, 0xc4, 0x69,
+ 0x01, 0x00, 0xa1, 0xff, 0x00, 0x00, 0xf8, 0xb5,
+ 0x16, 0x4c, 0x05, 0x1f, 0x00, 0x22, 0x21, 0x1c,
+ 0xa0, 0x31, 0x03, 0xe0, 0x28, 0x68, 0xa0, 0x42,
+ 0x09, 0xd0, 0x20, 0x34, 0xa1, 0x42, 0xf9, 0xd1,
+ 0x00, 0x2a, 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20,
+ 0xf9, 0xf7, 0x3c, 0x00, 0x9c, 0x81, 0x00, 0x00,
+ 0x83, 0xf8, 0xf8, 0xbd, 0x0d, 0x4f, 0xbe, 0x79,
+ 0x60, 0x69, 0x01, 0x30, 0x60, 0x61, 0xf8, 0xf7,
+ 0x97, 0xfd, 0xa8, 0x42, 0x07, 0xd1, 0xa0, 0x88,
+ 0x04, 0x30, 0xf8, 0xf7, 0x97, 0xfd, 0xe0, 0x69,
+ 0x01, 0x30, 0xe0, 0x61, 0x05, 0xe0, 0x20, 0x68,
+ 0x28, 0x60, 0x25, 0x60, 0xa0, 0x69, 0x01, 0x30,
+ 0xa0, 0x61, 0xbe, 0x71, 0xe5, 0xe7, 0x00, 0x00,
+ 0xd0, 0x5c, 0x01, 0x00, 0x3c, 0x00, 0xd8, 0x81,
+ 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x00, 0x29,
+ 0x01, 0xdb, 0x06, 0x29, 0x01, 0xdb, 0x02, 0x20,
+ 0x70, 0x47, 0x06, 0x4b, 0xc9, 0x00, 0x5a, 0x5c,
+ 0xc9, 0x18, 0x02, 0x70, 0x4a, 0x78, 0x42, 0x70,
+ 0x8a, 0x78, 0x82, 0x70, 0x49, 0x68, 0x41, 0x60,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0xcc, 0x5a,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xf9, 0xf7, 0x3c, 0x00,
+ 0x14, 0x82, 0x00, 0x00, 0x75, 0xf8, 0x10, 0x48,
+ 0x40, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24,
+ 0x10, 0x2d, 0x00, 0xd3, 0x0f, 0x25, 0x06, 0x20,
+ 0x0b, 0x49, 0x60, 0x43, 0x12, 0x31, 0x40, 0x18,
+ 0x41, 0x78, 0x80, 0x78, 0x49, 0x19, 0x09, 0x06,
+ 0x09, 0x0e, 0x88, 0x42, 0x00, 0xd2, 0x01, 0x1c,
+ 0x01, 0x20, 0x88, 0x40, 0x05, 0x49, 0x01, 0x38,
+ 0x09, 0x68, 0x08, 0x40, 0x00, 0x04, 0x00, 0x0c,
+ 0x3c, 0x00, 0x50, 0x82, 0x00, 0x00, 0x02, 0xf0,
+ 0x44, 0xfe, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x7a,
+ 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x1c, 0x09, 0xf0, 0xcf, 0xfd,
+ 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0,
+ 0x82, 0xfd, 0x05, 0x61, 0xb0, 0xbd, 0x80, 0xb5,
+ 0x0a, 0xf0, 0x97, 0xfd, 0x03, 0x4a, 0x0c, 0x32,
+ 0x06, 0xca, 0x89, 0x18, 0x08, 0x1a, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x82, 0x00, 0x00,
+ 0xa0, 0x7d, 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4c,
+ 0x04, 0x9e, 0x64, 0x68, 0x0d, 0xe0, 0x65, 0x68,
+ 0x85, 0x42, 0x09, 0xd1, 0x20, 0x7a, 0x08, 0x70,
+ 0xe0, 0x68, 0x10, 0x60, 0x20, 0x69, 0x18, 0x60,
+ 0x20, 0x7d, 0x30, 0x80, 0x01, 0x20, 0x70, 0xbd,
+ 0x24, 0x68, 0x00, 0x2c, 0xef, 0xd1, 0x00, 0x20,
+ 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0x82,
+ 0x00, 0x00, 0x20, 0x30, 0x81, 0x7b, 0x20, 0x69,
+ 0x04, 0x30, 0xfd, 0xf7, 0x64, 0xf9, 0x01, 0x1c,
+ 0x62, 0x20, 0x02, 0x5b, 0x63, 0x6a, 0x40, 0x34,
+ 0x20, 0x78, 0x02, 0xf0, 0xce, 0xfd, 0x10, 0xbd,
+ 0x00, 0x00, 0x0b, 0x49, 0x10, 0xb5, 0x08, 0x88,
+ 0x8a, 0x69, 0x0a, 0x23, 0x50, 0x43, 0x58, 0x43,
+ 0x0e, 0xd0, 0x08, 0x4a, 0x53, 0x89, 0x94, 0x88,
+ 0xd2, 0x88, 0x1b, 0x19, 0x52, 0x04, 0x3c, 0x00,
+ 0x04, 0x83, 0x00, 0x00, 0x52, 0x0c, 0x9a, 0x18,
+ 0xc9, 0x68, 0x06, 0x32, 0x4a, 0x43, 0x0a, 0x21,
+ 0x51, 0x43, 0xf8, 0xf7, 0xfd, 0xf9, 0x10, 0xbd,
+ 0xc8, 0x74, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00,
+ 0x10, 0xb5, 0x43, 0x1c, 0x01, 0xd1, 0x10, 0x48,
+ 0x10, 0xbd, 0x0f, 0x4a, 0x0e, 0x4b, 0x94, 0x3a,
+ 0x12, 0x68, 0x44, 0x3b, 0x1b, 0x7a, 0x10, 0xe0,
+ 0x54, 0x68, 0x84, 0x42, 0x0c, 0xd1, 0x00, 0x29,
+ 0x3c, 0x00, 0x40, 0x83, 0x00, 0x00, 0x0f, 0xd1,
+ 0x02, 0x2b, 0x03, 0xd1, 0xd4, 0x7b, 0x02, 0x2c,
+ 0x0a, 0xd2, 0x04, 0xe0, 0x00, 0x2b, 0x05, 0xd1,
+ 0xd4, 0x7b, 0xe4, 0x07, 0x04, 0xd4, 0x12, 0x68,
+ 0x00, 0x2a, 0xec, 0xd1, 0x00, 0x20, 0x10, 0xbd,
+ 0x10, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x38, 0x6f,
+ 0x01, 0x00, 0x01, 0x1c, 0x01, 0x20, 0x01, 0x29,
+ 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, 0x00, 0xb5,
+ 0x02, 0x1c, 0x3c, 0x00, 0x7c, 0x83, 0x00, 0x00,
+ 0xfd, 0xf7, 0xce, 0xf8, 0x00, 0x28, 0x08, 0xd0,
+ 0x10, 0x1c, 0xff, 0xf7, 0xf1, 0xff, 0x18, 0x23,
+ 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x69,
+ 0x00, 0xbd, 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00,
+ 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x28,
+ 0x00, 0xd1, 0x08, 0x48, 0x07, 0x49, 0x00, 0x68,
+ 0x50, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x02, 0xd0,
+ 0x02, 0x29, 0x04, 0xd1, 0x3c, 0x00, 0xb8, 0x83,
+ 0x00, 0x00, 0x00, 0xe0, 0x01, 0x21, 0x00, 0xf0,
+ 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x12, 0x4a,
+ 0x12, 0x4b, 0x12, 0x7a, 0x2c, 0x3b, 0x00, 0x2a,
+ 0x03, 0xd1, 0x5a, 0x68, 0x00, 0x2a, 0x18, 0xd1,
+ 0x04, 0xe0, 0x02, 0x2a, 0x02, 0xd1, 0x9a, 0x68,
+ 0x00, 0x2a, 0x12, 0xd1, 0x00, 0x20, 0x70, 0x47,
+ 0xc2, 0x7b, 0x8a, 0x42, 0x01, 0xd0, 0x3c, 0x00,
+ 0xf4, 0x83, 0x00, 0x00, 0x03, 0x2a, 0x0a, 0xd1,
+ 0x82, 0x7e, 0x01, 0x2a, 0x07, 0xd1, 0x02, 0x7f,
+ 0x01, 0x32, 0x12, 0x06, 0x12, 0x0e, 0x02, 0x77,
+ 0xc3, 0x7e, 0x9a, 0x42, 0xee, 0xd2, 0x00, 0x68,
+ 0x00, 0x28, 0xec, 0xd1, 0x70, 0x47, 0x00, 0x00,
+ 0xf4, 0x6e, 0x01, 0x00, 0xf7, 0xb5, 0x84, 0x46,
+ 0x00, 0x20, 0x01, 0x27, 0x00, 0x24, 0x00, 0x25,
+ 0x88, 0xb0, 0x07, 0xe0, 0x62, 0x46, 0x52, 0x5d,
+ 0x3c, 0x00, 0x30, 0x84, 0x00, 0x00, 0x00, 0x2a,
+ 0x05, 0xd0, 0xab, 0x00, 0x6e, 0x46, 0xf2, 0x50,
+ 0x01, 0x35, 0x8d, 0x42, 0xf5, 0xd3, 0x00, 0x2d,
+ 0x00, 0xd0, 0x01, 0x20, 0x00, 0x28, 0x28, 0xd0,
+ 0x00, 0x27, 0x16, 0x4c, 0x6e, 0x46, 0x22, 0xe0,
+ 0x20, 0x1c, 0x00, 0xf0, 0x30, 0xf8, 0x01, 0x28,
+ 0x01, 0xd0, 0x07, 0x28, 0x06, 0xd1, 0x00, 0x21,
+ 0x20, 0x1c, 0x00, 0xf0, 0x34, 0xf8, 0x31, 0x68,
+ 0x88, 0x42, 0x3c, 0x00, 0x6c, 0x84, 0x00, 0x00,
+ 0x01, 0xd2, 0x02, 0x27, 0x14, 0xe0, 0x20, 0x68,
+ 0xc9, 0x00, 0x0c, 0x18, 0x08, 0x3c, 0x20, 0x1c,
+ 0x00, 0xf0, 0x1c, 0xf8, 0x07, 0x28, 0x07, 0xd1,
+ 0x01, 0x20, 0x01, 0x2d, 0x00, 0xd0, 0x00, 0x20,
+ 0x24, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x08, 0x34,
+ 0x01, 0x3d, 0x04, 0x36, 0x00, 0x2d, 0xda, 0xd1,
+ 0x0a, 0x98, 0x04, 0x60, 0x0b, 0xb0, 0x38, 0x1c,
+ 0xf0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x84,
+ 0x00, 0x00, 0x20, 0x52, 0x01, 0x00, 0x00, 0x68,
+ 0x00, 0x29, 0x01, 0xd0, 0x80, 0x02, 0x80, 0x0a,
+ 0x70, 0x47, 0x10, 0xb5, 0x40, 0x68, 0x80, 0x00,
+ 0x44, 0x0f, 0x08, 0x2c, 0x03, 0xd3, 0x02, 0x21,
+ 0x87, 0x20, 0xf8, 0xf7, 0xec, 0xfe, 0x20, 0x1c,
+ 0x10, 0xbd, 0x00, 0x29, 0x02, 0xd0, 0x00, 0x68,
+ 0x80, 0x0d, 0x70, 0x47, 0x40, 0x68, 0x80, 0x05,
+ 0x80, 0x0d, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0x84, 0x00, 0x00, 0x10, 0xb5, 0x40, 0x68,
+ 0x40, 0x01, 0x44, 0x0f, 0x05, 0x2c, 0x03, 0xd3,
+ 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, 0xd6, 0xfe,
+ 0x20, 0x1c, 0x10, 0xbd, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x88, 0x0a, 0x00, 0x90, 0x1c, 0x48, 0x8e, 0x05,
+ 0xc0, 0x69, 0xb6, 0x0d, 0x17, 0x1c, 0x1c, 0x1c,
+ 0x00, 0x28, 0x05, 0xd1, 0x18, 0x48, 0x81, 0x69,
+ 0x8d, 0x42, 0x1d, 0xd0, 0x85, 0x61, 0x11, 0xe0,
+ 0x3c, 0x00, 0x20, 0x85, 0x00, 0x00, 0xfd, 0xf7,
+ 0xe8, 0xf8, 0x15, 0x49, 0x09, 0x78, 0x0e, 0x29,
+ 0x07, 0xd1, 0x00, 0x28, 0x05, 0xd0, 0x11, 0x49,
+ 0x50, 0x31, 0x06, 0x23, 0xc9, 0x56, 0xf9, 0xf7,
+ 0x06, 0xfa, 0x0e, 0x49, 0x00, 0x20, 0xc8, 0x61,
+ 0x8d, 0x61, 0x29, 0x1c, 0x20, 0x1c, 0xf8, 0xf7,
+ 0xe2, 0xf8, 0x79, 0x43, 0x20, 0x1c, 0xf8, 0xf7,
+ 0xde, 0xf8, 0x08, 0x48, 0x41, 0x61, 0x20, 0x1c,
+ 0x00, 0x99, 0x3c, 0x00, 0x5c, 0x85, 0x00, 0x00,
+ 0xf8, 0xf7, 0xd8, 0xf8, 0x05, 0x48, 0x40, 0x69,
+ 0x0a, 0x18, 0xa2, 0x42, 0x01, 0xd2, 0x40, 0x18,
+ 0x01, 0xe0, 0x40, 0x18, 0x00, 0x1b, 0x80, 0x02,
+ 0x80, 0x19, 0xf8, 0xbd, 0xac, 0x7c, 0x01, 0x00,
+ 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c,
+ 0x06, 0x1c, 0x14, 0x1c, 0x1d, 0x1c, 0x07, 0xf0,
+ 0xa1, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0x20, 0x1c,
+ 0x02, 0xf0, 0xfc, 0xfb, 0x3c, 0x00, 0x98, 0x85,
+ 0x00, 0x00, 0x00, 0x28, 0x04, 0xd0, 0x08, 0x48,
+ 0x00, 0x78, 0x02, 0xf0, 0xe4, 0xfb, 0x04, 0x1c,
+ 0x01, 0x21, 0x00, 0x2e, 0xac, 0x72, 0x00, 0xd0,
+ 0x39, 0x1c, 0x20, 0x1c, 0x02, 0xf0, 0x07, 0xfc,
+ 0x28, 0x60, 0x00, 0x20, 0x28, 0x72, 0x6c, 0x72,
+ 0xf8, 0xbd, 0x90, 0x57, 0x01, 0x00, 0x03, 0x1c,
+ 0x0a, 0x48, 0x10, 0xb5, 0x00, 0x24, 0x02, 0x1c,
+ 0xa0, 0x32, 0x03, 0xe0, 0x81, 0x88, 0x3c, 0x00,
+ 0xd4, 0x85, 0x00, 0x00, 0x99, 0x42, 0x09, 0xd2,
+ 0x20, 0x30, 0x82, 0x42, 0xf9, 0xd1, 0x00, 0x2c,
+ 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, 0xf8, 0xf7,
+ 0x5d, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0xd0, 0x5c, 0x01, 0x00, 0xff, 0xb5, 0x06, 0x1c,
+ 0x00, 0x20, 0x81, 0xb0, 0x10, 0x60, 0x1f, 0x1c,
+ 0x01, 0x25, 0x14, 0x1c, 0x30, 0x1c, 0xff, 0xf7,
+ 0x6d, 0xff, 0x05, 0x28, 0x12, 0xd2, 0x02, 0xa3,
+ 0x3c, 0x00, 0x10, 0x86, 0x00, 0x00, 0x1b, 0x5c,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03,
+ 0x03, 0x03, 0x08, 0x00, 0x39, 0x1c, 0x30, 0x1c,
+ 0xff, 0xf7, 0x55, 0xff, 0x03, 0xe0, 0x02, 0x98,
+ 0xf8, 0xf7, 0xeb, 0xf8, 0x01, 0x30, 0x20, 0x60,
+ 0x04, 0xe0, 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7,
+ 0x34, 0xfe, 0x00, 0x25, 0x20, 0x68, 0x80, 0x28,
+ 0x04, 0xd9, 0x06, 0x21, 0x87, 0x20, 0xf8, 0xf7,
+ 0x2c, 0xfe, 0x3c, 0x00, 0x4c, 0x86, 0x00, 0x00,
+ 0x00, 0x25, 0x28, 0x1c, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x70, 0xb5, 0x17, 0x4c, 0x60, 0x6c, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x1d, 0xe0, 0x16, 0x4e,
+ 0x14, 0x4d, 0x31, 0x88, 0xa0, 0x6c, 0x00, 0x28,
+ 0x08, 0xd0, 0x28, 0x78, 0x81, 0x42, 0x05, 0xd9,
+ 0xf8, 0xf7, 0x4c, 0xf8, 0x01, 0x38, 0xfa, 0xf7,
+ 0x51, 0xfe, 0x0e, 0xe0, 0xe0, 0x6c, 0x00, 0x28,
+ 0x0a, 0xd0, 0x00, 0x20, 0x3c, 0x00, 0x88, 0x86,
+ 0x00, 0x00, 0xfa, 0xf7, 0x4a, 0xfe, 0x29, 0x78,
+ 0x32, 0x88, 0x91, 0x42, 0x04, 0xd9, 0x90, 0x42,
+ 0x02, 0xd9, 0x10, 0x1c, 0x00, 0xe0, 0x08, 0x1c,
+ 0xfa, 0xf7, 0xdf, 0xfd, 0xe1, 0x6b, 0x44, 0x1a,
+ 0x0a, 0xf0, 0x81, 0xfb, 0x20, 0x1a, 0x00, 0xd5,
+ 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x44, 0x7d,
+ 0x01, 0x00, 0xf8, 0x60, 0x01, 0x00, 0xfc, 0x60,
+ 0x01, 0x00, 0xff, 0xb5, 0x27, 0x4e, 0x3c, 0x00,
+ 0xc4, 0x86, 0x00, 0x00, 0x04, 0x1c, 0xb0, 0x79,
+ 0x0f, 0x1c, 0x15, 0x1c, 0x81, 0xb0, 0x00, 0x90,
+ 0x0a, 0xf0, 0x6c, 0xfb, 0xc1, 0x19, 0x23, 0x48,
+ 0x07, 0x68, 0x00, 0x2f, 0x05, 0xd1, 0x0a, 0x21,
+ 0x80, 0x20, 0xf8, 0xf7, 0xdf, 0xfd, 0x05, 0xb0,
+ 0xf0, 0xbd, 0x1e, 0x48, 0x40, 0x68, 0x84, 0x46,
+ 0x00, 0x28, 0x01, 0xd1, 0x00, 0x22, 0x0e, 0xe0,
+ 0x82, 0x68, 0x03, 0x68, 0xab, 0x42, 0x07, 0xd1,
+ 0x3c, 0x00, 0x00, 0x87, 0x00, 0x00, 0x03, 0x79,
+ 0xa3, 0x42, 0x04, 0xd1, 0x0b, 0x21, 0x80, 0x20,
+ 0xf8, 0xf7, 0xcb, 0xfd, 0x23, 0xe0, 0xc0, 0x68,
+ 0x00, 0x28, 0xf1, 0xd1, 0x13, 0x4b, 0xf8, 0x68,
+ 0x18, 0x60, 0x3d, 0x60, 0x3c, 0x71, 0xb9, 0x60,
+ 0x04, 0x98, 0x8d, 0x1a, 0x38, 0x61, 0x60, 0x46,
+ 0x00, 0x23, 0x05, 0xe0, 0x84, 0x68, 0xa4, 0x1a,
+ 0xac, 0x42, 0x03, 0xda, 0x03, 0x1c, 0xc0, 0x68,
+ 0x00, 0x28, 0x3c, 0x00, 0x3c, 0x87, 0x00, 0x00,
+ 0xf7, 0xd1, 0xf8, 0x60, 0x00, 0x2b, 0x08, 0xd1,
+ 0x07, 0x48, 0x3b, 0x1c, 0x47, 0x60, 0x08, 0x48,
+ 0x06, 0x4a, 0x00, 0x88, 0x0a, 0xf0, 0x8a, 0xfb,
+ 0x00, 0xe0, 0xdf, 0x60, 0x00, 0x98, 0xb0, 0x71,
+ 0xc3, 0xe7, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00,
+ 0x7c, 0x5d, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00,
+ 0x2c, 0x74, 0x01, 0x00, 0xf3, 0xb5, 0x83, 0xb0,
+ 0x04, 0x1c, 0x09, 0xd0, 0x3c, 0x00, 0x78, 0x87,
+ 0x00, 0x00, 0x20, 0x1c, 0x04, 0x99, 0x09, 0xf0,
+ 0x8e, 0xfb, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x1c,
+ 0x30, 0x30, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0xf0,
+ 0x0e, 0xfb, 0x1e, 0x4a, 0x00, 0x26, 0x04, 0x9f,
+ 0x01, 0x96, 0x00, 0x90, 0x02, 0x92, 0x02, 0x9c,
+ 0x00, 0x25, 0x39, 0x1c, 0x20, 0x1c, 0x14, 0x30,
+ 0x02, 0xf0, 0xc5, 0xfa, 0x00, 0x28, 0x01, 0xd0,
+ 0x26, 0x1c, 0x03, 0xe0, 0x01, 0x35, 0x3c, 0x00,
+ 0xb4, 0x87, 0x00, 0x00, 0x1c, 0x34, 0x04, 0x2d,
+ 0xf2, 0xd3, 0x00, 0x2e, 0x22, 0xd1, 0x01, 0x98,
+ 0x13, 0x4f, 0x01, 0x30, 0x01, 0x90, 0x02, 0x28,
+ 0xe8, 0xd3, 0x01, 0x21, 0xc9, 0x06, 0x02, 0x9a,
+ 0x00, 0x20, 0x13, 0x69, 0x00, 0x9c, 0xe3, 0x1a,
+ 0x8b, 0x42, 0x01, 0xdd, 0x19, 0x1c, 0x16, 0x1c,
+ 0x01, 0x30, 0x1c, 0x32, 0x04, 0x28, 0xf4, 0xd3,
+ 0x30, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf8, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x87, 0x00, 0x00, 0xd3, 0xfe,
+ 0x30, 0x1c, 0xfd, 0xf7, 0x4a, 0xff, 0x30, 0x1c,
+ 0x14, 0x30, 0x06, 0x22, 0x04, 0x99, 0xf7, 0xf7,
+ 0x7a, 0xfe, 0x00, 0x9c, 0x30, 0x1c, 0x34, 0x61,
+ 0xbd, 0xe7, 0x30, 0x6a, 0x01, 0x00, 0x34, 0x42,
+ 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, 0x4c, 0x69,
+ 0x03, 0xe0, 0xe1, 0x68, 0x81, 0x42, 0x03, 0xd0,
+ 0x24, 0x68, 0x00, 0x2c, 0xf9, 0xd1, 0x01, 0xe0,
+ 0x00, 0x2c, 0x3c, 0x00, 0x2c, 0x88, 0x00, 0x00,
+ 0x03, 0xd1, 0x02, 0x21, 0x02, 0x20, 0xf8, 0xf7,
+ 0x37, 0xfd, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00,
+ 0xfc, 0x5a, 0x01, 0x00, 0x10, 0xb5, 0xc3, 0x07,
+ 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, 0x0c, 0x43,
+ 0x5c, 0x61, 0x1c, 0x7e, 0x14, 0x43, 0x1c, 0x76,
+ 0x80, 0x07, 0x06, 0xd5, 0x04, 0x48, 0x43, 0x69,
+ 0x19, 0x43, 0x41, 0x61, 0x01, 0x7e, 0x11, 0x43,
+ 0x01, 0x76, 0x10, 0xbd, 0x3c, 0x00, 0x68, 0x88,
+ 0x00, 0x00, 0xfc, 0x57, 0x01, 0x00, 0x18, 0x58,
+ 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x16, 0x1c, 0x00, 0xf0, 0x08, 0xf8, 0xa0, 0x07,
+ 0xc0, 0x17, 0x01, 0x30, 0x32, 0x1c, 0x29, 0x1c,
+ 0x00, 0xf0, 0x21, 0xf8, 0x70, 0xbd, 0x10, 0xb5,
+ 0xc3, 0x07, 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69,
+ 0x8c, 0x43, 0x5c, 0x61, 0x1c, 0x7e, 0x94, 0x43,
+ 0x1c, 0x76, 0x80, 0x07, 0x06, 0xd5, 0x3c, 0x00,
+ 0xa4, 0x88, 0x00, 0x00, 0x04, 0x48, 0x43, 0x69,
+ 0x8b, 0x43, 0x43, 0x61, 0x01, 0x7e, 0x91, 0x43,
+ 0x01, 0x76, 0x10, 0xbd, 0xfc, 0x57, 0x01, 0x00,
+ 0x18, 0x58, 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f,
+ 0x80, 0xb5, 0x01, 0x20, 0x00, 0xf0, 0x02, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x30, 0xb5, 0x15, 0x1c,
+ 0x0c, 0x1c, 0x00, 0x28, 0x87, 0xb0, 0x02, 0xd0,
+ 0x1c, 0x22, 0x22, 0x49, 0x01, 0xe0, 0x22, 0x49,
+ 0x3c, 0x00, 0xe0, 0x88, 0x00, 0x00, 0x1c, 0x22,
+ 0x68, 0x46, 0xf7, 0xf7, 0x64, 0xfe, 0x05, 0x99,
+ 0x00, 0xab, 0x1a, 0x7e, 0x8c, 0x43, 0x20, 0x1c,
+ 0x95, 0x43, 0x02, 0x9a, 0x29, 0x1c, 0x02, 0x40,
+ 0x02, 0x92, 0x01, 0x9a, 0x02, 0x40, 0x01, 0x92,
+ 0x00, 0x9a, 0x02, 0x40, 0x00, 0x92, 0x03, 0x9a,
+ 0x02, 0x40, 0x03, 0x92, 0x98, 0x7c, 0x08, 0x40,
+ 0x98, 0x74, 0x58, 0x7c, 0x08, 0x40, 0x58, 0x74,
+ 0x18, 0x7c, 0x3c, 0x00, 0x1c, 0x89, 0x00, 0x00,
+ 0x08, 0x40, 0x18, 0x74, 0xd8, 0x7c, 0x08, 0x40,
+ 0xd8, 0x74, 0x02, 0x99, 0x10, 0x48, 0x41, 0x61,
+ 0x01, 0xaa, 0x06, 0xca, 0x91, 0x43, 0x81, 0x61,
+ 0x81, 0x68, 0x01, 0x9a, 0x11, 0x43, 0x81, 0x60,
+ 0x81, 0x68, 0x00, 0x9a, 0x91, 0x43, 0x81, 0x60,
+ 0x00, 0xaa, 0x06, 0xca, 0x11, 0x43, 0x42, 0x68,
+ 0x11, 0x43, 0x41, 0x60, 0x41, 0x68, 0x03, 0x9a,
+ 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, 0x58, 0x89,
+ 0x00, 0x00, 0x04, 0xa8, 0x0b, 0xf0, 0x01, 0xf8,
+ 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0xfc, 0x57,
+ 0x01, 0x00, 0x18, 0x58, 0x01, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x01, 0x1c,
+ 0x01, 0x20, 0x08, 0xf0, 0xe0, 0xf9, 0x00, 0x2c,
+ 0x02, 0xd0, 0x03, 0xf0, 0x1c, 0xff, 0x10, 0xbd,
+ 0xfe, 0xf7, 0xd1, 0xfc, 0x10, 0xbd, 0xf0, 0xb5,
+ 0x0c, 0x1c, 0x01, 0x0e, 0x01, 0x23, 0x3c, 0x00,
+ 0x94, 0x89, 0x00, 0x00, 0x1b, 0x06, 0x09, 0x06,
+ 0x99, 0x42, 0x9f, 0xb0, 0x28, 0xd1, 0x17, 0x49,
+ 0x08, 0x40, 0x00, 0x21, 0x1a, 0x28, 0x00, 0xd3,
+ 0x02, 0x21, 0x00, 0x29, 0x19, 0xd1, 0xc5, 0x00,
+ 0x13, 0x4f, 0x10, 0xa8, 0xee, 0x19, 0xb2, 0x88,
+ 0x21, 0x68, 0xf7, 0xf7, 0x9d, 0xfd, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xea, 0xfd, 0x7a, 0x59, 0x01, 0xa9,
+ 0x10, 0xa8, 0xf7, 0xf7, 0x07, 0xfd, 0x00, 0x28,
+ 0x3c, 0x00, 0xd0, 0x89, 0x00, 0x00, 0x05, 0xd0,
+ 0x10, 0x98, 0x01, 0xa9, 0x01, 0x90, 0xb0, 0x79,
+ 0x00, 0xf0, 0x9d, 0xf8, 0x1f, 0xb0, 0xf0, 0xbd,
+ 0x2a, 0x20, 0xf8, 0xf7, 0x5e, 0xfc, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xd5, 0xfd, 0xf6, 0xe7, 0x03, 0x21,
+ 0x2a, 0x20, 0xf8, 0xf7, 0x56, 0xfc, 0xf1, 0xe7,
+ 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x24, 0x45,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x80, 0x28,
+ 0x02, 0xd0, 0x3c, 0x00, 0x0c, 0x8a, 0x00, 0x00,
+ 0x81, 0x28, 0x08, 0xd1, 0x03, 0xe0, 0x20, 0x1c,
+ 0x00, 0xf0, 0x06, 0xf9, 0x10, 0xbd, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xbc, 0xfd, 0x10, 0xbd, 0x03, 0x21,
+ 0x2c, 0x20, 0xf8, 0xf7, 0x3d, 0xfc, 0xf6, 0xe7,
+ 0xf0, 0xb5, 0x0c, 0x1c, 0x00, 0x21, 0x8b, 0xb0,
+ 0x0a, 0x91, 0x01, 0x0e, 0x01, 0x23, 0x1b, 0x06,
+ 0x09, 0x06, 0x99, 0x42, 0x2a, 0xd1, 0x18, 0x49,
+ 0x08, 0x40, 0x06, 0x1c, 0x3c, 0x00, 0x48, 0x8a,
+ 0x00, 0x00, 0x06, 0x2e, 0x01, 0xd3, 0x07, 0x21,
+ 0x24, 0xe0, 0x20, 0x89, 0xf8, 0xf7, 0xf1, 0xfe,
+ 0x22, 0x89, 0x21, 0x68, 0x05, 0x1c, 0xf7, 0xf7,
+ 0x4c, 0xfd, 0x20, 0x1c, 0xf8, 0xf7, 0x99, 0xfd,
+ 0xf4, 0x00, 0x0f, 0x4e, 0x28, 0x1c, 0x0a, 0xaa,
+ 0x69, 0x46, 0x33, 0x59, 0xf7, 0xf7, 0xb4, 0xfc,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x07, 0xd1,
+ 0x28, 0x68, 0x69, 0x46, 0x00, 0x90, 0x3c, 0x00,
+ 0x84, 0x8a, 0x00, 0x00, 0xa0, 0x19, 0x00, 0x79,
+ 0x0a, 0x9a, 0x00, 0xf0, 0x09, 0xf9, 0x28, 0x1c,
+ 0xf8, 0xf7, 0xb0, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd,
+ 0x01, 0x21, 0x2b, 0x20, 0xf8, 0xf7, 0x02, 0xfc,
+ 0xf8, 0xe7, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00,
+ 0x28, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x0e,
+ 0x01, 0x23, 0x1b, 0x06, 0x09, 0x06, 0x99, 0x42,
+ 0x80, 0xb5, 0x08, 0xd0, 0x5b, 0x00, 0x99, 0x42,
+ 0x3c, 0x00, 0xc0, 0x8a, 0x00, 0x00, 0x0b, 0xd1,
+ 0x00, 0x06, 0x00, 0x0e, 0x11, 0x1c, 0x00, 0xf0,
+ 0x0e, 0xf9, 0x80, 0xbd, 0x05, 0x49, 0x01, 0x40,
+ 0x10, 0x1c, 0x05, 0xf0, 0xa2, 0xf9, 0x80, 0xbd,
+ 0x01, 0x21, 0x2d, 0x20, 0xf8, 0xf7, 0xe1, 0xfb,
+ 0x80, 0xbd, 0x7f, 0xff, 0xff, 0x00, 0x80, 0xb5,
+ 0x01, 0x1c, 0x0f, 0x20, 0x00, 0xf0, 0x13, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, 0x04, 0x20,
+ 0x00, 0xf0, 0x3c, 0x00, 0xfc, 0x8a, 0x00, 0x00,
+ 0x0d, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c,
+ 0x17, 0x20, 0x00, 0xf0, 0x07, 0xf8, 0x80, 0xbd,
+ 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, 0x00, 0xf0,
+ 0x01, 0xf8, 0x80, 0xbd, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, 0x0f, 0x1c,
+ 0x19, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, 0xea, 0xfb,
+ 0x08, 0x48, 0x04, 0x5d, 0x21, 0x1c, 0x00, 0x20,
+ 0xf8, 0xf7, 0x50, 0xfd, 0x3c, 0x00, 0x38, 0x8b,
+ 0x00, 0x00, 0x05, 0x1c, 0x22, 0x1c, 0x39, 0x1c,
+ 0x00, 0x68, 0xf7, 0xf7, 0xda, 0xfc, 0x2a, 0x1c,
+ 0x31, 0x1c, 0x07, 0x20, 0xf8, 0xf7, 0x11, 0xf9,
+ 0xf8, 0xbd, 0xf4, 0x45, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0d, 0x1c, 0x16, 0x1c, 0x04, 0x1c, 0x1f, 0x1c,
+ 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x39, 0xfd,
+ 0x14, 0x22, 0x01, 0x68, 0x0e, 0x4b, 0x72, 0x43,
+ 0xd2, 0x18, 0x0c, 0x71, 0x12, 0x7c, 0x3c, 0x00,
+ 0x74, 0x8b, 0x00, 0x00, 0x4a, 0x71, 0x0d, 0x60,
+ 0x0b, 0x4a, 0x8f, 0x71, 0x12, 0x68, 0x7f, 0x2a,
+ 0x03, 0xd9, 0x52, 0x05, 0x52, 0x0e, 0x80, 0x23,
+ 0x1a, 0x43, 0xca, 0x71, 0x07, 0x4a, 0x00, 0x23,
+ 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, 0x02, 0x1c,
+ 0x81, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x08, 0xf9,
+ 0xf8, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00,
+ 0xfc, 0x5a, 0x01, 0x00, 0x80, 0x6e, 0x01, 0x00,
+ 0x3c, 0x00, 0xb0, 0x8b, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7,
+ 0x0e, 0xfd, 0x21, 0x8b, 0xe2, 0x7d, 0x05, 0x1c,
+ 0x09, 0x05, 0x52, 0x07, 0x52, 0x0f, 0x49, 0x0c,
+ 0x00, 0x68, 0x11, 0x43, 0x81, 0x80, 0xa1, 0x7d,
+ 0x14, 0x23, 0x0e, 0x4a, 0x59, 0x43, 0x89, 0x18,
+ 0x09, 0x7c, 0xc1, 0x71, 0xe1, 0x6a, 0x01, 0x60,
+ 0xe1, 0x68, 0x28, 0x1c, 0xf8, 0xf7, 0x17, 0xfc,
+ 0x0a, 0x48, 0x3c, 0x00, 0xec, 0x8b, 0x00, 0x00,
+ 0x00, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf7, 0xf7,
+ 0xf1, 0xfb, 0x07, 0x49, 0x04, 0x31, 0x88, 0x68,
+ 0x01, 0x30, 0x88, 0x60, 0x00, 0x21, 0x2a, 0x1c,
+ 0x00, 0x20, 0x23, 0x6b, 0xf8, 0xf7, 0xd2, 0xf8,
+ 0x01, 0x20, 0xb0, 0xbd, 0x74, 0x40, 0x01, 0x00,
+ 0x7c, 0x6e, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0x28, 0x8c,
+ 0x00, 0x00, 0x92, 0xb0, 0x01, 0x68, 0x68, 0x46,
+ 0x08, 0x22, 0xf7, 0xf7, 0x62, 0xfc, 0x00, 0xab,
+ 0x98, 0x88, 0x40, 0x07, 0x40, 0x0f, 0xd8, 0x77,
+ 0x98, 0x88, 0x40, 0x04, 0x00, 0x0d, 0x18, 0x84,
+ 0xd8, 0x88, 0x58, 0x84, 0x00, 0x98, 0x0d, 0x90,
+ 0x05, 0x94, 0x20, 0x89, 0x08, 0x38, 0x20, 0x81,
+ 0x05, 0x98, 0x01, 0x68, 0x08, 0x31, 0x01, 0x60,
+ 0x00, 0x20, 0x0a, 0x90, 0x0c, 0x90, 0x3c, 0x00,
+ 0x64, 0x8c, 0x00, 0x00, 0x00, 0x21, 0x11, 0x20,
+ 0x09, 0xf0, 0x78, 0xfb, 0x05, 0x49, 0x06, 0x4a,
+ 0x08, 0x68, 0x01, 0x30, 0x08, 0x60, 0x02, 0x21,
+ 0x02, 0xa8, 0x01, 0xf0, 0xcd, 0xfc, 0x12, 0xb0,
+ 0x10, 0xbd, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00,
+ 0x55, 0x8b, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x20,
+ 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, 0x2b, 0x21,
+ 0x0a, 0xf0, 0x8a, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0xa0, 0x8c, 0x00, 0x00, 0xf7, 0xb5,
+ 0x04, 0x1c, 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43,
+ 0x17, 0x1c, 0x06, 0x2c, 0x01, 0xd3, 0xf8, 0xf7,
+ 0x26, 0xfb, 0x0b, 0x48, 0x05, 0x5d, 0x29, 0x1c,
+ 0x00, 0x20, 0xf8, 0xf7, 0x8c, 0xfc, 0x04, 0x1c,
+ 0x00, 0x68, 0x01, 0x99, 0x2a, 0x1c, 0xf7, 0xf7,
+ 0x16, 0xfc, 0x39, 0x1c, 0x20, 0x1c, 0xf8, 0xf7,
+ 0xa2, 0xfb, 0x22, 0x1c, 0x31, 0x1c, 0x00, 0x23,
+ 0x02, 0x20, 0x3c, 0x00, 0xdc, 0x8c, 0x00, 0x00,
+ 0xf8, 0xf7, 0x68, 0xf8, 0xfe, 0xbd, 0x00, 0x00,
+ 0x20, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x1c,
+ 0x80, 0xb5, 0x00, 0x23, 0x01, 0x20, 0xf8, 0xf7,
+ 0x5d, 0xf8, 0x80, 0xbd, 0xff, 0xb5, 0x9f, 0xb0,
+ 0x1f, 0x1c, 0x05, 0x1c, 0x0a, 0x30, 0x1e, 0x90,
+ 0x1c, 0xaa, 0x1d, 0xa9, 0x0a, 0xf0, 0x00, 0xff,
+ 0x00, 0x28, 0x71, 0xd0, 0x00, 0x2f, 0x09, 0xd0,
+ 0x0a, 0x21, 0x00, 0x20, 0x3c, 0x00, 0x18, 0x8d,
+ 0x00, 0x00, 0xf8, 0xf7, 0x5e, 0xfc, 0x06, 0x68,
+ 0x04, 0x1c, 0x30, 0x1d, 0xfa, 0xf7, 0xaf, 0xfa,
+ 0x05, 0xe0, 0x04, 0x21, 0x00, 0x20, 0xf8, 0xf7,
+ 0x54, 0xfc, 0x06, 0x68, 0x04, 0x1c, 0x28, 0x89,
+ 0x36, 0x49, 0x01, 0x22, 0x08, 0x80, 0x70, 0x80,
+ 0xe8, 0x88, 0x14, 0xa9, 0x30, 0x80, 0x19, 0xa8,
+ 0xfc, 0xf7, 0xf5, 0xfc, 0xfc, 0xf7, 0xff, 0xfb,
+ 0x01, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x3c, 0x00,
+ 0x54, 0x8d, 0x00, 0x00, 0x20, 0x1c, 0x01, 0xf0,
+ 0xef, 0xf8, 0x19, 0xa9, 0x20, 0x1c, 0x01, 0xf0,
+ 0xeb, 0xf8, 0x14, 0xa9, 0x20, 0x1c, 0x01, 0xf0,
+ 0xe7, 0xf8, 0x20, 0x1c, 0x20, 0x99, 0xfd, 0xf7,
+ 0x4b, 0xfd, 0x00, 0x22, 0x02, 0x21, 0x01, 0xf0,
+ 0x33, 0xfd, 0x06, 0x1c, 0x1c, 0x99, 0x00, 0x20,
+ 0x88, 0x61, 0x30, 0x1c, 0xf8, 0xf7, 0x1c, 0xfa,
+ 0x00, 0x2e, 0x0b, 0xd0, 0x30, 0x7a, 0x00, 0x28,
+ 0x3c, 0x00, 0x90, 0x8d, 0x00, 0x00, 0x02, 0xd0,
+ 0x40, 0x21, 0x08, 0x43, 0x30, 0x72, 0x1c, 0x98,
+ 0x02, 0x22, 0x81, 0x69, 0x11, 0x43, 0x81, 0x61,
+ 0x04, 0xe0, 0x1c, 0x99, 0x02, 0x22, 0x88, 0x69,
+ 0x90, 0x43, 0x88, 0x61, 0x1d, 0xaa, 0x06, 0xca,
+ 0x01, 0xa8, 0x05, 0xf0, 0x58, 0xfb, 0x09, 0xa8,
+ 0x00, 0x2f, 0x02, 0xd0, 0x02, 0x22, 0x42, 0x72,
+ 0x01, 0xe0, 0x00, 0x21, 0x41, 0x72, 0x04, 0x94,
+ 0x01, 0xa8, 0x3c, 0x00, 0xcc, 0x8d, 0x00, 0x00,
+ 0x04, 0xf0, 0x7a, 0xfb, 0x01, 0x21, 0x1c, 0x98,
+ 0x08, 0xf0, 0xc8, 0xff, 0x00, 0x2f, 0x04, 0xd0,
+ 0x1c, 0x98, 0x01, 0x22, 0x81, 0x69, 0x11, 0x43,
+ 0x81, 0x61, 0xa8, 0x88, 0x1c, 0x9c, 0x01, 0xf0,
+ 0x9f, 0xfe, 0x02, 0x1c, 0x21, 0x1c, 0x00, 0xe0,
+ 0x04, 0xe0, 0x07, 0x48, 0x40, 0x88, 0x09, 0xf0,
+ 0x1f, 0xf8, 0x04, 0xe0, 0x3a, 0x1c, 0x00, 0x21,
+ 0x05, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0x08, 0x8e,
+ 0x00, 0x00, 0x9b, 0xf8, 0x00, 0x20, 0x23, 0xb0,
+ 0xf0, 0xbd, 0xfc, 0x60, 0x01, 0x00, 0x98, 0x7c,
+ 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68,
+ 0x05, 0x68, 0xa0, 0x1d, 0x01, 0xf0, 0x95, 0xff,
+ 0x00, 0x28, 0x45, 0xd0, 0x21, 0x1c, 0x14, 0x31,
+ 0x20, 0x1c, 0x6a, 0x46, 0x0a, 0xf0, 0x55, 0xfe,
+ 0x00, 0x28, 0x3d, 0xd0, 0xfc, 0xf7, 0x7d, 0xfa,
+ 0x00, 0x28, 0x39, 0xd1, 0x00, 0x98, 0x3c, 0x00,
+ 0x44, 0x8e, 0x00, 0x00, 0x4b, 0x21, 0x09, 0x5c,
+ 0x01, 0x29, 0x34, 0xd1, 0x04, 0x26, 0x09, 0xf0,
+ 0x19, 0xf9, 0x68, 0x88, 0x00, 0x28, 0x1b, 0xd1,
+ 0xa8, 0x88, 0x03, 0x21, 0x89, 0x03, 0x88, 0x43,
+ 0x15, 0x49, 0x00, 0x26, 0x08, 0x80, 0x01, 0x22,
+ 0x02, 0x21, 0x20, 0x69, 0x01, 0xf0, 0xb8, 0xfc,
+ 0x04, 0x1c, 0x14, 0xd0, 0x00, 0x98, 0x80, 0x69,
+ 0x80, 0x07, 0x10, 0xd5, 0xf8, 0xf7, 0x9a, 0xf9,
+ 0x3c, 0x00, 0x80, 0x8e, 0x00, 0x00, 0x20, 0x1c,
+ 0xf8, 0xf7, 0xdd, 0xf8, 0x00, 0x28, 0x09, 0xd1,
+ 0xf8, 0xf7, 0x7f, 0xf9, 0x01, 0x26, 0x00, 0x98,
+ 0x02, 0x22, 0x81, 0x69, 0x91, 0x43, 0x81, 0x61,
+ 0x00, 0x21, 0x01, 0xe0, 0x00, 0x98, 0x02, 0x21,
+ 0x08, 0xf0, 0x61, 0xff, 0x00, 0x98, 0x80, 0x69,
+ 0xa9, 0x88, 0xc2, 0x07, 0xd2, 0x0f, 0x30, 0x1c,
+ 0xf9, 0xf7, 0x45, 0xf8, 0xf8, 0xbd, 0xfa, 0x60,
+ 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x8e, 0x00, 0x00,
+ 0x1c, 0xb5, 0x04, 0x69, 0x00, 0x23, 0x00, 0x22,
+ 0x00, 0x2c, 0x13, 0xd1, 0x4b, 0x24, 0x24, 0x5c,
+ 0x02, 0x2c, 0x03, 0xd1, 0x02, 0x29, 0x05, 0xd0,
+ 0x01, 0x22, 0x03, 0xe0, 0x02, 0x29, 0x01, 0xd1,
+ 0x01, 0x22, 0x01, 0x23, 0x00, 0x2a, 0x05, 0xd0,
+ 0x00, 0x90, 0x04, 0x20, 0x01, 0x93, 0x69, 0x46,
+ 0x09, 0xf0, 0x36, 0xfa, 0x1c, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x8e,
+ 0x00, 0x00, 0xf2, 0x21, 0x0f, 0x20, 0x0c, 0x4d,
+ 0x0a, 0xf0, 0x99, 0xfb, 0x28, 0x78, 0x08, 0x28,
+ 0x0b, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x07, 0x03, 0x03, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x00, 0x2c, 0x01, 0xd1, 0x05, 0xf0,
+ 0xbc, 0xfb, 0xb0, 0xbd, 0x01, 0x2c, 0xfc, 0xd1,
+ 0xff, 0x20, 0x07, 0xf0, 0x38, 0xfa, 0xb0, 0xbd,
+ 0x00, 0x00, 0x74, 0x66, 0x01, 0x00, 0x3c, 0x00,
+ 0x34, 0x8f, 0x00, 0x00, 0x8c, 0xb5, 0x05, 0x4a,
+ 0x00, 0xab, 0x11, 0x72, 0x00, 0x90, 0x19, 0x71,
+ 0x69, 0x46, 0x08, 0x20, 0x09, 0xf0, 0x0a, 0xfa,
+ 0x8c, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00,
+ 0xf3, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x27,
+ 0x85, 0xb0, 0x06, 0x68, 0x09, 0xf0, 0x26, 0xff,
+ 0x98, 0x49, 0x48, 0x63, 0x20, 0x69, 0x03, 0x21,
+ 0x01, 0xf0, 0x08, 0xfc, 0x96, 0x4d, 0x00, 0x28,
+ 0x3c, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x4d, 0xd0,
+ 0x95, 0x49, 0x40, 0x31, 0x09, 0x79, 0x80, 0x78,
+ 0x81, 0x42, 0x47, 0xd1, 0x01, 0x21, 0x20, 0x69,
+ 0x01, 0xf0, 0xfb, 0xfb, 0x02, 0x90, 0x20, 0x69,
+ 0x32, 0x21, 0x01, 0xf0, 0xf6, 0xfb, 0x01, 0x90,
+ 0x02, 0x1c, 0x8d, 0x48, 0x02, 0x99, 0xfc, 0xf7,
+ 0x46, 0xff, 0x00, 0x28, 0x36, 0xd0, 0x00, 0x23,
+ 0x8a, 0x48, 0x02, 0x99, 0x01, 0x9a, 0xfc, 0xf7,
+ 0xe4, 0xfe, 0x3c, 0x00, 0xac, 0x8f, 0x00, 0x00,
+ 0x0b, 0x28, 0x2e, 0xd1, 0x86, 0x4a, 0x51, 0x88,
+ 0x70, 0x89, 0x41, 0x40, 0x03, 0x91, 0x0b, 0x1c,
+ 0x84, 0x49, 0x0b, 0x40, 0x25, 0xd1, 0x50, 0x80,
+ 0x03, 0x99, 0x17, 0x1c, 0x00, 0x29, 0x0b, 0xd0,
+ 0x03, 0x99, 0x48, 0x05, 0x02, 0xd5, 0x38, 0x1c,
+ 0xfc, 0xf7, 0x40, 0xfe, 0x03, 0x99, 0x88, 0x06,
+ 0x02, 0xd5, 0x38, 0x1c, 0xfc, 0xf7, 0x24, 0xfe,
+ 0x2a, 0x21, 0x20, 0x69, 0x3c, 0x00, 0xe8, 0x8f,
+ 0x00, 0x00, 0x01, 0xf0, 0xc8, 0xfb, 0x00, 0x28,
+ 0x0d, 0xd0, 0x80, 0x78, 0xe9, 0x69, 0x81, 0x42,
+ 0x09, 0xd0, 0xe8, 0x61, 0x38, 0x1c, 0xfc, 0xf7,
+ 0x16, 0xfe, 0x38, 0x1c, 0xfc, 0xf7, 0x07, 0xfe,
+ 0x38, 0x1c, 0xfc, 0xf7, 0x26, 0xfe, 0x00, 0x27,
+ 0x20, 0x1c, 0x20, 0x30, 0x04, 0x90, 0x40, 0x7a,
+ 0x08, 0x28, 0x71, 0xd1, 0x0a, 0xf0, 0xd1, 0xfc,
+ 0x00, 0x20, 0x68, 0x61, 0x00, 0x23, 0x3c, 0x00,
+ 0x24, 0x90, 0x00, 0x00, 0x2b, 0x61, 0xa8, 0x68,
+ 0x66, 0x49, 0x01, 0x30, 0xa8, 0x60, 0x30, 0x89,
+ 0x5c, 0x31, 0x88, 0x82, 0x01, 0xf0, 0x7a, 0xfd,
+ 0x62, 0x49, 0x5c, 0x31, 0x08, 0x61, 0x22, 0x6a,
+ 0x04, 0x98, 0x18, 0x21, 0x00, 0x7a, 0x01, 0xf0,
+ 0x33, 0xfe, 0xe1, 0x6a, 0x40, 0x18, 0x03, 0x90,
+ 0x5c, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x0d, 0xd0,
+ 0x00, 0x2f, 0x0b, 0xd1, 0x59, 0x48, 0x01, 0x23,
+ 0x3c, 0x00, 0x60, 0x90, 0x00, 0x00, 0x5c, 0x30,
+ 0x01, 0x68, 0x1b, 0x07, 0x00, 0x22, 0x30, 0x68,
+ 0x09, 0xf0, 0x49, 0xff, 0x00, 0x28, 0x00, 0xd1,
+ 0x05, 0x27, 0x00, 0x21, 0xa0, 0x6b, 0x0a, 0xf0,
+ 0xce, 0xfc, 0x00, 0x21, 0x20, 0x6c, 0x0a, 0xf0,
+ 0xe8, 0xfc, 0x4f, 0x4b, 0x03, 0xce, 0x03, 0x9a,
+ 0x5c, 0x33, 0xfc, 0xf7, 0x88, 0xfd, 0x00, 0x20,
+ 0x4c, 0x4e, 0x05, 0x21, 0xb0, 0x63, 0x20, 0x69,
+ 0x01, 0xf0, 0x3c, 0x00, 0x9c, 0x90, 0x00, 0x00,
+ 0x6f, 0xfb, 0x01, 0x1c, 0x01, 0xd1, 0xf0, 0x60,
+ 0x1c, 0xe0, 0x01, 0x20, 0xf0, 0x60, 0x88, 0x78,
+ 0x45, 0x4a, 0x01, 0x32, 0x10, 0x70, 0xc8, 0x78,
+ 0x50, 0x70, 0x47, 0x4a, 0x10, 0x70, 0x30, 0x69,
+ 0x00, 0x28, 0x0a, 0xd0, 0x4a, 0x78, 0x08, 0x79,
+ 0x05, 0x31, 0x09, 0xf0, 0xdd, 0xfa, 0x31, 0x69,
+ 0xf7, 0xf7, 0x85, 0xf9, 0xf0, 0x68, 0x00, 0x28,
+ 0x04, 0xd0, 0x3b, 0x4a, 0x3c, 0x00, 0xd8, 0x90,
+ 0x00, 0x00, 0x01, 0x32, 0x10, 0x78, 0x00, 0x28,
+ 0x08, 0xd1, 0x00, 0x20, 0xa8, 0x61, 0x71, 0x6a,
+ 0x00, 0x29, 0x03, 0xd0, 0x20, 0x1c, 0x14, 0x30,
+ 0xf7, 0xf7, 0x74, 0xf9, 0x34, 0x4a, 0x5c, 0x32,
+ 0x10, 0x69, 0x31, 0x6a, 0x41, 0x18, 0x00, 0xe0,
+ 0x20, 0xe0, 0x0a, 0x23, 0xd0, 0x68, 0x0a, 0x22,
+ 0x09, 0xf0, 0xfb, 0xfe, 0x00, 0x28, 0x07, 0xd0,
+ 0x2d, 0x4a, 0x31, 0x6a, 0x5c, 0x32, 0x3c, 0x00,
+ 0x14, 0x91, 0x00, 0x00, 0xd0, 0x68, 0x40, 0x1a,
+ 0x11, 0x69, 0x40, 0x1a, 0x70, 0x60, 0x29, 0x4a,
+ 0x5c, 0x32, 0xd0, 0x68, 0x30, 0x62, 0xf0, 0x69,
+ 0x00, 0x28, 0x04, 0xd0, 0xfa, 0xf7, 0x00, 0xfd,
+ 0x01, 0x20, 0xfa, 0xf7, 0xa1, 0xfc, 0xfa, 0xf7,
+ 0x81, 0xfc, 0x27, 0x48, 0x00, 0x68, 0x03, 0xf0,
+ 0x07, 0xf9, 0x06, 0x98, 0x00, 0x28, 0x03, 0xd1,
+ 0x1e, 0x4e, 0x00, 0x23, 0xb3, 0x60, 0x16, 0xe0,
+ 0x3c, 0x00, 0x50, 0x91, 0x00, 0x00, 0x1c, 0x4e,
+ 0x01, 0x20, 0xb0, 0x60, 0x06, 0x98, 0x01, 0x68,
+ 0x40, 0x68, 0xb0, 0x65, 0x19, 0x48, 0x71, 0x65,
+ 0x54, 0x30, 0xc0, 0x88, 0x00, 0x28, 0x09, 0xd0,
+ 0xb1, 0x69, 0x00, 0x29, 0x06, 0xd0, 0x01, 0xf0,
+ 0xdc, 0xfc, 0x01, 0x1c, 0xe0, 0x6a, 0xb2, 0x69,
+ 0xf7, 0xf7, 0x2f, 0xf9, 0x00, 0x2f, 0x15, 0xd1,
+ 0x12, 0x48, 0x01, 0x69, 0x00, 0x29, 0x08, 0xd1,
+ 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x91, 0x00, 0x00,
+ 0x01, 0x61, 0x2a, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0x00, 0x21, 0x00, 0x20, 0xf7, 0xf7, 0x20, 0xf9,
+ 0x09, 0x49, 0x00, 0x23, 0xcb, 0x62, 0x2b, 0x61,
+ 0x6b, 0x61, 0x06, 0xf0, 0xb5, 0xf8, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x6b, 0x68, 0x06, 0x48, 0x00, 0x2b,
+ 0xf9, 0xd0, 0x02, 0x1d, 0x11, 0x1c, 0x38, 0x1c,
+ 0xf7, 0xf7, 0x0f, 0xf9, 0xf3, 0xe7, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x91,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xf4, 0x67,
+ 0x01, 0x00, 0x03, 0x08, 0x00, 0x00, 0xf8, 0x60,
+ 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x08, 0xb5,
+ 0xf8, 0xf7, 0x2f, 0xfd, 0x00, 0x90, 0x00, 0xab,
+ 0x18, 0x88, 0x00, 0x28, 0x0c, 0xd0, 0x05, 0xf0,
+ 0x50, 0xff, 0x00, 0xab, 0x59, 0x88, 0x18, 0x88,
+ 0x05, 0xf0, 0x6d, 0xf9, 0xfe, 0xf7, 0x97, 0xf8,
+ 0x03, 0x20, 0xfb, 0xf7, 0x0e, 0xf8, 0x3c, 0x00,
+ 0x04, 0x92, 0x00, 0x00, 0x08, 0xbd, 0x01, 0x20,
+ 0xff, 0xf7, 0xb2, 0xfb, 0x00, 0x20, 0x08, 0xf0,
+ 0x8d, 0xfe, 0xf7, 0xe7, 0xf8, 0xb5, 0x4f, 0x49,
+ 0x8c, 0x68, 0x20, 0x6a, 0x00, 0x68, 0x05, 0x78,
+ 0xfc, 0xf7, 0x68, 0xfa, 0x00, 0x28, 0x12, 0xd0,
+ 0x2a, 0x07, 0x92, 0x0f, 0x01, 0x21, 0x01, 0x2a,
+ 0x00, 0xd0, 0x00, 0x21, 0x00, 0x29, 0x03, 0xd0,
+ 0x29, 0x06, 0x09, 0x0f, 0x0b, 0x29, 0x06, 0xd1,
+ 0x3c, 0x00, 0x40, 0x92, 0x00, 0x00, 0x2a, 0x21,
+ 0x09, 0x5d, 0x08, 0x18, 0x90, 0x30, 0x00, 0x7b,
+ 0xf9, 0xf7, 0x0d, 0xfc, 0x41, 0x4f, 0x3c, 0x3f,
+ 0xb8, 0x6b, 0x79, 0x6b, 0xf7, 0xf7, 0xc0, 0xf8,
+ 0xa0, 0x6c, 0x00, 0x26, 0xc6, 0x60, 0x60, 0x6b,
+ 0x80, 0x08, 0x04, 0xd0, 0xb8, 0x69, 0x01, 0x30,
+ 0xb8, 0x61, 0x06, 0xf0, 0xdc, 0xf9, 0x39, 0x4d,
+ 0x28, 0x69, 0x80, 0x05, 0x80, 0x0f, 0x08, 0xd1,
+ 0x78, 0x69, 0x3c, 0x00, 0x7c, 0x92, 0x00, 0x00,
+ 0x04, 0x21, 0x01, 0x30, 0x78, 0x61, 0x60, 0x6b,
+ 0x40, 0x08, 0x40, 0x00, 0x08, 0x43, 0x60, 0x63,
+ 0xb8, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x60, 0x6b,
+ 0x08, 0x21, 0x08, 0x43, 0x60, 0x63, 0x20, 0x1c,
+ 0x20, 0x30, 0x00, 0x90, 0x39, 0x68, 0xf7, 0xf7,
+ 0x9a, 0xf8, 0x03, 0x20, 0x00, 0x02, 0x28, 0x60,
+ 0x2b, 0x49, 0x88, 0x68, 0xa0, 0x63, 0xc8, 0x68,
+ 0xe0, 0x63, 0x08, 0x79, 0x3c, 0x00, 0xb8, 0x92,
+ 0x00, 0x00, 0xc0, 0x06, 0xc0, 0x0e, 0x25, 0x1c,
+ 0x40, 0x35, 0x28, 0x71, 0x48, 0x79, 0x68, 0x71,
+ 0x23, 0x48, 0x3c, 0x38, 0x46, 0x62, 0x00, 0x98,
+ 0x80, 0x7a, 0x01, 0xf0, 0x5e, 0xfd, 0x00, 0x21,
+ 0x00, 0x28, 0x21, 0x4a, 0x01, 0xd0, 0x11, 0x78,
+ 0x03, 0xe0, 0x93, 0x78, 0xdb, 0x07, 0x00, 0xd5,
+ 0x51, 0x78, 0xa9, 0x71, 0x00, 0x28, 0x04, 0xd0,
+ 0x1b, 0x49, 0x14, 0x31, 0x08, 0x68, 0x3c, 0x00,
+ 0xf4, 0x92, 0x00, 0x00, 0x20, 0x64, 0x00, 0xe0,
+ 0x6e, 0x80, 0xb8, 0x6a, 0xc0, 0x07, 0x02, 0xd5,
+ 0xff, 0x20, 0x28, 0x71, 0xae, 0x71, 0xe6, 0x61,
+ 0xb8, 0x68, 0x01, 0x30, 0xb8, 0x60, 0x79, 0x68,
+ 0x88, 0x42, 0x03, 0xd0, 0x0b, 0x21, 0x85, 0x20,
+ 0xf7, 0xf7, 0xc4, 0xff, 0x0d, 0x49, 0x88, 0x68,
+ 0xc0, 0x6c, 0x88, 0x60, 0xfb, 0x6a, 0x00, 0x2b,
+ 0x0c, 0xd0, 0x0e, 0x4a, 0xd4, 0x7b, 0x00, 0x2b,
+ 0x3c, 0x00, 0x30, 0x93, 0x00, 0x00, 0x02, 0xdd,
+ 0x7f, 0x2c, 0x05, 0xd2, 0x01, 0xe0, 0x00, 0x2c,
+ 0x02, 0xd0, 0xd4, 0x7b, 0xe3, 0x18, 0xd3, 0x73,
+ 0xfe, 0x62, 0xc9, 0x68, 0x88, 0x42, 0x03, 0xd1,
+ 0x05, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0xa9, 0xff,
+ 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xe8, 0x80,
+ 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0xfe, 0xb5,
+ 0x30, 0x4c, 0x3c, 0x00, 0x6c, 0x93, 0x00, 0x00,
+ 0xa0, 0x6b, 0x21, 0x6b, 0xf7, 0xf7, 0x33, 0xf8,
+ 0x2d, 0x49, 0x3c, 0x31, 0x8e, 0x68, 0x70, 0x8b,
+ 0x06, 0x28, 0x04, 0xd2, 0xe0, 0x69, 0x01, 0x30,
+ 0xe0, 0x61, 0x0e, 0x20, 0x30, 0x85, 0x28, 0x49,
+ 0x3c, 0x31, 0x0d, 0x68, 0x00, 0x2d, 0x03, 0xd1,
+ 0x03, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0x84, 0xff,
+ 0x24, 0x48, 0x45, 0x61, 0x35, 0x62, 0x31, 0x8d,
+ 0xef, 0x68, 0x04, 0x39, 0x3c, 0x00, 0xa8, 0x93,
+ 0x00, 0x00, 0x0c, 0x04, 0x01, 0x21, 0x02, 0x91,
+ 0x24, 0x0c, 0x00, 0x21, 0x01, 0x91, 0x1d, 0x48,
+ 0x3c, 0x30, 0x80, 0x8a, 0xa0, 0x42, 0x03, 0xd3,
+ 0x2c, 0x81, 0xee, 0x60, 0x00, 0x24, 0x0b, 0xe0,
+ 0x00, 0x2f, 0x04, 0xd1, 0x03, 0x21, 0x85, 0x20,
+ 0xf7, 0xf7, 0x69, 0xff, 0x04, 0xe0, 0x3d, 0x1c,
+ 0x20, 0x1a, 0x04, 0x04, 0xff, 0x68, 0x24, 0x0c,
+ 0x02, 0x98, 0x00, 0x28, 0x04, 0xd0, 0x3c, 0x00,
+ 0xe4, 0x93, 0x00, 0x00, 0x12, 0x49, 0x01, 0x20,
+ 0x08, 0x61, 0x00, 0x20, 0x02, 0x90, 0x01, 0x98,
+ 0x01, 0x30, 0x01, 0x90, 0x00, 0x2c, 0xdd, 0xd1,
+ 0x0c, 0x48, 0x0c, 0x4c, 0x3c, 0x30, 0x07, 0x60,
+ 0x01, 0x98, 0x30, 0x65, 0xb5, 0x64, 0x30, 0x6a,
+ 0x00, 0x68, 0x60, 0x62, 0x60, 0x68, 0x01, 0x30,
+ 0x60, 0x60, 0xa1, 0x68, 0x01, 0x31, 0x88, 0x42,
+ 0x03, 0xd0, 0x0a, 0x21, 0x85, 0x20, 0xf7, 0xf7,
+ 0x3c, 0x00, 0x20, 0x94, 0x00, 0x00, 0x41, 0xff,
+ 0x04, 0x48, 0x00, 0x68, 0xa0, 0x62, 0xfe, 0xbd,
+ 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x00, 0x30,
+ 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5,
+ 0x05, 0x1c, 0x01, 0x21, 0x0f, 0x20, 0x0a, 0xf0,
+ 0xf8, 0xf8, 0xf2, 0x21, 0x0f, 0x20, 0x0a, 0xf0,
+ 0xf4, 0xf8, 0x0c, 0x48, 0x0c, 0x4c, 0x00, 0x68,
+ 0x14, 0x3c, 0x00, 0x28, 0x0c, 0xd0, 0xe0, 0x78,
+ 0x01, 0x28, 0x3c, 0x00, 0x5c, 0x94, 0x00, 0x00,
+ 0x09, 0xd0, 0x01, 0x22, 0x29, 0x1c, 0x0f, 0x20,
+ 0x0a, 0xf0, 0xac, 0xf8, 0x60, 0x78, 0x02, 0x28,
+ 0x06, 0xd0, 0x01, 0x20, 0x03, 0xe0, 0x60, 0x78,
+ 0x02, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x60, 0x70,
+ 0xb0, 0xbd, 0x00, 0x00, 0x98, 0x66, 0x01, 0x00,
+ 0x02, 0x22, 0x00, 0x28, 0x80, 0xb5, 0x00, 0xd1,
+ 0x03, 0x22, 0x03, 0x49, 0x0e, 0x20, 0x0a, 0xf0,
+ 0x9b, 0xf8, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x94,
+ 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x50, 0xc3,
+ 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x23, 0x00, 0x22,
+ 0x00, 0x28, 0x2e, 0xd0, 0x06, 0x89, 0x04, 0x68,
+ 0x75, 0x1e, 0x2d, 0x04, 0xb6, 0x1a, 0xf6, 0x07,
+ 0x2d, 0x0c, 0xf6, 0x0f, 0xb4, 0x46, 0x0e, 0xe0,
+ 0xa7, 0x5c, 0xa6, 0x18, 0x02, 0x33, 0x00, 0x97,
+ 0x77, 0x78, 0xa7, 0x54, 0x02, 0x32, 0x12, 0x04,
+ 0x00, 0x9f, 0x12, 0x0c, 0x00, 0x29, 0x3c, 0x00,
+ 0xd4, 0x94, 0x00, 0x00, 0x77, 0x70, 0x01, 0xdd,
+ 0x8b, 0x42, 0x15, 0xda, 0xaa, 0x42, 0xee, 0xd3,
+ 0xc0, 0x68, 0x00, 0x28, 0x10, 0xd0, 0x02, 0x89,
+ 0x00, 0x2a, 0xf9, 0xd0, 0x62, 0x46, 0x00, 0x2a,
+ 0x0b, 0xd0, 0x02, 0x68, 0x66, 0x5d, 0x17, 0x78,
+ 0x02, 0x33, 0x67, 0x55, 0x16, 0x70, 0x01, 0x22,
+ 0x00, 0x29, 0xd2, 0xdd, 0x8b, 0x42, 0xd0, 0xdb,
+ 0xf8, 0xbd, 0x00, 0x22, 0xcd, 0xe7, 0x00, 0x00,
+ 0x3c, 0x00, 0x10, 0x95, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x1c, 0x01, 0x20, 0xf8, 0xf7,
+ 0x5e, 0xfb, 0x0d, 0x49, 0x00, 0x28, 0xc8, 0x61,
+ 0x14, 0xd0, 0x62, 0x68, 0x42, 0x60, 0xa2, 0x7c,
+ 0x02, 0x72, 0xa2, 0x68, 0xc2, 0x60, 0xe2, 0x68,
+ 0x02, 0x61, 0x22, 0x8a, 0x02, 0x75, 0x0a, 0x1d,
+ 0x0a, 0x62, 0x12, 0x68, 0x00, 0x2a, 0xff, 0xd1,
+ 0x02, 0x60, 0x48, 0x60, 0x00, 0x20, 0xa8, 0x60,
+ 0x01, 0x20, 0x3c, 0x00, 0x4c, 0x95, 0x00, 0x00,
+ 0xb0, 0xbd, 0x01, 0x20, 0xfa, 0xe7, 0x00, 0x00,
+ 0xa4, 0x6e, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x40, 0x68, 0x0d, 0x1c, 0x43, 0x1c, 0x02, 0xd1,
+ 0x21, 0x1c, 0x09, 0x48, 0x08, 0xe0, 0x00, 0x20,
+ 0xf8, 0xf7, 0x34, 0xfb, 0x06, 0x49, 0x94, 0x39,
+ 0x08, 0x61, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c,
+ 0x00, 0xf0, 0x48, 0xfe, 0x00, 0xe0, 0x01, 0x20,
+ 0xa8, 0x60, 0x01, 0x20, 0x3c, 0x00, 0x88, 0x95,
+ 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0x38, 0x6f,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x97, 0x20,
+ 0xf7, 0xf7, 0x85, 0xfe, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x38, 0xb5, 0x0a, 0x1c, 0x14, 0x32,
+ 0x00, 0x92, 0x13, 0x1f, 0x05, 0x1c, 0x08, 0x3a,
+ 0x0c, 0x1c, 0x16, 0x31, 0x40, 0x68, 0xfe, 0xf7,
+ 0x6c, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20,
+ 0x00, 0xe0, 0x01, 0x20, 0x69, 0x68, 0x3c, 0x00,
+ 0xc4, 0x95, 0x00, 0x00, 0xa0, 0x60, 0x61, 0x60,
+ 0x01, 0x20, 0x38, 0xbd, 0x10, 0xb5, 0x0c, 0x1c,
+ 0x01, 0x7a, 0x00, 0x29, 0x0f, 0xd0, 0x01, 0x29,
+ 0x09, 0xd0, 0x02, 0x29, 0x03, 0xd1, 0x00, 0x21,
+ 0x00, 0x20, 0x0a, 0xf0, 0x73, 0xfc, 0x00, 0x20,
+ 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, 0x41, 0x68,
+ 0x01, 0x20, 0x0a, 0xf0, 0x6b, 0xfc, 0x00, 0xf0,
+ 0x0d, 0xf9, 0xf4, 0xe7, 0x80, 0xb5, 0x04, 0x49,
+ 0x3c, 0x00, 0x00, 0x96, 0x00, 0x00, 0x48, 0x68,
+ 0x01, 0x38, 0x48, 0x60, 0x01, 0xd1, 0x07, 0xf0,
+ 0x6e, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0xac, 0x79,
+ 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c,
+ 0x00, 0xf0, 0x4f, 0xfe, 0xa0, 0x60, 0x68, 0x68,
+ 0x60, 0x60, 0x01, 0x20, 0xb0, 0xbd, 0xb0, 0xb5,
+ 0x05, 0x1c, 0x0c, 0x1c, 0x00, 0xf0, 0x6f, 0xfe,
+ 0xa0, 0x60, 0x68, 0x68, 0x60, 0x60, 0x01, 0x20,
+ 0xb0, 0xbd, 0x3c, 0x00, 0x3c, 0x96, 0x00, 0x00,
+ 0x08, 0x1c, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x08, 0xc0, 0x01, 0x20, 0x70, 0x47,
+ 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x20, 0x79,
+ 0x20, 0x28, 0x01, 0xd2, 0x20, 0x20, 0x20, 0x71,
+ 0x66, 0x79, 0x00, 0x2e, 0x02, 0xd1, 0x25, 0x79,
+ 0x00, 0x22, 0x0d, 0xe0, 0x25, 0x79, 0x29, 0x1c,
+ 0x30, 0x1c, 0xf7, 0xf7, 0x4f, 0xf8, 0x00, 0x29,
+ 0x01, 0xd1, 0x32, 0x1c, 0x3c, 0x00, 0x78, 0x96,
+ 0x00, 0x00, 0x04, 0xe0, 0x70, 0x43, 0x80, 0x19,
+ 0x05, 0x06, 0x2d, 0x0e, 0x32, 0x1c, 0xe0, 0x79,
+ 0x29, 0x1c, 0x00, 0xf0, 0xf2, 0xf9, 0x20, 0x7a,
+ 0x2f, 0x49, 0xc0, 0x07, 0xc0, 0x0f, 0x08, 0x60,
+ 0x2e, 0x48, 0x00, 0x78, 0xc0, 0x07, 0x43, 0xd5,
+ 0xa1, 0x79, 0x2c, 0x4a, 0xc8, 0x07, 0x48, 0xd4,
+ 0x2c, 0x4e, 0x16, 0x60, 0x8b, 0x07, 0x2b, 0x48,
+ 0x08, 0xd5, 0xcc, 0x08, 0x01, 0x23, 0x3c, 0x00,
+ 0xb4, 0x96, 0x00, 0x00, 0xa3, 0x40, 0x03, 0x60,
+ 0x49, 0x07, 0x04, 0xd5, 0x28, 0x49, 0x11, 0x60,
+ 0x01, 0xe0, 0x40, 0x21, 0x01, 0x60, 0x13, 0x68,
+ 0x26, 0x4a, 0xb3, 0x42, 0x10, 0xd1, 0x54, 0x68,
+ 0x01, 0x68, 0x0c, 0x43, 0x54, 0x60, 0x14, 0x68,
+ 0x0c, 0x40, 0x01, 0xd0, 0x51, 0x61, 0x00, 0xe0,
+ 0x91, 0x61, 0x54, 0x68, 0x0c, 0x43, 0x54, 0x60,
+ 0x94, 0x68, 0x21, 0x43, 0x91, 0x60, 0x13, 0xe0,
+ 0x3c, 0x00, 0xf0, 0x96, 0x00, 0x00, 0x54, 0x7c,
+ 0x01, 0x68, 0x0c, 0x43, 0x54, 0x74, 0x14, 0x7c,
+ 0x0c, 0x40, 0x03, 0xd0, 0x14, 0x7c, 0x0c, 0x43,
+ 0x14, 0x74, 0x02, 0xe0, 0x14, 0x7c, 0x8c, 0x43,
+ 0x14, 0x74, 0x54, 0x7c, 0x0c, 0x43, 0x54, 0x74,
+ 0x94, 0x7c, 0x21, 0x43, 0x91, 0x74, 0xb3, 0x42,
+ 0x05, 0xd1, 0x00, 0x22, 0x01, 0x68, 0x03, 0x20,
+ 0xff, 0xf7, 0x8d, 0xf8, 0x09, 0xe0, 0x00, 0x68,
+ 0x00, 0x21, 0x3c, 0x00, 0x2c, 0x97, 0x00, 0x00,
+ 0x02, 0x06, 0x12, 0x0e, 0x03, 0x20, 0xff, 0xf7,
+ 0x85, 0xf8, 0x01, 0xe0, 0x0b, 0x48, 0x10, 0x60,
+ 0x00, 0x20, 0x38, 0x71, 0x7d, 0x71, 0xf7, 0xf7,
+ 0xe9, 0xfd, 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x00,
+ 0xcc, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00,
+ 0x5c, 0x5b, 0x01, 0x00, 0xb9, 0x9b, 0x00, 0x00,
+ 0x58, 0x5b, 0x01, 0x00, 0x95, 0x9b, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x97,
+ 0x00, 0x00, 0x55, 0x9b, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0d, 0x1c, 0x04, 0x30, 0x00, 0x24, 0xfe, 0xf7,
+ 0xd6, 0xfa, 0x01, 0x20, 0x6c, 0x60, 0xb0, 0xbd,
+ 0x00, 0x00, 0xf0, 0xb5, 0x07, 0x7a, 0x43, 0x68,
+ 0x04, 0x1c, 0x0e, 0x48, 0x0e, 0x1c, 0x00, 0x68,
+ 0x01, 0x25, 0x01, 0x1c, 0x9b, 0xb0, 0x06, 0xe0,
+ 0x4a, 0x68, 0x9a, 0x42, 0x02, 0xd1, 0x8f, 0x76,
+ 0x00, 0x25, 0x02, 0xe0, 0x09, 0x68, 0x3c, 0x00,
+ 0xa4, 0x97, 0x00, 0x00, 0x00, 0x29, 0xf6, 0xd1,
+ 0x00, 0x2d, 0x05, 0xd1, 0x21, 0x7a, 0x01, 0x29,
+ 0x02, 0xd1, 0x01, 0xa9, 0xf8, 0xf7, 0xa8, 0xf8,
+ 0x60, 0x68, 0x04, 0x36, 0x21, 0xc6, 0x1b, 0xb0,
+ 0x01, 0x20, 0xf0, 0xbd, 0xa4, 0x6e, 0x01, 0x00,
+ 0x10, 0xb5, 0x0c, 0x1c, 0x08, 0xf0, 0xae, 0xfc,
+ 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0x10, 0xb5, 0x0c, 0x1c, 0x07, 0xf0, 0x84, 0xfa,
+ 0x3c, 0x00, 0xe0, 0x97, 0x00, 0x00, 0x04, 0xf0,
+ 0x54, 0xff, 0x00, 0x20, 0x60, 0x60, 0x01, 0x20,
+ 0x10, 0xbd, 0x00, 0x20, 0xc0, 0x43, 0x48, 0x60,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5,
+ 0x0c, 0x1c, 0x00, 0x79, 0xfa, 0xf7, 0x07, 0xf8,
+ 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x00, 0xe0,
+ 0x02, 0x20, 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0x1c, 0xb5, 0x06, 0x4c, 0x20, 0x68,
+ 0x00, 0x28, 0x3c, 0x00, 0x1c, 0x98, 0x00, 0x00,
+ 0x07, 0xd0, 0x09, 0xf0, 0xc5, 0xfa, 0x01, 0x90,
+ 0x20, 0x68, 0x41, 0x68, 0x68, 0x46, 0xf6, 0xf7,
+ 0xd6, 0xfd, 0x1c, 0xbd, 0xac, 0x79, 0x01, 0x00,
+ 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0xac, 0x79, 0x01, 0x00, 0x0e, 0xb5, 0x06, 0x4b,
+ 0x1b, 0x68, 0x00, 0x2b, 0x06, 0xd0, 0x02, 0x90,
+ 0x00, 0x91, 0x01, 0x92, 0x68, 0x46, 0xd9, 0x68,
+ 0xf6, 0xf7, 0xc1, 0xfd, 0x3c, 0x00, 0x58, 0x98,
+ 0x00, 0x00, 0x0e, 0xbd, 0x00, 0x00, 0xac, 0x79,
+ 0x01, 0x00, 0x1c, 0xb5, 0x04, 0x1c, 0x07, 0xf0,
+ 0x4c, 0xfa, 0x06, 0x48, 0x41, 0x68, 0x01, 0x31,
+ 0x41, 0x60, 0x00, 0x94, 0x00, 0x21, 0x01, 0x91,
+ 0x00, 0x68, 0x01, 0x68, 0x68, 0x46, 0xf6, 0xf7,
+ 0xad, 0xfd, 0x1c, 0xbd, 0x00, 0x00, 0xac, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, 0xa3, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x1c, 0x3c, 0x00,
+ 0x94, 0x98, 0x00, 0x00, 0x80, 0x21, 0x03, 0x20,
+ 0x00, 0xf0, 0x5c, 0xf8, 0x01, 0x1c, 0x03, 0x48,
+ 0x00, 0x22, 0x43, 0x69, 0xf6, 0xf7, 0x9b, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0c, 0x1c, 0x13, 0x49, 0x05, 0x1c,
+ 0x08, 0x68, 0x16, 0x1c, 0x01, 0x30, 0x08, 0x60,
+ 0x00, 0x20, 0x20, 0x61, 0x22, 0x1c, 0x10, 0x32,
+ 0x28, 0x1d, 0x00, 0x21, 0x07, 0x1c, 0x00, 0x92,
+ 0x3c, 0x00, 0xd0, 0x98, 0x00, 0x00, 0x03, 0xf0,
+ 0xde, 0xfe, 0x20, 0x71, 0x20, 0x69, 0x00, 0x28,
+ 0x10, 0xd0, 0x01, 0x04, 0x09, 0x0c, 0x00, 0x20,
+ 0xf7, 0xf7, 0x79, 0xfe, 0x30, 0x60, 0x29, 0x1d,
+ 0x03, 0xc9, 0xa0, 0x60, 0xe1, 0x60, 0x30, 0x68,
+ 0x01, 0x68, 0x00, 0x9a, 0x38, 0x1c, 0x03, 0xf0,
+ 0xca, 0xfe, 0x20, 0x71, 0x01, 0x20, 0xf8, 0xbd,
+ 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x1c, 0x3c, 0x00, 0x0c, 0x99, 0x00, 0x00,
+ 0x08, 0x21, 0x04, 0x20, 0x09, 0xf0, 0x4e, 0xff,
+ 0x03, 0x20, 0x80, 0xbd, 0x10, 0xb5, 0x07, 0x4a,
+ 0x0c, 0x1c, 0x51, 0x68, 0x01, 0x31, 0x51, 0x60,
+ 0x01, 0x1c, 0x10, 0x31, 0xc2, 0x68, 0x04, 0x30,
+ 0x03, 0xf0, 0xf0, 0xfe, 0x20, 0x71, 0x00, 0x20,
+ 0x10, 0xbd, 0x00, 0x00, 0x10, 0x75, 0x01, 0x00,
+ 0x04, 0x49, 0x80, 0xb5, 0x81, 0x61, 0x08, 0x21,
+ 0x02, 0x1c, 0x03, 0x20, 0x3c, 0x00, 0x48, 0x99,
+ 0x00, 0x00, 0x09, 0xf0, 0x32, 0xff, 0x03, 0x20,
+ 0x80, 0xbd, 0x95, 0xd8, 0x00, 0x00, 0xf7, 0xb5,
+ 0x07, 0x1c, 0x16, 0x1c, 0x06, 0x21, 0x00, 0x20,
+ 0x82, 0xb0, 0xf7, 0xf7, 0x3a, 0xfe, 0x05, 0x1c,
+ 0x20, 0x48, 0x00, 0x78, 0x06, 0x28, 0x00, 0xd9,
+ 0x28, 0x81, 0x2c, 0x68, 0x00, 0x20, 0xa7, 0x70,
+ 0x03, 0x99, 0xe1, 0x70, 0x31, 0x1c, 0x03, 0xe0,
+ 0x0a, 0x89, 0x10, 0x18, 0x0f, 0x1c, 0x3c, 0x00,
+ 0x84, 0x99, 0x00, 0x00, 0xc9, 0x68, 0x00, 0x29,
+ 0xf9, 0xd1, 0x6b, 0x46, 0x01, 0xaa, 0x21, 0x1d,
+ 0x00, 0xf0, 0x34, 0xf8, 0x00, 0xab, 0x18, 0x78,
+ 0x60, 0x71, 0x18, 0x78, 0x00, 0x28, 0x17, 0xd0,
+ 0x11, 0x48, 0x40, 0x68, 0x00, 0x28, 0x08, 0xd0,
+ 0x19, 0x78, 0x00, 0x20, 0xf7, 0xf7, 0x14, 0xfe,
+ 0x01, 0x1c, 0x38, 0x1c, 0xf7, 0xf7, 0x30, 0xfd,
+ 0x0a, 0xe0, 0x38, 0x68, 0x00, 0x28, 0x02, 0xd1,
+ 0x3c, 0x00, 0xc0, 0x99, 0x00, 0x00, 0x3f, 0x60,
+ 0x01, 0x20, 0xb8, 0x61, 0x00, 0xab, 0x19, 0x78,
+ 0x38, 0x89, 0x40, 0x18, 0x38, 0x81, 0x00, 0xab,
+ 0x98, 0x88, 0x31, 0x1c, 0x02, 0x38, 0x20, 0x80,
+ 0x28, 0x1c, 0xf7, 0xf7, 0x1c, 0xfd, 0x28, 0x1c,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc8, 0x5c,
+ 0x01, 0x00, 0x01, 0x79, 0x42, 0x79, 0x00, 0x88,
+ 0x89, 0x18, 0x02, 0x39, 0x40, 0x1a, 0x70, 0x47,
+ 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x99, 0x00, 0x00,
+ 0x70, 0xb5, 0x08, 0x4d, 0x2c, 0x78, 0xad, 0x78,
+ 0x20, 0x18, 0x06, 0x1c, 0x00, 0x2d, 0x03, 0xd0,
+ 0x70, 0x19, 0x01, 0x38, 0x01, 0x3d, 0xa8, 0x43,
+ 0x10, 0x80, 0x80, 0x1b, 0x18, 0x70, 0x0c, 0x70,
+ 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x5c, 0x01, 0x00,
+ 0xb0, 0xb5, 0x04, 0x68, 0x0c, 0x4a, 0x21, 0x88,
+ 0x52, 0x78, 0x02, 0x31, 0x91, 0x42, 0x11, 0xd2,
+ 0x55, 0x1a, 0xf7, 0xf7, 0x3c, 0x00, 0x38, 0x9a,
+ 0x00, 0x00, 0xc9, 0xfd, 0x01, 0x68, 0x00, 0x29,
+ 0x02, 0xd1, 0x00, 0x60, 0x01, 0x21, 0x81, 0x61,
+ 0x01, 0x89, 0x49, 0x19, 0x01, 0x81, 0x20, 0x88,
+ 0x40, 0x19, 0x20, 0x80, 0x60, 0x79, 0x40, 0x19,
+ 0x60, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0xc8, 0x5c,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x06, 0x21,
+ 0xf1, 0x20, 0x09, 0xf0, 0xa2, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x1c, 0x02, 0x48, 0x3c, 0x00,
+ 0x74, 0x9a, 0x00, 0x00, 0x03, 0x70, 0x41, 0x70,
+ 0x82, 0x70, 0x70, 0x47, 0xc8, 0x5c, 0x01, 0x00,
+ 0xb0, 0xb5, 0x08, 0x1c, 0x09, 0x68, 0x15, 0x1c,
+ 0x8c, 0x78, 0xf7, 0xf7, 0x85, 0xfd, 0x04, 0x49,
+ 0xa0, 0x00, 0x09, 0x58, 0x00, 0x29, 0x02, 0xd0,
+ 0x28, 0x1c, 0xf6, 0xf7, 0x9e, 0xfc, 0xb0, 0xbd,
+ 0x84, 0x6d, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0xc0, 0x7a, 0xa1, 0x7a, 0xc6, 0x07, 0xf6, 0x0f,
+ 0x3c, 0x00, 0xb0, 0x9a, 0x00, 0x00, 0x32, 0x1c,
+ 0x20, 0x1d, 0x01, 0xf0, 0x3c, 0xf8, 0x60, 0x69,
+ 0x25, 0x4f, 0xc1, 0x07, 0x37, 0xd5, 0xb8, 0x69,
+ 0x00, 0x28, 0x01, 0xd0, 0xf6, 0xf7, 0x87, 0xfc,
+ 0x20, 0x68, 0x05, 0x68, 0x28, 0x88, 0x80, 0x07,
+ 0x34, 0xd1, 0x01, 0xaa, 0x02, 0xa9, 0x28, 0x1c,
+ 0x01, 0xf0, 0x0b, 0xfc, 0x28, 0x1c, 0x01, 0xf0,
+ 0x12, 0xfc, 0x00, 0x78, 0xc0, 0x07, 0x0a, 0xd4,
+ 0x60, 0x69, 0x3c, 0x00, 0xec, 0x9a, 0x00, 0x00,
+ 0x80, 0x07, 0x26, 0xd4, 0x33, 0x1c, 0x29, 0x1c,
+ 0xa2, 0x7a, 0x20, 0x69, 0x7d, 0x69, 0xf6, 0xf7,
+ 0x72, 0xfc, 0x1e, 0xe0, 0x00, 0xab, 0x18, 0x7a,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x28, 0x06, 0xd0,
+ 0x02, 0x28, 0x16, 0xd1, 0x28, 0x1c, 0x79, 0x6a,
+ 0xf6, 0xf7, 0x61, 0xfc, 0x11, 0xe0, 0x00, 0xab,
+ 0x18, 0x79, 0x0e, 0x28, 0x01, 0xd0, 0x0f, 0x28,
+ 0x0b, 0xd1, 0x28, 0x1c, 0x3c, 0x00, 0x28, 0x9b,
+ 0x00, 0x00, 0x39, 0x6a, 0xf6, 0xf7, 0x56, 0xfc,
+ 0x06, 0xe0, 0x00, 0x07, 0x80, 0x0f, 0x03, 0xd1,
+ 0x20, 0x69, 0xf9, 0x69, 0xf6, 0xf7, 0x4e, 0xfc,
+ 0x78, 0x6b, 0x21, 0x21, 0x01, 0x30, 0x78, 0x63,
+ 0x22, 0x1c, 0x80, 0x20, 0x09, 0xf0, 0x31, 0xfe,
+ 0xfe, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x0b, 0x49,
+ 0x18, 0xb5, 0x08, 0x78, 0xc0, 0x07, 0x11, 0xd5,
+ 0x0a, 0x4a, 0x10, 0x1c, 0x20, 0x30, 0x3c, 0x00,
+ 0x64, 0x9b, 0x00, 0x00, 0x84, 0x79, 0x00, 0xab,
+ 0x1c, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x08, 0x78,
+ 0x40, 0x23, 0x18, 0x43, 0x08, 0x70, 0x05, 0x48,
+ 0x00, 0x78, 0x08, 0x70, 0x00, 0xab, 0x18, 0x88,
+ 0xd0, 0x84, 0x18, 0xbd, 0x04, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0xe0, 0x60, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x05, 0x49, 0x10, 0xb5,
+ 0x88, 0x79, 0x05, 0x4b, 0x1a, 0x7c, 0x05, 0x4c,
+ 0x3c, 0x00, 0xa0, 0x9b, 0x00, 0x00, 0x24, 0x68,
+ 0x62, 0x40, 0x1a, 0x74, 0x88, 0x71, 0x10, 0xbd,
+ 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x58, 0x5b, 0x01, 0x00, 0x04, 0x49,
+ 0x0a, 0x68, 0x04, 0x48, 0x00, 0x68, 0x02, 0x40,
+ 0x01, 0xd0, 0x88, 0x61, 0x70, 0x47, 0x48, 0x61,
+ 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, 0x58, 0x5b,
+ 0x01, 0x00, 0x02, 0x1c, 0x01, 0x20, 0x00, 0x06,
+ 0x08, 0x43, 0x3c, 0x00, 0xdc, 0x9b, 0x00, 0x00,
+ 0x80, 0xb5, 0x2a, 0x21, 0x09, 0xf0, 0xe6, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x00, 0x29, 0x03, 0xd0, 0x81, 0x29, 0x07, 0xd1,
+ 0x81, 0x20, 0x00, 0xe0, 0x80, 0x20, 0x22, 0x1c,
+ 0x2c, 0x21, 0x09, 0xf0, 0xd7, 0xfd, 0x10, 0xbd,
+ 0x02, 0x21, 0x2c, 0x20, 0xf7, 0xf7, 0x4c, 0xfb,
+ 0x20, 0x1c, 0xf7, 0xf7, 0xc3, 0xfc, 0x10, 0xbd,
+ 0x80, 0xb5, 0xb4, 0xb0, 0x3c, 0x00, 0x18, 0x9c,
+ 0x00, 0x00, 0x01, 0x28, 0x06, 0xd0, 0x82, 0x28,
+ 0x1c, 0xd1, 0x1a, 0xa8, 0x07, 0xf0, 0x35, 0xfc,
+ 0x34, 0xb0, 0x80, 0xbd, 0x81, 0x29, 0x13, 0xd1,
+ 0x0d, 0x48, 0x0c, 0x4a, 0x81, 0x69, 0x00, 0x68,
+ 0x50, 0x32, 0x81, 0x42, 0x02, 0xd0, 0xd1, 0x6a,
+ 0x01, 0x29, 0x02, 0xd0, 0x11, 0x78, 0x02, 0x29,
+ 0x02, 0xd1, 0x07, 0xf0, 0x0a, 0xf9, 0xeb, 0xe7,
+ 0x69, 0x46, 0xf7, 0xf7, 0x5a, 0xfe, 0x3c, 0x00,
+ 0x54, 0x9c, 0x00, 0x00, 0xe7, 0xe7, 0x01, 0x21,
+ 0x00, 0xe0, 0x02, 0x21, 0x18, 0x20, 0xf7, 0xf7,
+ 0x21, 0xfb, 0xe0, 0xe7, 0xa4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x68, 0x17, 0x4d,
+ 0x9a, 0xb0, 0x68, 0x63, 0x08, 0xf0, 0x3e, 0xfa,
+ 0x20, 0x79, 0x14, 0x49, 0x13, 0x4a, 0x50, 0x39,
+ 0x2c, 0x3a, 0x02, 0x28, 0x0a, 0xd1, 0x90, 0x68,
+ 0x80, 0x02, 0xa8, 0x61, 0xc8, 0x68, 0xe8, 0x61,
+ 0x3c, 0x00, 0x90, 0x9c, 0x00, 0x00, 0x02, 0x20,
+ 0x28, 0x72, 0x07, 0xf0, 0xe4, 0xf8, 0x1a, 0xb0,
+ 0xb0, 0xbd, 0x03, 0x1c, 0x00, 0x20, 0x00, 0x2b,
+ 0x0b, 0xd1, 0x52, 0x68, 0x92, 0x02, 0xaa, 0x61,
+ 0x0a, 0x1c, 0x89, 0x68, 0xe9, 0x61, 0x28, 0x72,
+ 0x10, 0x68, 0x69, 0x46, 0xf7, 0xf7, 0x27, 0xfe,
+ 0xed, 0xe7, 0xa8, 0x61, 0x01, 0x20, 0x28, 0x72,
+ 0x28, 0x70, 0x00, 0x20, 0x06, 0xf0, 0x7d, 0xfa,
+ 0xe5, 0xe7, 0x3c, 0x00, 0xcc, 0x9c, 0x00, 0x00,
+ 0xf4, 0x6e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x07, 0x20, 0xf7, 0xf7, 0xe1, 0xfa, 0x80, 0xbd,
+ 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x24,
+ 0x19, 0x4a, 0x00, 0x26, 0xd5, 0x68, 0x11, 0x68,
+ 0x04, 0x35, 0x08, 0x1c, 0x91, 0x60, 0x02, 0xe0,
+ 0x01, 0x1c, 0x40, 0x19, 0x08, 0x60, 0x53, 0x68,
+ 0x83, 0x42, 0xf9, 0xd8, 0x3c, 0x00, 0x08, 0x9d,
+ 0x00, 0x00, 0x01, 0x34, 0x10, 0x32, 0x03, 0x2c,
+ 0x0e, 0x60, 0xee, 0xd3, 0xf6, 0xf7, 0xf1, 0xff,
+ 0x10, 0x48, 0x10, 0x49, 0x12, 0x4c, 0x08, 0x60,
+ 0x10, 0x49, 0x00, 0x20, 0x01, 0x22, 0x19, 0x23,
+ 0x5b, 0x01, 0x0c, 0x25, 0x43, 0x43, 0x1b, 0x19,
+ 0x45, 0x43, 0x4a, 0x51, 0x1f, 0x1c, 0x6d, 0x18,
+ 0xab, 0x60, 0x6b, 0x60, 0x00, 0x25, 0x1e, 0x1c,
+ 0x14, 0x36, 0x9e, 0x60, 0x33, 0x1c, 0x3c, 0x00,
+ 0x44, 0x9d, 0x00, 0x00, 0x01, 0x35, 0x27, 0x2d,
+ 0xf8, 0xdb, 0x01, 0x30, 0x03, 0x28, 0x9f, 0x60,
+ 0xe8, 0xdb, 0xf8, 0xbd, 0x20, 0x57, 0x01, 0x00,
+ 0x14, 0xc8, 0x01, 0x00, 0xb4, 0xcf, 0x01, 0x00,
+ 0x18, 0xd9, 0x01, 0x00, 0xb8, 0xcf, 0x01, 0x00,
+ 0xb0, 0xb5, 0x07, 0x4c, 0x25, 0x1c, 0xc0, 0x35,
+ 0x28, 0x6b, 0x1e, 0x21, 0x00, 0xf0, 0xf2, 0xf9,
+ 0xa2, 0x6b, 0x20, 0x1c, 0xdc, 0x30, 0x29, 0x6b,
+ 0x3c, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0xf0,
+ 0xb6, 0xf9, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x00, 0x20, 0x10, 0x22, 0x10, 0xb5,
+ 0x0a, 0x49, 0x05, 0xe0, 0x0c, 0x23, 0x43, 0x43,
+ 0x5c, 0x18, 0x0c, 0x34, 0xcc, 0x50, 0x01, 0x30,
+ 0x0f, 0x28, 0xf7, 0xd3, 0x0c, 0x23, 0x58, 0x43,
+ 0x09, 0x50, 0x04, 0x48, 0x41, 0x60, 0x01, 0x60,
+ 0x02, 0x82, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60,
+ 0x10, 0xbd, 0x3c, 0x00, 0xbc, 0x9d, 0x00, 0x00,
+ 0x84, 0xe2, 0x01, 0x00, 0x44, 0xe3, 0x01, 0x00,
+ 0x10, 0xb5, 0x08, 0x4c, 0xa0, 0x6a, 0x00, 0x28,
+ 0x03, 0xd1, 0x07, 0x48, 0xf9, 0xf7, 0xe8, 0xfe,
+ 0xa0, 0x62, 0x04, 0x48, 0x44, 0x30, 0x00, 0x68,
+ 0x01, 0x21, 0xf9, 0xf7, 0x95, 0xfc, 0x60, 0x62,
+ 0x10, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00,
+ 0xcd, 0x26, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x1e, 0x1c, 0x3c, 0x00, 0xf8, 0x9d,
+ 0x00, 0x00, 0x81, 0xb0, 0x0a, 0x9f, 0x1c, 0x21,
+ 0xf6, 0xf7, 0x4d, 0xfb, 0x03, 0x98, 0xa0, 0x61,
+ 0x25, 0x60, 0x25, 0x61, 0x26, 0x81, 0xa6, 0x82,
+ 0xe7, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0x70, 0xb5,
+ 0x0d, 0x1c, 0xa4, 0x21, 0x04, 0x1c, 0x08, 0x30,
+ 0xf6, 0xf7, 0x3d, 0xfb, 0x20, 0x1c, 0x44, 0x30,
+ 0x06, 0x22, 0x29, 0x1c, 0xf6, 0xf7, 0x65, 0xfb,
+ 0x18, 0x48, 0x3c, 0x23, 0x41, 0x1c, 0x3c, 0x00,
+ 0x34, 0x9e, 0x00, 0x00, 0x61, 0x62, 0x41, 0x78,
+ 0x59, 0x43, 0x09, 0x18, 0x89, 0x7a, 0x06, 0x29,
+ 0x01, 0xd1, 0xa0, 0x62, 0x02, 0xe0, 0x21, 0x1c,
+ 0x4d, 0x31, 0xa1, 0x62, 0x41, 0x78, 0x3c, 0x23,
+ 0x59, 0x43, 0x08, 0x18, 0x04, 0x30, 0x0f, 0x49,
+ 0x20, 0x62, 0x0b, 0x88, 0x00, 0x2b, 0x15, 0xd0,
+ 0xac, 0x20, 0x00, 0x5d, 0x0b, 0x4a, 0x18, 0x32,
+ 0x00, 0x02, 0x80, 0x18, 0xb0, 0x30, 0xe0, 0x60,
+ 0x3c, 0x00, 0x70, 0x9e, 0x00, 0x00, 0x8d, 0x68,
+ 0x00, 0x20, 0x08, 0xe0, 0xe2, 0x68, 0xc1, 0x00,
+ 0x54, 0x50, 0xe6, 0x68, 0x82, 0x00, 0x52, 0x19,
+ 0x71, 0x18, 0x4a, 0x60, 0x01, 0x30, 0x98, 0x42,
+ 0xf4, 0xdb, 0x70, 0xbd, 0x00, 0x00, 0x68, 0x61,
+ 0x01, 0x00, 0x58, 0x75, 0x01, 0x00, 0x1f, 0xb5,
+ 0x04, 0x1c, 0x60, 0x34, 0x61, 0x7a, 0x03, 0x1c,
+ 0x80, 0x6a, 0x08, 0x4a, 0x02, 0x91, 0x01, 0x90,
+ 0x03, 0x92, 0x3c, 0x00, 0xac, 0x9e, 0x00, 0x00,
+ 0xe2, 0x79, 0x18, 0x1c, 0x20, 0x30, 0x00, 0x92,
+ 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a,
+ 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0,
+ 0x7f, 0xfe, 0x1f, 0xbd, 0x39, 0x4e, 0x00, 0x00,
+ 0xb0, 0xb5, 0x0b, 0x1c, 0x01, 0x88, 0x69, 0x20,
+ 0xc0, 0x5c, 0x86, 0xb0, 0x0e, 0x4a, 0x04, 0x91,
+ 0x03, 0x90, 0x05, 0x92, 0x0d, 0x4d, 0x59, 0x6a,
+ 0x9a, 0x6a, 0x2d, 0x68, 0x3c, 0x00, 0xe8, 0x9e,
+ 0x00, 0x00, 0x01, 0x24, 0x00, 0x2d, 0x00, 0xd0,
+ 0x04, 0x1c, 0x0a, 0x48, 0x00, 0x5d, 0x01, 0x91,
+ 0x02, 0x92, 0x00, 0x90, 0x18, 0x1c, 0x20, 0x30,
+ 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a,
+ 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0,
+ 0xa4, 0xfe, 0x06, 0xb0, 0xb0, 0xbd, 0x51, 0x4f,
+ 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x0a, 0x61,
+ 0x01, 0x00, 0x01, 0x89, 0x8a, 0x1c, 0x3c, 0x00,
+ 0x24, 0x9f, 0x00, 0x00, 0x02, 0x81, 0x02, 0x68,
+ 0x02, 0x3a, 0x02, 0x60, 0x08, 0x0a, 0x09, 0x02,
+ 0x08, 0x43, 0x10, 0x80, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x08, 0x78, 0x0e, 0x1c,
+ 0xff, 0x28, 0x14, 0xd0, 0x71, 0x78, 0x02, 0x31,
+ 0x00, 0x20, 0xf7, 0xf7, 0x45, 0xfb, 0x04, 0x1c,
+ 0x02, 0x89, 0x00, 0x68, 0x31, 0x1c, 0xf6, 0xf7,
+ 0xcf, 0xfa, 0x00, 0x2d, 0x06, 0xd0, 0x28, 0x1c,
+ 0x3c, 0x00, 0x60, 0x9f, 0x00, 0x00, 0xf7, 0xf7,
+ 0x34, 0xfb, 0x21, 0x1c, 0xf7, 0xf7, 0x57, 0xfa,
+ 0x00, 0xe0, 0x25, 0x1c, 0x28, 0x1c, 0x70, 0xbd,
+ 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, 0x1e, 0x1c,
+ 0x04, 0x1c, 0x98, 0x1c, 0x01, 0x04, 0x09, 0x0c,
+ 0x00, 0x20, 0x81, 0xb0, 0xf7, 0xf7, 0x27, 0xfb,
+ 0x05, 0x1c, 0x00, 0x68, 0x00, 0x2c, 0x38, 0x60,
+ 0x03, 0x99, 0x01, 0x70, 0x38, 0x68, 0x46, 0x70,
+ 0x06, 0xd0, 0x3c, 0x00, 0x9c, 0x9f, 0x00, 0x00,
+ 0x20, 0x1c, 0xf7, 0xf7, 0x15, 0xfb, 0x29, 0x1c,
+ 0xf7, 0xf7, 0x38, 0xfa, 0x00, 0xe0, 0x2c, 0x1c,
+ 0x20, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0x70, 0xb5, 0x10, 0x48, 0x04, 0x68, 0x04, 0x60,
+ 0x0f, 0x49, 0x20, 0x20, 0x08, 0x60, 0xa0, 0x05,
+ 0x0e, 0x4e, 0x02, 0xd5, 0x70, 0x6a, 0xf6, 0xf7,
+ 0x05, 0xfa, 0xe0, 0x01, 0x02, 0xd5, 0x30, 0x6e,
+ 0xf6, 0xf7, 0x00, 0xfa, 0x3c, 0x00, 0xd8, 0x9f,
+ 0x00, 0x00, 0x0a, 0x48, 0x04, 0x40, 0x00, 0x25,
+ 0x07, 0xe0, 0xe0, 0x07, 0x03, 0xd5, 0xa8, 0x00,
+ 0x30, 0x58, 0xf6, 0xf7, 0xf6, 0xf9, 0x01, 0x35,
+ 0x64, 0x08, 0x00, 0x2c, 0xf5, 0xd1, 0x70, 0xbd,
+ 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xff, 0xfd,
+ 0xff, 0xfe, 0x80, 0xb5, 0x07, 0x21, 0x80, 0x20,
+ 0xf7, 0xf7, 0x49, 0xf9, 0x80, 0xbd, 0x3c, 0x00,
+ 0x14, 0xa0, 0x00, 0x00, 0xf8, 0xb5, 0x14, 0x4b,
+ 0x82, 0x00, 0x9c, 0x58, 0xca, 0x06, 0x01, 0x27,
+ 0x39, 0x1c, 0xd2, 0x0e, 0x91, 0x40, 0x11, 0x4a,
+ 0x11, 0x60, 0x11, 0x4e, 0x40, 0x00, 0x85, 0x19,
+ 0x15, 0xe0, 0x60, 0x60, 0x20, 0x7b, 0xc1, 0x00,
+ 0x89, 0x19, 0x10, 0x31, 0x0a, 0x78, 0x0d, 0x23,
+ 0x9a, 0x43, 0x0a, 0x70, 0x39, 0x1c, 0x81, 0x40,
+ 0x31, 0x73, 0x07, 0x49, 0x00, 0x01, 0x08, 0x31,
+ 0x3c, 0x00, 0x50, 0xa0, 0x00, 0x00, 0x40, 0x18,
+ 0x08, 0x4a, 0x41, 0x68, 0x42, 0x60, 0x80, 0x68,
+ 0xf6, 0xf7, 0xbe, 0xf9, 0x28, 0x7b, 0x00, 0x28,
+ 0xe6, 0xd1, 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x73,
+ 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0x09, 0x7a, 0x00, 0x29, 0x00, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x04, 0x7a,
+ 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xa0, 0x00, 0x00,
+ 0x03, 0x49, 0x01, 0x20, 0x89, 0x7a, 0x00, 0x29,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x00, 0x24,
+ 0xfa, 0xf7, 0x76, 0xfc, 0x00, 0x28, 0x14, 0xd0,
+ 0x01, 0x24, 0x08, 0xf0, 0x7d, 0xfe, 0x0a, 0x4d,
+ 0x0a, 0x4b, 0x00, 0x21, 0x5a, 0x18, 0xa0, 0x32,
+ 0x12, 0x78, 0x10, 0x2a, 0x06, 0xd3, 0x8a, 0x00,
+ 0xd2, 0x18, 0x92, 0x6f, 0x3c, 0x00, 0xc8, 0xa0,
+ 0x00, 0x00, 0x82, 0x1a, 0xaa, 0x42, 0x00, 0xd2,
+ 0x00, 0x24, 0x01, 0x31, 0x03, 0x29, 0xf0, 0xd3,
+ 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x8b, 0x08,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x01, 0x48,
+ 0xc0, 0x68, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x16, 0x1c, 0xfd, 0xf7, 0x2e, 0xfe, 0x00, 0x20,
+ 0xe0, 0x60, 0x26, 0x61, 0xa5, 0x60, 0x3c, 0x00,
+ 0x04, 0xa1, 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00,
+ 0xf8, 0xb5, 0x17, 0x1c, 0x0e, 0x1c, 0x04, 0x1c,
+ 0x00, 0x28, 0x01, 0xd0, 0x00, 0x2e, 0x01, 0xd1,
+ 0xf7, 0xf7, 0xf2, 0xf8, 0xa0, 0x68, 0x07, 0xf0,
+ 0x49, 0xf9, 0x05, 0x1c, 0x01, 0xd1, 0xf7, 0xf7,
+ 0xeb, 0xf8, 0x29, 0x1c, 0x6e, 0x60, 0xaf, 0x60,
+ 0x20, 0x1c, 0xfd, 0xf7, 0xfd, 0xfd, 0xe0, 0x68,
+ 0x41, 0x1c, 0xe1, 0x60, 0x00, 0x28, 0x03, 0xd1,
+ 0x3c, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x05, 0x48,
+ 0x21, 0x69, 0x05, 0xf0, 0x2c, 0xf9, 0x20, 0x68,
+ 0xa8, 0x42, 0x02, 0xd1, 0x38, 0x1c, 0xf6, 0xf7,
+ 0x48, 0xf9, 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x60,
+ 0x01, 0x00, 0x00, 0x22, 0x01, 0x39, 0x10, 0xb5,
+ 0x05, 0xe0, 0x0c, 0x23, 0x53, 0x43, 0x1c, 0x18,
+ 0x0c, 0x34, 0xc4, 0x50, 0x01, 0x32, 0x8a, 0x42,
+ 0xf7, 0xd3, 0x00, 0x21, 0x0c, 0x23, 0x5a, 0x43,
+ 0x81, 0x50, 0x3c, 0x00, 0x7c, 0xa1, 0x00, 0x00,
+ 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x01, 0xd1, 0xf7, 0xf7, 0xbb, 0xf8, 0x20, 0x1c,
+ 0xfd, 0xf7, 0xda, 0xfd, 0x01, 0x1c, 0x85, 0x68,
+ 0xa0, 0x68, 0x07, 0xf0, 0x09, 0xf9, 0xe0, 0x68,
+ 0x01, 0x38, 0xe0, 0x60, 0x03, 0xd1, 0x06, 0x48,
+ 0x21, 0x69, 0x05, 0xf0, 0xe7, 0xf8, 0x21, 0x68,
+ 0x00, 0x29, 0x03, 0xd0, 0x88, 0x68, 0x49, 0x68,
+ 0xf6, 0xf7, 0x11, 0xf9, 0x3c, 0x00, 0xb8, 0xa1,
+ 0x00, 0x00, 0x28, 0x1c, 0xb0, 0xbd, 0xc4, 0x60,
+ 0x01, 0x00, 0x01, 0x21, 0x00, 0x28, 0x8c, 0xb5,
+ 0x00, 0xd1, 0x00, 0x21, 0x0e, 0x20, 0x09, 0xf0,
+ 0x32, 0xfa, 0x83, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0x00, 0x20, 0x04, 0xf0, 0x0c, 0xf8, 0x01, 0x90,
+ 0x68, 0x46, 0x03, 0xf0, 0x7a, 0xf9, 0x8c, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x08, 0xf0, 0xdf, 0xfd,
+ 0x06, 0x49, 0x0a, 0x89, 0x06, 0x49, 0x3c, 0x00,
+ 0xf4, 0xa1, 0x00, 0x00, 0x09, 0x6e, 0x41, 0x1a,
+ 0x0b, 0x0c, 0x59, 0x18, 0x89, 0x1a, 0x09, 0x04,
+ 0x09, 0x0c, 0x40, 0x1a, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x90, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x70, 0xb5, 0x04, 0x1c, 0x88, 0x7e, 0x0d, 0x1c,
+ 0x20, 0x28, 0x03, 0xd9, 0x03, 0x21, 0x18, 0x20,
+ 0xf7, 0xf7, 0x40, 0xf8, 0x00, 0x26, 0x26, 0x76,
+ 0xa8, 0x7e, 0x29, 0x1c, 0x1b, 0x31, 0x60, 0x76,
+ 0x3c, 0x00, 0x30, 0xa2, 0x00, 0x00, 0x20, 0x1c,
+ 0x1d, 0x30, 0xaa, 0x7e, 0xf6, 0xf7, 0x5f, 0xf9,
+ 0x68, 0x68, 0x29, 0x1c, 0x60, 0x60, 0xa8, 0x68,
+ 0x13, 0x31, 0xa0, 0x60, 0xa8, 0x7b, 0x06, 0x22,
+ 0x20, 0x73, 0xe8, 0x7b, 0x60, 0x73, 0x28, 0x7c,
+ 0xa0, 0x73, 0x68, 0x7c, 0xe0, 0x73, 0xa8, 0x89,
+ 0x20, 0x82, 0xa8, 0x7c, 0xe0, 0x76, 0x26, 0x77,
+ 0x20, 0x1c, 0x12, 0x30, 0xa6, 0x76, 0xf6, 0xf7,
+ 0x46, 0xf9, 0x3c, 0x00, 0x6c, 0xa2, 0x00, 0x00,
+ 0x60, 0x68, 0x43, 0x1c, 0x1d, 0xd0, 0x11, 0x4d,
+ 0x6d, 0x61, 0x28, 0x68, 0x00, 0x28, 0x1a, 0xd0,
+ 0x22, 0x7b, 0x01, 0x1c, 0x0b, 0x7b, 0x9a, 0x42,
+ 0x01, 0xd3, 0x20, 0x60, 0x14, 0xe0, 0x0b, 0x1c,
+ 0x09, 0x68, 0x00, 0x29, 0x0b, 0xd0, 0x0e, 0x7b,
+ 0xb2, 0x42, 0x08, 0xd2, 0x0b, 0x68, 0x00, 0x2b,
+ 0xf0, 0xd0, 0x1e, 0x7b, 0xb2, 0x42, 0xed, 0xd3,
+ 0x23, 0x60, 0x0c, 0x60, 0x3c, 0x00, 0xa8, 0xa2,
+ 0x00, 0x00, 0x01, 0xe0, 0x21, 0x60, 0x1c, 0x60,
+ 0x00, 0x20, 0x70, 0xbd, 0x26, 0x60, 0x2c, 0x60,
+ 0xfa, 0xe7, 0xa4, 0x6e, 0x01, 0x00, 0x13, 0x4a,
+ 0xb0, 0xb5, 0x51, 0x68, 0x01, 0x24, 0x00, 0x29,
+ 0x1e, 0xd0, 0x13, 0x1d, 0xd1, 0x61, 0x13, 0x62,
+ 0x43, 0x68, 0x04, 0xe0, 0x10, 0x62, 0x00, 0x68,
+ 0xd0, 0x61, 0x00, 0x28, 0x14, 0xd0, 0xd0, 0x69,
+ 0x45, 0x68, 0x9d, 0x42, 0xf6, 0xd1, 0x3c, 0x00,
+ 0xe4, 0xa2, 0x00, 0x00, 0x10, 0x6a, 0x81, 0x42,
+ 0x04, 0xd1, 0x51, 0x60, 0xd0, 0x69, 0x00, 0x68,
+ 0x08, 0x60, 0x02, 0xe0, 0xd1, 0x69, 0x09, 0x68,
+ 0x01, 0x60, 0xd0, 0x69, 0xfc, 0xf7, 0xce, 0xff,
+ 0x00, 0x28, 0x00, 0xd0, 0x00, 0x24, 0x20, 0x1c,
+ 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x17, 0x4d, 0x01, 0x24, 0x29, 0x68,
+ 0x00, 0x29, 0x27, 0xd0, 0x6d, 0x61, 0x29, 0x61,
+ 0x3c, 0x00, 0x20, 0xa3, 0x00, 0x00, 0x43, 0x68,
+ 0x04, 0xe0, 0x68, 0x61, 0x00, 0x68, 0x28, 0x61,
+ 0x00, 0x28, 0x1d, 0xd0, 0x28, 0x69, 0x42, 0x68,
+ 0x9a, 0x42, 0xf6, 0xd1, 0xaa, 0x69, 0x2b, 0x69,
+ 0x9a, 0x42, 0x00, 0xd1, 0xa9, 0x61, 0x6a, 0x69,
+ 0x91, 0x42, 0x03, 0xd1, 0x29, 0x60, 0x00, 0x68,
+ 0x08, 0x60, 0x06, 0xe0, 0x00, 0x68, 0x10, 0x60,
+ 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x07, 0xf0,
+ 0xcc, 0xfe, 0x3c, 0x00, 0x5c, 0xa3, 0x00, 0x00,
+ 0x28, 0x69, 0xfc, 0xf7, 0x9d, 0xff, 0x00, 0x28,
+ 0x02, 0xd0, 0x00, 0x24, 0x00, 0xe0, 0x01, 0x24,
+ 0x20, 0x1c, 0xb0, 0xbd, 0xa4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x44, 0x68,
+ 0x07, 0xe0, 0x21, 0x1c, 0x44, 0x31, 0x28, 0x1c,
+ 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0x28, 0x02, 0xd1,
+ 0x64, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x20, 0x1c,
+ 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa3,
+ 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x70, 0xb5,
+ 0x0d, 0x1c, 0x14, 0x1c, 0x00, 0x28, 0x0b, 0x4e,
+ 0x08, 0xd0, 0x70, 0x6e, 0x06, 0x23, 0x58, 0x43,
+ 0x02, 0x04, 0x12, 0x0c, 0x31, 0x1c, 0x28, 0x1c,
+ 0x22, 0x80, 0x07, 0xe0, 0x21, 0x88, 0x06, 0x20,
+ 0xf6, 0xf7, 0xa7, 0xf9, 0x70, 0x66, 0x22, 0x88,
+ 0x29, 0x1c, 0x30, 0x1c, 0xf6, 0xf7, 0x95, 0xf8,
+ 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0xd4, 0xa3, 0x00, 0x00, 0x10, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x03, 0x28, 0x03, 0xd8, 0x04, 0x4a,
+ 0xc0, 0x00, 0x11, 0x50, 0x80, 0xbd, 0x01, 0x21,
+ 0x26, 0x20, 0xf6, 0xf7, 0x5b, 0xff, 0x80, 0xbd,
+ 0x7c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c,
+ 0xc0, 0x68, 0x01, 0x89, 0x39, 0x29, 0x39, 0xd3,
+ 0x04, 0x68, 0xa0, 0x79, 0x88, 0x28, 0x35, 0xd1,
+ 0xe0, 0x79, 0x8e, 0x28, 0x32, 0xd1, 0x20, 0x7a,
+ 0x3c, 0x00, 0x10, 0xa4, 0x00, 0x00, 0x01, 0x28,
+ 0x2f, 0xd1, 0x60, 0x7a, 0x03, 0x28, 0x2c, 0xd1,
+ 0x20, 0x7b, 0x02, 0x28, 0x01, 0xd0, 0xfe, 0x28,
+ 0x27, 0xd1, 0x60, 0x7b, 0x1d, 0x21, 0x08, 0x40,
+ 0x01, 0x28, 0x22, 0xd1, 0xa0, 0x7b, 0xc8, 0x21,
+ 0x08, 0x40, 0x08, 0x28, 0x1d, 0xd1, 0xa8, 0x1d,
+ 0xfb, 0xf7, 0xe1, 0xf9, 0x00, 0x28, 0x18, 0xd0,
+ 0x19, 0x20, 0x21, 0x5c, 0x00, 0x29, 0x14, 0xd1,
+ 0x01, 0x30, 0x3c, 0x00, 0x4c, 0xa4, 0x00, 0x00,
+ 0x39, 0x28, 0xf9, 0xdb, 0x68, 0x8b, 0x04, 0x21,
+ 0x08, 0x43, 0x68, 0x83, 0x03, 0xf0, 0xd6, 0xfe,
+ 0x00, 0x28, 0x09, 0xd1, 0x00, 0x23, 0x00, 0x22,
+ 0x26, 0x20, 0x04, 0x49, 0x09, 0xf0, 0x92, 0xf9,
+ 0x03, 0x48, 0x00, 0x68, 0x01, 0xf0, 0x84, 0xf9,
+ 0xb0, 0xbd, 0x00, 0x00, 0x50, 0xc3, 0x00, 0x00,
+ 0x0c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c,
+ 0xa3, 0x68, 0x01, 0x33, 0x3c, 0x00, 0x88, 0xa4,
+ 0x00, 0x00, 0xa3, 0x60, 0x0c, 0x1c, 0x09, 0xd0,
+ 0x25, 0x68, 0x00, 0x2d, 0x03, 0xd0, 0x23, 0x7a,
+ 0x61, 0x68, 0xf5, 0xf7, 0xa3, 0xff, 0x20, 0x1c,
+ 0xf7, 0xf7, 0xa9, 0xf9, 0xb0, 0xbd, 0x94, 0x79,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68,
+ 0x01, 0x89, 0x05, 0x68, 0x08, 0x29, 0x53, 0xd3,
+ 0x06, 0x22, 0x28, 0x1c, 0x55, 0x49, 0xf5, 0xf7,
+ 0x9e, 0xff, 0x00, 0x28, 0x37, 0xd1, 0x3c, 0x00,
+ 0xc4, 0xa4, 0x00, 0x00, 0xe9, 0x88, 0x52, 0x4e,
+ 0x04, 0x3e, 0x81, 0x29, 0x24, 0xd1, 0xe5, 0x68,
+ 0x29, 0x68, 0x08, 0x7a, 0x4a, 0x7a, 0x00, 0x02,
+ 0x80, 0x18, 0x00, 0x04, 0x00, 0x0c, 0x42, 0x0b,
+ 0x00, 0x05, 0x00, 0x0d, 0xe2, 0x75, 0x20, 0x83,
+ 0x4b, 0x89, 0x00, 0x20, 0x42, 0x00, 0xb2, 0x5a,
+ 0x9a, 0x42, 0x06, 0xd1, 0x28, 0x89, 0x0c, 0x38,
+ 0x02, 0x0a, 0x00, 0x02, 0x10, 0x43, 0x48, 0x81,
+ 0x3c, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x02, 0xe0,
+ 0x01, 0x30, 0x02, 0x28, 0xf1, 0xd3, 0xe0, 0x68,
+ 0x01, 0x89, 0x0a, 0x39, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x0a, 0x31, 0x1c, 0xe0, 0x00, 0x22,
+ 0x00, 0x20, 0x43, 0x00, 0xf3, 0x5a, 0x8b, 0x42,
+ 0x01, 0xd1, 0x01, 0x22, 0x02, 0xe0, 0x01, 0x30,
+ 0x02, 0x28, 0xf6, 0xd3, 0x00, 0x2a, 0x11, 0xd1,
+ 0x07, 0xe0, 0x36, 0x49, 0x06, 0x22, 0x06, 0x31,
+ 0x28, 0x1c, 0x3c, 0x00, 0x3c, 0xa5, 0x00, 0x00,
+ 0xf5, 0xf7, 0x5e, 0xff, 0x00, 0x28, 0x08, 0xd1,
+ 0xe0, 0x68, 0x01, 0x89, 0x06, 0x39, 0x01, 0x81,
+ 0xe0, 0x68, 0x01, 0x68, 0x06, 0x31, 0x01, 0x60,
+ 0x10, 0xe0, 0xe0, 0x68, 0xff, 0xf7, 0xe2, 0xfc,
+ 0x0c, 0xe0, 0x02, 0x31, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x02, 0x39, 0x01, 0x60, 0xe0, 0x68,
+ 0x00, 0x89, 0x02, 0x38, 0x02, 0x0a, 0x00, 0x02,
+ 0x10, 0x43, 0x08, 0x80, 0x3c, 0x00, 0x78, 0xa5,
+ 0x00, 0x00, 0xe0, 0x68, 0x03, 0x25, 0x02, 0x89,
+ 0x01, 0x68, 0x24, 0x4e, 0x02, 0x2a, 0x10, 0xd9,
+ 0x09, 0x88, 0x08, 0x29, 0x05, 0xd0, 0xc1, 0x23,
+ 0xdb, 0x00, 0x99, 0x42, 0x03, 0xd1, 0x01, 0x25,
+ 0x02, 0xe0, 0x00, 0x25, 0x00, 0xe0, 0x02, 0x25,
+ 0xe9, 0x00, 0x71, 0x58, 0x00, 0x29, 0x00, 0xd1,
+ 0x02, 0x25, 0xf7, 0xf7, 0x04, 0xf8, 0xe9, 0x00,
+ 0x89, 0x19, 0x89, 0x88, 0x88, 0x42, 0x3c, 0x00,
+ 0xb4, 0xa5, 0x00, 0x00, 0x00, 0xd9, 0x03, 0x25,
+ 0xa1, 0x1d, 0x20, 0x1c, 0xfd, 0xf7, 0x34, 0xfc,
+ 0x00, 0x28, 0x00, 0xd1, 0x03, 0x25, 0x02, 0x2d,
+ 0x05, 0xd0, 0x03, 0x2d, 0x07, 0xd1, 0xe0, 0x68,
+ 0xf6, 0xf7, 0xe2, 0xff, 0x70, 0xbd, 0x20, 0x1c,
+ 0xfd, 0xf7, 0x1c, 0xfd, 0x70, 0xbd, 0xe0, 0x68,
+ 0x01, 0x89, 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x02, 0x31, 0x01, 0x60, 0xe8, 0x00,
+ 0x3c, 0x00, 0xf0, 0xa5, 0x00, 0x00, 0x31, 0x58,
+ 0x20, 0x1c, 0xf5, 0xf7, 0xf1, 0xfe, 0x00, 0x28,
+ 0xef, 0xd1, 0xe0, 0x68, 0x01, 0x89, 0x02, 0x31,
+ 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, 0x02, 0x39,
+ 0x01, 0x60, 0xe3, 0xe7, 0x00, 0x00, 0x6a, 0x46,
+ 0x01, 0x00, 0x7c, 0x79, 0x01, 0x00, 0x70, 0xb5,
+ 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0xf7, 0xf7,
+ 0x8c, 0xfb, 0x00, 0x28, 0x2a, 0xd0, 0x1b, 0x49,
+ 0x08, 0x68, 0x3c, 0x00, 0x2c, 0xa6, 0x00, 0x00,
+ 0x01, 0x30, 0x08, 0x60, 0x00, 0x2e, 0x0a, 0xd0,
+ 0x01, 0x2e, 0x0b, 0xd0, 0x02, 0x2e, 0x0f, 0xd1,
+ 0x20, 0x1c, 0x04, 0xf0, 0xcd, 0xf8, 0x20, 0x1c,
+ 0xff, 0xf7, 0xd6, 0xfe, 0x0c, 0xe0, 0x08, 0x21,
+ 0xe0, 0x68, 0x02, 0xe0, 0xc1, 0x21, 0xe0, 0x68,
+ 0xc9, 0x00, 0x04, 0xf0, 0x35, 0xf9, 0x03, 0xe0,
+ 0x02, 0x21, 0x26, 0x20, 0xf6, 0xf7, 0x20, 0xfe,
+ 0xe2, 0x7d, 0xe1, 0x6a, 0x3c, 0x00, 0x68, 0xa6,
+ 0x00, 0x00, 0x28, 0x1c, 0xfc, 0xf7, 0x95, 0xfb,
+ 0x20, 0x63, 0x00, 0x20, 0x20, 0x62, 0xa0, 0x62,
+ 0x20, 0x1c, 0x00, 0xf0, 0x6c, 0xfe, 0x70, 0xbd,
+ 0xe0, 0x68, 0xf6, 0xf7, 0x8a, 0xff, 0x00, 0x2d,
+ 0xf9, 0xd0, 0xe3, 0x7d, 0x00, 0x22, 0x01, 0x20,
+ 0xe1, 0x6a, 0xf5, 0xf7, 0xa7, 0xfe, 0x70, 0xbd,
+ 0x00, 0x00, 0x94, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x28, 0x04, 0xd1, 0x05, 0x48, 0x3c, 0x00,
+ 0xa4, 0xa6, 0x00, 0x00, 0x00, 0x68, 0x01, 0xf0,
+ 0x09, 0xf9, 0x80, 0xbd, 0x03, 0x21, 0x26, 0x20,
+ 0xf6, 0xf7, 0xf8, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x0c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x80, 0x79, 0x00, 0x24, 0xc0, 0x07, 0x2d, 0xd5,
+ 0xf0, 0x68, 0x00, 0x68, 0x41, 0x7a, 0x11, 0x29,
+ 0x28, 0xd1, 0xc1, 0x88, 0x0a, 0x0a, 0x09, 0x02,
+ 0x11, 0x43, 0xc9, 0x04, 0x22, 0xd1, 0x01, 0x78,
+ 0x3c, 0x00, 0xe0, 0xa6, 0x00, 0x00, 0x11, 0x4f,
+ 0x09, 0x07, 0x89, 0x0e, 0x08, 0x18, 0x41, 0x88,
+ 0x0a, 0x0a, 0x09, 0x02, 0x11, 0x43, 0x0d, 0x04,
+ 0x2d, 0x0c, 0x43, 0x2d, 0x39, 0x68, 0x01, 0xd1,
+ 0xca, 0x07, 0x0e, 0xd4, 0x44, 0x2d, 0x06, 0xd1,
+ 0xc9, 0x07, 0x04, 0xd5, 0x24, 0x30, 0x00, 0xf0,
+ 0x22, 0xfb, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48,
+ 0x85, 0x42, 0x06, 0xd1, 0x38, 0x68, 0x80, 0x07,
+ 0x03, 0xd5, 0x3c, 0x00, 0x1c, 0xa7, 0x00, 0x00,
+ 0x01, 0x24, 0xf0, 0x68, 0xf6, 0xf7, 0x3a, 0xff,
+ 0x20, 0x1c, 0xf8, 0xbd, 0x7c, 0x5a, 0x01, 0x00,
+ 0x6c, 0x07, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x28,
+ 0x07, 0xd0, 0x00, 0x21, 0x26, 0x20, 0x08, 0xf0,
+ 0x7b, 0xff, 0x02, 0x48, 0x00, 0x68, 0x01, 0xf0,
+ 0xbb, 0xf8, 0x80, 0xbd, 0x0c, 0x79, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x09, 0x4a, 0x08, 0x1c,
+ 0x51, 0x68, 0x01, 0x31, 0x3c, 0x00, 0x58, 0xa7,
+ 0x00, 0x00, 0x51, 0x60, 0x00, 0x21, 0x21, 0x62,
+ 0xa1, 0x62, 0xe2, 0x7d, 0xe1, 0x6a, 0xfc, 0xf7,
+ 0x18, 0xfb, 0x20, 0x63, 0x20, 0x1c, 0xf7, 0xf7,
+ 0xe6, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0xef, 0xfd,
+ 0x10, 0xbd, 0x94, 0x79, 0x01, 0x00, 0x0c, 0xb5,
+ 0x02, 0x1c, 0x08, 0x1c, 0x00, 0x21, 0x01, 0x91,
+ 0x00, 0x92, 0x6a, 0x46, 0x01, 0xa9, 0x00, 0xf0,
+ 0x02, 0xf8, 0x0c, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x94, 0xa7, 0x00, 0x00, 0x70, 0xb5, 0x13, 0x68,
+ 0x00, 0x2b, 0x1e, 0xd0, 0x00, 0x26, 0x0b, 0x68,
+ 0x00, 0x2b, 0x02, 0xd1, 0x13, 0x68, 0x1b, 0x68,
+ 0x0b, 0x60, 0x13, 0x68, 0x1c, 0x68, 0x1b, 0x89,
+ 0xe5, 0x18, 0x08, 0xe0, 0x5c, 0x78, 0x1c, 0x19,
+ 0x02, 0x34, 0x0c, 0x60, 0x1c, 0x78, 0x84, 0x42,
+ 0x01, 0xd1, 0x18, 0x1c, 0x70, 0xbd, 0x0b, 0x68,
+ 0xab, 0x42, 0xf3, 0xd3, 0x13, 0x68, 0xdb, 0x68,
+ 0x3c, 0x00, 0xd0, 0xa7, 0x00, 0x00, 0x13, 0x60,
+ 0x0e, 0x60, 0x13, 0x68, 0x00, 0x2b, 0xe1, 0xd1,
+ 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x70, 0xb5,
+ 0x03, 0x1c, 0x20, 0xd0, 0x18, 0x68, 0x1e, 0x89,
+ 0x05, 0x1c, 0x16, 0xe0, 0x04, 0x78, 0xdd, 0x2c,
+ 0x10, 0xd1, 0x84, 0x78, 0x00, 0x2c, 0x0d, 0xd1,
+ 0xc4, 0x78, 0x50, 0x2c, 0x0a, 0xd1, 0x04, 0x79,
+ 0xf2, 0x2c, 0x07, 0xd1, 0x44, 0x79, 0x8c, 0x42,
+ 0x04, 0xd1, 0x3c, 0x00, 0x0c, 0xa8, 0x00, 0x00,
+ 0x02, 0x29, 0x0c, 0xd1, 0x84, 0x79, 0x94, 0x42,
+ 0x09, 0xd0, 0x44, 0x78, 0x20, 0x18, 0x02, 0x30,
+ 0x44, 0x1b, 0xb4, 0x42, 0xe5, 0xdb, 0xdb, 0x68,
+ 0x00, 0x2b, 0xde, 0xd1, 0x00, 0x20, 0x70, 0xbd,
+ 0x04, 0x49, 0x80, 0xb5, 0x0a, 0x78, 0x0a, 0x20,
+ 0x00, 0x2a, 0x00, 0xd0, 0x48, 0x6a, 0x00, 0xf0,
+ 0xd1, 0xf8, 0x80, 0xbd, 0x1c, 0x75, 0x01, 0x00,
+ 0xb0, 0xb5, 0x17, 0x4c, 0x3c, 0x00, 0x48, 0xa8,
+ 0x00, 0x00, 0x20, 0x68, 0x00, 0x28, 0x29, 0xd0,
+ 0x16, 0x4d, 0xe8, 0x69, 0x00, 0x28, 0x25, 0xd1,
+ 0x01, 0xf0, 0x3f, 0xfa, 0x00, 0x28, 0x21, 0xd1,
+ 0xff, 0xf7, 0x41, 0xfc, 0x00, 0x28, 0x1d, 0xd1,
+ 0x20, 0x68, 0xa9, 0x69, 0x40, 0x18, 0x08, 0xf0,
+ 0xd6, 0xf9, 0x00, 0x28, 0x16, 0xd0, 0x02, 0xf0,
+ 0x06, 0xfd, 0x21, 0x68, 0x40, 0x18, 0x08, 0xf0,
+ 0xce, 0xf9, 0x00, 0x28, 0x0e, 0xd0, 0x3c, 0x00,
+ 0x84, 0xa8, 0x00, 0x00, 0x01, 0x20, 0xe8, 0x61,
+ 0x00, 0x22, 0x25, 0x21, 0x80, 0x20, 0x08, 0xf0,
+ 0x8f, 0xff, 0x06, 0x48, 0x29, 0x6a, 0x04, 0xf0,
+ 0x83, 0xfd, 0x01, 0x21, 0x28, 0x6a, 0x00, 0xf0,
+ 0x89, 0xff, 0xb0, 0xbd, 0xe8, 0x59, 0x01, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, 0xfa, 0xf7,
+ 0x0b, 0xff, 0x18, 0x4e, 0x71, 0x6a, 0x40, 0x18,
+ 0x3c, 0x00, 0xc0, 0xa8, 0x00, 0x00, 0x00, 0xf0,
+ 0x8e, 0xf8, 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0,
+ 0xfe, 0xfb, 0x00, 0x21, 0x25, 0x20, 0x08, 0xf0,
+ 0xb0, 0xfe, 0x03, 0x22, 0x29, 0x1c, 0x28, 0x1c,
+ 0x00, 0xf0, 0xaf, 0xf8, 0x18, 0xe0, 0x70, 0x6a,
+ 0x44, 0x1e, 0x00, 0xf0, 0x7c, 0xf8, 0x00, 0x28,
+ 0x12, 0xd1, 0x0c, 0x48, 0x31, 0x6a, 0x04, 0xf0,
+ 0x56, 0xfd, 0x01, 0x21, 0x30, 0x6a, 0x00, 0xf0,
+ 0x5c, 0xff, 0x3c, 0x00, 0xfc, 0xa8, 0x00, 0x00,
+ 0x00, 0x20, 0xfa, 0xf7, 0x0d, 0xfe, 0x06, 0xf0,
+ 0x03, 0xf8, 0x00, 0x23, 0x00, 0x22, 0x25, 0x20,
+ 0x05, 0x49, 0x08, 0xf0, 0x3f, 0xff, 0x20, 0x1c,
+ 0x07, 0xf0, 0xfc, 0xfa, 0x70, 0xbd, 0x00, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x10, 0x27, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x28,
+ 0x07, 0xd0, 0x80, 0x28, 0x0d, 0xd1, 0x00, 0x22,
+ 0x00, 0x21, 0x08, 0x48, 0x3c, 0x00, 0x38, 0xa9,
+ 0x00, 0x00, 0xf8, 0xf7, 0x9a, 0xfe, 0x80, 0xbd,
+ 0x01, 0x29, 0x02, 0xd1, 0x06, 0x49, 0x00, 0x20,
+ 0xc8, 0x61, 0x04, 0xf0, 0xbe, 0xfb, 0x80, 0xbd,
+ 0x05, 0x21, 0x25, 0x20, 0xf6, 0xf7, 0xa7, 0xfc,
+ 0x80, 0xbd, 0x61, 0xa9, 0x00, 0x00, 0x1c, 0x75,
+ 0x01, 0x00, 0x00, 0x21, 0x00, 0x28, 0x80, 0xb5,
+ 0x01, 0xd1, 0x03, 0x48, 0x41, 0x68, 0x01, 0x22,
+ 0x25, 0x20, 0x08, 0xf0, 0x2c, 0xfe, 0x3c, 0x00,
+ 0x74, 0xa9, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0xe8, 0x59, 0x01, 0x00, 0x02, 0x49, 0xc8, 0x68,
+ 0x01, 0x38, 0x48, 0x62, 0x70, 0x47, 0x00, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c,
+ 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, 0x06, 0xd0,
+ 0x01, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x19, 0x1c,
+ 0xf5, 0xf7, 0xaa, 0xfd, 0x17, 0xe0, 0x0d, 0x4d,
+ 0x01, 0x1c, 0x2c, 0x78, 0x12, 0x88, 0x18, 0x1c,
+ 0x3c, 0x00, 0xb0, 0xa9, 0x00, 0x00, 0xf5, 0xf7,
+ 0xa2, 0xfd, 0x28, 0x78, 0x84, 0x42, 0x0d, 0xd0,
+ 0x00, 0x23, 0x6b, 0x61, 0x00, 0x28, 0x03, 0xd0,
+ 0x00, 0x20, 0x07, 0xf0, 0xa4, 0xfa, 0x05, 0xe0,
+ 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0x92,
+ 0xf8, 0xf7, 0x23, 0xfc, 0x01, 0x20, 0x38, 0xbd,
+ 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x01, 0x26, 0x08, 0xf0, 0xe1, 0xf9,
+ 0x05, 0x1c, 0x3c, 0x00, 0xec, 0xa9, 0x00, 0x00,
+ 0x00, 0x20, 0xfa, 0xf7, 0x8b, 0xfd, 0x44, 0x43,
+ 0x02, 0xf0, 0x40, 0xfc, 0x02, 0xf0, 0x3e, 0xfc,
+ 0x01, 0x1c, 0x23, 0x1c, 0x00, 0x22, 0x28, 0x1c,
+ 0x08, 0xf0, 0x7c, 0xfa, 0x00, 0x28, 0x13, 0xd1,
+ 0x0a, 0x48, 0x23, 0x1c, 0x00, 0x22, 0x81, 0x69,
+ 0x28, 0x1c, 0x08, 0xf0, 0x73, 0xfa, 0x00, 0x28,
+ 0x0a, 0xd1, 0xf8, 0xf7, 0x19, 0xfc, 0x01, 0x1c,
+ 0x23, 0x1c, 0x00, 0x22, 0x3c, 0x00, 0x28, 0xaa,
+ 0x00, 0x00, 0x28, 0x1c, 0x08, 0xf0, 0x69, 0xfa,
+ 0x00, 0x28, 0x00, 0xd1, 0x00, 0x26, 0x30, 0x1c,
+ 0x70, 0xbd, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5,
+ 0x0d, 0x1c, 0x04, 0x1c, 0x16, 0x1c, 0x07, 0xf0,
+ 0x76, 0xf9, 0x00, 0x28, 0x0d, 0xd0, 0xfa, 0xf7,
+ 0x52, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30,
+ 0x01, 0x30, 0x43, 0x68, 0x00, 0x2b, 0x04, 0xd0,
+ 0x22, 0x1c, 0x29, 0x1c, 0x30, 0x1c, 0x3c, 0x00,
+ 0x64, 0xaa, 0x00, 0x00, 0xf5, 0xf7, 0xbb, 0xfc,
+ 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x1d, 0x20, 0x08, 0xf0, 0xdf, 0xfd, 0x07, 0x4a,
+ 0x07, 0x48, 0x11, 0x69, 0x01, 0x60, 0x51, 0x69,
+ 0x41, 0x60, 0x06, 0x49, 0x49, 0x68, 0x81, 0x60,
+ 0x00, 0x21, 0xc1, 0x60, 0x03, 0xf0, 0x74, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x28, 0x61, 0x01, 0x00,
+ 0x48, 0x75, 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00,
+ 0x3c, 0x00, 0xa0, 0xaa, 0x00, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x40, 0x6b, 0x00, 0x28, 0x35, 0xd0,
+ 0x1d, 0x4d, 0x00, 0x26, 0x28, 0x78, 0x00, 0x28,
+ 0x24, 0xd0, 0x41, 0x20, 0x00, 0x5d, 0x00, 0x28,
+ 0x03, 0xd1, 0x08, 0xf0, 0x76, 0xf9, 0xa8, 0x61,
+ 0x1b, 0xe0, 0x69, 0x69, 0x01, 0x31, 0x69, 0x61,
+ 0xa8, 0x68, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x42,
+ 0x06, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31,
+ 0x04, 0x30, 0x3c, 0x00, 0xdc, 0xaa, 0x00, 0x00,
+ 0x82, 0x22, 0xff, 0xf7, 0xad, 0xff, 0x68, 0x68,
+ 0x00, 0x28, 0x0a, 0xd0, 0x69, 0x69, 0x81, 0x42,
+ 0x07, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31,
+ 0x04, 0x30, 0x02, 0x22, 0xff, 0xf7, 0xa0, 0xff,
+ 0x6e, 0x61, 0x68, 0x78, 0x05, 0x21, 0x08, 0x40,
+ 0x08, 0xd0, 0x07, 0x48, 0x00, 0x78, 0x0e, 0x28,
+ 0x03, 0xd3, 0x60, 0x34, 0xe0, 0x79, 0xfb, 0xf7,
+ 0xcf, 0xff, 0x70, 0xbd, 0x3c, 0x00, 0x18, 0xab,
+ 0x00, 0x00, 0x03, 0x48, 0x06, 0x60, 0x70, 0xbd,
+ 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x10, 0x67,
+ 0x01, 0x00, 0xd4, 0x7e, 0x01, 0x00, 0x80, 0x02,
+ 0x70, 0x47, 0x14, 0x23, 0x30, 0xb5, 0x09, 0x4d,
+ 0x4b, 0x43, 0x5b, 0x19, 0x5b, 0x68, 0x08, 0x24,
+ 0x00, 0x2b, 0x00, 0xd1, 0x02, 0x24, 0x38, 0x23,
+ 0x5a, 0x43, 0x05, 0x4b, 0x89, 0x00, 0xd2, 0x18,
+ 0x51, 0x5a, 0x02, 0x68, 0x09, 0x19, 0x3c, 0x00,
+ 0x54, 0xab, 0x00, 0x00, 0x51, 0x1a, 0x01, 0x60,
+ 0x30, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00,
+ 0x8c, 0x41, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c,
+ 0x2c, 0x48, 0x14, 0x1c, 0x2c, 0x4a, 0x48, 0x43,
+ 0x86, 0x46, 0x80, 0x18, 0x80, 0x0d, 0x84, 0x46,
+ 0x2b, 0x48, 0x2a, 0x4a, 0x06, 0x26, 0x1d, 0x1c,
+ 0x48, 0x43, 0x4a, 0x43, 0x0e, 0x2f, 0x40, 0xd2,
+ 0x01, 0xa3, 0xdb, 0x5d, 0x5b, 0x00, 0x9f, 0x44,
+ 0x3c, 0x00, 0x90, 0xab, 0x00, 0x00, 0x06, 0x08,
+ 0x0a, 0x0f, 0x14, 0x18, 0x1d, 0x20, 0x27, 0x24,
+ 0x27, 0x2b, 0x2f, 0x31, 0xc8, 0x00, 0x1f, 0xe0,
+ 0x88, 0x00, 0x1d, 0xe0, 0x21, 0x49, 0x70, 0x46,
+ 0x40, 0x18, 0x00, 0x0d, 0x18, 0xe0, 0x1f, 0x4a,
+ 0x80, 0x18, 0x80, 0x0d, 0x40, 0x18, 0x21, 0xe0,
+ 0x1e, 0x48, 0x10, 0x18, 0x00, 0x0d, 0x1d, 0xe0,
+ 0x1d, 0x49, 0x70, 0x46, 0x40, 0x18, 0x40, 0x0d,
+ 0x0a, 0xe0, 0x3c, 0x00, 0xcc, 0xab, 0x00, 0x00,
+ 0x1b, 0x49, 0x40, 0x18, 0x01, 0xe0, 0x1b, 0x48,
+ 0x10, 0x18, 0x40, 0x0d, 0x11, 0xe0, 0x1a, 0x49,
+ 0x40, 0x18, 0x05, 0xe0, 0x60, 0x46, 0x20, 0x80,
+ 0x00, 0x20, 0x16, 0xe0, 0x17, 0x48, 0x10, 0x18,
+ 0x80, 0x0d, 0x06, 0xe0, 0x16, 0x49, 0x02, 0xe0,
+ 0x16, 0x48, 0x48, 0x43, 0x16, 0x49, 0x40, 0x18,
+ 0xc0, 0x0d, 0x03, 0x30, 0x80, 0x08, 0x80, 0x00,
+ 0x20, 0x80, 0x2e, 0x80, 0x3c, 0x00, 0x08, 0xac,
+ 0x00, 0x00, 0xf8, 0xbd, 0xff, 0x21, 0xff, 0x20,
+ 0xf6, 0xf7, 0x49, 0xfb, 0x00, 0x20, 0x20, 0x80,
+ 0x28, 0x80, 0xf6, 0xe7, 0x00, 0x00, 0xd1, 0x45,
+ 0x17, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xe3, 0x38,
+ 0x0e, 0x00, 0x55, 0x55, 0x15, 0x00, 0xff, 0xff,
+ 0x0f, 0x00, 0xa9, 0xaa, 0x2a, 0x01, 0x70, 0x1c,
+ 0x37, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xcb, 0xcc,
+ 0x4c, 0x00, 0x70, 0x1c, 0x47, 0x00, 0x3c, 0x00,
+ 0x44, 0xac, 0x00, 0x00, 0xa9, 0xaa, 0x7a, 0x00,
+ 0x70, 0x1c, 0x67, 0x00, 0xa9, 0xaa, 0xba, 0x00,
+ 0x84, 0xf6, 0x12, 0x00, 0xec, 0x25, 0xb4, 0x00,
+ 0x04, 0x49, 0x00, 0x28, 0x01, 0xd0, 0x09, 0x22,
+ 0x00, 0xe0, 0x14, 0x22, 0x4a, 0x80, 0x48, 0x60,
+ 0x70, 0x47, 0x00, 0x00, 0xa4, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0x06, 0x22, 0xf5, 0xf7, 0x40, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0xbc, 0xb5, 0x15, 0x1c,
+ 0x3c, 0x00, 0x80, 0xac, 0x00, 0x00, 0x04, 0x1c,
+ 0x04, 0x31, 0x09, 0x04, 0x09, 0x0c, 0x01, 0xaa,
+ 0x6b, 0x46, 0xff, 0xf7, 0x6a, 0xff, 0x38, 0x20,
+ 0x06, 0x49, 0x68, 0x43, 0x40, 0x18, 0xa1, 0x00,
+ 0x40, 0x5a, 0x00, 0xab, 0x99, 0x88, 0x40, 0x18,
+ 0x19, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0xbc, 0xbd, 0x8c, 0x41, 0x01, 0x00, 0xbc, 0xb5,
+ 0x04, 0x1c, 0x15, 0x1c, 0x01, 0xaa, 0x6b, 0x46,
+ 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0xac, 0x00, 0x00,
+ 0x53, 0xff, 0x38, 0x20, 0x05, 0x49, 0x68, 0x43,
+ 0x40, 0x18, 0xa1, 0x00, 0x40, 0x5a, 0x00, 0xab,
+ 0x99, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0xbc, 0xbd, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x28, 0x0f, 0xd0, 0x00, 0x29,
+ 0x0d, 0xd0, 0x02, 0x78, 0x0b, 0x78, 0x9a, 0x42,
+ 0x09, 0xd1, 0xff, 0x2a, 0x05, 0xd0, 0x42, 0x78,
+ 0x02, 0x32, 0xf5, 0xf7, 0x3c, 0x00, 0xf8, 0xac,
+ 0x00, 0x00, 0x81, 0xfb, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49,
+ 0xf5, 0xf7, 0x75, 0xfb, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x5e, 0x40, 0x01, 0x00, 0x01, 0x1c,
+ 0x49, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0xad, 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22,
+ 0xf5, 0xf7, 0x60, 0xfb, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd,
+ 0x80, 0xb5, 0xff, 0xf7, 0xc7, 0xff, 0x80, 0xbd,
+ 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, 0xf5, 0xf7,
+ 0x51, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20,
+ 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00,
+ 0x12, 0x61, 0x01, 0x00, 0x01, 0x1c, 0x80, 0x20,
+ 0x3c, 0x00, 0x70, 0xad, 0x00, 0x00, 0x81, 0x43,
+ 0x8a, 0x08, 0x0e, 0x20, 0x1c, 0x2a, 0x10, 0xb5,
+ 0x06, 0xd2, 0x03, 0x4c, 0x52, 0x00, 0xa3, 0x5c,
+ 0x8b, 0x42, 0x01, 0xd1, 0x10, 0x19, 0x40, 0x78,
+ 0x10, 0xbd, 0xfc, 0x41, 0x01, 0x00, 0x14, 0x23,
+ 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, 0x40, 0x68,
+ 0x70, 0x47, 0x74, 0x40, 0x01, 0x00, 0x20, 0x22,
+ 0x01, 0x1c, 0x80, 0xb5, 0x02, 0x48, 0xf5, 0xf7,
+ 0x52, 0xfd, 0x3c, 0x00, 0xac, 0xad, 0x00, 0x00,
+ 0x80, 0xbd, 0x00, 0x00, 0x48, 0x61, 0x01, 0x00,
+ 0x08, 0x06, 0x00, 0x0e, 0x02, 0x28, 0x01, 0xd1,
+ 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47,
+ 0x00, 0x29, 0x0c, 0xd0, 0x07, 0x49, 0x09, 0x68,
+ 0x00, 0x29, 0x08, 0xd0, 0x14, 0x23, 0x06, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0xc0, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xad,
+ 0x00, 0x00, 0xac, 0x69, 0x01, 0x00, 0x74, 0x40,
+ 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x22,
+ 0x01, 0x1c, 0x04, 0x48, 0xf5, 0xf7, 0x7d, 0xfb,
+ 0x06, 0x22, 0x21, 0x1c, 0x03, 0x48, 0xf5, 0xf7,
+ 0x78, 0xfb, 0x10, 0xbd, 0x00, 0x00, 0x12, 0x61,
+ 0x01, 0x00, 0x40, 0x80, 0x07, 0x00, 0x00, 0x29,
+ 0x01, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x38, 0x23,
+ 0x5a, 0x43, 0x07, 0x4b, 0xd2, 0x18, 0x3c, 0x00,
+ 0x24, 0xae, 0x00, 0x00, 0x83, 0x00, 0xd2, 0x5a,
+ 0x14, 0x23, 0x58, 0x43, 0x05, 0x4b, 0xc0, 0x18,
+ 0x40, 0x88, 0x10, 0x18, 0x08, 0x1a, 0x0a, 0x38,
+ 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00,
+ 0x8c, 0x41, 0x01, 0x00, 0x74, 0x40, 0x01, 0x00,
+ 0xf8, 0xb5, 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c,
+ 0x1c, 0x1c, 0x19, 0x1c, 0x00, 0xf0, 0x5a, 0xf8,
+ 0x05, 0x1c, 0x14, 0x35, 0x22, 0x1c, 0x31, 0x1c,
+ 0x3c, 0x00, 0x60, 0xae, 0x00, 0x00, 0x38, 0x1c,
+ 0xff, 0xf7, 0x0b, 0xff, 0x28, 0x18, 0x00, 0x04,
+ 0x00, 0x0c, 0xf8, 0xbd, 0x00, 0x00, 0x00, 0xb5,
+ 0x00, 0xf0, 0x4b, 0xf8, 0x0a, 0x30, 0x00, 0x04,
+ 0x00, 0x0c, 0x00, 0xbd, 0x00, 0x00, 0xf8, 0xb5,
+ 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, 0x1c, 0x1c,
+ 0x19, 0x1c, 0x00, 0xf0, 0x3e, 0xf8, 0x45, 0x00,
+ 0x1e, 0x35, 0x22, 0x1c, 0x31, 0x1c, 0x38, 0x1c,
+ 0xff, 0xf7, 0x3c, 0x00, 0x9c, 0xae, 0x00, 0x00,
+ 0xef, 0xfe, 0x28, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c,
+ 0x81, 0xb0, 0x0a, 0xa9, 0x14, 0x1c, 0x1e, 0x1c,
+ 0x03, 0xc9, 0x00, 0xf0, 0x29, 0xf8, 0x05, 0x1c,
+ 0x1e, 0x35, 0x21, 0x1c, 0x30, 0x1c, 0x00, 0xf0,
+ 0x23, 0xf8, 0x2d, 0x18, 0x22, 0x1c, 0x39, 0x1c,
+ 0x01, 0x98, 0xff, 0xf7, 0xd5, 0xfe, 0x28, 0x18,
+ 0x00, 0x04, 0x00, 0x0c, 0x3c, 0x00, 0xd8, 0xae,
+ 0x00, 0x00, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0x49,
+ 0x80, 0xb5, 0x09, 0x88, 0x09, 0x29, 0x04, 0xd0,
+ 0x14, 0x29, 0x07, 0xd1, 0x01, 0x01, 0x80, 0x00,
+ 0x00, 0xe0, 0xc1, 0x00, 0x08, 0x18, 0x00, 0x04,
+ 0x00, 0x0c, 0x80, 0xbd, 0xff, 0x21, 0xff, 0x20,
+ 0xf6, 0xf7, 0xd1, 0xf9, 0x00, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x38, 0x23,
+ 0x59, 0x43, 0x06, 0x4a, 0x14, 0x23, 0x3c, 0x00,
+ 0x14, 0xaf, 0x00, 0x00, 0x89, 0x18, 0x82, 0x00,
+ 0x89, 0x5a, 0x05, 0x4a, 0x58, 0x43, 0x80, 0x18,
+ 0x40, 0x88, 0x08, 0x18, 0x00, 0x04, 0x00, 0x0c,
+ 0x70, 0x47, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00,
+ 0x74, 0x40, 0x01, 0x00, 0x02, 0x48, 0x03, 0x49,
+ 0x00, 0x68, 0x40, 0x00, 0x08, 0x5a, 0x70, 0x47,
+ 0xa8, 0x69, 0x01, 0x00, 0x54, 0x40, 0x01, 0x00,
+ 0x0a, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x1c,
+ 0x3c, 0x00, 0x50, 0xaf, 0x00, 0x00, 0xfd, 0xf7,
+ 0x62, 0xff, 0x20, 0x1c, 0x10, 0xbd, 0xb0, 0xb5,
+ 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d,
+ 0xff, 0xf7, 0xf5, 0xfe, 0x00, 0x28, 0x18, 0xd0,
+ 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x08, 0xf0,
+ 0xe2, 0xfd, 0x00, 0x28, 0x11, 0xd0, 0x29, 0x88,
+ 0x09, 0x48, 0x20, 0x22, 0x81, 0x82, 0x69, 0x88,
+ 0x01, 0x83, 0xa9, 0x88, 0x06, 0x35, 0x41, 0x83,
+ 0xc5, 0x61, 0x3c, 0x00, 0x8c, 0xaf, 0x00, 0x00,
+ 0x30, 0x21, 0x09, 0x5d, 0x11, 0x54, 0x61, 0x6b,
+ 0x41, 0x62, 0x01, 0x20, 0xf7, 0xf7, 0x28, 0xf8,
+ 0x20, 0x1c, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00,
+ 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x21, 0x1c,
+ 0x14, 0x31, 0x05, 0x68, 0x20, 0x1c, 0x08, 0xf0,
+ 0xc1, 0xfd, 0x00, 0x28, 0x08, 0xd0, 0x05, 0x4e,
+ 0xf0, 0x68, 0x02, 0xf0, 0xcf, 0xfd, 0x28, 0x88,
+ 0xf0, 0x82, 0x03, 0x20, 0x3c, 0x00, 0xc8, 0xaf,
+ 0x00, 0x00, 0xf7, 0xf7, 0x10, 0xf8, 0x20, 0x1c,
+ 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x3e, 0xb5,
+ 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d,
+ 0xff, 0xf7, 0xb7, 0xfe, 0x00, 0x28, 0x21, 0xd0,
+ 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x02, 0xaa,
+ 0x08, 0xf0, 0x77, 0xfd, 0x00, 0x28, 0x19, 0xd0,
+ 0x02, 0x98, 0x4b, 0x21, 0x09, 0x5c, 0x00, 0x29,
+ 0x10, 0xd0, 0x01, 0x29, 0x14, 0xd0, 0x3c, 0x00,
+ 0x04, 0xb0, 0x00, 0x00, 0x02, 0x29, 0x0c, 0xd1,
+ 0x29, 0x88, 0x0d, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0x20, 0x1c, 0x03, 0xf0, 0x51, 0xf8, 0x01, 0x90,
+ 0x68, 0x46, 0x02, 0xf0, 0x5d, 0xfa, 0xf6, 0xf7,
+ 0xb5, 0xf8, 0x00, 0x21, 0x02, 0x98, 0x06, 0xf0,
+ 0x9f, 0xfe, 0x20, 0x1c, 0x3e, 0xbd, 0x07, 0xf0,
+ 0x29, 0xf8, 0x02, 0x98, 0x00, 0x21, 0x80, 0x69,
+ 0xc2, 0x07, 0xd2, 0x0f, 0x04, 0x20, 0xf6, 0xf7,
+ 0x3c, 0x00, 0x40, 0xb0, 0x00, 0x00, 0x7f, 0xff,
+ 0xee, 0xe7, 0x10, 0xb5, 0x04, 0x1c, 0xfd, 0xf7,
+ 0xe6, 0xfe, 0x20, 0x1c, 0x10, 0xbd, 0x3e, 0xb5,
+ 0x05, 0x1c, 0x00, 0xf0, 0x40, 0xfe, 0x00, 0x28,
+ 0x15, 0xd1, 0x28, 0x1c, 0x14, 0x30, 0xfa, 0xf7,
+ 0xce, 0xfb, 0x00, 0x28, 0x0f, 0xd0, 0x05, 0x21,
+ 0x28, 0x69, 0xff, 0xf7, 0x86, 0xfb, 0x04, 0x1c,
+ 0x09, 0xd0, 0x05, 0x22, 0x21, 0x1c, 0x68, 0x46,
+ 0xf5, 0xf7, 0x3c, 0x00, 0x7c, 0xb0, 0x00, 0x00,
+ 0x3d, 0xfa, 0x05, 0x34, 0x02, 0x94, 0x68, 0x46,
+ 0x03, 0xf0, 0x1a, 0xfb, 0x2a, 0x1c, 0x0d, 0x21,
+ 0x8f, 0x20, 0x08, 0xf0, 0x8f, 0xfb, 0x00, 0x20,
+ 0x3e, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0xfa, 0xf7, 0x98, 0xf8, 0x20, 0x1c, 0x05, 0xf0,
+ 0xe5, 0xf8, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x69, 0x00, 0x21,
+ 0x94, 0xb0, 0xff, 0xf7, 0x3c, 0x00, 0xb8, 0xb0,
+ 0x00, 0x00, 0x61, 0xfb, 0x69, 0x46, 0xfb, 0xf7,
+ 0x26, 0xf8, 0x00, 0x28, 0x1e, 0xd0, 0x00, 0x98,
+ 0xfa, 0xf7, 0x29, 0xfa, 0x01, 0x1c, 0x01, 0xa8,
+ 0x02, 0xf0, 0xd7, 0xf9, 0x00, 0x98, 0xfa, 0xf7,
+ 0xd2, 0xf9, 0x04, 0x90, 0x05, 0x20, 0x09, 0xad,
+ 0x68, 0x72, 0x02, 0xa8, 0x21, 0x1c, 0x06, 0x22,
+ 0x02, 0x30, 0xf5, 0xf7, 0x06, 0xfa, 0x01, 0x20,
+ 0x08, 0x90, 0x21, 0x6a, 0x0a, 0x90, 0x3c, 0x00,
+ 0xf4, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x09, 0x91,
+ 0x00, 0x5d, 0x28, 0x72, 0x01, 0xa8, 0x00, 0xf0,
+ 0x69, 0xf8, 0x20, 0x1c, 0x14, 0xb0, 0xb0, 0xbd,
+ 0xff, 0xb5, 0x16, 0x1c, 0x1f, 0x1c, 0x81, 0xb0,
+ 0x0a, 0x9d, 0x4c, 0x20, 0xf6, 0xf7, 0x90, 0xfb,
+ 0x04, 0x1c, 0x14, 0x30, 0x06, 0x22, 0x02, 0x99,
+ 0xf5, 0xf7, 0xea, 0xf9, 0x20, 0x1c, 0x06, 0x22,
+ 0x01, 0x99, 0xf5, 0xf7, 0xe5, 0xf9, 0x28, 0x20,
+ 0x3c, 0x00, 0x30, 0xb1, 0x00, 0x00, 0x00, 0x21,
+ 0x06, 0x55, 0xe1, 0x60, 0x27, 0x62, 0x00, 0x2d,
+ 0x01, 0xd0, 0x8e, 0x20, 0x00, 0xe0, 0x8d, 0x20,
+ 0x22, 0x1c, 0x0d, 0x21, 0x08, 0xf0, 0x33, 0xfb,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x05, 0x1c, 0x4c, 0x20, 0xf6, 0xf7, 0x6f, 0xfb,
+ 0x04, 0x1c, 0x4c, 0x22, 0x29, 0x1c, 0xf5, 0xf7,
+ 0x26, 0xfa, 0x29, 0x20, 0x40, 0x5d, 0x0d, 0x28,
+ 0x2c, 0xd2, 0x3c, 0x00, 0x6c, 0xb1, 0x00, 0x00,
+ 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44,
+ 0x28, 0x1a, 0x28, 0x1e, 0x06, 0x0a, 0x28, 0x28,
+ 0x0e, 0x28, 0x22, 0x12, 0x16, 0x00, 0x22, 0x1c,
+ 0x0d, 0x21, 0x8c, 0x20, 0x1a, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x83, 0x20, 0x16, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x84, 0x20, 0x12, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x85, 0x20, 0x0e, 0xe0, 0x22, 0x1c,
+ 0x0d, 0x21, 0x86, 0x20, 0x3c, 0x00, 0xa8, 0xb1,
+ 0x00, 0x00, 0x0a, 0xe0, 0x22, 0x1c, 0x0d, 0x21,
+ 0x87, 0x20, 0x06, 0xe0, 0x22, 0x1c, 0x0d, 0x21,
+ 0x89, 0x20, 0x02, 0xe0, 0x22, 0x1c, 0x0d, 0x21,
+ 0x8b, 0x20, 0x08, 0xf0, 0xf6, 0xfa, 0xb0, 0xbd,
+ 0xe8, 0x68, 0xf6, 0xf7, 0xe6, 0xf9, 0x20, 0x1c,
+ 0xf6, 0xf7, 0x11, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5,
+ 0x05, 0x1c, 0x90, 0x20, 0xf6, 0xf7, 0x2d, 0xfb,
+ 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x3c, 0x00,
+ 0xe4, 0xb1, 0x00, 0x00, 0x5b, 0xf9, 0x37, 0x4e,
+ 0x01, 0x27, 0xf0, 0x69, 0x04, 0x28, 0x03, 0xd9,
+ 0x70, 0x6b, 0x01, 0x30, 0x70, 0x63, 0x4d, 0xe0,
+ 0x33, 0x48, 0xb1, 0x6b, 0x04, 0xf0, 0xd0, 0xf8,
+ 0x01, 0x20, 0x20, 0x62, 0xa8, 0x7e, 0x21, 0x1c,
+ 0x80, 0x31, 0x02, 0x91, 0x08, 0x70, 0x22, 0x1c,
+ 0x60, 0x32, 0x01, 0x92, 0x00, 0x20, 0x2f, 0x1c,
+ 0x20, 0x37, 0x90, 0x72, 0x78, 0x7a, 0x2b, 0x1c,
+ 0x3c, 0x00, 0x20, 0xb2, 0x00, 0x00, 0x14, 0x33,
+ 0xd0, 0x72, 0xe8, 0x68, 0xaa, 0x1d, 0xa0, 0x60,
+ 0xe8, 0x6b, 0x48, 0x60, 0x44, 0x20, 0x40, 0x5d,
+ 0x08, 0x72, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0,
+ 0xaa, 0xfc, 0x68, 0x6a, 0x00, 0x28, 0x0a, 0xd1,
+ 0x01, 0x9a, 0x20, 0x1c, 0x93, 0x7a, 0x02, 0x99,
+ 0x22, 0x1c, 0x70, 0x32, 0x58, 0x30, 0x09, 0x78,
+ 0xfa, 0xf7, 0xdb, 0xf9, 0x06, 0xe0, 0x3a, 0x7a,
+ 0x23, 0x1c, 0x3c, 0x00, 0x5c, 0xb2, 0x00, 0x00,
+ 0xe8, 0x69, 0x29, 0x6a, 0x70, 0x33, 0xfd, 0xf7,
+ 0x8d, 0xf9, 0x30, 0x20, 0x40, 0x5d, 0x18, 0x49,
+ 0x07, 0x28, 0x0b, 0xd1, 0x58, 0x20, 0x00, 0x5d,
+ 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0xe0, 0x61,
+ 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x3f, 0xff, 0x18, 0xe0, 0x01, 0x22, 0x20, 0x1c,
+ 0x05, 0xf0, 0xac, 0xff, 0x07, 0x1c, 0x12, 0xd0,
+ 0x03, 0xf0, 0x06, 0xff, 0x3c, 0x00, 0x98, 0xb2,
+ 0x00, 0x00, 0xf3, 0x6d, 0x00, 0x2b, 0x06, 0xd0,
+ 0x60, 0x68, 0x20, 0x30, 0x82, 0x7b, 0x61, 0x6b,
+ 0x38, 0x1c, 0xf5, 0xf7, 0x99, 0xf8, 0xe8, 0x68,
+ 0xf6, 0xf7, 0x73, 0xf9, 0x20, 0x1c, 0xf6, 0xf7,
+ 0x9e, 0xfa, 0xfe, 0xbd, 0xf0, 0x69, 0x01, 0x30,
+ 0xf0, 0x61, 0xfa, 0xe7, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x05, 0x31,
+ 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00,
+ 0xd4, 0xb2, 0x00, 0x00, 0x0d, 0x1c, 0x09, 0x04,
+ 0x09, 0x0c, 0x00, 0x20, 0xf6, 0xf7, 0x7c, 0xf9,
+ 0x04, 0x1c, 0x2a, 0x1c, 0x31, 0x1c, 0x00, 0x68,
+ 0xf5, 0xf7, 0x06, 0xf9, 0x20, 0x1c, 0x70, 0xbd,
+ 0x40, 0x88, 0x70, 0x47, 0x03, 0x78, 0x1b, 0x07,
+ 0x9b, 0x0f, 0x0b, 0x70, 0x00, 0x78, 0x00, 0x09,
+ 0x10, 0x70, 0x70, 0x47, 0x04, 0x30, 0x70, 0x47,
+ 0x04, 0x30, 0x70, 0x47, 0xd4, 0x21, 0x01, 0x70,
+ 0x3c, 0x00, 0x10, 0xb3, 0x00, 0x00, 0x00, 0x21,
+ 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x21,
+ 0x01, 0x70, 0x00, 0x21, 0x41, 0x70, 0x70, 0x47,
+ 0x00, 0x00, 0xb4, 0x21, 0x01, 0x70, 0x00, 0x21,
+ 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49,
+ 0x48, 0x65, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x01, 0x49, 0x08, 0x65, 0x70, 0x47,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49,
+ 0x88, 0x65, 0x3c, 0x00, 0x4c, 0xb3, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00,
+ 0xf8, 0xb5, 0x5f, 0x4f, 0x05, 0x1c, 0xb8, 0x68,
+ 0x01, 0x30, 0xb8, 0x60, 0x07, 0xf0, 0x24, 0xfd,
+ 0x38, 0x61, 0x90, 0x20, 0xf6, 0xf7, 0x66, 0xfa,
+ 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x94, 0xf8,
+ 0x28, 0x6b, 0x27, 0x1c, 0x60, 0x63, 0x68, 0x8b,
+ 0x80, 0x37, 0x26, 0x1c, 0xc0, 0x07, 0xc0, 0x0f,
+ 0x20, 0x62, 0x68, 0x8b, 0x3c, 0x00, 0x88, 0xb3,
+ 0x00, 0x00, 0x60, 0x36, 0x02, 0x21, 0x40, 0x07,
+ 0xc0, 0x0f, 0x20, 0x63, 0x68, 0x8b, 0x80, 0x07,
+ 0xc0, 0x0f, 0xf8, 0x60, 0x28, 0x7f, 0x38, 0x70,
+ 0xb1, 0x72, 0x00, 0x28, 0x08, 0xd1, 0xf9, 0xf7,
+ 0xc8, 0xff, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x20,
+ 0x60, 0x62, 0x01, 0xe0, 0x01, 0x20, 0xa0, 0x62,
+ 0xf8, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x21,
+ 0x02, 0x20, 0x06, 0xf0, 0xcc, 0xff, 0x3c, 0x00,
+ 0xc4, 0xb3, 0x00, 0x00, 0x2b, 0x1c, 0x10, 0x33,
+ 0xaa, 0x1d, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0,
+ 0xdf, 0xfb, 0xa8, 0x6a, 0x00, 0x28, 0x0c, 0xd1,
+ 0x39, 0x78, 0x02, 0x29, 0x07, 0xd0, 0x22, 0x1c,
+ 0x70, 0x32, 0x20, 0x1c, 0x58, 0x30, 0xb3, 0x7a,
+ 0xfa, 0xf7, 0x10, 0xf9, 0x08, 0xe0, 0x01, 0x26,
+ 0x5e, 0xe0, 0xaa, 0x7d, 0x23, 0x1c, 0x28, 0x6a,
+ 0x69, 0x6a, 0x70, 0x33, 0xfd, 0xf7, 0xc0, 0xf8,
+ 0x3c, 0x00, 0x00, 0xb4, 0x00, 0x00, 0xe9, 0x68,
+ 0x00, 0x20, 0x09, 0x89, 0x00, 0x29, 0x00, 0xd1,
+ 0x04, 0x20, 0xf0, 0x72, 0x38, 0x78, 0x01, 0x28,
+ 0x14, 0xd1, 0x00, 0x27, 0x00, 0x90, 0x00, 0x20,
+ 0x06, 0xe0, 0x29, 0x69, 0x01, 0x29, 0x03, 0xd1,
+ 0xa9, 0x69, 0x01, 0x27, 0x89, 0x07, 0x1a, 0xd5,
+ 0x06, 0xf0, 0x79, 0xfc, 0x00, 0x28, 0xf4, 0xd1,
+ 0x01, 0x2f, 0x14, 0xd1, 0x00, 0x98, 0x01, 0x28,
+ 0x11, 0xd1, 0x3c, 0x00, 0x3c, 0xb4, 0x00, 0x00,
+ 0x08, 0xe0, 0x20, 0x1c, 0x58, 0x30, 0x06, 0xf0,
+ 0xe1, 0xfc, 0x00, 0x28, 0x0a, 0xd0, 0x80, 0x69,
+ 0x80, 0x07, 0x07, 0xd5, 0xf0, 0x7a, 0x08, 0x21,
+ 0x08, 0x43, 0xf0, 0x72, 0x01, 0x20, 0xe0, 0x62,
+ 0xe8, 0x7d, 0x30, 0x73, 0xe8, 0x68, 0xa0, 0x60,
+ 0xe0, 0x6a, 0x00, 0x28, 0x12, 0xd0, 0x1a, 0x4f,
+ 0xf8, 0x6b, 0x00, 0x28, 0x0e, 0xd0, 0x30, 0x7b,
+ 0xf5, 0xf7, 0xde, 0xfe, 0x3c, 0x00, 0x78, 0xb4,
+ 0x00, 0x00, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c,
+ 0x38, 0x1c, 0x40, 0x30, 0xfc, 0xf7, 0x55, 0xfc,
+ 0x14, 0x48, 0xb9, 0x6b, 0x03, 0xf0, 0x89, 0xff,
+ 0xf8, 0xbd, 0x10, 0x4f, 0x12, 0x48, 0xb9, 0x6b,
+ 0x03, 0xf0, 0x83, 0xff, 0x00, 0x22, 0x20, 0x1c,
+ 0x10, 0x49, 0x05, 0xf0, 0xa2, 0xfe, 0x06, 0x1c,
+ 0x03, 0xd1, 0x38, 0x6a, 0x01, 0x30, 0x38, 0x62,
+ 0xee, 0xe7, 0x20, 0x1c, 0xf6, 0xf7, 0x3c, 0x00,
+ 0xb4, 0xb4, 0x00, 0x00, 0x9f, 0xf9, 0xe8, 0x68,
+ 0xf6, 0xf7, 0x6e, 0xf8, 0x03, 0xf0, 0xf2, 0xfd,
+ 0x04, 0x48, 0x83, 0x6d, 0x00, 0x2b, 0xe2, 0xd0,
+ 0x00, 0x22, 0x30, 0x1c, 0x29, 0x6b, 0xf4, 0xf7,
+ 0x86, 0xff, 0xdc, 0xe7, 0xc4, 0x69, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x11, 0x30, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x20,
+ 0x07, 0xf0, 0xfe, 0xfc, 0x07, 0xf0, 0x5e, 0xfc,
+ 0x3c, 0x00, 0xf0, 0xb4, 0x00, 0x00, 0x0b, 0x49,
+ 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, 0x07, 0xf0,
+ 0x90, 0xfb, 0x00, 0x28, 0x07, 0xd0, 0xf7, 0xf7,
+ 0x34, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x12, 0x21,
+ 0x86, 0x20, 0xf5, 0xf7, 0xca, 0xfe, 0xf7, 0xf7,
+ 0x2c, 0xf9, 0x00, 0x28, 0xee, 0xd1, 0x01, 0xf0,
+ 0x80, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x40, 0x9c,
+ 0x00, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x01, 0x1c,
+ 0x17, 0x4a, 0x3c, 0x00, 0x2c, 0xb5, 0x00, 0x00,
+ 0x01, 0x29, 0x50, 0x69, 0x04, 0xd0, 0x80, 0x29,
+ 0x1d, 0xd0, 0x81, 0x29, 0x21, 0xd1, 0x1c, 0xe0,
+ 0x91, 0x78, 0x01, 0x29, 0x15, 0xd1, 0x02, 0x21,
+ 0x91, 0x70, 0x14, 0x1c, 0x01, 0x1c, 0x10, 0x48,
+ 0x03, 0xf0, 0x28, 0xff, 0x01, 0x21, 0x60, 0x69,
+ 0x00, 0xf0, 0x2e, 0xf9, 0x60, 0x69, 0x01, 0xf0,
+ 0x5f, 0xfc, 0x20, 0x70, 0xa0, 0x88, 0xa1, 0x69,
+ 0x00, 0x23, 0x0a, 0x4a, 0x3c, 0x00, 0x68, 0xb5,
+ 0x00, 0x00, 0x07, 0xf0, 0x7e, 0xfc, 0x10, 0xbd,
+ 0x22, 0x21, 0x06, 0xe0, 0x01, 0xf0, 0x1d, 0xfc,
+ 0x20, 0x1c, 0x00, 0xf0, 0x4a, 0xf8, 0x10, 0xbd,
+ 0x1c, 0x21, 0x20, 0x20, 0xf5, 0xf7, 0x8f, 0xfe,
+ 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0x3d, 0x2e, 0x00, 0x00, 0x70, 0xb5,
+ 0x1c, 0x4c, 0xa0, 0x78, 0x00, 0x28, 0x32, 0xd0,
+ 0x05, 0x28, 0x30, 0xd0, 0x60, 0x69, 0x3c, 0x00,
+ 0xa4, 0xb5, 0x00, 0x00, 0x00, 0xf0, 0xea, 0xf8,
+ 0x18, 0x4e, 0xb5, 0x79, 0xa0, 0x78, 0x01, 0x28,
+ 0x0b, 0xd0, 0x02, 0x28, 0x0e, 0xd0, 0x03, 0x28,
+ 0x10, 0xd0, 0x04, 0x28, 0x17, 0xd1, 0x42, 0x1f,
+ 0x80, 0x21, 0x20, 0x20, 0x08, 0xf0, 0x08, 0xf8,
+ 0x0e, 0xe0, 0x00, 0x21, 0x20, 0x20, 0x08, 0xf0,
+ 0x31, 0xf8, 0x0c, 0xe0, 0xa0, 0x88, 0x07, 0xf0,
+ 0x1d, 0xfc, 0x05, 0xe0, 0x20, 0x78, 0x00, 0xf0,
+ 0x3c, 0x00, 0xe0, 0xb5, 0x00, 0x00, 0x39, 0xfa,
+ 0x00, 0x20, 0x00, 0xf0, 0xc4, 0xfd, 0x60, 0x69,
+ 0x01, 0xf0, 0xe1, 0xfb, 0x05, 0x20, 0xa0, 0x70,
+ 0xb5, 0x71, 0x60, 0x69, 0x00, 0xf0, 0x61, 0xf9,
+ 0x00, 0x22, 0x20, 0x21, 0x81, 0x20, 0x08, 0xf0,
+ 0xd6, 0xf8, 0x70, 0xbd, 0x00, 0x00, 0xb4, 0x79,
+ 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xb0, 0xb5,
+ 0x0d, 0x4d, 0x04, 0x1c, 0xa8, 0x78, 0x00, 0x28,
+ 0x14, 0xd0, 0x3c, 0x00, 0x1c, 0xb6, 0x00, 0x00,
+ 0x68, 0x69, 0x00, 0xf0, 0x0b, 0xf9, 0x0a, 0x48,
+ 0x69, 0x69, 0x03, 0xf0, 0xa7, 0xfe, 0xa8, 0x88,
+ 0x07, 0xf0, 0x9e, 0xfb, 0x00, 0x2c, 0x02, 0xd0,
+ 0x68, 0x78, 0x00, 0xf0, 0x79, 0xff, 0x00, 0x20,
+ 0xa8, 0x70, 0xa9, 0x68, 0x20, 0x1c, 0xf4, 0xf7,
+ 0xca, 0xfe, 0xb0, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x06, 0x4b, 0x80, 0xb5,
+ 0x99, 0x78, 0x03, 0x29, 0x3c, 0x00, 0x58, 0xb6,
+ 0x00, 0x00, 0x06, 0xd1, 0x04, 0x21, 0x99, 0x70,
+ 0x20, 0x21, 0x02, 0x1c, 0x80, 0x20, 0x08, 0xf0,
+ 0xa4, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xb4, 0x79,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0xa1, 0x78,
+ 0x03, 0x29, 0x0f, 0xd1, 0x10, 0x30, 0xfa, 0xf7,
+ 0xde, 0xf8, 0x00, 0x28, 0x09, 0xd0, 0x20, 0x78,
+ 0x00, 0xf0, 0xe5, 0xf9, 0x00, 0x20, 0x00, 0xf0,
+ 0x70, 0xfd, 0x00, 0x21, 0x05, 0x48, 0x3c, 0x00,
+ 0x94, 0xb6, 0x00, 0x00, 0xfc, 0xf7, 0x9c, 0xfa,
+ 0x10, 0xbd, 0x1b, 0x21, 0x20, 0x20, 0xf5, 0xf7,
+ 0x01, 0xfe, 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0x51, 0xb6, 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5,
+ 0x89, 0x78, 0x03, 0x29, 0x09, 0xd1, 0x00, 0xf0,
+ 0xcd, 0xf9, 0x00, 0x20, 0x00, 0xf0, 0x58, 0xfd,
+ 0x01, 0x21, 0x05, 0x48, 0xfc, 0xf7, 0x84, 0xfa,
+ 0x80, 0xbd, 0x17, 0x21, 0x20, 0x20, 0xf5, 0xf7,
+ 0x3c, 0x00, 0xd0, 0xb6, 0x00, 0x00, 0xe9, 0xfd,
+ 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x51, 0xb6,
+ 0x00, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x1d, 0x1c,
+ 0xa3, 0x78, 0x06, 0x1c, 0x04, 0x98, 0x00, 0x2b,
+ 0x18, 0xd1, 0x01, 0x23, 0xa3, 0x70, 0x22, 0x61,
+ 0xe6, 0x60, 0x61, 0x70, 0xa0, 0x60, 0xa5, 0x61,
+ 0x00, 0x20, 0x07, 0xf0, 0xac, 0xfa, 0xa0, 0x80,
+ 0x30, 0x1c, 0xf7, 0xf7, 0x3c, 0xfb, 0xe0, 0x80,
+ 0x07, 0xf0, 0x3c, 0x00, 0x0c, 0xb7, 0x00, 0x00,
+ 0x4f, 0xfb, 0xc7, 0x21, 0xc9, 0x00, 0x28, 0x1a,
+ 0x41, 0x1a, 0x00, 0x22, 0x20, 0x20, 0x07, 0xf0,
+ 0x57, 0xff, 0x70, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, 0x00, 0xf0,
+ 0x09, 0xf8, 0x20, 0x1c, 0x00, 0xf0, 0x24, 0xf8,
+ 0x00, 0x2d, 0x01, 0xd0, 0xff, 0xf7, 0xd4, 0xfe,
+ 0xb0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x4c,
+ 0x05, 0x1c, 0xa0, 0x68, 0x3c, 0x00, 0x48, 0xb7,
+ 0x00, 0x00, 0x00, 0x28, 0x0f, 0xd1, 0x0a, 0x48,
+ 0x01, 0x7e, 0x02, 0x22, 0x11, 0x40, 0x61, 0x60,
+ 0x01, 0x7e, 0x11, 0x43, 0x01, 0x76, 0x07, 0x20,
+ 0x03, 0xf0, 0x49, 0xfc, 0x20, 0x60, 0x03, 0xf0,
+ 0x98, 0xff, 0x03, 0xf0, 0xee, 0xff, 0xa0, 0x68,
+ 0x28, 0x43, 0xa0, 0x60, 0xb0, 0xbd, 0x40, 0x7c,
+ 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x0a, 0x49,
+ 0x38, 0xb5, 0x0a, 0x1c, 0x20, 0x32, 0x3c, 0x00,
+ 0x84, 0xb7, 0x00, 0x00, 0x94, 0x79, 0x00, 0xab,
+ 0x1c, 0x70, 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70,
+ 0xe2, 0x68, 0x00, 0x2a, 0x02, 0xd1, 0x06, 0x4d,
+ 0x01, 0x23, 0x6b, 0x70, 0x10, 0x43, 0xe0, 0x60,
+ 0x00, 0xab, 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0x40, 0x7c, 0x01, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c,
+ 0x00, 0x29, 0x01, 0xd0, 0x00, 0xf0, 0x28, 0xf8,
+ 0x3c, 0x00, 0xc0, 0xb7, 0x00, 0x00, 0x06, 0x4c,
+ 0x60, 0x78, 0x21, 0x69, 0x08, 0x43, 0x03, 0xd1,
+ 0x01, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0xc5, 0xfd,
+ 0x20, 0x69, 0x28, 0x43, 0x20, 0x61, 0xb0, 0xbd,
+ 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0a, 0x4c, 0x05, 0x1c, 0x22, 0x69, 0x00, 0x20,
+ 0x00, 0x2a, 0x0c, 0xd1, 0x00, 0x29, 0x00, 0xd0,
+ 0x04, 0xe0, 0x60, 0x78, 0x00, 0x28, 0x02, 0xd1,
+ 0x04, 0xf0, 0x3c, 0x00, 0xfc, 0xb7, 0x00, 0x00,
+ 0x69, 0xfb, 0x60, 0x70, 0x28, 0x1c, 0x06, 0xf0,
+ 0xef, 0xfc, 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c,
+ 0x60, 0x78, 0x00, 0x28, 0x0a, 0xd0, 0x06, 0xf0,
+ 0xe3, 0xfc, 0x00, 0x20, 0x60, 0x70, 0x20, 0x69,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x21, 0x0e, 0x20,
+ 0x06, 0xf0, 0x96, 0xfd, 0x10, 0xbd, 0x00, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xb8,
+ 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x0b, 0x69,
+ 0x83, 0x42, 0x04, 0xd1, 0x4a, 0x78, 0x00, 0x2a,
+ 0x01, 0xd1, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22,
+ 0x83, 0x43, 0x0b, 0x61, 0x00, 0x2a, 0x03, 0xd0,
+ 0x00, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0x7f, 0xfd,
+ 0x80, 0xbd, 0x18, 0x63, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x20, 0xf6, 0xf7, 0x56, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00,
+ 0x74, 0xb8, 0x00, 0x00, 0x00, 0xf0, 0x04, 0xf8,
+ 0x20, 0x1c, 0x00, 0xf0, 0x1f, 0xf8, 0x10, 0xbd,
+ 0xb0, 0xb5, 0x0c, 0x4d, 0x04, 0x1c, 0xa8, 0x68,
+ 0xa0, 0x42, 0x0f, 0xd1, 0x07, 0x20, 0x29, 0x68,
+ 0x08, 0xf0, 0x8c, 0xfb, 0x68, 0x68, 0x02, 0x22,
+ 0x07, 0x49, 0x00, 0x28, 0x08, 0x7e, 0x01, 0xd0,
+ 0x10, 0x43, 0x00, 0xe0, 0x90, 0x43, 0x08, 0x76,
+ 0x04, 0xf0, 0xc4, 0xf8, 0xa8, 0x68, 0xa0, 0x43,
+ 0x3c, 0x00, 0xb0, 0xb8, 0x00, 0x00, 0xa8, 0x60,
+ 0xb0, 0xbd, 0x40, 0x7c, 0x01, 0x00, 0x0c, 0x80,
+ 0x07, 0x00, 0x0a, 0x49, 0x38, 0xb5, 0x0a, 0x1c,
+ 0x20, 0x32, 0x94, 0x79, 0x00, 0xab, 0x1c, 0x70,
+ 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, 0xe2, 0x68,
+ 0x82, 0x42, 0x02, 0xd1, 0x06, 0x4d, 0x00, 0x23,
+ 0x6b, 0x70, 0x82, 0x43, 0xe2, 0x60, 0x00, 0xab,
+ 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, 0x00, 0x10,
+ 0x07, 0x00, 0x3c, 0x00, 0xec, 0xb8, 0x00, 0x00,
+ 0x40, 0x7c, 0x01, 0x00, 0x00, 0x50, 0x07, 0x00,
+ 0xb0, 0xb5, 0x05, 0x1c, 0x0a, 0x4c, 0x00, 0x21,
+ 0x60, 0x69, 0xff, 0xf7, 0x11, 0xff, 0x04, 0x20,
+ 0x01, 0xf0, 0x46, 0xf9, 0x01, 0xf0, 0x88, 0xfb,
+ 0x00, 0x22, 0x04, 0x21, 0x04, 0x20, 0x01, 0xf0,
+ 0x8b, 0xf8, 0x28, 0x1c, 0x01, 0xf0, 0x4a, 0xfa,
+ 0x60, 0x69, 0xff, 0xf7, 0xa7, 0xff, 0xb0, 0xbd,
+ 0x40, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x28, 0xb9,
+ 0x00, 0x00, 0x80, 0xb5, 0x01, 0xf0, 0x77, 0xfa,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x4d, 0x01, 0x21,
+ 0x28, 0x69, 0xff, 0xf7, 0xf4, 0xfe, 0xff, 0xf7,
+ 0x2a, 0xfe, 0x00, 0xf0, 0x2c, 0xfb, 0x00, 0xf0,
+ 0x84, 0xfa, 0x00, 0x24, 0x00, 0x22, 0x04, 0x21,
+ 0x20, 0x1c, 0x01, 0xf0, 0x6c, 0xf8, 0x01, 0x34,
+ 0x24, 0x06, 0x24, 0x0e, 0x04, 0x2c, 0xf5, 0xd3,
+ 0x28, 0x69, 0xff, 0xf7, 0x86, 0xff, 0x3c, 0x00,
+ 0x64, 0xb9, 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00,
+ 0x40, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x0e, 0x1c, 0x07, 0x4c, 0x17, 0x1c, 0x01, 0x21,
+ 0x20, 0x69, 0xff, 0xf7, 0xd3, 0xfe, 0x3a, 0x1c,
+ 0x31, 0x1c, 0x28, 0x1c, 0x01, 0xf0, 0x52, 0xf8,
+ 0x20, 0x69, 0xff, 0xf7, 0x71, 0xff, 0xf8, 0xbd,
+ 0x40, 0x7c, 0x01, 0x00, 0xff, 0xb5, 0x89, 0xb0,
+ 0x06, 0x1c, 0x16, 0x98, 0x1d, 0x1c, 0x00, 0x28,
+ 0x3c, 0x00, 0xa0, 0xb9, 0x00, 0x00, 0x01, 0xd0,
+ 0x29, 0x48, 0x14, 0x90, 0x28, 0x68, 0x00, 0x88,
+ 0x00, 0x06, 0x80, 0x0e, 0x20, 0x28, 0x01, 0xd0,
+ 0x14, 0x28, 0x17, 0xd1, 0x0a, 0xaa, 0x18, 0x24,
+ 0x18, 0x21, 0x05, 0xca, 0xff, 0xf7, 0x77, 0xf9,
+ 0x07, 0x1c, 0x28, 0x1c, 0x01, 0x89, 0xa1, 0x42,
+ 0x02, 0xdd, 0x00, 0x68, 0x01, 0x19, 0x0b, 0xe0,
+ 0xc0, 0x68, 0x64, 0x1a, 0x00, 0x28, 0xf5, 0xd1,
+ 0x0f, 0x21, 0x3c, 0x00, 0xdc, 0xb9, 0x00, 0x00,
+ 0x86, 0x20, 0xf5, 0xf7, 0x61, 0xfc, 0x00, 0x21,
+ 0x01, 0xe0, 0x00, 0x21, 0x00, 0x27, 0x18, 0x48,
+ 0x08, 0x90, 0x80, 0x79, 0x07, 0x90, 0x0c, 0x20,
+ 0x16, 0x4a, 0x70, 0x43, 0x80, 0x18, 0x04, 0x79,
+ 0x04, 0x91, 0x12, 0x99, 0x15, 0x98, 0x14, 0x9a,
+ 0x01, 0x91, 0x03, 0x90, 0x05, 0x97, 0x00, 0x95,
+ 0x0a, 0xab, 0x02, 0x92, 0x21, 0x1c, 0x30, 0x1c,
+ 0x0c, 0xcb, 0xf7, 0xf7, 0x3c, 0x00, 0x18, 0xba,
+ 0x00, 0x00, 0x03, 0xf9, 0x01, 0x25, 0xb5, 0x40,
+ 0x0c, 0x4e, 0x08, 0x3e, 0x30, 0x78, 0x28, 0x40,
+ 0x06, 0xd0, 0x20, 0x1c, 0x00, 0xf0, 0xc9, 0xfd,
+ 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x03, 0xe0,
+ 0x20, 0x1c, 0x13, 0x99, 0x00, 0xf0, 0x43, 0xff,
+ 0x07, 0xa9, 0x03, 0xc9, 0x88, 0x71, 0x0d, 0xb0,
+ 0xf0, 0xbd, 0x95, 0x24, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00,
+ 0x54, 0xba, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0c, 0x23, 0x09, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x00, 0x79, 0x05, 0x1c, 0x00, 0xf0, 0x92, 0xfe,
+ 0x28, 0x1c, 0xf7, 0xf7, 0xc7, 0xf8, 0x01, 0x20,
+ 0x03, 0x4a, 0xa0, 0x40, 0x08, 0x3a, 0x11, 0x78,
+ 0x81, 0x43, 0x11, 0x70, 0xb0, 0xbd, 0x00, 0x00,
+ 0x74, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c,
+ 0x20, 0x78, 0x00, 0x28, 0x03, 0xd1, 0x1a, 0x21,
+ 0x3c, 0x00, 0x90, 0xba, 0x00, 0x00, 0x86, 0x20,
+ 0xf5, 0xf7, 0x07, 0xfc, 0x20, 0x78, 0x10, 0xbd,
+ 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0x01, 0x48,
+ 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, 0x2c, 0x63,
+ 0x01, 0x00, 0x80, 0xb5, 0xf6, 0xf7, 0xd1, 0xfe,
+ 0x00, 0xf0, 0x1b, 0xf9, 0x80, 0xbd, 0xfe, 0xb5,
+ 0x01, 0x68, 0x05, 0x1c, 0x0c, 0x68, 0x0e, 0x1c,
+ 0x21, 0x78, 0x88, 0x07, 0x71, 0xd1, 0x68, 0x69,
+ 0xc2, 0x07, 0x3c, 0x00, 0xcc, 0xba, 0x00, 0x00,
+ 0x6e, 0xd5, 0x80, 0x07, 0x6d, 0xd5, 0xe8, 0x7a,
+ 0xc2, 0x07, 0x08, 0x07, 0x09, 0x09, 0x02, 0x91,
+ 0x45, 0x49, 0x80, 0x0f, 0xd2, 0x0f, 0x00, 0x28,
+ 0x4f, 0x68, 0x05, 0xd0, 0x01, 0x28, 0x09, 0xd0,
+ 0x02, 0x28, 0x21, 0xd0, 0x03, 0x28, 0x5b, 0xd1,
+ 0xff, 0x23, 0x20, 0x1c, 0xa9, 0x7a, 0xf4, 0xf7,
+ 0x74, 0xfc, 0x55, 0xe0, 0x02, 0x98, 0x0b, 0x28,
+ 0x0a, 0xd0, 0x0c, 0x28, 0x3c, 0x00, 0x08, 0xbb,
+ 0x00, 0x00, 0x0f, 0xd0, 0x0d, 0x28, 0x4e, 0xd1,
+ 0x39, 0x4f, 0xf8, 0x68, 0xf4, 0xf7, 0x61, 0xfc,
+ 0x00, 0x20, 0xc0, 0x43, 0x5a, 0xe0, 0x35, 0x4f,
+ 0xa9, 0x7a, 0xbb, 0x68, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x5b, 0xfc, 0x40, 0xe0, 0x32, 0x4f, 0x38, 0x69,
+ 0xf4, 0xf7, 0x53, 0xfc, 0x3b, 0xe0, 0x00, 0x21,
+ 0x01, 0x91, 0x02, 0x99, 0x00, 0x20, 0xff, 0x23,
+ 0x09, 0x07, 0x01, 0xd4, 0x01, 0x20, 0x3c, 0x00,
+ 0x44, 0xbb, 0x00, 0x00, 0x13, 0xe0, 0x31, 0x89,
+ 0x19, 0x29, 0x01, 0xd3, 0x26, 0x7e, 0x07, 0xe0,
+ 0x15, 0x29, 0x04, 0xd3, 0x18, 0x26, 0x71, 0x1a,
+ 0x49, 0x19, 0x0e, 0x7b, 0x00, 0xe0, 0x00, 0x26,
+ 0xb1, 0x06, 0x02, 0xd4, 0x01, 0x20, 0x73, 0x07,
+ 0x5b, 0x0f, 0x01, 0x21, 0x01, 0x91, 0x00, 0x28,
+ 0x03, 0xd0, 0xa9, 0x7a, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x36, 0xfc, 0x01, 0x99, 0x01, 0x29, 0x15, 0xd1,
+ 0x3c, 0x00, 0x80, 0xbb, 0x00, 0x00, 0xf0, 0x06,
+ 0xc6, 0x0f, 0x20, 0x88, 0x1b, 0x4f, 0xe4, 0x8a,
+ 0xf9, 0x6b, 0x00, 0x05, 0xc0, 0x0f, 0x00, 0x29,
+ 0x1a, 0xd0, 0x4b, 0x1c, 0x18, 0xd0, 0x00, 0x2e,
+ 0x0a, 0xd0, 0x00, 0x28, 0x08, 0xd0, 0x38, 0x88,
+ 0x84, 0x42, 0x13, 0xd0, 0x02, 0x98, 0x0c, 0x28,
+ 0x01, 0xe0, 0x1d, 0xe0, 0x12, 0xe0, 0x0d, 0xd0,
+ 0x08, 0x1c, 0x01, 0xf0, 0x76, 0xf9, 0x00, 0x28,
+ 0x03, 0xd1, 0x3c, 0x00, 0xbc, 0xbb, 0x00, 0x00,
+ 0x00, 0xf0, 0xa6, 0xfa, 0xf4, 0xf7, 0x0a, 0xfc,
+ 0x00, 0x20, 0xc0, 0x43, 0xf8, 0x63, 0x00, 0x2e,
+ 0x0d, 0xd0, 0x3c, 0x80, 0x00, 0x20, 0xf8, 0x63,
+ 0x09, 0xe0, 0x20, 0x88, 0x00, 0x06, 0x80, 0x0e,
+ 0x20, 0x28, 0x04, 0xd1, 0x04, 0x4f, 0x20, 0x1c,
+ 0xb9, 0x6a, 0xf4, 0xf7, 0xf8, 0xfb, 0x29, 0x1c,
+ 0x02, 0x48, 0xfb, 0xf7, 0xef, 0xff, 0xfe, 0xbd,
+ 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0xf8, 0xbb,
+ 0x00, 0x00, 0xa5, 0x9a, 0x00, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x00, 0x78, 0x00, 0x21, 0x00, 0xf0,
+ 0xfc, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x18, 0x63,
+ 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28,
+ 0x1a, 0x68, 0x00, 0xd0, 0x01, 0x1c, 0x10, 0x1c,
+ 0x19, 0x60, 0x70, 0x47, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x05, 0x48,
+ 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, 0x3c, 0x00,
+ 0x34, 0xbc, 0x00, 0x00, 0x04, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0xc0, 0x69, 0xf4, 0xf7, 0xcc, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00,
+ 0x94, 0x46, 0x01, 0x00, 0x02, 0x1c, 0x06, 0x48,
+ 0x80, 0xb5, 0x81, 0x62, 0x82, 0x60, 0x00, 0x7f,
+ 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x80, 0x69, 0xf4, 0xf7, 0xb9, 0xfb, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, 0x01, 0x00,
+ 0x3c, 0x00, 0x70, 0xbc, 0x00, 0x00, 0x80, 0xb5,
+ 0x00, 0x20, 0x00, 0xf0, 0x3c, 0xfb, 0x00, 0x20,
+ 0x00, 0xf0, 0x6d, 0xfa, 0x00, 0xf0, 0x65, 0xfa,
+ 0x04, 0x49, 0xc8, 0x6a, 0x01, 0x30, 0xc8, 0x62,
+ 0x08, 0x1f, 0x00, 0x88, 0x07, 0xf0, 0xc1, 0xf8,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48,
+ 0x80, 0xb5, 0x00, 0x21, 0x01, 0x77, 0xc1, 0x6a,
+ 0x01, 0x31, 0xc1, 0x62, 0x04, 0x38, 0x00, 0x88,
+ 0x07, 0xf0, 0x3c, 0x00, 0xac, 0xbc, 0x00, 0x00,
+ 0xb3, 0xf8, 0x03, 0xf0, 0xd1, 0xf9, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x05, 0xf0,
+ 0xe9, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x28,
+ 0x03, 0xd1, 0x01, 0x20, 0x04, 0xf0, 0x22, 0xfa,
+ 0x80, 0xbd, 0x01, 0x20, 0x03, 0xf0, 0xe6, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x03, 0x49, 0x01, 0x20,
+ 0x49, 0x78, 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbc,
+ 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x70, 0xb5,
+ 0x13, 0x4d, 0x28, 0x78, 0x00, 0x28, 0x20, 0xd1,
+ 0x01, 0x21, 0x2e, 0x1c, 0x70, 0x68, 0xff, 0xf7,
+ 0x12, 0xfd, 0x00, 0x21, 0x07, 0x20, 0x06, 0xf0,
+ 0x2a, 0xfb, 0x0d, 0x48, 0x00, 0x24, 0x04, 0x71,
+ 0x04, 0xf0, 0xed, 0xf8, 0x06, 0xf0, 0xd5, 0xf9,
+ 0x01, 0x20, 0x28, 0x70, 0x0a, 0x48, 0x04, 0x60,
+ 0x44, 0x60, 0xf6, 0xf7, 0x4c, 0xfd, 0x3c, 0x00,
+ 0x24, 0xbd, 0x00, 0x00, 0xf7, 0xf7, 0x5e, 0xf8,
+ 0xff, 0xf7, 0xa2, 0xff, 0x00, 0xf0, 0xa8, 0xfd,
+ 0x05, 0x48, 0x71, 0x68, 0x03, 0xf0, 0x20, 0xfb,
+ 0x01, 0x20, 0x70, 0xbd, 0x2c, 0x63, 0x01, 0x00,
+ 0x50, 0x00, 0x07, 0x00, 0x80, 0x00, 0x07, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0xb0, 0xb5, 0x1e, 0x4c,
+ 0x20, 0x78, 0x01, 0x28, 0x35, 0xd1, 0x25, 0x1c,
+ 0x69, 0x68, 0x1c, 0x48, 0x03, 0xf0, 0x20, 0xfb,
+ 0x3c, 0x00, 0x60, 0xbd, 0x00, 0x00, 0x04, 0xf0,
+ 0xf0, 0xf8, 0x1a, 0x48, 0x01, 0x68, 0x49, 0x08,
+ 0x49, 0x00, 0x01, 0x60, 0x01, 0x68, 0x01, 0x22,
+ 0x11, 0x43, 0x01, 0x60, 0x00, 0xf0, 0x2b, 0xfe,
+ 0x00, 0xf0, 0x1b, 0xfc, 0x06, 0xf0, 0x99, 0xf8,
+ 0xf6, 0xf7, 0x29, 0xfe, 0xf6, 0xf7, 0x2d, 0xfc,
+ 0x00, 0x20, 0x20, 0x70, 0xff, 0xf7, 0x83, 0xff,
+ 0x00, 0xf0, 0x8b, 0xfd, 0x0f, 0x48, 0x81, 0x78,
+ 0x08, 0x22, 0x3c, 0x00, 0x9c, 0xbd, 0x00, 0x00,
+ 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43,
+ 0x81, 0x70, 0x0c, 0x49, 0x10, 0x20, 0x08, 0x71,
+ 0x68, 0x68, 0xff, 0xf7, 0x5f, 0xfd, 0xf7, 0xf7,
+ 0x39, 0xf8, 0xf6, 0xf7, 0x4d, 0xfd, 0x01, 0x21,
+ 0x07, 0x20, 0x06, 0xf0, 0xcd, 0xfa, 0x01, 0x20,
+ 0xb0, 0xbd, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0xf0, 0x00, 0x07, 0x00,
+ 0x00, 0x00, 0x07, 0x00, 0x3c, 0x00, 0xd8, 0xbd,
+ 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x03, 0x49,
+ 0x01, 0x20, 0x89, 0x7a, 0x01, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0xb0, 0xb5, 0x15, 0x4d, 0x04, 0x1c,
+ 0x28, 0x7a, 0x00, 0x28, 0x20, 0xd1, 0xf9, 0xf7,
+ 0x00, 0xfc, 0x02, 0x28, 0x1c, 0xd1, 0x01, 0x20,
+ 0x28, 0x72, 0xe8, 0x68, 0x00, 0x28, 0x10, 0xd0,
+ 0x20, 0x68, 0x29, 0x68, 0x08, 0x60, 0x3c, 0x00,
+ 0x14, 0xbe, 0x00, 0x00, 0x69, 0x68, 0x0d, 0x48,
+ 0x03, 0xf0, 0xc2, 0xfa, 0x01, 0x21, 0x68, 0x68,
+ 0xff, 0xf7, 0xc8, 0xfc, 0x00, 0x22, 0x24, 0x20,
+ 0x61, 0x68, 0x07, 0xf0, 0xcf, 0xfb, 0xb0, 0xbd,
+ 0x00, 0x20, 0x28, 0x72, 0x21, 0x68, 0x01, 0x20,
+ 0xf4, 0xf7, 0xcf, 0xfa, 0xb0, 0xbd, 0x00, 0x20,
+ 0x21, 0x68, 0xf4, 0xf7, 0xca, 0xfa, 0xb0, 0xbd,
+ 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x3c, 0x00, 0x50, 0xbe, 0x00, 0x00, 0x04, 0x48,
+ 0x80, 0xb5, 0x00, 0x7a, 0x01, 0x28, 0x02, 0xd1,
+ 0x00, 0x20, 0x02, 0xf0, 0xf0, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x28, 0x07, 0xd0, 0x80, 0x28, 0x09, 0xd1,
+ 0x07, 0x48, 0x00, 0x7a, 0x00, 0x28, 0x04, 0xd0,
+ 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x02, 0xf0,
+ 0xde, 0xfe, 0x80, 0xbd, 0x0e, 0x21, 0x24, 0x20,
+ 0xf5, 0xf7, 0x3c, 0x00, 0x8c, 0xbe, 0x00, 0x00,
+ 0x0b, 0xfa, 0x80, 0xbd, 0x04, 0x7a, 0x01, 0x00,
+ 0xf8, 0xb5, 0x3a, 0x4e, 0x05, 0x1c, 0xb0, 0x7a,
+ 0x00, 0x28, 0x69, 0xd1, 0xf9, 0xf7, 0xae, 0xfb,
+ 0x02, 0x28, 0x65, 0xd1, 0x36, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x61, 0xd0, 0x35, 0x48, 0x71, 0x68,
+ 0x03, 0xf0, 0x74, 0xfa, 0x01, 0x21, 0x70, 0x68,
+ 0xff, 0xf7, 0x7a, 0xfc, 0x6c, 0x20, 0xf5, 0xf7,
+ 0xb9, 0xfc, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0xbe,
+ 0x00, 0x00, 0x6c, 0x21, 0xf4, 0xf7, 0xe7, 0xfa,
+ 0x30, 0x68, 0x2c, 0x22, 0x04, 0x60, 0x29, 0x68,
+ 0x81, 0x60, 0x69, 0x68, 0xc1, 0x60, 0x00, 0x21,
+ 0x11, 0x54, 0x81, 0x62, 0xa9, 0x68, 0x00, 0x29,
+ 0x02, 0xd0, 0xe9, 0x68, 0x01, 0x61, 0x05, 0xe0,
+ 0x06, 0xf0, 0x5d, 0xff, 0x69, 0x68, 0x40, 0x18,
+ 0x31, 0x68, 0x08, 0x61, 0x70, 0x68, 0xff, 0xf7,
+ 0x14, 0xfd, 0x69, 0x21, 0x08, 0x55, 0x3c, 0x00,
+ 0x04, 0xbf, 0x00, 0x00, 0x00, 0x20, 0xf9, 0xf7,
+ 0x09, 0xfb, 0x01, 0x27, 0x3b, 0x1c, 0x06, 0x1c,
+ 0x22, 0x1c, 0x24, 0x32, 0x00, 0x21, 0xf9, 0xf7,
+ 0x79, 0xfb, 0x1c, 0x48, 0x03, 0x21, 0x00, 0x88,
+ 0x89, 0x03, 0x08, 0x43, 0x21, 0x1c, 0x40, 0x31,
+ 0x00, 0x91, 0x48, 0x83, 0x18, 0x48, 0x10, 0x21,
+ 0x60, 0x60, 0x18, 0x48, 0xa0, 0x60, 0xa7, 0x63,
+ 0x67, 0x63, 0x00, 0x20, 0xf5, 0xf7, 0x4c, 0xfb,
+ 0x3c, 0x00, 0x40, 0xbf, 0x00, 0x00, 0xe0, 0x60,
+ 0x02, 0x89, 0x00, 0x99, 0xca, 0x83, 0x07, 0x68,
+ 0x31, 0x1c, 0x38, 0x1d, 0x27, 0x61, 0xfe, 0xf7,
+ 0x8e, 0xfe, 0x38, 0x1c, 0x0a, 0x30, 0x0f, 0x49,
+ 0xfe, 0xf7, 0x89, 0xfe, 0xa4, 0x20, 0x38, 0x80,
+ 0x00, 0x20, 0x04, 0xf0, 0xde, 0xfb, 0x00, 0x22,
+ 0x1f, 0x20, 0x69, 0x68, 0x07, 0xf0, 0x2d, 0xfb,
+ 0xf8, 0xbd, 0xff, 0xe7, 0x00, 0x20, 0x29, 0x68,
+ 0xf4, 0xf7, 0x3c, 0x00, 0x7c, 0xbf, 0x00, 0x00,
+ 0x2e, 0xfa, 0xf8, 0xe7, 0x14, 0x7a, 0x01, 0x00,
+ 0x80, 0x5a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0xfa, 0x60, 0x01, 0x00, 0x99, 0xec, 0x00, 0x00,
+ 0x15, 0xed, 0x00, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0x06, 0x48, 0x80, 0xb5, 0x81, 0x7a, 0x00, 0x29,
+ 0x07, 0xd0, 0x00, 0x68, 0x04, 0x22, 0x20, 0x30,
+ 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0,
+ 0x6b, 0xfd, 0x80, 0xbd, 0x3c, 0x00, 0xb8, 0xbf,
+ 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x4c, 0xa0, 0x7a, 0x01, 0x28, 0x03, 0xd1,
+ 0x06, 0xf0, 0xf1, 0xfe, 0x21, 0x68, 0x88, 0x61,
+ 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0x03, 0x1c,
+ 0x08, 0x1c, 0x1f, 0x49, 0x70, 0xb5, 0x0a, 0x68,
+ 0x01, 0x2b, 0x1c, 0xd0, 0x80, 0x2b, 0x05, 0xd0,
+ 0x83, 0x2b, 0x30, 0xd1, 0x88, 0x7a, 0x00, 0x28,
+ 0x14, 0xd0, 0x29, 0xe0, 0x53, 0x69, 0x3c, 0x00,
+ 0xf4, 0xbf, 0x00, 0x00, 0x00, 0x2b, 0x0e, 0xd0,
+ 0x94, 0x69, 0xd5, 0x69, 0x2e, 0x1b, 0x0c, 0x69,
+ 0x5d, 0x1b, 0x36, 0x1b, 0xb6, 0x10, 0xa4, 0x19,
+ 0x0c, 0x61, 0xcc, 0x68, 0x2d, 0x1b, 0xad, 0x10,
+ 0x64, 0x19, 0xcc, 0x60, 0x93, 0x61, 0x02, 0xf0,
+ 0x81, 0xfd, 0x70, 0xbd, 0x02, 0x28, 0x12, 0xd1,
+ 0x90, 0x6a, 0x0c, 0x1c, 0x00, 0x28, 0xf8, 0xd0,
+ 0x07, 0xf0, 0x0e, 0xfa, 0xa0, 0x7a, 0x01, 0x28,
+ 0x3c, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xf3, 0xd1,
+ 0x20, 0x68, 0x81, 0x6a, 0x00, 0x29, 0xef, 0xd1,
+ 0x20, 0x30, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x70, 0xbd, 0x02, 0xf0, 0x21, 0xfd,
+ 0x70, 0xbd, 0x0e, 0x21, 0x1f, 0x20, 0xf5, 0xf7,
+ 0x28, 0xf9, 0x70, 0xbd, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0x02, 0x49, 0x0c, 0x31, 0x03, 0xc9,
+ 0x40, 0x18, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0x3c, 0x00, 0x6c, 0xc0, 0x00, 0x00,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x04, 0x22,
+ 0x20, 0x30, 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73,
+ 0x07, 0xf0, 0xe4, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x4c,
+ 0x0e, 0x1c, 0xa1, 0x7a, 0x00, 0x29, 0x1c, 0xd0,
+ 0x21, 0x68, 0x08, 0x61, 0x07, 0xf0, 0x32, 0xfa,
+ 0x00, 0x28, 0x17, 0xd0, 0x20, 0x68, 0x00, 0x25,
+ 0x05, 0x62, 0x00, 0x22, 0x3c, 0x00, 0xa8, 0xc0,
+ 0x00, 0x00, 0x83, 0x21, 0x1f, 0x20, 0x07, 0xf0,
+ 0x94, 0xfa, 0x60, 0x68, 0xff, 0xf7, 0x03, 0xfc,
+ 0x21, 0x68, 0x04, 0x22, 0x20, 0x31, 0x08, 0x7b,
+ 0x2b, 0x1c, 0x90, 0x43, 0x08, 0x73, 0x31, 0x1c,
+ 0x00, 0x22, 0x1f, 0x20, 0x07, 0xf0, 0x61, 0xfb,
+ 0x70, 0xbd, 0x20, 0x68, 0x08, 0x22, 0x20, 0x30,
+ 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0,
+ 0xd6, 0xfc, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0xc0, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0x77, 0xfc, 0x00, 0xf0,
+ 0x6f, 0xfc, 0x00, 0xf0, 0x29, 0xff, 0x00, 0xf0,
+ 0x5d, 0xfa, 0x00, 0xf0, 0xc5, 0xf8, 0x00, 0xf0,
+ 0x85, 0xff, 0x80, 0xbd, 0x80, 0xb5, 0xfa, 0xf7,
+ 0x85, 0xfa, 0x80, 0xbd, 0x01, 0x48, 0xc0, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00,
+ 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c,
+ 0x3c, 0x00, 0x20, 0xc1, 0x00, 0x00, 0x02, 0x48,
+ 0xc1, 0x60, 0x70, 0x47, 0x00, 0x00, 0x81, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x48,
+ 0x02, 0x49, 0xc8, 0x60, 0x70, 0x47, 0x81, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x49,
+ 0x88, 0x61, 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x88, 0x61,
+ 0x70, 0x47, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x3c, 0x00, 0x5c, 0xc1, 0x00, 0x00,
+ 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0xc1, 0x61,
+ 0x70, 0x47, 0x00, 0x00, 0x89, 0x75, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28,
+ 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x81, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0x8d, 0x75, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28,
+ 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x01, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc1,
+ 0x00, 0x00, 0x91, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0,
+ 0x01, 0x1c, 0x02, 0x48, 0x01, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x01, 0x48, 0x02, 0x49, 0x08, 0x61,
+ 0x70, 0x47, 0x81, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0x80, 0x2a,
+ 0x80, 0xb5, 0x02, 0xd1, 0x00, 0xf0, 0x3c, 0x00,
+ 0xd4, 0xc1, 0x00, 0x00, 0x07, 0xf8, 0x80, 0xbd,
+ 0x1e, 0x21, 0x21, 0x20, 0xf5, 0xf7, 0x62, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x10, 0x4d,
+ 0x04, 0x1c, 0xa8, 0x6b, 0x01, 0x30, 0xa8, 0x63,
+ 0x69, 0x6b, 0x09, 0x1a, 0x28, 0x1c, 0x00, 0x6b,
+ 0x0c, 0x29, 0x03, 0xd9, 0x00, 0x21, 0xff, 0xf7,
+ 0x91, 0xfa, 0x03, 0xe0, 0x08, 0x29, 0x01, 0xd1,
+ 0xff, 0xf7, 0x32, 0xfb, 0x20, 0x1c, 0x00, 0xf0,
+ 0x3c, 0x00, 0x10, 0xc2, 0x00, 0x00, 0x4d, 0xf9,
+ 0x60, 0x69, 0x40, 0x07, 0x01, 0xd5, 0x03, 0xf0,
+ 0x0c, 0xfc, 0x20, 0x1c, 0xe9, 0x6a, 0xf4, 0xf7,
+ 0xdb, 0xf8, 0xb0, 0xbd, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0,
+ 0x01, 0x1c, 0x02, 0x48, 0x41, 0x62, 0x70, 0x47,
+ 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x6c,
+ 0x00, 0x29, 0x3c, 0x00, 0x4c, 0xc2, 0x00, 0x00,
+ 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0xe1, 0x6b, 0x00, 0x29, 0x01, 0xd1, 0xe0, 0x63,
+ 0x04, 0xe0, 0x81, 0x42, 0x02, 0xd0, 0x00, 0x20,
+ 0xc0, 0x43, 0xf8, 0xe7, 0x06, 0xf0, 0x9c, 0xfd,
+ 0x20, 0x64, 0x10, 0xbd, 0x28, 0x7a, 0x01, 0x00,
+ 0x01, 0x48, 0x00, 0x6c, 0x70, 0x47, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x88, 0xc2,
+ 0x00, 0x00, 0x05, 0x49, 0x80, 0xb5, 0x00, 0x20,
+ 0x48, 0x63, 0x88, 0x63, 0xff, 0x21, 0x09, 0x31,
+ 0x15, 0x22, 0x10, 0x20, 0xf6, 0xf7, 0xfb, 0xf9,
+ 0x80, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48,
+ 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, 0xc1, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00,
+ 0xc4, 0xc2, 0x00, 0x00, 0x02, 0x48, 0xc1, 0x62,
+ 0x70, 0x47, 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49,
+ 0x00, 0x28, 0x5a, 0x68, 0x00, 0xd0, 0x01, 0x1c,
+ 0x10, 0x1c, 0x59, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0x28, 0x7a, 0x01, 0x00, 0xc9, 0x75, 0x00, 0x00,
+ 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c,
+ 0x02, 0x48, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00,
+ 0x3c, 0x00, 0x00, 0xc3, 0x00, 0x00, 0xcd, 0x75,
+ 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x0f, 0x4b,
+ 0x10, 0xb5, 0xd9, 0x68, 0x00, 0x29, 0x19, 0xd0,
+ 0x0e, 0x4c, 0x00, 0x21, 0xca, 0x00, 0x12, 0x19,
+ 0x40, 0x3a, 0xd2, 0x6b, 0x82, 0x42, 0x02, 0xda,
+ 0x01, 0x31, 0x03, 0x29, 0xf6, 0xd3, 0x48, 0x1c,
+ 0x1a, 0x78, 0x00, 0x06, 0x00, 0x0e, 0x90, 0x42,
+ 0x08, 0xd0, 0x18, 0x70, 0x08, 0x06, 0x00, 0x0e,
+ 0x04, 0x1c, 0x3c, 0x00, 0x3c, 0xc3, 0x00, 0x00,
+ 0xf6, 0xf7, 0xba, 0xfa, 0x20, 0x1c, 0x03, 0xf0,
+ 0x1b, 0xfd, 0x10, 0xbd, 0x18, 0x63, 0x01, 0x00,
+ 0x3c, 0x42, 0x01, 0x00, 0x10, 0xb5, 0x14, 0x4c,
+ 0xe1, 0x68, 0x00, 0x29, 0x22, 0xd0, 0x21, 0x78,
+ 0x12, 0x4b, 0xca, 0x00, 0xd2, 0x18, 0x40, 0x3a,
+ 0xd3, 0x6b, 0x83, 0x42, 0x02, 0xda, 0x48, 0x1c,
+ 0x20, 0x70, 0x0b, 0xe0, 0x92, 0x6b, 0x82, 0x42,
+ 0x14, 0xdd, 0xff, 0x31, 0x3c, 0x00, 0x78, 0xc3,
+ 0x00, 0x00, 0x08, 0x06, 0x00, 0x0e, 0x20, 0x70,
+ 0x03, 0xd1, 0x19, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x8e, 0xff, 0x20, 0x78, 0xff, 0x30, 0x00, 0x06,
+ 0x00, 0x0e, 0xf6, 0xf7, 0x90, 0xfa, 0x20, 0x78,
+ 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0,
+ 0xee, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63,
+ 0x01, 0x00, 0x3c, 0x42, 0x01, 0x00, 0x09, 0x48,
+ 0x00, 0x21, 0x01, 0x81, 0x41, 0x81, 0x3c, 0x00,
+ 0xb4, 0xc3, 0x00, 0x00, 0x81, 0x81, 0xc1, 0x81,
+ 0x07, 0x4a, 0x02, 0x80, 0x01, 0x23, 0xdb, 0x02,
+ 0x43, 0x80, 0x82, 0x80, 0xc2, 0x80, 0x41, 0x76,
+ 0x31, 0x21, 0x81, 0x76, 0x01, 0x21, 0x01, 0x76,
+ 0x70, 0x47, 0x00, 0x00, 0x30, 0x80, 0x07, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20,
+ 0xf6, 0xf7, 0xf8, 0xf8, 0x01, 0x20, 0xf6, 0xf7,
+ 0xdb, 0xfc, 0x01, 0x20, 0xf6, 0xf7, 0x5a, 0xfa,
+ 0x3c, 0x00, 0xf0, 0xc3, 0x00, 0x00, 0x01, 0x20,
+ 0x00, 0xf0, 0xf1, 0xfd, 0x01, 0x20, 0xf7, 0xf7,
+ 0xc6, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5,
+ 0x11, 0x4c, 0x00, 0x29, 0x07, 0xd1, 0x00, 0x28,
+ 0x02, 0xd1, 0x01, 0x20, 0xe0, 0x60, 0x06, 0xe0,
+ 0x00, 0x21, 0xe1, 0x60, 0x03, 0xe0, 0x01, 0x29,
+ 0x07, 0xd1, 0x00, 0x28, 0x01, 0xd0, 0x20, 0x70,
+ 0x03, 0xe0, 0x18, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x3c, 0xff, 0x3c, 0x00, 0x2c, 0xc4, 0x00, 0x00,
+ 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e,
+ 0xf6, 0xf7, 0x3e, 0xfa, 0x20, 0x78, 0xff, 0x30,
+ 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x9c, 0xfc,
+ 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, 0x01, 0x00,
+ 0x05, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x88, 0x42,
+ 0x05, 0xd0, 0xfe, 0xf7, 0xff, 0xfb, 0x00, 0xf0,
+ 0x87, 0xfa, 0xff, 0xf7, 0x2b, 0xfc, 0x80, 0xbd,
+ 0xa8, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x68, 0xc4,
+ 0x00, 0x00, 0x01, 0x49, 0x48, 0x70, 0x70, 0x47,
+ 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x01, 0x49,
+ 0xc8, 0x60, 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b,
+ 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x78,
+ 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47,
+ 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x04, 0x4a,
+ 0x00, 0x28, 0x02, 0xd0, 0x90, 0x69, 0x01, 0x30,
+ 0x90, 0x61, 0xd0, 0x69, 0x40, 0x18, 0x3c, 0x00,
+ 0xa4, 0xc4, 0x00, 0x00, 0xd0, 0x61, 0x70, 0x47,
+ 0x90, 0x5c, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0x00, 0x68, 0x05, 0x68, 0x28, 0x1c, 0xfe, 0xf7,
+ 0x27, 0xff, 0x07, 0x1c, 0x60, 0x69, 0x15, 0x4e,
+ 0xc0, 0x07, 0xc0, 0x0f, 0x21, 0xd0, 0x01, 0xaa,
+ 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x12, 0xff,
+ 0x38, 0x78, 0xc0, 0x07, 0x0c, 0xd4, 0x60, 0x69,
+ 0x80, 0x07, 0x08, 0xd5, 0x00, 0xab, 0x18, 0x7a,
+ 0x3c, 0x00, 0xe0, 0xc4, 0x00, 0x00, 0x00, 0x28,
+ 0x01, 0xd0, 0x02, 0x28, 0x02, 0xd1, 0x70, 0x6a,
+ 0x01, 0x30, 0x70, 0x62, 0xfe, 0xbd, 0x00, 0xab,
+ 0x18, 0x7a, 0x00, 0x28, 0x01, 0xd0, 0x02, 0x28,
+ 0xf8, 0xd1, 0x70, 0x6a, 0x01, 0x30, 0x70, 0x62,
+ 0xb0, 0x6a, 0x01, 0x30, 0xb0, 0x62, 0xf1, 0xe7,
+ 0xf0, 0x6a, 0x01, 0x30, 0xf0, 0x62, 0xed, 0xe7,
+ 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x02, 0x49,
+ 0x48, 0x69, 0x3c, 0x00, 0x1c, 0xc5, 0x00, 0x00,
+ 0x01, 0x30, 0x48, 0x61, 0x70, 0x47, 0x00, 0x00,
+ 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x01, 0x1c, 0x40, 0x31,
+ 0x10, 0xb5, 0x0a, 0x8b, 0x12, 0x07, 0x92, 0x0f,
+ 0x01, 0x2a, 0x33, 0xd0, 0x4a, 0x78, 0x1a, 0x49,
+ 0x04, 0x1c, 0x60, 0x34, 0x00, 0x2a, 0x0b, 0x6a,
+ 0x22, 0xd1, 0xe2, 0x79, 0x01, 0x2a, 0x02, 0xd9,
+ 0xcc, 0x68, 0x01, 0x34, 0x3c, 0x00, 0x58, 0xc5,
+ 0x00, 0x00, 0xcc, 0x60, 0x02, 0x2a, 0x02, 0xd9,
+ 0x0c, 0x69, 0x01, 0x34, 0x0c, 0x61, 0x0c, 0x68,
+ 0x01, 0x34, 0x0c, 0x60, 0x44, 0x6b, 0x00, 0x2c,
+ 0x03, 0xd0, 0x04, 0x69, 0x24, 0x7c, 0xe4, 0x07,
+ 0x02, 0xd5, 0x4c, 0x68, 0x01, 0x34, 0x4c, 0x60,
+ 0x80, 0x6b, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x6b,
+ 0x01, 0x30, 0x08, 0x63, 0x00, 0x2a, 0x0c, 0xd0,
+ 0x98, 0x18, 0x01, 0x38, 0x08, 0xe0, 0x3c, 0x00,
+ 0x94, 0xc5, 0x00, 0x00, 0x01, 0x2a, 0x01, 0xd0,
+ 0x02, 0x2a, 0x02, 0xd1, 0x88, 0x68, 0x01, 0x30,
+ 0x88, 0x60, 0xe0, 0x79, 0x18, 0x18, 0x08, 0x62,
+ 0x10, 0xbd, 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, 0x0a, 0x20,
+ 0x08, 0x81, 0x70, 0x47, 0xc4, 0x7a, 0x01, 0x00,
+ 0xf0, 0xb5, 0x32, 0x4f, 0x04, 0x1c, 0x78, 0x78,
+ 0x85, 0xb0, 0xc0, 0x07, 0xc0, 0x0f, 0x03, 0x90,
+ 0x3c, 0x00, 0xd0, 0xc5, 0x00, 0x00, 0xb8, 0x78,
+ 0x02, 0x90, 0x01, 0x20, 0xa0, 0x40, 0x04, 0x90,
+ 0x39, 0x1c, 0x88, 0x70, 0x2c, 0x48, 0x00, 0x88,
+ 0x06, 0xf0, 0x0b, 0xfc, 0x01, 0x90, 0xfe, 0xf7,
+ 0xae, 0xfc, 0x04, 0x30, 0x29, 0x4e, 0xa5, 0x00,
+ 0x71, 0x59, 0x09, 0x79, 0x88, 0x42, 0x06, 0xd0,
+ 0xfe, 0xf7, 0xa5, 0xfc, 0x71, 0x59, 0x04, 0x30,
+ 0x08, 0x71, 0x01, 0x20, 0x78, 0x70, 0x00, 0x20,
+ 0x78, 0x70, 0x3c, 0x00, 0x0c, 0xc6, 0x00, 0x00,
+ 0x21, 0x48, 0x01, 0x21, 0x20, 0x4e, 0x30, 0x38,
+ 0x01, 0x55, 0x71, 0x59, 0x03, 0x20, 0x08, 0x70,
+ 0x06, 0xf0, 0xc6, 0xfb, 0x06, 0x1c, 0xfe, 0xf7,
+ 0x91, 0xfc, 0x36, 0x18, 0x0e, 0x36, 0x09, 0xe0,
+ 0x30, 0x1c, 0x06, 0xf0, 0xf5, 0xfa, 0x00, 0x28,
+ 0x04, 0xd0, 0x23, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x33, 0xfe, 0x03, 0xe0, 0xf6, 0xf7, 0x34, 0xfb,
+ 0x00, 0x28, 0xf1, 0xd0, 0x3c, 0x00, 0x48, 0xc6,
+ 0x00, 0x00, 0x12, 0x48, 0x13, 0x49, 0x3c, 0x38,
+ 0x00, 0x78, 0x08, 0x72, 0x20, 0x1c, 0xf4, 0xf7,
+ 0xa2, 0xfa, 0x0e, 0x4e, 0x71, 0x59, 0x08, 0x71,
+ 0x03, 0x98, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x21,
+ 0x79, 0x70, 0x09, 0x48, 0x00, 0x88, 0x01, 0x99,
+ 0x06, 0xf0, 0xbd, 0xfb, 0x02, 0x98, 0xb8, 0x70,
+ 0x09, 0x49, 0x49, 0x79, 0x04, 0x98, 0x88, 0x42,
+ 0x03, 0xd0, 0x24, 0x21, 0x86, 0x20, 0x3c, 0x00,
+ 0x84, 0xc6, 0x00, 0x00, 0xf4, 0xf7, 0x0e, 0xfe,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x50, 0x07, 0x00,
+ 0xd0, 0x79, 0x01, 0x00, 0x10, 0x7b, 0x01, 0x00,
+ 0x80, 0x80, 0x07, 0x00, 0x50, 0x80, 0x07, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x05, 0x28,
+ 0x01, 0xd3, 0xf4, 0xf7, 0x29, 0xfe, 0x05, 0x2d,
+ 0x01, 0xd3, 0xf4, 0xf7, 0x25, 0xfe, 0x0b, 0x4a,
+ 0xa8, 0x00, 0x11, 0x58, 0xa0, 0x00, 0x10, 0x58,
+ 0x3c, 0x00, 0xc0, 0xc6, 0x00, 0x00, 0x0e, 0xc9,
+ 0x0e, 0xc0, 0x06, 0x21, 0x06, 0x22, 0x06, 0x48,
+ 0x69, 0x43, 0x2a, 0x38, 0x09, 0x18, 0x62, 0x43,
+ 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, 0x0f, 0xff,
+ 0x02, 0x48, 0x30, 0x38, 0x41, 0x5d, 0x01, 0x55,
+ 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0e, 0x48, 0x0d, 0x1c, 0x80, 0x78,
+ 0x01, 0x21, 0xa1, 0x40, 0x08, 0x40, 0x03, 0xd0,
+ 0x01, 0x21, 0x3c, 0x00, 0xfc, 0xc6, 0x00, 0x00,
+ 0x86, 0x20, 0xf4, 0xf7, 0xd1, 0xfd, 0x06, 0x21,
+ 0x06, 0x22, 0x09, 0x48, 0x69, 0x43, 0x09, 0x18,
+ 0x62, 0x43, 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7,
+ 0xf1, 0xfe, 0x20, 0x1c, 0xf4, 0xf7, 0x40, 0xfa,
+ 0x03, 0x4a, 0xa1, 0x00, 0x2a, 0x32, 0x51, 0x58,
+ 0x08, 0x71, 0xb0, 0xbd, 0x00, 0x50, 0x07, 0x00,
+ 0xe6, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0x48, 0x60, 0x3c, 0x00, 0x38, 0xc7,
+ 0x00, 0x00, 0x07, 0xf0, 0x32, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7,
+ 0xd8, 0xfd, 0x07, 0x49, 0x08, 0x7a, 0x07, 0x4a,
+ 0x10, 0x70, 0x01, 0x20, 0x08, 0x72, 0xfe, 0xf7,
+ 0xf4, 0xfb, 0x04, 0x4a, 0x04, 0x30, 0xa1, 0x00,
+ 0x3c, 0x32, 0x51, 0x58, 0x08, 0x71, 0x10, 0xbd,
+ 0x00, 0x00, 0x80, 0x80, 0x07, 0x00, 0x3c, 0x00,
+ 0x74, 0xc7, 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00,
+ 0x03, 0x49, 0x80, 0xb5, 0x01, 0x20, 0x48, 0x60,
+ 0x07, 0xf0, 0x0e, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0xb4, 0xfd,
+ 0x20, 0x1c, 0xf5, 0xf7, 0x8f, 0xfe, 0x00, 0x21,
+ 0x20, 0x1c, 0xfb, 0xf7, 0x31, 0xfd, 0x01, 0x21,
+ 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x09, 0x04,
+ 0x3c, 0x00, 0xb0, 0xc7, 0x00, 0x00, 0x09, 0x0c,
+ 0x20, 0x1c, 0x04, 0xf0, 0x22, 0xfa, 0x10, 0xbd,
+ 0x00, 0x00, 0x06, 0x49, 0x01, 0x20, 0x05, 0x4b,
+ 0x88, 0x60, 0x00, 0x20, 0x3c, 0x33, 0x00, 0x21,
+ 0x82, 0x00, 0x9a, 0x58, 0x11, 0x70, 0x01, 0x30,
+ 0x05, 0x28, 0xf9, 0xdb, 0x70, 0x47, 0xd4, 0x7a,
+ 0x01, 0x00, 0x0f, 0x49, 0x38, 0xb5, 0x00, 0x20,
+ 0x88, 0x60, 0x0e, 0x48, 0x01, 0x1c, 0x20, 0x31,
+ 0x8a, 0x79, 0x3c, 0x00, 0xec, 0xc7, 0x00, 0x00,
+ 0x00, 0xab, 0x1a, 0x70, 0xc9, 0x79, 0x0a, 0x4c,
+ 0x09, 0x4d, 0x59, 0x70, 0x0c, 0x34, 0x3c, 0x35,
+ 0x00, 0x21, 0x03, 0x22, 0x63, 0x5c, 0x00, 0x2b,
+ 0x02, 0xd0, 0x8b, 0x00, 0xeb, 0x58, 0x1a, 0x70,
+ 0x01, 0x31, 0x05, 0x29, 0xf6, 0xdb, 0x00, 0xab,
+ 0x19, 0x88, 0xc1, 0x84, 0x38, 0xbd, 0x00, 0x00,
+ 0xd4, 0x7a, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0xff, 0xb5, 0x14, 0x4f, 0x3c, 0x00, 0x28, 0xc8,
+ 0x00, 0x00, 0x04, 0x1c, 0xbe, 0x79, 0x0d, 0x1c,
+ 0x81, 0xb0, 0x0f, 0x20, 0x00, 0xf0, 0xb9, 0xf8,
+ 0x2a, 0x1c, 0x10, 0x4d, 0x00, 0x90, 0x21, 0x1c,
+ 0x28, 0x1c, 0xf4, 0xf7, 0xde, 0xfc, 0x21, 0x1c,
+ 0xa8, 0x1d, 0x03, 0x9a, 0xf4, 0xf7, 0xd9, 0xfc,
+ 0x21, 0x1c, 0x28, 0x1c, 0x0c, 0x30, 0x04, 0x9a,
+ 0xf4, 0xf7, 0xd3, 0xfc, 0x21, 0x1c, 0x28, 0x1c,
+ 0x12, 0x30, 0x0a, 0x9a, 0xf4, 0xf7, 0x3c, 0x00,
+ 0x64, 0xc8, 0x00, 0x00, 0xcd, 0xfc, 0x07, 0xf0,
+ 0x9b, 0xf8, 0x00, 0x98, 0x00, 0xf0, 0x76, 0xf8,
+ 0xbe, 0x71, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0x20, 0x10, 0x07, 0x00, 0xe6, 0x7a, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x20, 0xf6, 0xf7, 0x26, 0xf8,
+ 0x07, 0x49, 0x88, 0x78, 0x00, 0x09, 0x00, 0x01,
+ 0x88, 0x70, 0x00, 0x24, 0x20, 0x1c, 0xf5, 0xf7,
+ 0x11, 0xfe, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e,
+ 0x3c, 0x00, 0xa0, 0xc8, 0x00, 0x00, 0x04, 0x2c,
+ 0xf7, 0xd3, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x50,
+ 0x07, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0xe3, 0xfb,
+ 0x03, 0x48, 0x81, 0x78, 0x0f, 0x22, 0x11, 0x43,
+ 0x81, 0x70, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x50,
+ 0x07, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0x17, 0xfd,
+ 0xa6, 0x00, 0x00, 0x2d, 0x11, 0x4f, 0x07, 0xd1,
+ 0xb8, 0x59, 0x3c, 0x00, 0xdc, 0xc8, 0x00, 0x00,
+ 0x81, 0x68, 0x00, 0x29, 0x0e, 0xd1, 0x40, 0x78,
+ 0x00, 0x28, 0x0b, 0xd0, 0x02, 0xe0, 0xff, 0x35,
+ 0x2d, 0x06, 0x2d, 0x0e, 0x29, 0x1c, 0x20, 0x1c,
+ 0xfb, 0xf7, 0x88, 0xfc, 0x01, 0x1c, 0x20, 0x1c,
+ 0x04, 0xf0, 0x7e, 0xf9, 0x06, 0x49, 0x01, 0x20,
+ 0x30, 0x39, 0x08, 0x55, 0x04, 0x48, 0x3c, 0x38,
+ 0x80, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xb9, 0x59,
+ 0x03, 0x20, 0x08, 0x70, 0x3c, 0x00, 0x18, 0xc9,
+ 0x00, 0x00, 0xf8, 0xbd, 0x00, 0x00, 0x10, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, 0xcd, 0xf9,
+ 0x80, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x05, 0x28,
+ 0x01, 0xd3, 0xf4, 0xf7, 0xe6, 0xfc, 0x20, 0x1c,
+ 0xf5, 0xf7, 0xc1, 0xfd, 0x00, 0x20, 0x05, 0x4a,
+ 0xa1, 0x00, 0x51, 0x58, 0x88, 0x60, 0x04, 0x49,
+ 0x88, 0x78, 0x01, 0x22, 0xa2, 0x40, 0x10, 0x43,
+ 0x88, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x54, 0xc9, 0x00, 0x00, 0x10, 0x7b, 0x01, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0x02, 0x4a, 0x91, 0x78,
+ 0x08, 0x43, 0x90, 0x70, 0x70, 0x47, 0x00, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0xf8, 0xb5, 0x0c, 0x4f,
+ 0xbe, 0x79, 0x0f, 0x20, 0x00, 0xf0, 0x18, 0xf8,
+ 0x05, 0x1c, 0x00, 0x24, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x0d, 0xf9, 0x08, 0x4a, 0xa1, 0x00, 0x51, 0x58,
+ 0x08, 0x71, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e,
+ 0x3c, 0x00, 0x90, 0xc9, 0x00, 0x00, 0x04, 0x2c,
+ 0xf3, 0xd3, 0x28, 0x1c, 0xff, 0xf7, 0xe1, 0xff,
+ 0xbe, 0x71, 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5,
+ 0x08, 0x49, 0x8d, 0x78, 0x8a, 0x78, 0x05, 0x40,
+ 0x82, 0x43, 0x8a, 0x70, 0x06, 0xf0, 0xf9, 0xf9,
+ 0x04, 0x1c, 0x0a, 0x34, 0x20, 0x1c, 0x06, 0xf0,
+ 0x34, 0xf9, 0x00, 0x28, 0xfa, 0xd0, 0x28, 0x1c,
+ 0xb0, 0xbd, 0x3c, 0x00, 0xcc, 0xc9, 0x00, 0x00,
+ 0x00, 0x50, 0x07, 0x00, 0x01, 0x49, 0x0a, 0x20,
+ 0x08, 0x81, 0x70, 0x47, 0x38, 0x7b, 0x01, 0x00,
+ 0xf8, 0xb5, 0x10, 0x48, 0x04, 0x26, 0x04, 0x1c,
+ 0xe0, 0x34, 0x05, 0x1c, 0x38, 0x3d, 0x00, 0x27,
+ 0x20, 0x1c, 0x1c, 0x30, 0xe4, 0x60, 0xa0, 0x61,
+ 0x27, 0x61, 0x0b, 0x48, 0xa6, 0x82, 0xe0, 0x61,
+ 0x27, 0x62, 0xa7, 0x62, 0x06, 0x20, 0xa0, 0x84,
+ 0x20, 0x1c, 0xfe, 0xf7, 0x3c, 0x00, 0x08, 0xca,
+ 0x00, 0x00, 0x87, 0xfc, 0x20, 0x1c, 0x0c, 0x30,
+ 0xf6, 0xf7, 0xb7, 0xf9, 0x05, 0x49, 0x38, 0x3c,
+ 0xac, 0x42, 0x08, 0x80, 0xe7, 0xd1, 0xf8, 0xbd,
+ 0x00, 0x00, 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61,
+ 0x01, 0x00, 0x48, 0x7b, 0x01, 0x00, 0xf7, 0xb5,
+ 0x05, 0x1c, 0x0c, 0x23, 0x0f, 0x1c, 0x12, 0x49,
+ 0x58, 0x43, 0x44, 0x18, 0x20, 0x88, 0x06, 0xf0,
+ 0xea, 0xf9, 0xa0, 0x78, 0x01, 0x28, 0x3c, 0x00,
+ 0x44, 0xca, 0x00, 0x00, 0x1a, 0xd1, 0x66, 0x68,
+ 0x02, 0x2f, 0x05, 0xd1, 0x5c, 0x20, 0x80, 0x5b,
+ 0x02, 0x99, 0x00, 0x09, 0x88, 0x42, 0x11, 0xd1,
+ 0x28, 0x1c, 0xfe, 0xf7, 0xfb, 0xff, 0x30, 0x1c,
+ 0xf9, 0xf7, 0xfa, 0xfd, 0x04, 0x20, 0xa0, 0x70,
+ 0x39, 0x1c, 0x28, 0x1c, 0xfb, 0xf7, 0xf4, 0xf8,
+ 0x03, 0x4a, 0xe8, 0x00, 0x3c, 0x32, 0x11, 0x58,
+ 0x01, 0x31, 0x11, 0x50, 0xfe, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x80, 0xca, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x01, 0x20, 0x06, 0x4a, 0x00, 0x21,
+ 0x0c, 0x23, 0x4b, 0x43, 0x9b, 0x18, 0x9b, 0x78,
+ 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x20, 0x01, 0x31,
+ 0x04, 0x29, 0xf5, 0xdb, 0x70, 0x47, 0x60, 0x7b,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xff, 0xf7,
+ 0xea, 0xfc, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x21,
+ 0x0c, 0x20, 0xf4, 0xf7, 0xf6, 0xfb, 0x26, 0x1c,
+ 0x60, 0x36, 0x3c, 0x00, 0xbc, 0xca, 0x00, 0x00,
+ 0x00, 0x21, 0xf1, 0x71, 0xe1, 0x64, 0x60, 0x6b,
+ 0x25, 0x1c, 0x40, 0x35, 0x00, 0x28, 0x31, 0xd0,
+ 0xff, 0xf7, 0x04, 0xf9, 0x01, 0x22, 0x12, 0x03,
+ 0x00, 0x28, 0x20, 0x69, 0x01, 0x88, 0x01, 0xd0,
+ 0x91, 0x43, 0x00, 0xe0, 0x11, 0x43, 0x01, 0x80,
+ 0x20, 0x69, 0x01, 0x22, 0x00, 0x88, 0xd2, 0x02,
+ 0x28, 0x83, 0x20, 0x1c, 0x58, 0x30, 0x01, 0x88,
+ 0x91, 0x43, 0x01, 0x80, 0x3c, 0x00, 0xf8, 0xca,
+ 0x00, 0x00, 0xa3, 0x6b, 0x52, 0x08, 0x00, 0x2b,
+ 0x10, 0xd0, 0x91, 0x43, 0x01, 0x80, 0x28, 0x8b,
+ 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x15, 0xd0,
+ 0x2e, 0x20, 0x01, 0x5d, 0x20, 0x69, 0x04, 0x30,
+ 0xf8, 0xf7, 0x41, 0xfd, 0x61, 0x6a, 0xfe, 0xf7,
+ 0xa8, 0xf9, 0x04, 0xe0, 0x11, 0x43, 0x01, 0x80,
+ 0x20, 0x1c, 0xfb, 0xf7, 0xcc, 0xfb, 0x68, 0x83,
+ 0x04, 0xe0, 0x20, 0x69, 0x41, 0x80, 0x3c, 0x00,
+ 0x34, 0xcb, 0x00, 0x00, 0xa8, 0x8b, 0x21, 0x69,
+ 0xc8, 0x82, 0xe0, 0x68, 0xf6, 0xf7, 0x20, 0xf9,
+ 0x30, 0x80, 0x60, 0x6d, 0x00, 0x28, 0x04, 0xd0,
+ 0x00, 0x22, 0x03, 0x21, 0x70, 0x7a, 0xfe, 0xf7,
+ 0x0d, 0xff, 0x20, 0x1c, 0x00, 0xf0, 0xb6, 0xf9,
+ 0x70, 0x7a, 0x06, 0xf0, 0x45, 0xf8, 0x70, 0xbd,
+ 0xb0, 0xb5, 0x00, 0x24, 0x06, 0xf0, 0x22, 0xf9,
+ 0x09, 0x4a, 0x00, 0x21, 0x0c, 0x23, 0x4b, 0x43,
+ 0x3c, 0x00, 0x70, 0xcb, 0x00, 0x00, 0x9d, 0x18,
+ 0x6b, 0x68, 0x5b, 0x6c, 0xad, 0x78, 0xc3, 0x1a,
+ 0x01, 0x2d, 0x02, 0xd1, 0xa3, 0x42, 0x00, 0xdd,
+ 0x1c, 0x1c, 0x01, 0x31, 0x05, 0x29, 0xf0, 0xd3,
+ 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x06, 0xf0,
+ 0xa8, 0xfe, 0x0c, 0x20, 0x08, 0x49, 0x60, 0x43,
+ 0x45, 0x18, 0x28, 0x88, 0x06, 0xf0, 0x35, 0xf9,
+ 0x68, 0x68, 0x3c, 0x00, 0xac, 0xcb, 0x00, 0x00,
+ 0x00, 0x28, 0x06, 0xd0, 0x20, 0x30, 0x00, 0x7b,
+ 0x01, 0x28, 0x02, 0xd1, 0x20, 0x1c, 0xff, 0xf7,
+ 0xa3, 0xfa, 0xb0, 0xbd, 0x60, 0x7b, 0x01, 0x00,
+ 0xff, 0xb5, 0x85, 0xb0, 0x0f, 0xae, 0x60, 0xce,
+ 0x38, 0x20, 0x1e, 0x49, 0x70, 0x43, 0x17, 0x1c,
+ 0x44, 0x18, 0xff, 0xf7, 0x7f, 0xf8, 0x01, 0x22,
+ 0x12, 0x03, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x88,
+ 0x90, 0x43, 0x20, 0x80, 0x3c, 0x00, 0xe8, 0xcb,
+ 0x00, 0x00, 0x02, 0xe0, 0x21, 0x88, 0x11, 0x43,
+ 0x21, 0x80, 0x11, 0x98, 0x39, 0x1c, 0xe0, 0x62,
+ 0x05, 0x98, 0xf8, 0xf7, 0xd0, 0xfc, 0x01, 0x1c,
+ 0x2b, 0x1c, 0x38, 0x1c, 0x06, 0x9a, 0xfe, 0xf7,
+ 0x20, 0xf9, 0x60, 0x80, 0x06, 0x22, 0x20, 0x1d,
+ 0x0f, 0x49, 0xf3, 0xf7, 0x72, 0xfc, 0x23, 0x1c,
+ 0x08, 0x98, 0x30, 0x33, 0x18, 0x70, 0x0e, 0x98,
+ 0x0c, 0x49, 0x58, 0x70, 0x65, 0x63, 0x3c, 0x00,
+ 0x24, 0xcc, 0x00, 0x00, 0x00, 0x20, 0x02, 0x90,
+ 0x01, 0x22, 0x04, 0x92, 0x09, 0x48, 0x03, 0x91,
+ 0x5a, 0x78, 0x01, 0x88, 0x01, 0x92, 0x00, 0x91,
+ 0x19, 0x78, 0x24, 0x3b, 0x30, 0x1c, 0x62, 0x6b,
+ 0xfe, 0xf7, 0xa8, 0xfe, 0x09, 0xb0, 0xf0, 0xbd,
+ 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00,
+ 0xff, 0xb5, 0x87, 0xb0, 0x10, 0x98, 0x12, 0xaf,
+ 0x3c, 0x00, 0x60, 0xcc, 0x00, 0x00, 0x8c, 0x46,
+ 0xa2, 0xcf, 0x4c, 0x23, 0x30, 0x4c, 0x6b, 0x43,
+ 0x1c, 0x19, 0x16, 0x1c, 0x15, 0x9a, 0x27, 0x85,
+ 0x27, 0x1c, 0x30, 0x37, 0x06, 0x97, 0x05, 0x97,
+ 0x00, 0x23, 0x3b, 0x73, 0x05, 0x9f, 0x78, 0x73,
+ 0x11, 0x98, 0x27, 0x1c, 0x60, 0x64, 0x61, 0x60,
+ 0x22, 0x60, 0x40, 0x37, 0x3e, 0x70, 0x61, 0x46,
+ 0x61, 0x87, 0x07, 0x98, 0x31, 0x1c, 0xf8, 0xf7,
+ 0x80, 0xfc, 0x3c, 0x00, 0x9c, 0xcc, 0x00, 0x00,
+ 0x05, 0x99, 0xc8, 0x73, 0x0a, 0x98, 0x78, 0x70,
+ 0x30, 0x1c, 0xfe, 0xf7, 0x73, 0xf8, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20,
+ 0x41, 0x00, 0x02, 0x20, 0x01, 0x40, 0x11, 0x9a,
+ 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20,
+ 0x08, 0x43, 0x38, 0x72, 0x20, 0x1c, 0x2e, 0x30,
+ 0x07, 0x99, 0xfd, 0xf7, 0xcf, 0xff, 0x28, 0x1c,
+ 0x04, 0xf0, 0xae, 0xf8, 0x3c, 0x00, 0xd8, 0xcc,
+ 0x00, 0x00, 0xfe, 0xf7, 0xfe, 0xff, 0x4c, 0x22,
+ 0x12, 0x4b, 0x6a, 0x43, 0xd2, 0x18, 0x01, 0x21,
+ 0x09, 0x03, 0x2a, 0x32, 0x00, 0x28, 0x04, 0xd0,
+ 0x10, 0x1c, 0x12, 0x88, 0x8a, 0x43, 0x02, 0x80,
+ 0x02, 0xe0, 0x10, 0x88, 0x08, 0x43, 0x10, 0x80,
+ 0x0b, 0x49, 0x00, 0x20, 0x03, 0x91, 0x06, 0x99,
+ 0x02, 0x90, 0x00, 0x22, 0x04, 0x92, 0x08, 0x48,
+ 0x0a, 0x7b, 0x41, 0x88, 0x23, 0x1c, 0x3c, 0x00,
+ 0x14, 0xcd, 0x00, 0x00, 0x01, 0x92, 0x00, 0x91,
+ 0x79, 0x78, 0x08, 0x33, 0x28, 0x1c, 0x62, 0x68,
+ 0xfe, 0xf7, 0x38, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd,
+ 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00,
+ 0x3c, 0x7c, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c,
+ 0x01, 0x28, 0x27, 0xd0, 0x80, 0x28, 0x30, 0xd1,
+ 0xe0, 0x6c, 0x00, 0x28, 0x08, 0xd0, 0x69, 0x20,
+ 0x00, 0x5d, 0x18, 0x49, 0xc0, 0x00, 0x40, 0x18,
+ 0x3c, 0x00, 0x50, 0xcd, 0x00, 0x00, 0x04, 0x30,
+ 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x20, 0x1c,
+ 0xff, 0xf7, 0xe9, 0xfb, 0x13, 0x4d, 0x50, 0x3d,
+ 0xe8, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x2e, 0x20,
+ 0x00, 0x5d, 0xfe, 0xf7, 0x10, 0xf8, 0x02, 0xf0,
+ 0x42, 0xfe, 0x20, 0x1c, 0x61, 0x68, 0xf3, 0xf7,
+ 0x2f, 0xfb, 0x40, 0x34, 0x60, 0x78, 0x00, 0x28,
+ 0x02, 0xd1, 0x06, 0xf0, 0x12, 0xf8, 0xa8, 0x60,
+ 0xb0, 0xbd, 0x3c, 0x00, 0x8c, 0xcd, 0x00, 0x00,
+ 0x20, 0x06, 0x00, 0x0e, 0x81, 0x28, 0xfa, 0xd1,
+ 0x22, 0x0c, 0x20, 0x04, 0x00, 0x0e, 0x02, 0x21,
+ 0xfe, 0xf7, 0xe6, 0xfd, 0xb0, 0xbd, 0x0a, 0x21,
+ 0x0c, 0x20, 0xf4, 0xf7, 0x7d, 0xfa, 0xb0, 0xbd,
+ 0x9c, 0x7b, 0x01, 0x00, 0xf8, 0xb5, 0x18, 0x4e,
+ 0x18, 0x4f, 0x05, 0x1c, 0x34, 0x79, 0xb8, 0x79,
+ 0x00, 0x90, 0x20, 0x1c, 0xf5, 0xf7, 0x7c, 0xff,
+ 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0xc8, 0xcd,
+ 0x00, 0x00, 0x12, 0x48, 0x38, 0x38, 0x40, 0x68,
+ 0x85, 0x42, 0x01, 0xd1, 0x00, 0x2d, 0x03, 0xd1,
+ 0x10, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x63, 0xfa,
+ 0x0d, 0x49, 0x00, 0x20, 0x38, 0x39, 0x48, 0x60,
+ 0x04, 0x21, 0x20, 0x1c, 0xff, 0xf7, 0x59, 0xfc,
+ 0x04, 0x21, 0x20, 0x1c, 0xf5, 0xf7, 0xeb, 0xfe,
+ 0x0c, 0x21, 0x06, 0x4a, 0x61, 0x43, 0x30, 0x3a,
+ 0x89, 0x18, 0x0c, 0x71, 0x04, 0x20, 0x3c, 0x00,
+ 0x04, 0xce, 0x00, 0x00, 0x30, 0x71, 0x00, 0x98,
+ 0xb8, 0x71, 0x0f, 0x20, 0xff, 0xf7, 0xa6, 0xfd,
+ 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x7a, 0x01, 0x00,
+ 0x20, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x0f, 0x20, 0xff, 0xf7, 0xc1, 0xfd, 0xf5, 0xf7,
+ 0x3b, 0xff, 0x01, 0x25, 0x00, 0x28, 0x00, 0xd0,
+ 0x00, 0x25, 0x16, 0x4e, 0xb0, 0x79, 0x16, 0x4f,
+ 0x00, 0x90, 0x38, 0x79, 0x04, 0x28, 0x01, 0xd1,
+ 0x3c, 0x00, 0x40, 0xce, 0x00, 0x00, 0x00, 0x2c,
+ 0x03, 0xd1, 0x11, 0x21, 0x86, 0x20, 0xf4, 0xf7,
+ 0x2c, 0xfa, 0x10, 0x48, 0x29, 0x06, 0x38, 0x38,
+ 0x44, 0x60, 0x09, 0x0e, 0x0c, 0x1c, 0x04, 0x20,
+ 0xff, 0xf7, 0x21, 0xfc, 0x03, 0x21, 0x20, 0x1c,
+ 0xff, 0xf7, 0x41, 0xfc, 0x21, 0x1c, 0x04, 0x20,
+ 0xf5, 0xf7, 0xaf, 0xfe, 0x0c, 0x21, 0x07, 0x4a,
+ 0x69, 0x43, 0x04, 0x20, 0x30, 0x3a, 0x89, 0x18,
+ 0x08, 0x71, 0x3c, 0x00, 0x7c, 0xce, 0x00, 0x00,
+ 0x3c, 0x71, 0x00, 0x98, 0xb0, 0x71, 0x20, 0x1c,
+ 0xff, 0xf7, 0x50, 0xfd, 0x04, 0x20, 0xf8, 0xbd,
+ 0x20, 0x10, 0x07, 0x00, 0xa4, 0x7a, 0x01, 0x00,
+ 0x0c, 0x23, 0x02, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x80, 0x68, 0x70, 0x47, 0x74, 0x7a, 0x01, 0x00,
+ 0x60, 0x30, 0xc1, 0x79, 0x80, 0x79, 0x81, 0x42,
+ 0x01, 0xd9, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xce,
+ 0x00, 0x00, 0x01, 0x48, 0x80, 0x68, 0x70, 0x47,
+ 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, 0x38, 0xb5,
+ 0x69, 0x21, 0x09, 0x5c, 0x18, 0x23, 0x10, 0x4a,
+ 0x59, 0x43, 0x89, 0x18, 0x8a, 0x68, 0x01, 0x32,
+ 0x8a, 0x60, 0x4b, 0x69, 0xd2, 0x1a, 0xcb, 0x68,
+ 0x93, 0x42, 0x00, 0xd2, 0xca, 0x60, 0x00, 0x22,
+ 0x0b, 0x4c, 0x02, 0x60, 0x22, 0x1c, 0x20, 0x32,
+ 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0x3c, 0x00,
+ 0xf4, 0xce, 0x00, 0x00, 0xd2, 0x79, 0x5a, 0x70,
+ 0x0a, 0x68, 0x00, 0x2a, 0x01, 0xd1, 0x48, 0x60,
+ 0x00, 0xe0, 0x10, 0x60, 0x00, 0xab, 0x08, 0x60,
+ 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00,
+ 0xc4, 0x7b, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x18, 0x23, 0x0a, 0x49, 0x58, 0x43, 0x41, 0x18,
+ 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x48, 0x68,
+ 0x00, 0x28, 0x09, 0xd0, 0x48, 0x69, 0x01, 0x30,
+ 0x3c, 0x00, 0x30, 0xcf, 0x00, 0x00, 0x48, 0x61,
+ 0x48, 0x68, 0x02, 0x68, 0x4a, 0x60, 0x00, 0x2a,
+ 0x00, 0xd1, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0xc4, 0x7b, 0x01, 0x00, 0xf8, 0xb5,
+ 0x12, 0x4e, 0x10, 0x4d, 0x0f, 0x4c, 0x0a, 0x27,
+ 0x21, 0x1c, 0x00, 0x20, 0xe0, 0x60, 0x2a, 0x31,
+ 0x22, 0x1c, 0x18, 0x32, 0xa1, 0x60, 0x62, 0x61,
+ 0x27, 0x82, 0x0c, 0x4a, 0xe0, 0x61, 0xa2, 0x61,
+ 0x60, 0x62, 0x3c, 0x00, 0x6c, 0xcf, 0x00, 0x00,
+ 0x06, 0x20, 0x20, 0x84, 0x08, 0x1c, 0xfe, 0xf7,
+ 0xd7, 0xf9, 0x20, 0x1c, 0x08, 0x30, 0xf5, 0xf7,
+ 0x01, 0xff, 0x4c, 0x3c, 0xac, 0x42, 0x70, 0x80,
+ 0xe5, 0xd1, 0xff, 0x20, 0x30, 0x70, 0xf8, 0xbd,
+ 0x88, 0xe4, 0x01, 0x00, 0x0c, 0xe3, 0x01, 0x00,
+ 0x3c, 0x7c, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0xf8, 0xb5, 0x04, 0x1c, 0x0b, 0x48, 0x0e, 0x1c,
+ 0x17, 0x1c, 0x44, 0x70, 0x3c, 0x00, 0xa8, 0xcf,
+ 0x00, 0x00, 0x05, 0xf0, 0x00, 0xff, 0x05, 0x1c,
+ 0x39, 0x1c, 0x30, 0x1c, 0xfd, 0xf7, 0xab, 0xff,
+ 0x0c, 0x21, 0x05, 0x4a, 0x28, 0x18, 0x0a, 0x30,
+ 0x61, 0x43, 0x08, 0x32, 0x50, 0x50, 0x03, 0x48,
+ 0x89, 0x18, 0x00, 0x68, 0x88, 0x60, 0xf8, 0xbd,
+ 0x00, 0x00, 0x6c, 0x7a, 0x01, 0x00, 0x78, 0x6e,
+ 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4e, 0x05, 0x1c,
+ 0x70, 0x78, 0xff, 0x28, 0x0f, 0xd0, 0x3c, 0x00,
+ 0xe4, 0xcf, 0x00, 0x00, 0x0c, 0x23, 0x08, 0x4c,
+ 0x58, 0x43, 0x08, 0x34, 0x20, 0x58, 0x05, 0xf0,
+ 0x1d, 0xfe, 0x00, 0x28, 0x06, 0xd1, 0x70, 0x78,
+ 0x0c, 0x23, 0x58, 0x43, 0x00, 0x19, 0x81, 0x68,
+ 0x29, 0x43, 0x81, 0x60, 0x70, 0xbd, 0x00, 0x00,
+ 0x6c, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x30, 0x21,
+ 0x01, 0x48, 0xf3, 0xf7, 0x43, 0xfa, 0x80, 0xbd,
+ 0xec, 0xe5, 0x01, 0x00, 0x10, 0xb5, 0x05, 0xf0,
+ 0x3c, 0x00, 0x20, 0xd0, 0x00, 0x00, 0xc5, 0xfe,
+ 0x0a, 0x49, 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c,
+ 0x05, 0xf0, 0xf7, 0xfd, 0x00, 0x28, 0x07, 0xd0,
+ 0xf5, 0xf7, 0x51, 0xfe, 0x00, 0x28, 0x03, 0xd0,
+ 0x13, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x31, 0xf9,
+ 0xf5, 0xf7, 0x49, 0xfe, 0x00, 0x28, 0xee, 0xd1,
+ 0x10, 0xbd, 0xb0, 0x36, 0x00, 0x00, 0xff, 0xb5,
+ 0x8b, 0xb0, 0x19, 0x9b, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x1a, 0x20, 0x3c, 0x00, 0x5c, 0xd0, 0x00, 0x00,
+ 0x00, 0x2b, 0x16, 0x99, 0x00, 0xd1, 0x18, 0x20,
+ 0x01, 0x90, 0x14, 0x98, 0x00, 0x28, 0x27, 0xd0,
+ 0xff, 0x20, 0x19, 0x9b, 0x01, 0x30, 0x00, 0x2b,
+ 0x01, 0xd1, 0x18, 0x23, 0x00, 0xe0, 0x1a, 0x23,
+ 0x04, 0x33, 0x82, 0x42, 0x04, 0xd3, 0xd0, 0x1a,
+ 0x40, 0x08, 0x40, 0x00, 0x00, 0x04, 0x00, 0x0c,
+ 0x0d, 0x90, 0x6a, 0x48, 0x00, 0x88, 0xc2, 0x1a,
+ 0x12, 0x04, 0x12, 0x0c, 0x3c, 0x00, 0x98, 0xd0,
+ 0x00, 0x00, 0x04, 0x92, 0x00, 0x29, 0x08, 0xd0,
+ 0x89, 0x79, 0x66, 0x4a, 0x49, 0x00, 0x51, 0x5a,
+ 0x04, 0x9a, 0x51, 0x1a, 0x0a, 0x04, 0x12, 0x0c,
+ 0x04, 0x92, 0x04, 0x9a, 0x82, 0x42, 0x05, 0xd9,
+ 0x00, 0x20, 0x04, 0x90, 0x02, 0xe0, 0x60, 0x48,
+ 0x04, 0x90, 0x0d, 0x90, 0x01, 0x98, 0x01, 0x04,
+ 0x09, 0x0c, 0x0a, 0x91, 0x00, 0x20, 0xf4, 0xf7,
+ 0x84, 0xfa, 0x00, 0x90, 0x00, 0x68, 0x3c, 0x00,
+ 0xd4, 0xd0, 0x00, 0x00, 0x00, 0x26, 0x06, 0x90,
+ 0x20, 0x60, 0x00, 0x20, 0x05, 0x90, 0x0e, 0x98,
+ 0x00, 0x24, 0x00, 0x05, 0x00, 0x0c, 0x09, 0x90,
+ 0x1a, 0x98, 0x0d, 0x9f, 0x40, 0x07, 0x40, 0x0f,
+ 0x08, 0x90, 0x07, 0x94, 0x03, 0x95, 0x00, 0x2d,
+ 0x0d, 0xd0, 0x28, 0x89, 0xb8, 0x42, 0x04, 0xd8,
+ 0x36, 0x18, 0x3f, 0x1a, 0x07, 0xd0, 0xed, 0x68,
+ 0xf5, 0xe7, 0x39, 0x04, 0x09, 0x0c, 0x28, 0x1c,
+ 0x3c, 0x00, 0x10, 0xd1, 0x00, 0x00, 0xf4, 0xf7,
+ 0x38, 0xfb, 0xef, 0xe7, 0x00, 0x2e, 0x02, 0xd1,
+ 0x07, 0x99, 0x00, 0x29, 0x71, 0xd1, 0x27, 0x1c,
+ 0x6c, 0x20, 0xf4, 0xf7, 0x88, 0xfb, 0x07, 0x99,
+ 0x04, 0x1c, 0x00, 0x29, 0x20, 0xd1, 0x07, 0x94,
+ 0x00, 0x20, 0xa0, 0x61, 0x18, 0x98, 0x27, 0x1c,
+ 0x60, 0x60, 0x17, 0x98, 0x24, 0x37, 0xa0, 0x60,
+ 0x06, 0x98, 0x20, 0x61, 0x15, 0x98, 0x0f, 0xc8,
+ 0x0f, 0xc7, 0x3c, 0x00, 0x4c, 0xd1, 0x00, 0x00,
+ 0x14, 0x98, 0x5c, 0x21, 0x60, 0x63, 0x09, 0x98,
+ 0x08, 0x53, 0x19, 0x98, 0x69, 0x21, 0xe0, 0x63,
+ 0x1b, 0x98, 0x08, 0x55, 0x1c, 0x98, 0x60, 0x65,
+ 0x19, 0x98, 0x00, 0x28, 0x23, 0xd0, 0x08, 0x98,
+ 0x06, 0x99, 0x08, 0x83, 0x1f, 0xe0, 0x6c, 0x22,
+ 0x20, 0x1c, 0x07, 0x99, 0xf3, 0xf7, 0x1a, 0xfa,
+ 0x3c, 0x60, 0x01, 0x98, 0x62, 0x21, 0x30, 0x18,
+ 0xc8, 0x53, 0x15, 0x98, 0x3c, 0x00, 0x88, 0xd1,
+ 0x00, 0x00, 0x40, 0x21, 0x80, 0x7a, 0xc8, 0x55,
+ 0x00, 0x20, 0xb8, 0x63, 0x06, 0x98, 0x0a, 0x99,
+ 0xf4, 0xf7, 0x1f, 0xfa, 0xf8, 0x60, 0x02, 0x99,
+ 0xf4, 0xf7, 0x3b, 0xf9, 0x20, 0x1c, 0x40, 0x30,
+ 0x81, 0x8b, 0x05, 0x9a, 0x12, 0x07, 0x12, 0x0f,
+ 0x11, 0x43, 0x81, 0x83, 0x03, 0x98, 0x5e, 0x21,
+ 0x02, 0x90, 0x01, 0x98, 0x22, 0x4a, 0x30, 0x18,
+ 0x08, 0x53, 0x12, 0x68, 0x01, 0x21, 0x3c, 0x00,
+ 0xc4, 0xd1, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x2a,
+ 0x00, 0xd0, 0x1b, 0x98, 0x00, 0x06, 0x04, 0x9a,
+ 0x00, 0x0e, 0x96, 0x42, 0x03, 0xd9, 0x2c, 0x22,
+ 0x11, 0x55, 0x1b, 0x49, 0x04, 0xe0, 0x15, 0x99,
+ 0x2c, 0x22, 0x09, 0x7a, 0x11, 0x55, 0x19, 0x49,
+ 0x08, 0x5c, 0x66, 0x21, 0x08, 0x55, 0x1c, 0x98,
+ 0x00, 0x28, 0x01, 0xd0, 0x1f, 0x20, 0x08, 0x55,
+ 0x00, 0x2d, 0x03, 0xd0, 0xe8, 0x68, 0x03, 0x90,
+ 0x3c, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0xe0, 0x09, 0xe0, 0xe8, 0x60, 0x05, 0x98,
+ 0x00, 0x26, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c,
+ 0x0d, 0x9f, 0x05, 0x90, 0x03, 0x9d, 0x6d, 0xe7,
+ 0x00, 0x98, 0xe0, 0x60, 0x02, 0x99, 0xf4, 0xf7,
+ 0xfa, 0xf8, 0x00, 0x20, 0x20, 0x60, 0x01, 0x21,
+ 0xa1, 0x63, 0x60, 0x34, 0x60, 0x80, 0x07, 0x98,
+ 0x0f, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x06, 0x61,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0xd2, 0x00, 0x00,
+ 0x5c, 0x43, 0x01, 0x00, 0x38, 0x09, 0x00, 0x00,
+ 0x18, 0x67, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00,
+ 0x0a, 0x61, 0x01, 0x00, 0x01, 0x48, 0x00, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0xc4, 0x6a, 0x01, 0x00,
+ 0x02, 0x49, 0x09, 0x1d, 0x03, 0xc9, 0x40, 0x18,
+ 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00,
+ 0x01, 0x48, 0x00, 0x69, 0x70, 0x47, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x78, 0xd2,
+ 0x00, 0x00, 0x01, 0x48, 0x40, 0x69, 0x70, 0x47,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x48,
+ 0x80, 0x69, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x4e, 0x00, 0x20,
+ 0x35, 0x1c, 0x40, 0x35, 0xf0, 0x63, 0x0d, 0xe0,
+ 0xa0, 0x68, 0xf4, 0xf7, 0x7a, 0xf9, 0xb3, 0x6d,
+ 0x00, 0x2b, 0x04, 0xd0, 0x00, 0x22, 0x01, 0x20,
+ 0x61, 0x6b, 0xf3, 0xf7, 0x95, 0xf8, 0x3c, 0x00,
+ 0xb4, 0xd2, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x9d, 0xfa, 0x28, 0x1c, 0xfa, 0xf7, 0x42, 0xfd,
+ 0x04, 0x1c, 0xec, 0xd1, 0x70, 0xbd, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4f,
+ 0x00, 0x26, 0xf8, 0x6b, 0x00, 0x28, 0x2c, 0xd0,
+ 0x38, 0x1c, 0x40, 0x30, 0x00, 0x90, 0x1d, 0xe0,
+ 0x16, 0x48, 0xb9, 0x6b, 0x02, 0xf0, 0x5c, 0xf8,
+ 0x00, 0x22, 0x20, 0x1c, 0x14, 0x49, 0x03, 0xf0,
+ 0x3c, 0x00, 0xf0, 0xd2, 0x00, 0x00, 0x7b, 0xff,
+ 0x05, 0x1c, 0x04, 0xd1, 0x38, 0x6a, 0x01, 0x30,
+ 0x38, 0x62, 0x01, 0x36, 0x0d, 0xe0, 0xa0, 0x68,
+ 0xf4, 0xf7, 0x49, 0xf9, 0xbb, 0x6d, 0x00, 0x2b,
+ 0x04, 0xd0, 0x00, 0x22, 0x28, 0x1c, 0x61, 0x6b,
+ 0xf3, 0xf7, 0x64, 0xf8, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x6c, 0xfa, 0x00, 0x98, 0xfa, 0xf7, 0x11, 0xfd,
+ 0x04, 0x1c, 0xdc, 0xd1, 0x07, 0x48, 0xb9, 0x6b,
+ 0x02, 0xf0, 0x3c, 0x00, 0x2c, 0xd3, 0x00, 0x00,
+ 0x25, 0xf8, 0x00, 0x20, 0xf8, 0x63, 0x30, 0x1c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x11, 0x30, 0x00, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0xc8, 0x63, 0x70, 0x47, 0xc4, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0x05, 0x4a, 0x00, 0x21,
+ 0x1c, 0x23, 0x43, 0x43, 0x9b, 0x18, 0x01, 0x30,
+ 0x04, 0x28, 0xd9, 0x66, 0x3c, 0x00, 0x68, 0xd3,
+ 0x00, 0x00, 0xf8, 0xdb, 0xfc, 0xf7, 0xfd, 0xfc,
+ 0x80, 0xbd, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49,
+ 0xc8, 0x64, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x01, 0x49, 0x88, 0x64, 0x70, 0x47,
+ 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0d, 0x1c, 0x21, 0x1c, 0x02, 0x8e,
+ 0x80, 0x6a, 0x40, 0x31, 0xf3, 0xf7, 0x2f, 0xf8,
+ 0x00, 0x28, 0x16, 0xd1, 0x02, 0x21, 0x3c, 0x00,
+ 0xa4, 0xd3, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7,
+ 0x6f, 0xfa, 0xe2, 0x69, 0xc0, 0x00, 0x10, 0x18,
+ 0x82, 0x8b, 0xab, 0x88, 0x9a, 0x42, 0x04, 0xd1,
+ 0x82, 0x69, 0x2b, 0x68, 0x9a, 0x42, 0x08, 0xd2,
+ 0x01, 0xe0, 0x9a, 0x42, 0x05, 0xd2, 0x00, 0x21,
+ 0x18, 0x30, 0x0c, 0xcd, 0x0c, 0xc0, 0x00, 0xe0,
+ 0x01, 0x21, 0x08, 0x1c, 0xb0, 0xbd, 0x00, 0x00,
+ 0xf8, 0xb5, 0x06, 0x1c, 0x00, 0x27, 0x44, 0x68,
+ 0x3c, 0x00, 0xe0, 0xd3, 0x00, 0x00, 0x0f, 0xe0,
+ 0x09, 0x49, 0x48, 0x6a, 0x01, 0x30, 0x48, 0x62,
+ 0xa0, 0x69, 0x00, 0x28, 0x02, 0xd0, 0xf4, 0xf7,
+ 0x00, 0xfa, 0xa7, 0x61, 0x26, 0x62, 0x25, 0x68,
+ 0x20, 0x1c, 0xff, 0xf7, 0x52, 0xfb, 0x2c, 0x1c,
+ 0x00, 0x2c, 0xed, 0xd1, 0xf8, 0xbd, 0xc4, 0x69,
+ 0x01, 0x00, 0x03, 0x30, 0x07, 0x4a, 0x81, 0x08,
+ 0x13, 0x68, 0x50, 0x68, 0x1b, 0x68, 0x89, 0x00,
+ 0x09, 0x18, 0x3c, 0x00, 0x1c, 0xd4, 0x00, 0x00,
+ 0x8b, 0x42, 0x01, 0xd3, 0x51, 0x60, 0x00, 0xe0,
+ 0x00, 0x20, 0x90, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0x8c, 0x6e, 0x01, 0x00, 0x70, 0xb5, 0x12, 0x4e,
+ 0x80, 0x38, 0xc5, 0x00, 0x70, 0x59, 0x0c, 0x1c,
+ 0x00, 0x28, 0x04, 0xd1, 0x01, 0x21, 0x0d, 0x20,
+ 0xf3, 0xf7, 0x2e, 0xff, 0x0d, 0xe0, 0x20, 0x69,
+ 0x00, 0x28, 0x05, 0xd1, 0xa8, 0x19, 0x81, 0x88,
+ 0xe0, 0x68, 0x01, 0xf0, 0x3c, 0x00, 0x58, 0xd4,
+ 0x00, 0x00, 0x47, 0xfa, 0x20, 0x61, 0x71, 0x59,
+ 0x20, 0x1c, 0xf2, 0xf7, 0xbb, 0xff, 0x04, 0x1c,
+ 0x00, 0x2c, 0x07, 0xd0, 0xe0, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0xf4, 0xf7, 0x92, 0xf8, 0x20, 0x1c,
+ 0xf4, 0xf7, 0xbd, 0xf9, 0x70, 0xbd, 0x54, 0x42,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x0d, 0x1c,
+ 0x0e, 0x49, 0x06, 0x22, 0xf3, 0xf7, 0x35, 0xf8,
+ 0x00, 0x26, 0xe6, 0x61, 0x66, 0x62, 0x3c, 0x00,
+ 0x94, 0xd4, 0x00, 0x00, 0x07, 0x20, 0x30, 0x21,
+ 0x08, 0x55, 0xe6, 0x63, 0x28, 0x1c, 0xf8, 0xf7,
+ 0x6b, 0xf8, 0xa0, 0x76, 0x20, 0x1c, 0x14, 0x30,
+ 0x06, 0x22, 0x29, 0x1c, 0xf3, 0xf7, 0x24, 0xf8,
+ 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, 0xf3, 0xf7,
+ 0x1f, 0xf8, 0x26, 0x61, 0x70, 0xbd, 0x00, 0x00,
+ 0x12, 0x61, 0x01, 0x00, 0x80, 0xb5, 0xfd, 0xf7,
+ 0x85, 0xfe, 0x80, 0xbd, 0x01, 0x49, 0x48, 0x60,
+ 0x3c, 0x00, 0xd0, 0xd4, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x49,
+ 0x80, 0xb5, 0x49, 0x68, 0xf2, 0xf7, 0x7c, 0xff,
+ 0x80, 0xbd, 0xe4, 0x65, 0x01, 0x00, 0x80, 0xb5,
+ 0xf4, 0xf7, 0xe5, 0xf9, 0x07, 0x49, 0x07, 0x48,
+ 0x0e, 0xc9, 0x0e, 0xc0, 0x18, 0x38, 0x00, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x02, 0xf0, 0xb7, 0xfa,
+ 0x80, 0xbd, 0x02, 0xf0, 0x9e, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd5, 0x00, 0x00,
+ 0xb0, 0x58, 0x01, 0x00, 0x90, 0x73, 0x01, 0x00,
+ 0x05, 0x49, 0x80, 0xb5, 0x89, 0x68, 0x00, 0x20,
+ 0x00, 0x29, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x06,
+ 0x00, 0x0e, 0xfa, 0xf7, 0xe3, 0xfb, 0x80, 0xbd,
+ 0x60, 0x6c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48,
+ 0x06, 0x22, 0x03, 0x49, 0xf2, 0xf7, 0xde, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x40, 0x80, 0x07, 0x00,
+ 0x12, 0x61, 0x01, 0x00, 0x3c, 0x00, 0x48, 0xd5,
+ 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0c, 0x4d,
+ 0x0b, 0x1c, 0x21, 0x1c, 0x00, 0x20, 0x0c, 0x3d,
+ 0x00, 0x29, 0x09, 0x4c, 0x05, 0xd0, 0x28, 0x78,
+ 0x21, 0x1c, 0x10, 0x80, 0x02, 0x1c, 0x18, 0x1c,
+ 0x07, 0xe0, 0x11, 0x88, 0x0e, 0x29, 0x07, 0xd8,
+ 0x0a, 0x06, 0x12, 0x0e, 0x19, 0x1c, 0x20, 0x1c,
+ 0x2a, 0x70, 0xf2, 0xf7, 0xbe, 0xff, 0x01, 0x20,
+ 0xb0, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x3c, 0x00,
+ 0x84, 0xd5, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x20,
+ 0x0a, 0x4a, 0x01, 0x21, 0x11, 0x60, 0x0a, 0x4c,
+ 0x0a, 0xe0, 0x02, 0x1c, 0x01, 0x6a, 0x50, 0x32,
+ 0x91, 0x42, 0x05, 0xd0, 0x61, 0x78, 0x3c, 0x23,
+ 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, 0x01, 0x62,
+ 0x04, 0xf0, 0xba, 0xfb, 0x00, 0x28, 0xf0, 0xd1,
+ 0x10, 0xbd, 0x00, 0x00, 0xdc, 0x62, 0x01, 0x00,
+ 0x68, 0x61, 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0xc0, 0xd5, 0x00, 0x00, 0x00, 0x68,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, 0x10, 0x20,
+ 0x04, 0xf0, 0xc7, 0xfe, 0x80, 0xbd, 0x28, 0x61,
+ 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, 0x80, 0xb5,
+ 0x00, 0x20, 0xfb, 0xf7, 0x76, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x0b, 0xf0, 0xb9, 0xfa,
+ 0x80, 0xbd, 0xff, 0xb5, 0x83, 0xb0, 0x16, 0x1c,
+ 0x00, 0x21, 0x01, 0x91, 0x1f, 0x1c, 0x08, 0x21,
+ 0x02, 0xaa, 0x3c, 0x00, 0xfc, 0xd5, 0x00, 0x00,
+ 0xfa, 0xf7, 0x0e, 0xff, 0x04, 0x1c, 0x2a, 0xd1,
+ 0x02, 0x98, 0x41, 0x68, 0x49, 0x00, 0x01, 0xd4,
+ 0x09, 0x24, 0x24, 0xe0, 0xfa, 0xf7, 0x52, 0xff,
+ 0x38, 0x60, 0x02, 0x98, 0x41, 0x68, 0x49, 0x02,
+ 0xcd, 0x0f, 0x29, 0x1c, 0xfa, 0xf7, 0x44, 0xff,
+ 0x01, 0x1c, 0x30, 0x60, 0x38, 0x68, 0x00, 0x06,
+ 0x00, 0x0e, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0x28,
+ 0x01, 0xd1, 0x0a, 0x24, 0x3c, 0x00, 0x38, 0xd6,
+ 0x00, 0x00, 0x0f, 0xe0, 0x31, 0x68, 0x02, 0x98,
+ 0x2b, 0x1c, 0x01, 0xaa, 0xfa, 0xf7, 0xd7, 0xff,
+ 0x00, 0x28, 0x06, 0xd0, 0x01, 0x98, 0x00, 0x28,
+ 0x04, 0xd0, 0x04, 0x99, 0x09, 0x68, 0x81, 0x42,
+ 0x00, 0xd2, 0x03, 0x24, 0x01, 0x98, 0x04, 0x99,
+ 0x08, 0x60, 0x07, 0xb0, 0x20, 0x1c, 0xf0, 0xbd,
+ 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c,
+ 0x01, 0x24, 0x00, 0xf0, 0x84, 0xff, 0x3c, 0x00,
+ 0x74, 0xd6, 0x00, 0x00, 0x00, 0x28, 0x08, 0xd0,
+ 0x03, 0x2d, 0x01, 0xd0, 0x04, 0x2d, 0x04, 0xd1,
+ 0x03, 0x20, 0xc0, 0x03, 0x86, 0x42, 0x00, 0xd3,
+ 0x00, 0x24, 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00,
+ 0x7c, 0xb5, 0x15, 0x1c, 0x06, 0x1c, 0x0c, 0x1c,
+ 0x29, 0x1c, 0x6a, 0x46, 0x01, 0xab, 0xff, 0xf7,
+ 0xa5, 0xff, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x2c,
+ 0x01, 0xd1, 0x03, 0x20, 0x7c, 0xbd, 0x17, 0x48,
+ 0x3c, 0x00, 0xb0, 0xd6, 0x00, 0x00, 0x00, 0xab,
+ 0x06, 0x60, 0x18, 0x79, 0x07, 0x28, 0x21, 0xd2,
+ 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44,
+ 0x00, 0x00, 0x1d, 0x04, 0x04, 0x06, 0x10, 0x17,
+ 0x13, 0x00, 0x04, 0x20, 0xed, 0xe7, 0x2a, 0x1c,
+ 0x21, 0x1c, 0x01, 0x20, 0x00, 0x9b, 0xf2, 0xf7,
+ 0x81, 0xfe, 0x00, 0x28, 0x12, 0xd1, 0x06, 0x20,
+ 0xe3, 0xe7, 0x2a, 0x68, 0x00, 0x99, 0x05, 0xe0,
+ 0x00, 0x98, 0x3c, 0x00, 0xec, 0xd6, 0x00, 0x00,
+ 0x42, 0x78, 0x81, 0x1c, 0x01, 0xe0, 0x2a, 0x68,
+ 0x69, 0x46, 0x20, 0x1c, 0xf2, 0xf7, 0xfe, 0xfe,
+ 0x03, 0xe0, 0x04, 0x21, 0x87, 0x20, 0xf3, 0xf7,
+ 0xcf, 0xfd, 0x00, 0x20, 0xd0, 0xe7, 0x00, 0x00,
+ 0xf8, 0x6b, 0x01, 0x00, 0xf7, 0xb5, 0x86, 0xb0,
+ 0x0e, 0x1c, 0x08, 0x21, 0x05, 0xaa, 0x06, 0x98,
+ 0xfa, 0xf7, 0x7e, 0xfe, 0x04, 0x1c, 0x45, 0xd1,
+ 0x05, 0x98, 0x41, 0x68, 0x3c, 0x00, 0x28, 0xd7,
+ 0x00, 0x00, 0x02, 0x90, 0x49, 0x02, 0xc9, 0x0f,
+ 0x00, 0x25, 0x04, 0x95, 0x03, 0x91, 0x08, 0x9f,
+ 0xfa, 0xf7, 0xd5, 0xfe, 0x01, 0x90, 0x02, 0xa9,
+ 0x03, 0xc9, 0xfa, 0xf7, 0xc6, 0xfe, 0x01, 0x99,
+ 0x05, 0x29, 0x14, 0xd2, 0x02, 0xa3, 0x5b, 0x5c,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x0e, 0x03,
+ 0x06, 0x0c, 0x03, 0x00, 0x87, 0x42, 0x0e, 0xd8,
+ 0x07, 0xe0, 0x87, 0x42, 0x0b, 0xd8, 0x3c, 0x00,
+ 0x64, 0xd7, 0x00, 0x00, 0x01, 0x25, 0xc0, 0x1b,
+ 0x04, 0x90, 0x07, 0xe0, 0x87, 0x42, 0x05, 0xd1,
+ 0x01, 0x25, 0x03, 0xe0, 0x05, 0x21, 0x87, 0x20,
+ 0xf3, 0xf7, 0x94, 0xfd, 0x00, 0x2d, 0x01, 0xd1,
+ 0x03, 0x24, 0x15, 0xe0, 0x05, 0x98, 0x41, 0x68,
+ 0x00, 0x29, 0x69, 0xda, 0x3a, 0x4a, 0x06, 0x99,
+ 0x11, 0x60, 0xfa, 0xf7, 0x91, 0xfe, 0x07, 0x1c,
+ 0x05, 0x98, 0x03, 0x99, 0xfa, 0xf7, 0x86, 0xfe,
+ 0x3c, 0x00, 0xa0, 0xd7, 0x00, 0x00, 0x05, 0x1c,
+ 0x01, 0x1c, 0x38, 0x1c, 0xff, 0xf7, 0x5f, 0xff,
+ 0x00, 0x28, 0x01, 0xd1, 0x0a, 0x24, 0x5e, 0xe0,
+ 0x07, 0x2f, 0x57, 0xd2, 0x02, 0xa3, 0xdb, 0x5d,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x53, 0x04,
+ 0x04, 0x06, 0x2e, 0x50, 0x48, 0x00, 0x04, 0x24,
+ 0x51, 0xe0, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1,
+ 0x00, 0x27, 0x14, 0xe0, 0x08, 0x99, 0x08, 0x18,
+ 0x00, 0x04, 0x3c, 0x00, 0xdc, 0xd7, 0x00, 0x00,
+ 0x00, 0x0c, 0xf4, 0xf7, 0x2b, 0xf8, 0x07, 0x1c,
+ 0x31, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, 0x86, 0xfe,
+ 0x08, 0x98, 0x04, 0x99, 0x38, 0x18, 0xf2, 0xf7,
+ 0x2f, 0xfe, 0x08, 0x98, 0x04, 0x99, 0x3e, 0x1c,
+ 0x40, 0x18, 0x08, 0x90, 0x31, 0x1c, 0x00, 0x20,
+ 0x08, 0xaa, 0xf2, 0xf7, 0xec, 0xfd, 0x00, 0x28,
+ 0x00, 0xd1, 0x05, 0x24, 0x00, 0x2f, 0x2d, 0xd0,
+ 0x38, 0x1c, 0xf3, 0xf7, 0x3c, 0x00, 0x18, 0xd8,
+ 0x00, 0x00, 0xed, 0xff, 0x29, 0xe0, 0x03, 0x99,
+ 0x00, 0x29, 0x04, 0xd0, 0x05, 0x98, 0x40, 0x68,
+ 0x87, 0x02, 0xbf, 0x0a, 0x00, 0xe0, 0x00, 0x27,
+ 0x31, 0x1c, 0x28, 0x1c, 0x08, 0x9a, 0xf2, 0xf7,
+ 0x60, 0xfe, 0x04, 0x99, 0x00, 0x29, 0x03, 0xd0,
+ 0x08, 0x98, 0x28, 0x18, 0xf2, 0xf7, 0x07, 0xfe,
+ 0x00, 0x2f, 0x12, 0xd0, 0xf2, 0xf7, 0xcc, 0xfd,
+ 0x0f, 0xe0, 0x31, 0x1c, 0xa8, 0x1c, 0x3c, 0x00,
+ 0x54, 0xd8, 0x00, 0x00, 0x08, 0x9a, 0xf2, 0xf7,
+ 0x4f, 0xfe, 0x08, 0x98, 0x68, 0x70, 0x07, 0xe0,
+ 0xff, 0xe7, 0x07, 0x24, 0x04, 0xe0, 0x08, 0x24,
+ 0x03, 0x21, 0x87, 0x20, 0xf3, 0xf7, 0x1a, 0xfd,
+ 0x20, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0xf8, 0x6b, 0x01, 0x00, 0x9e, 0xb5, 0x1c, 0x1c,
+ 0x00, 0xab, 0x19, 0x72, 0x00, 0x92, 0x00, 0x22,
+ 0x01, 0x94, 0x69, 0x46, 0xfb, 0xf7, 0x08, 0xfa,
+ 0x3c, 0x00, 0x90, 0xd8, 0x00, 0x00, 0x9e, 0xbd,
+ 0x00, 0x00, 0x8f, 0xb5, 0x02, 0x92, 0x00, 0x22,
+ 0x00, 0x90, 0x01, 0x90, 0x03, 0x91, 0x69, 0x46,
+ 0x04, 0x20, 0xfb, 0xf7, 0xfc, 0xf9, 0x8f, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28,
+ 0x0a, 0xd0, 0x03, 0x28, 0x19, 0xd0, 0x04, 0x28,
+ 0x2c, 0xd1, 0x60, 0x68, 0x01, 0xf0, 0x35, 0xfc,
+ 0x01, 0x1c, 0x83, 0x20, 0x0c, 0xcc, 0x22, 0xe0,
+ 0x1c, 0x20, 0x3c, 0x00, 0xcc, 0xd8, 0x00, 0x00,
+ 0x14, 0x49, 0x60, 0x43, 0x40, 0x18, 0x14, 0x49,
+ 0x45, 0x18, 0x28, 0x1c, 0xf8, 0xf7, 0x46, 0xfc,
+ 0xa9, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x22, 0x1c,
+ 0x08, 0x20, 0x05, 0xf0, 0x71, 0xfe, 0xb0, 0xbd,
+ 0x20, 0x8c, 0xc8, 0x28, 0x01, 0xd3, 0x04, 0x20,
+ 0x04, 0xe0, 0x65, 0x28, 0x01, 0xd3, 0x02, 0x20,
+ 0x00, 0xe0, 0x01, 0x20, 0x20, 0x84, 0x20, 0x1c,
+ 0x03, 0xf0, 0xdc, 0xfa, 0x3c, 0x00, 0x08, 0xd9,
+ 0x00, 0x00, 0x22, 0x68, 0xe3, 0x68, 0x01, 0x1c,
+ 0x82, 0x20, 0xff, 0xf7, 0xb4, 0xff, 0xb0, 0xbd,
+ 0xa0, 0x21, 0x08, 0x20, 0xf3, 0xf7, 0xc3, 0xfc,
+ 0xb0, 0xbd, 0xdc, 0x71, 0x01, 0x00, 0x64, 0xee,
+ 0xff, 0xff, 0x03, 0x48, 0x04, 0x4a, 0x81, 0x68,
+ 0x51, 0x61, 0xc0, 0x68, 0x90, 0x61, 0x70, 0x47,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71,
+ 0x01, 0x00, 0x03, 0x49, 0x04, 0x4a, 0x3c, 0x00,
+ 0x44, 0xd9, 0x00, 0x00, 0x08, 0x6b, 0x90, 0x60,
+ 0x88, 0x68, 0xd0, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0x90, 0x5c, 0x01, 0x00, 0xc0, 0x71, 0x01, 0x00,
+ 0x00, 0xb5, 0xff, 0xf7, 0xf1, 0xff, 0xff, 0xf7,
+ 0xe3, 0xff, 0x00, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x00, 0x28, 0x14, 0xd0, 0x0b, 0x49, 0x0c, 0x4c,
+ 0x88, 0x68, 0x62, 0x69, 0xc9, 0x68, 0x80, 0x1a,
+ 0xa2, 0x69, 0x89, 0x1a, 0x40, 0x18, 0x04, 0xd0,
+ 0x3c, 0x00, 0x80, 0xd9, 0x00, 0x00, 0x64, 0x23,
+ 0x59, 0x43, 0xf2, 0xf7, 0xc4, 0xfe, 0x20, 0x61,
+ 0xff, 0xf7, 0xcd, 0xff, 0x20, 0x69, 0x28, 0x60,
+ 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd,
+ 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28,
+ 0x17, 0xd0, 0x0c, 0x49, 0x0d, 0x4c, 0x08, 0x6b,
+ 0xa2, 0x68, 0x89, 0x68, 0x80, 0x1a, 0xe2, 0x68,
+ 0x89, 0x1a, 0x3c, 0x00, 0xbc, 0xd9, 0x00, 0x00,
+ 0x40, 0x18, 0x07, 0xd0, 0x22, 0x88, 0x90, 0x42,
+ 0x04, 0xd9, 0x64, 0x23, 0x59, 0x43, 0xf2, 0xf7,
+ 0xa1, 0xfe, 0x60, 0x60, 0xff, 0xf7, 0xb6, 0xff,
+ 0x60, 0x68, 0x28, 0x60, 0x01, 0x20, 0xb0, 0xbd,
+ 0x00, 0x20, 0xb0, 0xbd, 0x90, 0x5c, 0x01, 0x00,
+ 0xc0, 0x71, 0x01, 0x00, 0x7c, 0xb5, 0x10, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, 0x24, 0xf8,
+ 0x7c, 0xbd, 0x0f, 0x48, 0x3c, 0x00, 0xf8, 0xd9,
+ 0x00, 0x00, 0xc0, 0x69, 0x84, 0x68, 0xe0, 0x68,
+ 0x25, 0x6a, 0xa6, 0x69, 0xf3, 0xf7, 0xe3, 0xfd,
+ 0xe1, 0x69, 0xf3, 0xf7, 0x06, 0xfd, 0x20, 0x1c,
+ 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89,
+ 0x89, 0x18, 0xc1, 0x83, 0x07, 0x49, 0x01, 0x94,
+ 0x00, 0x91, 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88,
+ 0x01, 0x68, 0xe0, 0x68, 0xc0, 0x68, 0xf8, 0xf7,
+ 0x1e, 0xfc, 0xe0, 0xe7, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0xda, 0x00, 0x00, 0x84, 0x6a, 0x01, 0x00,
+ 0x91, 0x5e, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0x69,
+ 0x06, 0x6a, 0x04, 0x1c, 0xc0, 0x68, 0x85, 0xb0,
+ 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xf3, 0xf7,
+ 0x57, 0xfc, 0x0a, 0x49, 0x02, 0x95, 0x04, 0x94,
+ 0x03, 0x91, 0x30, 0x69, 0x82, 0x88, 0x01, 0x68,
+ 0x26, 0x20, 0x01, 0x92, 0x00, 0x91, 0x43, 0x5d,
+ 0xe0, 0x68, 0xe1, 0x69, 0x2a, 0x1c, 0x0e, 0x32,
+ 0x3c, 0x00, 0x70, 0xda, 0x00, 0x00, 0xc0, 0x68,
+ 0xf8, 0xf7, 0x37, 0xfd, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xe9, 0xd9, 0x00, 0x00, 0x10, 0xb5,
+ 0x14, 0x1c, 0x05, 0x48, 0xfc, 0xf7, 0x7b, 0xfb,
+ 0xa0, 0x68, 0xf3, 0xf7, 0x9e, 0xfd, 0xe1, 0x68,
+ 0xc1, 0x60, 0x20, 0x1c, 0xf5, 0xf7, 0xbb, 0xfa,
+ 0x10, 0xbd, 0xa0, 0x6a, 0x01, 0x00, 0x7c, 0xb5,
+ 0x04, 0x1c, 0x60, 0x30, 0x02, 0x7b, 0xa1, 0x69,
+ 0x00, 0x91, 0x3c, 0x00, 0xac, 0xda, 0x00, 0x00,
+ 0x01, 0x92, 0x22, 0x1c, 0x21, 0x1c, 0x38, 0x31,
+ 0xa0, 0x68, 0x48, 0x32, 0x0d, 0x1c, 0x63, 0x69,
+ 0x03, 0xf0, 0x7a, 0xfb, 0x08, 0x21, 0x00, 0x20,
+ 0xf3, 0xf7, 0x88, 0xfd, 0xe0, 0x60, 0x26, 0x69,
+ 0xb1, 0x6b, 0x00, 0x29, 0x01, 0xd0, 0x10, 0x23,
+ 0x00, 0xe0, 0x18, 0x23, 0x05, 0x49, 0x01, 0x94,
+ 0x00, 0x91, 0x31, 0x68, 0xca, 0x18, 0x08, 0x23,
+ 0x01, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0xe8, 0xda,
+ 0x00, 0x00, 0xf8, 0xf7, 0x20, 0xfd, 0x7c, 0xbd,
+ 0x00, 0x00, 0x81, 0xda, 0x00, 0x00, 0xf0, 0xb5,
+ 0x46, 0x68, 0x17, 0x1c, 0x04, 0x1c, 0x01, 0x21,
+ 0x30, 0x1c, 0x9b, 0xb0, 0xfa, 0xf7, 0x0d, 0xfc,
+ 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, 0x13, 0x49,
+ 0x0a, 0x7a, 0x01, 0x2a, 0x01, 0xd1, 0x01, 0x25,
+ 0x1c, 0xe0, 0x88, 0x62, 0x4e, 0x61, 0x20, 0x89,
+ 0xc8, 0x61, 0x60, 0x89, 0x00, 0x28, 0x3c, 0x00,
+ 0x24, 0xdb, 0x00, 0x00, 0x03, 0xd0, 0x00, 0x20,
+ 0x08, 0x84, 0x48, 0x84, 0x04, 0xe0, 0xe0, 0x68,
+ 0x08, 0x84, 0x20, 0x8a, 0x48, 0x84, 0x60, 0x8a,
+ 0x88, 0x84, 0x08, 0x6b, 0x00, 0x28, 0x03, 0xd1,
+ 0x01, 0xa8, 0x03, 0xf0, 0x77, 0xfc, 0x04, 0xe0,
+ 0x01, 0x20, 0x08, 0x61, 0x00, 0x20, 0x02, 0xf0,
+ 0x39, 0xfb, 0x3d, 0x71, 0x1b, 0xb0, 0x01, 0x20,
+ 0xf0, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00,
+ 0x3c, 0x00, 0x60, 0xdb, 0x00, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0xf7, 0xf7, 0xe8, 0xfb, 0x00, 0x28,
+ 0x11, 0xd1, 0x4b, 0x20, 0x00, 0x5d, 0x01, 0x28,
+ 0x0d, 0xd1, 0x20, 0x1c, 0x04, 0xf0, 0x85, 0xfa,
+ 0x00, 0x21, 0x20, 0x1c, 0x04, 0xf0, 0xf3, 0xf8,
+ 0xa0, 0x69, 0x00, 0x21, 0xc2, 0x07, 0xd2, 0x0f,
+ 0x04, 0x20, 0xf4, 0xf7, 0xd8, 0xf9, 0x10, 0xbd,
+ 0x00, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x04, 0xf0,
+ 0x36, 0xf9, 0x3c, 0x00, 0x9c, 0xdb, 0x00, 0x00,
+ 0x00, 0x28, 0x03, 0xd0, 0x40, 0x30, 0x80, 0x7a,
+ 0x00, 0x28, 0x25, 0xd1, 0x0c, 0x20, 0x29, 0x21,
+ 0x08, 0x55, 0x21, 0x1c, 0x06, 0x22, 0xa0, 0x18,
+ 0xf2, 0xf7, 0xa0, 0xfc, 0x20, 0x1c, 0x06, 0x22,
+ 0x0e, 0x49, 0xf2, 0xf7, 0x9b, 0xfc, 0x01, 0x20,
+ 0xe0, 0x61, 0x60, 0x62, 0x07, 0x20, 0x30, 0x21,
+ 0x08, 0x55, 0x00, 0x25, 0xe5, 0x63, 0x06, 0x20,
+ 0x00, 0xab, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0xdb,
+ 0x00, 0x00, 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd0,
+ 0xf3, 0xf7, 0xdb, 0xfc, 0x02, 0x21, 0x68, 0x46,
+ 0xfd, 0xf7, 0x73, 0xfb, 0xe0, 0x60, 0x20, 0x1c,
+ 0xff, 0xf7, 0x69, 0xfc, 0xe5, 0x60, 0x20, 0x1c,
+ 0x38, 0xbd, 0x12, 0x61, 0x01, 0x00, 0xfe, 0xb5,
+ 0x05, 0x1c, 0x0e, 0x1c, 0x15, 0x20, 0x00, 0xab,
+ 0x98, 0x80, 0x14, 0x21, 0x17, 0x1c, 0x00, 0x20,
+ 0xf3, 0xf7, 0xe3, 0xfc, 0x02, 0x90, 0x3c, 0x00,
+ 0x14, 0xdc, 0x00, 0x00, 0x04, 0x68, 0x06, 0x22,
+ 0x31, 0x1c, 0x60, 0x1d, 0x25, 0x71, 0xf2, 0xf7,
+ 0x6b, 0xfc, 0x06, 0x22, 0x39, 0x1c, 0x20, 0x1c,
+ 0x0b, 0x30, 0xf2, 0xf7, 0x65, 0xfc, 0x01, 0xa8,
+ 0xff, 0xf7, 0x52, 0xfc, 0xfe, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x23, 0xfb, 0xf7, 0x5c, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c,
+ 0x08, 0x35, 0x0f, 0x4e, 0x29, 0x1c, 0x04, 0x1c,
+ 0x3c, 0x00, 0x50, 0xdc, 0x00, 0x00, 0x06, 0x22,
+ 0x30, 0x1c, 0xf2, 0xf7, 0x50, 0xfc, 0xa0, 0x88,
+ 0xb0, 0x82, 0x28, 0x1c, 0x05, 0xf0, 0xa1, 0xff,
+ 0x00, 0x28, 0x0b, 0xd0, 0xe0, 0x88, 0x30, 0x61,
+ 0x28, 0x1c, 0x04, 0xf0, 0xcc, 0xf8, 0xa1, 0x88,
+ 0x40, 0x30, 0x41, 0x80, 0x00, 0x20, 0xf4, 0xf7,
+ 0xb8, 0xf9, 0x02, 0xe0, 0x04, 0x20, 0xf4, 0xf7,
+ 0xa0, 0xf9, 0x00, 0x20, 0x70, 0xbd, 0x70, 0x7c,
+ 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xdc, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0xfb, 0xf7, 0xf8, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x04, 0x1c,
+ 0x04, 0x30, 0x05, 0x1c, 0xfd, 0xf7, 0x32, 0xf8,
+ 0x00, 0x28, 0x09, 0xd0, 0x00, 0x20, 0xf7, 0xf7,
+ 0x37, 0xfc, 0x00, 0x28, 0x04, 0xd0, 0x06, 0x22,
+ 0x01, 0x1c, 0x28, 0x1c, 0xf2, 0xf7, 0x1e, 0xfc,
+ 0x0a, 0x4e, 0x06, 0x22, 0x29, 0x1c, 0x30, 0x1c,
+ 0xf2, 0xf7, 0x18, 0xfc, 0x3c, 0x00, 0xc8, 0xdc,
+ 0x00, 0x00, 0x60, 0x89, 0xf0, 0x82, 0x28, 0x1c,
+ 0x05, 0xf0, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0,
+ 0x02, 0x20, 0xf4, 0xf7, 0x88, 0xf9, 0x02, 0xe0,
+ 0x05, 0x20, 0xf9, 0xf7, 0xf4, 0xfa, 0x00, 0x20,
+ 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x00, 0x79, 0x04, 0x28, 0x1c, 0xd2,
+ 0x60, 0x79, 0x01, 0x28, 0x01, 0xd0, 0x03, 0x28,
+ 0x04, 0xd1, 0x00, 0x22, 0x01, 0x21, 0x3c, 0x00,
+ 0x04, 0xdd, 0x00, 0x00, 0xa0, 0x1d, 0xf9, 0xf7,
+ 0x69, 0xfc, 0x60, 0x79, 0x00, 0x28, 0x04, 0xd1,
+ 0x22, 0x79, 0x00, 0x21, 0xf9, 0xf7, 0x62, 0xfc,
+ 0x0a, 0xe0, 0x03, 0x28, 0x08, 0xd1, 0x00, 0x24,
+ 0x22, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7,
+ 0x59, 0xfc, 0x01, 0x34, 0x04, 0x2c, 0xf7, 0xdb,
+ 0x01, 0x20, 0x10, 0xbd, 0xf0, 0xb5, 0x97, 0xb0,
+ 0x17, 0x1c, 0x05, 0x1c, 0x04, 0x30, 0x04, 0x1c,
+ 0x3c, 0x00, 0x40, 0xdd, 0x00, 0x00, 0x15, 0xaa,
+ 0x16, 0xa9, 0x05, 0xf0, 0xe2, 0xfe, 0x00, 0x28,
+ 0x2e, 0xd0, 0x15, 0x98, 0x4b, 0x21, 0x09, 0x5c,
+ 0x00, 0x29, 0x23, 0xd0, 0x01, 0x29, 0x02, 0xd0,
+ 0x02, 0x29, 0x1f, 0xd1, 0x01, 0xe0, 0x04, 0xf0,
+ 0x90, 0xf9, 0xad, 0x7a, 0x13, 0x48, 0x16, 0x9e,
+ 0x05, 0x80, 0x06, 0x22, 0x21, 0x1c, 0x08, 0x30,
+ 0xf2, 0xf7, 0xc1, 0xfb, 0x22, 0x1c, 0x31, 0x1c,
+ 0x02, 0xa8, 0x3c, 0x00, 0x7c, 0xdd, 0x00, 0x00,
+ 0x00, 0xf0, 0x74, 0xfb, 0x0a, 0x20, 0x0a, 0xa9,
+ 0x48, 0x72, 0x00, 0xab, 0x9d, 0x80, 0x02, 0x21,
+ 0x01, 0xa8, 0xfd, 0xf7, 0x9f, 0xfa, 0x05, 0x90,
+ 0x02, 0xa8, 0xff, 0xf7, 0x95, 0xfb, 0xf3, 0xf7,
+ 0xf7, 0xf9, 0x00, 0x21, 0x15, 0x98, 0x03, 0xf0,
+ 0xe1, 0xff, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20,
+ 0x38, 0x71, 0x17, 0xb0, 0x01, 0x20, 0xf0, 0xbd,
+ 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0xb8, 0xdd,
+ 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xfb, 0xf7,
+ 0x62, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x80, 0x7d, 0x15, 0x1c, 0x0a, 0x1c,
+ 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0x21, 0x1c,
+ 0xf9, 0xf7, 0xfb, 0xfc, 0x00, 0x28, 0x03, 0xd1,
+ 0x04, 0x20, 0x28, 0x71, 0x01, 0x20, 0xb0, 0xbd,
+ 0x20, 0x6a, 0xf7, 0xf7, 0x76, 0xfe, 0x60, 0x6a,
+ 0xf7, 0xf7, 0x7b, 0xfe, 0x20, 0x6a, 0x3c, 0x00,
+ 0xf4, 0xdd, 0x00, 0x00, 0xfe, 0xf7, 0x88, 0xfa,
+ 0x00, 0x20, 0xb0, 0xbd, 0x10, 0xb5, 0x14, 0x1c,
+ 0xc2, 0x79, 0x81, 0x79, 0x80, 0x88, 0xf7, 0xf7,
+ 0xa1, 0xfa, 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd,
+ 0x80, 0xb5, 0x01, 0x23, 0xfa, 0xf7, 0x70, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0xf0, 0xb5, 0x04, 0x1c,
+ 0x08, 0x1c, 0x00, 0x21, 0x0f, 0x28, 0x91, 0xb0,
+ 0x00, 0xd3, 0x02, 0x21, 0x00, 0x29, 0x41, 0xd1,
+ 0x3c, 0x00, 0x30, 0xde, 0x00, 0x00, 0xc0, 0x00,
+ 0x24, 0x4f, 0x10, 0x90, 0xc6, 0x19, 0xb2, 0x88,
+ 0x21, 0x68, 0x02, 0xa8, 0xf2, 0xf7, 0x5b, 0xfb,
+ 0x21, 0x89, 0xb0, 0x88, 0x09, 0x1a, 0x00, 0x29,
+ 0x07, 0xdd, 0x09, 0x04, 0x22, 0x68, 0x09, 0x0c,
+ 0x10, 0x18, 0xf3, 0xf7, 0xc0, 0xfb, 0x05, 0x1c,
+ 0x00, 0xe0, 0x00, 0x25, 0xb0, 0x79, 0x80, 0x21,
+ 0x88, 0x43, 0x17, 0x49, 0x78, 0x31, 0x09, 0x5c,
+ 0x00, 0x20, 0x3c, 0x00, 0x6c, 0xde, 0x00, 0x00,
+ 0xf3, 0xf7, 0xb4, 0xfb, 0x07, 0x1c, 0x00, 0x68,
+ 0x13, 0x49, 0x01, 0x90, 0x10, 0x98, 0x0b, 0x58,
+ 0x01, 0x9a, 0x29, 0x1c, 0x02, 0xa8, 0xf2, 0xf7,
+ 0xac, 0xfa, 0x00, 0x90, 0x28, 0x1c, 0xf3, 0xf7,
+ 0x73, 0xfb, 0x20, 0x1c, 0xf3, 0xf7, 0x82, 0xfb,
+ 0x00, 0x98, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x98,
+ 0x01, 0x99, 0x08, 0x60, 0xb0, 0x79, 0x39, 0x1c,
+ 0xfa, 0xf7, 0x20, 0xff, 0x3c, 0x00, 0xa8, 0xde,
+ 0x00, 0x00, 0x11, 0xb0, 0xf0, 0xbd, 0x38, 0x1c,
+ 0xf3, 0xf7, 0x61, 0xfb, 0xf9, 0xe7, 0x2d, 0x20,
+ 0xf3, 0xf7, 0xf5, 0xf9, 0x20, 0x1c, 0xf3, 0xf7,
+ 0x6c, 0xfb, 0xf2, 0xe7, 0x00, 0x00, 0x24, 0x44,
+ 0x01, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x20, 0x35,
+ 0x06, 0x1c, 0xa8, 0x79, 0x04, 0x28, 0x48, 0xd2,
+ 0xe9, 0x79, 0x01, 0x29, 0x13, 0xd1, 0x30, 0x1c,
+ 0x28, 0x30, 0x03, 0xf0, 0x92, 0xff, 0x3c, 0x00,
+ 0xe4, 0xde, 0x00, 0x00, 0x00, 0x28, 0x3f, 0xd0,
+ 0x01, 0x1c, 0x8c, 0x31, 0x01, 0x65, 0xa9, 0x79,
+ 0x4c, 0x22, 0x04, 0x1c, 0x11, 0x54, 0x81, 0x18,
+ 0x41, 0x62, 0x50, 0x34, 0x04, 0x62, 0xe1, 0x1e,
+ 0x81, 0x62, 0x0b, 0xe0, 0x00, 0x29, 0x2f, 0xd1,
+ 0x3c, 0x22, 0x18, 0x49, 0x42, 0x43, 0x54, 0x18,
+ 0x17, 0x4a, 0x04, 0x34, 0x12, 0x68, 0x00, 0x2a,
+ 0x00, 0xd1, 0x48, 0x70, 0x00, 0x2c, 0x23, 0xd0,
+ 0x3c, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x35, 0x1c,
+ 0x30, 0x35, 0xe8, 0x79, 0x01, 0x28, 0x01, 0xd0,
+ 0x05, 0x28, 0x01, 0xd1, 0x06, 0x20, 0xe8, 0x71,
+ 0x20, 0x22, 0x31, 0x1d, 0x20, 0x68, 0xf2, 0xf7,
+ 0xde, 0xfa, 0xb0, 0x8c, 0xa0, 0x80, 0xe8, 0x79,
+ 0xa0, 0x71, 0xa8, 0x79, 0x00, 0x25, 0xa0, 0x63,
+ 0x01, 0x20, 0x60, 0x81, 0x00, 0x20, 0xe0, 0x60,
+ 0x2e, 0x36, 0xe8, 0x00, 0x00, 0x19, 0x18, 0x30,
+ 0x08, 0x22, 0x3c, 0x00, 0x5c, 0xdf, 0x00, 0x00,
+ 0x31, 0x1c, 0xf2, 0xf7, 0xcb, 0xfa, 0x01, 0x35,
+ 0x04, 0x2d, 0xf5, 0xd3, 0x01, 0x20, 0x70, 0xbd,
+ 0x68, 0x61, 0x01, 0x00, 0xdc, 0x62, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x7a, 0x01, 0x28,
+ 0x01, 0xd0, 0x03, 0x28, 0x07, 0xd1, 0x20, 0x1d,
+ 0x03, 0xf0, 0x40, 0xff, 0x00, 0x28, 0x02, 0xd0,
+ 0xa1, 0x7a, 0x40, 0x30, 0x41, 0x73, 0xe0, 0x7a,
+ 0x00, 0x28, 0x01, 0xd0, 0x3c, 0x00, 0x98, 0xdf,
+ 0x00, 0x00, 0x03, 0x28, 0x02, 0xd1, 0xa0, 0x7a,
+ 0x02, 0x49, 0x08, 0x70, 0x01, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5,
+ 0x0e, 0x1c, 0x03, 0x21, 0x04, 0x1c, 0x30, 0x1c,
+ 0xfc, 0xf7, 0xe1, 0xfb, 0x00, 0x28, 0x01, 0xd0,
+ 0x85, 0x78, 0x00, 0xe0, 0x00, 0x25, 0x0b, 0x48,
+ 0x32, 0x1c, 0x00, 0x68, 0x03, 0x68, 0x20, 0x7c,
+ 0x80, 0x07, 0xc0, 0x0f, 0x21, 0x1c, 0x3c, 0x00,
+ 0xd4, 0xdf, 0x00, 0x00, 0xf7, 0xf7, 0x62, 0xfe,
+ 0x00, 0x28, 0x05, 0xd0, 0x01, 0x21, 0x28, 0x1c,
+ 0xfd, 0xf7, 0xfe, 0xfb, 0x00, 0x20, 0x00, 0xe0,
+ 0x08, 0x20, 0x03, 0xf0, 0xc5, 0xff, 0x00, 0x20,
+ 0x70, 0xbd, 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00,
+ 0x80, 0xb5, 0x42, 0x68, 0x00, 0x88, 0x01, 0x21,
+ 0x49, 0x06, 0x08, 0x43, 0x2d, 0x21, 0x05, 0xf0,
+ 0xd3, 0xfb, 0x80, 0xbd, 0x03, 0x49, 0x01, 0x20,
+ 0x3c, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x49, 0x78,
+ 0x02, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47,
+ 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x8c, 0xb5,
+ 0x01, 0x28, 0x1f, 0xd1, 0x00, 0x29, 0x0d, 0xd0,
+ 0x01, 0x29, 0x0b, 0xd0, 0x02, 0x29, 0x01, 0xd0,
+ 0x03, 0x29, 0x16, 0xd1, 0x00, 0x20, 0xf9, 0xf7,
+ 0x14, 0xfc, 0x93, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0x00, 0x20, 0x08, 0xe0, 0x01, 0x29, 0x00, 0xd0,
+ 0x00, 0x20, 0x3c, 0x00, 0x4c, 0xe0, 0x00, 0x00,
+ 0xf9, 0xf7, 0x0a, 0xfc, 0x83, 0x20, 0x00, 0xab,
+ 0x18, 0x80, 0x02, 0x20, 0x00, 0xf0, 0xcc, 0xf8,
+ 0x01, 0x90, 0x68, 0x46, 0xff, 0xf7, 0x3a, 0xfa,
+ 0x8c, 0xbd, 0x01, 0x21, 0x0e, 0x20, 0xf3, 0xf7,
+ 0x1b, 0xf9, 0xf9, 0xe7, 0xff, 0xb5, 0x17, 0x1c,
+ 0x1e, 0x1c, 0x14, 0x21, 0x00, 0x20, 0x83, 0xb0,
+ 0xf3, 0xf7, 0xac, 0xfa, 0x05, 0x1c, 0x04, 0x68,
+ 0x12, 0x20, 0x00, 0xab, 0x3c, 0x00, 0x88, 0xe0,
+ 0x00, 0x00, 0x98, 0x80, 0x06, 0x22, 0x60, 0x1d,
+ 0x03, 0x99, 0xf2, 0xf7, 0x32, 0xfa, 0x00, 0x20,
+ 0x20, 0x71, 0x27, 0x73, 0x04, 0x99, 0x20, 0x1c,
+ 0xe1, 0x72, 0x31, 0x1c, 0x06, 0x22, 0x0d, 0x30,
+ 0xf2, 0xf7, 0x27, 0xfa, 0x02, 0x95, 0x01, 0xa8,
+ 0xff, 0xf7, 0x13, 0xfa, 0x07, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0f, 0x1c,
+ 0x0c, 0x21, 0x00, 0x20, 0xf3, 0xf7, 0x3c, 0x00,
+ 0xc4, 0xe0, 0x00, 0x00, 0x89, 0xfa, 0x05, 0x68,
+ 0x04, 0x1c, 0x28, 0x1d, 0x06, 0x22, 0x31, 0x1c,
+ 0xf2, 0xf7, 0x12, 0xfa, 0x6f, 0x81, 0x20, 0x1c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0d, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf3, 0xf7,
+ 0x77, 0xfa, 0x01, 0x68, 0x8c, 0x71, 0x8d, 0x80,
+ 0xb0, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x0e, 0x1c,
+ 0x10, 0x21, 0x17, 0x1c, 0x00, 0x20, 0xf3, 0xf7,
+ 0x3c, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x6b, 0xfa,
+ 0x04, 0x68, 0x05, 0x1c, 0x20, 0x1d, 0x06, 0x22,
+ 0x00, 0x99, 0xf2, 0xf7, 0xf4, 0xf9, 0x66, 0x81,
+ 0xa7, 0x81, 0x28, 0x1c, 0xfe, 0xbd, 0xf3, 0xb5,
+ 0x0c, 0x1c, 0x08, 0x21, 0x00, 0x20, 0x85, 0xb0,
+ 0xf3, 0xf7, 0x59, 0xfa, 0x06, 0x1c, 0x07, 0x68,
+ 0xe0, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x05, 0x99,
+ 0x01, 0x29, 0x04, 0xd1, 0x05, 0x98, 0x38, 0x71,
+ 0x00, 0x20, 0x3c, 0x00, 0x3c, 0xe1, 0x00, 0x00,
+ 0x78, 0x71, 0x56, 0xe0, 0x03, 0x68, 0x01, 0x21,
+ 0x03, 0x93, 0x20, 0x69, 0x02, 0x90, 0xfc, 0xf7,
+ 0x17, 0xfb, 0x05, 0x1c, 0x02, 0x98, 0x32, 0x21,
+ 0xfc, 0xf7, 0x12, 0xfb, 0x00, 0x22, 0xd2, 0x43,
+ 0x01, 0x1c, 0x28, 0x1c, 0x04, 0xab, 0xf7, 0xf7,
+ 0xb9, 0xf8, 0x00, 0x28, 0x04, 0xd1, 0x30, 0x1c,
+ 0xf3, 0xf7, 0x02, 0xfa, 0x00, 0x26, 0x3c, 0xe0,
+ 0x00, 0x2d, 0x05, 0xd0, 0x3c, 0x00, 0x78, 0xe1,
+ 0x00, 0x00, 0x68, 0x78, 0x09, 0x38, 0x07, 0x28,
+ 0x01, 0xd8, 0x32, 0x20, 0x28, 0x70, 0x1c, 0x21,
+ 0x00, 0x20, 0xf3, 0xf7, 0x26, 0xfa, 0x01, 0x90,
+ 0x05, 0x68, 0x01, 0x1c, 0x30, 0x1c, 0xf3, 0xf7,
+ 0x40, 0xf9, 0xe0, 0x68, 0xf3, 0xf7, 0x0b, 0xfa,
+ 0xa8, 0x61, 0xe1, 0x68, 0x01, 0x98, 0xf3, 0xf7,
+ 0x38, 0xf9, 0x00, 0x20, 0xe0, 0x60, 0x05, 0x98,
+ 0x80, 0x21, 0x08, 0x43, 0x38, 0x71, 0x3c, 0x00,
+ 0xb4, 0xe1, 0x00, 0x00, 0x01, 0x20, 0x21, 0x1c,
+ 0x14, 0x31, 0x78, 0x71, 0x28, 0x1c, 0x06, 0x22,
+ 0xf2, 0xf7, 0x9a, 0xf9, 0x02, 0x9a, 0x29, 0x20,
+ 0x00, 0x92, 0x00, 0x5d, 0x01, 0x21, 0xe2, 0x6a,
+ 0x08, 0x28, 0x00, 0xd0, 0x00, 0x21, 0x28, 0x1c,
+ 0x03, 0x9b, 0x02, 0xf0, 0x9d, 0xff, 0xa0, 0x6b,
+ 0x28, 0x61, 0x20, 0x6c, 0x68, 0x61, 0x7f, 0x30,
+ 0x01, 0xd1, 0x0f, 0x20, 0x68, 0x61, 0x30, 0x1c,
+ 0x3c, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x08, 0x21,
+ 0x00, 0x20, 0xf3, 0xf7, 0xec, 0xf9, 0x01, 0x68,
+ 0x0c, 0x71, 0x10, 0xbd, 0x00, 0x00, 0x01, 0x48,
+ 0x00, 0x68, 0x70, 0x47, 0x00, 0x00, 0x28, 0x61,
+ 0x01, 0x00, 0x01, 0x49, 0x08, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x1c,
+ 0x01, 0x20, 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5,
+ 0x2d, 0x21, 0x3c, 0x00, 0x2c, 0xe2, 0x00, 0x00,
+ 0x05, 0xf0, 0xc0, 0xfa, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x01, 0x28, 0x07, 0xd0, 0xf1, 0x28,
+ 0x25, 0xd0, 0xf3, 0x28, 0x27, 0xd1, 0x02, 0x20,
+ 0x02, 0xf0, 0xbc, 0xf9, 0x80, 0xbd, 0x00, 0x29,
+ 0x1a, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0xf2, 0x29,
+ 0xf8, 0xd1, 0x88, 0x21, 0x1c, 0xe0, 0x10, 0x48,
+ 0x01, 0x78, 0x00, 0x29, 0x05, 0xd1, 0x40, 0x78,
+ 0x01, 0x28, 0xef, 0xd1, 0x3c, 0x00, 0x68, 0xe2,
+ 0x00, 0x00, 0x00, 0xf0, 0x16, 0xfa, 0x80, 0xbd,
+ 0x0b, 0x48, 0x14, 0x30, 0x00, 0x89, 0xfc, 0xf7,
+ 0x5a, 0xfc, 0x01, 0x1c, 0x01, 0x22, 0x0f, 0x20,
+ 0x05, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x04, 0xf0,
+ 0x52, 0xfa, 0x80, 0xbd, 0x00, 0x20, 0xfa, 0xf7,
+ 0x32, 0xfe, 0x80, 0xbd, 0x02, 0x21, 0x0f, 0x20,
+ 0xf3, 0xf7, 0x05, 0xf8, 0x80, 0xbd, 0x84, 0x66,
+ 0x01, 0x00, 0x01, 0x48, 0x00, 0x78, 0x3c, 0x00,
+ 0xa4, 0xe2, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x74, 0x66, 0x01, 0x00, 0x01, 0x49, 0x00, 0x20,
+ 0x48, 0x60, 0x70, 0x47, 0xec, 0x65, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0e, 0x1c, 0x13, 0x4d, 0x01, 0x1c,
+ 0x14, 0x1c, 0x68, 0x22, 0x28, 0x1c, 0x1f, 0x1c,
+ 0x0c, 0x30, 0xf2, 0xf7, 0x71, 0xf9, 0x0f, 0x49,
+ 0x00, 0x20, 0xac, 0x39, 0x48, 0x60, 0x01, 0x21,
+ 0x29, 0x60, 0x19, 0x21, 0x19, 0x2c, 0x6e, 0x67,
+ 0x3c, 0x00, 0xe0, 0xe2, 0x00, 0x00, 0x00, 0xd3,
+ 0x21, 0x1c, 0x29, 0x81, 0x09, 0x49, 0x14, 0x39,
+ 0x88, 0x73, 0x8f, 0x74, 0xc8, 0x78, 0x01, 0x28,
+ 0x08, 0xd0, 0x01, 0x21, 0x0f, 0x20, 0x05, 0xf0,
+ 0x9c, 0xf9, 0x19, 0x20, 0xfc, 0xf7, 0x15, 0xfc,
+ 0xfb, 0xf7, 0x99, 0xf8, 0x01, 0x20, 0xf8, 0xbd,
+ 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x28, 0x02, 0xd1, 0x00, 0xf0, 0x2f, 0xf8,
+ 0x80, 0xbd, 0x3c, 0x00, 0x1c, 0xe3, 0x00, 0x00,
+ 0x01, 0x21, 0x1d, 0x20, 0xf2, 0xf7, 0xc0, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x01, 0x20, 0x07, 0x49, 0x00, 0x05, 0x80, 0xb5,
+ 0x88, 0x60, 0x00, 0x22, 0x80, 0x21, 0x16, 0x20,
+ 0x05, 0xf0, 0x4c, 0xf9, 0x04, 0xf0, 0x34, 0xfd,
+ 0x02, 0x49, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x24, 0x6d, 0x01, 0x00,
+ 0x06, 0x4a, 0x80, 0xb5, 0x3c, 0x00, 0x58, 0xe3,
+ 0x00, 0x00, 0xd1, 0x6a, 0x81, 0x42, 0x07, 0xd1,
+ 0x10, 0x7f, 0x24, 0x23, 0x04, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0xc0, 0x68, 0xf2, 0xf7, 0x35, 0xf8,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46,
+ 0x01, 0x00, 0x1d, 0x48, 0x1c, 0xb5, 0x00, 0x78,
+ 0x00, 0x28, 0x2d, 0xd0, 0x1c, 0x48, 0x00, 0x68,
+ 0x00, 0x28, 0x29, 0xd0, 0x1a, 0x4a, 0x1a, 0x4b,
+ 0x04, 0x32, 0x11, 0x68, 0x1c, 0x69, 0x3c, 0x00,
+ 0x94, 0xe3, 0x00, 0x00, 0xa1, 0x42, 0x22, 0xd1,
+ 0x51, 0x68, 0x5b, 0x69, 0x99, 0x42, 0x1f, 0xd1,
+ 0x16, 0x49, 0x49, 0x68, 0x93, 0x68, 0xc9, 0x1a,
+ 0x81, 0x42, 0x19, 0xd2, 0xd0, 0x68, 0x14, 0x49,
+ 0x01, 0x30, 0xd0, 0x60, 0x09, 0x68, 0x88, 0x42,
+ 0x0c, 0xd9, 0x06, 0x22, 0xff, 0x21, 0x68, 0x46,
+ 0xf2, 0xf7, 0x2e, 0xf9, 0xf3, 0xf7, 0xac, 0xfc,
+ 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, 0x68, 0x46,
+ 0x3c, 0x00, 0xd0, 0xe3, 0x00, 0x00, 0x02, 0xf0,
+ 0xce, 0xf9, 0x01, 0x22, 0x1d, 0x20, 0x0a, 0x49,
+ 0x05, 0xf0, 0xf7, 0xf8, 0x1c, 0xbd, 0xf7, 0xf7,
+ 0x88, 0xf9, 0x04, 0x22, 0x81, 0x18, 0x08, 0x1c,
+ 0xfc, 0xf7, 0x27, 0xfb, 0xf6, 0xe7, 0x1c, 0x75,
+ 0x01, 0x00, 0x44, 0x75, 0x01, 0x00, 0x28, 0x61,
+ 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0xf0, 0x59,
+ 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x80, 0xb5,
+ 0x01, 0x68, 0x3c, 0x00, 0x0c, 0xe4, 0x00, 0x00,
+ 0x00, 0x29, 0x15, 0xd1, 0x00, 0x79, 0x02, 0x28,
+ 0x12, 0xd1, 0x08, 0x1c, 0xf7, 0xf7, 0x80, 0xf8,
+ 0x00, 0x28, 0x0d, 0xd0, 0x03, 0xf0, 0xf2, 0xfc,
+ 0x08, 0x30, 0x41, 0x8f, 0x00, 0x29, 0x07, 0xd1,
+ 0x80, 0x69, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x79,
+ 0x06, 0x28, 0x01, 0xd1, 0xfc, 0xf7, 0x18, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, 0x00, 0x20,
+ 0x88, 0x62, 0x70, 0x47, 0x3c, 0x00, 0x48, 0xe4,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5,
+ 0x05, 0x4d, 0x04, 0x1c, 0xa9, 0x1d, 0xff, 0xf7,
+ 0x14, 0xf8, 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18,
+ 0xf2, 0xf7, 0x4b, 0xf8, 0xb0, 0xbd, 0x70, 0x7c,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x15, 0x1c,
+ 0xff, 0xf7, 0x07, 0xf8, 0x06, 0x22, 0x29, 0x1c,
+ 0xa0, 0x18, 0xf2, 0xf7, 0x3e, 0xf8, 0xb0, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x0a, 0x30, 0x3c, 0x00,
+ 0x84, 0xe4, 0x00, 0x00, 0xf7, 0xf7, 0xbc, 0xf9,
+ 0x01, 0x23, 0x00, 0x28, 0x03, 0xd0, 0x05, 0x48,
+ 0x00, 0x78, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x22,
+ 0x00, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xc6, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x03, 0xf0, 0xbb, 0xfd, 0x80, 0xbd,
+ 0xb0, 0xb5, 0x05, 0x4d, 0xac, 0x79, 0x0a, 0x1c,
+ 0x3c, 0x00, 0xc0, 0xe4, 0x00, 0x00, 0x01, 0x1c,
+ 0x01, 0x23, 0x01, 0x20, 0x03, 0xf0, 0xb1, 0xfd,
+ 0xac, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x1c,
+ 0x88, 0x07, 0x02, 0xd5, 0xf6, 0xf7, 0x47, 0xfa,
+ 0x10, 0xe0, 0x60, 0x07, 0x0e, 0xd5, 0x17, 0x4f,
+ 0xa3, 0x20, 0xc0, 0x5d, 0x15, 0x4d, 0x10, 0x28,
+ 0x00, 0xd3, 0x15, 0x4d, 0x04, 0xf0, 0x59, 0xfc,
+ 0xb9, 0x6f, 0x3c, 0x00, 0xfc, 0xe4, 0x00, 0x00,
+ 0x40, 0x1a, 0x29, 0x1a, 0x01, 0x20, 0xf6, 0xf7,
+ 0xc1, 0xfa, 0xe0, 0x07, 0x11, 0x49, 0xc0, 0x0f,
+ 0x48, 0x60, 0x0c, 0xd0, 0x0d, 0x4c, 0x44, 0x3c,
+ 0x20, 0x78, 0x03, 0x28, 0x0f, 0xd1, 0x00, 0x2e,
+ 0x06, 0xd0, 0xf6, 0xf7, 0xf9, 0xf9, 0x01, 0x1c,
+ 0x01, 0x20, 0xf6, 0xf7, 0xaf, 0xfa, 0xf8, 0xbd,
+ 0x09, 0x49, 0x01, 0x20, 0xf6, 0xf7, 0xaa, 0xfa,
+ 0x01, 0x20, 0x20, 0x70, 0x3c, 0x00, 0x38, 0xe5,
+ 0x00, 0x00, 0xf7, 0xe7, 0x01, 0x21, 0x30, 0x1c,
+ 0xf6, 0xf7, 0x89, 0xfa, 0xf2, 0xe7, 0xa6, 0x0e,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0xc4, 0x09,
+ 0x00, 0x00, 0xb0, 0x57, 0x01, 0x00, 0x40, 0x42,
+ 0x0f, 0x00, 0x80, 0xb5, 0x06, 0x28, 0x04, 0xdb,
+ 0x05, 0x21, 0xff, 0x20, 0xf2, 0xf7, 0x9f, 0xfe,
+ 0x80, 0xbd, 0x03, 0x4a, 0xc0, 0x00, 0x11, 0x50,
+ 0x01, 0x21, 0x80, 0x18, 0x01, 0x71, 0x3c, 0x00,
+ 0x74, 0xe5, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0x9c, 0x5a, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00,
+ 0xb0, 0xb5, 0x08, 0x4c, 0x25, 0x1d, 0x28, 0x1c,
+ 0x21, 0x68, 0x00, 0xf0, 0xf1, 0xfe, 0x00, 0x28,
+ 0x03, 0xd1, 0x01, 0x21, 0x04, 0x48, 0xf2, 0xf7,
+ 0xcf, 0xfa, 0x28, 0x1c, 0x21, 0x68, 0x00, 0xf0,
+ 0xfb, 0xfe, 0xb0, 0xbd, 0xc0, 0x60, 0x01, 0x00,
+ 0x3c, 0x00, 0xb0, 0xe5, 0x00, 0x00, 0x2c, 0x10,
+ 0x07, 0x00, 0xb0, 0xb5, 0x10, 0x4d, 0x0c, 0x1c,
+ 0xa8, 0x68, 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0,
+ 0xf4, 0xfb, 0x28, 0x60, 0x20, 0x1c, 0x04, 0xf0,
+ 0x38, 0xfb, 0x01, 0x21, 0x03, 0x20, 0x03, 0xf0,
+ 0xc4, 0xfe, 0x04, 0xf0, 0xf0, 0xfb, 0xa8, 0x68,
+ 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, 0xe5, 0xfb,
+ 0x29, 0x68, 0x00, 0x1b, 0x40, 0x1a, 0x69, 0x68,
+ 0x40, 0x18, 0x3c, 0x00, 0xec, 0xe5, 0x00, 0x00,
+ 0x41, 0x08, 0x40, 0x18, 0x28, 0x60, 0x01, 0x20,
+ 0xa8, 0x60, 0xb0, 0xbd, 0xd0, 0x60, 0x01, 0x00,
+ 0xf8, 0xb5, 0x1f, 0x4e, 0x00, 0x24, 0xb0, 0x68,
+ 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, 0xd0, 0xfb,
+ 0x70, 0x60, 0x05, 0xf0, 0x61, 0xf8, 0x04, 0xf0,
+ 0x8f, 0xfb, 0x05, 0x1c, 0xf9, 0xf7, 0x66, 0xfe,
+ 0x31, 0x68, 0x18, 0x4a, 0x41, 0x18, 0x12, 0x68,
+ 0xe8, 0x0b, 0x00, 0x2a, 0x3c, 0x00, 0x28, 0xe6,
+ 0x00, 0x00, 0x00, 0xd1, 0xa8, 0x0a, 0x40, 0x18,
+ 0x85, 0x42, 0x1f, 0xd9, 0x14, 0x4f, 0x2d, 0x1a,
+ 0x38, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab,
+ 0x19, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x05, 0xf0,
+ 0x6e, 0xf8, 0x00, 0x28, 0x03, 0xd1, 0x02, 0x21,
+ 0x8f, 0x20, 0xf2, 0xf7, 0x28, 0xfe, 0x29, 0x1c,
+ 0x0c, 0x48, 0xf2, 0x68, 0xf8, 0xf7, 0x09, 0xfc,
+ 0x00, 0x28, 0x04, 0xd0, 0x01, 0x1c, 0x3c, 0x00,
+ 0x64, 0xe6, 0x00, 0x00, 0x28, 0x1c, 0xff, 0xf7,
+ 0xa5, 0xff, 0x01, 0x24, 0x00, 0xab, 0x18, 0x88,
+ 0xf8, 0x84, 0x05, 0xf0, 0x47, 0xf8, 0x20, 0x1c,
+ 0xf8, 0xbd, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00,
+ 0xf4, 0x74, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x89, 0x13, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20,
+ 0xc8, 0x60, 0x70, 0x47, 0xd0, 0x60, 0x01, 0x00,
+ 0x06, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0x28,
+ 0x3c, 0x00, 0xa0, 0xe6, 0x00, 0x00, 0x07, 0xd1,
+ 0x04, 0x48, 0xac, 0x38, 0x01, 0x69, 0x03, 0x48,
+ 0x00, 0xf0, 0x79, 0xfe, 0xf3, 0xf7, 0x2b, 0xfa,
+ 0x80, 0xbd, 0x98, 0x66, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0x80, 0xb5, 0x42, 0x78, 0x81, 0x68,
+ 0x00, 0x79, 0x03, 0xf0, 0xde, 0xff, 0x00, 0x28,
+ 0x01, 0xd1, 0xf5, 0xf7, 0xb6, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x1f, 0xb5, 0x04, 0xf0, 0x69, 0xfb,
+ 0xf6, 0xf7, 0x3c, 0x00, 0xdc, 0xe6, 0x00, 0x00,
+ 0x91, 0xff, 0x16, 0x4c, 0x02, 0x28, 0x03, 0xd1,
+ 0xff, 0xf7, 0xdc, 0xfd, 0x04, 0x28, 0x02, 0xd3,
+ 0x00, 0x20, 0x20, 0x70, 0x1f, 0xbd, 0xfb, 0xf7,
+ 0xf7, 0xfc, 0x00, 0x28, 0xfa, 0xd1, 0x60, 0x6a,
+ 0x00, 0x28, 0xf7, 0xd0, 0x20, 0x78, 0x80, 0x07,
+ 0xf4, 0xd4, 0x09, 0x21, 0x16, 0x20, 0x04, 0xf0,
+ 0x93, 0xff, 0x01, 0x20, 0x20, 0x70, 0x0b, 0x4c,
+ 0x09, 0x49, 0x02, 0x90, 0x3c, 0x00, 0x18, 0xe7,
+ 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, 0x04, 0xf0,
+ 0x46, 0xfb, 0x00, 0x19, 0x03, 0x90, 0x68, 0x46,
+ 0xfd, 0xf7, 0xb5, 0xfb, 0x00, 0x22, 0x16, 0x21,
+ 0x84, 0x20, 0x05, 0xf0, 0x3e, 0xf8, 0xdc, 0xe7,
+ 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0x61, 0xed,
+ 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x23, 0x48,
+ 0x70, 0xb5, 0x80, 0x78, 0x9c, 0xb0, 0x01, 0x28,
+ 0x3e, 0xd1, 0x20, 0x4c, 0x09, 0xa8, 0x3c, 0x00,
+ 0x54, 0xe7, 0x00, 0x00, 0x80, 0x3c, 0x61, 0x1c,
+ 0xfe, 0xf7, 0x92, 0xfe, 0x04, 0x20, 0x11, 0xad,
+ 0x68, 0x72, 0xa0, 0x6f, 0x19, 0xa9, 0x18, 0x90,
+ 0x7c, 0x20, 0x00, 0x5d, 0x01, 0x26, 0x08, 0x71,
+ 0x1d, 0x20, 0x00, 0x5d, 0x00, 0x28, 0x06, 0xd0,
+ 0x10, 0x96, 0x12, 0x96, 0xfc, 0xf7, 0xf6, 0xfa,
+ 0x28, 0x72, 0x20, 0x7a, 0x11, 0x90, 0xf3, 0xf7,
+ 0xcd, 0xff, 0x6a, 0x21, 0x08, 0x53, 0x40, 0x34,
+ 0x3c, 0x00, 0x90, 0xe7, 0x00, 0x00, 0x00, 0x22,
+ 0x01, 0xa9, 0x06, 0xa8, 0xf6, 0xf7, 0xcd, 0xff,
+ 0x21, 0x1c, 0x00, 0x20, 0xfb, 0xf7, 0xcb, 0xfb,
+ 0x06, 0xa9, 0xfb, 0xf7, 0xc8, 0xfb, 0x01, 0xa9,
+ 0xfb, 0xf7, 0xc5, 0xfb, 0x0a, 0x49, 0x09, 0x68,
+ 0x00, 0x29, 0x07, 0xd0, 0x33, 0x1c, 0x0a, 0x22,
+ 0x69, 0x46, 0xfb, 0xf7, 0xda, 0xfb, 0x00, 0x9a,
+ 0x07, 0x21, 0x91, 0x70, 0x0c, 0x90, 0x09, 0xa8,
+ 0xfe, 0xf7, 0x3c, 0x00, 0xcc, 0xe7, 0x00, 0x00,
+ 0x7b, 0xfe, 0x1c, 0xb0, 0x70, 0xbd, 0x00, 0x00,
+ 0x84, 0x66, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00,
+ 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xff, 0x22,
+ 0x01, 0x68, 0x12, 0x02, 0x0e, 0x1c, 0x08, 0x7b,
+ 0x49, 0x7b, 0x09, 0x02, 0x11, 0x40, 0x08, 0x43,
+ 0x05, 0x1c, 0x31, 0x1c, 0x06, 0x22, 0xa0, 0x18,
+ 0xf1, 0xf7, 0x7c, 0xfe, 0x06, 0x22, 0xb1, 0x18,
+ 0x20, 0x1c, 0xf1, 0xf7, 0x3c, 0x00, 0x08, 0xe8,
+ 0x00, 0x00, 0x77, 0xfe, 0x28, 0x0a, 0x29, 0x02,
+ 0x08, 0x43, 0x00, 0x04, 0x03, 0x21, 0x49, 0x02,
+ 0x00, 0x0c, 0x88, 0x42, 0x08, 0xd2, 0xe0, 0x68,
+ 0x01, 0x89, 0x0e, 0x39, 0x01, 0x81, 0xe0, 0x68,
+ 0x01, 0x68, 0x0e, 0x31, 0x01, 0x60, 0xf8, 0xbd,
+ 0x00, 0x26, 0x20, 0x1c, 0x10, 0x30, 0x03, 0xf0,
+ 0xe8, 0xfa, 0x21, 0x8b, 0x00, 0x29, 0x05, 0xd1,
+ 0xe1, 0x7d, 0x00, 0x29, 0x0b, 0xd0, 0x3c, 0x00,
+ 0x44, 0xe8, 0x00, 0x00, 0x80, 0x69, 0x80, 0x07,
+ 0x08, 0xd4, 0xe0, 0x68, 0x01, 0x26, 0x01, 0x89,
+ 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68,
+ 0x02, 0x31, 0x06, 0xe0, 0xe0, 0x68, 0x01, 0x89,
+ 0x06, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68,
+ 0x06, 0x31, 0x01, 0x60, 0x14, 0x49, 0x00, 0x20,
+ 0x0b, 0x1f, 0x42, 0x00, 0x9a, 0x5a, 0xaa, 0x42,
+ 0x02, 0xd1, 0x11, 0x49, 0x06, 0x31, 0x02, 0xe0,
+ 0x3c, 0x00, 0x80, 0xe8, 0x00, 0x00, 0x01, 0x30,
+ 0x02, 0x28, 0xf5, 0xd3, 0xe0, 0x68, 0x06, 0x22,
+ 0x00, 0x68, 0xf1, 0xf7, 0x34, 0xfe, 0x01, 0x2e,
+ 0xcb, 0xd1, 0x81, 0x20, 0x00, 0xab, 0x18, 0x80,
+ 0xe1, 0x7d, 0x20, 0x8b, 0x49, 0x03, 0x08, 0x43,
+ 0x31, 0x03, 0x08, 0x43, 0x00, 0x04, 0x00, 0x0c,
+ 0x01, 0x0a, 0x00, 0x02, 0x08, 0x43, 0x58, 0x80,
+ 0xe0, 0x68, 0x19, 0x88, 0x00, 0x68, 0xc1, 0x80,
+ 0x59, 0x88, 0x3c, 0x00, 0xbc, 0xe8, 0x00, 0x00,
+ 0x01, 0x81, 0xb5, 0xe7, 0x6a, 0x46, 0x01, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x89, 0x06, 0x22,
+ 0x08, 0x31, 0x01, 0x81, 0x04, 0x68, 0x04, 0x49,
+ 0x08, 0x3c, 0x04, 0x60, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x0d, 0xfe, 0xe5, 0x80, 0xb0, 0xbd, 0x00, 0x00,
+ 0x6a, 0x46, 0x01, 0x00, 0xf8, 0xb5, 0x00, 0x29,
+ 0x01, 0xd0, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x20,
+ 0xf8, 0xbd, 0x09, 0x04, 0x3c, 0x00, 0xf8, 0xe8,
+ 0x00, 0x00, 0x09, 0x0c, 0xf2, 0xf7, 0x43, 0xff,
+ 0x06, 0x1c, 0x05, 0x1c, 0x00, 0x27, 0x20, 0xe0,
+ 0x2c, 0x89, 0x29, 0x68, 0x02, 0x2c, 0x01, 0xd2,
+ 0x02, 0x20, 0x01, 0xe0, 0x48, 0x78, 0x02, 0x30,
+ 0x84, 0x42, 0x02, 0xdd, 0x24, 0x1a, 0x09, 0x18,
+ 0xf4, 0xe7, 0x84, 0x42, 0x10, 0xd0, 0x01, 0x1b,
+ 0x0a, 0x04, 0x01, 0x04, 0x09, 0x0c, 0x12, 0x0c,
+ 0x28, 0x1c, 0xf2, 0xf7, 0x9e, 0xfe, 0x3c, 0x00,
+ 0x34, 0xe9, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1,
+ 0xe8, 0x68, 0xf2, 0xf7, 0x2d, 0xfe, 0xef, 0x60,
+ 0x28, 0x89, 0x00, 0x1b, 0x28, 0x81, 0xed, 0x68,
+ 0x00, 0x2d, 0xdc, 0xd1, 0x30, 0x1c, 0xd1, 0xe7,
+ 0xf8, 0xb5, 0x85, 0x68, 0x04, 0x1c, 0x80, 0x69,
+ 0x2e, 0x1c, 0x00, 0x28, 0x0d, 0xd0, 0x71, 0x68,
+ 0xf2, 0xf7, 0xf6, 0xfd, 0xa0, 0x69, 0xf2, 0xf7,
+ 0x17, 0xfe, 0x06, 0xe0, 0x00, 0x21, 0xc1, 0x60,
+ 0x3c, 0x00, 0x70, 0xe9, 0x00, 0x00, 0xf1, 0x60,
+ 0xa0, 0x8d, 0x36, 0x68, 0x01, 0x38, 0xa0, 0x85,
+ 0xf0, 0x68, 0x00, 0x28, 0xf5, 0xd1, 0x30, 0x68,
+ 0xa0, 0x60, 0xa0, 0x8d, 0x01, 0x38, 0x00, 0x04,
+ 0x00, 0x0c, 0xa0, 0x85, 0x02, 0xd0, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x39, 0xf8, 0x2a, 0x4f, 0x2a, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x06, 0x21,
+ 0x68, 0x68, 0xfa, 0xf7, 0x7c, 0xfd, 0x68, 0x68,
+ 0x00, 0x68, 0x3c, 0x00, 0xac, 0xe9, 0x00, 0x00,
+ 0x81, 0x78, 0x00, 0x29, 0x2b, 0xd1, 0xc1, 0x78,
+ 0x00, 0x29, 0x30, 0xd1, 0x21, 0x8e, 0x01, 0x39,
+ 0x21, 0x86, 0xfb, 0xf7, 0x15, 0xf8, 0xa1, 0x6a,
+ 0x08, 0x1a, 0xa0, 0x62, 0xe1, 0x69, 0x88, 0x42,
+ 0x03, 0xd9, 0x04, 0x21, 0x02, 0x20, 0xf2, 0xf7,
+ 0x67, 0xfc, 0xb8, 0x68, 0x00, 0x28, 0x1e, 0xd0,
+ 0x1a, 0x49, 0x20, 0x8e, 0x49, 0x68, 0x0c, 0x22,
+ 0x52, 0x1a, 0x90, 0x42, 0x3c, 0x00, 0xe8, 0xe9,
+ 0x00, 0x00, 0x08, 0xd3, 0x19, 0x23, 0x9b, 0x01,
+ 0xaf, 0x22, 0x92, 0x01, 0x59, 0x43, 0xa0, 0x6a,
+ 0x51, 0x1a, 0x88, 0x42, 0x0e, 0xd2, 0x00, 0x21,
+ 0x0c, 0x20, 0x03, 0xf0, 0xac, 0xfc, 0x00, 0x20,
+ 0xb8, 0x60, 0x07, 0xe0, 0x01, 0x29, 0x05, 0xd1,
+ 0xc0, 0x78, 0x17, 0x28, 0x02, 0xd1, 0xa0, 0x8e,
+ 0x01, 0x38, 0xa0, 0x86, 0x2a, 0x1d, 0x06, 0xca,
+ 0xe0, 0x68, 0x63, 0x69, 0xf1, 0xf7, 0x3c, 0x00,
+ 0x24, 0xea, 0x00, 0x00, 0xdc, 0xfc, 0xb5, 0x42,
+ 0x01, 0xd0, 0x2d, 0x68, 0xb4, 0xe7, 0xa0, 0x8d,
+ 0x00, 0x28, 0x03, 0xd1, 0x05, 0x48, 0xb9, 0x69,
+ 0x00, 0xf0, 0x9e, 0xfc, 0xf8, 0xbd, 0x00, 0x00,
+ 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, 0x01, 0x00,
+ 0x18, 0x57, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00,
+ 0x89, 0x07, 0x07, 0x4b, 0xca, 0x0f, 0x80, 0xb5,
+ 0x19, 0x7c, 0x00, 0x29, 0x06, 0xd0, 0x81, 0x43,
+ 0x3c, 0x00, 0x60, 0xea, 0x00, 0x00, 0x19, 0x74,
+ 0x03, 0xd1, 0x07, 0x21, 0x15, 0x20, 0x04, 0xf0,
+ 0xa2, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20,
+ 0xff, 0xf7, 0xe9, 0xff, 0x80, 0xbd, 0x80, 0xb5,
+ 0x01, 0x1c, 0x02, 0x20, 0xff, 0xf7, 0xe3, 0xff,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x1b, 0x4c, 0x60, 0x68,
+ 0xfc, 0xf7, 0x2f, 0xff, 0x20, 0x68, 0x00, 0x25,
+ 0x40, 0x68, 0x3c, 0x00, 0x9c, 0xea, 0x00, 0x00,
+ 0x00, 0x28, 0x03, 0xd0, 0xfd, 0xf7, 0x18, 0xfc,
+ 0x20, 0x68, 0x45, 0x60, 0x60, 0x68, 0xfc, 0xf7,
+ 0xc5, 0xfe, 0x14, 0x48, 0x61, 0x68, 0x00, 0xf0,
+ 0x61, 0xfc, 0xa0, 0x7a, 0x01, 0x28, 0x05, 0xd0,
+ 0x02, 0x28, 0x03, 0xd0, 0x20, 0x68, 0x00, 0x68,
+ 0x00, 0xf0, 0xde, 0xf8, 0x01, 0x21, 0x1f, 0x20,
+ 0x04, 0xf0, 0xb2, 0xfd, 0x00, 0x21, 0x1f, 0x20,
+ 0x04, 0xf0, 0xae, 0xfd, 0x3c, 0x00, 0xd8, 0xea,
+ 0x00, 0x00, 0x02, 0x21, 0x1f, 0x20, 0x04, 0xf0,
+ 0xaa, 0xfd, 0xa5, 0x72, 0x21, 0x68, 0x2c, 0x20,
+ 0x40, 0x5c, 0x89, 0x68, 0xf1, 0xf7, 0x76, 0xfc,
+ 0x60, 0x68, 0xfc, 0xf7, 0xe4, 0xfe, 0x20, 0x68,
+ 0x05, 0x62, 0xb0, 0xbd, 0x00, 0x00, 0x14, 0x7a,
+ 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x04, 0x49,
+ 0x0a, 0x68, 0xc8, 0x68, 0x92, 0x6a, 0x00, 0x2a,
+ 0x01, 0xd0, 0x09, 0x69, 0x08, 0x18, 0x3c, 0x00,
+ 0x14, 0xeb, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x13, 0x4c,
+ 0x05, 0x1c, 0xa0, 0x7a, 0x01, 0x38, 0x02, 0x28,
+ 0x19, 0xd8, 0x01, 0x21, 0x1f, 0x20, 0x04, 0xf0,
+ 0x81, 0xfd, 0x20, 0x68, 0xfc, 0x23, 0x01, 0x1c,
+ 0x20, 0x30, 0x02, 0x7b, 0x1a, 0x40, 0x02, 0x73,
+ 0x00, 0x2d, 0x0f, 0xd0, 0x01, 0x23, 0x1a, 0x43,
+ 0x02, 0x73, 0xa0, 0x7a, 0x03, 0x28, 0x07, 0xd1,
+ 0x3c, 0x00, 0x50, 0xeb, 0x00, 0x00, 0x01, 0x20,
+ 0x01, 0xf0, 0xe7, 0xfd, 0x00, 0x28, 0x01, 0xd1,
+ 0xff, 0xf7, 0x97, 0xff, 0xb0, 0xbd, 0x4b, 0x62,
+ 0xb0, 0xbd, 0x02, 0x21, 0x11, 0x43, 0x01, 0x73,
+ 0xf6, 0xe7, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x0a, 0x30, 0xf6, 0xf7, 0x43, 0xfe,
+ 0x00, 0x28, 0x0c, 0xd0, 0x22, 0x88, 0x0a, 0x49,
+ 0x0b, 0x7a, 0x90, 0x04, 0xc0, 0x0f, 0x00, 0x2b,
+ 0x06, 0xd1, 0x3c, 0x00, 0x8c, 0xeb, 0x00, 0x00,
+ 0x12, 0x06, 0x92, 0x0e, 0x20, 0x2a, 0x00, 0xd1,
+ 0x01, 0x20, 0xc8, 0x60, 0x10, 0xbd, 0x00, 0x28,
+ 0xfc, 0xd1, 0x00, 0x22, 0x24, 0x21, 0x80, 0x20,
+ 0x04, 0xf0, 0x04, 0xfe, 0x10, 0xbd, 0x00, 0x00,
+ 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x1c,
+ 0x1f, 0x21, 0x80, 0x20, 0x04, 0xf0, 0xfa, 0xfd,
+ 0x80, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x1d, 0x4e,
+ 0x04, 0x1c, 0x30, 0x68, 0x3c, 0x00, 0xc8, 0xeb,
+ 0x00, 0x00, 0x1d, 0x1c, 0x47, 0x68, 0x20, 0x1c,
+ 0xf1, 0xf7, 0x0a, 0xfc, 0xfb, 0xf7, 0x87, 0xfa,
+ 0x00, 0x28, 0x04, 0xd0, 0x28, 0x1c, 0xf2, 0xf7,
+ 0x2a, 0xfb, 0x00, 0x28, 0x28, 0xd1, 0x20, 0x88,
+ 0x40, 0x05, 0x25, 0xd4, 0x30, 0x68, 0x00, 0x68,
+ 0xfe, 0xf7, 0x59, 0xf9, 0x00, 0x28, 0x03, 0xd1,
+ 0xfd, 0xf7, 0x89, 0xfa, 0xf1, 0xf7, 0xed, 0xfb,
+ 0x30, 0x68, 0x00, 0x25, 0x40, 0x68, 0x3c, 0x00,
+ 0x04, 0xec, 0x00, 0x00, 0x00, 0x28, 0x03, 0xd0,
+ 0xfd, 0xf7, 0x64, 0xfb, 0x30, 0x68, 0x45, 0x60,
+ 0x20, 0x88, 0x00, 0x09, 0x00, 0x07, 0x03, 0xd1,
+ 0x04, 0xf0, 0xc8, 0xf8, 0x61, 0x88, 0x45, 0x18,
+ 0x30, 0x68, 0x45, 0x61, 0x81, 0x6a, 0x01, 0x31,
+ 0x81, 0x62, 0x20, 0x88, 0x80, 0x04, 0xc1, 0x0f,
+ 0x02, 0x48, 0xf8, 0xf7, 0xcd, 0xff, 0xf8, 0xbd,
+ 0x14, 0x7a, 0x01, 0x00, 0xb1, 0xeb, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0xec, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0e, 0x4c, 0x05, 0x1c, 0x60, 0x68, 0xfc, 0xf7,
+ 0xf6, 0xfd, 0x0c, 0x48, 0x61, 0x68, 0x00, 0xf0,
+ 0x92, 0xfb, 0x00, 0x21, 0x24, 0x20, 0x04, 0xf0,
+ 0xec, 0xfc, 0x00, 0x22, 0xd2, 0x43, 0x80, 0x21,
+ 0x24, 0x20, 0x04, 0xf0, 0xb8, 0xfc, 0x00, 0x20,
+ 0xe0, 0x60, 0x20, 0x72, 0x20, 0x68, 0x01, 0x68,
+ 0x28, 0x06, 0x00, 0x0e, 0xf1, 0xf7, 0xb0, 0xfb,
+ 0xb0, 0xbd, 0x3c, 0x00, 0x7c, 0xec, 0x00, 0x00,
+ 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7,
+ 0x85, 0xfc, 0x20, 0x1c, 0xf2, 0xf7, 0xb0, 0xfd,
+ 0x10, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x1c, 0x4e,
+ 0x05, 0x1c, 0xb0, 0x7a, 0x2c, 0x1c, 0x40, 0x34,
+ 0x02, 0x28, 0x26, 0xd1, 0xa0, 0x8b, 0x31, 0x89,
+ 0x88, 0x42, 0x22, 0xd1, 0x30, 0x68, 0x41, 0x6a,
+ 0x00, 0x29, 0x08, 0xd0, 0x3c, 0x00, 0xb8, 0xec,
+ 0x00, 0x00, 0x20, 0x30, 0x00, 0x7b, 0xc0, 0x07,
+ 0x04, 0xd5, 0x01, 0x20, 0x01, 0xf0, 0x2f, 0xfd,
+ 0x00, 0x28, 0x18, 0xd1, 0x60, 0x78, 0x00, 0x28,
+ 0x09, 0xd1, 0x30, 0x68, 0x02, 0x23, 0x20, 0x30,
+ 0x02, 0x7b, 0x0d, 0x49, 0x52, 0x08, 0x52, 0x00,
+ 0x1a, 0x43, 0x02, 0x73, 0x01, 0xe0, 0xff, 0x21,
+ 0xf5, 0x31, 0x01, 0x22, 0x1f, 0x20, 0x04, 0xf0,
+ 0x6e, 0xfc, 0x03, 0x20, 0xb0, 0x72, 0x3c, 0x00,
+ 0xf4, 0xec, 0x00, 0x00, 0x02, 0xe0, 0x28, 0x1c,
+ 0xff, 0xf7, 0xc4, 0xff, 0x60, 0x78, 0x00, 0x28,
+ 0x03, 0xd1, 0x29, 0x1c, 0x01, 0x20, 0x03, 0xf0,
+ 0x29, 0xfb, 0x70, 0xbd, 0x14, 0x7a, 0x01, 0x00,
+ 0x50, 0xc3, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x60, 0x34, 0xe0, 0x79, 0x0e, 0x4d, 0x00, 0x28,
+ 0x0a, 0xd1, 0x02, 0x20, 0xa8, 0x72, 0x28, 0x68,
+ 0x40, 0x68, 0x00, 0x28, 0x04, 0xd1, 0x0b, 0x48,
+ 0x3c, 0x00, 0x30, 0xed, 0x00, 0x00, 0xfd, 0xf7,
+ 0xd0, 0xfa, 0x29, 0x68, 0x48, 0x60, 0x04, 0xf0,
+ 0x38, 0xf8, 0x29, 0x68, 0xc8, 0x61, 0xff, 0xf7,
+ 0xe0, 0xfe, 0x29, 0x68, 0x09, 0x69, 0x08, 0x1a,
+ 0x03, 0xf0, 0x6f, 0xff, 0x00, 0x28, 0x01, 0xd0,
+ 0xe0, 0x79, 0xa0, 0x71, 0xb0, 0xbd, 0x14, 0x7a,
+ 0x01, 0x00, 0xc1, 0xeb, 0x00, 0x00, 0xf8, 0xb5,
+ 0x04, 0x1c, 0x00, 0x26, 0x04, 0xf0, 0x21, 0xf8,
+ 0x05, 0x1c, 0x3c, 0x00, 0x6c, 0xed, 0x00, 0x00,
+ 0x22, 0x48, 0x00, 0x27, 0x07, 0x70, 0xa1, 0x07,
+ 0x04, 0xd0, 0xe1, 0x07, 0xc9, 0x0f, 0x01, 0x62,
+ 0xc5, 0x61, 0x01, 0x26, 0x41, 0x6b, 0x00, 0x29,
+ 0x34, 0xd1, 0x00, 0x2e, 0x32, 0xd0, 0x06, 0x1c,
+ 0xf9, 0xf7, 0x44, 0xff, 0x31, 0x6b, 0x1a, 0x4b,
+ 0x41, 0x1a, 0xa2, 0x07, 0x12, 0xd5, 0xda, 0x68,
+ 0x00, 0x2a, 0x08, 0xdd, 0x91, 0x42, 0x1a, 0x68,
+ 0x02, 0xda, 0x14, 0x09, 0x3c, 0x00, 0xa8, 0xed,
+ 0x00, 0x00, 0xa2, 0x18, 0x06, 0xe0, 0x14, 0x09,
+ 0x12, 0x1b, 0x03, 0xe0, 0x0a, 0x43, 0x02, 0xd1,
+ 0x1a, 0x68, 0x52, 0x00, 0x1a, 0x60, 0xb7, 0x63,
+ 0x0a, 0xe0, 0xb2, 0x6b, 0x01, 0x32, 0xb2, 0x63,
+ 0x02, 0x2a, 0x1a, 0x68, 0x01, 0xdd, 0x94, 0x08,
+ 0x00, 0xe0, 0x14, 0x09, 0x12, 0x1b, 0x1a, 0x60,
+ 0xd9, 0x60, 0x30, 0x63, 0xf5, 0x62, 0x18, 0x68,
+ 0x08, 0x49, 0x88, 0x42, 0x01, 0xd9, 0x3c, 0x00,
+ 0xe4, 0xed, 0x00, 0x00, 0x19, 0x60, 0x03, 0xe0,
+ 0x64, 0x28, 0x01, 0xd2, 0x64, 0x20, 0x18, 0x60,
+ 0xf5, 0xf7, 0xfc, 0xfd, 0xf8, 0xbd, 0x00, 0x00,
+ 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, 0x01, 0x00,
+ 0x20, 0xa1, 0x07, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0x00, 0x20, 0x50, 0x4d, 0x00, 0x21, 0x68, 0x61,
+ 0x20, 0x69, 0xfb, 0xf7, 0xb3, 0xfc, 0x07, 0x1c,
+ 0x20, 0x69, 0x03, 0x21, 0xfb, 0xf7, 0xae, 0xfc,
+ 0x3c, 0x00, 0x20, 0xee, 0x00, 0x00, 0x00, 0x28,
+ 0x03, 0xd0, 0x80, 0x78, 0x29, 0x78, 0x88, 0x42,
+ 0x63, 0xd1, 0x47, 0x4d, 0x20, 0x1c, 0x14, 0x30,
+ 0x39, 0x1c, 0x06, 0x1c, 0x2a, 0x78, 0x02, 0xf0,
+ 0x5a, 0xfa, 0x00, 0x28, 0x59, 0xd1, 0xe0, 0x68,
+ 0x05, 0x68, 0x41, 0x48, 0x01, 0x95, 0x58, 0x30,
+ 0x02, 0x90, 0xfb, 0xf7, 0x6a, 0xff, 0x3e, 0x4d,
+ 0x19, 0x35, 0x00, 0x28, 0x0b, 0xd0, 0x28, 0x1c,
+ 0xfb, 0xf7, 0x3c, 0x00, 0x5c, 0xee, 0x00, 0x00,
+ 0x55, 0xff, 0x00, 0x28, 0x1e, 0xd1, 0x31, 0x1c,
+ 0x28, 0x1c, 0xfb, 0xf7, 0x65, 0xff, 0x00, 0x28,
+ 0x42, 0xd0, 0x17, 0xe0, 0x28, 0x1c, 0xfb, 0xf7,
+ 0x49, 0xff, 0x00, 0x28, 0x06, 0xd0, 0x39, 0x1c,
+ 0x02, 0x98, 0xfb, 0xf7, 0x63, 0xff, 0x00, 0x28,
+ 0x36, 0xd0, 0x0b, 0xe0, 0x39, 0x1c, 0x02, 0x98,
+ 0xfb, 0xf7, 0x5c, 0xff, 0x00, 0x28, 0x2f, 0xd0,
+ 0x31, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x98, 0xee,
+ 0x00, 0x00, 0xfb, 0xf7, 0x4c, 0xff, 0x00, 0x28,
+ 0x29, 0xd0, 0x30, 0x1c, 0xf6, 0xf7, 0xad, 0xfc,
+ 0x29, 0x4a, 0x18, 0x32, 0x11, 0x7c, 0x00, 0x29,
+ 0x04, 0xd0, 0x51, 0x6a, 0x00, 0x29, 0x01, 0xd0,
+ 0x00, 0x28, 0x1c, 0xd1, 0x90, 0x6a, 0x00, 0x28,
+ 0x3b, 0xd0, 0x13, 0x78, 0x01, 0x9d, 0x01, 0x21,
+ 0x6d, 0x89, 0x01, 0x20, 0x2b, 0x40, 0x9b, 0x07,
+ 0x11, 0xd0, 0xa3, 0x6b, 0x1e, 0x4e, 0x3c, 0x00,
+ 0xd4, 0xee, 0x00, 0x00, 0x1d, 0x1c, 0x7f, 0x35,
+ 0x98, 0x36, 0x00, 0x2d, 0x14, 0xd0, 0x55, 0x8a,
+ 0x00, 0x2d, 0x08, 0xd1, 0x55, 0x69, 0xab, 0x42,
+ 0x0f, 0xda, 0x00, 0x20, 0x17, 0x4d, 0x01, 0x23,
+ 0x6b, 0x61, 0x0a, 0xe0, 0x29, 0xe0, 0xf5, 0x78,
+ 0x02, 0x2d, 0x06, 0xd1, 0x14, 0x4f, 0x55, 0x69,
+ 0x3f, 0x68, 0xed, 0x19, 0xab, 0x42, 0x00, 0xda,
+ 0x00, 0x20, 0x23, 0x6c, 0x1d, 0x1c, 0x7f, 0x35,
+ 0x3c, 0x00, 0x10, 0xef, 0x00, 0x00, 0x10, 0xd0,
+ 0x55, 0x8a, 0x00, 0x2d, 0x03, 0xd1, 0x95, 0x69,
+ 0xab, 0x42, 0x0a, 0xd2, 0x08, 0xe0, 0xf5, 0x78,
+ 0x02, 0x2d, 0x06, 0xd1, 0x0b, 0x4e, 0x95, 0x69,
+ 0x36, 0x68, 0xad, 0x19, 0xab, 0x42, 0x00, 0xd2,
+ 0x00, 0x21, 0x08, 0x43, 0x08, 0xd0, 0x10, 0x6a,
+ 0x00, 0x28, 0x01, 0xd0, 0xf1, 0xf7, 0x4b, 0xfa,
+ 0x00, 0x21, 0x20, 0x1c, 0x01, 0xf0, 0xb9, 0xf9,
+ 0xfe, 0xbd, 0x3c, 0x00, 0x4c, 0xef, 0x00, 0x00,
+ 0xec, 0x65, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00,
+ 0xcc, 0x67, 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x6a,
+ 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, 0x34, 0xfb,
+ 0xe1, 0x69, 0xf2, 0xf7, 0x57, 0xfa, 0x20, 0x1c,
+ 0x40, 0x30, 0xc1, 0x8b, 0x04, 0x31, 0xc1, 0x83,
+ 0x2b, 0x69, 0x10, 0x49, 0x98, 0x79, 0x06, 0x28,
+ 0x0a, 0xd1, 0x98, 0x88, 0x01, 0x91, 0x02, 0x94,
+ 0x00, 0x90, 0x60, 0x69, 0x3c, 0x00, 0x88, 0xef,
+ 0x00, 0x00, 0x1b, 0x68, 0x01, 0x68, 0xe0, 0x68,
+ 0x03, 0x22, 0xc0, 0x68, 0x0a, 0xe0, 0x02, 0x28,
+ 0x0b, 0xd1, 0x10, 0x20, 0x00, 0x90, 0x01, 0x91,
+ 0x02, 0x94, 0xe0, 0x68, 0xa3, 0x69, 0xc0, 0x68,
+ 0x00, 0x22, 0x00, 0x21, 0xf7, 0xf7, 0x0f, 0xfb,
+ 0x3e, 0xbd, 0xf2, 0xf7, 0xa6, 0xf9, 0xfb, 0xe7,
+ 0x00, 0x00, 0xbd, 0xef, 0x00, 0x00, 0x80, 0xb5,
+ 0xd1, 0x68, 0x50, 0x69, 0xc9, 0x68, 0x3c, 0x00,
+ 0xc4, 0xef, 0x00, 0x00, 0xc1, 0x60, 0xd1, 0x68,
+ 0xc8, 0x60, 0x11, 0x1c, 0x40, 0x31, 0xcb, 0x8b,
+ 0x00, 0x89, 0x18, 0x18, 0xc8, 0x83, 0x10, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, 0xbc, 0xff,
+ 0x80, 0xbd, 0x03, 0x48, 0xfb, 0xf7, 0xcc, 0xf8,
+ 0x00, 0x6a, 0xfe, 0xf7, 0xf5, 0xf9, 0x80, 0xbd,
+ 0xa0, 0x6a, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x0a, 0x24, 0x30, 0x07, 0x01, 0x09, 0xa0, 0x07,
+ 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x43,
+ 0x0f, 0x1c, 0x0a, 0x4d, 0x2f, 0x60, 0x04, 0xf0,
+ 0xfa, 0xfe, 0xad, 0x68, 0x28, 0x01, 0x00, 0x0f,
+ 0xb0, 0x42, 0x05, 0xd0, 0x01, 0x3c, 0xf4, 0xd2,
+ 0x01, 0x21, 0x9b, 0x20, 0xf2, 0xf7, 0x41, 0xf9,
+ 0x28, 0x02, 0x00, 0x0a, 0x08, 0x2e, 0x01, 0xd1,
+ 0x31, 0x05, 0x08, 0x43, 0xf8, 0xbd, 0x60, 0x00,
+ 0x07, 0x00, 0x01, 0x22, 0xd2, 0x05, 0x80, 0xb5,
+ 0x00, 0x21, 0x3c, 0x00, 0x3c, 0xf0, 0x00, 0x00,
+ 0x04, 0x20, 0x04, 0xf0, 0xdd, 0xfc, 0x0f, 0x20,
+ 0xff, 0xf7, 0xd6, 0xff, 0x0f, 0x21, 0x09, 0x04,
+ 0x08, 0x40, 0x00, 0x0c, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x05, 0x48, 0xfd, 0xf7, 0x4a, 0xf9,
+ 0x04, 0x48, 0xfd, 0xf7, 0x7b, 0xf8, 0x04, 0x48,
+ 0xfd, 0xf7, 0x6c, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0x89, 0x34, 0x01, 0x00, 0xed, 0x24, 0x00, 0x00,
+ 0x11, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf0,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0x48, 0xf3, 0xf7,
+ 0x2a, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xd1, 0x24,
+ 0x00, 0x00, 0x80, 0xb5, 0xf2, 0xf7, 0x53, 0xf9,
+ 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20,
+ 0x01, 0xf0, 0x51, 0xfe, 0x03, 0x20, 0x02, 0xf0,
+ 0x46, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48,
+ 0x80, 0xb5, 0xc1, 0x69, 0x00, 0x29, 0x06, 0xd1,
+ 0x01, 0x6a, 0x00, 0x29, 0x03, 0xd1, 0x3c, 0x00,
+ 0xb4, 0xf0, 0x00, 0x00, 0x81, 0x6b, 0x03, 0x48,
+ 0x00, 0xf0, 0x5e, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x4c, 0x20, 0x6a, 0xfc, 0xf7,
+ 0xb3, 0xfb, 0x03, 0x48, 0x21, 0x6a, 0x00, 0xf0,
+ 0x4f, 0xf9, 0x10, 0xbd, 0x1c, 0x75, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x4c,
+ 0x20, 0x7c, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x21,
+ 0x3c, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xfd, 0xf7,
+ 0x86, 0xf9, 0x00, 0x25, 0x25, 0x70, 0xa0, 0x68,
+ 0x01, 0x28, 0x03, 0xd1, 0x00, 0x20, 0xa5, 0x60,
+ 0x01, 0xf0, 0x8f, 0xf8, 0xa0, 0x78, 0x01, 0x28,
+ 0x05, 0xd1, 0x03, 0x48, 0x98, 0x38, 0x00, 0x69,
+ 0xfc, 0xf7, 0xef, 0xfb, 0xa5, 0x70, 0xb0, 0xbd,
+ 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x21, 0x01, 0x20, 0x01, 0xf0, 0x09, 0xfe,
+ 0x80, 0xbd, 0x3c, 0x00, 0x2c, 0xf1, 0x00, 0x00,
+ 0x38, 0xb5, 0x69, 0x46, 0x00, 0x25, 0xf8, 0xf7,
+ 0xb7, 0xfe, 0x04, 0x1c, 0x01, 0xd1, 0x01, 0x20,
+ 0x38, 0xbd, 0xa0, 0x68, 0x00, 0x28, 0x04, 0xd0,
+ 0x00, 0x99, 0xa1, 0x31, 0x08, 0x20, 0x04, 0xf0,
+ 0x73, 0xfa, 0x1c, 0x21, 0x20, 0x1c, 0xf1, 0xf7,
+ 0xa3, 0xf9, 0x28, 0x1c, 0xf0, 0xe7, 0x00, 0x00,
+ 0xfe, 0xb5, 0x07, 0x1c, 0x4c, 0x23, 0x39, 0x49,
+ 0x58, 0x43, 0x44, 0x18, 0x3c, 0x00, 0x68, 0xf1,
+ 0x00, 0x00, 0x25, 0x1c, 0x40, 0x35, 0x28, 0x7a,
+ 0x37, 0x49, 0x48, 0x76, 0x21, 0x1c, 0x30, 0x31,
+ 0x02, 0x91, 0x0c, 0x23, 0xc8, 0x56, 0x42, 0x1c,
+ 0x0a, 0x73, 0x49, 0x7b, 0x88, 0x42, 0x46, 0xda,
+ 0x32, 0x48, 0x00, 0x78, 0x80, 0x07, 0x3e, 0xd5,
+ 0x00, 0x20, 0x01, 0x90, 0xf6, 0xf7, 0xaf, 0xfa,
+ 0x00, 0x28, 0x2e, 0xd0, 0xac, 0x21, 0x09, 0x58,
+ 0x00, 0x29, 0x01, 0xd0, 0xe4, 0x30, 0x3c, 0x00,
+ 0xa4, 0xf1, 0x00, 0x00, 0x00, 0xe0, 0xcc, 0x30,
+ 0x06, 0x1c, 0x40, 0x68, 0x00, 0x28, 0x25, 0xd0,
+ 0x02, 0x99, 0x08, 0x7b, 0x01, 0x28, 0x11, 0xd1,
+ 0x20, 0x1c, 0x2e, 0x30, 0x29, 0x78, 0xf6, 0xf7,
+ 0xed, 0xf9, 0x71, 0x68, 0x03, 0xe0, 0x72, 0x18,
+ 0x12, 0x7a, 0x82, 0x42, 0x03, 0xd9, 0xff, 0x31,
+ 0x09, 0x06, 0x09, 0x0e, 0xf7, 0xd1, 0xa9, 0x70,
+ 0x01, 0x20, 0x01, 0x90, 0x23, 0x1c, 0x3e, 0x33,
+ 0x3c, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x1a, 0x1d,
+ 0x30, 0x1c, 0x00, 0x97, 0x01, 0x99, 0xf8, 0xf7,
+ 0x58, 0xfa, 0x00, 0x28, 0x11, 0xd0, 0xa8, 0x78,
+ 0x80, 0x19, 0x00, 0x7a, 0x00, 0xe0, 0x00, 0x20,
+ 0x68, 0x70, 0x68, 0x78, 0x01, 0x21, 0xfb, 0xf7,
+ 0xe0, 0xfd, 0x60, 0x60, 0x38, 0x1c, 0x01, 0xf0,
+ 0x14, 0xfe, 0x38, 0x1c, 0x01, 0xf0, 0xa5, 0xfb,
+ 0xfe, 0xbd, 0x02, 0x99, 0x08, 0x7b, 0xff, 0x30,
+ 0x48, 0x73, 0x3c, 0x00, 0x1c, 0xf2, 0x00, 0x00,
+ 0x38, 0x1c, 0xfc, 0xf7, 0x19, 0xfc, 0x03, 0xf0,
+ 0xc3, 0xfd, 0x06, 0x1c, 0xfb, 0xf7, 0x8e, 0xfe,
+ 0x41, 0x00, 0x76, 0x18, 0x68, 0x78, 0x61, 0x68,
+ 0xfb, 0xf7, 0x6a, 0xfe, 0x31, 0x18, 0x20, 0x8d,
+ 0x3b, 0x1c, 0x05, 0x4a, 0x03, 0xf0, 0x12, 0xfe,
+ 0xe5, 0xe7, 0x00, 0x00, 0x58, 0xe3, 0x01, 0x00,
+ 0x30, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00,
+ 0xd5, 0x4e, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf2,
+ 0x00, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x80, 0xb5,
+ 0x02, 0x79, 0x20, 0x30, 0x03, 0x49, 0x00, 0xf0,
+ 0x30, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x03, 0x1c,
+ 0x04, 0x48, 0x80, 0xb5, 0xc2, 0x78, 0x38, 0x30,
+ 0x03, 0x49, 0x00, 0xf0, 0x22, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, 0xc8, 0x67,
+ 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x3c, 0x00,
+ 0x94, 0xf2, 0x00, 0x00, 0x80, 0xb5, 0x82, 0x79,
+ 0x50, 0x30, 0x03, 0x49, 0x00, 0xf0, 0x14, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00,
+ 0xcc, 0x67, 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48,
+ 0x80, 0xb5, 0x42, 0x79, 0x68, 0x30, 0x03, 0x49,
+ 0x00, 0xf0, 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0xac, 0x7c, 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x24, 0x84, 0x80, 0x0b, 0x60,
+ 0x3c, 0x00, 0xd0, 0xf2, 0x00, 0x00, 0x19, 0x1c,
+ 0x51, 0x43, 0x01, 0x60, 0x19, 0x06, 0x09, 0x16,
+ 0x10, 0x22, 0x06, 0x30, 0xf1, 0xf7, 0x9f, 0xf9,
+ 0x10, 0xbd, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24,
+ 0xac, 0x60, 0xec, 0x60, 0xec, 0x61, 0x2c, 0x62,
+ 0x02, 0xf0, 0xf1, 0xfc, 0x00, 0xf0, 0x0d, 0xf8,
+ 0xec, 0x62, 0x2c, 0x70, 0xb0, 0xbd, 0x44, 0x7d,
+ 0x01, 0x00, 0x80, 0xb5, 0x80, 0x21, 0x01, 0x48,
+ 0xf1, 0xf7, 0x3c, 0x00, 0x0c, 0xf3, 0x00, 0x00,
+ 0xc7, 0xf8, 0x80, 0xbd, 0x04, 0x66, 0x01, 0x00,
+ 0xf8, 0xb5, 0x07, 0x4f, 0x00, 0x24, 0x00, 0x26,
+ 0x18, 0x20, 0x60, 0x43, 0xc5, 0x19, 0xee, 0x60,
+ 0x03, 0xf0, 0x42, 0xfd, 0x10, 0x35, 0x01, 0x34,
+ 0x02, 0x2c, 0x41, 0xc5, 0xf4, 0xdb, 0xf8, 0xbd,
+ 0xb8, 0x7d, 0x01, 0x00, 0x00, 0x23, 0x03, 0x60,
+ 0x04, 0x4b, 0x00, 0x29, 0x00, 0xd1, 0x19, 0x1c,
+ 0x41, 0x60, 0x00, 0x2a, 0x3c, 0x00, 0x48, 0xf3,
+ 0x00, 0x00, 0x00, 0xd1, 0x1a, 0x1c, 0x82, 0x60,
+ 0x70, 0x47, 0xbd, 0x75, 0x00, 0x00, 0x10, 0xb5,
+ 0x07, 0x4c, 0x20, 0x68, 0x01, 0x30, 0x20, 0x60,
+ 0x20, 0x28, 0x03, 0xd9, 0x58, 0x21, 0x58, 0x20,
+ 0xf1, 0xf7, 0x9d, 0xff, 0x21, 0x68, 0x01, 0x20,
+ 0x01, 0x39, 0x88, 0x40, 0x10, 0xbd, 0x60, 0x5b,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c,
+ 0x21, 0x68, 0x00, 0x20, 0x00, 0x29, 0x3c, 0x00,
+ 0x84, 0xf3, 0x00, 0x00, 0x0a, 0xd0, 0xa9, 0x43,
+ 0x21, 0x60, 0x07, 0xd1, 0xa0, 0x68, 0xf1, 0xf7,
+ 0x23, 0xf8, 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68,
+ 0x29, 0x43, 0x21, 0x60, 0xb0, 0xbd, 0x00, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x21, 0x68,
+ 0x00, 0x20, 0x29, 0x43, 0x21, 0x60, 0xa9, 0x42,
+ 0x07, 0xd1, 0x60, 0x68, 0xf1, 0xf7, 0x10, 0xf8,
+ 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, 0xa9, 0x43,
+ 0x3c, 0x00, 0xc0, 0xf3, 0x00, 0x00, 0x21, 0x60,
+ 0xb0, 0xbd, 0x1a, 0x4b, 0xb0, 0xb5, 0x9a, 0x6a,
+ 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x2a, 0x07, 0xdb,
+ 0xb8, 0x24, 0x24, 0x58, 0x01, 0x3c, 0xa4, 0x1a,
+ 0x00, 0x19, 0xb0, 0x30, 0x00, 0x7b, 0x02, 0xe0,
+ 0x0e, 0x20, 0x00, 0xe0, 0x0d, 0x20, 0x5d, 0x6a,
+ 0x12, 0x4c, 0x00, 0x2d, 0x01, 0xd0, 0x20, 0x78,
+ 0x00, 0xe0, 0x20, 0x5c, 0xff, 0x24, 0xa8, 0x34,
+ 0xc4, 0x40, 0x3c, 0x00, 0xfc, 0xf3, 0x00, 0x00,
+ 0x9c, 0x60, 0xf5, 0x24, 0xc4, 0x40, 0x9c, 0x61,
+ 0xfd, 0x24, 0xc4, 0x40, 0xdc, 0x61, 0xff, 0x24,
+ 0x29, 0x34, 0xc4, 0x40, 0x5c, 0x61, 0xff, 0x24,
+ 0x53, 0x34, 0xc4, 0x40, 0x00, 0x20, 0x0c, 0x33,
+ 0x11, 0xc3, 0x00, 0x29, 0x05, 0xd0, 0x00, 0x2a,
+ 0x03, 0xdc, 0x02, 0x21, 0x50, 0x42, 0x00, 0xf0,
+ 0x65, 0xfb, 0xb0, 0xbd, 0xac, 0x7e, 0x01, 0x00,
+ 0xb8, 0x52, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xf4,
+ 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, 0x13, 0x48,
+ 0x21, 0x1c, 0xff, 0x31, 0x69, 0x31, 0x0e, 0xc9,
+ 0x0e, 0xc0, 0x21, 0x1c, 0xff, 0x31, 0x24, 0x22,
+ 0x75, 0x31, 0x0f, 0x48, 0xf1, 0xf7, 0x51, 0xf8,
+ 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x22, 0x99, 0x31,
+ 0x0d, 0x48, 0xf1, 0xf7, 0xa6, 0xf8, 0xfc, 0xf7,
+ 0xa2, 0xff, 0x21, 0x1c, 0xff, 0x31, 0x10, 0x22,
+ 0xd5, 0x31, 0x09, 0x48, 0xf1, 0xf7, 0x3c, 0x00,
+ 0x74, 0xf4, 0x00, 0x00, 0x41, 0xf8, 0x21, 0x1c,
+ 0xff, 0x31, 0x28, 0x22, 0xe5, 0x31, 0x07, 0x48,
+ 0xf1, 0xf7, 0x96, 0xf8, 0x10, 0xbd, 0x00, 0x00,
+ 0x40, 0x63, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x0c, 0x80, 0x07, 0x00, 0x30, 0x80, 0x07, 0x00,
+ 0x80, 0x80, 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00,
+ 0xf8, 0xb5, 0x00, 0x28, 0x59, 0xd0, 0x04, 0xf0,
+ 0x4b, 0xf9, 0xf8, 0xf7, 0xb3, 0xfb, 0x00, 0x22,
+ 0x3c, 0x00, 0xb0, 0xf4, 0x00, 0x00, 0x01, 0x21,
+ 0x13, 0x20, 0x04, 0xf0, 0x7c, 0xf9, 0x2a, 0x49,
+ 0x29, 0x48, 0x49, 0x6c, 0x01, 0x60, 0x00, 0x21,
+ 0x29, 0x48, 0xc9, 0x43, 0x41, 0x60, 0x26, 0x4c,
+ 0x14, 0x34, 0x61, 0x6c, 0x81, 0x60, 0xa1, 0x6c,
+ 0xc1, 0x60, 0x00, 0x20, 0x25, 0x4d, 0x02, 0x26,
+ 0x01, 0x01, 0x6e, 0x50, 0x0a, 0x19, 0x4f, 0x19,
+ 0x50, 0x32, 0x04, 0x37, 0x0e, 0xca, 0x01, 0x30,
+ 0x08, 0x28, 0x3c, 0x00, 0xec, 0xf4, 0x00, 0x00,
+ 0x0e, 0xc7, 0xf4, 0xdb, 0x14, 0x22, 0x21, 0x1c,
+ 0xcc, 0x31, 0x1e, 0x48, 0xf1, 0xf7, 0x5a, 0xf8,
+ 0x1d, 0x48, 0x81, 0x78, 0x09, 0x09, 0x09, 0x01,
+ 0x81, 0x70, 0x00, 0x21, 0xc1, 0x70, 0x41, 0x70,
+ 0x21, 0x1c, 0xe0, 0x31, 0x0a, 0x78, 0x02, 0x70,
+ 0x49, 0x78, 0x41, 0x70, 0x21, 0x1c, 0xe8, 0x31,
+ 0x30, 0x22, 0x08, 0x30, 0xf1, 0xf7, 0x46, 0xf8,
+ 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x00, 0x28, 0xf5,
+ 0x00, 0x00, 0x50, 0x22, 0x19, 0x31, 0x12, 0x48,
+ 0xf1, 0xf7, 0x3f, 0xf8, 0x83, 0x20, 0x80, 0x00,
+ 0x14, 0x22, 0x21, 0x18, 0x10, 0x48, 0xf1, 0xf7,
+ 0x38, 0xf8, 0x11, 0x20, 0x40, 0x01, 0x84, 0x22,
+ 0x21, 0x18, 0x0d, 0x48, 0xf1, 0xf7, 0x31, 0xf8,
+ 0xff, 0xf7, 0x73, 0xff, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x28, 0xfd, 0xf8, 0xbd, 0xff, 0xf7, 0x6d, 0xff,
+ 0xfb, 0xe7, 0x08, 0x20, 0x07, 0x00, 0x3c, 0x00,
+ 0x64, 0xf5, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00,
+ 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00,
+ 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x00, 0x90, 0x07, 0x00, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x18, 0x48, 0xc0, 0x68, 0x00, 0x28, 0x25, 0xd0,
+ 0x16, 0x4e, 0x01, 0x36, 0x74, 0x78, 0x30, 0x78,
+ 0x27, 0x1a, 0x79, 0x19, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x3c, 0x00, 0xa0, 0xf5, 0x00, 0x00, 0x4b, 0xf8,
+ 0x00, 0x90, 0x29, 0x1c, 0x20, 0x1c, 0xf1, 0xf7,
+ 0xb2, 0xf8, 0xc1, 0x19, 0x20, 0x1c, 0xf1, 0xf7,
+ 0x42, 0xf8, 0x60, 0x1a, 0x30, 0x70, 0x70, 0x1e,
+ 0x80, 0x68, 0x00, 0x28, 0x0d, 0xd0, 0x53, 0x36,
+ 0xf4, 0x78, 0x00, 0x99, 0x20, 0x1c, 0xf1, 0xf7,
+ 0xa2, 0xf8, 0xb1, 0x78, 0x61, 0x1a, 0x41, 0x18,
+ 0x20, 0x1c, 0xf1, 0xf7, 0x9c, 0xf8, 0x60, 0x1a,
+ 0xb0, 0x70, 0x3c, 0x00, 0xdc, 0xf5, 0x00, 0x00,
+ 0x03, 0x48, 0x5c, 0x30, 0x01, 0x69, 0xc2, 0x68,
+ 0x69, 0x43, 0x51, 0x18, 0xc1, 0x60, 0xf8, 0xbd,
+ 0x44, 0x7d, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x4d,
+ 0xe8, 0x68, 0x29, 0x69, 0x40, 0x18, 0x7d, 0x21,
+ 0x09, 0x01, 0x44, 0x18, 0x20, 0x1c, 0x03, 0xf0,
+ 0x0b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, 0x03, 0xf0,
+ 0xcf, 0xfb, 0x01, 0x1b, 0x28, 0x69, 0xf1, 0xf7,
+ 0x7d, 0xf8, 0x01, 0x30, 0x3c, 0x00, 0x18, 0xf6,
+ 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7,
+ 0xb2, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xa0, 0x7d,
+ 0x01, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x60, 0x68,
+ 0x80, 0x25, 0xa8, 0x43, 0x60, 0x60, 0x20, 0x68,
+ 0x28, 0x43, 0x20, 0x60, 0x0d, 0x4e, 0x30, 0x1c,
+ 0x10, 0x30, 0xf3, 0xf7, 0xc8, 0xfc, 0x00, 0x28,
+ 0x03, 0xd1, 0x07, 0x21, 0x85, 0x20, 0xf1, 0xf7,
+ 0x2a, 0xfe, 0x08, 0x48, 0x00, 0x21, 0x3c, 0x00,
+ 0x54, 0xf6, 0x00, 0x00, 0x80, 0x68, 0x41, 0x63,
+ 0xc0, 0x6c, 0x10, 0x30, 0x70, 0x61, 0x01, 0x20,
+ 0x30, 0x61, 0x20, 0x68, 0xa8, 0x43, 0x20, 0x60,
+ 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x00, 0x07, 0x00,
+ 0x00, 0x30, 0x07, 0x00, 0x24, 0x7e, 0x01, 0x00,
+ 0x01, 0x1c, 0x00, 0x20, 0x05, 0x29, 0x80, 0xb5,
+ 0x09, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, 0x5b, 0x00,
+ 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
+ 0x3c, 0x00, 0x90, 0xf6, 0x00, 0x00, 0x03, 0x00,
+ 0xff, 0xf7, 0xcf, 0xfc, 0x80, 0xbd, 0x01, 0x22,
+ 0x92, 0x02, 0x80, 0xb5, 0x00, 0x21, 0x07, 0x20,
+ 0x04, 0xf0, 0xab, 0xf9, 0x80, 0xbd, 0x80, 0xb5,
+ 0x40, 0x22, 0x00, 0x21, 0x00, 0x20, 0x04, 0xf0,
+ 0xa4, 0xf9, 0x03, 0x22, 0x00, 0x21, 0x00, 0x20,
+ 0x04, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x70, 0xb5,
+ 0x0e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x08, 0x28,
+ 0x0e, 0xd1, 0x3c, 0x00, 0xcc, 0xf6, 0x00, 0x00,
+ 0x00, 0xf0, 0x00, 0xfc, 0x0e, 0x28, 0x01, 0xd1,
+ 0x14, 0x20, 0x00, 0xe0, 0x10, 0x20, 0xe1, 0x03,
+ 0x00, 0xd5, 0x01, 0x38, 0xc0, 0x06, 0x0a, 0x49,
+ 0xc0, 0x0e, 0x88, 0x71, 0x08, 0xe0, 0x09, 0x2d,
+ 0x06, 0xd1, 0xa0, 0x04, 0x01, 0xd5, 0x00, 0x20,
+ 0x00, 0xe0, 0x01, 0x20, 0xf3, 0xf7, 0xb0, 0xf9,
+ 0x34, 0x40, 0x21, 0x1c, 0x32, 0x1c, 0x28, 0x1c,
+ 0x04, 0xf0, 0x7a, 0xf9, 0x3c, 0x00, 0x08, 0xf7,
+ 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x80,
+ 0x07, 0x00, 0x70, 0xb5, 0x00, 0x24, 0x13, 0x29,
+ 0x11, 0xd8, 0x00, 0x28, 0x01, 0xd1, 0x08, 0x4e,
+ 0x08, 0x25, 0x01, 0x28, 0x01, 0xd1, 0x07, 0x4e,
+ 0x09, 0x25, 0x00, 0xf0, 0x78, 0xfa, 0x00, 0x28,
+ 0x05, 0xd0, 0x02, 0x1c, 0x31, 0x1c, 0x28, 0x1c,
+ 0xff, 0xf7, 0xc3, 0xff, 0x01, 0x24, 0x20, 0x1c,
+ 0x70, 0xbd, 0xf8, 0xff, 0x07, 0x00, 0x3c, 0x00,
+ 0x44, 0xf7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
+ 0x01, 0x22, 0xd2, 0x02, 0x80, 0xb5, 0x00, 0x21,
+ 0x07, 0x20, 0x04, 0xf0, 0x53, 0xf9, 0x80, 0xbd,
+ 0x0f, 0x22, 0x12, 0x04, 0x07, 0x21, 0x49, 0x04,
+ 0x80, 0xb5, 0x09, 0x20, 0x04, 0xf0, 0x4a, 0xf9,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21,
+ 0x04, 0x20, 0x04, 0xf0, 0x1b, 0xfc, 0x40, 0x21,
+ 0x00, 0x20, 0x04, 0xf0, 0x17, 0xfc, 0x04, 0x49,
+ 0x3c, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x20,
+ 0x88, 0x60, 0x02, 0x48, 0x09, 0x69, 0x20, 0x30,
+ 0xff, 0xf7, 0x09, 0xfe, 0x80, 0xbd, 0x64, 0x73,
+ 0x01, 0x00, 0xb0, 0xb5, 0x60, 0x21, 0x00, 0x20,
+ 0x04, 0xf0, 0x07, 0xfc, 0x11, 0x4d, 0x00, 0x24,
+ 0x00, 0x22, 0x04, 0x20, 0x29, 0x5d, 0x04, 0xf0,
+ 0x28, 0xf9, 0x0c, 0x20, 0x03, 0xf0, 0x9b, 0xfb,
+ 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x05, 0x2c,
+ 0xf2, 0xd3, 0x3c, 0x00, 0xbc, 0xf7, 0x00, 0x00,
+ 0x0f, 0x22, 0x00, 0x21, 0x0a, 0x20, 0x04, 0xf0,
+ 0x1b, 0xf9, 0x61, 0x21, 0x00, 0x20, 0x04, 0xf0,
+ 0xef, 0xfb, 0x06, 0x49, 0x01, 0x20, 0x88, 0x60,
+ 0x04, 0x48, 0x09, 0x69, 0x20, 0x30, 0xff, 0xf7,
+ 0xcd, 0xfd, 0xff, 0x20, 0x2d, 0x30, 0xb0, 0xbd,
+ 0xa8, 0x58, 0x01, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0xf8, 0xb5, 0x06, 0x1c, 0x12, 0x48, 0xc6, 0x70,
+ 0x01, 0x20, 0xff, 0xf7, 0x3c, 0x00, 0xf8, 0xf7,
+ 0x00, 0x00, 0xfd, 0xfb, 0x01, 0x27, 0xbf, 0x02,
+ 0x04, 0x1c, 0xb8, 0x43, 0x01, 0x1c, 0x01, 0x20,
+ 0x04, 0xf0, 0xd1, 0xfb, 0x03, 0x20, 0xff, 0xf7,
+ 0xf2, 0xfb, 0x05, 0x1c, 0xb8, 0x43, 0x01, 0x1c,
+ 0x03, 0x20, 0x04, 0xf0, 0xc8, 0xfb, 0x30, 0x1c,
+ 0x00, 0xf0, 0x9f, 0xf9, 0x00, 0xf0, 0x57, 0xf8,
+ 0x21, 0x1c, 0x01, 0x20, 0x04, 0xf0, 0xbf, 0xfb,
+ 0x29, 0x1c, 0x03, 0x20, 0x04, 0xf0, 0x3c, 0x00,
+ 0x34, 0xf8, 0x00, 0x00, 0xbb, 0xfb, 0x00, 0x20,
+ 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x22, 0x40, 0x21, 0x00, 0x20,
+ 0x04, 0xf0, 0xd8, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x01, 0x24, 0x09, 0x20,
+ 0xff, 0xf7, 0xcc, 0xfb, 0x0f, 0x21, 0x09, 0x04,
+ 0x88, 0x43, 0x03, 0x21, 0x89, 0x04, 0xe2, 0x04,
+ 0x05, 0x2d, 0x12, 0x4e, 0x20, 0xd2, 0x02, 0xa3,
+ 0x3c, 0x00, 0x70, 0xf8, 0x00, 0x00, 0x5b, 0x5d,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x09,
+ 0x0c, 0x10, 0x03, 0x00, 0x03, 0x21, 0x09, 0x04,
+ 0x0c, 0xe0, 0x01, 0x21, 0x09, 0x04, 0x09, 0xe0,
+ 0x01, 0x21, 0x49, 0x04, 0x06, 0xe0, 0xf3, 0x68,
+ 0x04, 0x2b, 0x05, 0xd9, 0x02, 0xe0, 0xf3, 0x68,
+ 0x04, 0x2b, 0x01, 0xd8, 0x01, 0x43, 0x01, 0xe0,
+ 0x10, 0x43, 0x01, 0x1c, 0x09, 0x20, 0x04, 0xf0,
+ 0x80, 0xfb, 0x3c, 0x00, 0xac, 0xf8, 0x00, 0x00,
+ 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x24, 0xfb, 0xe7,
+ 0x64, 0x73, 0x01, 0x00, 0x01, 0x21, 0xc9, 0x05,
+ 0x00, 0x28, 0x80, 0xb5, 0x02, 0xd0, 0x0a, 0x1c,
+ 0x00, 0x21, 0x00, 0xe0, 0x00, 0x22, 0x04, 0x20,
+ 0x04, 0xf0, 0x96, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0xf0, 0xb5, 0x91, 0xb0, 0x00, 0x26, 0x40, 0x21,
+ 0x01, 0xa8, 0xf0, 0xf7, 0xdd, 0xfd, 0x2a, 0x4f,
+ 0xb8, 0x79, 0x01, 0x22, 0x3c, 0x00, 0xe8, 0xf8,
+ 0x00, 0x00, 0x52, 0x03, 0x00, 0x90, 0x00, 0x21,
+ 0x06, 0x20, 0x04, 0xf0, 0x84, 0xf8, 0x60, 0x21,
+ 0x00, 0x20, 0x04, 0xf0, 0x58, 0xfb, 0x61, 0x21,
+ 0x00, 0x20, 0x04, 0xf0, 0x54, 0xfb, 0x08, 0x20,
+ 0x03, 0xf0, 0xef, 0xfa, 0x00, 0x24, 0x0f, 0x20,
+ 0xff, 0xf7, 0x71, 0xfb, 0x40, 0x05, 0x05, 0x0f,
+ 0xa8, 0x00, 0x01, 0xa9, 0x09, 0x58, 0x01, 0xaa,
+ 0x01, 0x31, 0x01, 0x34, 0x0c, 0x2c, 0x3c, 0x00,
+ 0x24, 0xf9, 0x00, 0x00, 0x11, 0x50, 0xf1, 0xd3,
+ 0x00, 0x20, 0x81, 0x00, 0x01, 0xaa, 0x51, 0x58,
+ 0xb1, 0x42, 0x01, 0xd9, 0x0e, 0x1c, 0x05, 0x1c,
+ 0x01, 0x30, 0x10, 0x28, 0xf5, 0xd3, 0x06, 0x20,
+ 0xff, 0xf7, 0x58, 0xfb, 0x0f, 0x21, 0x49, 0x02,
+ 0x88, 0x43, 0x69, 0x02, 0x08, 0x43, 0x01, 0x21,
+ 0x49, 0x03, 0x01, 0x43, 0x06, 0x20, 0x04, 0xf0,
+ 0x29, 0xfb, 0x0d, 0x48, 0x84, 0x68, 0x64, 0x34,
+ 0x3c, 0x00, 0x60, 0xf9, 0x00, 0x00, 0x08, 0xe0,
+ 0x20, 0x1c, 0x03, 0xf0, 0x5a, 0xf9, 0x00, 0x28,
+ 0x03, 0xd0, 0x01, 0x21, 0x95, 0x20, 0xf1, 0xf7,
+ 0x98, 0xfc, 0x0f, 0x20, 0xff, 0xf7, 0x3d, 0xfb,
+ 0x00, 0x04, 0xf1, 0xd5, 0x87, 0x20, 0x03, 0xf0,
+ 0xb2, 0xfa, 0x00, 0x98, 0xb8, 0x71, 0x11, 0xb0,
+ 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0x00, 0x01,
+ 0x07, 0x00, 0x10, 0xb5, 0x17, 0x4c, 0x61, 0x69,
+ 0x00, 0x29, 0x3c, 0x00, 0x9c, 0xf9, 0x00, 0x00,
+ 0x04, 0xd0, 0x0a, 0x21, 0x13, 0x20, 0x03, 0xf0,
+ 0x47, 0xfe, 0x10, 0xbd, 0x01, 0x1c, 0x12, 0x48,
+ 0x01, 0x29, 0x00, 0x78, 0x0c, 0xd0, 0x11, 0x29,
+ 0xf7, 0xd1, 0x05, 0x28, 0x03, 0xd1, 0x01, 0x21,
+ 0x13, 0x20, 0xf1, 0xf7, 0x71, 0xfc, 0x20, 0x78,
+ 0x07, 0x28, 0xee, 0xd1, 0x02, 0x21, 0x0a, 0xe0,
+ 0x05, 0x28, 0x07, 0xd0, 0x06, 0x28, 0x0a, 0xd0,
+ 0x07, 0x28, 0xf7, 0xd0, 0x3c, 0x00, 0xd8, 0xf9,
+ 0x00, 0x00, 0x08, 0x28, 0xe4, 0xd1, 0x00, 0x20,
+ 0x05, 0xe0, 0x01, 0x21, 0x13, 0x20, 0xf1, 0xf7,
+ 0x5e, 0xfc, 0x10, 0xbd, 0x01, 0x20, 0x02, 0xf0,
+ 0x6c, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78,
+ 0x01, 0x00, 0x0d, 0x49, 0x80, 0xb5, 0x09, 0x78,
+ 0x03, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x0b, 0xd0,
+ 0x07, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x07, 0xd0,
+ 0x02, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x3c, 0x00,
+ 0x14, 0xfa, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x29,
+ 0x09, 0xd1, 0x00, 0x28, 0x07, 0xd0, 0x00, 0x20,
+ 0xfc, 0xf7, 0x28, 0xfd, 0x00, 0x22, 0x13, 0x21,
+ 0x11, 0x20, 0x03, 0xf0, 0xc1, 0xfe, 0x80, 0xbd,
+ 0x7c, 0x78, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22,
+ 0x08, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xde, 0xff,
+ 0x80, 0xbd, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5,
+ 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, 0xf1, 0xf7,
+ 0x3c, 0x00, 0x50, 0xfa, 0x00, 0x00, 0x33, 0xff,
+ 0x05, 0x49, 0x05, 0x4a, 0x08, 0x68, 0x50, 0x61,
+ 0x48, 0x68, 0x90, 0x61, 0x01, 0x20, 0x80, 0xbd,
+ 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xb0, 0x58,
+ 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x48,
+ 0x80, 0xb5, 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1,
+ 0xf1, 0xf7, 0x1d, 0xff, 0x05, 0x49, 0x05, 0x4a,
+ 0x08, 0x68, 0x90, 0x61, 0x48, 0x68, 0x50, 0x61,
+ 0x01, 0x20, 0x3c, 0x00, 0x8c, 0xfa, 0x00, 0x00,
+ 0x80, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x11, 0xb5, 0x00, 0xab, 0x59, 0x78, 0x14, 0x48,
+ 0x01, 0x23, 0xc0, 0x56, 0x00, 0x22, 0x09, 0x18,
+ 0x0b, 0x06, 0x1b, 0x16, 0x13, 0x21, 0x13, 0x2b,
+ 0x02, 0xdd, 0x00, 0xab, 0x59, 0x70, 0x07, 0xe0,
+ 0x00, 0x2b, 0x02, 0xda, 0x00, 0xab, 0x5a, 0x70,
+ 0x02, 0xe0, 0x1c, 0x1c, 0x3c, 0x00, 0xc8, 0xfa,
+ 0x00, 0x00, 0x00, 0xab, 0x5c, 0x70, 0x00, 0xab,
+ 0x1b, 0x78, 0x18, 0x18, 0x00, 0x06, 0x00, 0x16,
+ 0x13, 0x28, 0x02, 0xdd, 0x00, 0xab, 0x19, 0x70,
+ 0x06, 0xe0, 0x00, 0x28, 0x02, 0xda, 0x00, 0xab,
+ 0x1a, 0x70, 0x01, 0xe0, 0x00, 0xab, 0x18, 0x70,
+ 0x00, 0x98, 0x18, 0xbd, 0x00, 0x00, 0x64, 0x73,
+ 0x01, 0x00, 0x38, 0xb5, 0x0c, 0x1c, 0x15, 0x49,
+ 0x00, 0xab, 0x49, 0x68, 0x13, 0x25, 0x3c, 0x00,
+ 0x04, 0xfb, 0x00, 0x00, 0x00, 0x91, 0x59, 0x78,
+ 0x09, 0x18, 0x59, 0x70, 0x19, 0x78, 0x08, 0x18,
+ 0x18, 0x70, 0x19, 0x88, 0x10, 0x48, 0x02, 0x2c,
+ 0xc1, 0x80, 0x01, 0xd0, 0x00, 0x2c, 0x0b, 0xd1,
+ 0x00, 0xab, 0x18, 0x78, 0x13, 0x28, 0x00, 0xd9,
+ 0x1d, 0x70, 0x00, 0xab, 0x19, 0x78, 0x00, 0x20,
+ 0xff, 0xf7, 0xee, 0xfd, 0x02, 0x2c, 0x01, 0xd0,
+ 0x01, 0x2c, 0x09, 0xd1, 0x00, 0xab, 0x58, 0x78,
+ 0x3c, 0x00, 0x40, 0xfb, 0x00, 0x00, 0x13, 0x28,
+ 0x00, 0xd9, 0x5d, 0x70, 0x00, 0xab, 0x59, 0x78,
+ 0x01, 0x20, 0xff, 0xf7, 0xe0, 0xfd, 0x38, 0xbd,
+ 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xa0, 0x58,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5,
+ 0x04, 0x1c, 0x0e, 0x28, 0x13, 0x4d, 0x04, 0xd0,
+ 0x12, 0x49, 0xa0, 0x00, 0x00, 0x19, 0x4d, 0x39,
+ 0x45, 0x18, 0x06, 0x20, 0xff, 0xf7, 0x3d, 0xfa,
+ 0x0f, 0x49, 0x3c, 0x00, 0x7c, 0xfb, 0x00, 0x00,
+ 0xe0, 0x22, 0x09, 0x19, 0x10, 0x39, 0xc9, 0x7b,
+ 0x90, 0x43, 0x49, 0x01, 0x11, 0x40, 0x01, 0x43,
+ 0x06, 0x20, 0x04, 0xf0, 0x0d, 0xfa, 0x29, 0x1c,
+ 0x05, 0x20, 0x09, 0x4a, 0x03, 0xf0, 0x30, 0xff,
+ 0x08, 0x48, 0x1f, 0x22, 0x00, 0x19, 0x10, 0x38,
+ 0xc0, 0x7b, 0xc1, 0x04, 0xd2, 0x04, 0x08, 0x20,
+ 0x03, 0xf0, 0x26, 0xff, 0xb0, 0xbd, 0x00, 0x00,
+ 0xb4, 0x09, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfb,
+ 0x00, 0x00, 0x14, 0x45, 0x01, 0x00, 0xff, 0x0f,
+ 0x00, 0x00, 0xc0, 0x58, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x06, 0x49, 0x00, 0x28,
+ 0x01, 0xd1, 0x08, 0x68, 0x80, 0xbd, 0x01, 0x28,
+ 0x01, 0xd1, 0x48, 0x68, 0x80, 0xbd, 0xf1, 0xf7,
+ 0x90, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x7c, 0x73,
+ 0x01, 0x00, 0x01, 0x48, 0x40, 0x68, 0x70, 0x47,
+ 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x3c, 0x00,
+ 0xf4, 0xfb, 0x00, 0x00, 0x04, 0x48, 0x01, 0x23,
+ 0x04, 0x49, 0xc0, 0x56, 0xc9, 0x56, 0x40, 0x18,
+ 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00,
+ 0xa0, 0x58, 0x01, 0x00, 0xa2, 0x58, 0x01, 0x00,
+ 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, 0x00, 0x00,
+ 0x64, 0x73, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c,
+ 0x0e, 0x1c, 0x00, 0xf0, 0x55, 0xf9, 0x04, 0x1c,
+ 0x00, 0xf0, 0x58, 0xf9, 0x00, 0x28, 0x2c, 0xd0,
+ 0x3c, 0x00, 0x30, 0xfc, 0x00, 0x00, 0xb3, 0x00,
+ 0x60, 0x1e, 0x00, 0x2d, 0x1c, 0x4e, 0x19, 0x49,
+ 0x1a, 0x4a, 0x06, 0xd1, 0x0b, 0x25, 0x0e, 0x2c,
+ 0x00, 0xd1, 0x19, 0x4a, 0xd2, 0x58, 0x08, 0x56,
+ 0x08, 0xe0, 0x01, 0x2d, 0x1c, 0xd1, 0x9a, 0x18,
+ 0x04, 0x36, 0x08, 0x18, 0x08, 0x25, 0x0e, 0x23,
+ 0x12, 0x6d, 0xc0, 0x56, 0x07, 0x1c, 0x47, 0x43,
+ 0xfb, 0x00, 0xdf, 0x19, 0x12, 0x4b, 0x3f, 0x21,
+ 0x58, 0x43, 0x3c, 0x00, 0x6c, 0xfc, 0x00, 0x00,
+ 0x11, 0x4b, 0xa9, 0x40, 0x0c, 0x1c, 0x38, 0x18,
+ 0xc0, 0x18, 0x14, 0x40, 0xec, 0x40, 0xc0, 0x11,
+ 0x60, 0x43, 0x1b, 0x0a, 0xc0, 0x18, 0x80, 0x12,
+ 0x03, 0xd1, 0x01, 0x20, 0x04, 0xe0, 0x00, 0x20,
+ 0xf8, 0xbd, 0x3f, 0x28, 0x00, 0xdd, 0x3f, 0x20,
+ 0x30, 0x60, 0xa8, 0x40, 0x08, 0x40, 0x8a, 0x43,
+ 0x10, 0x43, 0xf5, 0xe7, 0xcc, 0x59, 0x01, 0x00,
+ 0xdc, 0x58, 0x01, 0x00, 0x3c, 0x00, 0xa8, 0xfc,
+ 0x00, 0x00, 0x7c, 0x73, 0x01, 0x00, 0x7c, 0x59,
+ 0x01, 0x00, 0x06, 0x06, 0x00, 0x00, 0x26, 0x00,
+ 0x02, 0x00, 0x03, 0x48, 0x08, 0xb5, 0xc0, 0x88,
+ 0x00, 0xab, 0x18, 0x80, 0x00, 0x98, 0x08, 0xbd,
+ 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0xb0, 0xb5,
+ 0x0b, 0x4d, 0x09, 0x4c, 0x0e, 0x20, 0x6c, 0x60,
+ 0xff, 0xf7, 0x8d, 0xf9, 0x09, 0x49, 0x02, 0x1c,
+ 0xc8, 0x60, 0x01, 0x06, 0x09, 0x0e, 0x3c, 0x00,
+ 0xe4, 0xfc, 0x00, 0x00, 0x13, 0x3a, 0x02, 0x2a,
+ 0x02, 0xd9, 0x17, 0x38, 0x04, 0x28, 0x00, 0xd8,
+ 0x00, 0x21, 0x08, 0x1c, 0x6c, 0x60, 0xb0, 0xbd,
+ 0x04, 0x18, 0x02, 0x00, 0x60, 0x00, 0x07, 0x00,
+ 0x64, 0x73, 0x01, 0x00, 0x0a, 0x48, 0x98, 0xb5,
+ 0x02, 0x78, 0x13, 0x21, 0x14, 0x2a, 0x00, 0xd3,
+ 0x01, 0x70, 0x42, 0x78, 0x14, 0x2a, 0x00, 0xd3,
+ 0x41, 0x70, 0x06, 0x4c, 0x60, 0x68, 0xff, 0xf7,
+ 0x3c, 0x00, 0x20, 0xfd, 0x00, 0x00, 0xbd, 0xfe,
+ 0x00, 0x90, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80,
+ 0x00, 0xf0, 0x75, 0xff, 0x98, 0xbd, 0xa4, 0x58,
+ 0x01, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x41, 0x78, 0x01, 0x20, 0xff, 0xf7,
+ 0xe6, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xa6, 0x58,
+ 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x01, 0x78,
+ 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfd, 0x00, 0x00,
+ 0xa6, 0x58, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x4d,
+ 0x00, 0x24, 0x20, 0x1c, 0xff, 0xf7, 0x44, 0xf9,
+ 0x01, 0x34, 0x10, 0x2c, 0x01, 0xc5, 0xf8, 0xd3,
+ 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x44, 0x01, 0x00,
+ 0x04, 0x49, 0x80, 0xb5, 0x88, 0x70, 0x04, 0x49,
+ 0x80, 0x00, 0x09, 0x58, 0x07, 0x20, 0x04, 0xf0,
+ 0x0f, 0xf9, 0x80, 0xbd, 0x64, 0x73, 0x01, 0x00,
+ 0xd0, 0x58, 0x01, 0x00, 0x3c, 0x00, 0x98, 0xfd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x3f, 0x24, 0x02, 0x1c,
+ 0x00, 0x2a, 0x01, 0xd1, 0x08, 0x20, 0x0b, 0x23,
+ 0x01, 0x2a, 0x01, 0xd1, 0x09, 0x20, 0x08, 0x23,
+ 0x25, 0x1c, 0x9d, 0x40, 0x00, 0x29, 0x00, 0xd1,
+ 0x01, 0x21, 0x3f, 0x29, 0x00, 0xd9, 0x21, 0x1c,
+ 0x99, 0x40, 0x0a, 0x1c, 0x29, 0x1c, 0xff, 0xf7,
+ 0x7c, 0xfc, 0xb0, 0xbd, 0x00, 0x00, 0x91, 0xb5,
+ 0x12, 0x49, 0x00, 0xab, 0x1a, 0x78, 0x3c, 0x00,
+ 0xd4, 0xfd, 0x00, 0x00, 0x08, 0x78, 0x11, 0x4c,
+ 0x80, 0x18, 0x00, 0x06, 0x00, 0x0e, 0x20, 0x70,
+ 0x49, 0x78, 0x5a, 0x78, 0x89, 0x18, 0x09, 0x06,
+ 0x09, 0x0e, 0x13, 0x22, 0x13, 0x28, 0x61, 0x70,
+ 0x00, 0xd9, 0x22, 0x70, 0x13, 0x29, 0x00, 0xd9,
+ 0x62, 0x70, 0x08, 0x49, 0x08, 0x48, 0x06, 0x39,
+ 0xc9, 0x88, 0x81, 0x80, 0x21, 0x78, 0x00, 0x20,
+ 0xff, 0xf7, 0x82, 0xfc, 0x61, 0x78, 0x01, 0x20,
+ 0x3c, 0x00, 0x10, 0xfe, 0x00, 0x00, 0xff, 0xf7,
+ 0x7e, 0xfc, 0x98, 0xbd, 0x00, 0x00, 0xa4, 0x58,
+ 0x01, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x64, 0x73,
+ 0x01, 0x00, 0x70, 0xb5, 0x1d, 0x4d, 0x04, 0x1c,
+ 0x28, 0x78, 0x0e, 0x1c, 0x03, 0x28, 0x03, 0xd1,
+ 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, 0x35, 0xfa,
+ 0x20, 0x1c, 0x00, 0xf0, 0x4e, 0xf8, 0x00, 0x28,
+ 0x25, 0xd0, 0x28, 0x78, 0x01, 0x28, 0x0a, 0xd1,
+ 0x68, 0x68, 0x3c, 0x00, 0x4c, 0xfe, 0x00, 0x00,
+ 0x00, 0x28, 0x07, 0xd0, 0x01, 0x21, 0x11, 0x20,
+ 0x03, 0xf0, 0xee, 0xfb, 0x01, 0x20, 0x69, 0x68,
+ 0xf0, 0xf7, 0xbd, 0xfa, 0x6c, 0x70, 0x6e, 0x60,
+ 0x20, 0x1c, 0xff, 0xf7, 0xc1, 0xfc, 0x04, 0x1c,
+ 0x00, 0xf0, 0xd4, 0xfe, 0x00, 0x2c, 0x02, 0xd0,
+ 0x68, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xf6, 0xf7,
+ 0xd9, 0xf8, 0x70, 0xbd, 0x01, 0x20, 0x28, 0x70,
+ 0x01, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x88, 0xfe,
+ 0x00, 0x00, 0x11, 0x20, 0x03, 0xf0, 0x9f, 0xfb,
+ 0x70, 0xbd, 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7,
+ 0x06, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x9c, 0x73,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x05, 0xd1,
+ 0x00, 0x29, 0x04, 0xd0, 0x01, 0x29, 0x01, 0xd1,
+ 0xf6, 0xf7, 0xbf, 0xf8, 0x80, 0xbd, 0x05, 0x49,
+ 0x08, 0x78, 0x03, 0x28, 0x02, 0xd0, 0x00, 0x20,
+ 0x08, 0x70, 0x80, 0xbd, 0x03, 0x21, 0x3c, 0x00,
+ 0xc4, 0xfe, 0x00, 0x00, 0x11, 0x20, 0xf1, 0xf7,
+ 0xed, 0xf9, 0x80, 0xbd, 0x9c, 0x73, 0x01, 0x00,
+ 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, 0x00, 0x00,
+ 0x9c, 0x73, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x39,
+ 0x01, 0x20, 0x0e, 0x29, 0x00, 0xd3, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c,
+ 0x20, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x60, 0x68,
+ 0x00, 0x28, 0x0d, 0xd0, 0x01, 0x21, 0x11, 0x20,
+ 0x3c, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0xf0,
+ 0x98, 0xfb, 0x01, 0x20, 0x61, 0x68, 0xf0, 0xf7,
+ 0x67, 0xfa, 0x00, 0x20, 0x60, 0x60, 0x20, 0x70,
+ 0x01, 0xe0, 0x03, 0x28, 0x0e, 0xd0, 0x00, 0x21,
+ 0x11, 0x20, 0x03, 0xf0, 0x8a, 0xfb, 0xff, 0xf7,
+ 0x24, 0xfc, 0xff, 0xf7, 0xc0, 0xfb, 0x05, 0x49,
+ 0x08, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x08, 0x73,
+ 0x03, 0x20, 0x20, 0x70, 0x01, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x00, 0x00,
+ 0x9c, 0x73, 0x01, 0x00, 0x88, 0x00, 0x07, 0x00,
+ 0x10, 0xb5, 0x0d, 0x4c, 0x20, 0x78, 0x03, 0x28,
+ 0x13, 0xd1, 0x00, 0x20, 0x20, 0x70, 0x0b, 0x48,
+ 0x01, 0x7b, 0x01, 0x22, 0x11, 0x43, 0x01, 0x73,
+ 0xff, 0xf7, 0x70, 0xfc, 0xff, 0xf7, 0x18, 0xfc,
+ 0x00, 0x28, 0x06, 0xd0, 0x02, 0x21, 0x21, 0x70,
+ 0x01, 0x1c, 0x00, 0x22, 0x11, 0x20, 0x03, 0xf0,
+ 0x2b, 0xfb, 0x01, 0x20, 0x3c, 0x00, 0x78, 0xff,
+ 0x00, 0x00, 0x10, 0xbd, 0x00, 0x00, 0x9c, 0x73,
+ 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x80, 0xb5,
+ 0x05, 0x49, 0x00, 0x28, 0x04, 0xd0, 0x00, 0x20,
+ 0x08, 0x60, 0x03, 0xf0, 0x5a, 0xfa, 0x80, 0xbd,
+ 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, 0x80, 0x5a,
+ 0x01, 0x00, 0xfe, 0xb5, 0x05, 0x1c, 0x80, 0x35,
+ 0x04, 0x1c, 0xa8, 0x68, 0x29, 0x79, 0x06, 0x68,
+ 0x20, 0x1c, 0xa0, 0x30, 0x02, 0x29, 0x3c, 0x00,
+ 0xb4, 0xff, 0x00, 0x00, 0x1c, 0xd1, 0x69, 0x79,
+ 0x08, 0x29, 0x01, 0xd0, 0x0c, 0x29, 0x17, 0xd1,
+ 0x01, 0x21, 0x61, 0x62, 0xa9, 0x68, 0x09, 0x68,
+ 0x09, 0x8b, 0x01, 0x82, 0xa9, 0x69, 0x01, 0x91,
+ 0x00, 0x8a, 0xc0, 0x06, 0x05, 0xd5, 0x60, 0x68,
+ 0x00, 0x88, 0x40, 0x05, 0x01, 0xd4, 0x01, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x02, 0x90, 0x05, 0x20,
+ 0x01, 0xa9, 0x02, 0xf0, 0xb7, 0xf9, 0x02, 0xe0,
+ 0x3c, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x21,
+ 0x61, 0x62, 0x01, 0x82, 0xa9, 0x68, 0x1a, 0x23,
+ 0x0a, 0x89, 0x67, 0x6a, 0x18, 0x1c, 0x00, 0x2f,
+ 0x00, 0xd1, 0x18, 0x20, 0x10, 0x1a, 0x08, 0x81,
+ 0xa8, 0x68, 0x01, 0x68, 0x62, 0x6a, 0x00, 0x2a,
+ 0x00, 0xd1, 0x18, 0x23, 0xc9, 0x18, 0x01, 0x60,
+ 0xa8, 0x68, 0x41, 0xc4, 0x30, 0x88, 0x08, 0x3c,
+ 0x40, 0x04, 0x03, 0xd5, 0x20, 0x1c, 0xf7, 0xf7,
+ 0xbc, 0xf9, 0x3c, 0x00, 0x2c, 0x00, 0x01, 0x00,
+ 0xfe, 0xbd, 0x00, 0x21, 0xe1, 0x61, 0x30, 0x79,
+ 0xc0, 0x07, 0x03, 0xd4, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x91, 0xfe, 0xf5, 0xe7, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x43, 0xff, 0xf1, 0xe7, 0xf7, 0xb5, 0x05, 0x1c,
+ 0x0a, 0x30, 0x06, 0x1c, 0xf5, 0xf7, 0xa4, 0xfa,
+ 0x14, 0x4f, 0x04, 0x1c, 0x39, 0x88, 0xf2, 0xf7,
+ 0x83, 0xfe, 0x32, 0x88, 0x78, 0x68, 0x02, 0x80,
+ 0x72, 0x88, 0x02, 0x30, 0x3c, 0x00, 0x68, 0x00,
+ 0x01, 0x00, 0x02, 0x80, 0xb1, 0x88, 0x41, 0x80,
+ 0x69, 0x88, 0x02, 0x9a, 0x20, 0x1c, 0xfa, 0xf7,
+ 0xce, 0xfe, 0x0b, 0x4d, 0x08, 0x35, 0x68, 0x80,
+ 0xfb, 0xf7, 0x2b, 0xfe, 0x01, 0x21, 0x09, 0x03,
+ 0x00, 0x28, 0x28, 0x88, 0x01, 0xd0, 0x88, 0x43,
+ 0x00, 0xe0, 0x08, 0x43, 0x28, 0x80, 0x04, 0x48,
+ 0x00, 0x22, 0x00, 0x21, 0x14, 0x30, 0xf2, 0xf7,
+ 0x32, 0xfe, 0x20, 0x1c, 0xfc, 0xf7, 0x3c, 0x00,
+ 0xa4, 0x00, 0x01, 0x00, 0x85, 0xfa, 0xfe, 0xbd,
+ 0x24, 0x7b, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c,
+ 0x11, 0x49, 0x20, 0x1c, 0xff, 0x30, 0x69, 0x30,
+ 0x0e, 0xc9, 0x0e, 0xc0, 0x20, 0x1c, 0xff, 0x30,
+ 0x24, 0x22, 0x75, 0x30, 0x0e, 0x49, 0xf0, 0xf7,
+ 0x17, 0xfa, 0x20, 0x1c, 0xff, 0x30, 0x3c, 0x22,
+ 0x99, 0x30, 0x0c, 0x49, 0xf0, 0xf7, 0x6c, 0xfa,
+ 0x20, 0x1c, 0xff, 0x30, 0x10, 0x22, 0xd5, 0x30,
+ 0x3c, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x09, 0x49,
+ 0xf0, 0xf7, 0x09, 0xfa, 0x20, 0x1c, 0xff, 0x30,
+ 0x28, 0x22, 0xe5, 0x30, 0x07, 0x49, 0xf0, 0xf7,
+ 0x5e, 0xfa, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x80,
+ 0x07, 0x00, 0x40, 0x63, 0x01, 0x00, 0x0c, 0x80,
+ 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, 0x80, 0x80,
+ 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xb0, 0xb5,
+ 0x00, 0x28, 0x3f, 0xd0, 0x21, 0x48, 0x41, 0x68,
+ 0x21, 0x4c, 0x3c, 0x00, 0x1c, 0x01, 0x01, 0x00,
+ 0x61, 0x60, 0xc1, 0x68, 0xe1, 0x60, 0x01, 0x69,
+ 0x21, 0x61, 0x80, 0x6a, 0xa0, 0x62, 0x1e, 0x49,
+ 0x1c, 0x48, 0x09, 0x68, 0x14, 0x38, 0x41, 0x64,
+ 0x1c, 0x48, 0x25, 0x1c, 0x3c, 0x35, 0x0f, 0xc8,
+ 0x0f, 0xc5, 0x20, 0x1c, 0x80, 0x22, 0x4c, 0x30,
+ 0x19, 0x49, 0xf0, 0xf7, 0x33, 0xfa, 0x14, 0x22,
+ 0x20, 0x1c, 0xcc, 0x30, 0x17, 0x49, 0xf0, 0xf7,
+ 0x2d, 0xfa, 0x38, 0x22, 0x3c, 0x00, 0x58, 0x01,
+ 0x01, 0x00, 0x20, 0x1c, 0xe0, 0x30, 0x15, 0x49,
+ 0xf0, 0xf7, 0x27, 0xfa, 0x20, 0x1c, 0xff, 0x30,
+ 0x50, 0x22, 0x19, 0x30, 0x13, 0x49, 0xf0, 0xf7,
+ 0x20, 0xfa, 0x83, 0x20, 0x80, 0x00, 0x14, 0x22,
+ 0x20, 0x18, 0x10, 0x49, 0xf0, 0xf7, 0x19, 0xfa,
+ 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, 0x20, 0x18,
+ 0x0e, 0x49, 0xf0, 0xf7, 0x12, 0xfa, 0xff, 0xf7,
+ 0x8e, 0xff, 0xf8, 0xf7, 0x94, 0xfb, 0x3c, 0x00,
+ 0x94, 0x01, 0x01, 0x00, 0xb0, 0xbd, 0xff, 0xf7,
+ 0x89, 0xff, 0xb0, 0xbd, 0x00, 0x10, 0x07, 0x00,
+ 0x40, 0x63, 0x01, 0x00, 0x08, 0x20, 0x07, 0x00,
+ 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00,
+ 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x00, 0x90, 0x07, 0x00, 0x0c, 0x49, 0x80, 0xb5,
+ 0x01, 0x20, 0x48, 0x60, 0x0a, 0x48, 0x14, 0x38,
+ 0x3c, 0x00, 0xd0, 0x01, 0x01, 0x00, 0x00, 0x78,
+ 0x01, 0x28, 0x04, 0xd0, 0x08, 0x48, 0x94, 0x38,
+ 0x40, 0x6f, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x20,
+ 0x00, 0xf0, 0x1f, 0xf8, 0x80, 0xbd, 0x08, 0x68,
+ 0x00, 0x28, 0xfb, 0xd0, 0x03, 0x48, 0xf2, 0xf7,
+ 0x7a, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x98, 0x66,
+ 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5,
+ 0x00, 0x28, 0x09, 0xd1, 0xf2, 0x21, 0x0f, 0x20,
+ 0x03, 0xf0, 0x3c, 0x00, 0x0c, 0x02, 0x01, 0x00,
+ 0x13, 0xfa, 0x00, 0x22, 0x0f, 0x21, 0xf1, 0x20,
+ 0x03, 0xf0, 0xcc, 0xfa, 0x80, 0xbd, 0x01, 0x20,
+ 0xf8, 0xf7, 0x6a, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x20, 0x00, 0xf0,
+ 0xc9, 0xf9, 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0,
+ 0xff, 0xf9, 0xff, 0xf7, 0x65, 0xf8, 0x0b, 0x49,
+ 0x00, 0x20, 0x48, 0x74, 0xfb, 0xf7, 0xe6, 0xfa,
+ 0x09, 0x48, 0x00, 0x68, 0x3c, 0x00, 0x48, 0x02,
+ 0x01, 0x00, 0x00, 0x28, 0x03, 0xdc, 0x02, 0x21,
+ 0x40, 0x42, 0xff, 0xf7, 0x52, 0xfc, 0x04, 0x48,
+ 0x14, 0x30, 0x00, 0x68, 0x00, 0x28, 0x02, 0xd0,
+ 0x20, 0x1c, 0xf2, 0xf7, 0x42, 0xfe, 0x10, 0xbd,
+ 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0xd4, 0x7e,
+ 0x01, 0x00, 0x06, 0x49, 0x80, 0xb5, 0x09, 0x78,
+ 0x04, 0x29, 0x05, 0xd0, 0x05, 0x29, 0x03, 0xd0,
+ 0x06, 0x29, 0x01, 0xd0, 0x07, 0x29, 0x3c, 0x00,
+ 0x84, 0x02, 0x01, 0x00, 0x01, 0xd1, 0xfe, 0xf7,
+ 0xbd, 0xfd, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00,
+ 0x10, 0xb5, 0x09, 0x4c, 0xe0, 0x68, 0x00, 0x28,
+ 0x0b, 0xd1, 0x07, 0x48, 0x2c, 0x38, 0x00, 0x8a,
+ 0xc0, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x01, 0x20,
+ 0x62, 0x68, 0xf9, 0xf7, 0xc9, 0xfa, 0x01, 0x20,
+ 0xe0, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00,
+ 0xf4, 0x6e, 0x01, 0x00, 0x8c, 0xb5, 0x02, 0x1c,
+ 0x3c, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x08, 0x1c,
+ 0x11, 0x1c, 0xfd, 0xf7, 0x28, 0xff, 0x01, 0x90,
+ 0x00, 0x28, 0x05, 0xd0, 0x17, 0x20, 0x00, 0xab,
+ 0x18, 0x80, 0x68, 0x46, 0xfd, 0xf7, 0xff, 0xf8,
+ 0x8c, 0xbd, 0xf1, 0xb5, 0x2e, 0x4c, 0xae, 0xb0,
+ 0x00, 0x25, 0x25, 0x63, 0x20, 0x69, 0x01, 0x28,
+ 0x03, 0xd1, 0x01, 0xa8, 0x01, 0xf0, 0xa1, 0xf8,
+ 0x4e, 0xe0, 0x01, 0x26, 0x28, 0x4f, 0x26, 0x70,
+ 0x50, 0x3f, 0x3c, 0x00, 0xfc, 0x02, 0x01, 0x00,
+ 0xb8, 0x69, 0xf8, 0xf7, 0x4f, 0xf8, 0x25, 0x49,
+ 0x2c, 0x39, 0x00, 0x28, 0x1d, 0xd0, 0xe0, 0x6a,
+ 0x01, 0x28, 0x1a, 0xd1, 0x08, 0x8a, 0x0f, 0x1c,
+ 0x80, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x02, 0x20,
+ 0x62, 0x68, 0xf9, 0xf7, 0x8f, 0xfa, 0x38, 0x8a,
+ 0x00, 0x07, 0x07, 0xd5, 0xe0, 0x68, 0x01, 0x28,
+ 0x04, 0xd1, 0x00, 0x21, 0x08, 0x20, 0x62, 0x68,
+ 0xf9, 0xf7, 0x84, 0xfa, 0x3c, 0x00, 0x38, 0x03,
+ 0x01, 0x00, 0x00, 0x22, 0x18, 0x21, 0x82, 0x20,
+ 0x26, 0x63, 0x03, 0xf0, 0x36, 0xfa, 0x25, 0xe0,
+ 0x08, 0x8a, 0x0e, 0x1c, 0x80, 0x07, 0x04, 0xd5,
+ 0x00, 0x21, 0x02, 0x20, 0x62, 0x68, 0xf9, 0xf7,
+ 0x74, 0xfa, 0x30, 0x8a, 0x00, 0x07, 0x07, 0xd5,
+ 0xe0, 0x68, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x21,
+ 0x08, 0x20, 0x62, 0x68, 0xf9, 0xf7, 0x69, 0xfa,
+ 0x30, 0x8a, 0x40, 0x07, 0x04, 0xd5, 0x3c, 0x00,
+ 0x74, 0x03, 0x01, 0x00, 0x00, 0x22, 0x00, 0x21,
+ 0x04, 0x20, 0xf9, 0xf7, 0x61, 0xfa, 0x2e, 0x98,
+ 0x01, 0x28, 0x04, 0xd0, 0x1e, 0x95, 0x09, 0x21,
+ 0x1b, 0xa8, 0xff, 0xf7, 0x97, 0xff, 0xe5, 0x62,
+ 0xbd, 0x61, 0xe5, 0x60, 0x2f, 0xb0, 0xf0, 0xbd,
+ 0xf4, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x07, 0x20,
+ 0xfe, 0xf7, 0xa0, 0xfe, 0x00, 0x21, 0x0f, 0x20,
+ 0x03, 0xf0, 0x44, 0xf9, 0x0c, 0x48, 0x01, 0x78,
+ 0x3c, 0x00, 0xb0, 0x03, 0x01, 0x00, 0x00, 0x29,
+ 0x0f, 0xd0, 0x02, 0x21, 0x01, 0x70, 0x88, 0x38,
+ 0x00, 0x78, 0x00, 0x28, 0x04, 0xd0, 0x07, 0x49,
+ 0x10, 0x31, 0x48, 0x7c, 0x01, 0x30, 0x48, 0x74,
+ 0xf2, 0x22, 0x0f, 0x20, 0x05, 0x49, 0x03, 0xf0,
+ 0xfc, 0xf8, 0x00, 0x22, 0x0f, 0x21, 0xf3, 0x20,
+ 0x03, 0xf0, 0xe9, 0xf9, 0x80, 0xbd, 0x74, 0x66,
+ 0x01, 0x00, 0x80, 0x84, 0x1e, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x3c, 0x00, 0xec, 0x03, 0x01, 0x00,
+ 0xf2, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0x20, 0xf9,
+ 0x01, 0x2c, 0x0a, 0xd1, 0x08, 0x48, 0x08, 0x49,
+ 0x00, 0x68, 0x14, 0x39, 0x00, 0x28, 0x05, 0xd0,
+ 0xc8, 0x78, 0x02, 0x28, 0x02, 0xd1, 0xf7, 0xf7,
+ 0xaf, 0xfa, 0x10, 0xbd, 0x00, 0x20, 0x48, 0x70,
+ 0x05, 0x20, 0xfe, 0xf7, 0x65, 0xfe, 0x10, 0xbd,
+ 0x98, 0x66, 0x01, 0x00, 0xf8, 0xb5, 0x28, 0x4e,
+ 0x30, 0x21, 0x35, 0x1c, 0x3c, 0x00, 0x28, 0x04,
+ 0x01, 0x00, 0x60, 0x35, 0x28, 0x89, 0x89, 0x5d,
+ 0x88, 0x42, 0x03, 0xd1, 0x00, 0x20, 0xff, 0xf7,
+ 0xf6, 0xfe, 0xf8, 0xbd, 0x34, 0x1c, 0x70, 0x34,
+ 0x01, 0x21, 0x21, 0x70, 0x41, 0x18, 0x80, 0x19,
+ 0x30, 0x30, 0x29, 0x81, 0x40, 0x78, 0x1d, 0x4f,
+ 0x18, 0x3f, 0x38, 0x70, 0x00, 0x28, 0x08, 0xd0,
+ 0x00, 0x21, 0xfb, 0xf7, 0xc2, 0xf9, 0x00, 0x28,
+ 0x07, 0xd1, 0x20, 0x78, 0xff, 0xf7, 0x3c, 0x00,
+ 0x64, 0x04, 0x01, 0x00, 0x9b, 0xff, 0xe7, 0xe7,
+ 0x01, 0x21, 0x0f, 0x20, 0xf0, 0xf7, 0x1a, 0xff,
+ 0x14, 0x48, 0x01, 0x21, 0x80, 0x30, 0x81, 0x70,
+ 0x38, 0x69, 0xfb, 0xf7, 0x55, 0xfa, 0x20, 0x73,
+ 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0xd6, 0xf8,
+ 0x70, 0x7a, 0x01, 0x28, 0x0e, 0xd1, 0x0e, 0x48,
+ 0x00, 0x68, 0x00, 0x28, 0x04, 0xd0, 0x38, 0x78,
+ 0x02, 0xf0, 0xda, 0xfa, 0x00, 0x28, 0x05, 0xd0,
+ 0x3c, 0x00, 0xa0, 0x04, 0x01, 0x00, 0x30, 0x7f,
+ 0x60, 0x73, 0x03, 0x20, 0x20, 0x70, 0x71, 0x89,
+ 0x05, 0xe0, 0x05, 0x20, 0x20, 0x70, 0xa8, 0x88,
+ 0xfa, 0xf7, 0x3b, 0xfb, 0x01, 0x1c, 0x00, 0x22,
+ 0x0f, 0x20, 0x03, 0xf0, 0x86, 0xf8, 0xba, 0xe7,
+ 0x00, 0x00, 0x04, 0x66, 0x01, 0x00, 0xe4, 0x62,
+ 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x02, 0xf0,
+ 0x6c, 0xfc, 0x36, 0x4b, 0x19, 0x1c, 0xa0, 0x31,
+ 0x0a, 0x78, 0x3c, 0x00, 0xdc, 0x04, 0x01, 0x00,
+ 0x10, 0x2a, 0x02, 0xd2, 0x0a, 0x79, 0x10, 0x2a,
+ 0x01, 0xd3, 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25,
+ 0x30, 0x4e, 0xca, 0x79, 0x80, 0x36, 0x01, 0x2c,
+ 0x12, 0xd0, 0x00, 0x25, 0x02, 0x2c, 0x2e, 0xd0,
+ 0x04, 0x2c, 0x3c, 0xd1, 0x5c, 0x6b, 0x00, 0x2c,
+ 0x39, 0xd1, 0x9c, 0x6f, 0x00, 0x1b, 0x2a, 0x4c,
+ 0xa0, 0x42, 0x34, 0xd9, 0xb2, 0x68, 0x98, 0x6a,
+ 0x82, 0x42, 0x31, 0xd0, 0x3c, 0x00, 0x18, 0x05,
+ 0x01, 0x00, 0x4d, 0x72, 0x34, 0xe0, 0xb0, 0x68,
+ 0x9c, 0x6a, 0x02, 0x22, 0xa0, 0x42, 0x21, 0xd1,
+ 0x58, 0x6b, 0x00, 0x28, 0x1e, 0xd1, 0x00, 0x2d,
+ 0x1c, 0xd1, 0x48, 0x7a, 0x19, 0x28, 0x20, 0xd0,
+ 0x34, 0x68, 0x98, 0x6f, 0x64, 0x00, 0x00, 0x1b,
+ 0x74, 0x68, 0x00, 0x19, 0xff, 0x30, 0x1c, 0x4c,
+ 0x39, 0x30, 0xa0, 0x42, 0x16, 0xd2, 0x48, 0x79,
+ 0x8c, 0x79, 0x00, 0x19, 0x30, 0x28, 0x3c, 0x00,
+ 0x54, 0x05, 0x01, 0x00, 0x11, 0xd3, 0x10, 0x22,
+ 0x0f, 0xe0, 0x5c, 0x6b, 0x01, 0x2c, 0x06, 0xd1,
+ 0xb0, 0x68, 0x9a, 0x6a, 0x90, 0x42, 0x00, 0xd1,
+ 0x4d, 0x72, 0x00, 0x22, 0x05, 0xe0, 0x9c, 0x6f,
+ 0x00, 0x1b, 0x12, 0x4c, 0xa0, 0x42, 0x00, 0xd3,
+ 0x20, 0x22, 0x06, 0xe0, 0x4a, 0x7a, 0x19, 0x2a,
+ 0x01, 0xd2, 0x01, 0x32, 0x4a, 0x72, 0x20, 0x22,
+ 0xb0, 0x60, 0x30, 0x68, 0x9b, 0x6f, 0x98, 0x42,
+ 0x3c, 0x00, 0x90, 0x05, 0x01, 0x00, 0x04, 0xd1,
+ 0x00, 0x2a, 0x00, 0xd1, 0x48, 0x79, 0x4a, 0x71,
+ 0x06, 0xe0, 0x10, 0x2a, 0x04, 0xd3, 0x70, 0x60,
+ 0x33, 0x60, 0x48, 0x79, 0x88, 0x71, 0xf6, 0xe7,
+ 0xca, 0x71, 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x71, 0x02,
+ 0x00, 0x00, 0x35, 0x0c, 0x00, 0x00, 0x05, 0x48,
+ 0x80, 0xb5, 0x81, 0x7b, 0x00, 0x29, 0x05, 0xd0,
+ 0x00, 0x21, 0x3c, 0x00, 0xcc, 0x05, 0x01, 0x00,
+ 0x81, 0x73, 0x03, 0x49, 0x0f, 0x20, 0x01, 0xf0,
+ 0x0f, 0xff, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00,
+ 0xe9, 0x03, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c,
+ 0x02, 0xf0, 0xe2, 0xfb, 0x05, 0x1c, 0x38, 0x4e,
+ 0x20, 0x1c, 0x37, 0x49, 0x34, 0x1c, 0xa0, 0x34,
+ 0x10, 0x22, 0x44, 0x39, 0x01, 0x28, 0x2c, 0xd0,
+ 0x04, 0x28, 0x4e, 0xd1, 0x37, 0x1c, 0x74, 0x36,
+ 0x09, 0xce, 0x26, 0x78, 0x3c, 0x00, 0x08, 0x06,
+ 0x01, 0x00, 0xc0, 0x1a, 0x20, 0x2e, 0x04, 0xd1,
+ 0x30, 0x4e, 0xb0, 0x42, 0x01, 0xd9, 0x00, 0x26,
+ 0x4e, 0x61, 0x3e, 0x1c, 0x3f, 0x6c, 0x00, 0x2f,
+ 0x48, 0xd1, 0x77, 0x6c, 0x00, 0x2f, 0x45, 0xd1,
+ 0xb7, 0x6a, 0x00, 0x2f, 0x3d, 0xd0, 0x77, 0x6b,
+ 0x00, 0x2f, 0x3a, 0xd0, 0x27, 0x4f, 0xb8, 0x42,
+ 0x37, 0xd2, 0x60, 0x78, 0x10, 0x28, 0x06, 0xd3,
+ 0xf0, 0x6f, 0x18, 0x1a, 0x24, 0x4b, 0x3c, 0x00,
+ 0x44, 0x06, 0x01, 0x00, 0x98, 0x42, 0x01, 0xd2,
+ 0xe2, 0x70, 0xf5, 0x66, 0x48, 0x69, 0x06, 0x28,
+ 0x2f, 0xd2, 0x01, 0x30, 0x2c, 0xe0, 0x20, 0x78,
+ 0x20, 0x28, 0x01, 0xd1, 0x06, 0x23, 0x4b, 0x61,
+ 0x02, 0x23, 0x23, 0x71, 0xb3, 0x6a, 0x00, 0x2b,
+ 0x19, 0xd0, 0x49, 0x69, 0x03, 0x29, 0x16, 0xd9,
+ 0x71, 0x6b, 0x73, 0x6d, 0x59, 0x40, 0x12, 0xd0,
+ 0xe1, 0x78, 0x10, 0x29, 0x10, 0xd3, 0x61, 0x78,
+ 0x3c, 0x00, 0x80, 0x06, 0x01, 0x00, 0x33, 0x1c,
+ 0x10, 0x29, 0x0c, 0xd3, 0xd9, 0x6f, 0x69, 0x1a,
+ 0x13, 0x4d, 0xa9, 0x42, 0x07, 0xd2, 0x58, 0x6c,
+ 0x00, 0x28, 0x02, 0xd0, 0x98, 0x6c, 0x00, 0x28,
+ 0x00, 0xd1, 0x22, 0x71, 0xf8, 0xbd, 0x02, 0x28,
+ 0xfc, 0xd1, 0x22, 0x70, 0xfa, 0xe7, 0x48, 0x69,
+ 0x00, 0x28, 0x01, 0xd0, 0x01, 0x38, 0x48, 0x61,
+ 0x0a, 0x49, 0xf0, 0x6e, 0x40, 0x18, 0x02, 0xf0,
+ 0xb0, 0xfa, 0x3c, 0x00, 0xbc, 0x06, 0x01, 0x00,
+ 0x00, 0x28, 0xee, 0xd0, 0x01, 0x20, 0xe0, 0x70,
+ 0x06, 0x48, 0x28, 0x18, 0xf0, 0x66, 0xe8, 0xe7,
+ 0xa4, 0x6c, 0x01, 0x00, 0xe2, 0x04, 0x00, 0x00,
+ 0x1a, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00,
+ 0x00, 0x2d, 0x31, 0x01, 0x00, 0x5a, 0x62, 0x02,
+ 0x80, 0xb5, 0x41, 0x68, 0x09, 0x79, 0xc9, 0x07,
+ 0x13, 0xd5, 0xc1, 0x69, 0x00, 0x29, 0x0d, 0xd0,
+ 0x89, 0x79, 0x02, 0x29, 0x3c, 0x00, 0xf8, 0x06,
+ 0x01, 0x00, 0x0a, 0xd1, 0x08, 0x21, 0x01, 0x86,
+ 0x01, 0x1c, 0x38, 0x31, 0x81, 0x62, 0x02, 0x1c,
+ 0x06, 0x48, 0x04, 0x49, 0xf9, 0xf7, 0xfd, 0xfc,
+ 0x80, 0xbd, 0xf7, 0xf7, 0xdc, 0xfb, 0x80, 0xbd,
+ 0xf7, 0xf7, 0x23, 0xfb, 0x80, 0xbd, 0xb9, 0x71,
+ 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x10, 0xb5,
+ 0x00, 0x24, 0x00, 0x28, 0x03, 0xd0, 0x02, 0xf0,
+ 0xe8, 0xfe, 0x00, 0x28, 0x17, 0xd0, 0x3c, 0x00,
+ 0x34, 0x07, 0x01, 0x00, 0x0c, 0x4c, 0x01, 0x20,
+ 0xa0, 0x72, 0x20, 0x68, 0x00, 0x21, 0x41, 0x62,
+ 0x0a, 0x49, 0x02, 0x68, 0xc9, 0x78, 0x60, 0x32,
+ 0x91, 0x71, 0x21, 0x89, 0x01, 0x31, 0x21, 0x81,
+ 0x00, 0x68, 0x40, 0x30, 0x81, 0x83, 0xfb, 0xf7,
+ 0x31, 0xfc, 0x20, 0x68, 0x00, 0x68, 0xfc, 0xf7,
+ 0xa1, 0xf9, 0x01, 0x24, 0x20, 0x1c, 0x10, 0xbd,
+ 0x14, 0x7a, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00,
+ 0x3c, 0x00, 0x70, 0x07, 0x01, 0x00, 0x7f, 0xb5,
+ 0x06, 0x1c, 0x1e, 0x48, 0x1d, 0x1c, 0x43, 0x88,
+ 0x02, 0x88, 0x1c, 0x21, 0x00, 0x20, 0x90, 0xb0,
+ 0xf0, 0xf7, 0x45, 0xff, 0x03, 0x90, 0x04, 0x68,
+ 0xff, 0x21, 0x01, 0x31, 0x21, 0x80, 0x08, 0x20,
+ 0x60, 0x80, 0x06, 0x20, 0x20, 0x71, 0x04, 0x20,
+ 0x60, 0x71, 0xc0, 0x01, 0x00, 0x2d, 0x00, 0xd1,
+ 0x08, 0x1c, 0xe0, 0x80, 0x01, 0xa8, 0x02, 0x30,
+ 0x31, 0x1c, 0x3c, 0x00, 0xac, 0x07, 0x01, 0x00,
+ 0x05, 0x1c, 0xfa, 0xf7, 0x5f, 0xfa, 0x10, 0x49,
+ 0x68, 0x46, 0xfa, 0xf7, 0x5b, 0xfa, 0x20, 0x1c,
+ 0x08, 0x30, 0x69, 0x46, 0xfa, 0xf7, 0x56, 0xfa,
+ 0x29, 0x1c, 0x20, 0x1c, 0x12, 0x30, 0xfa, 0xf7,
+ 0x51, 0xfa, 0x10, 0xab, 0x98, 0x88, 0x00, 0x22,
+ 0x01, 0x21, 0x20, 0x83, 0xd8, 0x88, 0x60, 0x83,
+ 0x18, 0x89, 0xe0, 0x81, 0x58, 0x89, 0x20, 0x82,
+ 0x68, 0x46, 0xf9, 0xf7, 0x3c, 0x00, 0xe8, 0x07,
+ 0x01, 0x00, 0x17, 0xff, 0x14, 0xb0, 0x70, 0xbd,
+ 0x00, 0x00, 0x14, 0x6e, 0x01, 0x00, 0x12, 0x61,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x18, 0x48,
+ 0x25, 0x1c, 0x00, 0x78, 0x60, 0x35, 0x80, 0x07,
+ 0x00, 0x28, 0x08, 0xda, 0xe8, 0x79, 0x00, 0x28,
+ 0x05, 0xd0, 0xf4, 0xf7, 0x70, 0xff, 0x01, 0x1c,
+ 0x20, 0x1c, 0x00, 0xf0, 0x78, 0xf9, 0x29, 0x88,
+ 0x2e, 0x20, 0x00, 0x5d, 0xf2, 0xf7, 0x3c, 0x00,
+ 0x24, 0x08, 0x01, 0x00, 0x9f, 0xfa, 0xe8, 0x79,
+ 0x00, 0x28, 0x0b, 0xd1, 0x20, 0x1c, 0x40, 0x30,
+ 0x01, 0x8b, 0x22, 0x69, 0x11, 0x80, 0x41, 0x8b,
+ 0x22, 0x69, 0x51, 0x80, 0x80, 0x8b, 0x21, 0x69,
+ 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1,
+ 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02,
+ 0x11, 0x43, 0x01, 0x80, 0x6a, 0x7a, 0xe0, 0x68,
+ 0x02, 0x49, 0xf2, 0xf7, 0x53, 0xfa, 0xb0, 0xbd,
+ 0x3c, 0x00, 0x60, 0x08, 0x01, 0x00, 0x1d, 0x75,
+ 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, 0x90, 0xb5,
+ 0x04, 0x1c, 0x38, 0x23, 0x0c, 0x49, 0x58, 0x43,
+ 0x43, 0x18, 0x85, 0xb0, 0x00, 0x20, 0x0a, 0x49,
+ 0x02, 0x90, 0x18, 0x1c, 0x01, 0x22, 0x03, 0x91,
+ 0x09, 0x49, 0x04, 0x92, 0x30, 0x30, 0x42, 0x78,
+ 0x09, 0x88, 0x01, 0x92, 0x00, 0x91, 0x01, 0x78,
+ 0x5a, 0x6b, 0x0c, 0x33, 0x20, 0x1c, 0xfb, 0xf7,
+ 0x7c, 0xf8, 0x3c, 0x00, 0x9c, 0x08, 0x01, 0x00,
+ 0x05, 0xb0, 0x90, 0xbd, 0xd4, 0xe4, 0x01, 0x00,
+ 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00,
+ 0x90, 0xb5, 0x85, 0xb0, 0x03, 0x1c, 0x00, 0x20,
+ 0x02, 0x90, 0x0a, 0x49, 0x18, 0x1c, 0x00, 0x22,
+ 0x04, 0x92, 0x60, 0x30, 0x03, 0x91, 0xc2, 0x79,
+ 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, 0x5a, 0x6a,
+ 0xdc, 0x68, 0x20, 0x33, 0x99, 0x7b, 0x40, 0x7a,
+ 0x23, 0x1c, 0xfb, 0xf7, 0x3c, 0x00, 0xd8, 0x08,
+ 0x01, 0x00, 0x5d, 0xf8, 0x05, 0xb0, 0x90, 0xbd,
+ 0x00, 0x00, 0x0d, 0x4f, 0x00, 0x00, 0x07, 0x49,
+ 0x80, 0xb5, 0x88, 0x6a, 0x00, 0x28, 0x08, 0xd1,
+ 0x01, 0x20, 0x88, 0x62, 0xf0, 0xf7, 0xaf, 0xfc,
+ 0x01, 0x1c, 0x03, 0x48, 0x00, 0x22, 0xf2, 0xf7,
+ 0xb8, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x41, 0xe4, 0x00, 0x00, 0xf0, 0xb5,
+ 0x9b, 0xb0, 0x00, 0x28, 0x20, 0xd0, 0x3c, 0x00,
+ 0x14, 0x09, 0x01, 0x00, 0x01, 0x1c, 0x08, 0xa8,
+ 0xfc, 0xf7, 0xb2, 0xfd, 0x01, 0x20, 0x11, 0x90,
+ 0x03, 0x20, 0x10, 0xad, 0x28, 0x72, 0x04, 0x20,
+ 0x68, 0x72, 0x05, 0xa8, 0x00, 0x22, 0x69, 0x46,
+ 0xf4, 0xf7, 0x00, 0xff, 0x00, 0x24, 0x00, 0x26,
+ 0x05, 0xa9, 0x00, 0x20, 0xf9, 0xf7, 0xfc, 0xfa,
+ 0x69, 0x46, 0xf9, 0xf7, 0xf9, 0xfa, 0x0b, 0x90,
+ 0x08, 0xa8, 0xfc, 0xf7, 0xbb, 0xfd, 0x01, 0x34,
+ 0x3c, 0x00, 0x50, 0x09, 0x01, 0x00, 0x02, 0x2c,
+ 0x2e, 0x72, 0xf0, 0xdb, 0x1b, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0x90, 0xb5, 0x04, 0x1c, 0x4c, 0x23,
+ 0x0c, 0x49, 0x58, 0x43, 0x43, 0x18, 0x85, 0xb0,
+ 0x00, 0x20, 0x0a, 0x49, 0x02, 0x90, 0x00, 0x22,
+ 0x04, 0x92, 0x3c, 0x20, 0x03, 0x91, 0xc2, 0x5c,
+ 0x08, 0x48, 0x41, 0x88, 0x01, 0x92, 0x41, 0x20,
+ 0x00, 0x91, 0xc1, 0x5c, 0x5a, 0x68, 0x08, 0x33,
+ 0x20, 0x1c, 0x3c, 0x00, 0x8c, 0x09, 0x01, 0x00,
+ 0xfb, 0xf7, 0x02, 0xf8, 0x05, 0xb0, 0x90, 0xbd,
+ 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00,
+ 0x3c, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c,
+ 0x22, 0x4c, 0x38, 0x21, 0x17, 0x1c, 0x05, 0x1c,
+ 0x20, 0x1c, 0xef, 0xf7, 0x75, 0xfd, 0x23, 0x1c,
+ 0x25, 0x33, 0x21, 0x1c, 0x24, 0x31, 0x10, 0x20,
+ 0x6a, 0x46, 0xf9, 0xf7, 0x1d, 0xf8, 0x00, 0xab,
+ 0x18, 0x88, 0x07, 0x21, 0x3c, 0x00, 0xc8, 0x09,
+ 0x01, 0x00, 0x1a, 0x4a, 0x02, 0x38, 0x20, 0x84,
+ 0x20, 0x1c, 0x20, 0x30, 0x81, 0x70, 0xc5, 0x70,
+ 0x11, 0x1c, 0x06, 0x73, 0x47, 0x73, 0x34, 0x31,
+ 0x21, 0x63, 0x30, 0x32, 0x62, 0x63, 0x01, 0x79,
+ 0x25, 0x1c, 0x10, 0x35, 0x21, 0x81, 0x20, 0x60,
+ 0xe5, 0x60, 0x18, 0x88, 0x40, 0x1a, 0x20, 0x83,
+ 0x20, 0x1c, 0x28, 0x30, 0x20, 0x61, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x11, 0xf8, 0x0d, 0x48, 0x3c, 0x00,
+ 0x04, 0x0a, 0x01, 0x00, 0x00, 0x68, 0x00, 0x28,
+ 0x07, 0xd0, 0x06, 0x21, 0x20, 0x1c, 0xf8, 0xf7,
+ 0x47, 0xfd, 0x10, 0x21, 0x28, 0x1c, 0xf8, 0xf7,
+ 0x43, 0xfd, 0x08, 0x48, 0x02, 0x21, 0x01, 0x62,
+ 0x44, 0x62, 0x01, 0x21, 0x01, 0x62, 0x06, 0x48,
+ 0x00, 0x68, 0xef, 0xf7, 0xd5, 0xfc, 0xf8, 0xbd,
+ 0x8c, 0x8e, 0x01, 0x00, 0xe4, 0xfe, 0x01, 0x00,
+ 0xcc, 0x5c, 0x01, 0x00, 0x00, 0x30, 0x07, 0x00,
+ 0x3c, 0x00, 0x40, 0x0a, 0x01, 0x00, 0x5c, 0x5b,
+ 0x01, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x40, 0x36,
+ 0x31, 0x8b, 0x04, 0x1c, 0x25, 0x1c, 0x08, 0x07,
+ 0x80, 0x0f, 0x60, 0x35, 0x01, 0x28, 0x85, 0xb0,
+ 0x3b, 0xd0, 0xe8, 0x79, 0x00, 0x28, 0x05, 0xd1,
+ 0x20, 0x69, 0x01, 0x80, 0xb0, 0x8b, 0x21, 0x69,
+ 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1,
+ 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02,
+ 0x11, 0x43, 0x3c, 0x00, 0x7c, 0x0a, 0x01, 0x00,
+ 0x01, 0x80, 0x20, 0x48, 0x00, 0x78, 0x80, 0x07,
+ 0x26, 0xd5, 0xe8, 0x79, 0x00, 0x28, 0x23, 0xd0,
+ 0xa0, 0x6b, 0x00, 0x28, 0x1c, 0xd0, 0xf4, 0xf7,
+ 0x2f, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xb8, 0x21,
+ 0x09, 0x58, 0x00, 0x29, 0x05, 0xd0, 0x30, 0x21,
+ 0x09, 0x5d, 0xb4, 0x30, 0x08, 0x18, 0x07, 0x7a,
+ 0x00, 0xe0, 0x00, 0x27, 0x01, 0x21, 0x38, 0x1c,
+ 0xfa, 0xf7, 0x86, 0xf9, 0x3c, 0x00, 0xb8, 0x0a,
+ 0x01, 0x00, 0x04, 0x90, 0x20, 0x69, 0x04, 0x30,
+ 0x39, 0x1c, 0xf4, 0xf7, 0x6c, 0xfd, 0x04, 0x99,
+ 0xfa, 0xf7, 0xd3, 0xf9, 0x02, 0xe0, 0x20, 0x1c,
+ 0xf7, 0xf7, 0xf9, 0xfb, 0x70, 0x83, 0x70, 0x8b,
+ 0x21, 0x69, 0x00, 0x22, 0x48, 0x80, 0x09, 0x49,
+ 0x0a, 0x48, 0x04, 0x92, 0x03, 0x91, 0x02, 0x90,
+ 0xea, 0x79, 0x29, 0x88, 0x01, 0x92, 0x00, 0x91,
+ 0x62, 0x6a, 0xe3, 0x68, 0x20, 0x34, 0x3c, 0x00,
+ 0xf4, 0x0a, 0x01, 0x00, 0xa1, 0x7b, 0x68, 0x7a,
+ 0xfa, 0xf7, 0x4c, 0xff, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x1d, 0x75, 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00,
+ 0xdd, 0x2f, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c,
+ 0x26, 0x1c, 0x01, 0x20, 0x20, 0x36, 0x00, 0x29,
+ 0x02, 0x90, 0x2e, 0xd0, 0x58, 0x20, 0x00, 0x5b,
+ 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x01, 0xd1,
+ 0xcc, 0x31, 0x00, 0xe0, 0xb4, 0x31, 0x48, 0x68,
+ 0x3c, 0x00, 0x30, 0x0b, 0x01, 0x00, 0x0d, 0x1c,
+ 0x00, 0x28, 0x24, 0xd0, 0x20, 0x1c, 0x60, 0x30,
+ 0xc2, 0x79, 0x01, 0x21, 0x01, 0x2a, 0x00, 0xd0,
+ 0x00, 0x21, 0x27, 0x1c, 0x62, 0x6d, 0x30, 0x37,
+ 0x00, 0x2a, 0x04, 0xd0, 0x3a, 0x1c, 0x28, 0x1c,
+ 0xf6, 0xf7, 0xe7, 0xfd, 0x07, 0xe0, 0x42, 0x7a,
+ 0x23, 0x1c, 0x68, 0x33, 0x00, 0x92, 0x3a, 0x1c,
+ 0x28, 0x1c, 0xf6, 0xf7, 0x9a, 0xfd, 0x02, 0x90,
+ 0x38, 0x78, 0x3c, 0x00, 0x6c, 0x0b, 0x01, 0x00,
+ 0x40, 0x19, 0x00, 0x7a, 0x01, 0x21, 0xb0, 0x73,
+ 0xfa, 0xf7, 0x26, 0xf9, 0x01, 0xe0, 0x00, 0x20,
+ 0xb0, 0x73, 0x60, 0x62, 0xb0, 0x7b, 0x0d, 0x28,
+ 0x01, 0xd9, 0xf0, 0xf7, 0xbb, 0xfb, 0x02, 0x98,
+ 0xfe, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c,
+ 0x80, 0x30, 0x25, 0x1c, 0x5e, 0x35, 0x00, 0x78,
+ 0xae, 0x1d, 0xaf, 0x1f, 0x00, 0x28, 0x83, 0xb0,
+ 0x12, 0xd1, 0xf4, 0xf7, 0x3c, 0x00, 0xa8, 0x0b,
+ 0x01, 0x00, 0xc7, 0xfb, 0x00, 0x28, 0x07, 0xd0,
+ 0x06, 0x98, 0x05, 0x99, 0x02, 0x90, 0x04, 0x98,
+ 0x01, 0x90, 0xa6, 0x61, 0x67, 0x61, 0x0d, 0xe0,
+ 0x04, 0x98, 0x06, 0x99, 0x02, 0x90, 0x05, 0x98,
+ 0x01, 0x90, 0x66, 0x61, 0x05, 0xe0, 0x04, 0xa9,
+ 0x03, 0xc9, 0x02, 0x90, 0x06, 0x98, 0x01, 0x90,
+ 0x67, 0x61, 0xa5, 0x61, 0x06, 0x22, 0x38, 0x1c,
+ 0xef, 0xf7, 0x8b, 0xfc, 0x06, 0x22, 0x3c, 0x00,
+ 0xe4, 0x0b, 0x01, 0x00, 0x28, 0x1c, 0x02, 0x99,
+ 0xef, 0xf7, 0x86, 0xfc, 0x06, 0x22, 0x30, 0x1c,
+ 0x01, 0x99, 0xef, 0xf7, 0x81, 0xfc, 0x07, 0xb0,
+ 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf0, 0xf7,
+ 0x7b, 0xfb, 0x02, 0x49, 0xa0, 0x00, 0x08, 0x58,
+ 0x85, 0x60, 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00,
+ 0xf8, 0xb5, 0xff, 0xf7, 0x59, 0xf9, 0x05, 0x1c,
+ 0x3c, 0x00, 0x20, 0x0c, 0x01, 0x00, 0xfe, 0xf7,
+ 0xe8, 0xff, 0x04, 0x1c, 0x28, 0x1c, 0xff, 0xf7,
+ 0x58, 0xf9, 0x00, 0x28, 0x42, 0xd0, 0x69, 0x1e,
+ 0x21, 0x4d, 0x4a, 0x00, 0x20, 0x4b, 0x1c, 0x3d,
+ 0xae, 0x5c, 0x98, 0x5c, 0x30, 0x40, 0xd6, 0x18,
+ 0x01, 0x23, 0xf6, 0x56, 0x52, 0x19, 0xd2, 0x56,
+ 0x96, 0x42, 0x01, 0xdd, 0x15, 0x1c, 0x00, 0xe0,
+ 0x35, 0x1c, 0x18, 0x4b, 0x2a, 0x3b, 0x59, 0x56,
+ 0x51, 0x18, 0x3c, 0x00, 0x5c, 0x0c, 0x01, 0x00,
+ 0xb1, 0x42, 0x00, 0xdb, 0x31, 0x1c, 0x0e, 0x1c,
+ 0x00, 0x28, 0x26, 0xd0, 0xfe, 0xf7, 0xbe, 0xff,
+ 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, 0x12, 0x49,
+ 0x00, 0x23, 0xc9, 0x56, 0x00, 0xab, 0x15, 0x22,
+ 0x10, 0x1a, 0x5b, 0x78, 0x00, 0x1b, 0x40, 0x18,
+ 0xd2, 0x1a, 0x12, 0x1b, 0x51, 0x18, 0x00, 0x22,
+ 0x85, 0x42, 0x02, 0xdb, 0x00, 0xab, 0x1a, 0x70,
+ 0x02, 0xe0, 0x40, 0x1b, 0x3c, 0x00, 0x98, 0x0c,
+ 0x01, 0x00, 0x00, 0xab, 0x18, 0x70, 0x8e, 0x42,
+ 0x02, 0xdb, 0x00, 0xab, 0x5a, 0x70, 0x02, 0xe0,
+ 0x88, 0x1b, 0x00, 0xab, 0x58, 0x70, 0x00, 0x98,
+ 0xff, 0xf7, 0x8d, 0xf8, 0x01, 0xf0, 0xff, 0xf8,
+ 0xf8, 0xbd, 0xe6, 0x78, 0x01, 0x00, 0x65, 0x73,
+ 0x01, 0x00, 0x70, 0xb5, 0x08, 0x4e, 0x06, 0x4d,
+ 0x00, 0x24, 0x06, 0x20, 0x60, 0x43, 0x80, 0x19,
+ 0x06, 0x22, 0x29, 0x1c, 0xef, 0xf7, 0x3c, 0x00,
+ 0xd4, 0x0c, 0x01, 0x00, 0x11, 0xfc, 0x01, 0x34,
+ 0x05, 0x2c, 0xf5, 0xdb, 0x70, 0xbd, 0x00, 0x00,
+ 0x4e, 0x47, 0x01, 0x00, 0xe6, 0x7a, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48,
+ 0xfe, 0xf7, 0x42, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0xa8, 0x79, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48,
+ 0xfe, 0xf7, 0x4a, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x10, 0x0d, 0x01, 0x00, 0xa8, 0x79,
+ 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x10, 0xb5,
+ 0x00, 0x28, 0x0a, 0xd0, 0x06, 0x4c, 0xa1, 0x69,
+ 0x00, 0x29, 0x01, 0xd1, 0x00, 0x20, 0x00, 0xe0,
+ 0x09, 0x68, 0xf7, 0xf7, 0x38, 0xfb, 0xa0, 0x61,
+ 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, 0xa4, 0x6e,
+ 0x01, 0x00, 0xf3, 0xb5, 0x37, 0x48, 0x83, 0xb0,
+ 0x02, 0x90, 0x80, 0x79, 0x0e, 0x1c, 0x00, 0x27,
+ 0x01, 0x90, 0x3c, 0x00, 0x4c, 0x0d, 0x01, 0x00,
+ 0x34, 0x48, 0x35, 0x4a, 0x01, 0x6a, 0x03, 0x9c,
+ 0x03, 0x1c, 0x1b, 0x69, 0xa1, 0x42, 0x01, 0xd0,
+ 0x93, 0x61, 0x00, 0xe0, 0x53, 0x61, 0x31, 0x49,
+ 0x8a, 0x68, 0x96, 0x42, 0x3f, 0xd0, 0x2d, 0x48,
+ 0x8e, 0x60, 0xc1, 0x68, 0x00, 0x24, 0x25, 0x1c,
+ 0x00, 0x29, 0x2d, 0x48, 0x09, 0xd0, 0x00, 0x2e,
+ 0x0b, 0xd0, 0x28, 0x48, 0x01, 0x24, 0xc0, 0x6a,
+ 0x24, 0x03, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x0d,
+ 0x01, 0x00, 0x06, 0xd0, 0x01, 0x27, 0x04, 0xe0,
+ 0x00, 0x2e, 0x01, 0xd0, 0x05, 0x1c, 0xf9, 0xe7,
+ 0x04, 0x1c, 0x00, 0x2f, 0x06, 0xd0, 0xfb, 0xf7,
+ 0x1e, 0xfb, 0x1f, 0x48, 0x01, 0x68, 0x22, 0x48,
+ 0xfe, 0xf7, 0xfb, 0xfa, 0x20, 0x1c, 0x28, 0x43,
+ 0x0e, 0xd0, 0x2a, 0x1c, 0x21, 0x1c, 0x01, 0x20,
+ 0x02, 0xf0, 0x21, 0xfe, 0x2a, 0x1c, 0x21, 0x1c,
+ 0x02, 0x20, 0x02, 0xf0, 0x1c, 0xfe, 0x3c, 0x00,
+ 0xc4, 0x0d, 0x01, 0x00, 0x2a, 0x1c, 0x21, 0x1c,
+ 0x03, 0x20, 0x02, 0xf0, 0x17, 0xfe, 0x00, 0x2f,
+ 0x06, 0xd1, 0x13, 0x48, 0x01, 0x68, 0x16, 0x48,
+ 0xfe, 0xf7, 0xce, 0xfa, 0xfa, 0xf7, 0x42, 0xfd,
+ 0x03, 0x9c, 0x00, 0x2c, 0x01, 0xd1, 0x01, 0xf0,
+ 0xe1, 0xff, 0x01, 0xa9, 0x03, 0xc9, 0x88, 0x71,
+ 0x01, 0xf0, 0xdc, 0xff, 0x0a, 0x4c, 0x0a, 0x4b,
+ 0x44, 0x3c, 0xa1, 0x69, 0x22, 0x69, 0x08, 0x3b,
+ 0x3c, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x41, 0x1a,
+ 0x00, 0x2a, 0x03, 0xd0, 0x1a, 0x68, 0x51, 0x18,
+ 0x19, 0x60, 0x02, 0xe0, 0x5a, 0x68, 0x51, 0x18,
+ 0x59, 0x60, 0xa0, 0x61, 0x26, 0x61, 0x05, 0xb0,
+ 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0xb0, 0x57,
+ 0x01, 0x00, 0x00, 0x10, 0x60, 0x00, 0x84, 0x73,
+ 0x01, 0x00, 0x1c, 0xb5, 0x4c, 0x23, 0x08, 0x49,
+ 0x58, 0x43, 0x3c, 0x00, 0x3c, 0x0e, 0x01, 0x00,
+ 0x44, 0x18, 0x20, 0x1c, 0x40, 0x30, 0x41, 0x78,
+ 0x62, 0x68, 0x00, 0x91, 0x01, 0x92, 0x3f, 0x21,
+ 0x0b, 0x5d, 0x61, 0x8f, 0x00, 0x78, 0x62, 0x6c,
+ 0xfa, 0xf7, 0x28, 0xf8, 0xa0, 0x85, 0x1c, 0xbd,
+ 0x58, 0xe3, 0x01, 0x00, 0xb0, 0xb5, 0x16, 0x4d,
+ 0xa9, 0x69, 0x00, 0x29, 0x25, 0xd0, 0x2c, 0x1c,
+ 0x30, 0x34, 0x20, 0x7a, 0x00, 0x28, 0x20, 0xd0,
+ 0x00, 0x23, 0x81, 0x22, 0x3c, 0x00, 0x78, 0x0e,
+ 0x01, 0x00, 0x18, 0x20, 0x02, 0xf0, 0x89, 0xfc,
+ 0x20, 0x7a, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e,
+ 0x20, 0x72, 0x12, 0xd1, 0x0c, 0x48, 0x28, 0x21,
+ 0x2c, 0x38, 0x09, 0x5c, 0x21, 0x72, 0x29, 0x7a,
+ 0x00, 0x29, 0x01, 0xd1, 0x00, 0x6a, 0x00, 0xe0,
+ 0x40, 0x6a, 0xa9, 0x69, 0x80, 0x02, 0x81, 0x42,
+ 0x03, 0xd2, 0x49, 0x00, 0x81, 0x42, 0x01, 0xd2,
+ 0xa9, 0x61, 0xb0, 0xbd, 0xa8, 0x61, 0x3c, 0x00,
+ 0xb4, 0x0e, 0x01, 0x00, 0xb0, 0xbd, 0x01, 0xf0,
+ 0x1d, 0xf9, 0xb0, 0xbd, 0xf4, 0x6e, 0x01, 0x00,
+ 0x7f, 0xb5, 0x05, 0x1c, 0x04, 0x20, 0x6b, 0x46,
+ 0x1b, 0x18, 0x02, 0x90, 0x00, 0x26, 0x28, 0x18,
+ 0x6a, 0x46, 0x02, 0xa9, 0xfc, 0xf7, 0x8a, 0xfb,
+ 0x00, 0x28, 0x06, 0xd1, 0x00, 0xab, 0x18, 0x79,
+ 0x04, 0x28, 0x08, 0xd0, 0x18, 0x79, 0x03, 0x28,
+ 0x05, 0xd0, 0x00, 0xab, 0x18, 0x79, 0x10, 0x21,
+ 0x3c, 0x00, 0xf0, 0x0e, 0x01, 0x00, 0x08, 0x43,
+ 0x04, 0xb0, 0x70, 0xbd, 0x03, 0xa9, 0xe8, 0x68,
+ 0xf6, 0xf7, 0xd3, 0xff, 0x00, 0x28, 0x05, 0xd0,
+ 0x03, 0x98, 0x20, 0x21, 0x08, 0x43, 0x00, 0x06,
+ 0x00, 0x0e, 0xf1, 0xe7, 0x03, 0xa9, 0x00, 0x20,
+ 0xf6, 0xf7, 0xc7, 0xff, 0x04, 0x1c, 0x01, 0xd1,
+ 0x02, 0x20, 0xe9, 0xe7, 0xe8, 0x68, 0x00, 0xab,
+ 0x20, 0x60, 0x00, 0x98, 0x60, 0x60, 0x18, 0x79,
+ 0xa0, 0x76, 0x3c, 0x00, 0x2c, 0x0f, 0x01, 0x00,
+ 0xa8, 0x8c, 0x60, 0x76, 0xe8, 0x69, 0x20, 0x61,
+ 0x68, 0x8c, 0xa0, 0x82, 0x28, 0x8c, 0x20, 0x76,
+ 0x69, 0x69, 0x09, 0x48, 0x81, 0x42, 0x00, 0xd9,
+ 0x08, 0x1c, 0xa0, 0x60, 0x20, 0x1c, 0x02, 0xf0,
+ 0xa1, 0xfd, 0xa1, 0x68, 0x00, 0x29, 0x04, 0xd0,
+ 0x03, 0x9a, 0xa1, 0x32, 0x08, 0x20, 0x02, 0xf0,
+ 0x37, 0xfb, 0x30, 0x1c, 0xc7, 0xe7, 0x00, 0x00,
+ 0xa0, 0x86, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x0f,
+ 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, 0x40, 0x78,
+ 0x01, 0x24, 0x06, 0x28, 0x50, 0xd3, 0xc1, 0x1e,
+ 0x03, 0x20, 0xef, 0xf7, 0x5e, 0xfb, 0x00, 0x90,
+ 0x0e, 0x28, 0x49, 0xd8, 0x00, 0x20, 0x0a, 0xe0,
+ 0x41, 0x00, 0x09, 0x18, 0x89, 0x19, 0x4a, 0x79,
+ 0x89, 0x79, 0x51, 0x18, 0x01, 0x39, 0x0e, 0x29,
+ 0x00, 0xd9, 0x00, 0x24, 0x01, 0x30, 0x00, 0x99,
+ 0x88, 0x42, 0xf1, 0xdb, 0x00, 0x2c, 0x3c, 0x00,
+ 0xa4, 0x0f, 0x01, 0x00, 0x37, 0xd0, 0x03, 0x22,
+ 0xb1, 0x1c, 0x1b, 0x48, 0xef, 0xf7, 0xa4, 0xfa,
+ 0x1a, 0x4c, 0x1c, 0x21, 0x20, 0x1c, 0xef, 0xf7,
+ 0x4d, 0xfa, 0x00, 0x25, 0x28, 0xe0, 0x69, 0x00,
+ 0x49, 0x19, 0x02, 0x91, 0x8a, 0x19, 0x53, 0x79,
+ 0x15, 0x48, 0x43, 0x54, 0x93, 0x79, 0x0f, 0x18,
+ 0x7b, 0x70, 0xd3, 0x79, 0xbb, 0x70, 0x07, 0x23,
+ 0xd2, 0x56, 0x01, 0x92, 0x44, 0x5c, 0x0f, 0xe0,
+ 0x3c, 0x00, 0xe0, 0x0f, 0x01, 0x00, 0x20, 0x1c,
+ 0xfe, 0xf7, 0x7b, 0xff, 0x00, 0x28, 0x07, 0xd0,
+ 0x0c, 0x4a, 0x60, 0x00, 0x80, 0x18, 0x01, 0x21,
+ 0x10, 0x38, 0x81, 0x73, 0x01, 0x99, 0xc1, 0x73,
+ 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x07, 0x48,
+ 0x02, 0x99, 0x40, 0x5c, 0x79, 0x78, 0x40, 0x18,
+ 0xa0, 0x42, 0xe8, 0xd8, 0x01, 0x35, 0x00, 0x98,
+ 0x85, 0x42, 0xd3, 0xdb, 0xfe, 0xbd, 0xe8, 0x62,
+ 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x10, 0x01, 0x00,
+ 0xe6, 0x78, 0x01, 0x00, 0xeb, 0x62, 0x01, 0x00,
+ 0x01, 0x68, 0x0f, 0x29, 0x01, 0xdd, 0x0f, 0x21,
+ 0x01, 0x60, 0x01, 0x68, 0x00, 0x29, 0x01, 0xda,
+ 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, 0x00, 0x00,
+ 0xf8, 0xb5, 0x04, 0x1c, 0x1e, 0x48, 0x22, 0x1d,
+ 0x05, 0x68, 0x00, 0x92, 0x16, 0x1c, 0x23, 0x1c,
+ 0x0f, 0x1c, 0xcc, 0x33, 0x2a, 0x1c, 0x20, 0x1c,
+ 0x70, 0x30, 0xa1, 0x6d, 0x3c, 0x00, 0x58, 0x10,
+ 0x01, 0x00, 0x00, 0xf0, 0x3e, 0xf9, 0x00, 0x96,
+ 0xa1, 0x6d, 0x27, 0x20, 0x01, 0x40, 0x23, 0x1c,
+ 0xe4, 0x33, 0x20, 0x1c, 0x2a, 0x1c, 0x5c, 0x30,
+ 0x00, 0xf0, 0x33, 0xf9, 0x13, 0x48, 0x00, 0x78,
+ 0x0e, 0x28, 0x01, 0xd2, 0x01, 0x25, 0x85, 0x40,
+ 0x11, 0x48, 0xa1, 0x69, 0x00, 0x78, 0x29, 0x40,
+ 0x00, 0x07, 0x0b, 0xd4, 0x48, 0x07, 0x03, 0xd5,
+ 0x08, 0x07, 0x01, 0xd5, 0x04, 0x20, 0x3c, 0x00,
+ 0x94, 0x10, 0x01, 0x00, 0x81, 0x43, 0x88, 0x06,
+ 0x03, 0xd5, 0x48, 0x06, 0x01, 0xd5, 0x20, 0x20,
+ 0x81, 0x43, 0x23, 0x1c, 0xb4, 0x33, 0x2a, 0x1c,
+ 0x20, 0x1c, 0x30, 0x30, 0x00, 0x96, 0x00, 0xf0,
+ 0x13, 0xf9, 0x39, 0x1c, 0x20, 0x1c, 0xf0, 0xf7,
+ 0x47, 0xfc, 0xf8, 0xbd, 0x2c, 0x7d, 0x01, 0x00,
+ 0x10, 0x67, 0x01, 0x00, 0x1d, 0x75, 0x01, 0x00,
+ 0xb0, 0xb5, 0xf2, 0xf7, 0x27, 0xfc, 0xfe, 0xf7,
+ 0x3c, 0x00, 0xd0, 0x10, 0x01, 0x00, 0x09, 0xf9,
+ 0x0f, 0x48, 0x00, 0x25, 0x45, 0x70, 0x0e, 0x48,
+ 0x0d, 0x4c, 0x00, 0x88, 0x5b, 0x34, 0xa0, 0x82,
+ 0xf9, 0xf7, 0x23, 0xfd, 0x20, 0x61, 0xa0, 0x8a,
+ 0x00, 0x28, 0x04, 0xd0, 0x01, 0x21, 0x89, 0x05,
+ 0xef, 0xf7, 0x0d, 0xfb, 0xe1, 0x82, 0x05, 0x48,
+ 0x01, 0x38, 0x45, 0x60, 0x01, 0xf0, 0x55, 0xfe,
+ 0x02, 0x1c, 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20,
+ 0xf4, 0xf7, 0x3c, 0x00, 0x0c, 0x11, 0x01, 0x00,
+ 0x49, 0xfd, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c,
+ 0x5a, 0x89, 0x04, 0x1c, 0x04, 0x98, 0x92, 0x07,
+ 0x92, 0x0f, 0x00, 0x25, 0x00, 0x29, 0xa2, 0x71,
+ 0x09, 0xd0, 0x05, 0x21, 0xf9, 0xf7, 0x24, 0xfb,
+ 0x00, 0x28, 0x01, 0xd0, 0xc0, 0x78, 0x00, 0xe0,
+ 0x01, 0x20, 0xe0, 0x71, 0x00, 0xe0, 0xe5, 0x71,
+ 0xe5, 0x60, 0xa6, 0x60, 0x3c, 0x00, 0x48, 0x11,
+ 0x01, 0x00, 0x70, 0xbd, 0x00, 0x00, 0xfe, 0xb5,
+ 0x05, 0x1c, 0x0e, 0x22, 0x9c, 0x30, 0x16, 0x49,
+ 0xef, 0xf7, 0xcf, 0xf9, 0x29, 0x1c, 0x28, 0x1c,
+ 0x80, 0x30, 0x88, 0x31, 0x00, 0x24, 0x2f, 0x1c,
+ 0x60, 0x37, 0x02, 0x91, 0x01, 0x90, 0x20, 0x06,
+ 0x00, 0x0e, 0x06, 0x1c, 0xf9, 0xf7, 0x0d, 0xfe,
+ 0x00, 0x28, 0x03, 0xd0, 0x01, 0x98, 0x42, 0x68,
+ 0x02, 0x99, 0x01, 0xe0, 0xea, 0x6d, 0x3c, 0x00,
+ 0x84, 0x11, 0x01, 0x00, 0x39, 0x1c, 0x00, 0x2a,
+ 0x0d, 0xd0, 0x00, 0x20, 0x03, 0xe0, 0x0b, 0x5c,
+ 0xb3, 0x42, 0x02, 0xd8, 0x01, 0x30, 0x90, 0x42,
+ 0xf9, 0xdb, 0x08, 0x18, 0x10, 0x38, 0xc0, 0x7b,
+ 0x29, 0x19, 0x90, 0x31, 0x08, 0x73, 0x01, 0x34,
+ 0x0e, 0x2c, 0xdf, 0xd3, 0xfe, 0xbd, 0x00, 0x00,
+ 0xcc, 0x47, 0x01, 0x00, 0xff, 0xb5, 0x81, 0xb0,
+ 0x14, 0x1c, 0x10, 0x1c, 0x06, 0x22, 0x0d, 0x1c,
+ 0x3c, 0x00, 0xc0, 0x11, 0x01, 0x00, 0x19, 0x1c,
+ 0x0b, 0x9e, 0x0a, 0x9f, 0xef, 0xf7, 0x97, 0xf9,
+ 0x06, 0x22, 0x39, 0x1c, 0xa0, 0x18, 0xef, 0xf7,
+ 0x92, 0xf9, 0xe6, 0x60, 0x2c, 0x60, 0x10, 0x20,
+ 0x28, 0x81, 0x6e, 0x60, 0x01, 0x98, 0xe8, 0x60,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0xb5,
+ 0x04, 0x1c, 0x00, 0x20, 0x20, 0x61, 0x58, 0x20,
+ 0x00, 0x5d, 0x0e, 0x1c, 0x15, 0x1c, 0xc0, 0x07,
+ 0xc0, 0x17, 0x3c, 0x00, 0xfc, 0x11, 0x01, 0x00,
+ 0x01, 0x30, 0xe0, 0x61, 0x21, 0x6b, 0x00, 0x29,
+ 0x36, 0xd1, 0x1e, 0x49, 0x09, 0x68, 0x29, 0x43,
+ 0x32, 0xd0, 0xa1, 0x68, 0x89, 0x8a, 0x00, 0x29,
+ 0x2e, 0xd0, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x1c,
+ 0x58, 0x30, 0x00, 0xf0, 0xf3, 0xfd, 0x00, 0x28,
+ 0x1b, 0xd0, 0x81, 0x6a, 0x02, 0x6a, 0x40, 0x6a,
+ 0x09, 0x78, 0x00, 0x78, 0x06, 0xe0, 0x14, 0x4a,
+ 0x3c, 0x23, 0x11, 0x78, 0x3c, 0x00, 0x38, 0x12,
+ 0x01, 0x00, 0x50, 0x78, 0x43, 0x43, 0x9a, 0x18,
+ 0x04, 0x32, 0x00, 0x2d, 0x03, 0xd1, 0x02, 0x29,
+ 0x01, 0xd0, 0x03, 0x29, 0x02, 0xd1, 0x6d, 0x21,
+ 0x22, 0x61, 0x08, 0x55, 0x20, 0x69, 0x00, 0x28,
+ 0x0d, 0xd0, 0x81, 0x88, 0x00, 0x29, 0x01, 0xd1,
+ 0x01, 0x20, 0x70, 0xbd, 0x80, 0x79, 0x02, 0x28,
+ 0x05, 0xd1, 0x22, 0x1c, 0x07, 0x49, 0x07, 0x48,
+ 0xf8, 0xf7, 0x4b, 0xff, 0x02, 0xe0, 0x3c, 0x00,
+ 0x74, 0x12, 0x01, 0x00, 0x20, 0x1c, 0xef, 0xf7,
+ 0xb5, 0xf8, 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00,
+ 0x28, 0x61, 0x01, 0x00, 0x68, 0x61, 0x01, 0x00,
+ 0xa1, 0xda, 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7,
+ 0x39, 0xfe, 0xc4, 0x00, 0xf9, 0xf7, 0x54, 0xfe,
+ 0x24, 0x18, 0xf9, 0xf7, 0x47, 0xfe, 0x08, 0x49,
+ 0x20, 0x18, 0x09, 0x88, 0x08, 0x4c, 0x40, 0x18,
+ 0x3c, 0x00, 0xb0, 0x12, 0x01, 0x00, 0x06, 0x49,
+ 0x09, 0x88, 0x40, 0x18, 0x60, 0x61, 0xf9, 0xf7,
+ 0x46, 0xfe, 0x05, 0x49, 0x09, 0x88, 0x40, 0x18,
+ 0x40, 0x00, 0xa0, 0x61, 0x10, 0xbd, 0x02, 0x61,
+ 0x01, 0x00, 0x04, 0x61, 0x01, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x11, 0x40,
+ 0x08, 0x1c, 0x10, 0xb5, 0x1c, 0x1c, 0x19, 0x1c,
+ 0x08, 0x31, 0x18, 0x60, 0xf1, 0xf7, 0x31, 0xfe,
+ 0x60, 0x60, 0x3c, 0x00, 0xec, 0x12, 0x01, 0x00,
+ 0x10, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c,
+ 0x22, 0x48, 0x0f, 0x1c, 0x41, 0x68, 0x91, 0x42,
+ 0x03, 0xd0, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60,
+ 0x42, 0x60, 0xc4, 0x68, 0x15, 0xe0, 0x28, 0x20,
+ 0x1d, 0x49, 0x60, 0x43, 0x40, 0x18, 0x05, 0x1c,
+ 0x06, 0x22, 0x31, 0x1c, 0xef, 0xf7, 0x70, 0xf8,
+ 0x00, 0x28, 0x07, 0xd1, 0xa8, 0x1d, 0x39, 0x1c,
+ 0xf9, 0xf7, 0x10, 0xfd, 0x3c, 0x00, 0x28, 0x13,
+ 0x01, 0x00, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20,
+ 0xf8, 0xbd, 0x01, 0x34, 0x24, 0x07, 0x24, 0x0f,
+ 0x12, 0x48, 0x80, 0x68, 0x84, 0x42, 0xe5, 0xd1,
+ 0x10, 0x4c, 0x28, 0x23, 0xa0, 0x68, 0x0f, 0x4d,
+ 0x58, 0x43, 0x40, 0x19, 0x06, 0x22, 0x31, 0x1c,
+ 0xef, 0xf7, 0xd3, 0xf8, 0xa0, 0x68, 0x28, 0x23,
+ 0x58, 0x43, 0x40, 0x19, 0x06, 0x30, 0x22, 0x22,
+ 0x39, 0x1c, 0xef, 0xf7, 0xca, 0xf8, 0x3c, 0x00,
+ 0x64, 0x13, 0x01, 0x00, 0xa0, 0x68, 0x01, 0x30,
+ 0x00, 0x07, 0x00, 0x0f, 0xa0, 0x60, 0xe1, 0x68,
+ 0x81, 0x42, 0x03, 0xd1, 0x01, 0x31, 0x08, 0x07,
+ 0x00, 0x0f, 0xe0, 0x60, 0x00, 0x20, 0xd6, 0xe7,
+ 0xec, 0x65, 0x01, 0x00, 0xa0, 0xf4, 0x01, 0x00,
+ 0x10, 0xb5, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0,
+ 0xe5, 0xff, 0x05, 0x4c, 0xa0, 0x68, 0x00, 0x28,
+ 0x04, 0xd1, 0x01, 0xf0, 0x07, 0xfd, 0x61, 0x68,
+ 0x3c, 0x00, 0xa0, 0x13, 0x01, 0x00, 0x40, 0x1a,
+ 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, 0xd0, 0x60,
+ 0x01, 0x00, 0x02, 0x68, 0x0a, 0x60, 0x01, 0x60,
+ 0x70, 0x47, 0x01, 0x1c, 0x00, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0x02, 0x68, 0x0a, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0xfe, 0xb5, 0x14, 0x1c, 0x1d, 0x1c,
+ 0x00, 0x22, 0xd2, 0x43, 0x01, 0xab, 0xf3, 0xf7,
+ 0x82, 0xff, 0x01, 0x98, 0x00, 0x26, 0x28, 0x40,
+ 0x01, 0x90, 0x3c, 0x00, 0xdc, 0x13, 0x01, 0x00,
+ 0x00, 0x25, 0x00, 0x27, 0x20, 0x60, 0x1e, 0xe0,
+ 0x01, 0x21, 0xb9, 0x40, 0x0a, 0x1c, 0x02, 0x40,
+ 0x18, 0xd0, 0x88, 0x43, 0x01, 0x90, 0x39, 0x06,
+ 0x09, 0x0e, 0x70, 0x19, 0x00, 0x19, 0x02, 0x91,
+ 0x01, 0x77, 0x08, 0x1c, 0xf9, 0xf7, 0xc6, 0xfc,
+ 0x00, 0x28, 0x06, 0xd0, 0x30, 0x1c, 0x00, 0x19,
+ 0x01, 0x36, 0x02, 0x99, 0x30, 0x30, 0x01, 0x70,
+ 0x04, 0xe0, 0x28, 0x1c, 0x3c, 0x00, 0x18, 0x14,
+ 0x01, 0x00, 0x01, 0x35, 0x02, 0x99, 0x00, 0x19,
+ 0x01, 0x72, 0x01, 0x37, 0x01, 0x98, 0x00, 0x28,
+ 0xdd, 0xd1, 0x70, 0x19, 0xa0, 0x61, 0x65, 0x60,
+ 0xe6, 0x62, 0xfe, 0xbd, 0x00, 0x00, 0xb0, 0xb5,
+ 0x14, 0x4d, 0x04, 0x1c, 0x28, 0x7a, 0x01, 0x28,
+ 0x02, 0xd1, 0x04, 0x20, 0xf6, 0xf7, 0xad, 0xf9,
+ 0x21, 0x1c, 0xa8, 0x6a, 0xf5, 0xf7, 0x21, 0xfc,
+ 0x00, 0x28, 0x03, 0xd1, 0x04, 0x20, 0x3c, 0x00,
+ 0x54, 0x14, 0x01, 0x00, 0xf6, 0xf7, 0xa4, 0xf9,
+ 0xb0, 0xbd, 0x02, 0x20, 0x28, 0x70, 0x28, 0x8c,
+ 0x00, 0x28, 0x00, 0xd0, 0x60, 0x81, 0x68, 0x8c,
+ 0x00, 0x28, 0x00, 0xd0, 0xa0, 0x81, 0xa8, 0x8c,
+ 0x00, 0x28, 0x00, 0xd0, 0xe0, 0x81, 0xe8, 0x69,
+ 0x01, 0x23, 0x02, 0x04, 0x12, 0x0c, 0x20, 0x1c,
+ 0x02, 0x49, 0xfc, 0xf7, 0x19, 0xff, 0xb0, 0xbd,
+ 0xf4, 0x6e, 0x01, 0x00, 0xa1, 0x77, 0x00, 0x00,
+ 0x3c, 0x00, 0x90, 0x14, 0x01, 0x00, 0xf8, 0xb5,
+ 0x19, 0x4e, 0x05, 0x1c, 0xb0, 0x69, 0x00, 0x28,
+ 0x00, 0xd1, 0x30, 0x68, 0xff, 0xf7, 0x3b, 0xfc,
+ 0x15, 0x4f, 0x04, 0x1c, 0x50, 0x37, 0x00, 0x28,
+ 0x0b, 0xd0, 0x60, 0x68, 0x29, 0x1c, 0x78, 0x60,
+ 0x01, 0x20, 0x38, 0x63, 0x20, 0x1c, 0xf5, 0xf7,
+ 0xea, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x00, 0x20,
+ 0xf8, 0xbd, 0x00, 0x23, 0xfb, 0x62, 0xfa, 0xe7,
+ 0x00, 0x23, 0x3c, 0x00, 0xcc, 0x14, 0x01, 0x00,
+ 0x23, 0x77, 0xf8, 0x6a, 0x00, 0x28, 0x01, 0xd1,
+ 0x01, 0x20, 0xf8, 0x62, 0x38, 0x7a, 0x01, 0x28,
+ 0x07, 0xd0, 0xf8, 0x69, 0x06, 0x49, 0x02, 0x04,
+ 0x12, 0x0c, 0x28, 0x1c, 0xfc, 0xf7, 0xe6, 0xfe,
+ 0x01, 0xe0, 0xfb, 0x62, 0xb3, 0x61, 0x01, 0x20,
+ 0xe5, 0xe7, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00,
+ 0xdd, 0x02, 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x16, 0x1c, 0x3c, 0x00, 0x08, 0x15,
+ 0x01, 0x00, 0x04, 0x2c, 0x1b, 0xd2, 0x10, 0x48,
+ 0x83, 0x42, 0x07, 0xd2, 0x58, 0x00, 0x0f, 0x49,
+ 0xef, 0xf7, 0xfb, 0xf8, 0xff, 0x30, 0x00, 0x0a,
+ 0x01, 0x38, 0x00, 0xe0, 0x00, 0x20, 0x1f, 0x35,
+ 0xea, 0x06, 0x61, 0x07, 0x09, 0x0e, 0xd2, 0x0e,
+ 0x11, 0x43, 0x72, 0x07, 0x52, 0x0d, 0x11, 0x43,
+ 0x00, 0x06, 0x00, 0x0a, 0x08, 0x43, 0x06, 0x4a,
+ 0xa1, 0x00, 0x50, 0x50, 0x70, 0xbd, 0x3c, 0x00,
+ 0x44, 0x15, 0x01, 0x00, 0x01, 0x21, 0x8d, 0x20,
+ 0xef, 0xf7, 0xac, 0xfe, 0x70, 0xbd, 0x00, 0x00,
+ 0x40, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x38, 0x01,
+ 0xe8, 0x60, 0x01, 0x00, 0x09, 0x4a, 0x80, 0x00,
+ 0x10, 0x58, 0x40, 0x09, 0x40, 0x01, 0x07, 0x22,
+ 0x02, 0x43, 0x07, 0x48, 0x03, 0x68, 0x00, 0x2b,
+ 0xfc, 0xdb, 0x42, 0x60, 0x09, 0x06, 0x01, 0x60,
+ 0x01, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x08, 0x20,
+ 0x3c, 0x00, 0x80, 0x15, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20,
+ 0x07, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c,
+ 0x07, 0x49, 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28,
+ 0x03, 0xd1, 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7,
+ 0x80, 0xfe, 0x29, 0x1c, 0x20, 0x1c, 0xf6, 0xf7,
+ 0xa8, 0xfa, 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60,
+ 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c,
+ 0x07, 0x49, 0x3c, 0x00, 0xbc, 0x15, 0x01, 0x00,
+ 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, 0x03, 0xd1,
+ 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, 0x6c, 0xfe,
+ 0x29, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0xc4, 0xff,
+ 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, 0xf7, 0xf7,
+ 0x17, 0xf9, 0x04, 0x1c, 0x28, 0x68, 0x40, 0x4f,
+ 0x81, 0x78, 0x00, 0x29, 0x3b, 0xd1, 0xc1, 0x78,
+ 0x00, 0x29, 0x58, 0xd1, 0x3c, 0x00, 0xf8, 0x15,
+ 0x01, 0x00, 0xf8, 0xf7, 0xf8, 0xf9, 0x22, 0x8e,
+ 0x61, 0x8e, 0x8a, 0x42, 0x04, 0xd0, 0xa1, 0x6a,
+ 0x09, 0x18, 0xe0, 0x69, 0x81, 0x42, 0x10, 0xd9,
+ 0x38, 0x49, 0x32, 0x1c, 0x48, 0x6b, 0x01, 0x30,
+ 0x48, 0x63, 0x20, 0x6a, 0x01, 0x30, 0x20, 0x62,
+ 0x38, 0x68, 0x01, 0x30, 0x38, 0x60, 0xe0, 0x68,
+ 0x63, 0x69, 0x29, 0x1c, 0xee, 0xf7, 0xd8, 0xfe,
+ 0xf8, 0xbd, 0x01, 0x32, 0x12, 0x04, 0x3c, 0x00,
+ 0x34, 0x16, 0x01, 0x00, 0x12, 0x0c, 0x22, 0x86,
+ 0xa1, 0x62, 0xb8, 0x68, 0x00, 0x28, 0x34, 0xd1,
+ 0x2c, 0x48, 0x0c, 0x23, 0x00, 0x68, 0x1b, 0x1a,
+ 0x9a, 0x42, 0x07, 0xd2, 0x19, 0x23, 0x9b, 0x01,
+ 0xaf, 0x22, 0x92, 0x01, 0x58, 0x43, 0x10, 0x1a,
+ 0x81, 0x42, 0x26, 0xd3, 0x01, 0x20, 0xb8, 0x60,
+ 0x01, 0x21, 0x0c, 0x20, 0x00, 0xf0, 0x7a, 0xfe,
+ 0x1f, 0xe0, 0x01, 0x29, 0x1d, 0xd1, 0xc0, 0x78,
+ 0x3c, 0x00, 0x70, 0x16, 0x01, 0x00, 0x17, 0x28,
+ 0x1a, 0xd1, 0xa0, 0x8e, 0xe1, 0x8e, 0x88, 0x42,
+ 0x14, 0xd3, 0xe9, 0x68, 0x09, 0x68, 0x09, 0x79,
+ 0x09, 0x06, 0x0f, 0xd5, 0x60, 0x6a, 0x32, 0x1c,
+ 0x01, 0x30, 0x60, 0x62, 0xe0, 0x68, 0x63, 0x69,
+ 0x29, 0x1c, 0xee, 0xf7, 0xa3, 0xfe, 0xe8, 0x68,
+ 0x01, 0x68, 0x08, 0x31, 0x0b, 0x20, 0x00, 0xf0,
+ 0x5c, 0xfe, 0xc3, 0xe7, 0x01, 0x30, 0xa0, 0x86,
+ 0xa0, 0x8d, 0x3c, 0x00, 0xac, 0x16, 0x01, 0x00,
+ 0xe1, 0x8d, 0x88, 0x42, 0x04, 0xd1, 0x03, 0x21,
+ 0x02, 0x20, 0xef, 0xf7, 0xf5, 0xfd, 0xb8, 0xe7,
+ 0x60, 0x68, 0x45, 0x60, 0x86, 0x60, 0x00, 0x68,
+ 0x60, 0x60, 0xf8, 0x68, 0x01, 0x30, 0xf8, 0x60,
+ 0xa0, 0x8d, 0x41, 0x1c, 0xa1, 0x85, 0x00, 0x28,
+ 0xab, 0xd1, 0x08, 0x48, 0xb9, 0x69, 0xfd, 0xf7,
+ 0x61, 0xfe, 0x22, 0x1c, 0x02, 0x21, 0xf1, 0x20,
+ 0x02, 0xf0, 0x64, 0xf8, 0x3c, 0x00, 0xe8, 0x16,
+ 0x01, 0x00, 0xa1, 0xe7, 0x00, 0x00, 0xfc, 0x5a,
+ 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x18, 0x57,
+ 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x1c, 0x02, 0x21, 0xf0, 0x20, 0x02, 0xf0,
+ 0x54, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28,
+ 0x03, 0xd1, 0x02, 0x48, 0x41, 0x78, 0xc9, 0x07,
+ 0xfc, 0xd5, 0x70, 0x47, 0x00, 0x00, 0x04, 0x00,
+ 0x07, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x3c, 0x00,
+ 0x24, 0x17, 0x01, 0x00, 0x01, 0xd1, 0xf1, 0xf7,
+ 0x71, 0xfe, 0x80, 0xbd, 0x80, 0xb5, 0xf4, 0xf7,
+ 0xe5, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0xf6, 0xf7,
+ 0xeb, 0xf8, 0x80, 0xbd, 0x01, 0x49, 0x00, 0x20,
+ 0x08, 0x74, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0xc0, 0x07, 0x03, 0xd5, 0x02, 0x49,
+ 0x01, 0x20, 0x00, 0xf0, 0x1d, 0xfc, 0x80, 0xbd,
+ 0x50, 0xc3, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e,
+ 0x3c, 0x00, 0x60, 0x17, 0x01, 0x00, 0x01, 0x28,
+ 0x80, 0xb5, 0x02, 0xd1, 0xf6, 0xf7, 0xe1, 0xf9,
+ 0x80, 0xbd, 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7,
+ 0x4c, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0xf6, 0xf7, 0xd7, 0xf9, 0x80, 0xbd, 0x03, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x08, 0x74, 0xf6, 0xf7,
+ 0xfe, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x00, 0x0e,
+ 0xf1, 0xf7, 0x3c, 0x00, 0x9c, 0x17, 0x01, 0x00,
+ 0x71, 0xfe, 0x80, 0xbd, 0x10, 0xb5, 0x01, 0x28,
+ 0x08, 0xd0, 0x02, 0x28, 0x03, 0xd0, 0x03, 0x28,
+ 0x01, 0xd0, 0xef, 0xf7, 0xa7, 0xfd, 0xf6, 0xf7,
+ 0xe9, 0xf9, 0x10, 0xbd, 0x01, 0xf0, 0xf8, 0xfa,
+ 0x04, 0x1c, 0xfa, 0xf7, 0x5d, 0xfd, 0x24, 0x1a,
+ 0xfa, 0xf7, 0x3e, 0xfd, 0x08, 0x49, 0x00, 0x28,
+ 0x0b, 0xd0, 0x48, 0x6a, 0x00, 0x28, 0x08, 0xd0,
+ 0x06, 0x48, 0x84, 0x42, 0x3c, 0x00, 0xd8, 0x17,
+ 0x01, 0x00, 0x05, 0xd2, 0x01, 0x1b, 0x01, 0x22,
+ 0x07, 0x20, 0x01, 0xf0, 0xf4, 0xfe, 0xe5, 0xe7,
+ 0x00, 0x20, 0x48, 0x61, 0xe2, 0xe7, 0x78, 0x69,
+ 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x09, 0x49,
+ 0x80, 0xb5, 0x48, 0x69, 0x00, 0x28, 0x0c, 0xd0,
+ 0x08, 0x6a, 0xca, 0x69, 0x80, 0x1a, 0x00, 0x28,
+ 0x07, 0xdd, 0x00, 0x20, 0x48, 0x61, 0x01, 0x21,
+ 0x07, 0x20, 0x01, 0xf0, 0x10, 0xff, 0x3c, 0x00,
+ 0x14, 0x18, 0x01, 0x00, 0xf6, 0xf7, 0xb8, 0xf9,
+ 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x80, 0xbd,
+ 0x80, 0xb5, 0x00, 0xf0, 0x3f, 0xfc, 0x00, 0x20,
+ 0xf7, 0xf7, 0xd4, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0x37, 0xfc, 0xfd, 0xf7,
+ 0x6f, 0xfc, 0xf5, 0xf7, 0x73, 0xfd, 0x30, 0xf0,
+ 0x47, 0xfb, 0x80, 0xbd, 0x04, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0x50, 0x18, 0x01, 0x00, 0xc1, 0x6a,
+ 0x00, 0x6b, 0xf2, 0xf7, 0xde, 0xff, 0x01, 0x20,
+ 0xf7, 0xf7, 0x89, 0xf8, 0x80, 0xbd, 0xa4, 0x6c,
+ 0x01, 0x00, 0x10, 0xb5, 0xf3, 0xf7, 0x41, 0xf8,
+ 0x0d, 0x4c, 0x00, 0x28, 0x04, 0xd0, 0x01, 0x20,
+ 0xe0, 0x64, 0xf7, 0xf7, 0xb2, 0xfc, 0x10, 0xbd,
+ 0x01, 0x21, 0x01, 0x20, 0xf3, 0xf7, 0xe9, 0xf8,
+ 0xfd, 0xf7, 0x4d, 0xfc, 0x60, 0x6d, 0x00, 0x28,
+ 0x03, 0xd0, 0x3c, 0x00, 0x8c, 0x18, 0x01, 0x00,
+ 0xf3, 0xf7, 0x82, 0xf8, 0x00, 0x28, 0x01, 0xd0,
+ 0xf5, 0xf7, 0x4a, 0xfd, 0x01, 0x20, 0xf2, 0xf7,
+ 0xc1, 0xfc, 0x10, 0xbd, 0xa4, 0x6c, 0x01, 0x00,
+ 0x04, 0x48, 0x80, 0xb5, 0xc1, 0x6a, 0x00, 0x6b,
+ 0xf2, 0xf7, 0xb2, 0xff, 0x01, 0x20, 0xf7, 0xf7,
+ 0x5d, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0xf5, 0xfb, 0xf5, 0xf7,
+ 0x33, 0xfd, 0xfc, 0xf7, 0x3c, 0x00, 0xc8, 0x18,
+ 0x01, 0x00, 0x31, 0xfd, 0xf9, 0xf7, 0xcb, 0xff,
+ 0x04, 0x20, 0xf2, 0xf7, 0xa6, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x6a,
+ 0x00, 0x6b, 0xf2, 0xf7, 0x98, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0xf0, 0xdd, 0xfb, 0x00, 0x20, 0xf7, 0xf7,
+ 0x3c, 0xf8, 0x30, 0xf0, 0xee, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x3c, 0x00,
+ 0x04, 0x19, 0x01, 0x00, 0x01, 0x20, 0xff, 0xf7,
+ 0x19, 0xfa, 0x01, 0x20, 0xf2, 0xf7, 0x88, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0xc9, 0xfb, 0xfc, 0xf7, 0x07, 0xfd, 0x01, 0x21,
+ 0x01, 0x20, 0xff, 0xf7, 0x0b, 0xfa, 0x04, 0x20,
+ 0xf2, 0xf7, 0x7a, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20,
+ 0x00, 0xf0, 0x8a, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x19, 0x01, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20,
+ 0x00, 0xf0, 0x81, 0xfb, 0x80, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x03, 0x20, 0x00, 0xf0, 0x78, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a,
+ 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x6f, 0xfb,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x22, 0x3c, 0x00, 0x7c, 0x19, 0x01, 0x00,
+ 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, 0x66, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, 0x80, 0xb5,
+ 0x81, 0x68, 0x42, 0x69, 0x00, 0x69, 0x51, 0x18,
+ 0x81, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x01, 0x20,
+ 0x00, 0xf0, 0x58, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5,
+ 0x82, 0x88, 0x81, 0x68, 0x00, 0x69, 0x51, 0x18,
+ 0x81, 0x42, 0x03, 0xd9, 0x3c, 0x00, 0xb8, 0x19,
+ 0x01, 0x00, 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0,
+ 0x48, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x20, 0x7b,
+ 0x21, 0x6a, 0xf9, 0xf7, 0x9c, 0xfa, 0xa1, 0x69,
+ 0x42, 0x18, 0xa0, 0x68, 0x21, 0x69, 0x80, 0x18,
+ 0x88, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x02, 0x20,
+ 0x00, 0xf0, 0x33, 0xfb, 0x10, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x3c, 0x00,
+ 0xf4, 0x19, 0x01, 0x00, 0x00, 0x21, 0x00, 0x20,
+ 0x00, 0xf0, 0x2a, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x0e, 0x01, 0x28, 0x80, 0xb5,
+ 0x02, 0xd1, 0xf6, 0xf7, 0x8f, 0xf8, 0x80, 0xbd,
+ 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, 0xfa, 0xfc,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0xf6, 0xf7,
+ 0x85, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x06,
+ 0x00, 0x0e, 0xf1, 0xf7, 0x29, 0xfd, 0x80, 0xbd,
+ 0x3c, 0x00, 0x30, 0x1a, 0x01, 0x00, 0xb0, 0xb5,
+ 0x02, 0x25, 0x02, 0x28, 0x10, 0x4c, 0x0b, 0xd1,
+ 0xfb, 0xf7, 0x47, 0xfc, 0x00, 0x28, 0x01, 0xd1,
+ 0xfe, 0xf7, 0x4f, 0xff, 0x25, 0x70, 0xa1, 0x68,
+ 0x0c, 0x48, 0xfd, 0xf7, 0xa8, 0xfc, 0xb0, 0xbd,
+ 0x03, 0x28, 0x0d, 0xd1, 0x08, 0x48, 0x7d, 0x23,
+ 0x1c, 0x38, 0x00, 0x69, 0xdb, 0x00, 0x58, 0x43,
+ 0x19, 0x1c, 0x40, 0x18, 0x41, 0x08, 0x02, 0x20,
+ 0x00, 0xf0, 0x3c, 0x00, 0x6c, 0x1a, 0x01, 0x00,
+ 0x91, 0xfa, 0x25, 0x70, 0xb0, 0xbd, 0xf8, 0xf7,
+ 0x31, 0xf9, 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c,
+ 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xef, 0xf7,
+ 0x39, 0xfc, 0x02, 0x20, 0x20, 0x70, 0x00, 0xf0,
+ 0xaf, 0xfa, 0x10, 0xbd, 0x78, 0x69, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21,
+ 0x04, 0x20, 0x00, 0xf0, 0x3c, 0x00, 0xa8, 0x1a,
+ 0x01, 0x00, 0xd3, 0xfa, 0x80, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x03, 0x20, 0x00, 0xf0, 0xca, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x00, 0xf0, 0xc2, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69,
+ 0x01, 0x21, 0x01, 0x20, 0x00, 0xf0, 0xb9, 0xfa,
+ 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00,
+ 0xe4, 0x1a, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5,
+ 0x82, 0x88, 0x00, 0x2a, 0x02, 0xd0, 0x01, 0x21,
+ 0x02, 0x20, 0x02, 0xe0, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x00, 0xf0, 0xa9, 0xfa, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c,
+ 0x20, 0x7b, 0x21, 0x6a, 0xf9, 0xf7, 0xfe, 0xf9,
+ 0xa1, 0x69, 0x42, 0x18, 0x01, 0x21, 0x02, 0x20,
+ 0x00, 0xf0, 0x9a, 0xfa, 0x10, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x20, 0x1b, 0x01, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21,
+ 0x00, 0x20, 0x00, 0xf0, 0x90, 0xfa, 0x80, 0xbd,
+ 0x00, 0x00, 0x38, 0xb5, 0xfa, 0xf7, 0x41, 0xfe,
+ 0x00, 0x20, 0xf0, 0xf7, 0x80, 0xf8, 0x00, 0x90,
+ 0x00, 0xab, 0x1c, 0x88, 0x5d, 0x88, 0xf8, 0xf7,
+ 0x3c, 0xf9, 0x00, 0x2c, 0x02, 0xd0, 0xfd, 0xf7,
+ 0x9e, 0xfa, 0x02, 0xe0, 0x01, 0x20, 0xf6, 0xf7,
+ 0x0a, 0xff, 0x3c, 0x00, 0x5c, 0x1b, 0x01, 0x00,
+ 0x29, 0x1c, 0x20, 0x1c, 0xfc, 0xf7, 0xb8, 0xfc,
+ 0x00, 0x2c, 0x02, 0xd0, 0xf5, 0xf7, 0xe0, 0xfb,
+ 0x02, 0xe0, 0x00, 0x20, 0x00, 0xf0, 0xdc, 0xf9,
+ 0x03, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x02, 0x20,
+ 0x00, 0x06, 0x00, 0x0e, 0xf2, 0xf7, 0x4e, 0xfb,
+ 0x38, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5,
+ 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0,
+ 0x5d, 0xfa, 0x80, 0xbd, 0x3c, 0x00, 0x98, 0x1b,
+ 0x01, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x30, 0xf0, 0x9b, 0xf9, 0x80, 0xbd, 0x80, 0xb5,
+ 0x00, 0x22, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0,
+ 0x50, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x03, 0x48,
+ 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, 0x01, 0x20,
+ 0x00, 0xf0, 0x47, 0xfa, 0x80, 0xbd, 0xd4, 0x79,
+ 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x82, 0x88,
+ 0x00, 0x2a, 0x03, 0xd0, 0x01, 0x21, 0x3c, 0x00,
+ 0xd4, 0x1b, 0x01, 0x00, 0x02, 0x20, 0x00, 0xf0,
+ 0x3b, 0xfa, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00,
+ 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x7b, 0x21, 0x6a,
+ 0xf9, 0xf7, 0x90, 0xf9, 0xa1, 0x69, 0x42, 0x18,
+ 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, 0x2c, 0xfa,
+ 0x10, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0xfc, 0xf7, 0x93, 0xfb, 0x01, 0x21,
+ 0x01, 0x20, 0xff, 0xf7, 0x97, 0xf8, 0x04, 0x20,
+ 0x3c, 0x00, 0x10, 0x1c, 0x01, 0x00, 0xf2, 0xf7,
+ 0x06, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x2f, 0xf0, 0x6b, 0xfb, 0x00, 0x28, 0x0a, 0xd0,
+ 0x01, 0x20, 0xf2, 0xf7, 0xfc, 0xfa, 0xfa, 0xf7,
+ 0x2a, 0xfc, 0x00, 0x28, 0x02, 0xd1, 0x04, 0x20,
+ 0xf6, 0xf7, 0x5d, 0xf8, 0x80, 0xbd, 0x03, 0x21,
+ 0x16, 0x20, 0xef, 0xf7, 0x32, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x02, 0x48, 0x80, 0xb5, 0x00, 0x68,
+ 0xee, 0xf7, 0x3c, 0x00, 0x4c, 0x1c, 0x01, 0x00,
+ 0xc5, 0xfb, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21,
+ 0x01, 0x20, 0x00, 0xf0, 0xf7, 0xf9, 0x80, 0xbd,
+ 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x30, 0xf0,
+ 0x35, 0xf9, 0x80, 0xbd, 0xb0, 0xb5, 0x18, 0x4c,
+ 0xaa, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x19, 0xd1,
+ 0x01, 0x25, 0xe5, 0x62, 0x25, 0x63, 0x01, 0xf0,
+ 0x93, 0xf8, 0xa0, 0x66, 0x3c, 0x00, 0x88, 0x1c,
+ 0x01, 0x00, 0x01, 0xf0, 0xfc, 0xfd, 0xf2, 0xf7,
+ 0x2e, 0xfe, 0x00, 0x28, 0x0e, 0xd0, 0x02, 0x20,
+ 0xf2, 0xf7, 0xc3, 0xfa, 0xa5, 0x60, 0x01, 0xf0,
+ 0x86, 0xf8, 0x64, 0x30, 0x60, 0x60, 0xfa, 0xf7,
+ 0x8a, 0xfd, 0x01, 0x21, 0x01, 0x20, 0xff, 0xf7,
+ 0x46, 0xf8, 0xb0, 0xbd, 0x01, 0x20, 0xf2, 0xf7,
+ 0xb4, 0xfa, 0x00, 0x20, 0xa0, 0x60, 0x00, 0x21,
+ 0x01, 0x20, 0xff, 0xf7, 0x3c, 0xf8, 0x3c, 0x00,
+ 0xc4, 0x1c, 0x01, 0x00, 0xf2, 0xf7, 0x66, 0xfe,
+ 0x00, 0x28, 0xf1, 0xd0, 0xfa, 0xf7, 0x76, 0xfd,
+ 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0xef, 0xf7, 0xd6, 0xfe,
+ 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20,
+ 0xef, 0xf7, 0xd0, 0xfe, 0x80, 0xbd, 0x00, 0x00,
+ 0xac, 0x21, 0x09, 0x5c, 0x02, 0x4a, 0x09, 0x02,
+ 0x89, 0x18, 0xc0, 0x31, 0x81, 0x60, 0x70, 0x47,
+ 0x3c, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x70, 0x75,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x04, 0xd1,
+ 0x03, 0xc9, 0x09, 0x68, 0xee, 0xf7, 0x64, 0xfb,
+ 0x80, 0xbd, 0x01, 0x21, 0x14, 0x20, 0xef, 0xf7,
+ 0xc4, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28,
+ 0x02, 0xd1, 0x02, 0x48, 0x40, 0x68, 0x70, 0x47,
+ 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x58, 0x75,
+ 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, 0xf8, 0xf7,
+ 0x1c, 0xfb, 0x3c, 0x00, 0x3c, 0x1d, 0x01, 0x00,
+ 0x00, 0x28, 0x04, 0xd0, 0x40, 0x30, 0x80, 0x7a,
+ 0x05, 0x28, 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c,
+ 0x10, 0xbd, 0x00, 0x00, 0x04, 0x48, 0x00, 0x21,
+ 0x40, 0x68, 0x01, 0xe0, 0x01, 0x63, 0x40, 0x68,
+ 0x00, 0x28, 0xfb, 0xd1, 0x70, 0x47, 0x00, 0x00,
+ 0x58, 0x75, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0d, 0x1c, 0xf7, 0xf7, 0xa5, 0xf8, 0x40, 0x34,
+ 0xe5, 0x72, 0xb0, 0xbd, 0x3c, 0x00, 0x78, 0x1d,
+ 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, 0xf8, 0xf7,
+ 0xfa, 0xfa, 0x04, 0x1c, 0x04, 0xd0, 0x05, 0x21,
+ 0x14, 0x20, 0xef, 0xf7, 0x8c, 0xfa, 0x28, 0xe0,
+ 0x00, 0x25, 0x14, 0x49, 0x28, 0x02, 0x46, 0x18,
+ 0x30, 0x1c, 0x44, 0x30, 0x06, 0x22, 0x12, 0x49,
+ 0xee, 0xf7, 0x2d, 0xfb, 0x00, 0x28, 0x02, 0xd1,
+ 0xac, 0x20, 0x85, 0x55, 0x34, 0x1c, 0x01, 0x35,
+ 0x03, 0x2d, 0xee, 0xd3, 0x00, 0x2c, 0x3c, 0x00,
+ 0xb4, 0x1d, 0x01, 0x00, 0x14, 0xd0, 0x39, 0x1c,
+ 0x20, 0x1c, 0xf8, 0xf7, 0x2b, 0xf8, 0x09, 0x49,
+ 0x00, 0x20, 0x20, 0x60, 0x18, 0x39, 0x48, 0x68,
+ 0x60, 0x60, 0x00, 0x28, 0x00, 0xd0, 0x04, 0x60,
+ 0x4c, 0x60, 0xca, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0x01, 0x21, 0x20, 0x1c, 0xee, 0xf7, 0xfe, 0xfa,
+ 0x20, 0x1c, 0xf8, 0xbd, 0x70, 0x75, 0x01, 0x00,
+ 0x58, 0x46, 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x1d, 0x01, 0x00, 0xc1, 0xfa,
+ 0x00, 0x28, 0x04, 0xd1, 0x06, 0x21, 0x14, 0x20,
+ 0xef, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0xf5, 0xf7,
+ 0x16, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0xf8, 0xf7, 0xb3, 0xfa, 0x80, 0xbd, 0x10, 0xb5,
+ 0x09, 0x4c, 0x21, 0x88, 0x02, 0x29, 0x03, 0xd1,
+ 0x14, 0x20, 0xef, 0xf7, 0x42, 0xfa, 0x04, 0xe0,
+ 0xa3, 0x68, 0x8a, 0x00, 0x98, 0x50, 0x48, 0x1c,
+ 0x20, 0x80, 0x3c, 0x00, 0x2c, 0x1e, 0x01, 0x00,
+ 0x20, 0x88, 0x01, 0x38, 0x00, 0x04, 0x00, 0x0c,
+ 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00,
+ 0x0b, 0x1c, 0x11, 0x1c, 0x08, 0x4a, 0x80, 0xb5,
+ 0x12, 0x88, 0x90, 0x42, 0x06, 0xd2, 0xda, 0x68,
+ 0xc0, 0x00, 0x12, 0x18, 0x14, 0x20, 0x01, 0xf0,
+ 0xbb, 0xfb, 0x80, 0xbd, 0x03, 0x21, 0x14, 0x20,
+ 0xef, 0xf7, 0x22, 0xfa, 0x80, 0xbd, 0x00, 0x00,
+ 0x58, 0x75, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x1e,
+ 0x01, 0x00, 0x08, 0x4a, 0x80, 0xb5, 0x12, 0x88,
+ 0x90, 0x42, 0x06, 0xd2, 0xc9, 0x68, 0xc0, 0x00,
+ 0x09, 0x18, 0x14, 0x20, 0x01, 0xf0, 0xdb, 0xfb,
+ 0x80, 0xbd, 0x04, 0x21, 0x14, 0x20, 0xef, 0xf7,
+ 0x0e, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x58, 0x75,
+ 0x01, 0x00, 0x01, 0x49, 0xc8, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x80, 0xb5,
+ 0x06, 0x22, 0x44, 0x30, 0xee, 0xf7, 0x3c, 0x00,
+ 0xa4, 0x1e, 0x01, 0x00, 0xab, 0xfa, 0x00, 0x28,
+ 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20,
+ 0x80, 0xbd, 0x00, 0x00, 0x1c, 0xb5, 0x14, 0x4c,
+ 0x20, 0x69, 0x00, 0x28, 0x23, 0xd0, 0x20, 0x78,
+ 0x0a, 0x28, 0x01, 0xd0, 0x00, 0xf0, 0xfc, 0xf8,
+ 0x00, 0x20, 0x60, 0x61, 0x0f, 0x48, 0x40, 0x79,
+ 0xa0, 0x70, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28,
+ 0x15, 0xd1, 0xfd, 0xf7, 0xed, 0xfe, 0x01, 0x90,
+ 0x3c, 0x00, 0xe0, 0x1e, 0x01, 0x00, 0xfd, 0xf7,
+ 0x82, 0xfe, 0x00, 0x90, 0x00, 0xab, 0x18, 0x79,
+ 0x19, 0x78, 0x40, 0x1a, 0x18, 0x71, 0x58, 0x79,
+ 0x59, 0x78, 0x40, 0x1a, 0x58, 0x71, 0x01, 0x98,
+ 0xf2, 0xf7, 0x89, 0xfe, 0x05, 0x20, 0x20, 0x70,
+ 0x00, 0xf0, 0xbf, 0xf9, 0x1c, 0xbd, 0x7c, 0x78,
+ 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x08, 0xb5,
+ 0x04, 0x4a, 0x00, 0x90, 0x14, 0x32, 0x00, 0x20,
+ 0x02, 0x4b, 0x3c, 0x00, 0x1c, 0x1f, 0x01, 0x00,
+ 0x02, 0x49, 0xf1, 0xf7, 0x7d, 0xf9, 0x08, 0xbd,
+ 0x2c, 0x75, 0x01, 0x00, 0xb1, 0xa8, 0x00, 0x00,
+ 0xb0, 0xb5, 0x00, 0x28, 0x06, 0xd0, 0x01, 0x28,
+ 0x06, 0xd0, 0x02, 0x28, 0x07, 0xd1, 0x0c, 0x4c,
+ 0x01, 0x25, 0x07, 0xe0, 0x0b, 0x4c, 0x04, 0xe0,
+ 0x0a, 0x4c, 0x2a, 0x3c, 0x01, 0xe0, 0x08, 0x4c,
+ 0xb6, 0x34, 0x00, 0x25, 0x00, 0xf0, 0x2c, 0xff,
+ 0x07, 0x49, 0x89, 0x6e, 0x3c, 0x00, 0x58, 0x1f,
+ 0x01, 0x00, 0x09, 0x19, 0x09, 0x1a, 0xa1, 0x42,
+ 0x00, 0xd9, 0x00, 0x21, 0x2a, 0x1c, 0x16, 0x20,
+ 0x01, 0xf0, 0x31, 0xfb, 0xb0, 0xbd, 0x71, 0x02,
+ 0x00, 0x00, 0x0c, 0x05, 0x00, 0x00, 0xa4, 0x6c,
+ 0x01, 0x00, 0x8c, 0xb5, 0x00, 0xab, 0x8e, 0x21,
+ 0x19, 0x80, 0xfc, 0xf7, 0x38, 0xf9, 0x01, 0x90,
+ 0x68, 0x46, 0xfb, 0xf7, 0xa6, 0xfa, 0x8c, 0xbd,
+ 0x00, 0x00, 0xbf, 0xb5, 0x13, 0x4a, 0x3c, 0x00,
+ 0x94, 0x1f, 0x01, 0x00, 0x01, 0x91, 0x0d, 0x1c,
+ 0x11, 0x7c, 0x88, 0x43, 0x04, 0x1c, 0x21, 0x43,
+ 0x08, 0x1c, 0x10, 0x74, 0xa0, 0x07, 0x0b, 0xd5,
+ 0x0e, 0x48, 0x00, 0x90, 0x01, 0x20, 0x02, 0x90,
+ 0x00, 0xf0, 0xfc, 0xfe, 0x0c, 0x49, 0x40, 0x18,
+ 0x03, 0x90, 0x68, 0x46, 0xf9, 0xf7, 0x6a, 0xff,
+ 0xe0, 0x07, 0x0c, 0xd5, 0xf1, 0xf7, 0x2c, 0xfd,
+ 0x00, 0x28, 0x03, 0xd0, 0x07, 0x48, 0x85, 0x42,
+ 0x3c, 0x00, 0xd0, 0x1f, 0x01, 0x00, 0x00, 0xd2,
+ 0x01, 0x90, 0x06, 0x48, 0x00, 0x90, 0x68, 0x46,
+ 0xf9, 0xf7, 0x09, 0xff, 0xbf, 0xbd, 0x78, 0x69,
+ 0x01, 0x00, 0x81, 0xea, 0x00, 0x00, 0x10, 0x27,
+ 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x75, 0xea,
+ 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x60, 0x69,
+ 0x00, 0x28, 0x0e, 0xd1, 0x01, 0x20, 0x60, 0x61,
+ 0xa1, 0x68, 0x07, 0x48, 0xfd, 0xf7, 0xcb, 0xf9,
+ 0x00, 0x21, 0x3c, 0x00, 0x0c, 0x20, 0x01, 0x00,
+ 0xa0, 0x68, 0xf9, 0xf7, 0xd1, 0xfb, 0x01, 0x22,
+ 0x07, 0x20, 0x04, 0x49, 0x01, 0xf0, 0xd8, 0xfa,
+ 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0x34, 0x63, 0x01, 0x00, 0x98, 0x3a, 0x00, 0x00,
+ 0x10, 0xb5, 0x0c, 0x1c, 0x11, 0x1c, 0x06, 0x4a,
+ 0x00, 0x2b, 0x10, 0x70, 0x03, 0xd0, 0x00, 0x28,
+ 0x02, 0xd1, 0xf9, 0xf7, 0xf5, 0xfd, 0x10, 0xbd,
+ 0x20, 0x1c, 0xf9, 0xf7, 0x3c, 0x00, 0x48, 0x20,
+ 0x01, 0x00, 0x01, 0xfe, 0x10, 0xbd, 0xa0, 0x79,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4c, 0x05, 0x1c,
+ 0xe3, 0x6a, 0x20, 0x1f, 0x01, 0x33, 0xe3, 0x62,
+ 0x00, 0x88, 0x00, 0x29, 0x06, 0xd0, 0xa1, 0x68,
+ 0x89, 0x18, 0x21, 0x61, 0x05, 0x4a, 0x00, 0xf0,
+ 0xfc, 0xfe, 0x01, 0xe0, 0x00, 0xf0, 0xcf, 0xfe,
+ 0x25, 0x77, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x55, 0xe3, 0x00, 0x00, 0x3c, 0x00,
+ 0x84, 0x20, 0x01, 0x00, 0x01, 0x1c, 0x03, 0x48,
+ 0x80, 0xb5, 0x40, 0x88, 0xff, 0xf7, 0xec, 0xfe,
+ 0x80, 0xbd, 0x00, 0x00, 0x98, 0x7c, 0x01, 0x00,
+ 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x68, 0x18, 0x38,
+ 0x80, 0x88, 0xff, 0xf7, 0xe1, 0xfe, 0x80, 0xbd,
+ 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21,
+ 0x16, 0x20, 0x01, 0xf0, 0xbf, 0xfa, 0x01, 0x21,
+ 0x16, 0x20, 0x01, 0xf0, 0xbb, 0xfa, 0x80, 0xbd,
+ 0x3c, 0x00, 0xc0, 0x20, 0x01, 0x00, 0x10, 0xb5,
+ 0x0b, 0x4c, 0x20, 0x78, 0x0a, 0x28, 0x10, 0xd0,
+ 0x01, 0x20, 0x60, 0x61, 0x0a, 0x21, 0x13, 0x20,
+ 0x01, 0xf0, 0xaf, 0xfa, 0x0a, 0x20, 0x60, 0x70,
+ 0x20, 0x70, 0xfd, 0xf7, 0x3c, 0xfb, 0x01, 0x20,
+ 0xfd, 0xf7, 0xe9, 0xfb, 0x00, 0x20, 0xfa, 0xf7,
+ 0xc4, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78,
+ 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0x00, 0x20,
+ 0x0b, 0x49, 0x3c, 0x00, 0xfc, 0x20, 0x01, 0x00,
+ 0x20, 0x63, 0xe0, 0x62, 0x50, 0x39, 0x88, 0x61,
+ 0x20, 0x70, 0x08, 0x48, 0x38, 0x21, 0x0c, 0x38,
+ 0x00, 0x7a, 0x08, 0x55, 0x81, 0x21, 0x18, 0x20,
+ 0x01, 0xf0, 0x8e, 0xfa, 0x20, 0x69, 0x01, 0x28,
+ 0x02, 0xd1, 0x00, 0x20, 0xf5, 0xf7, 0x3e, 0xfb,
+ 0x10, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x1c, 0x4c, 0x00, 0x25, 0x2c, 0x22,
+ 0x01, 0x1d, 0x20, 0x1c, 0x3c, 0x00, 0x38, 0x21,
+ 0x01, 0x00, 0x9a, 0xb0, 0xee, 0xf7, 0x39, 0xfa,
+ 0x18, 0x49, 0x2c, 0x31, 0x08, 0x1c, 0x00, 0x7a,
+ 0x8a, 0x69, 0x00, 0x2a, 0x13, 0xd1, 0x02, 0x28,
+ 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x20, 0xd0,
+ 0x04, 0xe0, 0x00, 0x28, 0x1d, 0xd1, 0x60, 0x68,
+ 0x00, 0x28, 0x1a, 0xd0, 0x80, 0x02, 0x88, 0x61,
+ 0x0e, 0x48, 0x69, 0x46, 0x24, 0x38, 0x00, 0x68,
+ 0xef, 0xf7, 0xcb, 0xfb, 0x11, 0xe0, 0x3c, 0x00,
+ 0x74, 0x21, 0x01, 0x00, 0x00, 0x22, 0x02, 0x28,
+ 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x09, 0xd1,
+ 0x04, 0xe0, 0x00, 0x28, 0x08, 0xd1, 0x60, 0x68,
+ 0x00, 0x28, 0x03, 0xd1, 0x8a, 0x61, 0xff, 0xf7,
+ 0xb1, 0xff, 0x01, 0xe0, 0x80, 0x02, 0x88, 0x61,
+ 0x28, 0x1c, 0x1a, 0xb0, 0xb0, 0xbd, 0x00, 0x00,
+ 0xc8, 0x6e, 0x01, 0x00, 0xf8, 0xb5, 0x0c, 0x49,
+ 0x02, 0x20, 0x48, 0x60, 0x0b, 0x49, 0x00, 0x05,
+ 0x3c, 0x00, 0xb0, 0x21, 0x01, 0x00, 0x08, 0x60,
+ 0x0b, 0x4f, 0xb8, 0x68, 0xf9, 0x68, 0x7c, 0x68,
+ 0x45, 0x1a, 0x2e, 0x1c, 0x04, 0xe0, 0xa0, 0x68,
+ 0x61, 0x68, 0xee, 0xf7, 0x09, 0xf9, 0x24, 0x68,
+ 0x01, 0x3d, 0xf8, 0xd2, 0x7c, 0x60, 0xf8, 0x68,
+ 0x80, 0x19, 0xf8, 0x60, 0xf8, 0xbd, 0x40, 0x20,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x44, 0xe3,
+ 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x04, 0x1c,
+ 0x30, 0x69, 0x3c, 0x00, 0xec, 0x21, 0x01, 0x00,
+ 0x01, 0x21, 0xf9, 0xf7, 0x99, 0xfa, 0x1d, 0x49,
+ 0x60, 0x00, 0x40, 0x18, 0x10, 0x38, 0x81, 0x7b,
+ 0x1b, 0x4a, 0x51, 0x72, 0xc0, 0x7b, 0x10, 0x74,
+ 0x1a, 0x4f, 0x1b, 0x4d, 0x0e, 0x2c, 0x0a, 0xd1,
+ 0x01, 0x22, 0x02, 0x21, 0x08, 0x20, 0x01, 0xf0,
+ 0xf3, 0xfb, 0x03, 0x20, 0xff, 0x21, 0x41, 0x31,
+ 0x39, 0x86, 0x14, 0x21, 0x08, 0xe0, 0x02, 0x22,
+ 0x01, 0x21, 0x08, 0x20, 0x3c, 0x00, 0x28, 0x22,
+ 0x01, 0x00, 0x01, 0xf0, 0xe8, 0xfb, 0x12, 0x49,
+ 0x02, 0x20, 0x39, 0x86, 0x10, 0x21, 0xa9, 0x71,
+ 0xe8, 0x71, 0x10, 0x48, 0x11, 0x4a, 0x00, 0x19,
+ 0x10, 0x38, 0xc0, 0x7b, 0x00, 0x28, 0x03, 0xd0,
+ 0x01, 0x21, 0x51, 0x73, 0x10, 0x73, 0x01, 0xe0,
+ 0x00, 0x20, 0x50, 0x73, 0x00, 0x21, 0x20, 0x1c,
+ 0xfd, 0xf7, 0xe5, 0xfd, 0x30, 0x69, 0xf9, 0xf7,
+ 0x08, 0xfb, 0xf8, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x64, 0x22, 0x01, 0x00, 0x40, 0x7c, 0x01, 0x00,
+ 0x76, 0x46, 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00,
+ 0x30, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0xff, 0x01, 0x00, 0x00, 0x5c, 0x57, 0x01, 0x00,
+ 0xd0, 0x80, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4c,
+ 0x14, 0x4a, 0x21, 0x78, 0x00, 0x20, 0x18, 0x32,
+ 0x05, 0x29, 0x1d, 0xd0, 0x06, 0x29, 0x1b, 0xd0,
+ 0x07, 0x29, 0x01, 0xd0, 0x08, 0x29, 0x06, 0xd1,
+ 0x3c, 0x00, 0xa0, 0x22, 0x01, 0x00, 0x91, 0x68,
+ 0x05, 0x20, 0x10, 0x29, 0x00, 0xdb, 0x06, 0x20,
+ 0x20, 0x70, 0x01, 0x20, 0xa1, 0x78, 0x00, 0x28,
+ 0x61, 0x70, 0x0b, 0xd0, 0x00, 0x20, 0xfa, 0xf7,
+ 0xdc, 0xf8, 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7,
+ 0x3c, 0xfa, 0x0a, 0x22, 0x1e, 0x21, 0x13, 0x20,
+ 0x01, 0xf0, 0x7f, 0xf9, 0x10, 0xbd, 0xd1, 0x69,
+ 0x07, 0x20, 0x10, 0x29, 0xe8, 0xdb, 0x08, 0x20,
+ 0xe6, 0xe7, 0x3c, 0x00, 0xdc, 0x22, 0x01, 0x00,
+ 0x7c, 0x78, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x01, 0x1c, 0x04, 0x1c, 0x44, 0x31, 0x00, 0x20,
+ 0xf6, 0xf7, 0x40, 0xfa, 0x30, 0x34, 0x00, 0x2d,
+ 0x07, 0xd0, 0x0e, 0xc8, 0x0e, 0xc4, 0x08, 0xc8,
+ 0x10, 0x38, 0x08, 0xc4, 0xf4, 0xf7, 0xc4, 0xf9,
+ 0xb0, 0xbd, 0x1e, 0xcc, 0x1e, 0xc0, 0xb0, 0xbd,
+ 0xf8, 0xb5, 0x08, 0x1c, 0x11, 0x1c, 0xf4, 0xf7,
+ 0x87, 0xfa, 0x08, 0x4c, 0x3c, 0x00, 0x18, 0x23,
+ 0x01, 0x00, 0x00, 0x25, 0x08, 0x4e, 0x08, 0x4f,
+ 0x06, 0xe0, 0x30, 0x6b, 0x00, 0x28, 0x03, 0xd0,
+ 0x35, 0x63, 0x20, 0x68, 0xee, 0xf7, 0x55, 0xf8,
+ 0x38, 0x68, 0x00, 0x28, 0xf5, 0xd0, 0xf8, 0xbd,
+ 0x00, 0x00, 0x5c, 0x5b, 0x01, 0x00, 0xe4, 0xfe,
+ 0x01, 0x00, 0x84, 0x5a, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x06, 0x00, 0x0e, 0x00, 0xf0, 0x07, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x1c, 0x3c, 0x00,
+ 0x54, 0x23, 0x01, 0x00, 0x23, 0x21, 0x01, 0xf0,
+ 0x2b, 0xfa, 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21,
+ 0x23, 0x20, 0xee, 0xf7, 0x9b, 0xff, 0x06, 0x49,
+ 0xa0, 0x00, 0x08, 0x58, 0x04, 0xe0, 0x12, 0xc8,
+ 0x28, 0x1c, 0xee, 0xf7, 0x2e, 0xf8, 0x20, 0x1c,
+ 0x00, 0x28, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00,
+ 0x68, 0x5b, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c,
+ 0x3c, 0x00, 0x90, 0x23, 0x01, 0x00, 0x00, 0x25,
+ 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21,
+ 0x23, 0x20, 0xee, 0xf7, 0x82, 0xff, 0x13, 0x48,
+ 0xa7, 0x00, 0xc4, 0x59, 0x08, 0xe0, 0x20, 0x68,
+ 0xb0, 0x42, 0x03, 0xd1, 0x03, 0x21, 0x23, 0x20,
+ 0xee, 0xf7, 0x77, 0xff, 0x25, 0x1c, 0x64, 0x68,
+ 0x00, 0x2c, 0xf4, 0xd1, 0x0c, 0x4a, 0x04, 0x3a,
+ 0x10, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x41, 0x68,
+ 0x11, 0x60, 0x3c, 0x00, 0xcc, 0x23, 0x01, 0x00,
+ 0x00, 0x28, 0x04, 0xd1, 0x02, 0x21, 0x23, 0x20,
+ 0xee, 0xf7, 0x66, 0xff, 0xf8, 0xbd, 0x00, 0x21,
+ 0x41, 0x60, 0x06, 0x60, 0x00, 0x2d, 0x01, 0xd0,
+ 0x68, 0x60, 0xf7, 0xe7, 0x01, 0x49, 0xc8, 0x51,
+ 0xf4, 0xe7, 0x00, 0x00, 0x68, 0x5b, 0x01, 0x00,
+ 0x70, 0xb5, 0x0e, 0x1c, 0x05, 0x1c, 0x00, 0x24,
+ 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, 0x23, 0x20,
+ 0xee, 0xf7, 0x4e, 0xff, 0x3c, 0x00, 0x08, 0x24,
+ 0x01, 0x00, 0x0d, 0x4b, 0xaa, 0x00, 0x98, 0x58,
+ 0x04, 0xe0, 0x01, 0x68, 0xb1, 0x42, 0x04, 0xd0,
+ 0x04, 0x1c, 0x40, 0x68, 0x00, 0x28, 0xf8, 0xd1,
+ 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x00, 0x2c,
+ 0x41, 0x68, 0x01, 0xd1, 0x99, 0x50, 0x00, 0xe0,
+ 0x61, 0x60, 0x00, 0x21, 0x03, 0x4a, 0x01, 0x60,
+ 0x04, 0x3a, 0x11, 0x68, 0x41, 0x60, 0x10, 0x60,
+ 0x70, 0xbd, 0x68, 0x5b, 0x01, 0x00, 0x3c, 0x00,
+ 0x44, 0x24, 0x01, 0x00, 0xf3, 0xb5, 0x81, 0xb0,
+ 0x00, 0x28, 0x17, 0xd0, 0x01, 0x78, 0xff, 0x29,
+ 0x14, 0xd0, 0x45, 0x78, 0x44, 0x19, 0x02, 0x34,
+ 0x80, 0x27, 0x01, 0x3c, 0x26, 0x78, 0x01, 0x3d,
+ 0xbe, 0x43, 0x30, 0x1c, 0xf8, 0xf7, 0x82, 0xfc,
+ 0x01, 0x21, 0x81, 0x40, 0x02, 0x98, 0x01, 0x40,
+ 0x02, 0xd0, 0x3e, 0x43, 0x30, 0x1c, 0x20, 0x70,
+ 0x00, 0x2d, 0xee, 0xd1, 0xfe, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x80, 0x24, 0x01, 0x00, 0x10, 0x4b,
+ 0x10, 0xb5, 0x59, 0x68, 0x41, 0x1a, 0x0f, 0x29,
+ 0x0d, 0xdc, 0x0e, 0x22, 0xd2, 0x43, 0x91, 0x42,
+ 0x09, 0xdb, 0x1a, 0x1c, 0x92, 0x68, 0x00, 0x29,
+ 0x01, 0xdd, 0x00, 0x2a, 0x03, 0xda, 0x00, 0x29,
+ 0x0d, 0xda, 0x00, 0x2a, 0x0b, 0xdc, 0x04, 0x33,
+ 0x03, 0xc3, 0xfd, 0xf7, 0x10, 0xfd, 0x04, 0x1c,
+ 0xfd, 0xf7, 0x13, 0xfd, 0x00, 0x28, 0x02, 0xd0,
+ 0x20, 0x1c, 0x3c, 0x00, 0xbc, 0x24, 0x01, 0x00,
+ 0xff, 0xf7, 0x92, 0xfe, 0x10, 0xbd, 0x00, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0xf8, 0xb5, 0x64, 0x4c,
+ 0x07, 0x1c, 0x60, 0x78, 0xa1, 0x78, 0x88, 0x42,
+ 0x0f, 0xd1, 0x08, 0x1c, 0xfd, 0xf7, 0xce, 0xf8,
+ 0xe0, 0x60, 0x04, 0x20, 0x60, 0x70, 0x0a, 0x22,
+ 0x1e, 0x21, 0x13, 0x20, 0x01, 0xf0, 0x70, 0xf8,
+ 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, 0x24, 0xf9,
+ 0xf8, 0xbd, 0x04, 0x28, 0x3c, 0x00, 0xf8, 0x24,
+ 0x01, 0x00, 0x6e, 0xd1, 0x58, 0x4e, 0xfd, 0xf7,
+ 0xbc, 0xf8, 0x00, 0x90, 0x71, 0x78, 0x04, 0x1c,
+ 0x00, 0x20, 0x05, 0x29, 0x21, 0xd2, 0x01, 0xa3,
+ 0x5b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x0b, 0x0f,
+ 0x14, 0x1a, 0x02, 0x00, 0x51, 0x48, 0x51, 0x49,
+ 0x60, 0x43, 0x41, 0x18, 0x7d, 0x20, 0xc0, 0x00,
+ 0xee, 0xf7, 0x87, 0xf8, 0x11, 0xe0, 0x87, 0x20,
+ 0x60, 0x43, 0x4d, 0x49, 0x02, 0xe0, 0x3c, 0x00,
+ 0x34, 0x25, 0x01, 0x00, 0x45, 0x20, 0x4d, 0x49,
+ 0x60, 0x43, 0x40, 0x18, 0x08, 0xe0, 0x4c, 0x48,
+ 0xcd, 0x21, 0x09, 0x01, 0x60, 0x43, 0x40, 0x1a,
+ 0x02, 0xe0, 0x46, 0x20, 0x60, 0x43, 0x82, 0x38,
+ 0x06, 0x06, 0x48, 0x48, 0x07, 0x21, 0x00, 0x79,
+ 0x36, 0x16, 0x08, 0x1a, 0x00, 0x19, 0x00, 0x90,
+ 0x68, 0x46, 0xfe, 0xf7, 0x5f, 0xfd, 0x38, 0x1c,
+ 0xfd, 0xf7, 0x2e, 0xfb, 0x00, 0x99, 0x42, 0x4a,
+ 0x3c, 0x00, 0x70, 0x25, 0x01, 0x00, 0x49, 0x00,
+ 0x51, 0x5a, 0x48, 0x43, 0x39, 0x49, 0x04, 0x1c,
+ 0x88, 0x78, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28,
+ 0x1e, 0xd1, 0x35, 0x49, 0x00, 0x28, 0x03, 0xd1,
+ 0x3a, 0x48, 0x05, 0x78, 0x04, 0x20, 0x02, 0xe0,
+ 0x38, 0x48, 0x45, 0x78, 0x0c, 0x20, 0x30, 0x49,
+ 0xc9, 0x68, 0x49, 0x1b, 0x08, 0x18, 0x00, 0x90,
+ 0x68, 0x46, 0xfe, 0xf7, 0x3e, 0xfd, 0x00, 0x98,
+ 0x33, 0x49, 0x3c, 0x00, 0xac, 0x25, 0x01, 0x00,
+ 0x40, 0x00, 0x20, 0x31, 0x08, 0x5a, 0x2a, 0x49,
+ 0x44, 0x43, 0xc8, 0x68, 0xa8, 0x42, 0x01, 0xd9,
+ 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, 0x2e, 0x48,
+ 0x21, 0x18, 0x40, 0x00, 0xee, 0xf7, 0xa2, 0xf8,
+ 0x04, 0x1c, 0x00, 0x2d, 0x03, 0xd0, 0xfd, 0xf7,
+ 0xc3, 0xfa, 0x02, 0xe0, 0x3d, 0xe0, 0xfd, 0xf7,
+ 0xf3, 0xfa, 0x00, 0x2f, 0x02, 0xd1, 0x25, 0x48,
+ 0x0e, 0x38, 0x01, 0xe0, 0x3c, 0x00, 0xe8, 0x25,
+ 0x01, 0x00, 0x23, 0x48, 0x0a, 0x38, 0x01, 0x68,
+ 0x61, 0x1a, 0xcb, 0x1c, 0x01, 0xdb, 0x03, 0x29,
+ 0x00, 0xdd, 0x04, 0x60, 0x01, 0x68, 0xa1, 0x42,
+ 0x01, 0xd2, 0x01, 0x31, 0x04, 0xe0, 0xa1, 0x42,
+ 0x03, 0xd9, 0x00, 0x29, 0x01, 0xd0, 0x01, 0x39,
+ 0x01, 0x60, 0x01, 0x68, 0x38, 0x1c, 0xfd, 0xf7,
+ 0xc0, 0xfb, 0x10, 0x4c, 0x0a, 0x20, 0x60, 0x70,
+ 0x0a, 0x22, 0x13, 0x20, 0xa1, 0x68, 0x3c, 0x00,
+ 0x24, 0x26, 0x01, 0x00, 0x00, 0xf0, 0xd2, 0xff,
+ 0x60, 0x68, 0x00, 0xf0, 0xf7, 0xfa, 0x00, 0x28,
+ 0x00, 0xd1, 0x5f, 0xe7, 0x00, 0xf0, 0xba, 0xfb,
+ 0x11, 0x49, 0x00, 0x23, 0x40, 0x18, 0x0e, 0x49,
+ 0x60, 0x60, 0x1e, 0x39, 0xc8, 0x56, 0xb0, 0x42,
+ 0xf3, 0xd0, 0x0e, 0x70, 0x31, 0x1c, 0x00, 0x20,
+ 0xff, 0xf7, 0x84, 0xfe, 0x4e, 0xe7, 0xff, 0xf7,
+ 0x15, 0xfe, 0x4b, 0xe7, 0x7c, 0x78, 0x01, 0x00,
+ 0x3c, 0x00, 0x60, 0x26, 0x01, 0x00, 0x60, 0xd7,
+ 0xff, 0xff, 0x60, 0x8f, 0x01, 0x00, 0x54, 0x0b,
+ 0x00, 0x00, 0xc9, 0x09, 0x00, 0x00, 0x8e, 0xfe,
+ 0xff, 0xff, 0x0c, 0x5a, 0x01, 0x00, 0x12, 0x5a,
+ 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x40, 0x42,
+ 0x0f, 0x00, 0x30, 0xb5, 0x0c, 0x4b, 0xfe, 0x24,
+ 0x1b, 0x88, 0x04, 0x40, 0xc0, 0x07, 0x5d, 0x07,
+ 0x6d, 0x0f, 0xdb, 0x08, 0xc0, 0x0f, 0x9c, 0x42,
+ 0x0b, 0xd8, 0x3c, 0x00, 0x9c, 0x26, 0x01, 0x00,
+ 0xa2, 0x18, 0x04, 0x3a, 0x9a, 0x42, 0x07, 0xd3,
+ 0x1a, 0x1b, 0x89, 0x5c, 0x01, 0x22, 0xaa, 0x40,
+ 0x11, 0x40, 0x01, 0xd0, 0x02, 0x21, 0x08, 0x43,
+ 0x30, 0xbd, 0x00, 0x00, 0xfa, 0x60, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c,
+ 0x14, 0x20, 0xf5, 0xf7, 0xff, 0xfa, 0x80, 0xbd,
+ 0xb0, 0xb5, 0x04, 0x1c, 0xf7, 0xf7, 0x08, 0xfd,
+ 0x13, 0x4d, 0x00, 0x28, 0x3c, 0x00, 0xd8, 0x26,
+ 0x01, 0x00, 0x1d, 0xd1, 0xa0, 0x07, 0x16, 0xd5,
+ 0x02, 0x20, 0x84, 0x43, 0x11, 0x48, 0x01, 0x22,
+ 0x2a, 0x62, 0x40, 0x68, 0x00, 0x28, 0x13, 0xd0,
+ 0xf2, 0xf7, 0x51, 0xf9, 0x00, 0x28, 0x0f, 0xd1,
+ 0x0b, 0x48, 0xe4, 0x30, 0x80, 0x7a, 0x01, 0x28,
+ 0x00, 0xd0, 0x00, 0x22, 0x11, 0x1c, 0x01, 0x20,
+ 0xf2, 0xf7, 0xa5, 0xf9, 0x04, 0xe0, 0x00, 0xf0,
+ 0x4e, 0xfb, 0xe8, 0x61, 0xf2, 0xf7, 0x3c, 0x00,
+ 0x14, 0x27, 0x01, 0x00, 0x6b, 0xf9, 0xa9, 0x6a,
+ 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7,
+ 0x5c, 0xfe, 0xb0, 0xbd, 0x60, 0x6c, 0x01, 0x00,
+ 0xb0, 0x57, 0x01, 0x00, 0x20, 0x48, 0xb0, 0xb5,
+ 0x81, 0x68, 0x01, 0x29, 0x04, 0xd1, 0x00, 0x78,
+ 0x00, 0x28, 0x01, 0xd1, 0xfd, 0xf7, 0x72, 0xfd,
+ 0x1b, 0x4d, 0x80, 0x3d, 0x2c, 0x1c, 0x70, 0x34,
+ 0x20, 0x78, 0x03, 0x38, 0x05, 0x28, 0x18, 0xd2,
+ 0x3c, 0x00, 0x50, 0x27, 0x01, 0x00, 0x01, 0xa3,
+ 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x04, 0x15,
+ 0x27, 0x27, 0x27, 0x00, 0xfb, 0xf7, 0xf1, 0xff,
+ 0x60, 0x7b, 0x01, 0x1c, 0xff, 0x31, 0x61, 0x73,
+ 0x00, 0x28, 0xf7, 0xd1, 0x04, 0x20, 0x20, 0x70,
+ 0xa8, 0x89, 0xf8, 0xf7, 0xda, 0xf9, 0x01, 0x1c,
+ 0x00, 0x22, 0x0f, 0x20, 0x00, 0xf0, 0x25, 0xff,
+ 0xb0, 0xbd, 0xef, 0xf7, 0xce, 0xff, 0x6a, 0x21,
+ 0x49, 0x5b, 0x3c, 0x00, 0x8c, 0x27, 0x01, 0x00,
+ 0x88, 0x42, 0x0b, 0xd0, 0xe8, 0x89, 0xf8, 0xf7,
+ 0xcb, 0xf9, 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22,
+ 0x0f, 0x20, 0x00, 0xf0, 0xf7, 0xff, 0x07, 0x20,
+ 0x20, 0x70, 0xb0, 0xbd, 0xfd, 0xf7, 0x3a, 0xfe,
+ 0xb0, 0xbd, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00,
+ 0xf0, 0xb5, 0x85, 0xb0, 0x04, 0x1c, 0x03, 0x80,
+ 0x18, 0x0c, 0x60, 0x80, 0x0d, 0x1c, 0x51, 0x78,
+ 0x10, 0x78, 0x09, 0x02, 0x3c, 0x00, 0xc8, 0x27,
+ 0x01, 0x00, 0x48, 0x40, 0xa0, 0x80, 0xd1, 0x78,
+ 0x90, 0x78, 0x09, 0x02, 0x48, 0x40, 0xe0, 0x80,
+ 0x51, 0x79, 0x10, 0x79, 0x09, 0x02, 0x48, 0x40,
+ 0x20, 0x81, 0x68, 0x46, 0x1a, 0x49, 0x14, 0x22,
+ 0xed, 0xf7, 0xe3, 0xfe, 0x00, 0x23, 0x00, 0x20,
+ 0xd9, 0x07, 0xc9, 0x0f, 0x8c, 0x46, 0x42, 0x00,
+ 0x56, 0x07, 0x76, 0x0f, 0x61, 0x46, 0x89, 0x19,
+ 0x49, 0x00, 0x6e, 0x5c, 0x49, 0x19, 0x3c, 0x00,
+ 0x04, 0x28, 0x01, 0x00, 0x49, 0x78, 0x6f, 0x46,
+ 0x09, 0x02, 0x4e, 0x40, 0x81, 0x00, 0x79, 0x58,
+ 0x0f, 0x4f, 0x49, 0x00, 0x61, 0x5a, 0x01, 0x30,
+ 0x4e, 0x40, 0x31, 0x06, 0x36, 0x0a, 0x76, 0x00,
+ 0xc9, 0x0d, 0x79, 0x5a, 0xf6, 0x19, 0x01, 0x27,
+ 0x7f, 0x02, 0xf6, 0x19, 0x36, 0x88, 0x71, 0x40,
+ 0xa6, 0x5a, 0x89, 0x19, 0xa1, 0x52, 0x05, 0x28,
+ 0xdc, 0xdb, 0x20, 0x89, 0xc0, 0x18, 0x01, 0x33,
+ 0x3c, 0x00, 0x40, 0x28, 0x01, 0x00, 0x08, 0x2b,
+ 0x20, 0x81, 0xd2, 0xdb, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xd8, 0x56, 0x01, 0x00, 0xd8, 0x52,
+ 0x01, 0x00, 0xf0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c,
+ 0x1e, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0x41, 0x00,
+ 0x53, 0x5a, 0x01, 0x30, 0x06, 0xaf, 0x7b, 0x52,
+ 0x05, 0x28, 0xf8, 0xdb, 0x10, 0x89, 0x00, 0xab,
+ 0x3a, 0x49, 0x80, 0x19, 0x58, 0x84, 0x68, 0x46,
+ 0x18, 0x22, 0x3c, 0x00, 0x7c, 0x28, 0x01, 0x00,
+ 0xed, 0xf7, 0x98, 0xfe, 0x00, 0x20, 0x41, 0x00,
+ 0x0a, 0x19, 0x52, 0x78, 0x63, 0x5c, 0x6f, 0x46,
+ 0x12, 0x02, 0x53, 0x40, 0x82, 0x00, 0xba, 0x58,
+ 0x06, 0xaf, 0x52, 0x00, 0xba, 0x5a, 0x31, 0x4f,
+ 0x01, 0x30, 0x53, 0x40, 0x1a, 0x06, 0x1b, 0x0a,
+ 0x5b, 0x00, 0xd2, 0x0d, 0xba, 0x5a, 0xdb, 0x19,
+ 0x01, 0x27, 0x7f, 0x02, 0xdb, 0x19, 0x1b, 0x88,
+ 0x5a, 0x40, 0x06, 0xab, 0x3c, 0x00, 0xb8, 0x28,
+ 0x01, 0x00, 0x5b, 0x5a, 0xd2, 0x18, 0x06, 0xab,
+ 0x5a, 0x52, 0x06, 0x28, 0xde, 0xdb, 0x61, 0x7b,
+ 0x20, 0x7b, 0x00, 0xab, 0x09, 0x02, 0x48, 0x40,
+ 0x59, 0x8c, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03,
+ 0x48, 0x40, 0x19, 0x8b, 0x40, 0x18, 0x18, 0x83,
+ 0xe1, 0x7b, 0xa0, 0x7b, 0x09, 0x02, 0x48, 0x40,
+ 0x19, 0x8b, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03,
+ 0x48, 0x40, 0x59, 0x8b, 0x40, 0x18, 0x3c, 0x00,
+ 0xf4, 0x28, 0x01, 0x00, 0x58, 0x83, 0x02, 0x20,
+ 0x41, 0x00, 0x06, 0xaa, 0x8a, 0x18, 0x20, 0x3a,
+ 0xd2, 0x8b, 0x01, 0x30, 0x53, 0x08, 0xd2, 0x03,
+ 0x5a, 0x40, 0x06, 0xab, 0x5b, 0x5a, 0xd2, 0x18,
+ 0x06, 0xab, 0x5a, 0x52, 0x06, 0x28, 0xef, 0xdb,
+ 0x30, 0x0a, 0x28, 0x70, 0x70, 0x04, 0x40, 0x0e,
+ 0x20, 0x21, 0x08, 0x43, 0x68, 0x70, 0xae, 0x70,
+ 0x61, 0x78, 0x20, 0x78, 0x00, 0xab, 0x09, 0x02,
+ 0x3c, 0x00, 0x30, 0x29, 0x01, 0x00, 0x48, 0x40,
+ 0x59, 0x8c, 0x48, 0x40, 0xc0, 0x05, 0x00, 0x0e,
+ 0xe8, 0x70, 0x00, 0x20, 0x41, 0x00, 0x06, 0xaa,
+ 0x53, 0x5a, 0x4a, 0x19, 0x01, 0x30, 0x13, 0x71,
+ 0x06, 0xab, 0x59, 0x5a, 0x09, 0x0a, 0x51, 0x71,
+ 0x06, 0x28, 0xf3, 0xdb, 0x09, 0xb0, 0xf0, 0xbd,
+ 0x00, 0x00, 0xec, 0x56, 0x01, 0x00, 0xd8, 0x52,
+ 0x01, 0x00, 0xf0, 0xb5, 0x46, 0x68, 0x05, 0x1c,
+ 0x60, 0x30, 0x3c, 0x00, 0x6c, 0x29, 0x01, 0x00,
+ 0x85, 0xb0, 0x04, 0x90, 0x60, 0xe0, 0x68, 0x68,
+ 0x0c, 0x21, 0x07, 0x69, 0x00, 0x20, 0xee, 0xf7,
+ 0x2d, 0xfe, 0x70, 0x61, 0x01, 0x89, 0x04, 0x39,
+ 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x70, 0x69,
+ 0x00, 0x68, 0x40, 0x18, 0x04, 0x21, 0xee, 0xf7,
+ 0x21, 0xfe, 0xf0, 0x61, 0x70, 0x69, 0x20, 0x21,
+ 0x04, 0x68, 0x04, 0x98, 0x04, 0x22, 0x40, 0x7b,
+ 0x80, 0x01, 0x08, 0x43, 0x3c, 0x00, 0xa8, 0x29,
+ 0x01, 0x00, 0xe0, 0x70, 0x28, 0x69, 0x40, 0x89,
+ 0xa0, 0x70, 0x28, 0x69, 0x40, 0x89, 0x00, 0x0a,
+ 0x20, 0x70, 0x29, 0x69, 0x0c, 0x31, 0xa0, 0x18,
+ 0xed, 0xf7, 0x9b, 0xfd, 0x20, 0x78, 0x20, 0x21,
+ 0x40, 0x06, 0x40, 0x0e, 0x08, 0x43, 0x60, 0x70,
+ 0x28, 0x69, 0x0a, 0x30, 0x01, 0x88, 0x01, 0x31,
+ 0x09, 0x04, 0x09, 0x0c, 0x01, 0x80, 0x04, 0xd1,
+ 0x28, 0x69, 0x0c, 0x30, 0x01, 0x68, 0x3c, 0x00,
+ 0xe4, 0x29, 0x01, 0x00, 0x01, 0x31, 0x01, 0x60,
+ 0x35, 0x62, 0x61, 0x79, 0x20, 0x79, 0x09, 0x02,
+ 0x40, 0x18, 0xa1, 0x79, 0x09, 0x04, 0x40, 0x18,
+ 0xe1, 0x79, 0x09, 0x06, 0x43, 0x18, 0x00, 0x93,
+ 0xa0, 0x78, 0x21, 0x78, 0x09, 0x02, 0x40, 0x18,
+ 0x04, 0x04, 0x24, 0x0c, 0x10, 0x20, 0xee, 0xf7,
+ 0x13, 0xff, 0xb0, 0x61, 0x28, 0x69, 0x3a, 0x1c,
+ 0x01, 0x68, 0x00, 0x9b, 0x01, 0xa8, 0x0a, 0x32,
+ 0x3c, 0x00, 0x20, 0x2a, 0x01, 0x00, 0xff, 0xf7,
+ 0xc8, 0xfe, 0x28, 0x69, 0x23, 0x1c, 0x01, 0x68,
+ 0xb0, 0x69, 0x01, 0xaa, 0xff, 0xf7, 0x11, 0xff,
+ 0x36, 0x68, 0x00, 0x2e, 0x9c, 0xd1, 0x03, 0x49,
+ 0x04, 0x48, 0x6a, 0x68, 0xf7, 0xf7, 0x63, 0xfb,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xfd, 0x6b,
+ 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x01, 0x38,
+ 0x07, 0x49, 0x40, 0x00, 0x09, 0x5c, 0x00, 0x29,
+ 0x06, 0xd0, 0x3c, 0x00, 0x5c, 0x2a, 0x01, 0x00,
+ 0x04, 0x49, 0x1c, 0x39, 0x08, 0x5c, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0xe6, 0x78, 0x01, 0x00,
+ 0xfe, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x02, 0x90,
+ 0x13, 0x48, 0x17, 0x1c, 0x00, 0x68, 0x0c, 0x1c,
+ 0x86, 0x78, 0x30, 0x1c, 0xfd, 0xf7, 0x28, 0xfa,
+ 0x00, 0x28, 0x01, 0xd1, 0x02, 0x98, 0xfe, 0xbd,
+ 0x00, 0x2d, 0x08, 0xd1, 0x3c, 0x00, 0x98, 0x2a,
+ 0x01, 0x00, 0x20, 0x68, 0x00, 0xab, 0x18, 0x71,
+ 0x60, 0x68, 0x58, 0x71, 0xa0, 0x68, 0x98, 0x71,
+ 0x03, 0x20, 0x38, 0x80, 0x29, 0x1c, 0x30, 0x1c,
+ 0x01, 0xaa, 0x00, 0xf0, 0x0e, 0xf8, 0x00, 0x2d,
+ 0xec, 0xd0, 0x00, 0xab, 0x19, 0x79, 0x21, 0x60,
+ 0x59, 0x79, 0x61, 0x60, 0x99, 0x79, 0xa1, 0x60,
+ 0x0c, 0x21, 0x39, 0x80, 0xe2, 0xe7, 0xf8, 0x6b,
+ 0x01, 0x00, 0xf8, 0xb5, 0x15, 0x1c, 0x3c, 0x00,
+ 0xd4, 0x2a, 0x01, 0x00, 0x42, 0x1e, 0x01, 0x38,
+ 0x47, 0x00, 0x3f, 0x18, 0x1f, 0x48, 0x3e, 0x18,
+ 0x00, 0x29, 0x06, 0xd0, 0x01, 0x24, 0x03, 0x22,
+ 0x31, 0x1c, 0x28, 0x1c, 0xed, 0xf7, 0x04, 0xfd,
+ 0x32, 0xe0, 0x68, 0x78, 0x01, 0x24, 0x00, 0x28,
+ 0x05, 0xd0, 0x29, 0x78, 0x08, 0x18, 0x01, 0x38,
+ 0x0e, 0x28, 0x00, 0xd9, 0x00, 0x24, 0x00, 0x2c,
+ 0x26, 0xd0, 0x00, 0x2a, 0x07, 0xd1, 0x2a, 0x21,
+ 0x3c, 0x00, 0x10, 0x2b, 0x01, 0x00, 0x12, 0x48,
+ 0xed, 0xf7, 0x9f, 0xfc, 0x1c, 0x21, 0x11, 0x48,
+ 0xed, 0xf7, 0x9b, 0xfc, 0x0f, 0x48, 0x03, 0x22,
+ 0x29, 0x1c, 0x30, 0x1c, 0xed, 0xf7, 0xe7, 0xfc,
+ 0x0c, 0x48, 0x71, 0x78, 0xc0, 0x5d, 0xb2, 0x78,
+ 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x2a, 0x0c, 0xd0,
+ 0x01, 0x22, 0x43, 0x18, 0x08, 0x4d, 0x06, 0xe0,
+ 0x41, 0x00, 0x49, 0x19, 0x10, 0x39, 0x8a, 0x73,
+ 0xb7, 0x78, 0x3c, 0x00, 0x4c, 0x2b, 0x01, 0x00,
+ 0x01, 0x30, 0xcf, 0x73, 0x83, 0x42, 0xf6, 0xd8,
+ 0xfe, 0xf7, 0x60, 0xf8, 0x20, 0x1c, 0xf8, 0xbd,
+ 0xeb, 0x62, 0x01, 0x00, 0xca, 0x78, 0x01, 0x00,
+ 0x70, 0xb5, 0x05, 0x1c, 0x1c, 0x48, 0x00, 0x23,
+ 0xc0, 0x56, 0x43, 0x1c, 0x32, 0xd1, 0xa8, 0x7a,
+ 0xf8, 0xf7, 0x0c, 0xf9, 0x00, 0x26, 0x00, 0x28,
+ 0x18, 0x4c, 0x08, 0xd0, 0xe8, 0x69, 0xe1, 0x6b,
+ 0x00, 0x29, 0x0b, 0xd1, 0x3c, 0x00, 0x88, 0x2b,
+ 0x01, 0x00, 0x66, 0x63, 0x01, 0x21, 0xe1, 0x63,
+ 0xa6, 0x63, 0x06, 0xe0, 0xa8, 0x69, 0xe1, 0x6b,
+ 0x00, 0x29, 0x02, 0xd0, 0x66, 0x63, 0xa6, 0x63,
+ 0xe6, 0x63, 0xa1, 0x6b, 0x01, 0x31, 0xa1, 0x63,
+ 0x82, 0x03, 0x01, 0xd5, 0x0e, 0x4a, 0x10, 0x43,
+ 0xe2, 0x6b, 0x00, 0x2a, 0x00, 0xd0, 0x40, 0x42,
+ 0x62, 0x6b, 0x10, 0x18, 0x60, 0x63, 0x08, 0x29,
+ 0x0b, 0xd1, 0x00, 0x28, 0x01, 0xdd, 0x3c, 0x00,
+ 0xc4, 0x2b, 0x01, 0x00, 0x01, 0x20, 0x03, 0xe0,
+ 0x00, 0x28, 0x03, 0xda, 0x00, 0x20, 0xc0, 0x43,
+ 0xef, 0xf7, 0x62, 0xfe, 0x66, 0x63, 0xa6, 0x63,
+ 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x6b, 0x01, 0x00,
+ 0x84, 0x6a, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff,
+ 0x0c, 0x21, 0x05, 0x4a, 0x41, 0x43, 0x89, 0x18,
+ 0x80, 0xb5, 0x89, 0x78, 0x00, 0x29, 0x01, 0xd1,
+ 0xf3, 0xf7, 0xf2, 0xfa, 0x80, 0xbd, 0x00, 0x00,
+ 0x3c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x60, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x00, 0x20,
+ 0xf7, 0xf7, 0x03, 0xfa, 0x80, 0xbd, 0x80, 0xb5,
+ 0x01, 0x1c, 0x01, 0x20, 0xf7, 0xf7, 0xfd, 0xf9,
+ 0x80, 0xbd, 0x02, 0x49, 0x89, 0x68, 0x40, 0x1a,
+ 0xc0, 0x0f, 0x70, 0x47, 0x00, 0x00, 0x00, 0x01,
+ 0x07, 0x00, 0x02, 0x49, 0x89, 0x68, 0x08, 0x1a,
+ 0xc0, 0x17, 0x01, 0x30, 0x70, 0x47, 0x00, 0x01,
+ 0x07, 0x00, 0x3c, 0x00, 0x3c, 0x2c, 0x01, 0x00,
+ 0x05, 0x49, 0x4a, 0x68, 0x01, 0x23, 0x1a, 0x43,
+ 0x4a, 0x60, 0x8a, 0x68, 0x10, 0x18, 0x88, 0x60,
+ 0x48, 0x68, 0x98, 0x43, 0x48, 0x60, 0x70, 0x47,
+ 0x00, 0x01, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4b,
+ 0x00, 0x21, 0x0a, 0x01, 0x9a, 0x58, 0x00, 0x2a,
+ 0x17, 0xd1, 0x01, 0x24, 0x0a, 0x01, 0x9c, 0x50,
+ 0xd2, 0x18, 0x10, 0x73, 0x00, 0x23, 0x53, 0x73,
+ 0x02, 0x23, 0x01, 0x28, 0x3c, 0x00, 0x78, 0x2c,
+ 0x01, 0x00, 0x0e, 0x4a, 0x05, 0xd1, 0xc8, 0x00,
+ 0x80, 0x18, 0x10, 0x30, 0x02, 0x78, 0x9a, 0x43,
+ 0x04, 0xe0, 0xc8, 0x00, 0x80, 0x18, 0x10, 0x30,
+ 0x02, 0x78, 0x1a, 0x43, 0x02, 0x70, 0x02, 0xe0,
+ 0x01, 0x31, 0x08, 0x29, 0xe0, 0xdb, 0x08, 0x29,
+ 0x04, 0xd1, 0x01, 0x21, 0x99, 0x20, 0xee, 0xf7,
+ 0xfe, 0xfa, 0x03, 0x49, 0x08, 0x04, 0x00, 0x0c,
+ 0x10, 0xbd, 0xac, 0x73, 0x01, 0x00, 0x3c, 0x00,
+ 0xb4, 0x2c, 0x01, 0x00, 0x00, 0x60, 0x07, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0xf7, 0xb5, 0x19, 0x4f,
+ 0x19, 0x4e, 0x0c, 0x1c, 0xc1, 0x00, 0xc9, 0x19,
+ 0xb2, 0x68, 0x10, 0x31, 0x81, 0xb0, 0x01, 0x3a,
+ 0x4a, 0x60, 0x0b, 0x78, 0x1d, 0x1c, 0x0d, 0x22,
+ 0x93, 0x43, 0x0b, 0x70, 0x01, 0x22, 0x82, 0x40,
+ 0x3a, 0x73, 0x12, 0x4b, 0x00, 0x01, 0x03, 0x9a,
+ 0xc0, 0x18, 0x82, 0x60, 0x10, 0x4a, 0x10, 0x1c,
+ 0x3c, 0x00, 0xf0, 0x2c, 0x01, 0x00, 0x20, 0x30,
+ 0x87, 0x79, 0x00, 0xab, 0x1f, 0x70, 0xc0, 0x79,
+ 0x58, 0x70, 0xb0, 0x68, 0x03, 0x30, 0x00, 0x23,
+ 0x26, 0x1a, 0x01, 0xd5, 0x04, 0x1c, 0x01, 0x23,
+ 0x4c, 0x60, 0x0d, 0x70, 0x00, 0x2b, 0x04, 0xd0,
+ 0x20, 0x1c, 0xff, 0xf7, 0x8a, 0xff, 0x00, 0x28,
+ 0xfa, 0xd0, 0x00, 0xab, 0x18, 0x88, 0xd0, 0x84,
+ 0xff, 0xbd, 0x00, 0x60, 0x07, 0x00, 0x00, 0x01,
+ 0x07, 0x00, 0x3c, 0x00, 0x2c, 0x2d, 0x01, 0x00,
+ 0xac, 0x73, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x30, 0xb5, 0x00, 0x20, 0xc0, 0x43, 0x0b, 0x4c,
+ 0x09, 0x4b, 0x00, 0x22, 0xd1, 0x00, 0x09, 0x19,
+ 0x0d, 0x7c, 0xed, 0x07, 0x07, 0xd5, 0x49, 0x69,
+ 0x9d, 0x68, 0x49, 0x1b, 0x00, 0xd5, 0x00, 0x21,
+ 0x81, 0x42, 0x00, 0xd2, 0x08, 0x1c, 0x01, 0x32,
+ 0x08, 0x2a, 0xef, 0xdb, 0x30, 0xbd, 0x00, 0x00,
+ 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x2d,
+ 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0xb0, 0xb5,
+ 0x08, 0x28, 0x0b, 0xd2, 0x08, 0x4d, 0x04, 0x01,
+ 0x29, 0x59, 0x00, 0x29, 0x04, 0xd0, 0x00, 0xf0,
+ 0x4a, 0xf8, 0x00, 0x20, 0x28, 0x51, 0xb0, 0xbd,
+ 0x02, 0x21, 0x00, 0xe0, 0x03, 0x21, 0x99, 0x20,
+ 0xee, 0xf7, 0x89, 0xfa, 0xb0, 0xbd, 0xac, 0x73,
+ 0x01, 0x00, 0x03, 0x49, 0x00, 0x01, 0x40, 0x18,
+ 0x41, 0x7b, 0x08, 0x22, 0x11, 0x43, 0x3c, 0x00,
+ 0xa4, 0x2d, 0x01, 0x00, 0x41, 0x73, 0x70, 0x47,
+ 0xac, 0x73, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68,
+ 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00,
+ 0x70, 0xb5, 0x0b, 0x4e, 0x09, 0x4d, 0x00, 0x22,
+ 0xd0, 0x00, 0x84, 0x19, 0x20, 0x7c, 0xc0, 0x07,
+ 0x07, 0xd5, 0x60, 0x69, 0xff, 0xf7, 0x26, 0xff,
+ 0x00, 0x28, 0x02, 0xd0, 0xa8, 0x68, 0x32, 0x30,
+ 0x60, 0x61, 0x01, 0x32, 0x08, 0x2a, 0xef, 0xdb,
+ 0x3c, 0x00, 0xe0, 0x2d, 0x01, 0x00, 0x70, 0xbd,
+ 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x02, 0x4a, 0xc0, 0x00, 0x80, 0x18,
+ 0x01, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x04, 0x49, 0xc0, 0x00, 0x41, 0x18,
+ 0x08, 0x7c, 0x08, 0x23, 0x02, 0x1c, 0x9a, 0x43,
+ 0x0a, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x70, 0xb5, 0x08, 0x28, 0x17, 0xd2,
+ 0x0e, 0x49, 0x3c, 0x00, 0x1c, 0x2e, 0x01, 0x00,
+ 0x8a, 0x68, 0x0e, 0x4d, 0x01, 0x3a, 0xc1, 0x00,
+ 0x49, 0x19, 0x4a, 0x61, 0x0c, 0x4b, 0x9a, 0x79,
+ 0x10, 0x31, 0x0c, 0x78, 0x0d, 0x26, 0xb4, 0x43,
+ 0x0c, 0x70, 0x01, 0x21, 0x81, 0x40, 0x29, 0x73,
+ 0x9a, 0x71, 0x09, 0x4a, 0x07, 0x49, 0x00, 0x01,
+ 0x80, 0x18, 0x41, 0x60, 0x70, 0xbd, 0x05, 0x21,
+ 0x99, 0x20, 0xee, 0xf7, 0x29, 0xfa, 0x70, 0xbd,
+ 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x58, 0x2e,
+ 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0xac, 0x73,
+ 0x01, 0x00, 0xf8, 0xb5, 0x9e, 0x46, 0x1a, 0x4b,
+ 0x94, 0x46, 0x9b, 0x68, 0x1a, 0x4c, 0xc2, 0x00,
+ 0x12, 0x19, 0x01, 0x3b, 0x53, 0x61, 0x15, 0x1c,
+ 0x18, 0x4c, 0xa6, 0x79, 0x2a, 0x1c, 0x10, 0x32,
+ 0x13, 0x78, 0x0d, 0x27, 0xbb, 0x43, 0x13, 0x70,
+ 0x01, 0x27, 0x12, 0x4b, 0x87, 0x40, 0x3c, 0x00,
+ 0x94, 0x2e, 0x01, 0x00, 0x1f, 0x73, 0xa6, 0x71,
+ 0x12, 0x4e, 0x00, 0x01, 0x80, 0x19, 0x63, 0x46,
+ 0x43, 0x60, 0x73, 0x46, 0x83, 0x60, 0x13, 0x78,
+ 0x40, 0x7b, 0xa6, 0x79, 0x01, 0x27, 0x18, 0x43,
+ 0x38, 0x43, 0x14, 0x35, 0x00, 0xab, 0x1e, 0x70,
+ 0xe4, 0x79, 0x5c, 0x70, 0x06, 0x4b, 0x9b, 0x68,
+ 0x03, 0x33, 0xcc, 0x1a, 0x00, 0xd5, 0x19, 0x1c,
+ 0x29, 0x60, 0x10, 0x70, 0x00, 0xab, 0x18, 0x88,
+ 0x3c, 0x00, 0xd0, 0x2e, 0x01, 0x00, 0x03, 0x4c,
+ 0x20, 0x3c, 0xe0, 0x84, 0xf8, 0xbd, 0x00, 0x01,
+ 0x07, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10,
+ 0x07, 0x00, 0xac, 0x73, 0x01, 0x00, 0x00, 0xb5,
+ 0x01, 0x1c, 0xff, 0xf7, 0x5e, 0xff, 0x42, 0x18,
+ 0x10, 0x1c, 0xff, 0xf7, 0x92, 0xfe, 0x00, 0x28,
+ 0xfa, 0xd0, 0x00, 0xbd, 0x00, 0x00, 0x89, 0x1a,
+ 0x40, 0x1a, 0x99, 0x18, 0x88, 0x42, 0x01, 0xd8,
+ 0x01, 0x20, 0x3c, 0x00, 0x0c, 0x2f, 0x01, 0x00,
+ 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x00, 0x28,
+ 0x01, 0xd1, 0xee, 0xf7, 0xef, 0xf9, 0x21, 0x1c,
+ 0x01, 0x20, 0xff, 0xf7, 0x19, 0xfa, 0x41, 0x20,
+ 0x00, 0x5d, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x25,
+ 0x04, 0xe0, 0x02, 0x28, 0x01, 0xd1, 0x05, 0x25,
+ 0x00, 0xe0, 0x01, 0x25, 0xe0, 0x68, 0xee, 0xf7,
+ 0x29, 0xfb, 0xa6, 0x6b, 0x3c, 0x00, 0x48, 0x2f,
+ 0x01, 0x00, 0x00, 0x2e, 0x10, 0xd0, 0x00, 0x2f,
+ 0x06, 0xd0, 0x2f, 0x20, 0x02, 0x5d, 0x20, 0x6a,
+ 0x41, 0x6b, 0x28, 0x1c, 0xed, 0xf7, 0x44, 0xfa,
+ 0xa0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xee, 0xf7,
+ 0x46, 0xfc, 0x20, 0x6a, 0xee, 0xf7, 0x43, 0xfc,
+ 0x20, 0x1c, 0xee, 0xf7, 0x40, 0xfc, 0x30, 0x1c,
+ 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0xc0, 0x6b,
+ 0x00, 0x28, 0x09, 0xd0, 0x20, 0x69, 0x3c, 0x00,
+ 0x84, 0x2f, 0x01, 0x00, 0x00, 0x8b, 0xee, 0xf7,
+ 0x55, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c,
+ 0x06, 0x20, 0xff, 0xf7, 0xe3, 0xf9, 0x08, 0x4d,
+ 0x20, 0x1c, 0xa9, 0x6d, 0xff, 0xf7, 0xba, 0xff,
+ 0x00, 0x28, 0x07, 0xd0, 0xe8, 0x68, 0x01, 0x30,
+ 0xe8, 0x60, 0x28, 0x6a, 0x01, 0x38, 0x28, 0x62,
+ 0xfc, 0xf7, 0x78, 0xf8, 0xb0, 0xbd, 0x00, 0x00,
+ 0xc4, 0x69, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c,
+ 0x3c, 0x00, 0xc0, 0x2f, 0x01, 0x00, 0xe1, 0x6d,
+ 0xff, 0xf7, 0xa7, 0xff, 0x00, 0x28, 0x04, 0xd0,
+ 0xe0, 0x69, 0x01, 0x38, 0xe0, 0x61, 0xfc, 0xf7,
+ 0x68, 0xf8, 0x10, 0xbd, 0x00, 0x00, 0xc4, 0x69,
+ 0x01, 0x00, 0x0c, 0x23, 0x0c, 0x49, 0x58, 0x43,
+ 0x40, 0x18, 0x10, 0xb5, 0x44, 0x68, 0xa1, 0x68,
+ 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7,
+ 0xf3, 0xf9, 0xe0, 0x6b, 0x00, 0x28, 0x08, 0xd0,
+ 0x20, 0x69, 0x3c, 0x00, 0xfc, 0x2f, 0x01, 0x00,
+ 0x00, 0x8b, 0xee, 0xf7, 0x19, 0xf9, 0x00, 0x28,
+ 0x02, 0xd0, 0x20, 0x1c, 0xf9, 0xf7, 0x26, 0xf9,
+ 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00,
+ 0xf8, 0xb5, 0x22, 0x49, 0x48, 0x68, 0x80, 0x00,
+ 0x06, 0xd4, 0x01, 0x20, 0x40, 0x07, 0x08, 0x60,
+ 0x4a, 0x69, 0x92, 0x00, 0x00, 0xd4, 0x48, 0x60,
+ 0x1d, 0x4f, 0x78, 0x7e, 0xc3, 0x06, 0x01, 0x20,
+ 0x02, 0x1c, 0xdb, 0x0e, 0x3c, 0x00, 0x38, 0x30,
+ 0x01, 0x00, 0x9a, 0x40, 0x0a, 0x60, 0x79, 0x69,
+ 0x8c, 0x68, 0x8c, 0x60, 0x21, 0x07, 0x89, 0x0f,
+ 0x09, 0xd0, 0x21, 0x07, 0x04, 0xd5, 0x0b, 0x21,
+ 0x9e, 0x20, 0xee, 0xf7, 0x28, 0xf9, 0x00, 0xe0,
+ 0x78, 0x64, 0x0c, 0x20, 0x84, 0x43, 0x12, 0x48,
+ 0x3d, 0x68, 0x06, 0x5d, 0x6c, 0x68, 0x2c, 0x34,
+ 0x06, 0xe0, 0xa0, 0x68, 0x00, 0x68, 0xa0, 0x60,
+ 0xe9, 0x68, 0x28, 0x1c, 0xed, 0xf7, 0x3c, 0x00,
+ 0x74, 0x30, 0x01, 0x00, 0xb2, 0xf9, 0x01, 0x3e,
+ 0xf6, 0xd2, 0xa0, 0x68, 0x80, 0x68, 0x00, 0x28,
+ 0x0d, 0xd0, 0x40, 0x89, 0x00, 0x28, 0x0a, 0xd0,
+ 0x78, 0x6c, 0x00, 0x28, 0x07, 0xd1, 0x78, 0x69,
+ 0x80, 0x68, 0x80, 0x07, 0x03, 0xd1, 0x0c, 0x21,
+ 0x9e, 0x20, 0xee, 0xf7, 0x03, 0xf9, 0xf8, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0xcc, 0x6d, 0x01, 0x00,
+ 0xb4, 0x44, 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5,
+ 0x3c, 0x00, 0xb0, 0x30, 0x01, 0x00, 0x08, 0x7e,
+ 0xc2, 0x06, 0xd2, 0x0e, 0x01, 0x20, 0x90, 0x40,
+ 0x07, 0x4a, 0x10, 0x60, 0x00, 0x20, 0x0a, 0x69,
+ 0xc0, 0x43, 0x90, 0x60, 0x08, 0x68, 0x24, 0x31,
+ 0x06, 0xc9, 0x03, 0x69, 0xed, 0xf7, 0x86, 0xf9,
+ 0x80, 0xbd, 0xcc, 0x6d, 0x01, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0xf8, 0xb5, 0x44, 0x68, 0x06, 0x1c,
+ 0x2c, 0x34, 0x20, 0x68, 0x0d, 0x1c, 0x80, 0x68,
+ 0x00, 0x90, 0x3c, 0x00, 0xec, 0x30, 0x01, 0x00,
+ 0x00, 0x28, 0x00, 0xd0, 0xc5, 0x60, 0x20, 0x68,
+ 0x00, 0x68, 0x20, 0x60, 0x40, 0x68, 0x00, 0x28,
+ 0x03, 0xd0, 0x0a, 0x21, 0x9e, 0x20, 0xee, 0xf7,
+ 0xcf, 0xf8, 0x20, 0x68, 0x45, 0x60, 0x28, 0x1c,
+ 0x02, 0xe0, 0x00, 0x22, 0x42, 0x60, 0x08, 0x1c,
+ 0xc1, 0x68, 0x00, 0x29, 0xf9, 0xd1, 0x71, 0x68,
+ 0x60, 0x27, 0x0b, 0x1c, 0x40, 0x33, 0x9c, 0x46,
+ 0x9b, 0x78, 0xca, 0x7e, 0x3c, 0x00, 0x28, 0x31,
+ 0x01, 0x00, 0x5b, 0x01, 0x12, 0x07, 0x12, 0x0f,
+ 0x3b, 0x40, 0x1a, 0x43, 0x8b, 0x8f, 0xff, 0x27,
+ 0x3f, 0x04, 0x1b, 0x04, 0x3b, 0x40, 0x1a, 0x43,
+ 0x90, 0x23, 0x1a, 0x43, 0x42, 0x60, 0x63, 0x46,
+ 0x9a, 0x78, 0x01, 0x32, 0xd2, 0x07, 0xd2, 0x0f,
+ 0x9a, 0x70, 0x89, 0x6b, 0xc1, 0x60, 0x21, 0x68,
+ 0x88, 0x60, 0x00, 0x98, 0x00, 0x28, 0x01, 0xd0,
+ 0x00, 0x98, 0xc5, 0x60, 0x0a, 0x4f, 0x3c, 0x00,
+ 0x64, 0x31, 0x01, 0x00, 0xbd, 0x79, 0xa0, 0x69,
+ 0x00, 0x28, 0x0c, 0xd0, 0x00, 0x22, 0xa2, 0x61,
+ 0x74, 0x68, 0x60, 0x69, 0xef, 0xf7, 0x2e, 0xff,
+ 0xe0, 0x6a, 0x61, 0x69, 0x40, 0x68, 0x48, 0x60,
+ 0x61, 0x69, 0x01, 0x20, 0x08, 0x60, 0xbd, 0x71,
+ 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00,
+ 0xfe, 0xb5, 0x44, 0x68, 0x0f, 0x1c, 0x01, 0x94,
+ 0x2c, 0x34, 0x20, 0x1c, 0x12, 0x30, 0x02, 0x90,
+ 0x3c, 0x00, 0xa0, 0x31, 0x01, 0x00, 0x2c, 0xe0,
+ 0x0c, 0x20, 0xee, 0xf7, 0x00, 0xfb, 0x05, 0x1c,
+ 0x60, 0x68, 0x00, 0x28, 0x1d, 0xd1, 0x02, 0x98,
+ 0x00, 0x21, 0x00, 0x90, 0x00, 0x20, 0xee, 0xf7,
+ 0x0e, 0xfa, 0x06, 0x1c, 0x00, 0x98, 0x04, 0x21,
+ 0xee, 0xf7, 0x09, 0xfa, 0x01, 0x1c, 0x01, 0x98,
+ 0xc0, 0x7e, 0x00, 0x07, 0x00, 0x0f, 0xd0, 0x30,
+ 0x70, 0x60, 0x01, 0x98, 0xc0, 0x7e, 0x00, 0x07,
+ 0x00, 0x0f, 0x3c, 0x00, 0xdc, 0x31, 0x01, 0x00,
+ 0xf0, 0x30, 0x48, 0x60, 0x30, 0x1c, 0xee, 0xf7,
+ 0x19, 0xf9, 0x65, 0x60, 0xe6, 0x60, 0x01, 0xe0,
+ 0x20, 0x68, 0x05, 0x60, 0x60, 0x68, 0x28, 0x60,
+ 0x25, 0x60, 0x00, 0x20, 0x68, 0x60, 0xa8, 0x60,
+ 0x38, 0x1c, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e,
+ 0x39, 0x1c, 0x07, 0x1c, 0x00, 0x29, 0xca, 0xd1,
+ 0x60, 0x68, 0xa0, 0x60, 0xfe, 0xbd, 0x00, 0x00,
+ 0xff, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x18, 0x32,
+ 0x01, 0x00, 0x08, 0x1c, 0x00, 0x26, 0x81, 0xb0,
+ 0xf4, 0xf7, 0x2f, 0xfe, 0x04, 0x1c, 0x02, 0xd0,
+ 0x60, 0x68, 0xff, 0x28, 0x01, 0xd1, 0x06, 0x26,
+ 0x28, 0xe0, 0x21, 0x1c, 0x20, 0x31, 0x0a, 0x78,
+ 0x01, 0x2a, 0x01, 0xd1, 0x03, 0x26, 0x21, 0xe0,
+ 0x01, 0x27, 0x25, 0x60, 0x0f, 0x70, 0x11, 0xc5,
+ 0x1d, 0x48, 0x08, 0x3d, 0x68, 0x61, 0x03, 0x98,
+ 0x6a, 0x46, 0xe8, 0x60, 0x04, 0x98, 0x3c, 0x00,
+ 0x54, 0x32, 0x01, 0x00, 0x28, 0x61, 0x1a, 0x48,
+ 0xa8, 0x61, 0x1a, 0x48, 0xe8, 0x61, 0x1a, 0x48,
+ 0x28, 0x62, 0x1a, 0x48, 0x68, 0x62, 0x20, 0x7e,
+ 0xa1, 0x68, 0xed, 0xf7, 0xb3, 0xfe, 0x00, 0x28,
+ 0x06, 0xd1, 0x60, 0x7e, 0xe1, 0x68, 0x6a, 0x46,
+ 0xed, 0xf7, 0xac, 0xfe, 0x00, 0x28, 0x07, 0xd0,
+ 0x04, 0x26, 0x31, 0x1c, 0x9e, 0x20, 0xee, 0xf7,
+ 0x0d, 0xf8, 0x30, 0x1c, 0x05, 0xb0, 0xf0, 0xbd,
+ 0x3c, 0x00, 0x90, 0x32, 0x01, 0x00, 0x6a, 0x46,
+ 0x0f, 0x49, 0x1d, 0x20, 0xed, 0xf7, 0x9d, 0xfe,
+ 0x01, 0x21, 0x0d, 0x48, 0x49, 0x07, 0x01, 0x60,
+ 0x22, 0x7e, 0x3b, 0x1c, 0xd2, 0x06, 0xd2, 0x0e,
+ 0x93, 0x40, 0x43, 0x60, 0x62, 0x7e, 0xd2, 0x06,
+ 0xd2, 0x0e, 0x97, 0x40, 0x47, 0x60, 0x41, 0x60,
+ 0xe6, 0xe7, 0x31, 0x33, 0x01, 0x00, 0xd9, 0x32,
+ 0x01, 0x00, 0x91, 0x31, 0x01, 0x00, 0xdd, 0x30,
+ 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x32, 0x01, 0x00,
+ 0xfd, 0x32, 0x01, 0x00, 0x71, 0x33, 0x01, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x42, 0x68, 0x2c, 0x32,
+ 0x50, 0x68, 0x43, 0x68, 0x0b, 0x60, 0x81, 0x68,
+ 0x4b, 0x89, 0x0b, 0x81, 0x83, 0x68, 0x00, 0x21,
+ 0xd9, 0x60, 0x41, 0x60, 0x81, 0x60, 0x00, 0x68,
+ 0x50, 0x60, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00,
+ 0x70, 0xb5, 0x42, 0x68, 0xff, 0x26, 0x91, 0x87,
+ 0x10, 0x6b, 0x0c, 0x04, 0x3c, 0x00, 0x08, 0x33,
+ 0x01, 0x00, 0x05, 0x1c, 0x36, 0x04, 0x34, 0x40,
+ 0x43, 0x68, 0x59, 0x68, 0xb1, 0x43, 0x21, 0x43,
+ 0x59, 0x60, 0x00, 0x68, 0xa8, 0x42, 0xf7, 0xd1,
+ 0x10, 0x6b, 0x51, 0x69, 0x40, 0x68, 0x48, 0x60,
+ 0x51, 0x69, 0x01, 0x20, 0x08, 0x60, 0x70, 0xbd,
+ 0x00, 0x00, 0xb0, 0xb5, 0x43, 0x68, 0x08, 0x1c,
+ 0x59, 0x62, 0x9a, 0x62, 0x00, 0x25, 0x0a, 0xe0,
+ 0x45, 0x81, 0xc4, 0x68, 0x2a, 0x1c, 0x3c, 0x00,
+ 0x44, 0x33, 0x01, 0x00, 0x00, 0x2c, 0x03, 0xd1,
+ 0x9a, 0x7e, 0x12, 0x07, 0x12, 0x0f, 0x10, 0x32,
+ 0x42, 0x60, 0x20, 0x1c, 0x00, 0x28, 0xf2, 0xd1,
+ 0x18, 0x69, 0x41, 0x60, 0x19, 0x69, 0x01, 0x20,
+ 0x08, 0x60, 0x02, 0x48, 0x00, 0x68, 0xed, 0xf7,
+ 0x37, 0xf8, 0xb0, 0xbd, 0x5c, 0x5b, 0x01, 0x00,
+ 0x01, 0x20, 0x05, 0x49, 0x40, 0x07, 0x80, 0xb5,
+ 0x88, 0x60, 0x04, 0x48, 0x01, 0x68, 0x0d, 0x20,
+ 0x3c, 0x00, 0x80, 0x33, 0x01, 0x00, 0xfe, 0xf7,
+ 0xe6, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0xc4, 0x60, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0e, 0x4f, 0x0c, 0x4e, 0x00, 0x24, 0x48, 0x20,
+ 0x60, 0x43, 0xc5, 0x19, 0x48, 0x21, 0x28, 0x1c,
+ 0xed, 0xf7, 0x7b, 0xf8, 0x1c, 0x20, 0x60, 0x43,
+ 0x81, 0x19, 0x28, 0x1d, 0x1c, 0x22, 0xed, 0xf7,
+ 0xfe, 0xf8, 0x1c, 0x23, 0xe8, 0x56, 0x05, 0x49,
+ 0xfb, 0xf7, 0x3c, 0x00, 0xbc, 0x33, 0x01, 0x00,
+ 0xcd, 0xf8, 0x01, 0x34, 0x01, 0x2c, 0xe9, 0xd3,
+ 0xf8, 0xbd, 0x00, 0x00, 0xb8, 0x44, 0x01, 0x00,
+ 0xcc, 0x6d, 0x01, 0x00, 0x15, 0x32, 0x01, 0x00,
+ 0xff, 0xb5, 0x05, 0x1c, 0x0a, 0x30, 0x06, 0x1c,
+ 0x81, 0xb0, 0xf2, 0xf7, 0xdd, 0xf8, 0x18, 0x4f,
+ 0x04, 0x1c, 0x39, 0x88, 0xef, 0xf7, 0xbc, 0xfc,
+ 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, 0x72, 0x88,
+ 0x02, 0x30, 0x02, 0x80, 0x3c, 0x00, 0xf8, 0x33,
+ 0x01, 0x00, 0xb1, 0x88, 0x12, 0x4e, 0x41, 0x80,
+ 0x28, 0x88, 0x08, 0x36, 0x40, 0x05, 0x00, 0x28,
+ 0x05, 0xda, 0x69, 0x88, 0x03, 0x9a, 0x20, 0x1c,
+ 0xf7, 0xf7, 0x01, 0xfd, 0x00, 0xe0, 0x00, 0x20,
+ 0x70, 0x80, 0xf8, 0xf7, 0x5e, 0xfc, 0x01, 0x21,
+ 0x09, 0x03, 0x00, 0x28, 0x30, 0x88, 0x01, 0xd0,
+ 0x88, 0x43, 0x00, 0xe0, 0x08, 0x43, 0x30, 0x80,
+ 0x05, 0x48, 0x00, 0x22, 0x00, 0x21, 0x3c, 0x00,
+ 0x34, 0x34, 0x01, 0x00, 0x14, 0x30, 0xef, 0xf7,
+ 0x65, 0xfc, 0x20, 0x1c, 0xf9, 0xf7, 0x74, 0xf8,
+ 0x05, 0xb0, 0xf0, 0xbd, 0xb0, 0x7a, 0x01, 0x00,
+ 0x10, 0xb5, 0x0e, 0x4c, 0x60, 0x68, 0xf8, 0xf7,
+ 0x95, 0xf9, 0x20, 0x68, 0x00, 0x6a, 0x00, 0x28,
+ 0x13, 0xd1, 0xf8, 0xf7, 0xbf, 0xfc, 0x00, 0x28,
+ 0x08, 0xd0, 0x21, 0x68, 0x01, 0x20, 0x08, 0x62,
+ 0x1f, 0x21, 0x00, 0x22, 0x83, 0x20, 0x00, 0xf0,
+ 0x3c, 0x00, 0x70, 0x34, 0x01, 0x00, 0x9f, 0xf9,
+ 0x02, 0xe0, 0x60, 0x68, 0xf8, 0xf7, 0x21, 0xfa,
+ 0xff, 0xf7, 0x97, 0xfc, 0x21, 0x68, 0x08, 0x61,
+ 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0xfe, 0xb5,
+ 0x1b, 0x4e, 0x0f, 0x1c, 0x1d, 0x1c, 0x14, 0x1c,
+ 0xb0, 0x60, 0x08, 0x1c, 0xf7, 0xf7, 0x2b, 0xff,
+ 0xb0, 0x80, 0x34, 0x73, 0x35, 0x62, 0x38, 0x1c,
+ 0x01, 0xaa, 0x02, 0xa9, 0xf7, 0xf7, 0x25, 0xff,
+ 0x00, 0xab, 0x3c, 0x00, 0xac, 0x34, 0x01, 0x00,
+ 0x18, 0x7a, 0x01, 0x28, 0x18, 0xd1, 0x18, 0x79,
+ 0x0b, 0x28, 0x08, 0xd1, 0x30, 0x7f, 0x24, 0x23,
+ 0x0f, 0x49, 0x58, 0x43, 0x40, 0x18, 0x80, 0x68,
+ 0xec, 0xf7, 0x88, 0xff, 0xfe, 0xbd, 0x00, 0xab,
+ 0x18, 0x79, 0x0a, 0x28, 0x08, 0xd1, 0xf7, 0xf7,
+ 0x39, 0xfd, 0x07, 0x1c, 0x29, 0x1c, 0x20, 0x1c,
+ 0xf7, 0xf7, 0x16, 0xfd, 0x38, 0x18, 0xb0, 0x80,
+ 0x30, 0x7f, 0x24, 0x23, 0x3c, 0x00, 0xe8, 0x34,
+ 0x01, 0x00, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x40, 0x68, 0xec, 0xf7, 0x72, 0xff, 0xe8, 0xe7,
+ 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46,
+ 0x01, 0x00, 0xb0, 0xb5, 0xff, 0xf7, 0x53, 0xfc,
+ 0x04, 0x1c, 0xfb, 0xf7, 0xfc, 0xfa, 0x0c, 0x4d,
+ 0x29, 0x68, 0x09, 0x69, 0x09, 0x1b, 0x0c, 0x1a,
+ 0x02, 0x21, 0x1f, 0x20, 0x00, 0xf0, 0x8b, 0xf8,
+ 0x14, 0x2c, 0x06, 0xdd, 0x02, 0x22, 0x3c, 0x00,
+ 0x24, 0x35, 0x01, 0x00, 0x21, 0x1c, 0x1f, 0x20,
+ 0x00, 0xf0, 0x50, 0xf8, 0x01, 0x20, 0xb0, 0xbd,
+ 0x29, 0x68, 0x01, 0x20, 0x89, 0x6a, 0x00, 0x29,
+ 0xf9, 0xd0, 0x00, 0x20, 0xb0, 0xbd, 0x00, 0x00,
+ 0x14, 0x7a, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d,
+ 0x07, 0x1c, 0xae, 0x79, 0x01, 0x21, 0x19, 0x4c,
+ 0x00, 0x20, 0x22, 0x68, 0x00, 0x2a, 0x14, 0xd1,
+ 0xae, 0x71, 0xa2, 0x68, 0xd0, 0x68, 0x06, 0xca,
+ 0x3c, 0x00, 0x60, 0x35, 0x01, 0x00, 0xec, 0xf7,
+ 0x3c, 0xff, 0xae, 0x79, 0x00, 0x21, 0x13, 0x4a,
+ 0x50, 0x69, 0x01, 0x30, 0x50, 0x61, 0xa0, 0x68,
+ 0x80, 0x68, 0xa0, 0x60, 0x62, 0x68, 0x90, 0x42,
+ 0x06, 0xd1, 0x01, 0x20, 0x20, 0x60, 0x03, 0xe0,
+ 0x01, 0x30, 0x0c, 0x34, 0x03, 0x28, 0xe3, 0xdb,
+ 0x00, 0x2f, 0x08, 0xd1, 0x00, 0x29, 0x0a, 0xd0,
+ 0x0a, 0x48, 0x40, 0x68, 0x00, 0x28, 0x06, 0xd0,
+ 0xfa, 0xf7, 0x3c, 0x00, 0x9c, 0x35, 0x01, 0x00,
+ 0xf5, 0xff, 0x03, 0xe0, 0x01, 0x2f, 0x03, 0xd0,
+ 0x00, 0x29, 0x01, 0xd1, 0xae, 0x71, 0xce, 0xe7,
+ 0xae, 0x71, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00,
+ 0x18, 0xd9, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00,
+ 0x70, 0x5d, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x23,
+ 0xf5, 0xf7, 0x7c, 0xf8, 0x80, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0x00, 0x23, 0xf5, 0xf7, 0x76, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x35,
+ 0x01, 0x00, 0xf8, 0xb5, 0x13, 0x4b, 0x00, 0x24,
+ 0x1b, 0x88, 0x98, 0x42, 0x1b, 0xd2, 0x11, 0x4b,
+ 0xc0, 0x00, 0xc0, 0x18, 0x45, 0x68, 0x06, 0x68,
+ 0x28, 0x68, 0x00, 0x28, 0x17, 0xd1, 0x0e, 0x4f,
+ 0xa8, 0x68, 0x43, 0x68, 0xb3, 0x42, 0x09, 0xd1,
+ 0xc3, 0x68, 0x8b, 0x42, 0x06, 0xd1, 0x03, 0x68,
+ 0x93, 0x42, 0x01, 0xd0, 0x53, 0x1c, 0x01, 0xd1,
+ 0x01, 0x24, 0x47, 0x60, 0x80, 0x68, 0x3c, 0x00,
+ 0x14, 0x36, 0x01, 0x00, 0x6b, 0x68, 0x83, 0x42,
+ 0xee, 0xd1, 0x03, 0xe0, 0x01, 0x21, 0x80, 0x20,
+ 0xed, 0xf7, 0x40, 0xfe, 0x20, 0x1c, 0xf8, 0xbd,
+ 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00,
+ 0x29, 0xe3, 0x00, 0x00, 0xf8, 0xb5, 0x17, 0x4f,
+ 0x0a, 0x1c, 0xbe, 0x79, 0x16, 0x4d, 0x00, 0x23,
+ 0x6c, 0x68, 0x07, 0xe0, 0x21, 0x68, 0x91, 0x42,
+ 0x02, 0xd1, 0x21, 0x79, 0x81, 0x42, 0x04, 0xd0,
+ 0x3c, 0x00, 0x50, 0x36, 0x01, 0x00, 0x23, 0x1c,
+ 0xe4, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x17, 0xe0,
+ 0x00, 0x2c, 0x15, 0xd0, 0x00, 0x2b, 0x0d, 0xd1,
+ 0xe3, 0x68, 0x0d, 0x48, 0x6b, 0x60, 0x00, 0x88,
+ 0x00, 0x2b, 0x02, 0xd1, 0xff, 0xf7, 0xd1, 0xfb,
+ 0x06, 0xe0, 0x0a, 0x4a, 0x99, 0x68, 0xff, 0xf7,
+ 0xf6, 0xfb, 0x01, 0xe0, 0xe0, 0x68, 0xd8, 0x60,
+ 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0x02, 0xe0,
+ 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x36, 0x01, 0x00,
+ 0xff, 0xf7, 0xa4, 0xff, 0xbe, 0x71, 0xf8, 0xbd,
+ 0x20, 0x10, 0x07, 0x00, 0x7c, 0x5d, 0x01, 0x00,
+ 0x2c, 0x74, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00,
+ 0x70, 0xb5, 0x09, 0x4e, 0xb5, 0x79, 0xf9, 0xf7,
+ 0xaf, 0xfe, 0x04, 0x1c, 0x09, 0xd0, 0x20, 0x1c,
+ 0xed, 0xf7, 0x0c, 0xfb, 0x05, 0x49, 0x8a, 0x68,
+ 0x80, 0x18, 0x88, 0x60, 0x08, 0x68, 0x01, 0x30,
+ 0x08, 0x60, 0xb5, 0x71, 0x3c, 0x00, 0xc8, 0x36,
+ 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, 0x20, 0x10,
+ 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, 0x09, 0x48,
+ 0x80, 0xb5, 0x40, 0x68, 0x02, 0x1c, 0x0b, 0xe0,
+ 0x01, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x82, 0x42,
+ 0x04, 0xd0, 0x81, 0x68, 0x05, 0x48, 0x00, 0x88,
+ 0xff, 0xf7, 0xe5, 0xfa, 0x80, 0xbd, 0xc0, 0x68,
+ 0x00, 0x28, 0xf1, 0xd1, 0x80, 0xbd, 0x7c, 0x5d,
+ 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, 0x3c, 0x00,
+ 0x04, 0x37, 0x01, 0x00, 0x05, 0x48, 0x80, 0xb5,
+ 0x42, 0x68, 0x00, 0x2a, 0x04, 0xd0, 0x04, 0x48,
+ 0x00, 0x88, 0x91, 0x68, 0xff, 0xf7, 0xd2, 0xfa,
+ 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x5d, 0x01, 0x00,
+ 0x2c, 0x74, 0x01, 0x00, 0x05, 0x48, 0x01, 0x68,
+ 0x00, 0x29, 0x04, 0xd0, 0xc0, 0x68, 0x00, 0x28,
+ 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x00, 0x00, 0x18, 0xd9, 0x01, 0x00,
+ 0x3c, 0x00, 0x40, 0x37, 0x01, 0x00, 0x80, 0xb5,
+ 0xf6, 0xf7, 0xd1, 0xfa, 0x80, 0xbd, 0x13, 0x1c,
+ 0x0d, 0x4a, 0xb0, 0xb5, 0x12, 0x88, 0x90, 0x42,
+ 0x0f, 0xd2, 0x03, 0x29, 0x0d, 0xd2, 0x0a, 0x4a,
+ 0xc0, 0x00, 0x14, 0x58, 0x0a, 0x4d, 0xac, 0x42,
+ 0x07, 0xd1, 0x13, 0x50, 0x0c, 0x23, 0x59, 0x43,
+ 0x08, 0x4b, 0xc9, 0x18, 0x80, 0x18, 0x41, 0x60,
+ 0xb0, 0xbd, 0x02, 0x21, 0x80, 0x20, 0xed, 0xf7,
+ 0x94, 0xfd, 0x3c, 0x00, 0x7c, 0x37, 0x01, 0x00,
+ 0xb0, 0xbd, 0x00, 0x00, 0x56, 0x57, 0x01, 0x00,
+ 0x84, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00,
+ 0x18, 0xd9, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c,
+ 0x1e, 0x1c, 0x15, 0x1c, 0x04, 0x1c, 0x11, 0x1c,
+ 0xff, 0xf7, 0x4a, 0xff, 0x33, 0x1c, 0x2a, 0x1c,
+ 0x39, 0x1c, 0x20, 0x1c, 0xf4, 0xf7, 0x8a, 0xff,
+ 0xf8, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x94, 0x46,
+ 0xff, 0x29, 0x21, 0xd0, 0x3c, 0x00, 0xb8, 0x37,
+ 0x01, 0x00, 0x15, 0x48, 0x00, 0x88, 0x81, 0x42,
+ 0x21, 0xd2, 0x14, 0x4a, 0x15, 0x4e, 0xc8, 0x00,
+ 0x85, 0x18, 0xb4, 0x79, 0x68, 0x68, 0x02, 0x68,
+ 0x00, 0x2a, 0x03, 0xd1, 0x03, 0x1d, 0x0c, 0xcb,
+ 0x9a, 0x42, 0x11, 0xd0, 0x43, 0x68, 0x9a, 0x68,
+ 0x42, 0x60, 0x0e, 0x4a, 0x17, 0x69, 0x01, 0x37,
+ 0x17, 0x61, 0xb4, 0x71, 0x00, 0x22, 0x02, 0x60,
+ 0x00, 0x98, 0xd8, 0x60, 0x60, 0x46, 0x3c, 0x00,
+ 0xf4, 0x37, 0x01, 0x00, 0x18, 0x60, 0x19, 0x74,
+ 0x28, 0x68, 0x58, 0x60, 0xfe, 0xbd, 0xb4, 0x71,
+ 0x06, 0x21, 0x00, 0xe0, 0x07, 0x21, 0x80, 0x20,
+ 0xed, 0xf7, 0x4c, 0xfd, 0xf6, 0xe7, 0x00, 0x00,
+ 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00,
+ 0x20, 0x10, 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00,
+ 0xb0, 0xb5, 0x14, 0x4d, 0x6c, 0x68, 0x00, 0x2c,
+ 0x01, 0xd0, 0x84, 0x42, 0x04, 0xd0, 0x0c, 0x21,
+ 0x3c, 0x00, 0x30, 0x38, 0x01, 0x00, 0x80, 0x20,
+ 0xed, 0xf7, 0x37, 0xfd, 0xb0, 0xbd, 0xff, 0xf7,
+ 0xb8, 0xfa, 0xa1, 0x68, 0x40, 0x1a, 0x0d, 0x49,
+ 0x88, 0x42, 0x03, 0xda, 0x10, 0x21, 0x80, 0x20,
+ 0xed, 0xf7, 0x2b, 0xfd, 0x21, 0x79, 0x22, 0x68,
+ 0x01, 0x20, 0xff, 0xf7, 0xac, 0xff, 0xe3, 0x68,
+ 0x6b, 0x60, 0x00, 0x2b, 0x05, 0xd0, 0x07, 0x48,
+ 0x06, 0x4a, 0x00, 0x88, 0x99, 0x68, 0xff, 0xf7,
+ 0xfe, 0xfa, 0x3c, 0x00, 0x6c, 0x38, 0x01, 0x00,
+ 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0xb0, 0xbd,
+ 0x7c, 0x5d, 0x01, 0x00, 0x18, 0xfc, 0xff, 0xff,
+ 0x21, 0x38, 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00,
+ 0xb0, 0xb5, 0x15, 0x4c, 0x08, 0x20, 0x21, 0x1c,
+ 0x80, 0x31, 0x08, 0x70, 0x13, 0x4a, 0x41, 0x04,
+ 0x11, 0x60, 0x13, 0x48, 0x00, 0x68, 0x13, 0x4d,
+ 0x6b, 0x69, 0x18, 0x40, 0x01, 0xd1, 0x10, 0x20,
+ 0x00, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0xa8, 0x38,
+ 0x01, 0x00, 0xa8, 0x23, 0x5b, 0x5d, 0x18, 0x43,
+ 0x23, 0x1c, 0x40, 0x33, 0x18, 0x73, 0x51, 0x60,
+ 0x20, 0x78, 0x80, 0x08, 0x80, 0x00, 0x20, 0x70,
+ 0x00, 0x20, 0xff, 0xf7, 0x12, 0xfb, 0xff, 0xf7,
+ 0x72, 0xfa, 0x64, 0x30, 0x28, 0x66, 0x01, 0x38,
+ 0xa0, 0x61, 0x20, 0x78, 0x03, 0x21, 0x08, 0x43,
+ 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, 0x00, 0x90,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00,
+ 0xe4, 0x38, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0xa4, 0x6c, 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c,
+ 0x21, 0x1c, 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab,
+ 0x1a, 0x70, 0xc9, 0x79, 0x07, 0x4d, 0x59, 0x70,
+ 0x69, 0x78, 0x88, 0x42, 0x03, 0xd1, 0xf8, 0xf7,
+ 0x13, 0xfc, 0xff, 0x20, 0x68, 0x70, 0x00, 0xab,
+ 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x4c, 0x7b, 0x01, 0x00,
+ 0x3c, 0x00, 0x20, 0x39, 0x01, 0x00, 0xf8, 0xb5,
+ 0x0b, 0x1c, 0x06, 0x1c, 0x04, 0x1d, 0x7f, 0x33,
+ 0x14, 0xd0, 0x33, 0x68, 0x5d, 0x18, 0x35, 0x60,
+ 0x23, 0x88, 0x1f, 0x18, 0x06, 0x23, 0xff, 0x56,
+ 0xeb, 0x1b, 0x33, 0x60, 0x23, 0x88, 0x18, 0x18,
+ 0x81, 0x71, 0x20, 0x88, 0x01, 0x30, 0x00, 0x04,
+ 0x00, 0x0c, 0x20, 0x80, 0x90, 0x42, 0x01, 0xd3,
+ 0x00, 0x20, 0x20, 0x80, 0x10, 0x1c, 0x31, 0x68,
+ 0xec, 0xf7, 0x3c, 0x00, 0x5c, 0x39, 0x01, 0x00,
+ 0x6d, 0xfe, 0xf8, 0xbd, 0x0e, 0x49, 0x0a, 0x7c,
+ 0x83, 0x78, 0x1a, 0x43, 0x0a, 0x74, 0x42, 0x78,
+ 0x83, 0x78, 0x9a, 0x43, 0x0b, 0x7c, 0x93, 0x43,
+ 0x0b, 0x74, 0x8a, 0x7c, 0x43, 0x78, 0x1a, 0x43,
+ 0x8a, 0x74, 0x8a, 0x7c, 0x03, 0x78, 0x9a, 0x43,
+ 0x8a, 0x74, 0x02, 0x78, 0x43, 0x78, 0x1a, 0x43,
+ 0x4b, 0x7c, 0x1a, 0x43, 0x4a, 0x74, 0x4a, 0x7c,
+ 0xc0, 0x78, 0x82, 0x43, 0x3c, 0x00, 0x98, 0x39,
+ 0x01, 0x00, 0x4a, 0x74, 0x70, 0x47, 0x10, 0x00,
+ 0x07, 0x00, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24,
+ 0x20, 0x06, 0x00, 0x0e, 0xed, 0xf7, 0xf7, 0xf8,
+ 0xa1, 0x00, 0x69, 0x58, 0x08, 0x71, 0x01, 0x34,
+ 0x04, 0x2c, 0xf5, 0xdb, 0xb0, 0xbd, 0x10, 0x7b,
+ 0x01, 0x00, 0x0b, 0x48, 0x0c, 0x49, 0x7d, 0x23,
+ 0x42, 0x69, 0xdb, 0x00, 0x00, 0x2a, 0xc8, 0x6b,
+ 0x07, 0xd0, 0xc0, 0x18, 0x1a, 0x01, 0x3c, 0x00,
+ 0xd4, 0x39, 0x01, 0x00, 0x90, 0x42, 0xc8, 0x63,
+ 0x01, 0xd9, 0x07, 0x48, 0xc8, 0x63, 0x70, 0x47,
+ 0xff, 0x38, 0xf5, 0x38, 0xc8, 0x63, 0x98, 0x42,
+ 0xf9, 0xd2, 0xcb, 0x63, 0x70, 0x47, 0x00, 0x00,
+ 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0x70, 0x17, 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c,
+ 0x04, 0x1c, 0x16, 0x1c, 0xfb, 0xf7, 0xf6, 0xfa,
+ 0xb0, 0x43, 0x28, 0x43, 0x01, 0x1c, 0x20, 0x1c,
+ 0x3c, 0x00, 0x10, 0x3a, 0x01, 0x00, 0x00, 0xf0,
+ 0xcc, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5,
+ 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, 0x02, 0x29,
+ 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, 0xd2, 0x78,
+ 0x38, 0x30, 0xff, 0xf7, 0x78, 0xff, 0x06, 0x49,
+ 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, 0x12, 0x79,
+ 0x20, 0x30, 0xff, 0xf7, 0x70, 0xff, 0x03, 0x49,
+ 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x3a, 0x01, 0x00,
+ 0xc8, 0x67, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00,
+ 0x80, 0xb5, 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0,
+ 0x02, 0x29, 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48,
+ 0x52, 0x79, 0x68, 0x30, 0xff, 0xf7, 0x5a, 0xff,
+ 0x06, 0x49, 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48,
+ 0x92, 0x79, 0x50, 0x30, 0xff, 0xf7, 0x52, 0xff,
+ 0x03, 0x49, 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00,
+ 0xac, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3a,
+ 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, 0xcc, 0x67,
+ 0x01, 0x00, 0x08, 0xb5, 0x04, 0x21, 0x00, 0x91,
+ 0x81, 0x7e, 0x43, 0x68, 0x03, 0x29, 0x06, 0xd1,
+ 0x01, 0x1c, 0x0c, 0x31, 0x01, 0x20, 0x6a, 0x46,
+ 0xec, 0xf7, 0x9a, 0xfc, 0x08, 0xbd, 0x19, 0x68,
+ 0xc1, 0x60, 0xfb, 0xe7, 0x00, 0x00, 0x10, 0xb5,
+ 0x03, 0x1c, 0x00, 0x20, 0x08, 0x4c, 0x00, 0x21,
+ 0xca, 0x00, 0x12, 0x19, 0x92, 0x78, 0x3c, 0x00,
+ 0xc4, 0x3a, 0x01, 0x00, 0x9a, 0x42, 0x03, 0xd1,
+ 0xc8, 0x00, 0x00, 0x19, 0x40, 0x68, 0x10, 0xbd,
+ 0x01, 0x31, 0x09, 0x06, 0x09, 0x16, 0x06, 0x29,
+ 0xf1, 0xdb, 0x10, 0xbd, 0xcc, 0x5a, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0f, 0x1c, 0x16, 0x1c, 0x00, 0x25,
+ 0xfe, 0xf7, 0x8e, 0xf9, 0x04, 0x1c, 0x0a, 0xd0,
+ 0x4a, 0x20, 0x00, 0x5d, 0x05, 0x28, 0x06, 0xd1,
+ 0x38, 0x1c, 0xf1, 0xf7, 0x81, 0xfe, 0x00, 0x28,
+ 0x3c, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x01, 0xd0,
+ 0x01, 0x25, 0x34, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x16, 0x1c,
+ 0x00, 0x24, 0xfe, 0xf7, 0x78, 0xf9, 0x00, 0x28,
+ 0x0b, 0xd0, 0x4a, 0x21, 0x09, 0x5c, 0x05, 0x29,
+ 0x07, 0xd1, 0x01, 0x69, 0x00, 0x29, 0x04, 0xd1,
+ 0x30, 0x60, 0xf1, 0xf7, 0x04, 0xfd, 0x01, 0x24,
+ 0x28, 0x60, 0x20, 0x1c, 0x70, 0xbd, 0xf8, 0xb5,
+ 0x06, 0x1c, 0x3c, 0x00, 0x3c, 0x3b, 0x01, 0x00,
+ 0x00, 0x25, 0x0c, 0x1c, 0x08, 0x1c, 0xf1, 0xf7,
+ 0x5d, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x21,
+ 0x05, 0xe0, 0x20, 0x1c, 0xf1, 0xf7, 0x74, 0xfe,
+ 0x00, 0x28, 0x14, 0xd0, 0x01, 0x21, 0x30, 0x1c,
+ 0xf4, 0xf7, 0x80, 0xfb, 0x00, 0x90, 0x00, 0x28,
+ 0x0d, 0xd0, 0x08, 0x4f, 0x01, 0x25, 0x06, 0x22,
+ 0x31, 0x1c, 0x38, 0x1c, 0xec, 0xf7, 0xc2, 0xfc,
+ 0x06, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x78, 0x3b,
+ 0x01, 0x00, 0xb8, 0x18, 0xec, 0xf7, 0xbd, 0xfc,
+ 0x00, 0x98, 0xf8, 0x60, 0x28, 0x1c, 0xf8, 0xbd,
+ 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x00, 0x21,
+ 0x00, 0x28, 0x06, 0xd0, 0x42, 0x78, 0x07, 0x2a,
+ 0x03, 0xd1, 0xc0, 0x79, 0x01, 0x28, 0x00, 0xd1,
+ 0x01, 0x21, 0x08, 0x1c, 0x70, 0x47, 0xf8, 0xb5,
+ 0x05, 0x1c, 0x00, 0x27, 0x16, 0x4e, 0xf1, 0xf7,
+ 0x28, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00,
+ 0xb4, 0x3b, 0x01, 0x00, 0xf1, 0xf7, 0xc0, 0xfb,
+ 0x00, 0x28, 0x10, 0xd1, 0x00, 0x24, 0xf1, 0xf7,
+ 0xbb, 0xfc, 0x06, 0xe0, 0xf1, 0xf7, 0x02, 0xfe,
+ 0x00, 0x28, 0x08, 0xd0, 0x01, 0x24, 0xf1, 0xf7,
+ 0x99, 0xfd, 0x01, 0x1c, 0x06, 0x22, 0x30, 0x1c,
+ 0xec, 0xf7, 0x8e, 0xfc, 0x01, 0x27, 0x00, 0x2f,
+ 0x0d, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0xf4, 0xf7,
+ 0x3b, 0xfb, 0x01, 0x1c, 0x05, 0x48, 0x06, 0x22,
+ 0x3c, 0x00, 0xf0, 0x3b, 0x01, 0x00, 0x06, 0x38,
+ 0xc1, 0x60, 0x29, 0x1c, 0xec, 0xf7, 0x7f, 0xfc,
+ 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7,
+ 0x00, 0x00, 0x76, 0x7c, 0x01, 0x00, 0xf0, 0xb5,
+ 0x07, 0x1c, 0x00, 0x68, 0x02, 0x21, 0x04, 0x68,
+ 0x78, 0x69, 0x87, 0xb0, 0x01, 0x40, 0x00, 0x25,
+ 0x00, 0x29, 0x05, 0x91, 0x74, 0x4e, 0x12, 0xd0,
+ 0x22, 0x88, 0x01, 0x21, 0x13, 0x05, 0x02, 0xd4,
+ 0xc0, 0x07, 0x3c, 0x00, 0x2c, 0x3c, 0x01, 0x00,
+ 0xc1, 0x17, 0x01, 0x31, 0x6f, 0x48, 0x00, 0x29,
+ 0x00, 0x68, 0x01, 0xd0, 0x01, 0x30, 0x04, 0xe0,
+ 0x11, 0x06, 0x89, 0x0e, 0x2d, 0x29, 0x01, 0xd1,
+ 0x03, 0x30, 0x30, 0x60, 0x20, 0x88, 0x80, 0x07,
+ 0x67, 0xd1, 0x78, 0x69, 0xc0, 0x07, 0x64, 0xd5,
+ 0x03, 0xaa, 0x04, 0xa9, 0x20, 0x1c, 0xf7, 0xf7,
+ 0x4b, 0xfb, 0x00, 0xab, 0x18, 0x7c, 0x00, 0x28,
+ 0x07, 0xd0, 0x18, 0x7c, 0x3c, 0x00, 0x68, 0x3c,
+ 0x01, 0x00, 0x02, 0x28, 0x58, 0xd1, 0x18, 0x7b,
+ 0x40, 0x07, 0x40, 0x0f, 0x04, 0x28, 0x53, 0xd8,
+ 0x20, 0x79, 0x05, 0x99, 0xc0, 0x07, 0xc0, 0x17,
+ 0x01, 0x30, 0x02, 0x90, 0x00, 0x29, 0x02, 0xd1,
+ 0x02, 0x98, 0x00, 0x28, 0x48, 0xd1, 0x05, 0x99,
+ 0x00, 0x29, 0x04, 0xd0, 0x20, 0x88, 0x00, 0x05,
+ 0x01, 0xd4, 0x00, 0x20, 0x30, 0x60, 0xc0, 0x20,
+ 0xed, 0xf7, 0xcb, 0xfd, 0x05, 0x1c, 0x3c, 0x00,
+ 0xa4, 0x3c, 0x01, 0x00, 0x20, 0x1c, 0x0a, 0x30,
+ 0x06, 0x90, 0xfe, 0xf7, 0xad, 0xf8, 0x06, 0x1c,
+ 0x28, 0x1c, 0x08, 0x30, 0x23, 0x88, 0x02, 0x1d,
+ 0x11, 0x1d, 0xdb, 0x05, 0x06, 0xd5, 0x06, 0x9b,
+ 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, 0x10, 0x60,
+ 0x20, 0x1d, 0x0e, 0xe0, 0x23, 0x1d, 0x13, 0x60,
+ 0x22, 0x88, 0x92, 0x05, 0x05, 0xd5, 0x22, 0x1c,
+ 0x10, 0x32, 0x02, 0x60, 0x06, 0x9b, 0x0b, 0x60,
+ 0x3c, 0x00, 0xe0, 0x3c, 0x01, 0x00, 0x04, 0xe0,
+ 0x06, 0x9b, 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30,
+ 0x08, 0x60, 0x28, 0x69, 0xf1, 0xf7, 0x43, 0xfc,
+ 0x00, 0x28, 0x08, 0xd0, 0x01, 0x28, 0x12, 0xd0,
+ 0x02, 0x28, 0x58, 0xd1, 0x00, 0xab, 0x18, 0x7c,
+ 0x00, 0x28, 0x54, 0xd1, 0x12, 0xe0, 0x00, 0xab,
+ 0x18, 0x7c, 0x02, 0x28, 0x0b, 0xd1, 0x00, 0x2e,
+ 0x4d, 0xd0, 0x4b, 0x20, 0x80, 0x5d, 0x02, 0x28,
+ 0x49, 0xd1, 0x3c, 0x00, 0x1c, 0x3d, 0x01, 0x00,
+ 0x07, 0xe0, 0x63, 0xe0, 0x00, 0xab, 0x18, 0x7c,
+ 0x00, 0x28, 0x02, 0xd1, 0x38, 0x1c, 0xfe, 0xf7,
+ 0x1b, 0xff, 0x20, 0x88, 0x41, 0x04, 0x30, 0x48,
+ 0x11, 0xd5, 0x00, 0x2e, 0x52, 0xd0, 0x00, 0xab,
+ 0x19, 0x7c, 0x00, 0x29, 0x26, 0xd0, 0x02, 0x99,
+ 0x00, 0x29, 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78,
+ 0x00, 0xe0, 0x00, 0x78, 0x01, 0x28, 0x1d, 0xd0,
+ 0x03, 0x28, 0x43, 0xd1, 0x3c, 0x00, 0x58, 0x3d,
+ 0x01, 0x00, 0x1a, 0xe0, 0x00, 0xab, 0x19, 0x7c,
+ 0x02, 0x29, 0x16, 0xd1, 0x19, 0x7b, 0x04, 0x29,
+ 0x13, 0xd0, 0x19, 0x7b, 0x0c, 0x29, 0x10, 0xd0,
+ 0x22, 0x49, 0x09, 0x68, 0x00, 0x29, 0x0c, 0xd0,
+ 0x00, 0x2e, 0x0a, 0xd0, 0x02, 0x99, 0x00, 0x29,
+ 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, 0x00, 0xe0,
+ 0x00, 0x78, 0x01, 0x28, 0x29, 0xd0, 0x03, 0x28,
+ 0x27, 0xd0, 0x28, 0x22, 0x39, 0x1c, 0x3c, 0x00,
+ 0x94, 0x3d, 0x01, 0x00, 0x28, 0x1c, 0x88, 0x30,
+ 0xec, 0xf7, 0x0a, 0xfc, 0x00, 0xab, 0x19, 0x7c,
+ 0x28, 0x1c, 0x80, 0x30, 0x01, 0x71, 0x19, 0x7b,
+ 0x41, 0x71, 0x6c, 0x60, 0x6e, 0x61, 0x1b, 0xe0,
+ 0x05, 0x99, 0x00, 0x29, 0x14, 0xd0, 0x11, 0x48,
+ 0x84, 0x6c, 0x00, 0x2c, 0x10, 0xd0, 0x00, 0x22,
+ 0x00, 0x2e, 0x04, 0xd0, 0x40, 0x36, 0xb0, 0x7a,
+ 0x05, 0x28, 0x00, 0xd1, 0x01, 0x22, 0x00, 0x92,
+ 0x3c, 0x00, 0xd0, 0x3d, 0x01, 0x00, 0xf8, 0x7a,
+ 0xba, 0x7a, 0x29, 0x69, 0xc3, 0x07, 0xdb, 0x0f,
+ 0x06, 0x98, 0xec, 0xf7, 0x00, 0xfb, 0x28, 0x1c,
+ 0xed, 0xf7, 0x07, 0xfd, 0x00, 0x25, 0x28, 0x1c,
+ 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc4, 0x6a,
+ 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, 0x28, 0x61,
+ 0x01, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x20, 0xff, 0xf7, 0x70, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x3e, 0x01, 0x00,
+ 0xb0, 0xb5, 0x1d, 0x4d, 0x01, 0x28, 0x17, 0xd0,
+ 0xa2, 0x28, 0x06, 0xd0, 0xa3, 0x28, 0x03, 0xd1,
+ 0x01, 0x21, 0x15, 0x20, 0xff, 0xf7, 0x08, 0xfc,
+ 0xb0, 0xbd, 0x00, 0x29, 0x01, 0xd1, 0x17, 0x48,
+ 0x02, 0xe0, 0x7d, 0x20, 0xc0, 0x00, 0x48, 0x43,
+ 0x00, 0x23, 0x01, 0x22, 0x01, 0x1c, 0x28, 0x60,
+ 0x15, 0x20, 0xff, 0xf7, 0xa7, 0xfc, 0xb0, 0xbd,
+ 0x01, 0x29, 0x04, 0xd0, 0x3c, 0x00, 0x48, 0x3e,
+ 0x01, 0x00, 0x02, 0x29, 0xfa, 0xd1, 0x00, 0xf0,
+ 0x2a, 0xf8, 0xb0, 0xbd, 0x6c, 0x68, 0xf5, 0xf7,
+ 0xde, 0xfc, 0xfe, 0xf7, 0xa8, 0xff, 0x68, 0x60,
+ 0x00, 0x2c, 0x09, 0xd0, 0x29, 0x68, 0x0a, 0x23,
+ 0x59, 0x43, 0x00, 0x1b, 0x88, 0x42, 0x03, 0xd9,
+ 0x01, 0x21, 0x15, 0x20, 0xed, 0xf7, 0x17, 0xfa,
+ 0x01, 0x22, 0x15, 0x20, 0x29, 0x68, 0xff, 0xf7,
+ 0xa6, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x84, 0x3e, 0x01, 0x00, 0x04, 0x79, 0x01, 0x00,
+ 0x00, 0x87, 0x93, 0x03, 0x01, 0x20, 0x04, 0x49,
+ 0x40, 0x03, 0x80, 0xb5, 0x08, 0x60, 0x03, 0x21,
+ 0x15, 0x20, 0xed, 0xf7, 0x03, 0xfa, 0x80, 0xbd,
+ 0x00, 0x10, 0x07, 0x00, 0x07, 0x48, 0x80, 0xb5,
+ 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x10, 0x22,
+ 0x11, 0x43, 0x01, 0x72, 0x00, 0x23, 0x02, 0x22,
+ 0x15, 0x20, 0x03, 0x49, 0xff, 0xf7, 0x68, 0xfc,
+ 0x3c, 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x80, 0xbd,
+ 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x80, 0x9f,
+ 0xd5, 0x00, 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0,
+ 0x0a, 0x1c, 0x15, 0x21, 0xa2, 0x20, 0x02, 0xe0,
+ 0x00, 0x22, 0x15, 0x21, 0xa3, 0x20, 0xff, 0xf7,
+ 0x66, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5,
+ 0x00, 0xf0, 0x19, 0xf8, 0x0a, 0x48, 0xbe, 0x21,
+ 0x01, 0x73, 0x03, 0x7a, 0x10, 0x22, 0x93, 0x43,
+ 0x01, 0x24, 0x3c, 0x00, 0xfc, 0x3e, 0x01, 0x00,
+ 0x23, 0x43, 0x03, 0x72, 0x01, 0x73, 0x01, 0x7a,
+ 0x91, 0x43, 0x20, 0x22, 0x11, 0x43, 0x01, 0x72,
+ 0x02, 0x22, 0x15, 0x20, 0x02, 0x49, 0xff, 0xf7,
+ 0x5b, 0xfb, 0x10, 0xbd, 0x00, 0x03, 0x07, 0x00,
+ 0x80, 0x9f, 0xd5, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x15, 0x20, 0xff, 0xf7, 0x85, 0xfb, 0x04, 0x48,
+ 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x11, 0x22,
+ 0x91, 0x43, 0x01, 0x72, 0x3c, 0x00, 0x38, 0x3f,
+ 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x05, 0x1c,
+ 0x60, 0x36, 0x00, 0x27, 0x44, 0x68, 0x22, 0xe0,
+ 0x08, 0x21, 0x00, 0x20, 0xed, 0xf7, 0x41, 0xfb,
+ 0x60, 0x61, 0x01, 0x89, 0x04, 0x39, 0x09, 0x04,
+ 0x09, 0x0c, 0x01, 0x81, 0x60, 0x69, 0x00, 0x68,
+ 0x40, 0x18, 0x04, 0x21, 0xed, 0xf7, 0x35, 0xfb,
+ 0xe0, 0x61, 0x60, 0x69, 0x71, 0x7b, 0x3c, 0x00,
+ 0x74, 0x3f, 0x01, 0x00, 0x00, 0x68, 0x89, 0x01,
+ 0xc1, 0x70, 0x29, 0x69, 0x0c, 0x31, 0x03, 0x22,
+ 0xec, 0xf7, 0xba, 0xfa, 0x28, 0x69, 0x0c, 0x30,
+ 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x25, 0x62,
+ 0xa7, 0x61, 0x24, 0x68, 0x00, 0x2c, 0xda, 0xd1,
+ 0x02, 0x49, 0x03, 0x48, 0x6a, 0x68, 0xf6, 0xf7,
+ 0xb3, 0xf8, 0xf8, 0xbd, 0xfd, 0x6b, 0x00, 0x00,
+ 0xa0, 0x6a, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x07,
+ 0x3c, 0x00, 0xb0, 0x3f, 0x01, 0x00, 0x00, 0x09,
+ 0x09, 0x02, 0x09, 0x0a, 0x08, 0x43, 0x02, 0x49,
+ 0x08, 0x60, 0xff, 0xf7, 0x20, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x08, 0x00,
+ 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03,
+ 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0xc8, 0x00,
+ 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x1c, 0x00,
+ 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03,
+ 0x00, 0x00, 0x3c, 0x00, 0xec, 0x3f, 0x01, 0x00,
+ 0x24, 0x01, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00,
+ 0xe8, 0x03, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x41, 0x6e, 0x62, 0x69, 0x7e, 0x64, 0x61, 0x6f,
+ 0x6f, 0x00, 0x00, 0x00, 0x52, 0x65, 0x6c, 0x65,
+ 0x61, 0x73, 0x65, 0x20, 0x36, 0x5f, 0x37, 0x5f,
+ 0x31, 0x35, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64,
+ 0x20, 0x32, 0x3a, 0x35, 0x3c, 0x00, 0x28, 0x40,
+ 0x01, 0x00, 0x32, 0x39, 0x38, 0x20, 0x53, 0x65,
+ 0x70, 0x20, 0x30, 0x34, 0x20, 0x32, 0x30, 0x30,
+ 0x39, 0x20, 0x31, 0x37, 0x3a, 0x31, 0x33, 0x3a,
+ 0x32, 0x30, 0x20, 0x28, 0x48, 0x57, 0x3d, 0x34,
+ 0x3a, 0x33, 0x2c, 0x42, 0x54, 0x43, 0x4f, 0x45,
+ 0x58, 0x29, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00,
+ 0x1c, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c, 0x00,
+ 0x64, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x70, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0xd0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x7c, 0x15, 0x15, 0x00,
+ 0x3c, 0x00, 0xa0, 0x40, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x70, 0x17,
+ 0x1e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x00, 0x28, 0x23, 0x16, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x2a,
+ 0x0b, 0x00, 0x3c, 0x00, 0xdc, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0xe0, 0x2e, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x50, 0x46, 0x0e, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
+ 0xf0, 0x55, 0x08, 0x00, 0x3c, 0x00, 0x18, 0x41,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00,
+ 0x00, 0x00, 0xc0, 0x5d, 0x0e, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe8, 0x80,
+ 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00,
+ 0x00, 0x00, 0xa0, 0x8c, 0x0a, 0x00, 0x3c, 0x00,
+ 0x54, 0x41, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x00, 0x00, 0x80, 0xbb, 0x0a, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+ 0xf0, 0xd2, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x90, 0x00,
+ 0x3c, 0x00, 0x90, 0x41, 0x01, 0x00, 0xc0, 0x00,
+ 0x90, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0xc0, 0x00,
+ 0x90, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00,
+ 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x60, 0x00,
+ 0x48, 0x00, 0x3c, 0x00, 0xcc, 0x41, 0x01, 0x00,
+ 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x60, 0x00, 0x48, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00,
+ 0x02, 0x00, 0x04, 0x01, 0x0b, 0x02, 0x0c, 0x03,
+ 0x12, 0x04, 0x16, 0x05, 0x3c, 0x00, 0x08, 0x42,
+ 0x01, 0x00, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x0e,
+ 0x24, 0x07, 0x00, 0x0e, 0x2c, 0x08, 0x30, 0x09,
+ 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x42, 0x0a,
+ 0x00, 0x0e, 0x48, 0x0b, 0x00, 0x0e, 0x00, 0x0e,
+ 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x60, 0x0c,
+ 0x00, 0x0e, 0x00, 0x0e, 0x6c, 0x0d, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xc0, 0xff, 0xff, 0xff, 0x3c, 0x00,
+ 0x44, 0x42, 0x01, 0x00, 0xb6, 0xff, 0xff, 0xff,
+ 0xd3, 0xff, 0xff, 0xff, 0xc9, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 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, 0x51, 0xb0, 0x00, 0x00,
+ 0x0c, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00,
+ 0x0c, 0x00, 0x00, 0x00, 0x59, 0xaf, 0x00, 0x00,
+ 0x3c, 0x00, 0x80, 0x42, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa5, 0xaf, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x4d, 0xaf, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x45, 0xb0, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xd5, 0xaf, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xad, 0xb0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x42, 0x01, 0x00,
+ 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x99, 0xb0, 0x00, 0x00, 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, 0x3c, 0x00, 0xf8, 0x42,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x17,
+ 0x01, 0x00, 0x35, 0x17, 0x01, 0x00, 0x21, 0x17,
+ 0x01, 0x00, 0xd9, 0x9c, 0x00, 0x00, 0x49, 0x17,
+ 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0xd1, 0x9c,
+ 0x00, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x1d, 0x1a,
+ 0x01, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x01, 0x1a,
+ 0x01, 0x00, 0x31, 0x1a, 0x01, 0x00, 0x25, 0x1a,
+ 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0x3c, 0x00,
+ 0x34, 0x43, 0x01, 0x00, 0x81, 0x1a, 0x01, 0x00,
+ 0xd1, 0x9c, 0x00, 0x00, 0x79, 0x17, 0x01, 0x00,
+ 0xd9, 0x9c, 0x00, 0x00, 0x5d, 0x17, 0x01, 0x00,
+ 0xa1, 0x17, 0x01, 0x00, 0x95, 0x17, 0x01, 0x00,
+ 0x81, 0x17, 0x01, 0x00, 0x21, 0x18, 0x01, 0x00,
+ 0xf5, 0x17, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x70, 0x43, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x1c,
+ 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41,
+ 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x85, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x35, 0x1b,
+ 0x01, 0x00, 0x3c, 0x00, 0xac, 0x43, 0x01, 0x00,
+ 0x9d, 0x1b, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x00,
+ 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, 0x00, 0x00,
+ 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, 0x00, 0x00,
+ 0x65, 0x18, 0x01, 0x00, 0x29, 0x18, 0x01, 0x00,
+ 0x39, 0x18, 0x01, 0x00, 0xbd, 0x18, 0x01, 0x00,
+ 0x89, 0x41, 0x00, 0x00, 0x4d, 0x18, 0x01, 0x00,
+ 0xa5, 0x18, 0x01, 0x00, 0x85, 0x41, 0x00, 0x00,
+ 0x01, 0x19, 0x01, 0x00, 0x3c, 0x00, 0xe8, 0x43,
+ 0x01, 0x00, 0xd9, 0x18, 0x01, 0x00, 0xed, 0x18,
+ 0x01, 0x00, 0x15, 0x19, 0x01, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x69, 0x1c,
+ 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x71, 0x1c,
+ 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41,
+ 0x00, 0x00, 0xfd, 0xdb, 0x00, 0x00, 0x3c, 0x00,
+ 0x24, 0x44, 0x01, 0x00, 0x1d, 0x7c, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0xf5, 0xda, 0x00, 0x00,
+ 0x14, 0x00, 0x81, 0x00, 0xfd, 0xdd, 0x00, 0x00,
+ 0x08, 0x00, 0x82, 0x00, 0xc5, 0xdd, 0x00, 0x00,
+ 0x38, 0x00, 0x83, 0x00, 0x45, 0xdc, 0x00, 0x00,
+ 0x10, 0x00, 0x84, 0x00, 0x99, 0xdc, 0x00, 0x00,
+ 0x0c, 0x00, 0x86, 0x00, 0x39, 0xdc, 0x00, 0x00,
+ 0x10, 0x00, 0x88, 0x00, 0x11, 0xde, 0x00, 0x00,
+ 0x3c, 0x00, 0x60, 0x44, 0x01, 0x00, 0x10, 0x00,
+ 0x8a, 0x00, 0x35, 0xdd, 0x00, 0x00, 0x0c, 0x00,
+ 0x8c, 0x00, 0xad, 0xdf, 0x00, 0x00, 0x1c, 0x00,
+ 0x8e, 0x00, 0xc9, 0xde, 0x00, 0x00, 0x38, 0x00,
+ 0x8f, 0x00, 0xed, 0xdc, 0x00, 0x00, 0x38, 0x00,
+ 0x90, 0x00, 0x75, 0xdf, 0x00, 0x00, 0x0c, 0x00,
+ 0x91, 0x00, 0x8d, 0xdc, 0x00, 0x00, 0x0c, 0x00,
+ 0x93, 0x00, 0xb9, 0xdd, 0x00, 0x00, 0x0c, 0x00,
+ 0x94, 0x00, 0x3c, 0x00, 0x9c, 0x44, 0x01, 0x00,
+ 0x00, 0x08, 0x08, 0x08, 0x10, 0x0c, 0x0c, 0x0c,
+ 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x08,
+ 0x08, 0x08, 0x14, 0x08, 0x08, 0x14, 0x00, 0x30,
+ 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0xad, 0x30, 0x01, 0x00, 0x15, 0x30, 0x01, 0x00,
+ 0x20, 0x30, 0x07, 0x00, 0x30, 0x30, 0x07, 0x00,
+ 0x06, 0x07, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x44,
+ 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xc9, 0x02, 0x00, 0x94, 0x3f,
+ 0x03, 0x00, 0xe0, 0x8b, 0x5a, 0x00, 0x05, 0x3a,
+ 0x85, 0x00, 0xc8, 0xf2, 0x06, 0x00, 0xf8, 0x4c,
+ 0x56, 0x00, 0x20, 0xa7, 0x3d, 0x00, 0xb7, 0x4a,
+ 0x00, 0x00, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0x14, 0x45, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02,
+ 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+ 0x05, 0x06, 0x00, 0x00, 0x2d, 0x7c, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0x00, 0xfd, 0x95, 0x00, 0x00,
+ 0x08, 0x00, 0xff, 0x00, 0xed, 0x97, 0x00, 0x00,
+ 0x08, 0x00, 0x82, 0x00, 0xcd, 0x95, 0x00, 0x00,
+ 0x0c, 0x00, 0x83, 0x00, 0x4d, 0x96, 0x00, 0x00,
+ 0x0c, 0x00, 0x85, 0x00, 0x2d, 0x7c, 0x00, 0x00,
+ 0x3c, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x3d, 0x96, 0x00, 0x00, 0x0c, 0x00,
+ 0x89, 0x00, 0xd9, 0x97, 0x00, 0x00, 0x08, 0x00,
+ 0x8a, 0x00, 0x91, 0x95, 0x00, 0x00, 0x08, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x3c, 0x00, 0x8c, 0x45, 0x01, 0x00,
+ 0xf9, 0x97, 0x00, 0x00, 0x08, 0x00, 0x8d, 0x00,
+ 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
+ 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
+ 0xc9, 0x97, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00,
+ 0x11, 0x95, 0x00, 0x00, 0x18, 0x00, 0x91, 0x00,
+ 0x15, 0x96, 0x00, 0x00, 0x08, 0x00, 0x92, 0x00,
+ 0x59, 0x95, 0x00, 0x00, 0x3c, 0x00, 0x93, 0x00,
+ 0x29, 0x96, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x45,
+ 0x01, 0x00, 0x08, 0x00, 0x94, 0x00, 0xa1, 0x95,
+ 0x00, 0x00, 0x08, 0x00, 0x95, 0x00, 0x81, 0x97,
+ 0x00, 0x00, 0x0c, 0x00, 0x96, 0x00, 0x6d, 0x97,
+ 0x00, 0x00, 0x10, 0x00, 0x98, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10,
+ 0x08, 0x00, 0x00, 0x08, 0x00, 0x10, 0x3c, 0x00,
+ 0x04, 0x46, 0x01, 0x00, 0x08, 0x0c, 0x0c, 0x0c,
+ 0x0c, 0x1c, 0x0c, 0x0c, 0x08, 0x00, 0x00, 0x00,
+ 0x0d, 0x8b, 0x00, 0x00, 0xf5, 0x8a, 0x00, 0x00,
+ 0xe9, 0x8a, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00,
+ 0x14, 0x08, 0x0c, 0x0c, 0x10, 0x0c, 0x00, 0x00,
+ 0xb1, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x19, 0x99, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+ 0x3d, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x46, 0x01, 0x00, 0x3d, 0x99,
+ 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x09, 0x99,
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3d, 0x7c,
+ 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01,
+ 0x04, 0x04, 0x08, 0x08, 0x81, 0x37, 0x80, 0xf3,
+ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa,
+ 0x03, 0x00, 0x00, 0xf8, 0x6d, 0xa9, 0x6d, 0xa9,
+ 0x6e, 0xa9, 0x3c, 0x00, 0x7c, 0x46, 0x01, 0x00,
+ 0x6e, 0xa8, 0x6e, 0xa8, 0x6e, 0xa8, 0x6f, 0xa7,
+ 0x6f, 0xa7, 0x6f, 0xa7, 0x6f, 0xa6, 0x6f, 0xa6,
+ 0x70, 0xa6, 0x70, 0xa5, 0x70, 0xa4, 0x00, 0x00,
+ 0xb5, 0x1b, 0x01, 0x00, 0xc9, 0x1b, 0x01, 0x00,
+ 0xe1, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00,
+ 0xa5, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00,
+ 0x89, 0x1b, 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x46,
+ 0x01, 0x00, 0xd1, 0x1a, 0x01, 0x00, 0xe5, 0x1a,
+ 0x01, 0x00, 0x05, 0x1b, 0x01, 0x00, 0x25, 0x1b,
+ 0x01, 0x00, 0xb1, 0x1a, 0x01, 0x00, 0xe5, 0x9c,
+ 0x00, 0x00, 0x9d, 0x1a, 0x01, 0x00, 0xd5, 0x9c,
+ 0x00, 0x00, 0xc1, 0x1a, 0x01, 0x00, 0x89, 0x19,
+ 0x01, 0x00, 0xa9, 0x19, 0x01, 0x00, 0xc9, 0x19,
+ 0x01, 0x00, 0xf1, 0x19, 0x01, 0x00, 0x79, 0x19,
+ 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, 0x3c, 0x00,
+ 0xf4, 0x46, 0x01, 0x00, 0x65, 0x19, 0x01, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0x55, 0x1c, 0x01, 0x00,
+ 0x45, 0x1c, 0x01, 0x00, 0x45, 0x1c, 0x01, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00,
+ 0x3c, 0x00, 0x30, 0x47, 0x01, 0x00, 0xd5, 0x9c,
+ 0x00, 0x00, 0x55, 0x19, 0x01, 0x00, 0xe5, 0x9c,
+ 0x00, 0x00, 0x41, 0x19, 0x01, 0x00, 0x31, 0x19,
+ 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, 0x02, 0x05,
+ 0x0a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0a, 0x00,
+ 0x00, 0x00, 0xc5, 0x20, 0x00, 0x00, 0x21, 0x21,
+ 0x00, 0x00, 0x25, 0x21, 0x00, 0x00, 0x39, 0x21,
+ 0x00, 0x00, 0x49, 0x21, 0x00, 0x00, 0x55, 0x21,
+ 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x47, 0x01, 0x00,
+ 0x61, 0x21, 0x00, 0x00, 0xed, 0x21, 0x00, 0x00,
+ 0x0d, 0x22, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00,
+ 0x3d, 0x22, 0x00, 0x00, 0x49, 0x22, 0x00, 0x00,
+ 0xc5, 0x22, 0x00, 0x00, 0xe1, 0x22, 0x00, 0x00,
+ 0xf5, 0x22, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00,
+ 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00,
+ 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00,
+ 0x11, 0x23, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x47,
+ 0x01, 0x00, 0x1d, 0x23, 0x00, 0x00, 0x89, 0x23,
+ 0x00, 0x00, 0xa5, 0x23, 0x00, 0x00, 0xb9, 0x23,
+ 0x00, 0x00, 0x11, 0x20, 0x00, 0x00, 0x1d, 0x20,
+ 0x00, 0x00, 0x6d, 0x20, 0x00, 0x00, 0x8d, 0x20,
+ 0x00, 0x00, 0xb9, 0x20, 0x00, 0x00, 0x00, 0x01,
+ 0x02, 0x03, 0x03, 0x05, 0x06, 0x06, 0x08, 0x09,
+ 0x08, 0x09, 0x09, 0x09, 0xc4, 0x80, 0xca, 0x80,
+ 0x80, 0x80, 0x80, 0x80, 0xd0, 0x80, 0x3c, 0x00,
+ 0xe4, 0x47, 0x01, 0x00, 0xd6, 0xd9, 0xdc, 0xdf,
+ 0xe2, 0x80, 0x80, 0x80, 0xe5, 0xe8, 0x80, 0x80,
+ 0x80, 0x80, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa,
+ 0xfd, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
+ 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00,
+ 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00,
+ 0x13, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1b, 0x00,
+ 0x3c, 0x00, 0x20, 0x48, 0x01, 0x00, 0x1e, 0x00,
+ 0x22, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x30, 0x00,
+ 0x36, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x4c, 0x00,
+ 0x55, 0x00, 0x5f, 0x00, 0x6b, 0x00, 0x78, 0x00,
+ 0x86, 0x00, 0x97, 0x00, 0xa9, 0x00, 0xbe, 0x00,
+ 0xd5, 0x00, 0xef, 0x00, 0xff, 0x7f, 0x0c, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff,
+ 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff,
+ 0xf8, 0xff, 0x3c, 0x00, 0x5c, 0x48, 0x01, 0x00,
+ 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff,
+ 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff,
+ 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff,
+ 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff,
+ 0xe7, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff,
+ 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff,
+ 0xdf, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff,
+ 0xdc, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x48,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xb1, 0x7c, 0x41, 0x00, 0x11, 0x5a,
+ 0x40, 0xe2, 0xb2, 0x7c, 0x41, 0x00, 0x05, 0x5a,
+ 0x40, 0xe2, 0xaf, 0x7c, 0x41, 0x00, 0xf9, 0x59,
+ 0x40, 0xe2, 0xb0, 0x7c, 0x41, 0x00, 0xed, 0x59,
+ 0x40, 0xe2, 0x24, 0x67, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x5c, 0x67, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x0a, 0x61, 0x01, 0x00, 0x3c, 0x00,
+ 0xd4, 0x48, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x0e, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x32, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x6a, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x0b, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x0f, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3,
+ 0x40, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x78, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0x3c, 0x00, 0x10, 0x49, 0x01, 0x00, 0x0c, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x10, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x4e, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x86, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x0d, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x11, 0x61,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0xc0, 0x48,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, 0xe0, 0x48,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x49, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x00, 0x49, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x20, 0x49, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x18, 0x67, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x28, 0x75, 0x01, 0x01,
+ 0x7d, 0xa9, 0x40, 0xe2, 0x2c, 0x75, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x20, 0x75, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x44, 0x75, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x88, 0x49,
+ 0x01, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x24, 0x75, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0xb8, 0x7c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x8d, 0xa9, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0xda, 0x1d, 0x75, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0xe2, 0xc4, 0x67, 0x01, 0x00, 0x3c, 0x00,
+ 0xc4, 0x49, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x59, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xd9,
+ 0xc8, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xcc, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xd0, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x65, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda,
+ 0xa5, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda,
+ 0x3c, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x01, 0x59,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x32, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x6a, 0x67,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x11, 0x59,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x48,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xa0, 0x48,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x49,
+ 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x4a, 0x01, 0x00,
+ 0x05, 0x00, 0x00, 0x0a, 0x68, 0x49, 0x01, 0x00,
+ 0x09, 0x00, 0x00, 0x0a, 0x6c, 0x57, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x38, 0x61, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xac, 0x6e, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0xb0, 0x6e, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x70, 0x57, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x78, 0x4a,
+ 0x01, 0x00, 0xe8, 0x59, 0x01, 0x00, 0x08, 0x00,
+ 0x00, 0xe3, 0xdc, 0x58, 0x01, 0x14, 0x4d, 0xfd,
+ 0x40, 0xe3, 0x2c, 0x59, 0x01, 0x14, 0x39, 0xfd,
+ 0x40, 0xe3, 0xc0, 0x58, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x64, 0x73, 0x41, 0x00, 0x3d, 0x2e,
+ 0x44, 0xe2, 0x7c, 0x59, 0x01, 0x14, 0x3c, 0x00,
+ 0xb4, 0x4a, 0x01, 0x00, 0x9d, 0x2f, 0x44, 0xe3,
+ 0x5c, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe2,
+ 0x79, 0x2e, 0x04, 0x00, 0x01, 0x00, 0x00, 0xdb,
+ 0xa0, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3,
+ 0xa2, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3,
+ 0xa0, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3,
+ 0xd1, 0x88, 0x01, 0x00, 0x01, 0x00, 0x00, 0xda,
+ 0x1d, 0x89, 0x01, 0x00, 0x04, 0x00, 0x00, 0xda,
+ 0x3c, 0x00, 0xf0, 0x4a, 0x01, 0x00, 0x95, 0x88,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, 0x31, 0x2f,
+ 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0xc5, 0x2e,
+ 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0x68, 0x6c,
+ 0x01, 0x01, 0x15, 0xd5, 0x40, 0xe2, 0xc0, 0x57,
+ 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xc8, 0x57,
+ 0x01, 0x00, 0x34, 0x00, 0x00, 0xe3, 0x9c, 0x6c,
+ 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xb0, 0x58,
+ 0x01, 0x03, 0x3c, 0x00, 0x2c, 0x4b, 0x01, 0x00,
+ 0xe9, 0xd4, 0x40, 0xe2, 0xbc, 0x58, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x9d, 0xa3, 0x00, 0x00,
+ 0x60, 0x00, 0x00, 0xd9, 0x70, 0x79, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x78, 0x79, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x7c, 0x5a, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x5d, 0x1c, 0x00, 0x00,
+ 0x11, 0x00, 0x00, 0xd9, 0x24, 0x6e, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x68, 0x4b,
+ 0x01, 0x00, 0x18, 0x58, 0x01, 0x05, 0xd5, 0xd5,
+ 0x40, 0xe3, 0xfc, 0x57, 0x01, 0x00, 0x14, 0x00,
+ 0x00, 0xe3, 0x04, 0x8e, 0x01, 0x03, 0xe5, 0xd5,
+ 0x40, 0xe3, 0x00, 0x5b, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x18, 0x5b, 0x01, 0x00, 0x40, 0x00,
+ 0x00, 0xe2, 0xd4, 0x67, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x8d, 0x37, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0xdb, 0xbd, 0x36, 0x00, 0x00, 0x3c, 0x00,
+ 0xa4, 0x4b, 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb,
+ 0xfc, 0x60, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2,
+ 0x90, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x70, 0x69, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xb0, 0x49, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x0a,
+ 0x90, 0x4b, 0x01, 0x00, 0x06, 0x00, 0x00, 0x0a,
+ 0xa4, 0x58, 0x81, 0x00, 0x05, 0xfd, 0x40, 0xe3,
+ 0x3c, 0x00, 0xe0, 0x4b, 0x01, 0x00, 0x80, 0x4a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0a, 0x0c, 0x5a,
+ 0x81, 0x01, 0x25, 0x2d, 0x44, 0xe3, 0xe0, 0x4a,
+ 0x01, 0x00, 0x03, 0x00, 0x00, 0x0a, 0x18, 0x63,
+ 0x41, 0x00, 0xfd, 0xbb, 0x40, 0xe2, 0x08, 0x57,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x9c, 0x48,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x4a,
+ 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4c, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x0a, 0xcc, 0x74, 0x01, 0x00,
+ 0x03, 0x00, 0x00, 0xe3, 0x65, 0x73, 0x41, 0x00,
+ 0xa9, 0x2e, 0x44, 0xe2, 0xf6, 0x59, 0x01, 0x01,
+ 0xd1, 0x2c, 0x44, 0xe3, 0x08, 0x4b, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x6a, 0x28, 0x4b, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x0a, 0x88, 0x7d, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x58, 0x4c,
+ 0x01, 0x00, 0x00, 0x75, 0x01, 0x04, 0x65, 0x6f,
+ 0x40, 0xe3, 0xbc, 0x78, 0x01, 0x00, 0x0e, 0x00,
+ 0x00, 0xe3, 0x38, 0x4b, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x0a, 0x04, 0x57, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x62, 0x58, 0x4b, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x80, 0x4b, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x68, 0x4b, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x8c, 0x7d, 0x01, 0x00, 0x3c, 0x00,
+ 0x94, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x39, 0x2d, 0x04, 0x00, 0x04, 0x00, 0x00, 0xdb,
+ 0x94, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 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, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x64,
+ 0xa8, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a,
+ 0x3c, 0x00, 0xd0, 0x4c, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x4c,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xd0, 0x4c,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x7a,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0xe8, 0x7a,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x7a,
+ 0x01, 0x00, 0x3c, 0x00, 0x0c, 0x4d, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0xee, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf3, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0xf4, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf9, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0xfa, 0x7a, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x48, 0x4d,
+ 0x01, 0x00, 0xe8, 0x4c, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x00, 0x4d, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x18, 0x4d, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x30, 0x4d, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x0a, 0x90, 0x5c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x94, 0x5c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x98, 0x5c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x9c, 0x5c, 0x01, 0x00, 0x3c, 0x00,
+ 0x84, 0x4d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xa0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xa4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xa8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xac, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xb4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0xb8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x3c, 0x00, 0xc0, 0x4d, 0x01, 0x00, 0xbc, 0x5c,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc0, 0x5c,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc4, 0x5c,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x90, 0x5c,
+ 0x01, 0x00, 0x38, 0x00, 0x00, 0xe3, 0x68, 0x4d,
+ 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0xd8, 0x4d,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x12, 0x61,
+ 0x81, 0x01, 0x31, 0xd5, 0x40, 0xe3, 0x06, 0x61,
+ 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x4d, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0xe2, 0x0b, 0x61, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe3, 0x0f, 0x61, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0xe3, 0x08, 0x61, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0xe2, 0x50, 0x7b, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0x01, 0x00,
+ 0x0e, 0x00, 0x00, 0x64, 0x9c, 0x57, 0x01, 0x01,
+ 0x91, 0x88, 0x41, 0xe3, 0x3c, 0x00, 0x38, 0x4e,
+ 0x01, 0x00, 0x6e, 0x41, 0x67, 0x6f, 0xe2, 0x65,
+ 0x60, 0x69, 0x6f, 0x20, 0x41, 0x42, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x4d, 0x01, 0x00, 0x09, 0x00,
+ 0x00, 0x0a, 0x48, 0x4e, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x0a, 0xe8, 0x4d, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x48, 0x4d, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x0a, 0x28, 0x61, 0x01, 0x01, 0x3c, 0x00,
+ 0x74, 0x4e, 0x01, 0x00, 0xbd, 0xd5, 0x40, 0xe2,
+ 0x69, 0x61, 0x41, 0x00, 0x85, 0xd5, 0x40, 0xe2,
+ 0x30, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x3c, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x44, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x3c, 0x00, 0xb0, 0x4e, 0x01, 0x00, 0x70, 0x4e,
+ 0x01, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x18, 0x61,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x1c, 0x61,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x20, 0x61,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x24, 0x61,
+ 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xb8, 0x4e,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xc8, 0x4e,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xd8, 0x4e,
+ 0x01, 0x00, 0x3c, 0x00, 0xec, 0x4e, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x0a, 0x96, 0x48, 0x01, 0x00,
+ 0x06, 0x00, 0x00, 0xe3, 0xe0, 0x62, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x9b, 0x7d, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x62, 0x9c, 0x7d, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x62, 0x60, 0x7c, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x28, 0x4f,
+ 0x01, 0x00, 0x2d, 0x63, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x49, 0xd5, 0x00, 0x00, 0x0e, 0x00,
+ 0x00, 0xd9, 0xf4, 0x67, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x62, 0x46, 0x7d, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x62, 0x9c, 0x7c, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0xe2, 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00,
+ 0x64, 0x4f, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62,
+ 0xa0, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62,
+ 0x58, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62,
+ 0x64, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62,
+ 0x5a, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62,
+ 0x6a, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62,
+ 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0xe4, 0x62, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2,
+ 0x3c, 0x00, 0xa0, 0x4f, 0x01, 0x00, 0xe8, 0x62,
+ 0x01, 0x00, 0x03, 0x00, 0x00, 0xe2, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x01, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x4f, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x18, 0x50,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0xf0, 0x4e, 0x01, 0x00, 0x2a, 0x00,
+ 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x3c, 0x00,
+ 0x54, 0x50, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb,
+ 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a,
+ 0x3c, 0x00, 0x90, 0x50, 0x01, 0x00, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x06, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x07, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x08, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a,
+ 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x09, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x50, 0x01, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x0a, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x0b, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x0c, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00,
+ 0x0c, 0x00, 0x00, 0xdb, 0x3c, 0x00, 0x08, 0x51,
+ 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0xdb, 0x48, 0x50, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x58, 0x50, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x68, 0x50, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x0a, 0x78, 0x50, 0x01, 0x00, 0x3c, 0x00,
+ 0x44, 0x51, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0x88, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0x98, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xa8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xb8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xc8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xd8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0xe8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
+ 0x3c, 0x00, 0x80, 0x51, 0x01, 0x00, 0xf8, 0x50,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x08, 0x51,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x18, 0x51,
+ 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x50,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xe8, 0x4e,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x4e,
+ 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x51, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x28, 0x51, 0x01, 0x00,
+ 0x0e, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x51,
+ 0x01, 0x00, 0x98, 0x51, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0x0a, 0x50, 0x4e, 0x01, 0x00, 0x04, 0x00,
+ 0x00, 0x0a, 0xe0, 0x4c, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x4b, 0x01, 0x00, 0x1d, 0x00,
+ 0x00, 0x0a, 0xf8, 0x51, 0x01, 0x00, 0x05, 0x00,
+ 0x00, 0x0a, 0x24, 0x80, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1d, 0x80, 0x07, 0x00, 0x3c, 0x00,
+ 0x34, 0x52, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0x07, 0x00, 0x5c, 0x00, 0x00, 0x00,
+ 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00,
+ 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
+ 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
+ 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
+ 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x01, 0x63,
+ 0x00, 0x00, 0xa1, 0x63, 0x00, 0x00, 0xc5, 0x63,
+ 0x00, 0x00, 0xb1, 0x62, 0x00, 0x00, 0xc5, 0x63,
+ 0x00, 0x00, 0x21, 0x63, 0x00, 0x00, 0x4d, 0x63,
+ 0x00, 0x00, 0x3c, 0x00, 0xac, 0x52, 0x01, 0x00,
+ 0xa1, 0x63, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00,
+ 0xa1, 0x63, 0x00, 0x00, 0x06, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09,
+ 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x10,
+ 0x11, 0x00, 0x00, 0x00, 0xa5, 0xc6, 0x84, 0xf8,
+ 0x99, 0xee, 0x8d, 0xf6, 0x0d, 0xff, 0xbd, 0xd6,
+ 0xb1, 0xde, 0x54, 0x91, 0x3c, 0x00, 0xe8, 0x52,
+ 0x01, 0x00, 0x50, 0x60, 0x03, 0x02, 0xa9, 0xce,
+ 0x7d, 0x56, 0x19, 0xe7, 0x62, 0xb5, 0xe6, 0x4d,
+ 0x9a, 0xec, 0x45, 0x8f, 0x9d, 0x1f, 0x40, 0x89,
+ 0x87, 0xfa, 0x15, 0xef, 0xeb, 0xb2, 0xc9, 0x8e,
+ 0x0b, 0xfb, 0xec, 0x41, 0x67, 0xb3, 0xfd, 0x5f,
+ 0xea, 0x45, 0xbf, 0x23, 0xf7, 0x53, 0x96, 0xe4,
+ 0x5b, 0x9b, 0xc2, 0x75, 0x1c, 0xe1, 0xae, 0x3d,
+ 0x6a, 0x4c, 0x5a, 0x6c, 0x41, 0x7e, 0x3c, 0x00,
+ 0x24, 0x53, 0x01, 0x00, 0x02, 0xf5, 0x4f, 0x83,
+ 0x5c, 0x68, 0xf4, 0x51, 0x34, 0xd1, 0x08, 0xf9,
+ 0x93, 0xe2, 0x73, 0xab, 0x53, 0x62, 0x3f, 0x2a,
+ 0x0c, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5e, 0x9d,
+ 0x28, 0x30, 0xa1, 0x37, 0x0f, 0x0a, 0xb5, 0x2f,
+ 0x09, 0x0e, 0x36, 0x24, 0x9b, 0x1b, 0x3d, 0xdf,
+ 0x26, 0xcd, 0x69, 0x4e, 0xcd, 0x7f, 0x9f, 0xea,
+ 0x1b, 0x12, 0x9e, 0x1d, 0x74, 0x58, 0x2e, 0x34,
+ 0x3c, 0x00, 0x60, 0x53, 0x01, 0x00, 0x2d, 0x36,
+ 0xb2, 0xdc, 0xee, 0xb4, 0xfb, 0x5b, 0xf6, 0xa4,
+ 0x4d, 0x76, 0x61, 0xb7, 0xce, 0x7d, 0x7b, 0x52,
+ 0x3e, 0xdd, 0x71, 0x5e, 0x97, 0x13, 0xf5, 0xa6,
+ 0x68, 0xb9, 0x00, 0x00, 0x2c, 0xc1, 0x60, 0x40,
+ 0x1f, 0xe3, 0xc8, 0x79, 0xed, 0xb6, 0xbe, 0xd4,
+ 0x46, 0x8d, 0xd9, 0x67, 0x4b, 0x72, 0xde, 0x94,
+ 0xd4, 0x98, 0xe8, 0xb0, 0x4a, 0x85, 0x6b, 0xbb,
+ 0x2a, 0xc5, 0x3c, 0x00, 0x9c, 0x53, 0x01, 0x00,
+ 0xe5, 0x4f, 0x16, 0xed, 0xc5, 0x86, 0xd7, 0x9a,
+ 0x55, 0x66, 0x94, 0x11, 0xcf, 0x8a, 0x10, 0xe9,
+ 0x06, 0x04, 0x81, 0xfe, 0xf0, 0xa0, 0x44, 0x78,
+ 0xba, 0x25, 0xe3, 0x4b, 0xf3, 0xa2, 0xfe, 0x5d,
+ 0xc0, 0x80, 0x8a, 0x05, 0xad, 0x3f, 0xbc, 0x21,
+ 0x48, 0x70, 0x04, 0xf1, 0xdf, 0x63, 0xc1, 0x77,
+ 0x75, 0xaf, 0x63, 0x42, 0x30, 0x20, 0x1a, 0xe5,
+ 0x0e, 0xfd, 0x6d, 0xbf, 0x3c, 0x00, 0xd8, 0x53,
+ 0x01, 0x00, 0x4c, 0x81, 0x14, 0x18, 0x35, 0x26,
+ 0x2f, 0xc3, 0xe1, 0xbe, 0xa2, 0x35, 0xcc, 0x88,
+ 0x39, 0x2e, 0x57, 0x93, 0xf2, 0x55, 0x82, 0xfc,
+ 0x47, 0x7a, 0xac, 0xc8, 0xe7, 0xba, 0x2b, 0x32,
+ 0x95, 0xe6, 0xa0, 0xc0, 0x98, 0x19, 0xd1, 0x9e,
+ 0x7f, 0xa3, 0x66, 0x44, 0x7e, 0x54, 0xab, 0x3b,
+ 0x83, 0x0b, 0xca, 0x8c, 0x29, 0xc7, 0xd3, 0x6b,
+ 0x3c, 0x28, 0x79, 0xa7, 0xe2, 0xbc, 0x3c, 0x00,
+ 0x14, 0x54, 0x01, 0x00, 0x1d, 0x16, 0x76, 0xad,
+ 0x3b, 0xdb, 0x56, 0x64, 0x4e, 0x74, 0x1e, 0x14,
+ 0xdb, 0x92, 0x0a, 0x0c, 0x6c, 0x48, 0xe4, 0xb8,
+ 0x5d, 0x9f, 0x6e, 0xbd, 0xef, 0x43, 0xa6, 0xc4,
+ 0xa8, 0x39, 0xa4, 0x31, 0x37, 0xd3, 0x8b, 0xf2,
+ 0x32, 0xd5, 0x43, 0x8b, 0x59, 0x6e, 0xb7, 0xda,
+ 0x8c, 0x01, 0x64, 0xb1, 0xd2, 0x9c, 0xe0, 0x49,
+ 0xb4, 0xd8, 0xfa, 0xac, 0x07, 0xf3, 0x25, 0xcf,
+ 0x3c, 0x00, 0x50, 0x54, 0x01, 0x00, 0xaf, 0xca,
+ 0x8e, 0xf4, 0xe9, 0x47, 0x18, 0x10, 0xd5, 0x6f,
+ 0x88, 0xf0, 0x6f, 0x4a, 0x72, 0x5c, 0x24, 0x38,
+ 0xf1, 0x57, 0xc7, 0x73, 0x51, 0x97, 0x23, 0xcb,
+ 0x7c, 0xa1, 0x9c, 0xe8, 0x21, 0x3e, 0xdd, 0x96,
+ 0xdc, 0x61, 0x86, 0x0d, 0x85, 0x0f, 0x90, 0xe0,
+ 0x42, 0x7c, 0xc4, 0x71, 0xaa, 0xcc, 0xd8, 0x90,
+ 0x05, 0x06, 0x01, 0xf7, 0x12, 0x1c, 0xa3, 0xc2,
+ 0x5f, 0x6a, 0x3c, 0x00, 0x8c, 0x54, 0x01, 0x00,
+ 0xf9, 0xae, 0xd0, 0x69, 0x91, 0x17, 0x58, 0x99,
+ 0x27, 0x3a, 0xb9, 0x27, 0x38, 0xd9, 0x13, 0xeb,
+ 0xb3, 0x2b, 0x33, 0x22, 0xbb, 0xd2, 0x70, 0xa9,
+ 0x89, 0x07, 0xa7, 0x33, 0xb6, 0x2d, 0x22, 0x3c,
+ 0x92, 0x15, 0x20, 0xc9, 0x49, 0x87, 0xff, 0xaa,
+ 0x78, 0x50, 0x7a, 0xa5, 0x8f, 0x03, 0xf8, 0x59,
+ 0x80, 0x09, 0x17, 0x1a, 0xda, 0x65, 0x31, 0xd7,
+ 0xc6, 0x84, 0xb8, 0xd0, 0x3c, 0x00, 0xc8, 0x54,
+ 0x01, 0x00, 0xc3, 0x82, 0xb0, 0x29, 0x77, 0x5a,
+ 0x11, 0x1e, 0xcb, 0x7b, 0xfc, 0xa8, 0xd6, 0x6d,
+ 0x3a, 0x2c, 0xc6, 0xa5, 0xf8, 0x84, 0xee, 0x99,
+ 0xf6, 0x8d, 0xff, 0x0d, 0xd6, 0xbd, 0xde, 0xb1,
+ 0x91, 0x54, 0x60, 0x50, 0x02, 0x03, 0xce, 0xa9,
+ 0x56, 0x7d, 0xe7, 0x19, 0xb5, 0x62, 0x4d, 0xe6,
+ 0xec, 0x9a, 0x8f, 0x45, 0x1f, 0x9d, 0x89, 0x40,
+ 0xfa, 0x87, 0xef, 0x15, 0xb2, 0xeb, 0x3c, 0x00,
+ 0x04, 0x55, 0x01, 0x00, 0x8e, 0xc9, 0xfb, 0x0b,
+ 0x41, 0xec, 0xb3, 0x67, 0x5f, 0xfd, 0x45, 0xea,
+ 0x23, 0xbf, 0x53, 0xf7, 0xe4, 0x96, 0x9b, 0x5b,
+ 0x75, 0xc2, 0xe1, 0x1c, 0x3d, 0xae, 0x4c, 0x6a,
+ 0x6c, 0x5a, 0x7e, 0x41, 0xf5, 0x02, 0x83, 0x4f,
+ 0x68, 0x5c, 0x51, 0xf4, 0xd1, 0x34, 0xf9, 0x08,
+ 0xe2, 0x93, 0xab, 0x73, 0x62, 0x53, 0x2a, 0x3f,
+ 0x08, 0x0c, 0x95, 0x52, 0x46, 0x65, 0x9d, 0x5e,
+ 0x3c, 0x00, 0x40, 0x55, 0x01, 0x00, 0x30, 0x28,
+ 0x37, 0xa1, 0x0a, 0x0f, 0x2f, 0xb5, 0x0e, 0x09,
+ 0x24, 0x36, 0x1b, 0x9b, 0xdf, 0x3d, 0xcd, 0x26,
+ 0x4e, 0x69, 0x7f, 0xcd, 0xea, 0x9f, 0x12, 0x1b,
+ 0x1d, 0x9e, 0x58, 0x74, 0x34, 0x2e, 0x36, 0x2d,
+ 0xdc, 0xb2, 0xb4, 0xee, 0x5b, 0xfb, 0xa4, 0xf6,
+ 0x76, 0x4d, 0xb7, 0x61, 0x7d, 0xce, 0x52, 0x7b,
+ 0xdd, 0x3e, 0x5e, 0x71, 0x13, 0x97, 0xa6, 0xf5,
+ 0xb9, 0x68, 0x3c, 0x00, 0x7c, 0x55, 0x01, 0x00,
+ 0x00, 0x00, 0xc1, 0x2c, 0x40, 0x60, 0xe3, 0x1f,
+ 0x79, 0xc8, 0xb6, 0xed, 0xd4, 0xbe, 0x8d, 0x46,
+ 0x67, 0xd9, 0x72, 0x4b, 0x94, 0xde, 0x98, 0xd4,
+ 0xb0, 0xe8, 0x85, 0x4a, 0xbb, 0x6b, 0xc5, 0x2a,
+ 0x4f, 0xe5, 0xed, 0x16, 0x86, 0xc5, 0x9a, 0xd7,
+ 0x66, 0x55, 0x11, 0x94, 0x8a, 0xcf, 0xe9, 0x10,
+ 0x04, 0x06, 0xfe, 0x81, 0xa0, 0xf0, 0x78, 0x44,
+ 0x25, 0xba, 0x4b, 0xe3, 0x3c, 0x00, 0xb8, 0x55,
+ 0x01, 0x00, 0xa2, 0xf3, 0x5d, 0xfe, 0x80, 0xc0,
+ 0x05, 0x8a, 0x3f, 0xad, 0x21, 0xbc, 0x70, 0x48,
+ 0xf1, 0x04, 0x63, 0xdf, 0x77, 0xc1, 0xaf, 0x75,
+ 0x42, 0x63, 0x20, 0x30, 0xe5, 0x1a, 0xfd, 0x0e,
+ 0xbf, 0x6d, 0x81, 0x4c, 0x18, 0x14, 0x26, 0x35,
+ 0xc3, 0x2f, 0xbe, 0xe1, 0x35, 0xa2, 0x88, 0xcc,
+ 0x2e, 0x39, 0x93, 0x57, 0x55, 0xf2, 0xfc, 0x82,
+ 0x7a, 0x47, 0xc8, 0xac, 0xba, 0xe7, 0x3c, 0x00,
+ 0xf4, 0x55, 0x01, 0x00, 0x32, 0x2b, 0xe6, 0x95,
+ 0xc0, 0xa0, 0x19, 0x98, 0x9e, 0xd1, 0xa3, 0x7f,
+ 0x44, 0x66, 0x54, 0x7e, 0x3b, 0xab, 0x0b, 0x83,
+ 0x8c, 0xca, 0xc7, 0x29, 0x6b, 0xd3, 0x28, 0x3c,
+ 0xa7, 0x79, 0xbc, 0xe2, 0x16, 0x1d, 0xad, 0x76,
+ 0xdb, 0x3b, 0x64, 0x56, 0x74, 0x4e, 0x14, 0x1e,
+ 0x92, 0xdb, 0x0c, 0x0a, 0x48, 0x6c, 0xb8, 0xe4,
+ 0x9f, 0x5d, 0xbd, 0x6e, 0x43, 0xef, 0xc4, 0xa6,
+ 0x3c, 0x00, 0x30, 0x56, 0x01, 0x00, 0x39, 0xa8,
+ 0x31, 0xa4, 0xd3, 0x37, 0xf2, 0x8b, 0xd5, 0x32,
+ 0x8b, 0x43, 0x6e, 0x59, 0xda, 0xb7, 0x01, 0x8c,
+ 0xb1, 0x64, 0x9c, 0xd2, 0x49, 0xe0, 0xd8, 0xb4,
+ 0xac, 0xfa, 0xf3, 0x07, 0xcf, 0x25, 0xca, 0xaf,
+ 0xf4, 0x8e, 0x47, 0xe9, 0x10, 0x18, 0x6f, 0xd5,
+ 0xf0, 0x88, 0x4a, 0x6f, 0x5c, 0x72, 0x38, 0x24,
+ 0x57, 0xf1, 0x73, 0xc7, 0x97, 0x51, 0xcb, 0x23,
+ 0xa1, 0x7c, 0x3c, 0x00, 0x6c, 0x56, 0x01, 0x00,
+ 0xe8, 0x9c, 0x3e, 0x21, 0x96, 0xdd, 0x61, 0xdc,
+ 0x0d, 0x86, 0x0f, 0x85, 0xe0, 0x90, 0x7c, 0x42,
+ 0x71, 0xc4, 0xcc, 0xaa, 0x90, 0xd8, 0x06, 0x05,
+ 0xf7, 0x01, 0x1c, 0x12, 0xc2, 0xa3, 0x6a, 0x5f,
+ 0xae, 0xf9, 0x69, 0xd0, 0x17, 0x91, 0x99, 0x58,
+ 0x3a, 0x27, 0x27, 0xb9, 0xd9, 0x38, 0xeb, 0x13,
+ 0x2b, 0xb3, 0x22, 0x33, 0xd2, 0xbb, 0xa9, 0x70,
+ 0x07, 0x89, 0x33, 0xa7, 0x3c, 0x00, 0xa8, 0x56,
+ 0x01, 0x00, 0x2d, 0xb6, 0x3c, 0x22, 0x15, 0x92,
+ 0xc9, 0x20, 0x87, 0x49, 0xaa, 0xff, 0x50, 0x78,
+ 0xa5, 0x7a, 0x03, 0x8f, 0x59, 0xf8, 0x09, 0x80,
+ 0x1a, 0x17, 0x65, 0xda, 0xd7, 0x31, 0x84, 0xc6,
+ 0xd0, 0xb8, 0x82, 0xc3, 0x29, 0xb0, 0x5a, 0x77,
+ 0x1e, 0x11, 0x7b, 0xcb, 0xa8, 0xfc, 0x6d, 0xd6,
+ 0x2c, 0x3a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0xe4, 0x56, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x72, 0x65, 0x71, 0x45, 0x72, 0x72, 0x52,
+ 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x3c, 0x00, 0x20, 0x57, 0x01, 0x00, 0xc4, 0x8e,
+ 0x01, 0x00, 0x24, 0x9a, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x24, 0x9a,
+ 0x01, 0x00, 0xa4, 0xb2, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xa4, 0xb2,
+ 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x20,
+ 0x30, 0x40, 0x50, 0xbb, 0x30, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x57, 0x01, 0x00,
+ 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22,
+ 0x24, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x01, 0x00,
+ 0x70, 0x17, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x0d, 0x25, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00,
+ 0x65, 0x29, 0x01, 0x00, 0x0d, 0x25, 0x00, 0x00,
+ 0xf5, 0x5e, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00,
+ 0x41, 0x3f, 0x01, 0x00, 0x02, 0x04, 0x0b, 0x0c,
+ 0x12, 0x16, 0x18, 0x24, 0x3c, 0x00, 0x98, 0x57,
+ 0x01, 0x00, 0x30, 0x48, 0x60, 0x6c, 0x01, 0x00,
+ 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x10, 0x12, 0x11, 0x00,
+ 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0xd4, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x93, 0x04, 0x00,
+ 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0xdf, 0x40, 0xcf, 0xfd, 0x00, 0x40, 0x83, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
+ 0x3c, 0x00, 0x10, 0x58, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x00, 0x80, 0x81, 0x00, 0x00,
+ 0x80, 0x00, 0xbf, 0xff, 0x7f, 0x7e, 0x01, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x6f,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x6f,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6f,
+ 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x58, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xb8, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x70, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x71, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x90, 0x71, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x58,
+ 0x01, 0x00, 0xa8, 0x71, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x05, 0x0a, 0x01, 0x06, 0x0b,
+ 0x02, 0x07, 0x0c, 0x03, 0x08, 0x0d, 0x04, 0x09,
+ 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x00, 0x04,
+ 0x00, 0x04, 0x04, 0x06, 0x16, 0x1e, 0x1f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+ 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00,
+ 0xc4, 0x58, 0x01, 0x00, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00,
+ 0x61, 0x8b, 0x4a, 0x00, 0x61, 0x8f, 0x4a, 0x00,
+ 0x61, 0x8b, 0x4a, 0x00, 0x05, 0xe3, 0xc0, 0x00,
+ 0x05, 0xcb, 0xc0, 0x00, 0x05, 0xbb, 0xc0, 0x00,
+ 0x85, 0xba, 0xc0, 0x00, 0x85, 0xa2, 0xc0, 0x00,
+ 0x85, 0x92, 0xc0, 0x00, 0x85, 0x8a, 0xc0, 0x00,
+ 0x85, 0x7a, 0xc0, 0x00, 0x45, 0x89, 0xc0, 0x00,
+ 0x3c, 0x00, 0x00, 0x59, 0x01, 0x00, 0x45, 0x71,
+ 0xc0, 0x00, 0x45, 0x69, 0xc0, 0x00, 0x45, 0x61,
+ 0xc0, 0x00, 0x45, 0x59, 0xc0, 0x00, 0x45, 0x51,
+ 0xc0, 0x00, 0x45, 0x49, 0xc0, 0x00, 0x45, 0x41,
+ 0xc0, 0x00, 0x45, 0x39, 0xc0, 0x00, 0x45, 0x31,
+ 0xc0, 0x00, 0x45, 0x29, 0xc0, 0x00, 0x45, 0x21,
+ 0xc0, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d,
+ 0x06, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d,
+ 0x06, 0x00, 0x3c, 0x00, 0x3c, 0x59, 0x01, 0x00,
+ 0x60, 0x2d, 0x06, 0x00, 0x60, 0x28, 0x06, 0x00,
+ 0x50, 0x26, 0x06, 0x00, 0x50, 0x21, 0x06, 0x00,
+ 0x50, 0x1f, 0x06, 0x00, 0x50, 0x1c, 0x06, 0x00,
+ 0x50, 0x1a, 0x06, 0x00, 0x50, 0x18, 0x06, 0x00,
+ 0x50, 0x16, 0x06, 0x00, 0x50, 0x14, 0x06, 0x00,
+ 0x50, 0x12, 0x06, 0x00, 0x50, 0x10, 0x06, 0x00,
+ 0x50, 0x0e, 0x06, 0x00, 0x50, 0x0c, 0x06, 0x00,
+ 0x50, 0x0a, 0x06, 0x00, 0x3c, 0x00, 0x78, 0x59,
+ 0x01, 0x00, 0x2b, 0x0b, 0x06, 0x00, 0x1d, 0x75,
+ 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75,
+ 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75,
+ 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x6d,
+ 0xc0, 0x00, 0xdd, 0x5b, 0xc0, 0x00, 0xdd, 0x4b,
+ 0xc0, 0x00, 0xdd, 0x43, 0xc0, 0x00, 0xdd, 0x3b,
+ 0xc0, 0x00, 0xdd, 0x33, 0xc0, 0x00, 0xdd, 0x2b,
+ 0xc0, 0x00, 0xdd, 0x23, 0xc0, 0x00, 0x3c, 0x00,
+ 0xb4, 0x59, 0x01, 0x00, 0xdd, 0x1b, 0xc0, 0x00,
+ 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00,
+ 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00,
+ 0xdd, 0x13, 0xc0, 0x00, 0x05, 0x05, 0x05, 0x04,
+ 0x04, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03,
+ 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x00,
+ 0x3c, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x07, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x40, 0x02,
+ 0xe0, 0xfd, 0xf2, 0x00, 0xb8, 0xfc, 0xa4, 0x01,
+ 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00,
+ 0x00, 0x00, 0x03, 0x0b, 0x9f, 0x5f, 0x07, 0x01,
+ 0x2a, 0x04, 0x21, 0x04, 0x17, 0x04, 0x0e, 0x04,
+ 0x04, 0x04, 0xfb, 0x03, 0xf1, 0x03, 0xe8, 0x03,
+ 0xc9, 0x03, 0xaa, 0x03, 0x8a, 0x03, 0x6b, 0x03,
+ 0x4c, 0x03, 0x3c, 0x00, 0x2c, 0x5a, 0x01, 0x00,
+ 0x2d, 0x03, 0x0e, 0x03, 0xee, 0x02, 0xec, 0x02,
+ 0x01, 0x03, 0x16, 0x03, 0x2b, 0x03, 0x40, 0x03,
+ 0x55, 0x03, 0x6a, 0x03, 0x7f, 0x03, 0x94, 0x03,
+ 0xa9, 0x03, 0xbe, 0x03, 0xd3, 0x03, 0xe8, 0x03,
+ 0xbe, 0x03, 0x94, 0x03, 0x6a, 0x03, 0x00, 0x02,
+ 0x04, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x00, 0x03, 0x3c, 0x00, 0x68, 0x5a,
+ 0x01, 0x00, 0x05, 0x08, 0x0b, 0x0e, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0xa4, 0x5a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x5a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x5b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x5b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x5b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x5b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x5c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x5c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x5c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x5c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x5c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x5d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x5d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x5d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x5d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x5e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x5e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x5e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x5e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x5f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x5f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x5f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x5f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x60,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x60, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x60, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x60, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x60,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x61, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x61, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x61, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x61,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x62, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x62, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x62, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x62,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x63, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x63, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x63, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x63,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0x64, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0x64, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0x64, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0x64,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0x64, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0x65, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0x65, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0x65,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0x65, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0x66, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0x66, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0x66,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0x66, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0x67, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0x67, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0x67,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0x67, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0x68, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0x68, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0x68,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0x68, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0x68, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0x69, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0x69,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0x69, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x69, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x6a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x6a,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x6a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x6a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x6b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x6b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x6b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x6b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x6b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x6c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x6c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x6c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x6c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x6d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x6d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x6d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x6d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x6e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x6e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x6e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x6e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x6f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x6f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x6f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x6f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x6f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x70, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x70, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x70, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x70,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x71, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x71, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x71, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x71,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x72, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x72, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x72, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x72,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0x73, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0x73, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0x73, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0x73,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0x73, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0x74, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0x74, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0x74,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0x74, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0x75, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0x75, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0x75,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0x75, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0x76, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0x76, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0x76,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0x76, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0x77, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0x77, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0x77,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0x77, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0x77, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0x78, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0x78,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0x78, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x78, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x79, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x79,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x79, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x79, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x7a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x7a,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x7a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x7a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x7a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x7b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x7b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x7b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x7b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x7c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x7c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x7c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x7c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x7d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x7d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x7d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x7d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x7e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x7e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x7e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x7e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x7e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x7f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x7f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x7f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x7f,
+ 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, 0x70, 0xb5, 0x01, 0x25, 0x07, 0x4e,
+ 0xad, 0x03, 0x75, 0x61, 0x0a, 0x20, 0xfa, 0xf7,
+ 0x6c, 0xff, 0x30, 0x68, 0x80, 0x03, 0xc4, 0x0f,
+ 0xb5, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x65, 0xff,
+ 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x24, 0x80, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x70, 0xb5, 0x01, 0x25, 0x6d, 0x04, 0x00, 0x28,
+ 0x10, 0x4c, 0x01, 0xd0, 0x65, 0x61, 0x00, 0xe0,
+ 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60,
+ 0xa0, 0x68, 0x28, 0x43, 0xa0, 0x60, 0x0a, 0x20,
+ 0xfa, 0xf7, 0x4e, 0xff, 0x01, 0x26, 0xb6, 0x03,
+ 0x66, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x48, 0xff,
+ 0xa6, 0x61, 0x01, 0x20, 0xfa, 0xf7, 0x44, 0xff,
+ 0x3c, 0x00, 0x60, 0x80, 0x01, 0x00, 0xa0, 0x68,
+ 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43,
+ 0x60, 0x60, 0x0a, 0x20, 0xfa, 0xf7, 0x3b, 0xff,
+ 0x70, 0xbd, 0x10, 0x00, 0x07, 0x00, 0x70, 0xb5,
+ 0x01, 0x25, 0x10, 0x4c, 0x6d, 0x04, 0x65, 0x61,
+ 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, 0xa0, 0x68,
+ 0x28, 0x43, 0xa0, 0x60, 0xee, 0x08, 0xa6, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0x28, 0xff, 0x66, 0x61,
+ 0x0a, 0x20, 0x3c, 0x00, 0x9c, 0x80, 0x01, 0x00,
+ 0xfa, 0xf7, 0x24, 0xff, 0xa5, 0x61, 0x0a, 0x20,
+ 0xfa, 0xf7, 0x20, 0xff, 0xa6, 0x61, 0x0a, 0x20,
+ 0xfa, 0xf7, 0x1c, 0xff, 0xa0, 0x68, 0xa8, 0x43,
+ 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60,
+ 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0x70, 0xb5, 0x01, 0x25, 0x0e, 0x4c, 0x6d, 0x04,
+ 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60,
+ 0xa0, 0x68, 0x28, 0x43, 0x3c, 0x00, 0xd8, 0x80,
+ 0x01, 0x00, 0xa0, 0x60, 0xee, 0x08, 0x66, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0x02, 0xff, 0x65, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0xfe, 0xfe, 0xa6, 0x61,
+ 0x0a, 0x20, 0xfa, 0xf7, 0xfa, 0xfe, 0xa0, 0x68,
+ 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43,
+ 0x60, 0x60, 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24,
+ 0x80, 0x26, 0x28, 0x1c, 0x30, 0x40, 0x3c, 0x00,
+ 0x14, 0x81, 0x01, 0x00, 0xff, 0xf7, 0x88, 0xff,
+ 0x68, 0x06, 0x05, 0x0e, 0x01, 0x34, 0x08, 0x2c,
+ 0xf6, 0xdb, 0xff, 0xf7, 0x6d, 0xff, 0x70, 0xbd,
+ 0x80, 0xb5, 0x02, 0x1c, 0x0b, 0x21, 0x80, 0x20,
+ 0xfb, 0xf7, 0x3e, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0xf8, 0xb5, 0x12, 0x48, 0x00, 0x25, 0x07, 0x1c,
+ 0xff, 0x37, 0x06, 0x1d, 0x01, 0x37, 0x28, 0x1c,
+ 0xf9, 0xf7, 0xea, 0xfd, 0x04, 0x1c, 0x17, 0xd0,
+ 0x3c, 0x00, 0x50, 0x81, 0x01, 0x00, 0x20, 0x69,
+ 0x00, 0x28, 0x04, 0xd0, 0xe0, 0x6a, 0x00, 0x28,
+ 0x03, 0xd0, 0x00, 0x20, 0xe0, 0x62, 0x25, 0x1c,
+ 0xf0, 0xe7, 0x7b, 0x68, 0x00, 0x2b, 0x05, 0xd0,
+ 0x32, 0x1c, 0x21, 0x1c, 0x44, 0x31, 0x01, 0x20,
+ 0xe8, 0xf7, 0x34, 0xf9, 0x20, 0x1c, 0x44, 0x30,
+ 0xf9, 0xf7, 0x37, 0xfe, 0xe2, 0xe7, 0xf8, 0xbd,
+ 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x48,
+ 0x70, 0xb5, 0x3c, 0x00, 0x8c, 0x81, 0x01, 0x00,
+ 0x00, 0x68, 0xff, 0x28, 0x1d, 0xd1, 0xff, 0x20,
+ 0x32, 0x30, 0xfa, 0xf7, 0xa7, 0xfe, 0x0e, 0x4d,
+ 0x6c, 0x68, 0x0e, 0x48, 0xfa, 0xf7, 0xa2, 0xfe,
+ 0x68, 0x68, 0x24, 0x1a, 0x01, 0x20, 0x00, 0xf0,
+ 0x95, 0xfd, 0x6e, 0x68, 0x09, 0x48, 0xfa, 0xf7,
+ 0x99, 0xfe, 0x68, 0x68, 0x21, 0x1c, 0x0a, 0x39,
+ 0x30, 0x1a, 0x88, 0x42, 0x02, 0xd3, 0x0a, 0x34,
+ 0xa0, 0x42, 0x02, 0xd9, 0x3c, 0x00, 0xc8, 0x81,
+ 0x01, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x85, 0xfd,
+ 0x70, 0xbd, 0xf4, 0x74, 0x01, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0x93, 0x03, 0x00, 0x00, 0x70, 0xb5,
+ 0x00, 0xf0, 0x4d, 0xf8, 0x01, 0x20, 0xed, 0xf7,
+ 0x34, 0xf9, 0x11, 0x4d, 0x18, 0x21, 0x68, 0x60,
+ 0x00, 0x20, 0xe9, 0xf7, 0xf2, 0xf9, 0x28, 0x60,
+ 0x04, 0x68, 0x80, 0x20, 0x20, 0x80, 0x00, 0x26,
+ 0x06, 0x22, 0xff, 0x21, 0x20, 0x1d, 0x3c, 0x00,
+ 0x04, 0x82, 0x01, 0x00, 0x66, 0x80, 0xe8, 0xf7,
+ 0x0b, 0xfa, 0x20, 0x1c, 0x0a, 0x30, 0x09, 0x49,
+ 0xf2, 0xf7, 0x2e, 0xfd, 0x20, 0x1c, 0x10, 0x30,
+ 0x07, 0x49, 0xf2, 0xf7, 0x29, 0xfd, 0xe6, 0x82,
+ 0x03, 0xcd, 0xe9, 0xf7, 0xf9, 0xf8, 0x02, 0x49,
+ 0x01, 0x20, 0x14, 0x39, 0x88, 0x60, 0x70, 0xbd,
+ 0x90, 0xd9, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00,
+ 0x24, 0xf7, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x3c, 0x00, 0x40, 0x82, 0x01, 0x00, 0x10, 0xb5,
+ 0x06, 0x4c, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68,
+ 0xf0, 0xf7, 0x11, 0xfb, 0x60, 0x78, 0x02, 0x28,
+ 0x01, 0xd1, 0x00, 0xf0, 0x1a, 0xf9, 0x10, 0xbd,
+ 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x80, 0xb5,
+ 0xa1, 0x20, 0xff, 0xf7, 0x50, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0x40, 0x00, 0x0e, 0x21, 0x08, 0x40,
+ 0x80, 0xb5, 0xa0, 0x30, 0xff, 0xf7, 0x47, 0xff,
+ 0x80, 0xbd, 0x3c, 0x00, 0x7c, 0x82, 0x01, 0x00,
+ 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x68, 0x00, 0x28,
+ 0x04, 0xd0, 0xe9, 0xf7, 0x87, 0xf9, 0x00, 0x20,
+ 0x20, 0x60, 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00,
+ 0x90, 0xd9, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0x01, 0x21, 0x07, 0x4a, 0x21, 0x61, 0x02, 0x20,
+ 0x10, 0x70, 0x61, 0x61, 0x00, 0xf0, 0xd6, 0xfc,
+ 0x00, 0xf0, 0xc8, 0xfb, 0x20, 0x1c, 0xed, 0xf7,
+ 0x9f, 0xfa, 0x10, 0xbd, 0x3c, 0x00, 0xb8, 0x82,
+ 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x7c, 0xd9,
+ 0x01, 0x00, 0x70, 0xb5, 0x02, 0x1c, 0x08, 0x1c,
+ 0x02, 0x25, 0x00, 0x2a, 0x13, 0x4e, 0x14, 0xd0,
+ 0x00, 0xf0, 0x11, 0xfc, 0x30, 0x78, 0x01, 0x21,
+ 0x08, 0x43, 0x30, 0x70, 0x30, 0x78, 0x28, 0x43,
+ 0x30, 0x70, 0x00, 0x20, 0x7d, 0x21, 0x49, 0x01,
+ 0xb2, 0x79, 0x92, 0x07, 0x00, 0xd5, 0x01, 0x34,
+ 0x01, 0x30, 0x88, 0x42, 0xf8, 0xdb, 0x3c, 0x00,
+ 0xf4, 0x82, 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd,
+ 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x30, 0x78,
+ 0x40, 0x08, 0x40, 0x00, 0x30, 0x70, 0x05, 0x49,
+ 0x48, 0x68, 0x01, 0x22, 0x12, 0x04, 0x90, 0x43,
+ 0x48, 0x60, 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00,
+ 0x88, 0x00, 0x07, 0x00, 0x6c, 0x00, 0x07, 0x00,
+ 0xff, 0xb5, 0x09, 0xae, 0x00, 0x20, 0x60, 0xce,
+ 0x28, 0x60, 0x00, 0x23, 0x9c, 0x46, 0x30, 0x60,
+ 0x3c, 0x00, 0x30, 0x83, 0x01, 0x00, 0x69, 0x46,
+ 0x01, 0xaa, 0x17, 0xe0, 0xdb, 0x07, 0x0e, 0xd5,
+ 0x12, 0x4b, 0x1c, 0x56, 0x63, 0x1c, 0x0a, 0xd0,
+ 0x01, 0x27, 0x2b, 0x68, 0xa7, 0x40, 0x3b, 0x43,
+ 0x2b, 0x60, 0x13, 0x68, 0xdb, 0x07, 0x02, 0xd5,
+ 0x33, 0x68, 0x3b, 0x43, 0x33, 0x60, 0x0b, 0x68,
+ 0x5b, 0x08, 0x0b, 0x60, 0x13, 0x68, 0x5b, 0x08,
+ 0x13, 0x60, 0x01, 0x30, 0x0b, 0x68, 0x00, 0x2b,
+ 0x01, 0xd0, 0x3c, 0x00, 0x6c, 0x83, 0x01, 0x00,
+ 0x22, 0x28, 0xe2, 0xd3, 0x63, 0x46, 0x01, 0x33,
+ 0x20, 0x20, 0x02, 0x2b, 0x9c, 0x46, 0x02, 0xa9,
+ 0x03, 0xaa, 0xf2, 0xdb, 0xff, 0xbd, 0x00, 0x00,
+ 0xb4, 0x8d, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c,
+ 0x0d, 0x1c, 0x1e, 0x21, 0x00, 0x22, 0x03, 0x20,
+ 0x05, 0x4b, 0xf9, 0xf7, 0xb3, 0xf8, 0x21, 0x1c,
+ 0x03, 0x20, 0xf9, 0xf7, 0xf5, 0xf8, 0x29, 0x1c,
+ 0x03, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0xa8, 0x83,
+ 0x01, 0x00, 0xf1, 0xf8, 0xb0, 0xbd, 0x80, 0x38,
+ 0x01, 0x00, 0xb0, 0xb5, 0x1c, 0x4c, 0x1c, 0x4d,
+ 0x21, 0x78, 0x02, 0x29, 0x09, 0xd0, 0x03, 0x29,
+ 0x19, 0xd0, 0x04, 0x29, 0x1f, 0xd0, 0x05, 0x29,
+ 0x23, 0xd1, 0x00, 0x20, 0x00, 0xf0, 0x17, 0xfb,
+ 0x23, 0xe0, 0x68, 0x61, 0x14, 0x48, 0x1c, 0x30,
+ 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60,
+ 0x00, 0xf0, 0x2f, 0xfb, 0xe0, 0x68, 0x3c, 0x00,
+ 0xe4, 0x83, 0x01, 0x00, 0x01, 0x38, 0xe0, 0x60,
+ 0x16, 0xd1, 0x32, 0x20, 0xe0, 0x60, 0xff, 0xf7,
+ 0xa3, 0xfe, 0x11, 0xe0, 0x00, 0x20, 0x00, 0xf0,
+ 0x01, 0xfb, 0x00, 0xf0, 0x2d, 0xfc, 0x01, 0x20,
+ 0x20, 0x70, 0x09, 0xe0, 0x00, 0x20, 0x00, 0xf0,
+ 0xf9, 0xfa, 0xff, 0xf7, 0x45, 0xff, 0x03, 0xe0,
+ 0x05, 0x21, 0x0b, 0x20, 0xe8, 0xf7, 0x46, 0xff,
+ 0x68, 0x69, 0x61, 0x68, 0xe7, 0xf7, 0xdd, 0xff,
+ 0x3c, 0x00, 0x20, 0x84, 0x01, 0x00, 0xb0, 0xbd,
+ 0x00, 0x00, 0x7c, 0xd9, 0x01, 0x00, 0x20, 0xf7,
+ 0x01, 0x00, 0xf7, 0xb5, 0x04, 0x1c, 0x17, 0x1c,
+ 0xff, 0xf7, 0x21, 0xfe, 0x20, 0x0a, 0xff, 0xf7,
+ 0x18, 0xff, 0x20, 0x06, 0x00, 0x0e, 0xff, 0xf7,
+ 0x62, 0xfe, 0xff, 0xf7, 0x18, 0xfe, 0xa1, 0x20,
+ 0xff, 0xf7, 0x5d, 0xfe, 0x00, 0x25, 0x16, 0xe0,
+ 0x00, 0x20, 0x00, 0x24, 0x40, 0x06, 0x06, 0x0e,
+ 0xff, 0xf7, 0x3c, 0x00, 0x5c, 0x84, 0x01, 0x00,
+ 0xd1, 0xfd, 0x00, 0x06, 0x00, 0x0e, 0x30, 0x43,
+ 0x01, 0x34, 0x08, 0x2c, 0xf5, 0xdb, 0x29, 0x1c,
+ 0x01, 0x9a, 0x01, 0x35, 0xbd, 0x42, 0x50, 0x54,
+ 0x01, 0xda, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20,
+ 0xff, 0xf7, 0xd4, 0xfd, 0xbd, 0x42, 0xe6, 0xdb,
+ 0xff, 0xf7, 0x1e, 0xfe, 0xfe, 0xbd, 0x00, 0x00,
+ 0x80, 0xb5, 0xff, 0xf7, 0x19, 0xfe, 0x09, 0x21,
+ 0x89, 0x03, 0x00, 0x22, 0x3c, 0x00, 0x98, 0x84,
+ 0x01, 0x00, 0x02, 0x20, 0xf0, 0xf7, 0xe9, 0xf9,
+ 0x80, 0xbd, 0x09, 0x21, 0x89, 0x03, 0x80, 0xb5,
+ 0x00, 0x22, 0x02, 0x20, 0xf0, 0xf7, 0xc9, 0xf9,
+ 0x01, 0x21, 0x09, 0x48, 0x89, 0x03, 0x81, 0x61,
+ 0x42, 0x68, 0x0a, 0x43, 0x42, 0x60, 0x82, 0x68,
+ 0x11, 0x43, 0x81, 0x60, 0x01, 0x21, 0x49, 0x04,
+ 0x81, 0x61, 0x82, 0x68, 0x8a, 0x43, 0x82, 0x60,
+ 0x42, 0x68, 0x11, 0x43, 0x41, 0x60, 0x3c, 0x00,
+ 0xd4, 0x84, 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0xf0, 0xb5, 0x04, 0x1c,
+ 0xc0, 0x68, 0x7b, 0x4e, 0x05, 0x68, 0x30, 0x78,
+ 0x85, 0xb0, 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28,
+ 0x72, 0xd1, 0x00, 0x21, 0x20, 0x69, 0xf2, 0xf7,
+ 0x41, 0xf9, 0x76, 0x49, 0xf2, 0xf7, 0x24, 0xfc,
+ 0x00, 0x28, 0x69, 0xd0, 0x20, 0x1c, 0x20, 0x30,
+ 0x41, 0x7a, 0x08, 0x29, 0x02, 0xd1, 0x72, 0x4a,
+ 0x3c, 0x00, 0x10, 0x85, 0x01, 0x00, 0x00, 0x21,
+ 0x51, 0x61, 0x00, 0x7a, 0x22, 0x6a, 0x18, 0x21,
+ 0xf2, 0xf7, 0xc9, 0xfb, 0xe1, 0x6a, 0x37, 0x1c,
+ 0x40, 0x18, 0x6c, 0x49, 0x02, 0x90, 0x30, 0x78,
+ 0x0e, 0x1c, 0xff, 0x36, 0x0a, 0x1d, 0x01, 0x36,
+ 0x01, 0x28, 0x04, 0x92, 0x07, 0xd0, 0x65, 0x4a,
+ 0x02, 0x99, 0x1c, 0x32, 0x28, 0x1c, 0xed, 0xf7,
+ 0xe2, 0xfb, 0x00, 0x28, 0x6b, 0xd0, 0x32, 0x21,
+ 0x20, 0x69, 0x3c, 0x00, 0x4c, 0x85, 0x01, 0x00,
+ 0xf2, 0xf7, 0x16, 0xf9, 0x01, 0x90, 0x20, 0x69,
+ 0x01, 0x21, 0xf2, 0xf7, 0x11, 0xf9, 0x01, 0x1c,
+ 0x5e, 0x48, 0x01, 0x23, 0x01, 0x9a, 0xed, 0xf7,
+ 0x07, 0xfc, 0x00, 0x28, 0x04, 0xd1, 0x5b, 0x48,
+ 0xed, 0xf7, 0x92, 0xfa, 0x00, 0x21, 0xb9, 0x60,
+ 0x56, 0x48, 0x1c, 0x30, 0x81, 0x68, 0xea, 0xf7,
+ 0x19, 0xfc, 0x20, 0x1c, 0x14, 0x30, 0x03, 0x90,
+ 0x04, 0x99, 0xf2, 0xf7, 0x3c, 0x00, 0x88, 0x85,
+ 0x01, 0x00, 0xd5, 0xfb, 0x00, 0x28, 0x05, 0xd1,
+ 0x00, 0x22, 0xba, 0x60, 0x04, 0x98, 0x03, 0x99,
+ 0xf2, 0xf7, 0x6b, 0xfb, 0x4f, 0x49, 0x28, 0x89,
+ 0x09, 0x88, 0x88, 0x42, 0x03, 0xd0, 0x00, 0x22,
+ 0x4c, 0x49, 0xba, 0x60, 0x08, 0x80, 0x03, 0x21,
+ 0x20, 0x69, 0xf2, 0xf7, 0xe4, 0xf8, 0x00, 0x28,
+ 0x10, 0xd0, 0x46, 0x49, 0x82, 0x78, 0x20, 0x31,
+ 0x0b, 0x79, 0x94, 0x46, 0x9a, 0x42, 0x3c, 0x00,
+ 0xc4, 0x85, 0x01, 0x00, 0x09, 0xd0, 0x00, 0x22,
+ 0xba, 0x60, 0x62, 0x46, 0x0a, 0x71, 0x80, 0x78,
+ 0x01, 0x21, 0xf3, 0xf7, 0x05, 0xf9, 0x00, 0xe0,
+ 0x77, 0xe0, 0x06, 0x21, 0x20, 0x69, 0xf2, 0xf7,
+ 0xcd, 0xf8, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x78,
+ 0x3a, 0x48, 0x40, 0x30, 0x82, 0x88, 0x91, 0x42,
+ 0x02, 0xd0, 0x00, 0x22, 0xba, 0x60, 0x81, 0x80,
+ 0x2a, 0x21, 0x20, 0x69, 0xf2, 0xf7, 0xbe, 0xf8,
+ 0x3c, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x28,
+ 0x0d, 0xd0, 0x80, 0x78, 0xf1, 0x69, 0x33, 0x4a,
+ 0x81, 0x42, 0x08, 0xd0, 0x00, 0x21, 0xb9, 0x60,
+ 0xf0, 0x61, 0x10, 0x1c, 0xed, 0xf7, 0x09, 0xfb,
+ 0x2f, 0x48, 0xed, 0xf7, 0xfa, 0xfa, 0x38, 0x78,
+ 0x3b, 0x1c, 0x01, 0x28, 0x17, 0xd1, 0x02, 0x20,
+ 0x18, 0x70, 0x2a, 0x4f, 0x01, 0x23, 0x3b, 0x61,
+ 0x27, 0x4b, 0x03, 0xcd, 0x1c, 0x33, 0x08, 0x3d,
+ 0x02, 0x9a, 0x3c, 0x00, 0x3c, 0x86, 0x01, 0x00,
+ 0xed, 0xf7, 0xb0, 0xfa, 0x38, 0x1c, 0xed, 0xf7,
+ 0xd7, 0xf8, 0x32, 0x68, 0x00, 0x2a, 0x03, 0xd0,
+ 0x00, 0x21, 0x01, 0x20, 0xe7, 0xf7, 0xc4, 0xfe,
+ 0x00, 0xf0, 0xf4, 0xf9, 0x20, 0x1c, 0xf9, 0xf7,
+ 0xd5, 0xfb, 0x07, 0x1c, 0x11, 0xd1, 0x20, 0x1c,
+ 0xf9, 0xf7, 0x88, 0xfb, 0x07, 0x1c, 0x2e, 0xd0,
+ 0x01, 0x23, 0x3b, 0x61, 0x68, 0x89, 0x40, 0x21,
+ 0xc8, 0x53, 0x73, 0x68, 0x3c, 0x00, 0x78, 0x86,
+ 0x01, 0x00, 0x00, 0x2b, 0x04, 0xd0, 0x21, 0x1c,
+ 0x00, 0x20, 0x04, 0x9a, 0xe7, 0xf7, 0xac, 0xfe,
+ 0x01, 0x23, 0xfb, 0x62, 0x20, 0x69, 0x32, 0x21,
+ 0xf2, 0xf7, 0x75, 0xf8, 0x05, 0x1c, 0x20, 0x69,
+ 0x01, 0x21, 0xf2, 0xf7, 0x70, 0xf8, 0x0e, 0x4e,
+ 0x01, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7,
+ 0xc0, 0xfb, 0x00, 0x28, 0x0e, 0xd1, 0x32, 0x21,
+ 0x20, 0x69, 0xf2, 0xf7, 0x64, 0xf8, 0x3c, 0x00,
+ 0xb4, 0x86, 0x01, 0x00, 0x05, 0x1c, 0x20, 0x69,
+ 0x01, 0x21, 0xf2, 0xf7, 0x5f, 0xf8, 0x01, 0x1c,
+ 0x3b, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7,
+ 0xd7, 0xfa, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00,
+ 0x7c, 0xd9, 0x01, 0x00, 0x40, 0xf8, 0x01, 0x00,
+ 0x20, 0xf7, 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c,
+ 0x80, 0x2a, 0x80, 0xb5, 0x06, 0xd0, 0x81, 0x2a,
+ 0x03, 0xd0, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7,
+ 0x3c, 0x00, 0xf0, 0x86, 0x01, 0x00, 0xd9, 0xfd,
+ 0x80, 0xbd, 0xff, 0xf7, 0x5c, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, 0xff, 0x29,
+ 0x01, 0xd0, 0x00, 0x79, 0x70, 0x47, 0x00, 0x20,
+ 0x70, 0x47, 0x80, 0xf8, 0x01, 0x00, 0x30, 0xb5,
+ 0x89, 0xb0, 0x00, 0x93, 0x0e, 0x4d, 0x13, 0x1c,
+ 0x04, 0x1c, 0x2a, 0x1c, 0xec, 0xf7, 0x25, 0xfd,
+ 0x01, 0xa9, 0x06, 0xa8, 0xa2, 0x68, 0xec, 0xf7,
+ 0xce, 0xfe, 0x3c, 0x00, 0x2c, 0x87, 0x01, 0x00,
+ 0x01, 0xaa, 0x06, 0xa9, 0x28, 0x1c, 0x63, 0x6a,
+ 0xed, 0xf7, 0x44, 0xfa, 0x04, 0x1c, 0x01, 0x28,
+ 0x04, 0xd1, 0x28, 0x1c, 0xed, 0xf7, 0x2c, 0xf8,
+ 0x00, 0xf0, 0x4a, 0xf8, 0x20, 0x1c, 0x09, 0xb0,
+ 0x30, 0xbd, 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00,
+ 0x80, 0xb5, 0xed, 0xf7, 0x2b, 0xf8, 0x00, 0xf0,
+ 0x7d, 0xf8, 0x02, 0x48, 0xed, 0xf7, 0x02, 0xfa,
+ 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x87,
+ 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0x28, 0x0b, 0xd1, 0x06, 0x48, 0xed, 0xf7,
+ 0xf8, 0xf9, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20,
+ 0xed, 0xf7, 0xeb, 0xfa, 0x03, 0x49, 0x03, 0x20,
+ 0xf9, 0xf7, 0x35, 0xfe, 0x80, 0xbd, 0x20, 0xf7,
+ 0x01, 0x00, 0x6d, 0x87, 0x01, 0x00, 0xb0, 0xb5,
+ 0x10, 0x4d, 0x04, 0x1c, 0x13, 0x1c, 0x2a, 0x1c,
+ 0x88, 0xb0, 0xec, 0xf7, 0x02, 0xfd, 0x3c, 0x00,
+ 0xa4, 0x87, 0x01, 0x00, 0x21, 0x1c, 0x0a, 0x31,
+ 0x06, 0x22, 0x28, 0x1d, 0xe7, 0xf7, 0xa4, 0xfe,
+ 0x69, 0x46, 0x05, 0xa8, 0x62, 0x69, 0xec, 0xf7,
+ 0x87, 0xfe, 0x28, 0x1c, 0xec, 0xf7, 0xee, 0xff,
+ 0x7f, 0x23, 0xdb, 0x43, 0x28, 0x1c, 0x6a, 0x46,
+ 0x05, 0xa9, 0xed, 0xf7, 0xf9, 0xf9, 0x00, 0xf0,
+ 0x1d, 0xf8, 0x08, 0xb0, 0xb0, 0xbd, 0x00, 0x00,
+ 0x20, 0xf7, 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0xe0, 0x87, 0x01, 0x00, 0x01, 0x78,
+ 0x00, 0x29, 0x06, 0xd0, 0x02, 0x29, 0x01, 0xd0,
+ 0x05, 0x29, 0x07, 0xd1, 0x03, 0x21, 0x01, 0x70,
+ 0x80, 0xbd, 0x01, 0x21, 0x01, 0x70, 0x00, 0xf0,
+ 0x2e, 0xfa, 0x80, 0xbd, 0x03, 0x21, 0x0b, 0x20,
+ 0xe8, 0xf7, 0x4f, 0xfd, 0x80, 0xbd, 0x7c, 0xd9,
+ 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x08, 0x78,
+ 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, 0x01, 0xd0,
+ 0x05, 0x28, 0x3c, 0x00, 0x1c, 0x88, 0x01, 0x00,
+ 0x05, 0xd1, 0x04, 0x20, 0x08, 0x70, 0x80, 0xbd,
+ 0xff, 0xf7, 0x38, 0xfd, 0x80, 0xbd, 0x02, 0x21,
+ 0x0b, 0x20, 0xe8, 0xf7, 0x39, 0xfd, 0x80, 0xbd,
+ 0x7c, 0xd9, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x0b, 0x20, 0x04, 0x4a, 0xfa, 0xf7, 0x82, 0xff,
+ 0xf6, 0xf7, 0x86, 0xfd, 0x02, 0x49, 0x08, 0x61,
+ 0x80, 0xbd, 0x00, 0x00, 0xdd, 0x86, 0x01, 0x00,
+ 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x88,
+ 0x01, 0x00, 0x0c, 0x48, 0x80, 0xb5, 0x01, 0x78,
+ 0x06, 0x29, 0x0e, 0xd2, 0x02, 0xa3, 0x5b, 0x5c,
+ 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x03,
+ 0x07, 0x07, 0x07, 0x06, 0x00, 0x20, 0x00, 0xf0,
+ 0xc2, 0xf8, 0x80, 0xbd, 0x05, 0x21, 0x01, 0x70,
+ 0x80, 0xbd, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7,
+ 0x0e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x7c, 0xd9,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00,
+ 0x94, 0x88, 0x01, 0x00, 0x10, 0xb5, 0x0d, 0x4b,
+ 0x04, 0x1c, 0x18, 0x1c, 0x10, 0x30, 0x00, 0x2c,
+ 0x08, 0xd0, 0xdb, 0x88, 0x5b, 0x04, 0x5b, 0x0c,
+ 0x0b, 0x80, 0x80, 0x7b, 0x48, 0x80, 0x04, 0x20,
+ 0x10, 0x80, 0x08, 0xe0, 0xda, 0x88, 0x01, 0x24,
+ 0xe4, 0x03, 0x22, 0x40, 0x0c, 0x88, 0x22, 0x43,
+ 0xda, 0x80, 0x49, 0x88, 0x81, 0x73, 0x01, 0x20,
+ 0x10, 0xbd, 0x00, 0x00, 0x30, 0x00, 0x07, 0x00,
+ 0x3c, 0x00, 0xd0, 0x88, 0x01, 0x00, 0x70, 0xb5,
+ 0x10, 0x4e, 0x02, 0x1c, 0x00, 0x23, 0xf0, 0x56,
+ 0x00, 0x2a, 0x02, 0xd0, 0x08, 0x70, 0x01, 0x24,
+ 0x15, 0xe0, 0x00, 0x23, 0xcd, 0x56, 0x85, 0x42,
+ 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0x28, 0x1c,
+ 0x00, 0xf0, 0x5f, 0xf9, 0x04, 0x1c, 0x0a, 0xd0,
+ 0x07, 0x48, 0x35, 0x70, 0x00, 0x68, 0x00, 0x28,
+ 0x03, 0xd0, 0x00, 0x21, 0x0a, 0x20, 0xf9, 0xf7,
+ 0x28, 0xfd, 0x3c, 0x00, 0x0c, 0x89, 0x01, 0x00,
+ 0x00, 0xf0, 0x16, 0xfa, 0x20, 0x1c, 0x70, 0xbd,
+ 0xf4, 0x6b, 0x01, 0x00, 0x3c, 0xd9, 0x01, 0x00,
+ 0x03, 0x1c, 0x08, 0x1c, 0x00, 0x2b, 0x80, 0xb5,
+ 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x04, 0x22,
+ 0x04, 0x49, 0xe7, 0xf7, 0xe3, 0xfd, 0x02, 0xe0,
+ 0x00, 0x68, 0x00, 0xf0, 0xcf, 0xf9, 0x01, 0x20,
+ 0x80, 0xbd, 0x00, 0x00, 0xf4, 0x74, 0x01, 0x00,
+ 0x10, 0xb5, 0xff, 0xf7, 0x3c, 0x00, 0x48, 0x89,
+ 0x01, 0x00, 0x97, 0xfb, 0xff, 0xf7, 0x89, 0xfc,
+ 0x04, 0x1c, 0xff, 0xf7, 0xb8, 0xfb, 0xff, 0xf7,
+ 0x84, 0xfc, 0x00, 0x2c, 0x02, 0xd1, 0x01, 0x28,
+ 0x00, 0xd1, 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd,
+ 0x00, 0x00, 0xf8, 0xb5, 0x20, 0x4f, 0x04, 0x1c,
+ 0x78, 0x78, 0x0e, 0x1c, 0x02, 0x28, 0x2e, 0xd0,
+ 0x1e, 0x4a, 0xf9, 0x68, 0x91, 0x61, 0x14, 0x23,
+ 0x1d, 0x49, 0x58, 0x43, 0x40, 0x18, 0x3c, 0x00,
+ 0x84, 0x89, 0x01, 0x00, 0x41, 0x7b, 0xb8, 0x78,
+ 0xf8, 0xf7, 0x14, 0xfe, 0x00, 0xf0, 0x8a, 0xf9,
+ 0x00, 0x25, 0x04, 0xe0, 0x00, 0x21, 0xb8, 0x78,
+ 0xf8, 0xf7, 0x0c, 0xfe, 0x01, 0x35, 0x78, 0x78,
+ 0x14, 0x23, 0x14, 0x49, 0x58, 0x43, 0x40, 0x18,
+ 0x80, 0x7a, 0xa8, 0x42, 0xf2, 0xdc, 0x00, 0x25,
+ 0x08, 0xe0, 0x00, 0x21, 0xb8, 0x78, 0xf8, 0xf7,
+ 0xfd, 0xfd, 0x0f, 0x48, 0x00, 0x68, 0x20, 0x70,
+ 0x3c, 0x00, 0xc0, 0x89, 0x01, 0x00, 0x01, 0x34,
+ 0x01, 0x35, 0xb5, 0x42, 0xf4, 0xdb, 0x09, 0x4a,
+ 0xf8, 0x68, 0x50, 0x61, 0x78, 0x78, 0x02, 0x28,
+ 0x06, 0xd1, 0xb8, 0x68, 0x32, 0x1c, 0x21, 0x1c,
+ 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, 0x25, 0xfd,
+ 0xb8, 0x68, 0x80, 0x19, 0xb8, 0x60, 0xf8, 0xbd,
+ 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x10, 0x00,
+ 0x07, 0x00, 0x64, 0x8d, 0x01, 0x00, 0x30, 0x20,
+ 0x07, 0x00, 0x3c, 0x00, 0xfc, 0x89, 0x01, 0x00,
+ 0x70, 0xb5, 0x06, 0x1c, 0x0c, 0x4d, 0x00, 0x24,
+ 0x2c, 0x70, 0xff, 0xf7, 0x39, 0xfc, 0x0a, 0x48,
+ 0x18, 0x21, 0x1c, 0x30, 0xac, 0x60, 0xe7, 0xf7,
+ 0x43, 0xfd, 0x08, 0x48, 0x44, 0x61, 0xf9, 0xf7,
+ 0x63, 0xf9, 0x00, 0x2e, 0x06, 0xd1, 0x06, 0x48,
+ 0x29, 0x69, 0xf6, 0xf7, 0xa7, 0xfc, 0x00, 0x20,
+ 0xec, 0xf7, 0xb0, 0xfe, 0x70, 0xbd, 0x00, 0x00,
+ 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x38, 0x8a,
+ 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0x30, 0xb5, 0x12, 0x4c, 0x85, 0xb0,
+ 0x20, 0x68, 0x00, 0x28, 0x1c, 0xd0, 0x0f, 0x48,
+ 0x14, 0x38, 0x80, 0x68, 0x00, 0x28, 0x01, 0xd1,
+ 0xff, 0xf7, 0xc1, 0xfb, 0x20, 0x68, 0x00, 0x23,
+ 0x00, 0x68, 0x01, 0xaa, 0x04, 0x30, 0x01, 0x21,
+ 0xec, 0xf7, 0xd1, 0xfd, 0x08, 0x49, 0x08, 0x4a,
+ 0x08, 0x31, 0x0c, 0x31, 0x00, 0x92, 0x3c, 0x00,
+ 0x74, 0x8a, 0x01, 0x00, 0x03, 0xc9, 0x00, 0xab,
+ 0x45, 0x18, 0x99, 0x7b, 0x01, 0x9a, 0x20, 0x68,
+ 0x2b, 0x1c, 0xf2, 0xf7, 0x2b, 0xfe, 0x05, 0xb0,
+ 0x30, 0xbd, 0x00, 0x00, 0x90, 0xd9, 0x01, 0x00,
+ 0x29, 0x81, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c,
+ 0x14, 0x23, 0x60, 0x70, 0x58, 0x43, 0x12, 0x4b,
+ 0xc1, 0x18, 0x8a, 0x88, 0xe2, 0x80, 0x18, 0x58,
+ 0xe0, 0x60, 0x08, 0x7a, 0xa0, 0x70, 0xff, 0x28,
+ 0x3c, 0x00, 0xb0, 0x8a, 0x01, 0x00, 0x12, 0xd0,
+ 0x00, 0x22, 0x08, 0x21, 0x0d, 0x4b, 0xf8, 0xf7,
+ 0x22, 0xfd, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68,
+ 0xef, 0xf7, 0xbd, 0xfe, 0x0a, 0x49, 0xe0, 0x68,
+ 0x48, 0x61, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60,
+ 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x60, 0x78,
+ 0x02, 0x28, 0x01, 0xd1, 0xff, 0xf7, 0xdf, 0xfc,
+ 0x10, 0xbd, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d,
+ 0x01, 0x00, 0x3c, 0x00, 0xec, 0x8a, 0x01, 0x00,
+ 0xb8, 0x0b, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00,
+ 0xfe, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x06, 0x21,
+ 0x15, 0x4b, 0x41, 0x43, 0x58, 0x5c, 0x82, 0x06,
+ 0x14, 0x48, 0x92, 0x0e, 0x42, 0x71, 0xc9, 0x18,
+ 0x4a, 0x78, 0xd2, 0x06, 0xd2, 0x0e, 0x02, 0x71,
+ 0x42, 0x78, 0x0c, 0x23, 0x1a, 0x43, 0x42, 0x70,
+ 0x42, 0x78, 0x8b, 0x78, 0x92, 0x08, 0x92, 0x00,
+ 0x9b, 0x07, 0x9b, 0x0f, 0x3c, 0x00, 0x28, 0x8b,
+ 0x01, 0x00, 0x1a, 0x43, 0x42, 0x70, 0x02, 0x78,
+ 0xc0, 0x23, 0x9a, 0x43, 0x40, 0x32, 0x02, 0x70,
+ 0x02, 0x78, 0x38, 0x23, 0x1a, 0x43, 0x02, 0x70,
+ 0x02, 0x78, 0xc9, 0x78, 0x04, 0x23, 0x9a, 0x43,
+ 0x89, 0x00, 0x19, 0x40, 0x11, 0x43, 0x01, 0x70,
+ 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0xd8, 0x8d,
+ 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x8f, 0xb5,
+ 0x00, 0x20, 0x02, 0x90, 0x03, 0x90, 0x3c, 0x00,
+ 0x64, 0x8b, 0x01, 0x00, 0x07, 0x48, 0x02, 0xaa,
+ 0x03, 0xa9, 0x00, 0x91, 0x01, 0x92, 0x43, 0x89,
+ 0x02, 0x89, 0x03, 0xc8, 0xff, 0xf7, 0xd4, 0xfb,
+ 0x03, 0x98, 0x02, 0x99, 0xff, 0xf7, 0x04, 0xfc,
+ 0x8f, 0xbd, 0x00, 0x00, 0x04, 0x8e, 0x01, 0x00,
+ 0x08, 0x49, 0x4a, 0x78, 0x00, 0x2a, 0x03, 0xd1,
+ 0x88, 0x80, 0x00, 0x20, 0x88, 0x60, 0x70, 0x47,
+ 0x14, 0x23, 0x5a, 0x43, 0x04, 0x4b, 0xd2, 0x18,
+ 0x3c, 0x00, 0xa0, 0x8b, 0x01, 0x00, 0xd2, 0x88,
+ 0x42, 0x43, 0xc8, 0x88, 0x42, 0x43, 0x8a, 0x60,
+ 0x70, 0x47, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d,
+ 0x01, 0x00, 0xf8, 0xb5, 0x25, 0x4e, 0x04, 0x1c,
+ 0x30, 0x7a, 0x40, 0x08, 0x40, 0x00, 0x30, 0x72,
+ 0xb0, 0x7a, 0x00, 0x20, 0xb0, 0x72, 0x01, 0x27,
+ 0x01, 0x2c, 0x20, 0x4d, 0x01, 0xd0, 0xfc, 0x42,
+ 0x13, 0xd1, 0x30, 0x7b, 0x38, 0x43, 0x30, 0x73,
+ 0x00, 0x22, 0x3c, 0x00, 0xdc, 0x8b, 0x01, 0x00,
+ 0x21, 0x1c, 0x00, 0x20, 0xff, 0xf7, 0x6e, 0xfb,
+ 0x63, 0x1c, 0x01, 0xd1, 0x3f, 0x21, 0xe9, 0x73,
+ 0xb1, 0x7a, 0xa0, 0x22, 0x11, 0x43, 0xb1, 0x72,
+ 0x31, 0x7a, 0x39, 0x43, 0x31, 0x72, 0xf8, 0xbd,
+ 0x30, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x30, 0x73,
+ 0x01, 0x22, 0x21, 0x1c, 0x01, 0x20, 0xff, 0xf7,
+ 0x59, 0xfb, 0x01, 0x20, 0x00, 0x21, 0xe9, 0x73,
+ 0xb1, 0x7a, 0x02, 0x22, 0x3c, 0x00, 0x18, 0x8c,
+ 0x01, 0x00, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a,
+ 0x04, 0x22, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a,
+ 0x30, 0x22, 0x11, 0x43, 0xb1, 0x72, 0x31, 0x7a,
+ 0x39, 0x43, 0x31, 0x72, 0x08, 0x49, 0x4a, 0x68,
+ 0x80, 0x23, 0x9a, 0x43, 0x4a, 0x60, 0x0a, 0x68,
+ 0x1a, 0x43, 0x0a, 0x60, 0x31, 0x7b, 0x39, 0x43,
+ 0x31, 0x73, 0xd7, 0xe7, 0x00, 0x00, 0x88, 0x00,
+ 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0x3c, 0x00,
+ 0x54, 0x8c, 0x01, 0x00, 0x6c, 0x00, 0x07, 0x00,
+ 0xb0, 0xb5, 0x0e, 0x4d, 0x0e, 0x48, 0x29, 0x69,
+ 0xf6, 0xf7, 0x9e, 0xfb, 0x0d, 0x48, 0xec, 0xf7,
+ 0x93, 0xfd, 0x0d, 0x48, 0x09, 0x4c, 0x00, 0x88,
+ 0x1c, 0x34, 0xa0, 0x82, 0xf1, 0xf7, 0x5a, 0xff,
+ 0x20, 0x61, 0xfa, 0xf7, 0x97, 0xf8, 0x02, 0x1c,
+ 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xec, 0xf7,
+ 0x8b, 0xff, 0x32, 0x20, 0xe8, 0x60, 0xff, 0xf7,
+ 0x3c, 0x00, 0x90, 0x8c, 0x01, 0x00, 0xa5, 0xfa,
+ 0xb0, 0xbd, 0x7c, 0xd9, 0x01, 0x00, 0x34, 0x63,
+ 0x01, 0x00, 0xdd, 0x84, 0x01, 0x00, 0x20, 0xf7,
+ 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x68, 0x78,
+ 0x00, 0x28, 0x0e, 0xd0, 0x14, 0x23, 0x08, 0x49,
+ 0x58, 0x43, 0x40, 0x18, 0x44, 0x7a, 0x06, 0xe0,
+ 0xa8, 0x68, 0xe0, 0x40, 0x01, 0x06, 0x09, 0x0e,
+ 0xa8, 0x78, 0xf8, 0xf7, 0x76, 0xfc, 0x08, 0x3c,
+ 0xf6, 0xd5, 0x3c, 0x00, 0xcc, 0x8c, 0x01, 0x00,
+ 0xb0, 0xbd, 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00,
+ 0x64, 0x8d, 0x01, 0x00, 0x01, 0x1c, 0x14, 0x48,
+ 0xb0, 0xb5, 0x01, 0x60, 0x13, 0x48, 0x02, 0x7f,
+ 0x02, 0x23, 0x9a, 0x43, 0x02, 0x77, 0x02, 0x7f,
+ 0x01, 0x24, 0x22, 0x43, 0x02, 0x77, 0x10, 0x4d,
+ 0x00, 0x29, 0x0c, 0xd0, 0x01, 0x22, 0x00, 0x21,
+ 0x03, 0x20, 0xef, 0xf7, 0x9f, 0xfd, 0x0d, 0x49,
+ 0x48, 0x7c, 0xa0, 0x43, 0x3c, 0x00, 0x08, 0x8d,
+ 0x01, 0x00, 0x48, 0x74, 0x68, 0x7a, 0x20, 0x43,
+ 0x68, 0x72, 0xb0, 0xbd, 0x01, 0x7f, 0x21, 0x43,
+ 0x01, 0x77, 0x68, 0x7a, 0x40, 0x08, 0x40, 0x00,
+ 0x68, 0x72, 0x01, 0x22, 0x00, 0x21, 0x03, 0x20,
+ 0xef, 0xf7, 0xb1, 0xfd, 0xb0, 0xbd, 0xf4, 0x74,
+ 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x88, 0x00,
+ 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0xb5,
+ 0x07, 0x4c, 0x21, 0x1c, 0x00, 0x20, 0x3c, 0x00,
+ 0x44, 0x8d, 0x01, 0x00, 0xf9, 0xf7, 0x56, 0xfb,
+ 0x05, 0x48, 0x00, 0x23, 0xc0, 0x56, 0x01, 0x28,
+ 0x03, 0xdd, 0x21, 0x1c, 0x00, 0x20, 0xf9, 0xf7,
+ 0x19, 0xfb, 0x10, 0xbd, 0x65, 0x1a, 0x00, 0x00,
+ 0xf4, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x08, 0x01, 0x01, 0x00, 0x02, 0x18, 0x04, 0xff,
+ 0x82, 0xe8, 0xd7, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+ 0x3c, 0x00, 0x80, 0x8d, 0x01, 0x00, 0x00, 0x18,
+ 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0x01, 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0x02, 0x10,
+ 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0c,
+ 0x0d, 0x0e, 0x3c, 0x00, 0xbc, 0x8d, 0x01, 0x00,
+ 0xff, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b,
+ 0x1c, 0x1d, 0xff, 0x1a, 0x11, 0x13, 0x12, 0x0f,
+ 0x10, 0xff, 0x02, 0x00, 0xff, 0x01, 0x03, 0x09,
+ 0x0a, 0x0b, 0x00, 0x00, 0x30, 0x0d, 0x02, 0x00,
+ 0x00, 0x00, 0x28, 0x0e, 0x03, 0x00, 0x00, 0x00,
+ 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0d,
+ 0x02, 0x01, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x01,
+ 0x00, 0x00, 0x23, 0x0d, 0x3c, 0x00, 0xf8, 0x8d,
+ 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x1d, 0x0d,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe,
+ 0xfb, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0x34, 0x8e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x8e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x8e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x8e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x8f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x8f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x8f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x8f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x90, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x90, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x90, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x90,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0x91, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0x91, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0x91, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0x91,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0x91, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0x92, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0x92, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0x92,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0x92, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0x93, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0x93, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0x93,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0x93, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0x94, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0x94, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0x94,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0x94, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0x95, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0x95, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0x95,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0x95, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0x95, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0x96, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0x96,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0x96, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0x96, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0x97, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0x97,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0x97, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0x97, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0x98, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0x98,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0x98, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0x98, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0x98, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0x99,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0x99, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0x99, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0x99, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0x9a,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0x9a, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0x9a, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0x9a, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0x9b,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0x9b, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0x9b, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0x9b, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0x9c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0x9c, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0x9c, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0x9c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0x9c,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0x9d, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0x9d, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0x9d, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0x9d,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0x9e, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0x9e, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0x9e, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0x9e,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0x9f, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0x9f, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0x9f, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0x9f,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xa0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xa0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xa0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xa0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xa0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xa1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xa1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xa1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xa1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xa2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xa2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xa2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xa2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xa3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xa3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xa3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xa3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xa4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xa4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xa4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xa4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xa4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xa5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xa5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xa5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xa5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xa6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xa6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xa6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xa6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xa7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xa7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xa7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xa7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xa7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xa8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xa8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xa8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xa8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xa9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xa9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xa9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xa9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xaa,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xaa, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xaa, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xaa, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xab,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xab, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xab, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xab, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xab,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xac, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xac, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xac, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xac,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xad, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xad, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xad, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xad,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xae, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xae, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xae, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xae,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xaf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xaf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xaf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xaf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xaf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xb0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xb0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xb0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xb0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xb1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xb1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xb1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xb1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xb2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xb2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xb2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xb2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xb3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xb3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xb3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xb3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xb3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xb4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xb4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xb4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xb4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xb5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xb5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xb5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xb5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xb6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xb6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xb6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xb6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xb6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xb7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xb7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xb7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xb7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xb8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xb8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xb8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xb8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xb9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xb9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xb9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xb9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xba,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xba, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xba, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xba, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xba,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xbb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xbb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xbb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xbb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xbc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xbc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xbc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xbc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xbd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xbd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xbd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xbd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xbe, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xbe, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xbe, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xbe,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xbe, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xbf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xbf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xbf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xbf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xc0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xc0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xc0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xc0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xc1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xc1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xc1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xc1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xc2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xc2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xc2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xc2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xc2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xc3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xc3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xc3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xc3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xc4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xc4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xc4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xc4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xc5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xc5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xc5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xc5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xc5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xc6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xc6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xc6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xc6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xc7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xc7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xc7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xc7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xc8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xc8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xc8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xc8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xc9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xc9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xc9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xc9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xc9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xca, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xca, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xca, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xca,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xcb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xcb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xcb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xcb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xcc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xcc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xcc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xcc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xcd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xcd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xcd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xcd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xcd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xce, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xce, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xce,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xce, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xcf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xcf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xcf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xcf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xd0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xd0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xd0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xd0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xd1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xd1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xd1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xd1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xd1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xd2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xd2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xd2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xd2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xd3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xd3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xd3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xd3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xd4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xd4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xd4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xd4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xd4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xd5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xd5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xd5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xd5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xd6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xd6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xd6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xd6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xd7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xd7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xd7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xd7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xd8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xd8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xd8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xd8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xd8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xd9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xd9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xd9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xd9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xda, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xda, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xda, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xda,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xdb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xdb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xdb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xdb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xdc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xdc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xdc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xdc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xdc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xdd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xdd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xdd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xdd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xde, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xde, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xde,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xde, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xdf, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xdf, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xdf,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xdf, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xe0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xe0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xe0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xe0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xe0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xe1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xe1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xe1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xe1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xe2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xe2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xe2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xe2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xe3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xe3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xe3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xe3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xe3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xe4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xe4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xe4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xe4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xe5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xe5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xe5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xe5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xe6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xe6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xe6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xe6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xe7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xe7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xe7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xe7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xe7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xe8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xe8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xe8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xe8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xe9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xe9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xe9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xe9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xea, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xea, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xea, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xea,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xeb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xeb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xeb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xeb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xeb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xec, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xec, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xec,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xec, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xed, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xed, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xed,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xed, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xee, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xee, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xee,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xee, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xef, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xef, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xef,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xef, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xef, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xf0, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xf0,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xa4, 0xf0, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xe0, 0xf0, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x1c, 0xf1, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x58, 0xf1,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x94, 0xf1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xd0, 0xf1, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x0c, 0xf2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x48, 0xf2,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x84, 0xf2, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xc0, 0xf2, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xfc, 0xf2, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x38, 0xf3,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x74, 0xf3, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xb0, 0xf3, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xec, 0xf3, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x28, 0xf4,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x64, 0xf4, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xa0, 0xf4, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xdc, 0xf4, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x18, 0xf5,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x54, 0xf5, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x90, 0xf5, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xcc, 0xf5, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x08, 0xf6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x44, 0xf6, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x80, 0xf6, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xbc, 0xf6, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xf8, 0xf6,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x34, 0xf7, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x70, 0xf7, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0xac, 0xf7, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xe8, 0xf7,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x24, 0xf8, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x60, 0xf8, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x9c, 0xf8, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xd8, 0xf8,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x14, 0xf9, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x50, 0xf9, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x8c, 0xf9, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc8, 0xf9,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0x04, 0xfa, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x40, 0xfa, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x7c, 0xfa, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xb8, 0xfa,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xf4, 0xfa, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x30, 0xfb, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x6c, 0xfb, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xa8, 0xfb,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xe4, 0xfb, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x20, 0xfc, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x5c, 0xfc, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x98, 0xfc,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xd4, 0xfc, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x10, 0xfd, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x4c, 0xfd, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x88, 0xfd,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xc4, 0xfd, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0x00, 0xfe, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x3c, 0xfe, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x78, 0xfe,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00,
+ 0xb4, 0xfe, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x00, 0xf0, 0xfe, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 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, 0x00, 0x2c, 0xff, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x68, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
+ 0x00, 0x10, 0x04, 0x00, 0x70, 0xb5, 0x2b, 0x48,
+ 0x06, 0x21, 0x81, 0x75, 0xc1, 0x75, 0x01, 0x7e,
+ 0x49, 0x08, 0x49, 0x00, 0x01, 0x76, 0x01, 0x7e,
+ 0x02, 0x22, 0x91, 0x43, 0x01, 0x76, 0x26, 0x49,
+ 0x0b, 0x78, 0x5b, 0x08, 0x5b, 0x00, 0x0b, 0x70,
+ 0x04, 0x23, 0x8b, 0x70, 0x0c, 0x23, 0x43, 0x76,
+ 0x20, 0x23, 0x03, 0x75, 0x1a, 0x24, 0x44, 0x75,
+ 0x24, 0x24, 0x84, 0x76, 0x10, 0x24, 0xc4, 0x76,
+ 0x3c, 0x00, 0x3c, 0x10, 0x04, 0x00, 0x2a, 0x25,
+ 0x4d, 0x70, 0x05, 0x7a, 0x30, 0x26, 0xb5, 0x43,
+ 0x20, 0x35, 0x05, 0x72, 0x85, 0x7a, 0x6d, 0x08,
+ 0x6d, 0x00, 0x85, 0x72, 0x85, 0x7a, 0x95, 0x43,
+ 0x85, 0x72, 0x85, 0x7a, 0x04, 0x26, 0x35, 0x43,
+ 0x85, 0x72, 0x85, 0x7a, 0x08, 0x26, 0x35, 0x43,
+ 0x85, 0x72, 0x85, 0x7a, 0xa5, 0x43, 0x85, 0x72,
+ 0x05, 0x7b, 0x2c, 0x43, 0x04, 0x73, 0x04, 0x7b,
+ 0x1c, 0x43, 0x3c, 0x00, 0x78, 0x10, 0x04, 0x00,
+ 0x04, 0x73, 0x04, 0x7b, 0x40, 0x25, 0x2c, 0x43,
+ 0x04, 0x73, 0x84, 0x7a, 0x23, 0x43, 0x83, 0x72,
+ 0x83, 0x7a, 0xab, 0x43, 0x83, 0x72, 0x03, 0x7b,
+ 0x80, 0x24, 0x23, 0x43, 0x03, 0x73, 0x08, 0x78,
+ 0x90, 0x43, 0x08, 0x70, 0x08, 0x78, 0x01, 0x22,
+ 0x10, 0x43, 0x08, 0x70, 0x08, 0x78, 0x04, 0x22,
+ 0x90, 0x43, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x00,
+ 0x0c, 0x80, 0x07, 0x00, 0x3c, 0x00, 0xb4, 0x10,
+ 0x04, 0x00, 0x80, 0x80, 0x07, 0x00, 0x01, 0x49,
+ 0x04, 0x20, 0x48, 0x73, 0x70, 0x47, 0x40, 0x80,
+ 0x07, 0x00, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20,
+ 0x08, 0x80, 0x00, 0xf0, 0x0a, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x67, 0xfb,
+ 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x49, 0x18, 0x20,
+ 0xc1, 0xf7, 0x3b, 0xfa, 0x09, 0x49, 0x3c, 0x00,
+ 0xf0, 0x10, 0x04, 0x00, 0x02, 0x20, 0xc1, 0xf7,
+ 0x37, 0xfa, 0x08, 0x49, 0x1f, 0x20, 0xc1, 0xf7,
+ 0x33, 0xfa, 0x07, 0x49, 0x1c, 0x20, 0xc1, 0xf7,
+ 0x2f, 0xfa, 0x06, 0x49, 0x03, 0x20, 0xc1, 0xf7,
+ 0x2b, 0xfa, 0x80, 0xbd, 0x99, 0x2a, 0x00, 0x00,
+ 0x41, 0x25, 0x00, 0x00, 0x55, 0x25, 0x00, 0x00,
+ 0x5d, 0x25, 0x00, 0x00, 0x39, 0x25, 0x00, 0x00,
+ 0x80, 0xb5, 0xbf, 0xf7, 0x91, 0xfd, 0x80, 0xbd,
+ 0x3c, 0x00, 0x2c, 0x11, 0x04, 0x00, 0x80, 0xb5,
+ 0x05, 0x4a, 0x05, 0x49, 0x0a, 0x20, 0xbf, 0xf7,
+ 0x4e, 0xff, 0x01, 0x20, 0x04, 0x49, 0x80, 0x02,
+ 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, 0xb4, 0x74,
+ 0x01, 0x00, 0xb1, 0x64, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x91, 0xfe,
+ 0x80, 0xbd, 0x80, 0xb5, 0x05, 0x4a, 0x05, 0x49,
+ 0x1b, 0x20, 0xbf, 0xf7, 0x38, 0xff, 0x01, 0x20,
+ 0x04, 0x49, 0x3c, 0x00, 0x68, 0x11, 0x04, 0x00,
+ 0xc0, 0x06, 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd,
+ 0xb8, 0x74, 0x01, 0x00, 0x2d, 0x6e, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x04, 0x48,
+ 0x00, 0xf0, 0x80, 0xfe, 0x03, 0x49, 0x00, 0x20,
+ 0x48, 0x60, 0x88, 0x60, 0x80, 0xbd, 0x00, 0x00,
+ 0x41, 0x4b, 0x00, 0x00, 0xbc, 0x74, 0x01, 0x00,
+ 0x80, 0xb5, 0xc5, 0xf7, 0xd5, 0xfe, 0xce, 0xf7,
+ 0xd9, 0xf8, 0x03, 0x49, 0x3c, 0x00, 0xa4, 0x11,
+ 0x04, 0x00, 0x08, 0x60, 0x03, 0x49, 0x0a, 0x20,
+ 0xd1, 0xf7, 0xef, 0xf8, 0x80, 0xbd, 0xbc, 0x74,
+ 0x01, 0x00, 0x49, 0x6e, 0x00, 0x00, 0x80, 0xb5,
+ 0x01, 0x22, 0x20, 0x21, 0x06, 0x20, 0xc8, 0xf7,
+ 0x56, 0xfc, 0xbf, 0xf7, 0x70, 0xfe, 0x03, 0x49,
+ 0x00, 0x20, 0x08, 0x60, 0x20, 0x21, 0x02, 0x48,
+ 0xbf, 0xf7, 0x63, 0xf9, 0x80, 0xbd, 0xcc, 0x5c,
+ 0x01, 0x00, 0x64, 0x6d, 0x01, 0x00, 0x3c, 0x00,
+ 0xe0, 0x11, 0x04, 0x00, 0x08, 0x48, 0x80, 0xb5,
+ 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48,
+ 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, 0xbf, 0xf7,
+ 0xf3, 0xf8, 0x04, 0x4a, 0x04, 0x49, 0x03, 0x20,
+ 0xbf, 0xf7, 0xac, 0xfd, 0x80, 0xbd, 0x00, 0x00,
+ 0x50, 0x6d, 0x01, 0x00, 0x89, 0x98, 0x00, 0x00,
+ 0x91, 0x98, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x03, 0xf8, 0x00, 0xf0, 0x19, 0xf8, 0x80, 0xbd,
+ 0x3c, 0x00, 0x1c, 0x12, 0x04, 0x00, 0x10, 0xb5,
+ 0x09, 0x4c, 0x60, 0x21, 0x20, 0x1c, 0xbf, 0xf7,
+ 0x3a, 0xf9, 0x00, 0x20, 0xc0, 0x43, 0xa0, 0x60,
+ 0x20, 0x60, 0xff, 0x20, 0x02, 0x30, 0xe0, 0x84,
+ 0x20, 0x22, 0x20, 0x1c, 0x40, 0x30, 0x02, 0x49,
+ 0xbf, 0xf7, 0x5b, 0xf9, 0x10, 0xbd, 0x00, 0x10,
+ 0x07, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x20,
+ 0x0a, 0x49, 0xc0, 0x43, 0x88, 0x60, 0x09, 0x4b,
+ 0x0a, 0x49, 0x3c, 0x00, 0x58, 0x12, 0x04, 0x00,
+ 0x00, 0x20, 0x82, 0x00, 0x01, 0x30, 0x00, 0x06,
+ 0x00, 0x0e, 0x20, 0x28, 0x99, 0x50, 0xf8, 0xd3,
+ 0x06, 0x49, 0x04, 0x4a, 0x08, 0x1c, 0x10, 0x30,
+ 0x08, 0x3a, 0x03, 0xc2, 0x70, 0x47, 0x00, 0x00,
+ 0x00, 0x10, 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00,
+ 0x75, 0x75, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00,
+ 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x0c, 0x38, 0x3c, 0x00, 0x94, 0x12,
+ 0x04, 0x00, 0x01, 0x21, 0x41, 0x60, 0x70, 0x47,
+ 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x03, 0x48, 0x00, 0x21, 0x00, 0x22,
+ 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, 0x70, 0x47,
+ 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x04, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x48, 0x61, 0x02, 0x48,
+ 0x40, 0x21, 0x1c, 0x30, 0xbf, 0xf7, 0xe9, 0xf8,
+ 0x80, 0xbd, 0xfc, 0x5a, 0x01, 0x00, 0x3c, 0x00,
+ 0xd0, 0x12, 0x04, 0x00, 0x80, 0xb5, 0xce, 0xf7,
+ 0x3f, 0xf8, 0x03, 0x49, 0x88, 0x61, 0x03, 0x49,
+ 0x03, 0x20, 0xd1, 0xf7, 0x55, 0xf8, 0x80, 0xbd,
+ 0xfc, 0x5a, 0x01, 0x00, 0x0d, 0x17, 0x01, 0x00,
+ 0x80, 0xb5, 0xc0, 0xf7, 0xa5, 0xf9, 0x80, 0xbd,
+ 0xfe, 0xb5, 0x6c, 0x49, 0x00, 0x20, 0x00, 0x90,
+ 0xc8, 0x78, 0x6b, 0x4c, 0x6b, 0x4f, 0x43, 0x07,
+ 0xc0, 0x06, 0xc0, 0x17, 0xdb, 0x0e, 0xe3, 0x58,
+ 0x3c, 0x00, 0x0c, 0x13, 0x04, 0x00, 0x01, 0x30,
+ 0x38, 0x62, 0x3b, 0x61, 0x08, 0x1c, 0x80, 0x78,
+ 0x66, 0x4e, 0x03, 0x22, 0x41, 0x07, 0xa0, 0x36,
+ 0x02, 0x96, 0x49, 0x0f, 0x31, 0x72, 0x89, 0x00,
+ 0x61, 0x58, 0x3c, 0x1c, 0x61, 0x61, 0x01, 0x91,
+ 0xc0, 0x06, 0xc0, 0x0f, 0x78, 0x62, 0x20, 0x1c,
+ 0x00, 0x27, 0x87, 0x61, 0x00, 0x20, 0x21, 0x1c,
+ 0xc8, 0x61, 0x59, 0x48, 0x59, 0x49, 0x00, 0x78,
+ 0x09, 0x79, 0x3c, 0x00, 0x48, 0x13, 0x04, 0x00,
+ 0x5a, 0x4c, 0x4e, 0x07, 0x76, 0x0f, 0x71, 0x1c,
+ 0x8c, 0x46, 0xb1, 0x00, 0x8e, 0x46, 0x56, 0x49,
+ 0x80, 0x31, 0x00, 0x28, 0x24, 0xd0, 0x52, 0x4f,
+ 0x01, 0x28, 0x7f, 0x78, 0x1a, 0xd0, 0x02, 0x28,
+ 0x71, 0xd1, 0x4f, 0x48, 0x00, 0x2f, 0x0c, 0xd0,
+ 0x01, 0x2f, 0x6c, 0xd1, 0x40, 0x79, 0x4d, 0x4d,
+ 0x40, 0x07, 0x40, 0x0f, 0x82, 0x00, 0xaa, 0x58,
+ 0x4b, 0x4d, 0x01, 0x30, 0x3c, 0x00, 0x84, 0x13,
+ 0x04, 0x00, 0xea, 0x61, 0xa0, 0x73, 0x04, 0x22,
+ 0x4b, 0x48, 0x48, 0x4d, 0xc8, 0x61, 0x4a, 0x48,
+ 0x00, 0x2f, 0x00, 0xd0, 0x4a, 0x48, 0x2f, 0x1c,
+ 0x11, 0xe0, 0x42, 0x48, 0x00, 0x2f, 0x55, 0xd1,
+ 0x07, 0x70, 0x02, 0x27, 0x47, 0x70, 0x3f, 0x48,
+ 0x40, 0x78, 0x00, 0x28, 0x10, 0xd0, 0x01, 0x28,
+ 0x01, 0xd0, 0x02, 0x28, 0x4a, 0xd1, 0x3f, 0x48,
+ 0x3d, 0x4f, 0xc8, 0x61, 0x3f, 0x48, 0x3c, 0x00,
+ 0xc0, 0x13, 0x04, 0x00, 0x88, 0x61, 0x3a, 0x49,
+ 0x70, 0x46, 0x08, 0x58, 0x35, 0x1c, 0xb8, 0x61,
+ 0x60, 0x46, 0x60, 0x73, 0x04, 0xe0, 0x3c, 0x48,
+ 0x02, 0x22, 0x88, 0x61, 0x3b, 0x48, 0xc8, 0x61,
+ 0x00, 0x20, 0x32, 0x49, 0x06, 0xe0, 0x0e, 0x18,
+ 0xb6, 0x78, 0x76, 0x07, 0x76, 0x0f, 0x04, 0x2e,
+ 0x2f, 0xd8, 0x01, 0x30, 0x90, 0x42, 0xf6, 0xd3,
+ 0xc8, 0x79, 0x2e, 0x4f, 0xc0, 0x07, 0xc0, 0x0f,
+ 0x3c, 0x00, 0xfc, 0x13, 0x04, 0x00, 0xf8, 0x60,
+ 0x33, 0x48, 0x41, 0x68, 0x19, 0x43, 0x41, 0x60,
+ 0x81, 0x68, 0x19, 0x43, 0x81, 0x60, 0x01, 0x9a,
+ 0xb9, 0x69, 0x8c, 0x46, 0x11, 0x43, 0xfa, 0x69,
+ 0x86, 0x68, 0x11, 0x43, 0x8e, 0x43, 0x86, 0x60,
+ 0x46, 0x68, 0x31, 0x43, 0x41, 0x60, 0x01, 0x99,
+ 0x0b, 0x43, 0x18, 0x1c, 0x61, 0x46, 0x08, 0x43,
+ 0x10, 0x43, 0x01, 0x1c, 0x00, 0x22, 0x02, 0x20,
+ 0xc7, 0xf7, 0x3c, 0x00, 0x38, 0x14, 0x04, 0x00,
+ 0x03, 0xfa, 0x1e, 0x4e, 0x40, 0x3e, 0x70, 0x78,
+ 0xc0, 0x08, 0xc0, 0x00, 0x28, 0x43, 0x70, 0x70,
+ 0x70, 0x1c, 0x01, 0x78, 0x00, 0xe0, 0x29, 0xe0,
+ 0x08, 0x25, 0xa9, 0x43, 0x01, 0x70, 0x01, 0x20,
+ 0xc0, 0x43, 0xb0, 0x80, 0x00, 0x21, 0x01, 0x20,
+ 0xcf, 0xf7, 0x6c, 0xfc, 0x30, 0x1c, 0x80, 0x30,
+ 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, 0x81, 0x70,
+ 0x0f, 0x21, 0x01, 0x70, 0x3c, 0x00, 0x74, 0x14,
+ 0x04, 0x00, 0x16, 0x4a, 0x69, 0x04, 0x11, 0x60,
+ 0x51, 0x60, 0x02, 0x9e, 0x10, 0x21, 0x32, 0x7a,
+ 0x7b, 0x6a, 0x00, 0x2b, 0x00, 0xd1, 0x00, 0x21,
+ 0x11, 0x43, 0x21, 0x73, 0x81, 0x78, 0x29, 0x43,
+ 0x81, 0x70, 0xe0, 0x78, 0x01, 0x21, 0x08, 0x43,
+ 0xe0, 0x70, 0xd2, 0xf7, 0xf2, 0xf9, 0x01, 0x20,
+ 0x00, 0x90, 0x00, 0x98, 0xfe, 0xbd, 0xc0, 0x57,
+ 0x01, 0x00, 0x6c, 0x43, 0x01, 0x00, 0x3c, 0x00,
+ 0xb0, 0x14, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x40, 0x90, 0x07, 0x00, 0xc9, 0x1d, 0x00, 0x00,
+ 0x81, 0x1d, 0x00, 0x00, 0xa5, 0x1d, 0x00, 0x00,
+ 0x99, 0x1d, 0x00, 0x00, 0xf1, 0x1d, 0x00, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x03, 0x49, 0x00, 0x20, 0x88, 0x62, 0x08, 0x70,
+ 0x48, 0x70, 0x08, 0x71, 0x08, 0x62, 0x70, 0x47,
+ 0xac, 0x7e, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21,
+ 0x3c, 0x00, 0xec, 0x14, 0x04, 0x00, 0x00, 0x20,
+ 0xcd, 0xf7, 0x69, 0xff, 0x80, 0xbd, 0xb0, 0xb5,
+ 0x0f, 0x48, 0xc0, 0xf7, 0x18, 0xfc, 0x0e, 0x4d,
+ 0x03, 0x20, 0x28, 0x70, 0x0d, 0x49, 0x0d, 0x48,
+ 0x0c, 0x39, 0x48, 0x60, 0x0d, 0x48, 0x0a, 0x4c,
+ 0x88, 0x60, 0x40, 0x21, 0x18, 0x34, 0x20, 0x1c,
+ 0xbe, 0xf7, 0xc1, 0xff, 0xff, 0x21, 0x68, 0x68,
+ 0x09, 0x06, 0x08, 0x43, 0x20, 0x60, 0xff, 0x21,
+ 0x06, 0x22, 0x3c, 0x00, 0x28, 0x15, 0x04, 0x00,
+ 0x20, 0x1d, 0xbf, 0xf7, 0x79, 0xf8, 0x01, 0x20,
+ 0xe0, 0x60, 0xb0, 0xbd, 0xc0, 0xa8, 0x13, 0x0a,
+ 0x20, 0x6e, 0x01, 0x00, 0xc0, 0xa8, 0x13, 0x01,
+ 0xff, 0xff, 0xff, 0x00, 0x80, 0xb5, 0x02, 0x49,
+ 0x01, 0x20, 0xc8, 0xf7, 0x45, 0xff, 0x80, 0xbd,
+ 0x9d, 0x1c, 0x00, 0x00, 0x98, 0xb5, 0x0c, 0x4c,
+ 0x00, 0x20, 0x60, 0x60, 0xe0, 0x60, 0x0b, 0x4b,
+ 0x0b, 0x49, 0x82, 0x00, 0x3c, 0x00, 0x64, 0x15,
+ 0x04, 0x00, 0x01, 0x30, 0x20, 0x28, 0x99, 0x50,
+ 0xfa, 0xdb, 0x6a, 0x46, 0x09, 0x49, 0x05, 0x20,
+ 0xbf, 0xf7, 0x2f, 0xfd, 0x00, 0x20, 0xc0, 0x43,
+ 0x20, 0x60, 0x06, 0x49, 0x20, 0x20, 0x08, 0x60,
+ 0x48, 0x60, 0x98, 0xbd, 0x00, 0x00, 0x00, 0x40,
+ 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xa9, 0x75,
+ 0x00, 0x00, 0xb5, 0x9f, 0x00, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x05, 0x49, 0x00, 0x20, 0x3c, 0x00,
+ 0xa0, 0x15, 0x04, 0x00, 0x08, 0x60, 0x05, 0x48,
+ 0x81, 0x78, 0x28, 0x22, 0x91, 0x43, 0x81, 0x70,
+ 0x81, 0x78, 0x11, 0x43, 0x81, 0x70, 0x70, 0x47,
+ 0x78, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x41, 0x48, 0x10, 0xb5,
+ 0x00, 0x68, 0x02, 0x21, 0x88, 0x43, 0x3f, 0x49,
+ 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x02, 0x21,
+ 0x08, 0x43, 0x3c, 0x49, 0x08, 0x60, 0x3c, 0x48,
+ 0x3c, 0x00, 0xdc, 0x15, 0x04, 0x00, 0x40, 0x68,
+ 0x80, 0x21, 0x88, 0x43, 0x3a, 0x49, 0x48, 0x60,
+ 0x08, 0x1c, 0x00, 0x68, 0x80, 0x21, 0x08, 0x43,
+ 0x37, 0x49, 0x08, 0x60, 0x37, 0x48, 0x01, 0x7a,
+ 0x01, 0x24, 0x21, 0x43, 0x01, 0x72, 0x01, 0x7a,
+ 0x02, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7a,
+ 0x04, 0x22, 0x91, 0x43, 0x01, 0x72, 0x01, 0x7a,
+ 0x08, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7b,
+ 0x21, 0x43, 0x3c, 0x00, 0x18, 0x16, 0x04, 0x00,
+ 0x01, 0x73, 0x01, 0x7b, 0x02, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x01, 0x7b, 0x04, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43,
+ 0x01, 0x73, 0x2e, 0x21, 0x41, 0x73, 0x81, 0x7b,
+ 0x38, 0x22, 0x91, 0x43, 0x28, 0x31, 0x81, 0x73,
+ 0x20, 0x21, 0x41, 0x74, 0x81, 0x7b, 0xc9, 0x08,
+ 0xc9, 0x00, 0x03, 0x31, 0x81, 0x73, 0x22, 0x21,
+ 0xc1, 0x73, 0x20, 0x49, 0x3c, 0x00, 0x54, 0x16,
+ 0x04, 0x00, 0x09, 0x7a, 0x41, 0x72, 0x1e, 0x49,
+ 0x49, 0x7a, 0x01, 0x74, 0x3c, 0x22, 0x02, 0x77,
+ 0x01, 0x1c, 0x10, 0x31, 0x4a, 0x73, 0x50, 0x23,
+ 0x8b, 0x73, 0x5a, 0x23, 0xcb, 0x73, 0x0d, 0x23,
+ 0x01, 0x1c, 0x20, 0x31, 0x0b, 0x70, 0x17, 0x4b,
+ 0x43, 0x84, 0x0e, 0x23, 0x4b, 0x70, 0x00, 0x21,
+ 0x41, 0x82, 0x30, 0x21, 0x01, 0x70, 0x05, 0x21,
+ 0x41, 0x70, 0x04, 0x21, 0x41, 0x71, 0x3c, 0x00,
+ 0x90, 0x16, 0x04, 0x00, 0x84, 0x71, 0xc4, 0x71,
+ 0x0c, 0x21, 0x01, 0x71, 0xf8, 0x21, 0x41, 0x80,
+ 0x0f, 0x49, 0xca, 0x72, 0x8a, 0x72, 0x03, 0x22,
+ 0x0a, 0x72, 0x09, 0x22, 0x4a, 0x72, 0x08, 0x22,
+ 0x0a, 0x73, 0x02, 0x7a, 0x40, 0x23, 0x1a, 0x43,
+ 0x02, 0x72, 0x4c, 0x73, 0xff, 0xf7, 0xa2, 0xfc,
+ 0x08, 0x48, 0x01, 0x78, 0x21, 0x43, 0x01, 0x70,
+ 0x10, 0xbd, 0x00, 0x00, 0xf0, 0x00, 0x07, 0x00,
+ 0x3c, 0x00, 0xcc, 0x16, 0x04, 0x00, 0xf4, 0x00,
+ 0x07, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x76, 0x46,
+ 0x01, 0x00, 0x24, 0x09, 0x00, 0x00, 0x80, 0x80,
+ 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0x80, 0xb5,
+ 0x18, 0x21, 0x09, 0x48, 0xbe, 0xf7, 0xd7, 0xfe,
+ 0x08, 0x48, 0x00, 0x21, 0x3c, 0x38, 0x41, 0x60,
+ 0x81, 0x60, 0xc1, 0x60, 0x01, 0x61, 0x41, 0x61,
+ 0x81, 0x61, 0x01, 0x21, 0x01, 0x62, 0xff, 0xf7,
+ 0x5c, 0xff, 0x3c, 0x00, 0x08, 0x17, 0x04, 0x00,
+ 0xc0, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00,
+ 0x24, 0x7e, 0x01, 0x00, 0xb0, 0xb5, 0x21, 0x48,
+ 0x00, 0x68, 0x40, 0x08, 0x1f, 0x49, 0x40, 0x00,
+ 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x01, 0x21,
+ 0x08, 0x43, 0x1c, 0x49, 0x08, 0x60, 0x1c, 0x4a,
+ 0x10, 0x79, 0x01, 0x21, 0x08, 0x43, 0x10, 0x71,
+ 0x10, 0x79, 0x02, 0x21, 0x88, 0x43, 0x10, 0x71,
+ 0x00, 0xf0, 0x6c, 0xf8, 0x3c, 0x00, 0x44, 0x17,
+ 0x04, 0x00, 0x10, 0x7a, 0x01, 0x21, 0x08, 0x43,
+ 0x10, 0x72, 0x10, 0x7a, 0xfe, 0x21, 0x88, 0x43,
+ 0x0a, 0x30, 0x10, 0x72, 0x28, 0x20, 0x90, 0x72,
+ 0x5a, 0x20, 0xd0, 0x72, 0x11, 0x4d, 0x14, 0x20,
+ 0x28, 0x77, 0x2c, 0x1c, 0x10, 0x34, 0xa0, 0x73,
+ 0x16, 0x20, 0xa8, 0x75, 0x18, 0x20, 0xe8, 0x75,
+ 0xff, 0xf7, 0xa1, 0xfc, 0x0c, 0x48, 0x68, 0x86,
+ 0xe0, 0x7b, 0x40, 0x06, 0x40, 0x0e, 0x3c, 0x00,
+ 0x80, 0x17, 0x04, 0x00, 0x0e, 0x21, 0x08, 0x43,
+ 0xe0, 0x73, 0xe0, 0x7b, 0x80, 0x21, 0x08, 0x43,
+ 0xe0, 0x73, 0x07, 0x48, 0x41, 0x79, 0x04, 0x22,
+ 0x11, 0x43, 0x41, 0x71, 0xb0, 0xbd, 0x00, 0x00,
+ 0xf0, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00,
+ 0x30, 0x80, 0x07, 0x00, 0xff, 0x01, 0x00, 0x00,
+ 0x50, 0x00, 0x07, 0x00, 0x80, 0xb5, 0xff, 0xf7,
+ 0xaf, 0xff, 0x00, 0x20, 0x14, 0x49, 0xc0, 0x43,
+ 0x3c, 0x00, 0xbc, 0x17, 0x04, 0x00, 0x88, 0x60,
+ 0xc1, 0xf7, 0x0b, 0xf9, 0x13, 0x49, 0x00, 0x20,
+ 0x48, 0x62, 0xc8, 0x60, 0x48, 0x61, 0x08, 0x61,
+ 0x88, 0x61, 0xc8, 0x61, 0x0f, 0x4b, 0x08, 0x62,
+ 0x0f, 0x4a, 0x08, 0x63, 0x38, 0x33, 0x1a, 0x80,
+ 0x01, 0x22, 0x5a, 0x71, 0x0b, 0x4a, 0x40, 0x32,
+ 0xd0, 0x60, 0x13, 0x60, 0x08, 0x23, 0x13, 0x81,
+ 0x50, 0x60, 0x09, 0x4a, 0x8a, 0x62, 0xff, 0x22,
+ 0x0a, 0x70, 0x3c, 0x00, 0xf8, 0x17, 0x04, 0x00,
+ 0x48, 0x70, 0x05, 0x48, 0x00, 0x21, 0x00, 0x22,
+ 0x50, 0x30, 0x00, 0x23, 0x0e, 0xc0, 0xc1, 0xf7,
+ 0xff, 0xf8, 0x80, 0xbd, 0x00, 0x30, 0x07, 0x00,
+ 0x04, 0x6c, 0x01, 0x00, 0xbe, 0xba, 0x00, 0x00,
+ 0x85, 0x75, 0x00, 0x00, 0x03, 0x48, 0x10, 0x21,
+ 0x81, 0x71, 0x02, 0x21, 0xc1, 0x71, 0x30, 0x21,
+ 0x41, 0x72, 0x70, 0x47, 0x00, 0x80, 0x07, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x34, 0x18,
+ 0x04, 0x00, 0x00, 0xb5, 0xc1, 0xf7, 0xdb, 0xfb,
+ 0x00, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5,
+ 0xcd, 0xf7, 0x87, 0xfd, 0x01, 0x49, 0x88, 0x60,
+ 0x80, 0xbd, 0x50, 0xd9, 0x01, 0x00, 0x80, 0xb5,
+ 0x06, 0x21, 0x05, 0x48, 0xbe, 0xf7, 0xfd, 0xfd,
+ 0x04, 0x49, 0x00, 0x20, 0x04, 0x39, 0x08, 0x60,
+ 0x00, 0xf0, 0x67, 0xf8, 0x00, 0xf0, 0x03, 0xf8,
+ 0x80, 0xbd, 0xec, 0x67, 0x01, 0x00, 0x3c, 0x00,
+ 0x70, 0x18, 0x04, 0x00, 0x10, 0xb5, 0x07, 0x4c,
+ 0x2c, 0x21, 0x20, 0x1c, 0xbe, 0xf7, 0x10, 0xfe,
+ 0x01, 0x20, 0x20, 0x70, 0x03, 0x49, 0x00, 0x20,
+ 0x1c, 0x39, 0xc8, 0x60, 0x08, 0x61, 0x88, 0x61,
+ 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00,
+ 0x80, 0xb5, 0xcd, 0xf7, 0x5d, 0xfd, 0x09, 0x49,
+ 0x88, 0x60, 0x09, 0x49, 0x08, 0x20, 0xd0, 0xf7,
+ 0x73, 0xfd, 0x08, 0x49, 0x09, 0x20, 0xd0, 0xf7,
+ 0x3c, 0x00, 0xac, 0x18, 0x04, 0x00, 0x6f, 0xfd,
+ 0x07, 0x49, 0x11, 0x20, 0xd0, 0xf7, 0x6b, 0xfd,
+ 0x06, 0x48, 0xc2, 0xf7, 0x74, 0xf9, 0x80, 0xbd,
+ 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x21, 0x35,
+ 0x00, 0x00, 0xa1, 0x38, 0x00, 0x00, 0x45, 0x34,
+ 0x00, 0x00, 0xbd, 0x26, 0x01, 0x00, 0x80, 0xb5,
+ 0x86, 0xb0, 0x0f, 0x48, 0xc4, 0xf7, 0x45, 0xf9,
+ 0x00, 0xf0, 0x45, 0xf8, 0xff, 0xf7, 0xd7, 0xff,
+ 0xff, 0xf7, 0x3c, 0x00, 0xe8, 0x18, 0x04, 0x00,
+ 0xab, 0xff, 0x0c, 0x49, 0x03, 0x20, 0xd0, 0xf7,
+ 0x4d, 0xfd, 0x0b, 0x48, 0x69, 0x46, 0x00, 0x90,
+ 0x00, 0x20, 0x01, 0x90, 0x09, 0x48, 0x04, 0x90,
+ 0x09, 0x48, 0x02, 0x90, 0x09, 0x48, 0x03, 0x90,
+ 0x09, 0x48, 0x05, 0x90, 0x00, 0x20, 0xc4, 0xf7,
+ 0xcf, 0xf8, 0x06, 0xb0, 0x80, 0xbd, 0x00, 0x00,
+ 0xf4, 0x67, 0x01, 0x00, 0x45, 0x35, 0x00, 0x00,
+ 0x95, 0x32, 0x00, 0x00, 0x3c, 0x00, 0x24, 0x19,
+ 0x04, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0xfd, 0x32,
+ 0x00, 0x00, 0xcd, 0x31, 0x00, 0x00, 0x45, 0x7d,
+ 0x01, 0x00, 0x10, 0xb5, 0xcd, 0xf7, 0xd5, 0xfc,
+ 0x09, 0x48, 0x09, 0x4c, 0x30, 0x21, 0x60, 0x61,
+ 0x08, 0x48, 0x74, 0x30, 0xbe, 0xf7, 0xa9, 0xfd,
+ 0x00, 0x20, 0xa0, 0x62, 0x06, 0x49, 0x20, 0x61,
+ 0xe1, 0x63, 0x60, 0x64, 0xa0, 0x64, 0x14, 0x21,
+ 0x21, 0x65, 0x60, 0x62, 0x10, 0xbd, 0x3c, 0x00,
+ 0x60, 0x19, 0x04, 0x00, 0xb9, 0x75, 0x00, 0x00,
+ 0x44, 0x7d, 0x01, 0x00, 0x70, 0x17, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x09, 0x20, 0x04, 0x4a,
+ 0xd1, 0xf7, 0xe8, 0xfe, 0xcd, 0xf7, 0xec, 0xfc,
+ 0x02, 0x49, 0x08, 0x63, 0x80, 0xbd, 0x00, 0x00,
+ 0x39, 0x39, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00,
+ 0x80, 0xb5, 0xac, 0x21, 0x03, 0x48, 0xbe, 0xf7,
+ 0x83, 0xfd, 0x00, 0xf0, 0x51, 0xf8, 0x00, 0xf0,
+ 0x3c, 0x00, 0x9c, 0x19, 0x04, 0x00, 0x49, 0xf8,
+ 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x08, 0xb5,
+ 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0xf0, 0x45, 0xf8,
+ 0x00, 0x21, 0x16, 0x20, 0x18, 0x4a, 0xd1, 0xf7,
+ 0xc8, 0xfe, 0x17, 0x4a, 0x04, 0x21, 0x10, 0x1c,
+ 0x40, 0x30, 0x01, 0x70, 0x00, 0x21, 0x81, 0x70,
+ 0x11, 0x21, 0xc1, 0x80, 0x14, 0x49, 0x01, 0x81,
+ 0x10, 0x1c, 0x80, 0x30, 0xc1, 0x78, 0x08, 0x22,
+ 0x91, 0x43, 0x3c, 0x00, 0xd8, 0x19, 0x04, 0x00,
+ 0xc1, 0x70, 0xc1, 0x78, 0x11, 0x43, 0xc1, 0x70,
+ 0x6a, 0x46, 0x0f, 0x49, 0x14, 0x20, 0xbf, 0xf7,
+ 0xf5, 0xfa, 0x0e, 0x49, 0x07, 0x20, 0xd0, 0xf7,
+ 0xcd, 0xfc, 0x0d, 0x49, 0x0f, 0x20, 0xd0, 0xf7,
+ 0xc9, 0xfc, 0xcd, 0xf7, 0xab, 0xfc, 0x0b, 0x49,
+ 0x08, 0x60, 0x0a, 0x48, 0x44, 0x38, 0x80, 0x68,
+ 0x00, 0x28, 0x02, 0xd0, 0x00, 0x20, 0xc6, 0xf7,
+ 0x6f, 0xf9, 0x08, 0xbd, 0x3c, 0x00, 0x14, 0x1a,
+ 0x04, 0x00, 0xb5, 0x3b, 0x00, 0x00, 0x00, 0x90,
+ 0x07, 0x00, 0xe7, 0xfd, 0x00, 0x00, 0x8d, 0x41,
+ 0x00, 0x00, 0xcd, 0x48, 0x00, 0x00, 0xd9, 0x49,
+ 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5,
+ 0x00, 0xf0, 0x6f, 0xfc, 0x80, 0xbd, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x61, 0xfc,
+ 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5,
+ 0x30, 0x21, 0x0c, 0x48, 0xbe, 0xf7, 0x3c, 0x00,
+ 0x50, 0x1a, 0x04, 0x00, 0x25, 0xfd, 0x0b, 0x4c,
+ 0x00, 0x25, 0x0a, 0x48, 0x84, 0x3c, 0x38, 0x22,
+ 0x03, 0x21, 0x70, 0x38, 0x65, 0x60, 0xbe, 0xf7,
+ 0xdd, 0xfd, 0x06, 0x48, 0x38, 0x22, 0x01, 0x21,
+ 0x38, 0x38, 0xbe, 0xf7, 0xd7, 0xfd, 0x0e, 0x20,
+ 0xa5, 0x60, 0x60, 0x70, 0x20, 0x70, 0x00, 0xf0,
+ 0x1d, 0xf8, 0xb0, 0xbd, 0x94, 0x67, 0x01, 0x00,
+ 0x04, 0x49, 0x00, 0xb5, 0x01, 0x20, 0x48, 0x60,
+ 0x3c, 0x00, 0x8c, 0x1a, 0x04, 0x00, 0x88, 0x60,
+ 0xc8, 0x60, 0xc3, 0xf7, 0xf8, 0xff, 0x00, 0xbd,
+ 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x0a, 0x20, 0x02, 0x4a, 0xd1, 0xf7,
+ 0x50, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x1d, 0x5a,
+ 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x05, 0xf8,
+ 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0xfd, 0xfb,
+ 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x49, 0x04, 0x20,
+ 0xd0, 0xf7, 0x3c, 0x00, 0xc8, 0x1a, 0x04, 0x00,
+ 0x61, 0xfc, 0x80, 0xbd, 0x65, 0x1f, 0x00, 0x00,
+ 0x00, 0x21, 0x17, 0x48, 0xc9, 0x43, 0x80, 0xb5,
+ 0x16, 0x4b, 0x01, 0x70, 0x18, 0x1c, 0x10, 0x22,
+ 0x20, 0x30, 0x02, 0x71, 0x00, 0x22, 0x10, 0x33,
+ 0x9a, 0x73, 0x42, 0x79, 0x04, 0x23, 0x1a, 0x43,
+ 0x42, 0x71, 0x42, 0x79, 0x18, 0x23, 0x9a, 0x43,
+ 0x08, 0x32, 0x42, 0x71, 0x08, 0x1c, 0xd7, 0xf7,
+ 0x59, 0xf8, 0x00, 0x28, 0x3c, 0x00, 0x04, 0x1b,
+ 0x04, 0x00, 0x03, 0xd1, 0x01, 0x21, 0x9a, 0x20,
+ 0xbf, 0xf7, 0xcb, 0xfb, 0x50, 0x20, 0x09, 0x49,
+ 0x50, 0x22, 0x0a, 0x60, 0xc8, 0x60, 0x88, 0x60,
+ 0x48, 0x60, 0x08, 0x61, 0x01, 0x20, 0x48, 0x61,
+ 0x00, 0x20, 0xd7, 0xf7, 0xd8, 0xf8, 0x04, 0x49,
+ 0xff, 0x20, 0x08, 0x60, 0x80, 0xbd, 0xf4, 0x6b,
+ 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x04, 0x02,
+ 0x07, 0x00, 0xf4, 0x74, 0x01, 0x00, 0x3c, 0x00,
+ 0x40, 0x1b, 0x04, 0x00, 0x80, 0xb5, 0xd7, 0xf7,
+ 0xfb, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0xff, 0xf7,
+ 0xab, 0xfb, 0xbf, 0xf7, 0xdd, 0xfb, 0x81, 0x48,
+ 0xcd, 0xf7, 0x98, 0xfa, 0x00, 0x24, 0x23, 0x1c,
+ 0x04, 0x22, 0x04, 0x21, 0x00, 0x20, 0x01, 0xf0,
+ 0x39, 0xfa, 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7,
+ 0xc9, 0xfb, 0x23, 0x1c, 0x00, 0x22, 0xff, 0x21,
+ 0x00, 0x20, 0x01, 0xf0, 0x2f, 0xfa, 0x00, 0x28,
+ 0x3c, 0x00, 0x7c, 0x1b, 0x04, 0x00, 0x01, 0xd0,
+ 0xbf, 0xf7, 0xbf, 0xfb, 0x23, 0x1c, 0x00, 0x22,
+ 0xff, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x25, 0xfa,
+ 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, 0xb5, 0xfb,
+ 0xc4, 0xf7, 0x27, 0xff, 0x70, 0x48, 0x84, 0x70,
+ 0x6f, 0x49, 0x7f, 0x20, 0x88, 0x70, 0x6e, 0x49,
+ 0x0c, 0x60, 0x03, 0x20, 0x08, 0x60, 0x6b, 0x48,
+ 0x44, 0x70, 0x6c, 0x48, 0x04, 0x80, 0x69, 0x48,
+ 0xc0, 0x78, 0x3c, 0x00, 0xb8, 0x1b, 0x04, 0x00,
+ 0x08, 0x21, 0x08, 0x43, 0x67, 0x49, 0xc8, 0x70,
+ 0x08, 0x1c, 0xc0, 0x78, 0x04, 0x21, 0x08, 0x43,
+ 0x64, 0x49, 0xc8, 0x70, 0x01, 0xf0, 0x7e, 0xfa,
+ 0xff, 0xf7, 0x7e, 0xff, 0xff, 0xf7, 0x2c, 0xfe,
+ 0x01, 0xf0, 0x46, 0xfb, 0xff, 0xf7, 0x18, 0xfb,
+ 0x01, 0xf0, 0x52, 0xfa, 0xff, 0xf7, 0x82, 0xfb,
+ 0x5f, 0x48, 0xc1, 0x68, 0x10, 0x22, 0x91, 0x43,
+ 0xc1, 0x60, 0x01, 0x69, 0x3c, 0x00, 0xf4, 0x1b,
+ 0x04, 0x00, 0x5d, 0x4a, 0x11, 0x43, 0x01, 0x61,
+ 0x01, 0x69, 0xd2, 0x0a, 0x91, 0x43, 0x01, 0x61,
+ 0xc1, 0x68, 0x5a, 0x4a, 0x11, 0x43, 0xc1, 0x60,
+ 0x81, 0x6a, 0x59, 0x4a, 0x11, 0x43, 0x81, 0x62,
+ 0x00, 0xf0, 0x77, 0xf9, 0x01, 0xf0, 0x1f, 0xf8,
+ 0x00, 0xf0, 0x93, 0xfa, 0x01, 0xf0, 0x99, 0xfb,
+ 0x00, 0xf0, 0xf1, 0xff, 0x00, 0xf0, 0x99, 0xfc,
+ 0x00, 0xf0, 0xdd, 0xfc, 0x00, 0xf0, 0x3c, 0x00,
+ 0x30, 0x1c, 0x04, 0x00, 0x83, 0xfc, 0xff, 0xf7,
+ 0xb3, 0xfc, 0x01, 0xf0, 0x31, 0xfa, 0x01, 0xf0,
+ 0x71, 0xfa, 0xff, 0xf7, 0x87, 0xfa, 0xff, 0xf7,
+ 0x9b, 0xfa, 0x01, 0x21, 0x01, 0x20, 0x4b, 0x4a,
+ 0xd1, 0xf7, 0x7c, 0xfd, 0x01, 0x21, 0x02, 0x20,
+ 0x49, 0x4a, 0xd1, 0xf7, 0x77, 0xfd, 0x02, 0x21,
+ 0x03, 0x20, 0x48, 0x4a, 0xd1, 0xf7, 0x72, 0xfd,
+ 0x02, 0x21, 0x04, 0x20, 0x46, 0x4a, 0xd1, 0xf7,
+ 0x3c, 0x00, 0x6c, 0x1c, 0x04, 0x00, 0x6d, 0xfd,
+ 0x02, 0x21, 0x05, 0x20, 0x45, 0x4a, 0xd1, 0xf7,
+ 0x68, 0xfd, 0x02, 0x21, 0x06, 0x20, 0x43, 0x4a,
+ 0xd1, 0xf7, 0x63, 0xfd, 0x01, 0x21, 0x07, 0x20,
+ 0x42, 0x4a, 0xd1, 0xf7, 0x5e, 0xfd, 0x02, 0x21,
+ 0x17, 0x20, 0x40, 0x4a, 0xd1, 0xf7, 0x59, 0xfd,
+ 0x02, 0x21, 0x08, 0x20, 0x3f, 0x4a, 0xd1, 0xf7,
+ 0x54, 0xfd, 0xff, 0xf7, 0xc8, 0xfd, 0x3d, 0x48,
+ 0x04, 0x60, 0x3c, 0x00, 0xa8, 0x1c, 0x04, 0x00,
+ 0x44, 0x60, 0xff, 0xf7, 0x17, 0xfa, 0xff, 0xf7,
+ 0x09, 0xfa, 0xff, 0xf7, 0x4f, 0xfc, 0x00, 0xf0,
+ 0x43, 0xf9, 0xff, 0xf7, 0x33, 0xfa, 0xff, 0xf7,
+ 0xfb, 0xfa, 0x01, 0xf0, 0x85, 0xf8, 0x01, 0xf0,
+ 0xeb, 0xf9, 0x01, 0xf0, 0x23, 0xfa, 0x01, 0xf0,
+ 0x71, 0xf9, 0x00, 0xf0, 0xe3, 0xff, 0xff, 0xf7,
+ 0x6f, 0xfa, 0x00, 0xf0, 0xaf, 0xf9, 0x00, 0xf0,
+ 0xbd, 0xf9, 0x00, 0xf0, 0x3c, 0x00, 0xe4, 0x1c,
+ 0x04, 0x00, 0xad, 0xfc, 0x00, 0xf0, 0x9b, 0xfe,
+ 0xff, 0xf7, 0xcd, 0xfa, 0xff, 0xf7, 0xab, 0xfe,
+ 0x00, 0xf0, 0xc3, 0xf9, 0xff, 0xf7, 0xab, 0xfd,
+ 0x00, 0xf0, 0x8d, 0xff, 0x00, 0xf0, 0x21, 0xff,
+ 0x00, 0xf0, 0x65, 0xf9, 0x00, 0xf0, 0x97, 0xf9,
+ 0x00, 0xf0, 0xfd, 0xfe, 0x00, 0xf0, 0xe5, 0xfe,
+ 0x00, 0xf0, 0x3f, 0xf9, 0x00, 0xf0, 0x73, 0xf9,
+ 0xff, 0xf7, 0x37, 0xfe, 0x00, 0xf0, 0x3c, 0x00,
+ 0x20, 0x1d, 0x04, 0x00, 0x21, 0xf9, 0x00, 0xf0,
+ 0x73, 0xfb, 0xff, 0xf7, 0xe5, 0xfb, 0x00, 0xf0,
+ 0xd3, 0xfb, 0xff, 0xf7, 0xa9, 0xfe, 0x00, 0xf0,
+ 0xbb, 0xfb, 0x00, 0xf0, 0x09, 0xff, 0x00, 0xf0,
+ 0xdb, 0xf9, 0x18, 0x48, 0xc9, 0xf7, 0x56, 0xf8,
+ 0x17, 0x48, 0xc9, 0xf7, 0x2b, 0xf8, 0x00, 0x22,
+ 0x01, 0x21, 0xf0, 0x20, 0xd1, 0xf7, 0x2e, 0xfd,
+ 0x00, 0x20, 0x10, 0xbd, 0xa9, 0x69, 0x00, 0x00,
+ 0x3c, 0x00, 0x5c, 0x1d, 0x04, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0xf0, 0x00, 0x07, 0x00, 0x2c, 0x00,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00,
+ 0x08, 0x00, 0xc0, 0x3f, 0x74, 0x38, 0xfc, 0xdf,
+ 0x7f, 0x38, 0x55, 0x69, 0x00, 0x00, 0xe5, 0x13,
+ 0x00, 0x00, 0x61, 0x0c, 0x00, 0x00, 0x6d, 0x0c,
+ 0x00, 0x00, 0x3d, 0x0c, 0x00, 0x00, 0xf1, 0x0d,
+ 0x00, 0x00, 0xc5, 0x33, 0x00, 0x00, 0x3d, 0x0f,
+ 0x00, 0x00, 0x3c, 0x00, 0x98, 0x1d, 0x04, 0x00,
+ 0xad, 0xd8, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00,
+ 0x50, 0x57, 0x01, 0x00, 0x04, 0x40, 0x01, 0x00,
+ 0x80, 0xb5, 0x01, 0xf0, 0xa9, 0xf9, 0x00, 0xf0,
+ 0xc9, 0xf8, 0xff, 0xf7, 0xc5, 0xfe, 0x01, 0xf0,
+ 0x03, 0xfb, 0x01, 0xf0, 0x93, 0xfa, 0xff, 0xf7,
+ 0xcb, 0xf9, 0x2c, 0x48, 0xff, 0xf7, 0xe8, 0xf9,
+ 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, 0x58, 0xff,
+ 0xff, 0xf7, 0x34, 0xfd, 0x3c, 0x00, 0xd4, 0x1d,
+ 0x04, 0x00, 0xff, 0xf7, 0xf2, 0xfb, 0xff, 0xf7,
+ 0x7a, 0xfa, 0xff, 0xf7, 0x00, 0xfa, 0x00, 0xf0,
+ 0x34, 0xf9, 0x00, 0xf0, 0x3c, 0xf9, 0x01, 0xf0,
+ 0xe2, 0xf8, 0xff, 0xf7, 0x7a, 0xf9, 0xff, 0xf7,
+ 0x72, 0xf9, 0xff, 0xf7, 0x9a, 0xf9, 0x01, 0xf0,
+ 0x66, 0xf9, 0x01, 0xf0, 0x8e, 0xf9, 0x01, 0xf0,
+ 0xe0, 0xf8, 0x00, 0xf0, 0x06, 0xff, 0x00, 0xf0,
+ 0xf0, 0xfb, 0x00, 0xf0, 0x46, 0xfb, 0x3c, 0x00,
+ 0x10, 0x1e, 0x04, 0x00, 0x00, 0xf0, 0xbc, 0xff,
+ 0x00, 0xf0, 0xe4, 0xfc, 0x00, 0xf0, 0x20, 0xfe,
+ 0xff, 0xf7, 0x40, 0xfa, 0xff, 0xf7, 0x46, 0xfe,
+ 0xff, 0xf7, 0x56, 0xfd, 0x00, 0xf0, 0x2c, 0xf9,
+ 0x00, 0xf0, 0xfa, 0xfe, 0x00, 0xf0, 0x8a, 0xfe,
+ 0x00, 0xf0, 0xd4, 0xf8, 0x00, 0xf0, 0xb4, 0xf8,
+ 0x00, 0xf0, 0x78, 0xfe, 0x00, 0xf0, 0x4e, 0xfe,
+ 0x00, 0xf0, 0xde, 0xf8, 0xff, 0xf7, 0xac, 0xfd,
+ 0x3c, 0x00, 0x4c, 0x1e, 0x04, 0x00, 0x00, 0xf0,
+ 0x8c, 0xf8, 0x00, 0xf0, 0xf8, 0xfa, 0xff, 0xf7,
+ 0x76, 0xfb, 0xff, 0xf7, 0x20, 0xfe, 0x01, 0xf0,
+ 0xa6, 0xfa, 0x00, 0xf0, 0x48, 0xfb, 0x00, 0xf0,
+ 0x7c, 0xfe, 0x00, 0xf0, 0x5c, 0xf9, 0xbe, 0xf7,
+ 0x57, 0xfd, 0x00, 0x20, 0x80, 0xbd, 0x80, 0x38,
+ 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x08, 0x60,
+ 0x70, 0x47, 0xa8, 0x7e, 0x01, 0x00, 0x10, 0xb5,
+ 0x04, 0x1c, 0x3c, 0x00, 0x88, 0x1e, 0x04, 0x00,
+ 0x01, 0xd1, 0xbf, 0xf7, 0x39, 0xfa, 0x0f, 0x48,
+ 0x7d, 0x21, 0xc9, 0x00, 0x84, 0x60, 0x01, 0x80,
+ 0x0d, 0x49, 0x01, 0x61, 0x80, 0x21, 0x41, 0x80,
+ 0x00, 0x21, 0xc1, 0x60, 0x01, 0x62, 0x0b, 0x48,
+ 0x41, 0x80, 0x14, 0x21, 0x81, 0x80, 0x07, 0x21,
+ 0x41, 0x81, 0x06, 0x4a, 0x46, 0x23, 0x04, 0x32,
+ 0x05, 0x24, 0x13, 0x70, 0x54, 0x70, 0x0a, 0x21,
+ 0x91, 0x70, 0x81, 0x76, 0x3c, 0x00, 0xc4, 0x1e,
+ 0x04, 0x00, 0x03, 0x76, 0x04, 0x81, 0x10, 0xbd,
+ 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, 0x00, 0x87,
+ 0x93, 0x03, 0x30, 0x00, 0x07, 0x00, 0x09, 0x48,
+ 0x80, 0xb5, 0x01, 0x69, 0x42, 0x69, 0x11, 0x43,
+ 0x82, 0x69, 0xc0, 0x69, 0x11, 0x43, 0x01, 0x43,
+ 0x00, 0x22, 0x03, 0x20, 0xc6, 0xf7, 0xbf, 0xfc,
+ 0xcc, 0xf7, 0x1b, 0xfa, 0x00, 0x20, 0xc2, 0xf7,
+ 0x92, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00,
+ 0x00, 0x1f, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00,
+ 0x05, 0x48, 0x80, 0xb5, 0x00, 0x21, 0x81, 0x60,
+ 0x02, 0x21, 0xc1, 0x60, 0x03, 0x39, 0x41, 0x60,
+ 0xc7, 0xf7, 0x3a, 0xff, 0x80, 0xbd, 0x00, 0x00,
+ 0x40, 0x20, 0x07, 0x00, 0x08, 0xb5, 0x6a, 0x46,
+ 0x04, 0x49, 0x15, 0x20, 0xbf, 0xf7, 0x54, 0xf8,
+ 0x01, 0x20, 0x03, 0x49, 0x40, 0x05, 0x08, 0x60,
+ 0x48, 0x60, 0x08, 0xbd, 0xa5, 0x21, 0x01, 0x00,
+ 0x3c, 0x00, 0x3c, 0x1f, 0x04, 0x00, 0x00, 0x10,
+ 0x07, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x48,
+ 0x80, 0xb5, 0x80, 0x68, 0xc0, 0x01, 0x80, 0x0f,
+ 0x05, 0xd1, 0x03, 0x22, 0xc1, 0x43, 0xc6, 0xf7,
+ 0xba, 0xfc, 0xd6, 0xf7, 0x00, 0xfe, 0x80, 0xbd,
+ 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20,
+ 0x06, 0x4a, 0xd1, 0xf7, 0xea, 0xfb, 0x00, 0x22,
+ 0x07, 0x20, 0x3c, 0x00, 0x78, 0x1f, 0x04, 0x00,
+ 0x04, 0x49, 0xbe, 0xf7, 0xed, 0xfe, 0x04, 0x48,
+ 0xc7, 0xf7, 0x58, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0x8d, 0x89, 0x00, 0x00, 0xd5, 0x9b, 0x00, 0x00,
+ 0x10, 0x46, 0x01, 0x00, 0x02, 0x48, 0x00, 0x21,
+ 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x70, 0x47,
+ 0x80, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x2c, 0x20, 0x06, 0x4a, 0xd1, 0xf7, 0xcc, 0xfb,
+ 0x00, 0x22, 0x00, 0x20, 0x3c, 0x00, 0xb4, 0x1f,
+ 0x04, 0x00, 0x04, 0x49, 0xbe, 0xf7, 0xcf, 0xfe,
+ 0x04, 0x49, 0x02, 0x20, 0xc8, 0xf7, 0x0b, 0xfa,
+ 0x80, 0xbd, 0x05, 0x8a, 0x00, 0x00, 0xe9, 0x9b,
+ 0x00, 0x00, 0xb1, 0x8b, 0x00, 0x00, 0x02, 0x48,
+ 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0,
+ 0x70, 0x47, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x2b, 0x20, 0x04, 0x4a, 0xd1, 0xf7,
+ 0xae, 0xfb, 0x00, 0x22, 0x02, 0x20, 0x3c, 0x00,
+ 0xf0, 0x1f, 0x04, 0x00, 0x02, 0x49, 0xbe, 0xf7,
+ 0xb1, 0xfe, 0x80, 0xbd, 0x2d, 0x8a, 0x00, 0x00,
+ 0x8d, 0x8c, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0x07, 0x4a,
+ 0xd1, 0xf7, 0x9c, 0xfb, 0x00, 0x22, 0x01, 0x20,
+ 0x05, 0x49, 0xbe, 0xf7, 0x9f, 0xfe, 0x05, 0x48,
+ 0xcb, 0xf7, 0x56, 0xfa, 0x04, 0x48, 0xcc, 0xf7,
+ 0xf7, 0xf8, 0x80, 0xbd, 0xad, 0x8a, 0x00, 0x00,
+ 0x3c, 0x00, 0x2c, 0x20, 0x04, 0x00, 0x21, 0xe2,
+ 0x00, 0x00, 0xf9, 0xdf, 0x00, 0x00, 0x20, 0x44,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x02, 0x49,
+ 0x00, 0x20, 0x08, 0x60, 0x01, 0x20, 0x48, 0x60,
+ 0x70, 0x47, 0xac, 0x79, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x49, 0x0d, 0x20, 0xd0, 0xf7, 0x9b, 0xf9,
+ 0x80, 0xbd, 0x61, 0x98, 0x00, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x80, 0xb5, 0xcd, 0xf7, 0x77, 0xf9,
+ 0x03, 0x49, 0x3c, 0x00, 0x68, 0x20, 0x04, 0x00,
+ 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, 0xcd, 0xf7,
+ 0x97, 0xf9, 0x80, 0xbd, 0xa8, 0x79, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x29, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x86, 0xb0,
+ 0x0c, 0x48, 0xc3, 0xf7, 0x6d, 0xfd, 0xd6, 0xf7,
+ 0xd3, 0xfb, 0x0b, 0x48, 0x0d, 0x49, 0x00, 0x90,
+ 0x0a, 0x48, 0x04, 0x91, 0x01, 0x90, 0x0a, 0x48,
+ 0x69, 0x46, 0x02, 0x90, 0x3c, 0x00, 0xa4, 0x20,
+ 0x04, 0x00, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90,
+ 0x01, 0x20, 0xc3, 0xf7, 0x00, 0xfd, 0x07, 0x49,
+ 0x03, 0x20, 0xd0, 0xf7, 0x6a, 0xf9, 0x06, 0xb0,
+ 0x80, 0xbd, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x87,
+ 0x01, 0x00, 0x95, 0x87, 0x01, 0x00, 0x55, 0x87,
+ 0x01, 0x00, 0x98, 0xd9, 0x01, 0x00, 0x6d, 0x87,
+ 0x01, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xd6, 0xf7,
+ 0x90, 0xfc, 0x03, 0x49, 0x00, 0x20, 0x3c, 0x00,
+ 0xe0, 0x20, 0x04, 0x00, 0x08, 0x60, 0x48, 0x60,
+ 0x02, 0x48, 0x14, 0x39, 0x48, 0x60, 0x80, 0xbd,
+ 0x90, 0xd9, 0x01, 0x00, 0x3d, 0x82, 0x01, 0x00,
+ 0x70, 0xb5, 0x00, 0x26, 0x09, 0x4c, 0x09, 0x4d,
+ 0x26, 0x60, 0x66, 0x60, 0x44, 0x21, 0x50, 0x35,
+ 0x28, 0x1c, 0xa6, 0x61, 0xbe, 0xf7, 0xc8, 0xf9,
+ 0x14, 0x20, 0xe0, 0x60, 0xe8, 0x63, 0x28, 0x20,
+ 0xe8, 0x61, 0xa0, 0x60, 0x28, 0x64, 0x2e, 0x70,
+ 0x3c, 0x00, 0x1c, 0x21, 0x04, 0x00, 0x70, 0xbd,
+ 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x18, 0x20, 0x04, 0x4a, 0xd1, 0xf7,
+ 0x0c, 0xfb, 0x03, 0x49, 0x08, 0x20, 0xd0, 0xf7,
+ 0x2a, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x15, 0x9c,
+ 0x00, 0x00, 0x69, 0x9c, 0x00, 0x00, 0xfe, 0xb5,
+ 0x26, 0x4d, 0x28, 0x78, 0xc0, 0x07, 0x0c, 0xd4,
+ 0x25, 0x49, 0x00, 0x20, 0x08, 0x70, 0x28, 0x70,
+ 0x24, 0x48, 0x3c, 0x00, 0x58, 0x21, 0x04, 0x00,
+ 0x81, 0x78, 0x49, 0x08, 0x49, 0x00, 0x81, 0x70,
+ 0x81, 0x78, 0x01, 0x22, 0x11, 0x43, 0x81, 0x70,
+ 0x00, 0x24, 0xff, 0x26, 0x1f, 0x4f, 0x01, 0x36,
+ 0x21, 0x1c, 0x01, 0xa8, 0xc6, 0xf7, 0x32, 0xf8,
+ 0x00, 0xab, 0x18, 0x79, 0x01, 0x28, 0x1f, 0xd0,
+ 0x02, 0x28, 0x19, 0xd0, 0x03, 0x28, 0x1e, 0xd1,
+ 0xb8, 0x68, 0x00, 0x21, 0xb0, 0x43, 0xb8, 0x60,
+ 0x78, 0x68, 0x30, 0x43, 0x3c, 0x00, 0x94, 0x21,
+ 0x04, 0x00, 0x78, 0x60, 0x3a, 0x68, 0x32, 0x40,
+ 0xa0, 0x20, 0x05, 0xe0, 0x3b, 0x68, 0x33, 0x40,
+ 0x93, 0x42, 0x01, 0xd0, 0x01, 0x21, 0x01, 0xe0,
+ 0x01, 0x38, 0xf7, 0xd2, 0x78, 0x68, 0xb0, 0x43,
+ 0x78, 0x60, 0x00, 0x29, 0x03, 0xd0, 0x01, 0xa8,
+ 0x00, 0xf0, 0x27, 0xff, 0x02, 0xe0, 0x01, 0xa8,
+ 0x00, 0xf0, 0x45, 0xff, 0x01, 0x34, 0x24, 0x06,
+ 0x24, 0x16, 0x06, 0x2c, 0xcf, 0xdb, 0x3c, 0x00,
+ 0xd0, 0x21, 0x04, 0x00, 0x04, 0x49, 0x02, 0x22,
+ 0x08, 0x78, 0x10, 0x43, 0x08, 0x70, 0x28, 0x70,
+ 0xfe, 0xbd, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00,
+ 0xe0, 0x60, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00,
+ 0x10, 0x00, 0x07, 0x00, 0xb0, 0xb5, 0x00, 0x20,
+ 0x15, 0x23, 0x14, 0x49, 0x01, 0x25, 0x42, 0x00,
+ 0x8d, 0x54, 0x52, 0x18, 0x01, 0x30, 0x0e, 0x28,
+ 0x53, 0x70, 0xf8, 0xd3, 0x0f, 0x48, 0x1c, 0x22,
+ 0x3c, 0x00, 0x0c, 0x22, 0x04, 0x00, 0x1c, 0x38,
+ 0xbe, 0xf7, 0x73, 0xf9, 0x0d, 0x48, 0x0e, 0x21,
+ 0x2a, 0x38, 0xbe, 0xf7, 0x1c, 0xf9, 0x0b, 0x49,
+ 0x00, 0x20, 0x08, 0x60, 0x0b, 0x4c, 0x2a, 0x21,
+ 0x20, 0x1c, 0xbe, 0xf7, 0x14, 0xf9, 0x25, 0x70,
+ 0x0e, 0x20, 0x60, 0x70, 0x17, 0x20, 0xa0, 0x70,
+ 0x07, 0x48, 0x53, 0x21, 0x01, 0x70, 0x45, 0x21,
+ 0x41, 0x70, 0x20, 0x21, 0x81, 0x70, 0xb0, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x48, 0x22, 0x04, 0x00,
+ 0xe6, 0x78, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00,
+ 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00,
+ 0x0c, 0x49, 0x0d, 0x48, 0x00, 0x22, 0x41, 0x60,
+ 0x0c, 0x49, 0x81, 0x60, 0x0c, 0x49, 0xc1, 0x60,
+ 0x0c, 0x49, 0x01, 0x61, 0x0c, 0x49, 0x41, 0x61,
+ 0x0c, 0x49, 0x82, 0x61, 0xc1, 0x61, 0x0c, 0x49,
+ 0x01, 0x62, 0x0c, 0x49, 0x41, 0x62, 0x0c, 0x49,
+ 0x81, 0x62, 0x0c, 0x49, 0x3c, 0x00, 0x84, 0x22,
+ 0x04, 0x00, 0xc1, 0x62, 0xc2, 0x63, 0x70, 0x47,
+ 0x00, 0x00, 0xc9, 0x75, 0x00, 0x00, 0x28, 0x7a,
+ 0x01, 0x00, 0xc1, 0x75, 0x00, 0x00, 0x81, 0x75,
+ 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0xcd, 0x75,
+ 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, 0x91, 0x75,
+ 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x8d, 0x75,
+ 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, 0xb0, 0xb5,
+ 0x0e, 0x48, 0x0e, 0x49, 0x08, 0x60, 0x3c, 0x00,
+ 0xc0, 0x22, 0x04, 0x00, 0x08, 0x31, 0xc0, 0xf7,
+ 0x43, 0xfe, 0x0c, 0x49, 0x00, 0x25, 0x48, 0x60,
+ 0x0b, 0x48, 0x0a, 0x4c, 0x05, 0x60, 0x0b, 0x48,
+ 0x80, 0x3c, 0x05, 0x60, 0x10, 0x20, 0x20, 0x71,
+ 0xe0, 0x70, 0xa0, 0x71, 0x60, 0x71, 0x27, 0x20,
+ 0xc0, 0x43, 0xc3, 0xf7, 0xf7, 0xfb, 0x28, 0x20,
+ 0xc3, 0xf7, 0xfc, 0xfb, 0x25, 0x72, 0xb0, 0xbd,
+ 0xff, 0x3f, 0x00, 0x00, 0x2c, 0x7d, 0x01, 0x00,
+ 0x3c, 0x00, 0xfc, 0x22, 0x04, 0x00, 0x1c, 0x67,
+ 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x80, 0xb5,
+ 0x2c, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xc7, 0xf8,
+ 0x80, 0xbd, 0x3c, 0x7e, 0x01, 0x00, 0x80, 0xb5,
+ 0x38, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xbf, 0xf8,
+ 0x80, 0xbd, 0x68, 0x7e, 0x01, 0x00, 0x80, 0xb5,
+ 0x02, 0x21, 0x0e, 0x20, 0x02, 0x4a, 0xd1, 0xf7,
+ 0x0c, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x21, 0xe0,
+ 0x00, 0x00, 0x3c, 0x00, 0x38, 0x23, 0x04, 0x00,
+ 0x70, 0x47, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0xb0,
+ 0x00, 0x27, 0x00, 0xab, 0x2f, 0x4e, 0x1f, 0x81,
+ 0x00, 0x25, 0x00, 0x24, 0x28, 0x1c, 0xd6, 0xf7,
+ 0xa1, 0xfb, 0x02, 0x2d, 0x03, 0xd1, 0xd6, 0xf7,
+ 0xf5, 0xfa, 0x00, 0x28, 0x0c, 0xd0, 0x01, 0x24,
+ 0x01, 0x2d, 0x03, 0xd1, 0x07, 0x20, 0x00, 0xab,
+ 0x18, 0x71, 0x01, 0xe0, 0x00, 0xab, 0x1f, 0x71,
+ 0x00, 0xab, 0x18, 0x79, 0x3c, 0x00, 0x74, 0x23,
+ 0x04, 0x00, 0xd6, 0xf7, 0x08, 0xfc, 0x00, 0x2c,
+ 0x39, 0xd0, 0x08, 0x21, 0x03, 0xa8, 0xd6, 0xf7,
+ 0xf2, 0xfa, 0x00, 0xab, 0x18, 0x7b, 0xfe, 0x28,
+ 0x31, 0xd1, 0x58, 0x7b, 0x01, 0x28, 0x2a, 0xd1,
+ 0x02, 0x21, 0x02, 0xa8, 0xd6, 0xf7, 0xe7, 0xfa,
+ 0x00, 0xab, 0x18, 0x89, 0x00, 0x28, 0x26, 0xd0,
+ 0x18, 0x89, 0x18, 0x49, 0x88, 0x42, 0x22, 0xd0,
+ 0x19, 0x89, 0x00, 0x20, 0xbf, 0xf7, 0x3c, 0x00,
+ 0xb0, 0x23, 0x04, 0x00, 0x13, 0xf9, 0x04, 0x1c,
+ 0x00, 0x69, 0x00, 0xab, 0x19, 0x89, 0xd6, 0xf7,
+ 0xd5, 0xfa, 0x20, 0x68, 0x00, 0xab, 0x1a, 0x89,
+ 0x01, 0x1c, 0x08, 0x31, 0x08, 0x3a, 0xcb, 0xf7,
+ 0xa1, 0xf9, 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28,
+ 0x04, 0xd0, 0x02, 0x21, 0x94, 0x20, 0x37, 0x60,
+ 0xbe, 0xf7, 0x62, 0xff, 0x20, 0x1c, 0xbf, 0xf7,
+ 0xc7, 0xf8, 0xd4, 0xe7, 0x01, 0x21, 0x94, 0x20,
+ 0x3c, 0x00, 0xec, 0x23, 0x04, 0x00, 0xbe, 0xf7,
+ 0x5a, 0xff, 0xd5, 0xf7, 0x26, 0xff, 0x01, 0x35,
+ 0x2d, 0x06, 0x2d, 0x0e, 0x04, 0x2d, 0xa5, 0xd3,
+ 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x58, 0x57,
+ 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x48,
+ 0x00, 0x21, 0x02, 0x1c, 0x18, 0x32, 0x80, 0xb5,
+ 0x09, 0x4b, 0x02, 0xe0, 0x01, 0x60, 0x83, 0x80,
+ 0x08, 0x30, 0x82, 0x42, 0xfa, 0xd1, 0x04, 0x48,
+ 0x6c, 0x21, 0x3c, 0x00, 0x28, 0x24, 0x04, 0x00,
+ 0x6c, 0x38, 0xbe, 0xf7, 0x37, 0xf8, 0x04, 0x49,
+ 0x02, 0x20, 0xc7, 0xf7, 0xd1, 0xff, 0x80, 0xbd,
+ 0x7c, 0x79, 0x01, 0x00, 0xfc, 0x05, 0x00, 0x00,
+ 0x9d, 0x75, 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x26, 0x20, 0x0d, 0x4a, 0xd1, 0xf7, 0x7c, 0xf9,
+ 0x0c, 0x48, 0xc8, 0xf7, 0x73, 0xff, 0x0c, 0x48,
+ 0xc8, 0xf7, 0x76, 0xff, 0x0b, 0x49, 0x10, 0x20,
+ 0xcf, 0xf7, 0x94, 0xff, 0x3c, 0x00, 0x64, 0x24,
+ 0x04, 0x00, 0x0a, 0x49, 0x0c, 0x20, 0xcf, 0xf7,
+ 0x90, 0xff, 0x09, 0x49, 0x00, 0x20, 0xc7, 0xf7,
+ 0xb2, 0xff, 0xcc, 0xf7, 0x6e, 0xff, 0x07, 0x49,
+ 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0x9d, 0xa6,
+ 0x00, 0x00, 0xa9, 0xa4, 0x00, 0x00, 0x81, 0xa4,
+ 0x00, 0x00, 0x31, 0xa7, 0x00, 0x00, 0xb9, 0x6d,
+ 0x00, 0x00, 0xbd, 0xa6, 0x00, 0x00, 0x0c, 0x79,
+ 0x01, 0x00, 0x02, 0x49, 0x08, 0x78, 0x3c, 0x00,
+ 0xa0, 0x24, 0x04, 0x00, 0x40, 0x08, 0x40, 0x00,
+ 0x08, 0x70, 0x70, 0x47, 0x58, 0x00, 0x07, 0x00,
+ 0x00, 0x21, 0x08, 0x48, 0x80, 0xb5, 0x41, 0x61,
+ 0x81, 0x61, 0x01, 0x70, 0x41, 0x70, 0x41, 0x60,
+ 0x81, 0x60, 0x14, 0x22, 0xc2, 0x60, 0x01, 0x61,
+ 0x42, 0x62, 0xc1, 0x61, 0xff, 0xf7, 0x04, 0xf8,
+ 0x80, 0xbd, 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x1d, 0x20, 0x04, 0x4a,
+ 0x3c, 0x00, 0xdc, 0x24, 0x04, 0x00, 0xd1, 0xf7,
+ 0x34, 0xf9, 0x03, 0x49, 0x08, 0x20, 0xcf, 0xf7,
+ 0x52, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x11, 0xe3,
+ 0x00, 0x00, 0x09, 0xe4, 0x00, 0x00, 0x80, 0xb5,
+ 0x01, 0x21, 0x25, 0x20, 0x0a, 0x4a, 0xd1, 0xf7,
+ 0x24, 0xf9, 0xcc, 0xf7, 0x28, 0xff, 0x08, 0x49,
+ 0x08, 0x62, 0x08, 0x49, 0x01, 0x20, 0xcf, 0xf7,
+ 0x3e, 0xff, 0x07, 0x49, 0x02, 0x20, 0xcf, 0xf7,
+ 0x3a, 0xff, 0x3c, 0x00, 0x18, 0x25, 0x04, 0x00,
+ 0xfe, 0xf7, 0xe6, 0xff, 0x05, 0x48, 0xc1, 0xf7,
+ 0xe1, 0xf9, 0x80, 0xbd, 0x29, 0xa9, 0x00, 0x00,
+ 0x1c, 0x75, 0x01, 0x00, 0xa1, 0xaa, 0x00, 0x00,
+ 0x2d, 0x19, 0x00, 0x00, 0x45, 0xa8, 0x00, 0x00,
+ 0x10, 0xb5, 0x06, 0x4c, 0x0c, 0x22, 0x22, 0x70,
+ 0xa0, 0x18, 0x05, 0x49, 0xbd, 0xf7, 0xd8, 0xff,
+ 0x00, 0x20, 0xc8, 0xf7, 0x85, 0xfb, 0x01, 0x20,
+ 0xa0, 0x60, 0x10, 0xbd, 0x3c, 0x00, 0x54, 0x25,
+ 0x04, 0x00, 0xa4, 0x69, 0x01, 0x00, 0x90, 0x57,
+ 0x01, 0x00, 0xb0, 0xb5, 0x1f, 0x4c, 0x00, 0x25,
+ 0x65, 0x80, 0x01, 0x20, 0x20, 0x70, 0x0a, 0x20,
+ 0xa0, 0x80, 0x90, 0x20, 0xe0, 0x80, 0x30, 0x20,
+ 0x20, 0x81, 0x90, 0x20, 0x60, 0x81, 0x30, 0x20,
+ 0xa0, 0x81, 0x17, 0x48, 0x04, 0x22, 0x07, 0x21,
+ 0x12, 0x30, 0xbe, 0xf7, 0x4c, 0xf8, 0x14, 0x48,
+ 0x04, 0x22, 0x05, 0x21, 0x16, 0x30, 0x3c, 0x00,
+ 0x90, 0x25, 0x04, 0x00, 0xbe, 0xf7, 0x46, 0xf8,
+ 0x12, 0x48, 0x11, 0x4a, 0xe0, 0x81, 0x20, 0x82,
+ 0x70, 0x32, 0x15, 0x70, 0x55, 0x70, 0x00, 0x20,
+ 0x3c, 0x23, 0x41, 0x01, 0x43, 0x43, 0x89, 0x18,
+ 0xf4, 0x31, 0x9b, 0x18, 0x01, 0x30, 0x04, 0x28,
+ 0x59, 0x60, 0xf5, 0xdb, 0x08, 0x48, 0x06, 0x22,
+ 0x1a, 0x30, 0x09, 0x49, 0xbd, 0xf7, 0x9a, 0xff,
+ 0x07, 0x48, 0x05, 0x4c, 0x0c, 0x30, 0x0f, 0xc8,
+ 0x3c, 0x00, 0xcc, 0x25, 0x04, 0x00, 0x20, 0x34,
+ 0x0f, 0xc4, 0x20, 0x21, 0x20, 0x1c, 0xbd, 0xf7,
+ 0x62, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0x60,
+ 0x01, 0x00, 0x2c, 0x09, 0x00, 0x00, 0x58, 0x40,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x07, 0x48,
+ 0x10, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x08, 0xd0,
+ 0x06, 0x48, 0xbe, 0xf7, 0x9c, 0xfe, 0x04, 0x1c,
+ 0xff, 0xf7, 0x9d, 0xfe, 0x20, 0x1c, 0xbe, 0xf7,
+ 0x96, 0xfe, 0x3c, 0x00, 0x08, 0x26, 0x04, 0x00,
+ 0x10, 0xbd, 0x00, 0x00, 0x58, 0x57, 0x01, 0x00,
+ 0xb5, 0xad, 0x00, 0x00, 0x04, 0x49, 0x80, 0xb5,
+ 0x00, 0x20, 0x88, 0x70, 0x02, 0x21, 0x20, 0x20,
+ 0x02, 0x4a, 0xd1, 0xf7, 0x91, 0xf8, 0x80, 0xbd,
+ 0xb4, 0x79, 0x01, 0x00, 0x25, 0xb5, 0x00, 0x00,
+ 0x80, 0xb5, 0xcc, 0xf7, 0x8f, 0xfe, 0x01, 0x49,
+ 0x48, 0x61, 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x18, 0x21, 0x3c, 0x00, 0x44, 0x26,
+ 0x04, 0x00, 0x14, 0x48, 0xbd, 0xf7, 0x29, 0xff,
+ 0x14, 0x48, 0x01, 0x21, 0x01, 0x70, 0x00, 0x21,
+ 0xc1, 0x60, 0x41, 0x70, 0x01, 0x61, 0x00, 0xf0,
+ 0x02, 0xf9, 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0,
+ 0x1e, 0xf8, 0x00, 0xf0, 0xba, 0xf9, 0x00, 0xf0,
+ 0xcc, 0xf9, 0x00, 0xf0, 0x20, 0xf9, 0x00, 0xf0,
+ 0x64, 0xf9, 0x00, 0xf0, 0xce, 0xf9, 0x00, 0xf0,
+ 0xfc, 0xf8, 0x00, 0xf0, 0x82, 0xf9, 0x3c, 0x00,
+ 0x80, 0x26, 0x04, 0x00, 0x00, 0xf0, 0x28, 0xf8,
+ 0x00, 0xf0, 0x6e, 0xf8, 0x00, 0xf0, 0x4a, 0xf8,
+ 0xff, 0xf7, 0xc2, 0xff, 0x00, 0xf0, 0x72, 0xf9,
+ 0x80, 0xbd, 0x00, 0x00, 0x40, 0x7c, 0x01, 0x00,
+ 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c,
+ 0x00, 0x25, 0x08, 0x48, 0x25, 0x77, 0x20, 0x60,
+ 0xce, 0xf7, 0xf0, 0xfd, 0x00, 0x20, 0xe5, 0x62,
+ 0xd0, 0xf7, 0xd0, 0xfa, 0x21, 0x1f, 0x08, 0x80,
+ 0x3c, 0x00, 0xbc, 0x26, 0x04, 0x00, 0xd0, 0xf7,
+ 0x6c, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79,
+ 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x80, 0xb5,
+ 0xcc, 0xf7, 0xc1, 0xfc, 0x80, 0xbd, 0x05, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x08, 0x70, 0x48, 0x70,
+ 0x03, 0x48, 0x04, 0x49, 0x03, 0x4a, 0x08, 0x30,
+ 0xcc, 0xf7, 0x27, 0xfe, 0x80, 0xbd, 0x2c, 0x63,
+ 0x01, 0x00, 0xed, 0xbc, 0x00, 0x00, 0x4d, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x26, 0x04, 0x00,
+ 0x80, 0xb5, 0xcc, 0xf7, 0x2b, 0xfe, 0x05, 0x49,
+ 0x48, 0x60, 0x01, 0x1c, 0x04, 0x48, 0xcc, 0xf7,
+ 0x4b, 0xfe, 0x04, 0x49, 0x03, 0x20, 0xcf, 0xf7,
+ 0x3d, 0xfe, 0x80, 0xbd, 0x2c, 0x63, 0x01, 0x00,
+ 0xc4, 0x60, 0x01, 0x00, 0xc1, 0xbc, 0x00, 0x00,
+ 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x08, 0xc0, 0x02, 0x49, 0x10, 0x38,
+ 0x01, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x34, 0x27,
+ 0x04, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x1c, 0xe6,
+ 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x09, 0xfe,
+ 0x05, 0x49, 0x05, 0x4a, 0x48, 0x60, 0x02, 0x21,
+ 0x24, 0x20, 0xd0, 0xf7, 0xfc, 0xff, 0x03, 0x48,
+ 0xc9, 0xf7, 0x6b, 0xfd, 0x80, 0xbd, 0x04, 0x7a,
+ 0x01, 0x00, 0x69, 0xbe, 0x00, 0x00, 0x71, 0xeb,
+ 0x00, 0x00, 0x10, 0xb5, 0x04, 0x4c, 0x14, 0x21,
+ 0x20, 0x1c, 0xbd, 0xf7, 0x96, 0xfe, 0x3c, 0x00,
+ 0x70, 0x27, 0x04, 0x00, 0x02, 0x48, 0x20, 0x60,
+ 0x10, 0xbd, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00,
+ 0xec, 0xe5, 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7,
+ 0xe7, 0xfd, 0x07, 0x49, 0x07, 0x4a, 0x48, 0x60,
+ 0x02, 0x21, 0x1f, 0x20, 0xd0, 0xf7, 0xda, 0xff,
+ 0x05, 0x49, 0x01, 0x20, 0x08, 0x60, 0x05, 0x49,
+ 0x0c, 0x20, 0xcf, 0xf7, 0xf5, 0xfd, 0x80, 0xbd,
+ 0x14, 0x7a, 0x01, 0x00, 0xd5, 0xbf, 0x00, 0x00,
+ 0x3c, 0x00, 0xac, 0x27, 0x04, 0x00, 0x80, 0x5a,
+ 0x01, 0x00, 0x85, 0xff, 0x00, 0x00, 0x80, 0xb5,
+ 0xff, 0xf7, 0x4f, 0xfd, 0x01, 0x21, 0x21, 0x20,
+ 0x02, 0x4a, 0xd0, 0xf7, 0xc2, 0xff, 0x80, 0xbd,
+ 0x00, 0x00, 0xc9, 0xc1, 0x00, 0x00, 0x80, 0xb5,
+ 0xcc, 0xf7, 0xc1, 0xfd, 0x02, 0x49, 0x08, 0x63,
+ 0xc9, 0xf7, 0x57, 0xfd, 0x80, 0xbd, 0x28, 0x7a,
+ 0x01, 0x00, 0x10, 0xb5, 0xcc, 0xf7, 0xb7, 0xfd,
+ 0x16, 0x4c, 0x3c, 0x00, 0xe8, 0x27, 0x04, 0x00,
+ 0x20, 0x61, 0xcc, 0xf7, 0xb3, 0xfd, 0x60, 0x61,
+ 0x14, 0x48, 0x15, 0x49, 0x08, 0x60, 0x16, 0x49,
+ 0x14, 0x48, 0x08, 0x60, 0xcc, 0xf7, 0xaa, 0xfd,
+ 0x14, 0x49, 0x08, 0x60, 0x00, 0xf0, 0x34, 0xf8,
+ 0xff, 0xf7, 0xe0, 0xff, 0xff, 0xf7, 0x5e, 0xff,
+ 0x00, 0xf0, 0x04, 0xf9, 0x00, 0xf0, 0x8e, 0xf8,
+ 0xff, 0xf7, 0x6e, 0xff, 0xff, 0xf7, 0xb0, 0xff,
+ 0xff, 0xf7, 0x8c, 0xff, 0x3c, 0x00, 0x24, 0x28,
+ 0x04, 0x00, 0xff, 0xf7, 0x04, 0xff, 0x00, 0xf0,
+ 0xaa, 0xf8, 0x0a, 0x48, 0xbf, 0xf7, 0xbd, 0xff,
+ 0xc9, 0xf7, 0xbb, 0xfd, 0x09, 0x49, 0x00, 0x20,
+ 0xcf, 0xf7, 0xa7, 0xfd, 0x10, 0xbd, 0x40, 0x7c,
+ 0x01, 0x00, 0x7d, 0xb7, 0x00, 0x00, 0x18, 0x7e,
+ 0x01, 0x00, 0xbd, 0xb8, 0x00, 0x00, 0x1c, 0x7e,
+ 0x01, 0x00, 0x20, 0x7e, 0x01, 0x00, 0xb9, 0xba,
+ 0x00, 0x00, 0x81, 0x24, 0x01, 0x00, 0x3c, 0x00,
+ 0x60, 0x28, 0x04, 0x00, 0x80, 0xb5, 0x38, 0x21,
+ 0x01, 0x48, 0xbd, 0xf7, 0x19, 0xfe, 0x80, 0xbd,
+ 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, 0x00, 0x20,
+ 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, 0xe0, 0x60,
+ 0x0a, 0x20, 0x20, 0x81, 0x28, 0x1c, 0xc8, 0xf7,
+ 0x3f, 0xfd, 0x28, 0x1c, 0xc8, 0xf7, 0x3a, 0xfd,
+ 0x08, 0x3d, 0x68, 0x60, 0x04, 0x48, 0xc9, 0xf7,
+ 0x3c, 0x00, 0x9c, 0x28, 0x04, 0x00, 0x1b, 0xfd,
+ 0x20, 0x1c, 0xc0, 0xf7, 0x6e, 0xfa, 0x28, 0x80,
+ 0xb0, 0xbd, 0xb8, 0x7a, 0x01, 0x00, 0xd5, 0x33,
+ 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x1d, 0x4c,
+ 0x00, 0x20, 0x0c, 0x21, 0x41, 0x43, 0x82, 0x00,
+ 0x01, 0x30, 0x09, 0x19, 0x08, 0x31, 0x00, 0x06,
+ 0x00, 0x0e, 0x04, 0x28, 0xb1, 0x50, 0xf4, 0xd3,
+ 0x18, 0x48, 0x0c, 0x38, 0x30, 0x61, 0xce, 0xf7,
+ 0xf4, 0xf9, 0x3c, 0x00, 0xd8, 0x28, 0x04, 0x00,
+ 0x14, 0x4c, 0xa0, 0x78, 0x00, 0x09, 0x00, 0x01,
+ 0xa0, 0x70, 0x00, 0x27, 0xe7, 0x70, 0x67, 0x70,
+ 0x00, 0x24, 0xa5, 0x00, 0x70, 0x59, 0x07, 0x70,
+ 0x20, 0x1c, 0xbe, 0xf7, 0x53, 0xf9, 0x71, 0x59,
+ 0x08, 0x71, 0x00, 0x21, 0x20, 0x1c, 0xce, 0xf7,
+ 0x7d, 0xf9, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e,
+ 0x04, 0x2c, 0xee, 0xd3, 0x07, 0x4c, 0x20, 0x78,
+ 0x00, 0x09, 0x00, 0x01, 0x3c, 0x00, 0x14, 0x29,
+ 0x04, 0x00, 0x0a, 0x30, 0x20, 0x70, 0x20, 0x78,
+ 0xf0, 0x21, 0x88, 0x43, 0x30, 0x30, 0x20, 0x70,
+ 0xa0, 0x78, 0x0f, 0x21, 0x08, 0x43, 0xa0, 0x70,
+ 0xf8, 0xbd, 0x00, 0x50, 0x07, 0x00, 0x10, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x9f, 0xfb,
+ 0x80, 0xbd, 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d,
+ 0x00, 0x20, 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60,
+ 0xe0, 0x60, 0x0a, 0x20, 0x20, 0x81, 0x3c, 0x00,
+ 0x50, 0x29, 0x04, 0x00, 0x28, 0x1c, 0xc8, 0xf7,
+ 0xe1, 0xfc, 0x28, 0x1c, 0xc8, 0xf7, 0xd4, 0xfc,
+ 0x08, 0x3d, 0x68, 0x60, 0x20, 0x1c, 0xc0, 0xf7,
+ 0x0d, 0xfa, 0x28, 0x80, 0x02, 0x48, 0xc9, 0xf7,
+ 0x9b, 0xfc, 0xb0, 0xbd, 0x2c, 0x7b, 0x01, 0x00,
+ 0x49, 0x00, 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7,
+ 0x2f, 0xf8, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00,
+ 0xb0, 0xb5, 0x12, 0x4d, 0x3c, 0x21, 0x28, 0x1c,
+ 0x3c, 0x00, 0x8c, 0x29, 0x04, 0x00, 0xbd, 0xf7,
+ 0x86, 0xfd, 0x0f, 0x48, 0x28, 0x21, 0x3c, 0x30,
+ 0xbd, 0xf7, 0x81, 0xfd, 0x0d, 0x48, 0x00, 0x21,
+ 0x14, 0x38, 0x01, 0x61, 0xc1, 0x60, 0xff, 0x21,
+ 0x01, 0x70, 0x41, 0x70, 0x0a, 0x49, 0x0a, 0x4a,
+ 0x41, 0x60, 0x01, 0x21, 0x0c, 0x20, 0xd0, 0xf7,
+ 0xc8, 0xfe, 0x2c, 0x1c, 0x30, 0x34, 0x0c, 0x3d,
+ 0x00, 0x20, 0xd0, 0xf7, 0x4a, 0xf9, 0x20, 0x80,
+ 0x0c, 0x3c, 0x3c, 0x00, 0xc8, 0x29, 0x04, 0x00,
+ 0xac, 0x42, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00,
+ 0x60, 0x7b, 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00,
+ 0x35, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x00, 0x20,
+ 0x0c, 0x22, 0x42, 0x43, 0x52, 0x18, 0x10, 0x71,
+ 0x01, 0x30, 0x05, 0x28, 0xf8, 0xdb, 0x04, 0x48,
+ 0x00, 0x21, 0x08, 0x38, 0x01, 0x70, 0x41, 0x60,
+ 0xff, 0x21, 0x41, 0x70, 0x70, 0x47, 0x00, 0x00,
+ 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x04, 0x2a,
+ 0x04, 0x00, 0x80, 0xb5, 0x78, 0x21, 0x01, 0x48,
+ 0xbd, 0xf7, 0x47, 0xfd, 0x80, 0xbd, 0xc4, 0x7b,
+ 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, 0x97, 0xfa,
+ 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5,
+ 0x0b, 0x4c, 0xff, 0x21, 0x05, 0x31, 0x20, 0x1c,
+ 0xbd, 0xf7, 0x37, 0xfd, 0x09, 0x48, 0xf0, 0x21,
+ 0x08, 0x51, 0x20, 0x1c, 0x40, 0x30, 0xc5, 0xf7,
+ 0x8e, 0xf9, 0x6c, 0x21, 0x06, 0x48, 0x3c, 0x00,
+ 0x40, 0x2a, 0x04, 0x00, 0xbd, 0xf7, 0x2c, 0xfd,
+ 0x04, 0x48, 0xc0, 0x21, 0x6c, 0x30, 0xbd, 0xf7,
+ 0x27, 0xfd, 0x10, 0xbd, 0xc4, 0x69, 0x01, 0x00,
+ 0xb0, 0xd9, 0x01, 0x00, 0xc8, 0x6a, 0x01, 0x00,
+ 0xb0, 0xb5, 0x0b, 0x4d, 0x00, 0x24, 0x1c, 0x20,
+ 0x60, 0x43, 0x40, 0x19, 0x6c, 0x30, 0xc3, 0xf7,
+ 0x0f, 0xfe, 0x01, 0x34, 0x04, 0x2c, 0xf6, 0xdb,
+ 0xcc, 0xf7, 0x6e, 0xfc, 0xa8, 0x63, 0xc7, 0xf7,
+ 0x3c, 0x00, 0x7c, 0x2a, 0x04, 0x00, 0x75, 0xf9,
+ 0x04, 0x48, 0xc9, 0xf7, 0x1c, 0xfc, 0x03, 0x48,
+ 0xcf, 0xf7, 0x03, 0xfa, 0xb0, 0xbd, 0xc4, 0x69,
+ 0x01, 0x00, 0xfd, 0x80, 0x00, 0x00, 0xe1, 0x22,
+ 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x20,
+ 0x20, 0x80, 0x03, 0x48, 0x06, 0x21, 0x08, 0x30,
+ 0xbd, 0xf7, 0xd5, 0xfc, 0x14, 0x20, 0x60, 0x60,
+ 0x10, 0xbd, 0x98, 0x7c, 0x01, 0x00, 0x10, 0xb5,
+ 0x08, 0x4c, 0x3c, 0x00, 0xb8, 0x2a, 0x04, 0x00,
+ 0x00, 0x20, 0x20, 0x80, 0x60, 0x80, 0x06, 0x48,
+ 0x06, 0x21, 0x0c, 0x30, 0xbd, 0xf7, 0xc6, 0xfc,
+ 0x03, 0x48, 0x06, 0x21, 0x12, 0x30, 0xbd, 0xf7,
+ 0xc1, 0xfc, 0x14, 0x20, 0xa0, 0x60, 0x10, 0xbd,
+ 0x58, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x0d, 0x20, 0x05, 0x4a,
+ 0xd0, 0xf7, 0x2e, 0xfe, 0x04, 0x48, 0xc8, 0xf7,
+ 0x1f, 0xfc, 0x04, 0x48, 0x3c, 0x00, 0xf4, 0x2a,
+ 0x04, 0x00, 0xca, 0xf7, 0x44, 0xfc, 0x80, 0xbd,
+ 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x51, 0xb1,
+ 0x00, 0x00, 0x09, 0xb1, 0x00, 0x00, 0x08, 0x49,
+ 0x80, 0xb5, 0x00, 0x20, 0x08, 0x60, 0xff, 0xf7,
+ 0xd0, 0xff, 0xff, 0xf7, 0xc0, 0xff, 0xff, 0xf7,
+ 0x04, 0xfc, 0x00, 0xf0, 0x4a, 0xf8, 0xff, 0xf7,
+ 0x0a, 0xfc, 0x00, 0xf0, 0x3c, 0xf8, 0x80, 0xbd,
+ 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x3c, 0x00,
+ 0x30, 0x2b, 0x04, 0x00, 0x80, 0xb5, 0x00, 0xf0,
+ 0x29, 0xf8, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0xf0,
+ 0x51, 0xf8, 0x00, 0xf0, 0x31, 0xf8, 0x80, 0xbd,
+ 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x80, 0xb5, 0xff, 0x21, 0x89, 0x31, 0x02, 0x48,
+ 0xbd, 0xf7, 0xa2, 0xfc, 0x80, 0xbd, 0x00, 0x00,
+ 0xdc, 0x71, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x49,
+ 0x08, 0x20, 0xcf, 0xf7, 0x11, 0xfc, 0x80, 0xbd,
+ 0x3c, 0x00, 0x6c, 0x2b, 0x04, 0x00, 0x59, 0xd9,
+ 0x00, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7,
+ 0x4c, 0xf9, 0x02, 0x49, 0x48, 0x80, 0x80, 0xbd,
+ 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x98, 0x7c,
+ 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7,
+ 0x40, 0xf9, 0x02, 0x49, 0x88, 0x80, 0x80, 0xbd,
+ 0x00, 0x00, 0xd5, 0x23, 0x00, 0x00, 0x58, 0x7c,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5,
+ 0x02, 0x48, 0x3c, 0x00, 0xa8, 0x2b, 0x04, 0x00,
+ 0xca, 0xf7, 0xe4, 0xfb, 0x80, 0xbd, 0x00, 0x00,
+ 0x71, 0xe0, 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7,
+ 0xa5, 0xfb, 0x02, 0x21, 0x0f, 0x20, 0x06, 0x4a,
+ 0xd0, 0xf7, 0xc2, 0xfd, 0x14, 0x21, 0x05, 0x48,
+ 0xbd, 0xf7, 0x68, 0xfc, 0x03, 0x48, 0x78, 0x21,
+ 0x14, 0x30, 0xbd, 0xf7, 0x63, 0xfc, 0x80, 0xbd,
+ 0x35, 0xe2, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00,
+ 0x80, 0xb5, 0xcc, 0xf7, 0x3c, 0x00, 0xe4, 0x2b,
+ 0x04, 0x00, 0xb7, 0xfb, 0x05, 0x49, 0x08, 0x61,
+ 0x05, 0x49, 0x0e, 0x20, 0xcf, 0xf7, 0xcd, 0xfb,
+ 0x04, 0x49, 0x08, 0x20, 0xcf, 0xf7, 0xc9, 0xfb,
+ 0x80, 0xbd, 0xec, 0x65, 0x01, 0x00, 0x01, 0x02,
+ 0x01, 0x00, 0xc1, 0x2e, 0x00, 0x00, 0x01, 0x49,
+ 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x40, 0xd9,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49,
+ 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x3c, 0x00,
+ 0x20, 0x2c, 0x04, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x07, 0x48, 0xc8, 0xf7, 0xf2, 0xff,
+ 0x06, 0x49, 0x48, 0x60, 0x06, 0x48, 0xc0, 0xf7,
+ 0x07, 0xfb, 0x06, 0x48, 0xc0, 0xf7, 0x86, 0xfb,
+ 0x05, 0x48, 0xc9, 0xf7, 0xa3, 0xfa, 0x80, 0xbd,
+ 0xa9, 0xe4, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00,
+ 0xb9, 0xe4, 0x00, 0x00, 0x85, 0x2e, 0x00, 0x00,
+ 0x81, 0xe4, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5,
+ 0x3c, 0x00, 0x5c, 0x2c, 0x04, 0x00, 0x00, 0x21,
+ 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0,
+ 0x10, 0x38, 0xc8, 0x21, 0x01, 0x60, 0x00, 0x21,
+ 0x0c, 0x38, 0x02, 0x4a, 0xcc, 0xf7, 0x61, 0xfb,
+ 0x80, 0xbd, 0xd0, 0x60, 0x01, 0x00, 0xfd, 0xe5,
+ 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x67, 0xfb,
+ 0x04, 0x49, 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48,
+ 0x04, 0x30, 0xcc, 0xf7, 0x86, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0x3c, 0x00, 0x98, 0x2c, 0x04, 0x00,
+ 0xc0, 0x60, 0x01, 0x00, 0x09, 0x48, 0x80, 0xb5,
+ 0x0a, 0x21, 0x01, 0x70, 0x41, 0x70, 0x08, 0x49,
+ 0x08, 0x4a, 0x81, 0x60, 0x00, 0x21, 0xc1, 0x60,
+ 0x52, 0x79, 0x82, 0x70, 0x01, 0x61, 0x41, 0x61,
+ 0x28, 0x21, 0x18, 0x30, 0xbd, 0xf7, 0xee, 0xfb,
+ 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00,
+ 0xa0, 0x86, 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00,
+ 0xf8, 0xb5, 0x0f, 0x49, 0x3c, 0x00, 0xd4, 0x2c,
+ 0x04, 0x00, 0x0f, 0x48, 0x0d, 0x88, 0x4f, 0x88,
+ 0x06, 0x79, 0x00, 0x24, 0x30, 0x1b, 0x68, 0x43,
+ 0x68, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18,
+ 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0x0f, 0xfd,
+ 0x61, 0x00, 0x09, 0x4a, 0xa6, 0x42, 0x50, 0x52,
+ 0x00, 0xd1, 0x3d, 0x1c, 0x01, 0x34, 0x24, 0x06,
+ 0x24, 0x0e, 0x10, 0x2c, 0xea, 0xd3, 0x05, 0x49,
+ 0x01, 0x20, 0x08, 0x61, 0xf8, 0xbd, 0x3c, 0x00,
+ 0x10, 0x2d, 0x04, 0x00, 0xf6, 0x59, 0x01, 0x00,
+ 0x0c, 0x5a, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00,
+ 0x12, 0x5a, 0x01, 0x00, 0x7c, 0x78, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfa, 0x02, 0x49,
+ 0x01, 0x20, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00,
+ 0x7c, 0x78, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c,
+ 0x08, 0x1c, 0x0f, 0x49, 0x49, 0x79, 0x00, 0x29,
+ 0x01, 0xd1, 0x0e, 0x4b, 0x00, 0xe0, 0x0e, 0x4b,
+ 0x3c, 0x00, 0x4c, 0x2d, 0x04, 0x00, 0x00, 0x2c,
+ 0x07, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x0a, 0x1c,
+ 0x01, 0x24, 0x19, 0x1c, 0xbd, 0xf7, 0xcd, 0xfb,
+ 0x0a, 0xe0, 0x01, 0x24, 0x01, 0x1c, 0x18, 0x1c,
+ 0x12, 0x88, 0xbd, 0xf7, 0xc6, 0xfb, 0x00, 0xf0,
+ 0xc4, 0xfa, 0x05, 0x49, 0x01, 0x20, 0x08, 0x61,
+ 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x0c, 0x5a,
+ 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, 0xfa, 0x59,
+ 0x01, 0x00, 0x3c, 0x00, 0x88, 0x2d, 0x04, 0x00,
+ 0x7c, 0x78, 0x01, 0x00, 0x0d, 0x48, 0x8c, 0xb5,
+ 0xc1, 0x88, 0x00, 0xab, 0x0c, 0x4a, 0x99, 0x80,
+ 0x01, 0x89, 0x04, 0x20, 0xd9, 0x80, 0x18, 0x80,
+ 0x02, 0x21, 0x13, 0x20, 0xd0, 0xf7, 0xd0, 0xfc,
+ 0x00, 0xf0, 0xa6, 0xfa, 0x07, 0x49, 0x01, 0x20,
+ 0x08, 0x61, 0xff, 0xf7, 0x8d, 0xff, 0x6a, 0x46,
+ 0x01, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xbc, 0xff,
+ 0x8c, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xc4, 0x2d,
+ 0x04, 0x00, 0xf4, 0x59, 0x01, 0x00, 0x95, 0xf9,
+ 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, 0xf8, 0xb5,
+ 0x13, 0x4e, 0x01, 0x25, 0xb5, 0x70, 0x05, 0x20,
+ 0xf0, 0x70, 0x11, 0x49, 0x10, 0x48, 0x0e, 0xc9,
+ 0x2c, 0x30, 0x0e, 0xc0, 0x00, 0x20, 0x70, 0x61,
+ 0x0f, 0x48, 0x0f, 0x49, 0x10, 0x4f, 0x00, 0x24,
+ 0x48, 0x60, 0xa0, 0x00, 0x39, 0x58, 0x20, 0x1c,
+ 0xd1, 0xf7, 0xd7, 0xf8, 0x01, 0x34, 0x3c, 0x00,
+ 0x00, 0x2e, 0x04, 0x00, 0x10, 0x2c, 0xf7, 0xd3,
+ 0x06, 0x4c, 0x0b, 0x4a, 0x20, 0x34, 0x20, 0x1c,
+ 0x0a, 0x49, 0xb5, 0x60, 0xcc, 0xf7, 0x92, 0xfa,
+ 0xcc, 0xf7, 0x9e, 0xfa, 0x30, 0x61, 0x20, 0x60,
+ 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00,
+ 0xb0, 0x58, 0x01, 0x00, 0x04, 0x18, 0x02, 0x00,
+ 0x60, 0x00, 0x07, 0x00, 0xd4, 0x44, 0x01, 0x00,
+ 0x45, 0xfa, 0x00, 0x00, 0x71, 0xfa, 0x00, 0x00,
+ 0x3c, 0x00, 0x3c, 0x2e, 0x04, 0x00, 0x0c, 0x49,
+ 0x30, 0xb5, 0x00, 0x23, 0xcc, 0x56, 0x0b, 0x4b,
+ 0x00, 0x20, 0xf0, 0x25, 0x1a, 0x5c, 0x11, 0x07,
+ 0x09, 0x0f, 0x09, 0x19, 0x0f, 0x29, 0x01, 0xdd,
+ 0x0f, 0x21, 0x02, 0xe0, 0x00, 0x29, 0x00, 0xda,
+ 0x00, 0x21, 0x2a, 0x40, 0x51, 0x18, 0x19, 0x54,
+ 0x01, 0x30, 0x0e, 0x28, 0xee, 0xdb, 0x30, 0xbd,
+ 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xc0, 0x58,
+ 0x01, 0x00, 0x3c, 0x00, 0x78, 0x2e, 0x04, 0x00,
+ 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, 0x08, 0xd0,
+ 0x01, 0x24, 0x14, 0x80, 0x05, 0x20, 0xcc, 0xf7,
+ 0xb5, 0xf8, 0x80, 0x03, 0xc0, 0x0f, 0x28, 0x70,
+ 0x07, 0xe0, 0x28, 0x78, 0x01, 0x22, 0x41, 0x04,
+ 0x52, 0x04, 0x05, 0x20, 0xd0, 0xf7, 0xae, 0xfd,
+ 0x01, 0x24, 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00,
+ 0x98, 0xb5, 0x05, 0x4c, 0x60, 0x68, 0xcc, 0xf7,
+ 0xf5, 0xfd, 0x00, 0x90, 0x3c, 0x00, 0xb4, 0x2e,
+ 0x04, 0x00, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80,
+ 0xce, 0xf7, 0xfb, 0xff, 0x98, 0xbd, 0xa0, 0x58,
+ 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c,
+ 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0,
+ 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24,
+ 0x29, 0x1c, 0xbd, 0xf7, 0x0c, 0xfb, 0x22, 0xe0,
+ 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c,
+ 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0x3c, 0x00,
+ 0xf0, 0x2e, 0x04, 0x00, 0x03, 0xfb, 0x00, 0x98,
+ 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, 0x00, 0xe0,
+ 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20,
+ 0xbd, 0xf7, 0x98, 0xfb, 0x01, 0x06, 0x09, 0x16,
+ 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7,
+ 0x85, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1,
+ 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7,
+ 0xe9, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd,
+ 0x3c, 0x00, 0x2c, 0x2f, 0x04, 0x00, 0xda, 0x59,
+ 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c,
+ 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0,
+ 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24,
+ 0x29, 0x1c, 0xbd, 0xf7, 0xd6, 0xfa, 0x22, 0xe0,
+ 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c,
+ 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0xcd, 0xfa,
+ 0x00, 0x98, 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30,
+ 0x00, 0xe0, 0x3c, 0x00, 0x68, 0x2f, 0x04, 0x00,
+ 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20,
+ 0xbd, 0xf7, 0x62, 0xfb, 0x01, 0x06, 0x09, 0x16,
+ 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7,
+ 0x4f, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1,
+ 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7,
+ 0xb3, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd,
+ 0xcc, 0x59, 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5,
+ 0x01, 0x78, 0x00, 0x20, 0x3c, 0x00, 0xa4, 0x2f,
+ 0x04, 0x00, 0xcc, 0xf7, 0xb4, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x02, 0x49, 0x03, 0x20, 0x08, 0x70,
+ 0x00, 0x20, 0x48, 0x70, 0x70, 0x47, 0x9c, 0x73,
+ 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x11, 0x20,
+ 0x02, 0x4a, 0xd0, 0xf7, 0xbc, 0xfb, 0x80, 0xbd,
+ 0x00, 0x00, 0xa1, 0xfe, 0x00, 0x00, 0xf0, 0xb5,
+ 0x0b, 0x4f, 0x1c, 0x1c, 0x00, 0x23, 0x3c, 0x00,
+ 0xe0, 0x2f, 0x04, 0x00, 0xfd, 0x56, 0x2b, 0x1c,
+ 0x06, 0x2d, 0x01, 0xd1, 0x01, 0x20, 0xf0, 0xbd,
+ 0x06, 0x4e, 0x05, 0x1c, 0xd8, 0x00, 0x34, 0x36,
+ 0x35, 0x54, 0x80, 0x19, 0x41, 0x70, 0x82, 0x70,
+ 0x44, 0x60, 0x58, 0x1c, 0x38, 0x70, 0x00, 0x20,
+ 0xf0, 0xbd, 0x00, 0x00, 0x98, 0x5a, 0x01, 0x00,
+ 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x48, 0x00, 0xf0,
+ 0x21, 0xf9, 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0,
+ 0x3c, 0x00, 0x1c, 0x30, 0x04, 0x00, 0x01, 0x23,
+ 0xe0, 0x56, 0x06, 0x21, 0x00, 0xf0, 0xcd, 0xf8,
+ 0x08, 0x4a, 0x01, 0x21, 0x10, 0x78, 0x08, 0x43,
+ 0x07, 0x49, 0x08, 0x70, 0x20, 0x23, 0x18, 0x43,
+ 0x08, 0x70, 0x80, 0x23, 0x18, 0x43, 0x10, 0x70,
+ 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x91, 0x9b,
+ 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, 0x04, 0x00,
+ 0x07, 0x00, 0x10, 0xb5, 0x0a, 0x49, 0x04, 0x1c,
+ 0x08, 0x78, 0x3c, 0x00, 0x58, 0x30, 0x04, 0x00,
+ 0x40, 0x08, 0x40, 0x00, 0x08, 0x70, 0x08, 0x49,
+ 0x08, 0x70, 0x08, 0x48, 0x00, 0xf0, 0xf8, 0xf8,
+ 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, 0x01, 0x23,
+ 0xe0, 0x56, 0x05, 0x21, 0x00, 0xf0, 0xa4, 0xf8,
+ 0x10, 0xbd, 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00,
+ 0x04, 0x00, 0x07, 0x00, 0x91, 0x9b, 0x00, 0x00,
+ 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23,
+ 0x0e, 0xc0, 0x08, 0xc0, 0x3c, 0x00, 0x94, 0x30,
+ 0x04, 0x00, 0x70, 0x47, 0x00, 0x00, 0xe8, 0x60,
+ 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5,
+ 0x07, 0x4c, 0x00, 0x20, 0x60, 0x60, 0x20, 0x80,
+ 0xe0, 0x60, 0x02, 0x21, 0x14, 0x20, 0x04, 0x4a,
+ 0xd0, 0xf7, 0x49, 0xfb, 0x02, 0x48, 0x10, 0x30,
+ 0xa0, 0x60, 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75,
+ 0x01, 0x00, 0x05, 0x1d, 0x01, 0x00, 0x70, 0x47,
+ 0x00, 0x00, 0x10, 0xb5, 0x48, 0x21, 0x3c, 0x00,
+ 0xd0, 0x30, 0x04, 0x00, 0x0a, 0x48, 0xbd, 0xf7,
+ 0xe3, 0xf9, 0x09, 0x4c, 0xe0, 0x21, 0x48, 0x34,
+ 0x20, 0x1c, 0xbd, 0xf7, 0xdd, 0xf9, 0x00, 0x20,
+ 0xc1, 0x00, 0x09, 0x19, 0x0a, 0x1c, 0x08, 0x32,
+ 0x01, 0x30, 0x1b, 0x28, 0x4a, 0x60, 0xf7, 0xd3,
+ 0x01, 0x48, 0x04, 0x38, 0x04, 0x60, 0x10, 0xbd,
+ 0x68, 0x5b, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21,
+ 0x23, 0x20, 0x02, 0x4a, 0xd0, 0xf7, 0x1e, 0xfb,
+ 0x3c, 0x00, 0x0c, 0x31, 0x04, 0x00, 0x80, 0xbd,
+ 0x00, 0x00, 0x45, 0x23, 0x01, 0x00, 0x80, 0xb5,
+ 0xff, 0xf7, 0x6b, 0xf8, 0x80, 0xbd, 0x70, 0x47,
+ 0x00, 0x00, 0xf8, 0xb5, 0x01, 0x20, 0x1d, 0x49,
+ 0xc0, 0x07, 0x48, 0x60, 0x1d, 0x49, 0xff, 0x20,
+ 0x08, 0x73, 0x1c, 0x4e, 0x10, 0x20, 0x30, 0x60,
+ 0x05, 0x01, 0x35, 0x60, 0x1b, 0x4c, 0x80, 0x21,
+ 0x20, 0x1c, 0xbd, 0xf7, 0xac, 0xf9, 0x00, 0x21,
+ 0x19, 0x4a, 0x3c, 0x00, 0x48, 0x31, 0x04, 0x00,
+ 0x15, 0x4f, 0x00, 0x20, 0x0b, 0x01, 0x1b, 0x19,
+ 0x5a, 0x60, 0xcb, 0x00, 0xdb, 0x19, 0x18, 0x74,
+ 0x01, 0x31, 0x08, 0x29, 0xf6, 0xdb, 0x0f, 0x4c,
+ 0xfa, 0x21, 0x21, 0x80, 0x12, 0x49, 0x61, 0x80,
+ 0xa0, 0x60, 0x6a, 0x46, 0x11, 0x49, 0x04, 0x20,
+ 0xbd, 0xf7, 0x30, 0xff, 0x6a, 0x46, 0x10, 0x49,
+ 0x08, 0x20, 0xbd, 0xf7, 0x2b, 0xff, 0x10, 0x20,
+ 0x70, 0x60, 0x75, 0x60, 0x3c, 0x00, 0x84, 0x31,
+ 0x04, 0x00, 0x60, 0x68, 0x02, 0x21, 0x08, 0x43,
+ 0x60, 0x60, 0x0b, 0x49, 0x06, 0x4a, 0x08, 0x1c,
+ 0x10, 0x30, 0x08, 0x3a, 0x03, 0xc2, 0xf8, 0xbd,
+ 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60,
+ 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0xac, 0x73,
+ 0x01, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x20, 0x4e,
+ 0x00, 0x00, 0x05, 0x2c, 0x01, 0x00, 0x11, 0x2c,
+ 0x01, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x3c, 0x00,
+ 0xc0, 0x31, 0x04, 0x00, 0x70, 0xb5, 0x0e, 0x1c,
+ 0x00, 0x24, 0xc4, 0xf7, 0x5b, 0xfe, 0x00, 0x28,
+ 0x3b, 0xd0, 0x45, 0x68, 0xff, 0x2d, 0x38, 0xd0,
+ 0x0c, 0x2e, 0x28, 0xd2, 0x01, 0xa3, 0x9b, 0x5d,
+ 0x5b, 0x00, 0x9f, 0x44, 0x05, 0x07, 0x09, 0x0b,
+ 0x0d, 0x10, 0x13, 0x16, 0x18, 0x1b, 0x1e, 0x21,
+ 0x18, 0x24, 0x20, 0xe0, 0x30, 0x24, 0x1e, 0xe0,
+ 0x60, 0x24, 0x1c, 0xe0, 0xc0, 0x24, 0x1a, 0xe0,
+ 0x3c, 0x00, 0xfc, 0x31, 0x04, 0x00, 0xff, 0x24,
+ 0x81, 0x34, 0x17, 0xe0, 0x09, 0x24, 0xa4, 0x01,
+ 0x14, 0xe0, 0x09, 0x24, 0xe4, 0x01, 0x11, 0xe0,
+ 0x0f, 0x4c, 0x0f, 0xe0, 0x09, 0x24, 0x24, 0x02,
+ 0x0c, 0xe0, 0x09, 0x24, 0x64, 0x02, 0x09, 0xe0,
+ 0x03, 0x24, 0xe4, 0x02, 0x06, 0xe0, 0x09, 0x24,
+ 0xa4, 0x02, 0x03, 0xe0, 0x09, 0x21, 0x9e, 0x20,
+ 0xbe, 0xf7, 0x39, 0xf8, 0x60, 0x00, 0x00, 0x19,
+ 0x40, 0x08, 0x3c, 0x00, 0x38, 0x32, 0x04, 0x00,
+ 0x05, 0x49, 0x80, 0x04, 0x40, 0x18, 0x05, 0x4a,
+ 0xa9, 0x00, 0x89, 0x18, 0x48, 0x60, 0x64, 0x20,
+ 0x60, 0x43, 0x70, 0xbd, 0xdc, 0x07, 0x00, 0x00,
+ 0x80, 0x38, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00,
+ 0x02, 0x49, 0x80, 0xb5, 0x08, 0x60, 0xd0, 0xf7,
+ 0x97, 0xf8, 0x80, 0xbd, 0x5c, 0x5b, 0x01, 0x00,
+ 0xf8, 0xb5, 0x00, 0x26, 0x17, 0x4c, 0x17, 0x4b,
+ 0x19, 0x49, 0x26, 0x70, 0x3c, 0x00, 0x74, 0x32,
+ 0x04, 0x00, 0x00, 0x20, 0x14, 0x33, 0x0d, 0x88,
+ 0x15, 0x4e, 0x15, 0x4a, 0x04, 0xe0, 0xc1, 0x00,
+ 0xcf, 0x18, 0x7a, 0x60, 0x5e, 0x50, 0x01, 0x30,
+ 0xa8, 0x42, 0xf8, 0xdb, 0xc6, 0xf7, 0x2b, 0xfd,
+ 0xff, 0x21, 0x11, 0x4d, 0xa5, 0x31, 0x28, 0x1c,
+ 0xbd, 0xf7, 0xff, 0xf8, 0x00, 0x21, 0x28, 0x1c,
+ 0x02, 0x1c, 0x14, 0x32, 0xc2, 0x60, 0x10, 0x1c,
+ 0x01, 0x31, 0x14, 0x29, 0xf8, 0xdb, 0x3c, 0x00,
+ 0xb0, 0x32, 0x04, 0x00, 0x00, 0x26, 0xc6, 0x60,
+ 0x05, 0x48, 0x0c, 0x30, 0x60, 0xc0, 0x09, 0x48,
+ 0x18, 0x21, 0xbd, 0xf7, 0xed, 0xf8, 0x01, 0x20,
+ 0x04, 0x34, 0x41, 0xc4, 0x00, 0x20, 0xf8, 0xbd,
+ 0x70, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00,
+ 0x30, 0xd9, 0x01, 0x00, 0x56, 0x57, 0x01, 0x00,
+ 0x04, 0x5f, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00,
+ 0x80, 0xb5, 0x00, 0x20, 0xcf, 0xf7, 0xb6, 0xfc,
+ 0x3c, 0x00, 0xec, 0x32, 0x04, 0x00, 0x01, 0x49,
+ 0x08, 0x80, 0x80, 0xbd, 0x00, 0x00, 0x2c, 0x74,
+ 0x01, 0x00, 0x11, 0x48, 0xf8, 0xb5, 0x41, 0x79,
+ 0x00, 0x29, 0x02, 0xd1, 0x05, 0x78, 0x0f, 0x4e,
+ 0x01, 0xe0, 0x45, 0x78, 0x0f, 0x4e, 0x02, 0x23,
+ 0xf7, 0x5e, 0x00, 0x24, 0x60, 0x1b, 0x78, 0x43,
+ 0x64, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18,
+ 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0xf5, 0xf9,
+ 0x61, 0x00, 0x3c, 0x00, 0x28, 0x33, 0x04, 0x00,
+ 0x09, 0x4a, 0xac, 0x42, 0x50, 0x52, 0x01, 0xd1,
+ 0x00, 0x23, 0xf7, 0x5e, 0x01, 0x34, 0x24, 0x06,
+ 0x24, 0x0e, 0x10, 0x2c, 0xe9, 0xd3, 0xf8, 0xbd,
+ 0x0c, 0x5a, 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00,
+ 0xfa, 0x59, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00,
+ 0x32, 0x5a, 0x01, 0x00, 0x38, 0xb5, 0x10, 0x4c,
+ 0xbe, 0x25, 0x25, 0x73, 0x20, 0x7a, 0x18, 0x21,
+ 0x88, 0x43, 0x20, 0x72, 0x3c, 0x00, 0x64, 0x33,
+ 0x04, 0x00, 0x6a, 0x46, 0x0d, 0x49, 0x0d, 0x20,
+ 0xbd, 0xf7, 0x33, 0xfe, 0x01, 0x20, 0x0b, 0x49,
+ 0x40, 0x03, 0x08, 0x60, 0x48, 0x60, 0x25, 0x73,
+ 0x2d, 0x20, 0xc0, 0x03, 0x20, 0x60, 0x25, 0x73,
+ 0x20, 0x7a, 0x10, 0x21, 0x08, 0x43, 0x20, 0x72,
+ 0x06, 0x48, 0x06, 0x49, 0x08, 0x60, 0x00, 0x20,
+ 0x48, 0x60, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x03,
+ 0x07, 0x00, 0x8d, 0x3e, 0x01, 0x00, 0x24, 0x00,
+ 0xa0, 0x33, 0x04, 0x00, 0x00, 0x10, 0x07, 0x00,
+ 0x00, 0x87, 0x93, 0x03, 0x04, 0x79, 0x01, 0x00,
+ 0x80, 0xb5, 0x02, 0x21, 0x15, 0x20, 0x02, 0x4a,
+ 0xd0, 0xf7, 0xc8, 0xf9, 0x80, 0xbd, 0x00, 0x00,
+ 0x0d, 0x3e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x60, 0x04, 0x00, 0x44, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x40, 0x20, 0x07, 0x00,
+ 0xff, 0xff, 0xff, 0xff,
+};
+const uint32_t fw_len = sizeof(fw_buf) / sizeof(fw_buf[0]);
diff --git a/hardware/arduino/programmers.txt b/hardware/arduino/programmers.txt
index e2e2110..c34b88c 100644
--- a/hardware/arduino/programmers.txt
+++ b/hardware/arduino/programmers.txt
@@ -24,8 +24,3 @@ arduinoisp.name=Arduino as ISP
arduinoisp.communication=serial
arduinoisp.protocol=stk500v1
arduinoisp.speed=19200
-
-mysmartusblight.name=mySmartUSB light
-mysmartusblight.communication=serial
-mysmartusblight.protocol=stk500v2
-
diff --git a/hardware/arduino/variants/leonardo/pins_arduino.h b/hardware/arduino/variants/leonardo/pins_arduino.h
index 9f770d6..2c7f837 100644
--- a/hardware/arduino/variants/leonardo/pins_arduino.h
+++ b/hardware/arduino/variants/leonardo/pins_arduino.h
@@ -27,6 +27,72 @@
#include <avr/pgmspace.h>
+// Workaround for wrong definitions in "iom32u4.h".
+// This should be fixed in the AVR toolchain.
+#undef UHCON
+#undef UHINT
+#undef UHIEN
+#undef UHADDR
+#undef UHFNUM
+#undef UHFNUML
+#undef UHFNUMH
+#undef UHFLEN
+#undef UPINRQX
+#undef UPINTX
+#undef UPNUM
+#undef UPRST
+#undef UPCONX
+#undef UPCFG0X
+#undef UPCFG1X
+#undef UPSTAX
+#undef UPCFG2X
+#undef UPIENX
+#undef UPDATX
+#undef TCCR2A
+#undef WGM20
+#undef WGM21
+#undef COM2B0
+#undef COM2B1
+#undef COM2A0
+#undef COM2A1
+#undef TCCR2B
+#undef CS20
+#undef CS21
+#undef CS22
+#undef WGM22
+#undef FOC2B
+#undef FOC2A
+#undef TCNT2
+#undef TCNT2_0
+#undef TCNT2_1
+#undef TCNT2_2
+#undef TCNT2_3
+#undef TCNT2_4
+#undef TCNT2_5
+#undef TCNT2_6
+#undef TCNT2_7
+#undef OCR2A
+#undef OCR2_0
+#undef OCR2_1
+#undef OCR2_2
+#undef OCR2_3
+#undef OCR2_4
+#undef OCR2_5
+#undef OCR2_6
+#undef OCR2_7
+#undef OCR2B
+#undef OCR2_0
+#undef OCR2_1
+#undef OCR2_2
+#undef OCR2_3
+#undef OCR2_4
+#undef OCR2_5
+#undef OCR2_6
+#undef OCR2_7
+
+#define NUM_DIGITAL_PINS 30
+#define NUM_ANALOG_INPUTS 12
+
#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0)
#define TXLED0 PORTD |= (1<<5)
#define TXLED1 PORTD &= ~(1<<5)
@@ -141,7 +207,7 @@ const uint16_t PROGMEM port_to_input_PGM[] = {
(uint16_t) &PINF,
};
-const uint8_t PROGMEM digital_pin_to_port_PGM[30] = {
+const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
PD, // D0 - PD2
PD, // D1 - PD3
PD, // D2 - PD1
@@ -178,7 +244,7 @@ const uint8_t PROGMEM digital_pin_to_port_PGM[30] = {
PD, // D29 / D12 - A11 - PD6
};
-const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[30] = {
+const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
_BV(2), // D0 - PD2
_BV(3), // D1 - PD3
_BV(1), // D2 - PD1
@@ -215,7 +281,7 @@ const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[30] = {
_BV(6), // D29 / D12 - A11 - PD6
};
-const uint8_t PROGMEM digital_pin_to_timer_PGM[16] = {
+const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
NOT_ON_TIMER,
NOT_ON_TIMER,
NOT_ON_TIMER,
@@ -235,9 +301,24 @@ const uint8_t PROGMEM digital_pin_to_timer_PGM[16] = {
NOT_ON_TIMER,
NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
+ NOT_ON_TIMER,
};
-const uint8_t PROGMEM analog_pin_to_channel_PGM[12] = {
+const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
7, // A0 PF7 ADC7
6, // A1 PF6 ADC6
5, // A2 PF5 ADC5
diff --git a/hardware/arduino/variants/micro/pins_arduino.h b/hardware/arduino/variants/micro/pins_arduino.h
new file mode 100644
index 0000000..ea8e42d
--- /dev/null
+++ b/hardware/arduino/variants/micro/pins_arduino.h
@@ -0,0 +1,37 @@
+/*
+ pins_arduino.h - Pin definition functions for Arduino
+ Part of Arduino - http://www.arduino.cc/
+
+ Copyright (c) 2007 David A. Mellis
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General
+ Public License along with this library; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+
+ $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
+*/
+
+#include "../leonardo/pins_arduino.h"
+
+#undef TXLED0
+#undef TXLED1
+#undef RXLED0
+#undef RXLED1
+#undef TX_RX_LED_INIT
+
+#define TXLED0 PORTD &= ~(1<<5)
+#define TXLED1 PORTD |= (1<<5)
+#define RXLED0 PORTB &= ~(1<<0)
+#define RXLED1 PORTB |= (1<<0)
+#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0), TXLED0, RXLED0
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]